diff options
Diffstat (limited to 'apps')
468 files changed, 8510 insertions, 1384 deletions
diff --git a/apps/admin_audit/l10n/sr@latin.js b/apps/admin_audit/l10n/sr@latin.js new file mode 100644 index 00000000000..bab487e832d --- /dev/null +++ b/apps/admin_audit/l10n/sr@latin.js @@ -0,0 +1,7 @@ +OC.L10N.register( + "admin_audit", + { + "Auditing / Logging" : "Praćenje / Beleženje", + "Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Daje Nextcloudu mogućnost beleženja, poput pristupa fajlovima ili drugih osetljivih radnji." +}, +"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/admin_audit/l10n/sr@latin.json b/apps/admin_audit/l10n/sr@latin.json new file mode 100644 index 00000000000..a01ecd856c0 --- /dev/null +++ b/apps/admin_audit/l10n/sr@latin.json @@ -0,0 +1,5 @@ +{ "translations": { + "Auditing / Logging" : "Praćenje / Beleženje", + "Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Daje Nextcloudu mogućnost beleženja, poput pristupa fajlovima ili drugih osetljivih radnji." +},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +}
\ No newline at end of file diff --git a/apps/cloud_federation_api/lib/Capabilities.php b/apps/cloud_federation_api/lib/Capabilities.php index deca7fe1733..8957fb8b9d8 100644 --- a/apps/cloud_federation_api/lib/Capabilities.php +++ b/apps/cloud_federation_api/lib/Capabilities.php @@ -38,7 +38,7 @@ class Capabilities implements ICapability { * apiVersion: '1.0-proposal1', * enabled: bool, * endPoint: string, - * publicKey: array{ + * publicKey?: array{ * keyId: string, * publicKeyPem: string, * }, diff --git a/apps/cloud_federation_api/openapi.json b/apps/cloud_federation_api/openapi.json index 1c69ea2d083..730af73628f 100644 --- a/apps/cloud_federation_api/openapi.json +++ b/apps/cloud_federation_api/openapi.json @@ -46,7 +46,6 @@ "apiVersion", "enabled", "endPoint", - "publicKey", "resourceTypes", "version" ], diff --git a/apps/comments/l10n/de.js b/apps/comments/l10n/de.js index 7b3f04a994b..dc964592b19 100644 --- a/apps/comments/l10n/de.js +++ b/apps/comments/l10n/de.js @@ -17,7 +17,7 @@ OC.L10N.register( "Delete comment" : "Kommentar löschen", "Cancel edit" : "Bearbeiten abbrechen", "New comment" : "Neuer Kommentar", - "Write a comment …" : "Schreibe einen Kommentar …", + "Write a comment …" : "Einen Kommentar schreiben …", "Post comment" : "Kommentar veröffentlichen", "@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker", "Could not reload comments" : "Kommentare konnten nicht erneut geladen werden", diff --git a/apps/comments/l10n/de.json b/apps/comments/l10n/de.json index f57bc6b0aad..d0679199b23 100644 --- a/apps/comments/l10n/de.json +++ b/apps/comments/l10n/de.json @@ -15,7 +15,7 @@ "Delete comment" : "Kommentar löschen", "Cancel edit" : "Bearbeiten abbrechen", "New comment" : "Neuer Kommentar", - "Write a comment …" : "Schreibe einen Kommentar …", + "Write a comment …" : "Einen Kommentar schreiben …", "Post comment" : "Kommentar veröffentlichen", "@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker", "Could not reload comments" : "Kommentare konnten nicht erneut geladen werden", diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml index 222b5e14b8c..a99bea224b6 100644 --- a/apps/dav/appinfo/info.xml +++ b/apps/dav/appinfo/info.xml @@ -74,6 +74,7 @@ <settings> <admin>OCA\DAV\Settings\CalDAVSettings</admin> + <admin>OCA\DAV\Settings\ExampleContentSettings</admin> <personal>OCA\DAV\Settings\AvailabilitySettings</personal> </settings> diff --git a/apps/dav/appinfo/routes.php b/apps/dav/appinfo/routes.php index 91c1ba58ea2..67bfa44e995 100644 --- a/apps/dav/appinfo/routes.php +++ b/apps/dav/appinfo/routes.php @@ -11,6 +11,8 @@ return [ ['name' => 'invitation_response#decline', 'url' => '/invitation/decline/{token}', 'verb' => 'GET'], ['name' => 'invitation_response#options', 'url' => '/invitation/moreOptions/{token}', 'verb' => 'GET'], ['name' => 'invitation_response#processMoreOptionsResult', 'url' => '/invitation/moreOptions/{token}', 'verb' => 'POST'], + ['name' => 'example_content#setDefaultContact', 'url' => '/api/defaultcontact/contact', 'verb' => 'PUT'], + ['name' => 'example_content#setEnableDefaultContact', 'url' => '/api/defaultcontact/config', 'verb' => 'PUT'], ], 'ocs' => [ ['name' => 'direct#getUrl', 'url' => '/api/v1/direct', 'verb' => 'POST'], diff --git a/apps/dav/composer/composer/autoload_classmap.php b/apps/dav/composer/composer/autoload_classmap.php index a1daa2593e5..71d590f85a9 100644 --- a/apps/dav/composer/composer/autoload_classmap.php +++ b/apps/dav/composer/composer/autoload_classmap.php @@ -221,6 +221,7 @@ return array( 'OCA\\DAV\\Connector\\Sabre\\ZipFolderPlugin' => $baseDir . '/../lib/Connector/Sabre/ZipFolderPlugin.php', 'OCA\\DAV\\Controller\\BirthdayCalendarController' => $baseDir . '/../lib/Controller/BirthdayCalendarController.php', 'OCA\\DAV\\Controller\\DirectController' => $baseDir . '/../lib/Controller/DirectController.php', + 'OCA\\DAV\\Controller\\ExampleContentController' => $baseDir . '/../lib/Controller/ExampleContentController.php', 'OCA\\DAV\\Controller\\InvitationResponseController' => $baseDir . '/../lib/Controller/InvitationResponseController.php', 'OCA\\DAV\\Controller\\OutOfOfficeController' => $baseDir . '/../lib/Controller/OutOfOfficeController.php', 'OCA\\DAV\\Controller\\UpcomingEventsController' => $baseDir . '/../lib/Controller/UpcomingEventsController.php', @@ -355,9 +356,11 @@ return array( 'OCA\\DAV\\Server' => $baseDir . '/../lib/Server.php', 'OCA\\DAV\\ServerFactory' => $baseDir . '/../lib/ServerFactory.php', 'OCA\\DAV\\Service\\AbsenceService' => $baseDir . '/../lib/Service/AbsenceService.php', + 'OCA\\DAV\\Service\\DefaultContactService' => $baseDir . '/../lib/Service/DefaultContactService.php', 'OCA\\DAV\\Settings\\Admin\\SystemAddressBookSettings' => $baseDir . '/../lib/Settings/Admin/SystemAddressBookSettings.php', 'OCA\\DAV\\Settings\\AvailabilitySettings' => $baseDir . '/../lib/Settings/AvailabilitySettings.php', 'OCA\\DAV\\Settings\\CalDAVSettings' => $baseDir . '/../lib/Settings/CalDAVSettings.php', + 'OCA\\DAV\\Settings\\ExampleContentSettings' => $baseDir . '/../lib/Settings/ExampleContentSettings.php', 'OCA\\DAV\\SetupChecks\\NeedsSystemAddressBookSync' => $baseDir . '/../lib/SetupChecks/NeedsSystemAddressBookSync.php', 'OCA\\DAV\\SetupChecks\\WebdavEndpoint' => $baseDir . '/../lib/SetupChecks/WebdavEndpoint.php', 'OCA\\DAV\\Storage\\PublicOwnerWrapper' => $baseDir . '/../lib/Storage/PublicOwnerWrapper.php', diff --git a/apps/dav/composer/composer/autoload_static.php b/apps/dav/composer/composer/autoload_static.php index 31e9c9afd7a..9e652acc01e 100644 --- a/apps/dav/composer/composer/autoload_static.php +++ b/apps/dav/composer/composer/autoload_static.php @@ -236,6 +236,7 @@ class ComposerStaticInitDAV 'OCA\\DAV\\Connector\\Sabre\\ZipFolderPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/ZipFolderPlugin.php', 'OCA\\DAV\\Controller\\BirthdayCalendarController' => __DIR__ . '/..' . '/../lib/Controller/BirthdayCalendarController.php', 'OCA\\DAV\\Controller\\DirectController' => __DIR__ . '/..' . '/../lib/Controller/DirectController.php', + 'OCA\\DAV\\Controller\\ExampleContentController' => __DIR__ . '/..' . '/../lib/Controller/ExampleContentController.php', 'OCA\\DAV\\Controller\\InvitationResponseController' => __DIR__ . '/..' . '/../lib/Controller/InvitationResponseController.php', 'OCA\\DAV\\Controller\\OutOfOfficeController' => __DIR__ . '/..' . '/../lib/Controller/OutOfOfficeController.php', 'OCA\\DAV\\Controller\\UpcomingEventsController' => __DIR__ . '/..' . '/../lib/Controller/UpcomingEventsController.php', @@ -370,9 +371,11 @@ class ComposerStaticInitDAV 'OCA\\DAV\\Server' => __DIR__ . '/..' . '/../lib/Server.php', 'OCA\\DAV\\ServerFactory' => __DIR__ . '/..' . '/../lib/ServerFactory.php', 'OCA\\DAV\\Service\\AbsenceService' => __DIR__ . '/..' . '/../lib/Service/AbsenceService.php', + 'OCA\\DAV\\Service\\DefaultContactService' => __DIR__ . '/..' . '/../lib/Service/DefaultContactService.php', 'OCA\\DAV\\Settings\\Admin\\SystemAddressBookSettings' => __DIR__ . '/..' . '/../lib/Settings/Admin/SystemAddressBookSettings.php', 'OCA\\DAV\\Settings\\AvailabilitySettings' => __DIR__ . '/..' . '/../lib/Settings/AvailabilitySettings.php', 'OCA\\DAV\\Settings\\CalDAVSettings' => __DIR__ . '/..' . '/../lib/Settings/CalDAVSettings.php', + 'OCA\\DAV\\Settings\\ExampleContentSettings' => __DIR__ . '/..' . '/../lib/Settings/ExampleContentSettings.php', 'OCA\\DAV\\SetupChecks\\NeedsSystemAddressBookSync' => __DIR__ . '/..' . '/../lib/SetupChecks/NeedsSystemAddressBookSync.php', 'OCA\\DAV\\SetupChecks\\WebdavEndpoint' => __DIR__ . '/..' . '/../lib/SetupChecks/WebdavEndpoint.php', 'OCA\\DAV\\Storage\\PublicOwnerWrapper' => __DIR__ . '/..' . '/../lib/Storage/PublicOwnerWrapper.php', diff --git a/apps/dav/l10n/ar.js b/apps/dav/l10n/ar.js index 1ccca62b8c4..53dc3590cde 100644 --- a/apps/dav/l10n/ar.js +++ b/apps/dav/l10n/ar.js @@ -306,6 +306,19 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "أرسل إشعارات للتذكير إلى المشتركين بالتقويم كذلك", "Reminders are always sent to organizers and attendees." : "إشعارات التذكير يتم إرسالها دائماً إلى مُنظّم أو مُنظّمي الحدث و المستهدفين بحضوره.", "Enable notifications for events via push" : "تمكين الإشعارات حول الأحداث عن طريق أسلوب دفع الإشعارات Push", + "Cancel" : "إلغاء", + "Import" : "إستيراد", + "Error while saving settings" : "خطأ أثناء حفظ الإعدادات", + "Contact reset successfully" : "تمّت إعادة تعيين جهة الاتصال بنجاحٍ", + "Error while resetting contact" : "خطأ أثناء إعادة تعيين جهة الاتصال", + "Contact imported successfully" : "تمّ استيراد جهة الاتصال بنجاحٍ", + "Error while importing contact" : "خطأ أثناء استيراد جهة الاتصال", + "Example Content" : "نموذج للمحتوى", + "Set example content to be created on new user first login." : "عيِّن نموذجاً للمحتوى ليتم إنشاؤه عند تسجيل المستخدِم دخوله لأول مرةٍ.", + "Import contact" : "استيراد جهة اتصال", + "Reset to default contact" : "إعادة التعيين لجهة اتصال تلقائية ", + "Import contacts" : "استيراد جهات اتصال", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "استيراد ملف .cvf جديد سوف يؤدي إلى حذف جهات الاتصال التلقائية الحالية واستبدالها بالجديدة. هل ترغب في الاستمرار؟", "There was an error updating your attendance status." : "حدث خطأ في تحديث حالة حضورك.", "Please contact the organizer directly." : "يرجى الاتصال بالمنظم مباشرةً", "Are you accepting the invitation?" : "هل تقبل الدعوة؟", diff --git a/apps/dav/l10n/ar.json b/apps/dav/l10n/ar.json index d34dfe1a05d..34884cde46a 100644 --- a/apps/dav/l10n/ar.json +++ b/apps/dav/l10n/ar.json @@ -304,6 +304,19 @@ "Send reminder notifications to calendar sharees as well" : "أرسل إشعارات للتذكير إلى المشتركين بالتقويم كذلك", "Reminders are always sent to organizers and attendees." : "إشعارات التذكير يتم إرسالها دائماً إلى مُنظّم أو مُنظّمي الحدث و المستهدفين بحضوره.", "Enable notifications for events via push" : "تمكين الإشعارات حول الأحداث عن طريق أسلوب دفع الإشعارات Push", + "Cancel" : "إلغاء", + "Import" : "إستيراد", + "Error while saving settings" : "خطأ أثناء حفظ الإعدادات", + "Contact reset successfully" : "تمّت إعادة تعيين جهة الاتصال بنجاحٍ", + "Error while resetting contact" : "خطأ أثناء إعادة تعيين جهة الاتصال", + "Contact imported successfully" : "تمّ استيراد جهة الاتصال بنجاحٍ", + "Error while importing contact" : "خطأ أثناء استيراد جهة الاتصال", + "Example Content" : "نموذج للمحتوى", + "Set example content to be created on new user first login." : "عيِّن نموذجاً للمحتوى ليتم إنشاؤه عند تسجيل المستخدِم دخوله لأول مرةٍ.", + "Import contact" : "استيراد جهة اتصال", + "Reset to default contact" : "إعادة التعيين لجهة اتصال تلقائية ", + "Import contacts" : "استيراد جهات اتصال", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "استيراد ملف .cvf جديد سوف يؤدي إلى حذف جهات الاتصال التلقائية الحالية واستبدالها بالجديدة. هل ترغب في الاستمرار؟", "There was an error updating your attendance status." : "حدث خطأ في تحديث حالة حضورك.", "Please contact the organizer directly." : "يرجى الاتصال بالمنظم مباشرةً", "Are you accepting the invitation?" : "هل تقبل الدعوة؟", diff --git a/apps/dav/l10n/ast.js b/apps/dav/l10n/ast.js index 81934f4d5ba..a75c384f6b5 100644 --- a/apps/dav/l10n/ast.js +++ b/apps/dav/l10n/ast.js @@ -211,6 +211,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Unvia tamién avisos de recordatoriu pa les persones coles que se compartiere'l calendariu", "Reminders are always sent to organizers and attendees." : "Los recordatorios únviense siempres a organizadores y asistentes", "Enable notifications for events via push" : "Acriva los avisos automáticos pa los eventos", + "Cancel" : "Encaboxar", + "Import" : "Importa", + "Error while saving settings" : "Hebo un error mentanto se guardaba la configuración", "There was an error updating your attendance status." : "Hebo un error al anovar l'estáu de l'asistencia.", "Please contact the organizer directly." : "Ponte en contautu direutamente cola organización.", "Are you accepting the invitation?" : "¿Aceptes la invitación?", diff --git a/apps/dav/l10n/ast.json b/apps/dav/l10n/ast.json index ee3c79c31a9..584b58f5b1a 100644 --- a/apps/dav/l10n/ast.json +++ b/apps/dav/l10n/ast.json @@ -209,6 +209,9 @@ "Send reminder notifications to calendar sharees as well" : "Unvia tamién avisos de recordatoriu pa les persones coles que se compartiere'l calendariu", "Reminders are always sent to organizers and attendees." : "Los recordatorios únviense siempres a organizadores y asistentes", "Enable notifications for events via push" : "Acriva los avisos automáticos pa los eventos", + "Cancel" : "Encaboxar", + "Import" : "Importa", + "Error while saving settings" : "Hebo un error mentanto se guardaba la configuración", "There was an error updating your attendance status." : "Hebo un error al anovar l'estáu de l'asistencia.", "Please contact the organizer directly." : "Ponte en contautu direutamente cola organización.", "Are you accepting the invitation?" : "¿Aceptes la invitación?", diff --git a/apps/dav/l10n/bg.js b/apps/dav/l10n/bg.js index e729e786a72..ad4ae1539aa 100644 --- a/apps/dav/l10n/bg.js +++ b/apps/dav/l10n/bg.js @@ -192,6 +192,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Изпращане на известия за напомняния и до споделящите календар", "Reminders are always sent to organizers and attendees." : "Напомнянията винаги се изпращат до организаторите и присъстващите.", "Enable notifications for events via push" : "Активиране на известията за събития чрез push", + "Cancel" : "Отказ", + "Import" : "Импортиране /внасяне/", + "Error while saving settings" : "Грешка при запазване на настройките", "There was an error updating your attendance status." : "Възникна грешка при актуализиране на състоянието на присъствието Ви.", "Please contact the organizer directly." : "Моля, свържете се директно с организатора.", "Are you accepting the invitation?" : "Приемате ли поканата?", diff --git a/apps/dav/l10n/bg.json b/apps/dav/l10n/bg.json index 61d5175903e..075e9d18d7a 100644 --- a/apps/dav/l10n/bg.json +++ b/apps/dav/l10n/bg.json @@ -190,6 +190,9 @@ "Send reminder notifications to calendar sharees as well" : "Изпращане на известия за напомняния и до споделящите календар", "Reminders are always sent to organizers and attendees." : "Напомнянията винаги се изпращат до организаторите и присъстващите.", "Enable notifications for events via push" : "Активиране на известията за събития чрез push", + "Cancel" : "Отказ", + "Import" : "Импортиране /внасяне/", + "Error while saving settings" : "Грешка при запазване на настройките", "There was an error updating your attendance status." : "Възникна грешка при актуализиране на състоянието на присъствието Ви.", "Please contact the organizer directly." : "Моля, свържете се директно с организатора.", "Are you accepting the invitation?" : "Приемате ли поканата?", diff --git a/apps/dav/l10n/ca.js b/apps/dav/l10n/ca.js index 33ab2dd1294..047c3e0c6c2 100644 --- a/apps/dav/l10n/ca.js +++ b/apps/dav/l10n/ca.js @@ -306,6 +306,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Envia també notificacions de recordatori als usuaris amb qui s'ha compartit el calendari", "Reminders are always sent to organizers and attendees." : "Sempre s'envien recordatoris als organitzadors i als assistents.", "Enable notifications for events via push" : "Habilita les notificacions automàtiques per als esdeveniments", + "Cancel" : "Cancel·la", + "Import" : "Importa", + "Error while saving settings" : "S'ha produït un error en desar els paràmetres", "There was an error updating your attendance status." : "S'ha produït un error en actualitzar l'estat d'assistència.", "Please contact the organizer directly." : "Contacteu amb l'organització directament.", "Are you accepting the invitation?" : "Accepteu la invitació?", diff --git a/apps/dav/l10n/ca.json b/apps/dav/l10n/ca.json index c6129aaa07c..94d94ed7523 100644 --- a/apps/dav/l10n/ca.json +++ b/apps/dav/l10n/ca.json @@ -304,6 +304,9 @@ "Send reminder notifications to calendar sharees as well" : "Envia també notificacions de recordatori als usuaris amb qui s'ha compartit el calendari", "Reminders are always sent to organizers and attendees." : "Sempre s'envien recordatoris als organitzadors i als assistents.", "Enable notifications for events via push" : "Habilita les notificacions automàtiques per als esdeveniments", + "Cancel" : "Cancel·la", + "Import" : "Importa", + "Error while saving settings" : "S'ha produït un error en desar els paràmetres", "There was an error updating your attendance status." : "S'ha produït un error en actualitzar l'estat d'assistència.", "Please contact the organizer directly." : "Contacteu amb l'organització directament.", "Are you accepting the invitation?" : "Accepteu la invitació?", diff --git a/apps/dav/l10n/cs.js b/apps/dav/l10n/cs.js index ee757b6ba95..ce5b1b83203 100644 --- a/apps/dav/l10n/cs.js +++ b/apps/dav/l10n/cs.js @@ -306,6 +306,19 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Poslat připomínky také těm, kteří mají tento sdílený kalendář připojený", "Reminders are always sent to organizers and attendees." : "Připomínky jsou vždy poslány organizátorům a účastníkům.", "Enable notifications for events via push" : "Upozorňovat na události prostřednictvím služby push", + "Cancel" : "Storno", + "Import" : "Naimportovat", + "Error while saving settings" : "Chyba při ukládání nastavení", + "Contact reset successfully" : "Kontakt úspěšně resetován", + "Error while resetting contact" : "Chyba při resetování kontaktu", + "Contact imported successfully" : "Kontakt úspěšně naimportován", + "Error while importing contact" : "Chyba při importování kontaktu", + "Example Content" : "Obsah pro ukázku", + "Set example content to be created on new user first login." : "Nastavit obsah pro ukázku, který vytvořit při prvním přihlášení nového uživatele.", + "Import contact" : "Importovat kontakt", + "Reset to default contact" : "Vrátit na výchozí kontakt", + "Import contacts" : "Importovat kontakty", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Naimportování nového .vcf souboru smaže stávající výchozí kontakt a nahradí ho novým. Chcete pokračovat?", "There was an error updating your attendance status." : "Vyskytla se chyba při aktualizaci vašeho stavu účasti.", "Please contact the organizer directly." : "Kontaktujte organizátora přímo.", "Are you accepting the invitation?" : "Přijímáte pozvání?", diff --git a/apps/dav/l10n/cs.json b/apps/dav/l10n/cs.json index b75731c9514..0355b986132 100644 --- a/apps/dav/l10n/cs.json +++ b/apps/dav/l10n/cs.json @@ -304,6 +304,19 @@ "Send reminder notifications to calendar sharees as well" : "Poslat připomínky také těm, kteří mají tento sdílený kalendář připojený", "Reminders are always sent to organizers and attendees." : "Připomínky jsou vždy poslány organizátorům a účastníkům.", "Enable notifications for events via push" : "Upozorňovat na události prostřednictvím služby push", + "Cancel" : "Storno", + "Import" : "Naimportovat", + "Error while saving settings" : "Chyba při ukládání nastavení", + "Contact reset successfully" : "Kontakt úspěšně resetován", + "Error while resetting contact" : "Chyba při resetování kontaktu", + "Contact imported successfully" : "Kontakt úspěšně naimportován", + "Error while importing contact" : "Chyba při importování kontaktu", + "Example Content" : "Obsah pro ukázku", + "Set example content to be created on new user first login." : "Nastavit obsah pro ukázku, který vytvořit při prvním přihlášení nového uživatele.", + "Import contact" : "Importovat kontakt", + "Reset to default contact" : "Vrátit na výchozí kontakt", + "Import contacts" : "Importovat kontakty", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Naimportování nového .vcf souboru smaže stávající výchozí kontakt a nahradí ho novým. Chcete pokračovat?", "There was an error updating your attendance status." : "Vyskytla se chyba při aktualizaci vašeho stavu účasti.", "Please contact the organizer directly." : "Kontaktujte organizátora přímo.", "Are you accepting the invitation?" : "Přijímáte pozvání?", diff --git a/apps/dav/l10n/da.js b/apps/dav/l10n/da.js index e30b08f756b..eb1a8c74357 100644 --- a/apps/dav/l10n/da.js +++ b/apps/dav/l10n/da.js @@ -303,6 +303,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Send også påmindelsesmeddelelser til kalenderdelinger", "Reminders are always sent to organizers and attendees." : "Påmindelser sendes altid til arrangører og deltagere.", "Enable notifications for events via push" : "Aktiver notifikationer for begivenheder via push", + "Cancel" : "Annuller", + "Import" : "Importer", + "Error while saving settings" : "Der opstod en fejl under lagring af indstillinger", "There was an error updating your attendance status." : "Der opstod en fejl under opdatering af din fremmødestatus.", "Please contact the organizer directly." : "Kontakt venligst arrangøren direkte.", "Are you accepting the invitation?" : "Accepter du invitationen?", diff --git a/apps/dav/l10n/da.json b/apps/dav/l10n/da.json index 8bd4fe8c869..24ecb979aa8 100644 --- a/apps/dav/l10n/da.json +++ b/apps/dav/l10n/da.json @@ -301,6 +301,9 @@ "Send reminder notifications to calendar sharees as well" : "Send også påmindelsesmeddelelser til kalenderdelinger", "Reminders are always sent to organizers and attendees." : "Påmindelser sendes altid til arrangører og deltagere.", "Enable notifications for events via push" : "Aktiver notifikationer for begivenheder via push", + "Cancel" : "Annuller", + "Import" : "Importer", + "Error while saving settings" : "Der opstod en fejl under lagring af indstillinger", "There was an error updating your attendance status." : "Der opstod en fejl under opdatering af din fremmødestatus.", "Please contact the organizer directly." : "Kontakt venligst arrangøren direkte.", "Are you accepting the invitation?" : "Accepter du invitationen?", diff --git a/apps/dav/l10n/de.js b/apps/dav/l10n/de.js index 0458b9dc119..3405bfca5d9 100644 --- a/apps/dav/l10n/de.js +++ b/apps/dav/l10n/de.js @@ -306,6 +306,19 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Erinnerungsbenachrichtigungen auch an die freigegebenen Kalender senden", "Reminders are always sent to organizers and attendees." : "Erinnerungen werden immer an Organisatoren und Teilnehmer gesendet.", "Enable notifications for events via push" : "Benachrichtigungen für Termine per Push aktivieren", + "Cancel" : "Abbrechen", + "Import" : "Importieren", + "Error while saving settings" : "Fehler beim Speichern der Einstellungen", + "Contact reset successfully" : "Kontakt erfolgreich zurückgesetzt", + "Error while resetting contact" : "Fehler beim Zurücksetzen des Kontakts", + "Contact imported successfully" : "Kontakt erfolgreich importiert", + "Error while importing contact" : "Fehler beim Import des Kontakts", + "Example Content" : "Beispielinhalt", + "Set example content to be created on new user first login." : "Beispielinhalte festlegen, die bei der ersten Anmeldung eines neuen Benutzers erstellt werden sollen.", + "Import contact" : "Kontakt importieren", + "Reset to default contact" : "Standardkontakt zurücksetzen", + "Import contacts" : "Kontakte importieren", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Durch das Importieren einer neuen VCF-Datei wird der vorhandene Standardkontakt gelöscht und durch den neuen ersetzt. Fortsetzen?", "There was an error updating your attendance status." : "Es ist ein Fehler beim Aktualisieren deines Teilnehmerstatus aufgetreten.", "Please contact the organizer directly." : "Bitte den Organisator direkt kontaktieren.", "Are you accepting the invitation?" : "Die Einladung annehmen?", diff --git a/apps/dav/l10n/de.json b/apps/dav/l10n/de.json index e247e7808d5..f2f35a89ad6 100644 --- a/apps/dav/l10n/de.json +++ b/apps/dav/l10n/de.json @@ -304,6 +304,19 @@ "Send reminder notifications to calendar sharees as well" : "Erinnerungsbenachrichtigungen auch an die freigegebenen Kalender senden", "Reminders are always sent to organizers and attendees." : "Erinnerungen werden immer an Organisatoren und Teilnehmer gesendet.", "Enable notifications for events via push" : "Benachrichtigungen für Termine per Push aktivieren", + "Cancel" : "Abbrechen", + "Import" : "Importieren", + "Error while saving settings" : "Fehler beim Speichern der Einstellungen", + "Contact reset successfully" : "Kontakt erfolgreich zurückgesetzt", + "Error while resetting contact" : "Fehler beim Zurücksetzen des Kontakts", + "Contact imported successfully" : "Kontakt erfolgreich importiert", + "Error while importing contact" : "Fehler beim Import des Kontakts", + "Example Content" : "Beispielinhalt", + "Set example content to be created on new user first login." : "Beispielinhalte festlegen, die bei der ersten Anmeldung eines neuen Benutzers erstellt werden sollen.", + "Import contact" : "Kontakt importieren", + "Reset to default contact" : "Standardkontakt zurücksetzen", + "Import contacts" : "Kontakte importieren", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Durch das Importieren einer neuen VCF-Datei wird der vorhandene Standardkontakt gelöscht und durch den neuen ersetzt. Fortsetzen?", "There was an error updating your attendance status." : "Es ist ein Fehler beim Aktualisieren deines Teilnehmerstatus aufgetreten.", "Please contact the organizer directly." : "Bitte den Organisator direkt kontaktieren.", "Are you accepting the invitation?" : "Die Einladung annehmen?", diff --git a/apps/dav/l10n/de_DE.js b/apps/dav/l10n/de_DE.js index 2d73582f465..9f79fbe5113 100644 --- a/apps/dav/l10n/de_DE.js +++ b/apps/dav/l10n/de_DE.js @@ -306,6 +306,19 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Erinnerungsbenachrichtigungen auch an die Kalenderfreigaben senden", "Reminders are always sent to organizers and attendees." : "Erinnerungen werden immer an Organisatoren und Teilnehmer gesendet.", "Enable notifications for events via push" : "Benachrichtigungen für Termine per Push aktivieren", + "Cancel" : "Abbrechen", + "Import" : "Importieren", + "Error while saving settings" : "Fehler beim Speichern der Einstellungen", + "Contact reset successfully" : "Kontakt zurückgesetzt", + "Error while resetting contact" : "Fehler beim Zurücksetzen des Kontakts", + "Contact imported successfully" : "Kontakt importiert", + "Error while importing contact" : "Fehler beim Import des Kontakts", + "Example Content" : "Beispielinhalt", + "Set example content to be created on new user first login." : "Beispielinhalte festlegen, die bei der ersten Anmeldung eines neuen Benutzers erstellt werden sollen.", + "Import contact" : "Kontakt importieren", + "Reset to default contact" : "Standardkontakt zurücksetzen", + "Import contacts" : "Kontakte importieren", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Durch das Importieren einer neuen VCF-Datei wird der vorhandene Standardkontakt gelöscht und durch den neuen ersetzt. Fortsetzen?", "There was an error updating your attendance status." : "Es ist ein Fehler beim Aktualisieren Ihres Teilnehmerstatus aufgetreten.", "Please contact the organizer directly." : "Bitte den Organisator direkt kontaktieren.", "Are you accepting the invitation?" : "Die Einladung annehmen?", diff --git a/apps/dav/l10n/de_DE.json b/apps/dav/l10n/de_DE.json index 55cffb219fb..554260858a6 100644 --- a/apps/dav/l10n/de_DE.json +++ b/apps/dav/l10n/de_DE.json @@ -304,6 +304,19 @@ "Send reminder notifications to calendar sharees as well" : "Erinnerungsbenachrichtigungen auch an die Kalenderfreigaben senden", "Reminders are always sent to organizers and attendees." : "Erinnerungen werden immer an Organisatoren und Teilnehmer gesendet.", "Enable notifications for events via push" : "Benachrichtigungen für Termine per Push aktivieren", + "Cancel" : "Abbrechen", + "Import" : "Importieren", + "Error while saving settings" : "Fehler beim Speichern der Einstellungen", + "Contact reset successfully" : "Kontakt zurückgesetzt", + "Error while resetting contact" : "Fehler beim Zurücksetzen des Kontakts", + "Contact imported successfully" : "Kontakt importiert", + "Error while importing contact" : "Fehler beim Import des Kontakts", + "Example Content" : "Beispielinhalt", + "Set example content to be created on new user first login." : "Beispielinhalte festlegen, die bei der ersten Anmeldung eines neuen Benutzers erstellt werden sollen.", + "Import contact" : "Kontakt importieren", + "Reset to default contact" : "Standardkontakt zurücksetzen", + "Import contacts" : "Kontakte importieren", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Durch das Importieren einer neuen VCF-Datei wird der vorhandene Standardkontakt gelöscht und durch den neuen ersetzt. Fortsetzen?", "There was an error updating your attendance status." : "Es ist ein Fehler beim Aktualisieren Ihres Teilnehmerstatus aufgetreten.", "Please contact the organizer directly." : "Bitte den Organisator direkt kontaktieren.", "Are you accepting the invitation?" : "Die Einladung annehmen?", diff --git a/apps/dav/l10n/en_GB.js b/apps/dav/l10n/en_GB.js index 2b130cbb17b..8303faf330b 100644 --- a/apps/dav/l10n/en_GB.js +++ b/apps/dav/l10n/en_GB.js @@ -306,6 +306,19 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Send reminder notifications to calendar sharees as well", "Reminders are always sent to organizers and attendees." : "Reminders are always sent to organisers and attendees.", "Enable notifications for events via push" : "Enable notifications for events via push", + "Cancel" : "Cancel", + "Import" : "Import", + "Error while saving settings" : "Error while saving settings", + "Contact reset successfully" : "Contact reset successfully", + "Error while resetting contact" : "Error while resetting contact", + "Contact imported successfully" : "Contact imported successfully", + "Error while importing contact" : "Error while importing contact", + "Example Content" : "Example Content", + "Set example content to be created on new user first login." : "Set example content to be created on new user first login.", + "Import contact" : "Import contact", + "Reset to default contact" : "Reset to default contact", + "Import contacts" : "Import contacts", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?", "There was an error updating your attendance status." : "There was an error updating your attendance status.", "Please contact the organizer directly." : "Please contact the organiser directly.", "Are you accepting the invitation?" : "Are you accepting the invitation?", diff --git a/apps/dav/l10n/en_GB.json b/apps/dav/l10n/en_GB.json index a0dc72cf824..5c826dc4d7f 100644 --- a/apps/dav/l10n/en_GB.json +++ b/apps/dav/l10n/en_GB.json @@ -304,6 +304,19 @@ "Send reminder notifications to calendar sharees as well" : "Send reminder notifications to calendar sharees as well", "Reminders are always sent to organizers and attendees." : "Reminders are always sent to organisers and attendees.", "Enable notifications for events via push" : "Enable notifications for events via push", + "Cancel" : "Cancel", + "Import" : "Import", + "Error while saving settings" : "Error while saving settings", + "Contact reset successfully" : "Contact reset successfully", + "Error while resetting contact" : "Error while resetting contact", + "Contact imported successfully" : "Contact imported successfully", + "Error while importing contact" : "Error while importing contact", + "Example Content" : "Example Content", + "Set example content to be created on new user first login." : "Set example content to be created on new user first login.", + "Import contact" : "Import contact", + "Reset to default contact" : "Reset to default contact", + "Import contacts" : "Import contacts", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?", "There was an error updating your attendance status." : "There was an error updating your attendance status.", "Please contact the organizer directly." : "Please contact the organiser directly.", "Are you accepting the invitation?" : "Are you accepting the invitation?", diff --git a/apps/dav/l10n/es.js b/apps/dav/l10n/es.js index cf9d3d258c2..39dc736727d 100644 --- a/apps/dav/l10n/es.js +++ b/apps/dav/l10n/es.js @@ -301,6 +301,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Enviar recordatorio también a los usuarios con los que se comparte el calendario", "Reminders are always sent to organizers and attendees." : "Los recordatorios siempre se envían a los organizadores y asistentes.", "Enable notifications for events via push" : "Activar notificaciones push para eventos", + "Cancel" : "Cancelar", + "Import" : "Importar", + "Error while saving settings" : "Error al guardar los ajustes", "There was an error updating your attendance status." : "Ha habido un error al actualizar tu estado de asistencia.", "Please contact the organizer directly." : "Por favor, contacta directamente con el organizador.", "Are you accepting the invitation?" : "¿Aceptas la invitación?", diff --git a/apps/dav/l10n/es.json b/apps/dav/l10n/es.json index fae63dc971d..9a717e4eaca 100644 --- a/apps/dav/l10n/es.json +++ b/apps/dav/l10n/es.json @@ -299,6 +299,9 @@ "Send reminder notifications to calendar sharees as well" : "Enviar recordatorio también a los usuarios con los que se comparte el calendario", "Reminders are always sent to organizers and attendees." : "Los recordatorios siempre se envían a los organizadores y asistentes.", "Enable notifications for events via push" : "Activar notificaciones push para eventos", + "Cancel" : "Cancelar", + "Import" : "Importar", + "Error while saving settings" : "Error al guardar los ajustes", "There was an error updating your attendance status." : "Ha habido un error al actualizar tu estado de asistencia.", "Please contact the organizer directly." : "Por favor, contacta directamente con el organizador.", "Are you accepting the invitation?" : "¿Aceptas la invitación?", diff --git a/apps/dav/l10n/es_EC.js b/apps/dav/l10n/es_EC.js index a4e8efed7f6..bf69429e716 100644 --- a/apps/dav/l10n/es_EC.js +++ b/apps/dav/l10n/es_EC.js @@ -195,6 +195,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Enviar recordatorios a los asistentes del calendario también", "Reminders are always sent to organizers and attendees." : "Los recordatorios siempre se envían a los organizadores y asistentes.", "Enable notifications for events via push" : "Habilitar notificaciones para eventos mediante push", + "Cancel" : "Cancelar", + "Import" : "Importar", + "Error while saving settings" : "Error al guardar la configuración.", "There was an error updating your attendance status." : "Hubo un error al actualizar tu estado de asistencia.", "Please contact the organizer directly." : "Por favor, contacta directamente al organizador.", "Are you accepting the invitation?" : "¿Aceptas la invitación?", diff --git a/apps/dav/l10n/es_EC.json b/apps/dav/l10n/es_EC.json index 93e9eb3fff4..2a496cbc268 100644 --- a/apps/dav/l10n/es_EC.json +++ b/apps/dav/l10n/es_EC.json @@ -193,6 +193,9 @@ "Send reminder notifications to calendar sharees as well" : "Enviar recordatorios a los asistentes del calendario también", "Reminders are always sent to organizers and attendees." : "Los recordatorios siempre se envían a los organizadores y asistentes.", "Enable notifications for events via push" : "Habilitar notificaciones para eventos mediante push", + "Cancel" : "Cancelar", + "Import" : "Importar", + "Error while saving settings" : "Error al guardar la configuración.", "There was an error updating your attendance status." : "Hubo un error al actualizar tu estado de asistencia.", "Please contact the organizer directly." : "Por favor, contacta directamente al organizador.", "Are you accepting the invitation?" : "¿Aceptas la invitación?", diff --git a/apps/dav/l10n/es_MX.js b/apps/dav/l10n/es_MX.js index 29e5f26db6a..3815d91f708 100644 --- a/apps/dav/l10n/es_MX.js +++ b/apps/dav/l10n/es_MX.js @@ -236,6 +236,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Enviar recordatorio también a los usuarios con los que se comparte el calendario", "Reminders are always sent to organizers and attendees." : "Los recordatorios se envían siempre a los organizadores y asistentes.", "Enable notifications for events via push" : "Habilitar notificaciones para eventos mediante push", + "Cancel" : "Cancelar", + "Import" : "Importar", + "Error while saving settings" : "Error al guardar la configuración", "There was an error updating your attendance status." : "Ocurrió un error al actualizar su estado de asistencia.", "Please contact the organizer directly." : "Por favor, contacte al organizador directamente.", "Are you accepting the invitation?" : "¿Acepta la invitación?", diff --git a/apps/dav/l10n/es_MX.json b/apps/dav/l10n/es_MX.json index e18beb9e041..ce57525938b 100644 --- a/apps/dav/l10n/es_MX.json +++ b/apps/dav/l10n/es_MX.json @@ -234,6 +234,9 @@ "Send reminder notifications to calendar sharees as well" : "Enviar recordatorio también a los usuarios con los que se comparte el calendario", "Reminders are always sent to organizers and attendees." : "Los recordatorios se envían siempre a los organizadores y asistentes.", "Enable notifications for events via push" : "Habilitar notificaciones para eventos mediante push", + "Cancel" : "Cancelar", + "Import" : "Importar", + "Error while saving settings" : "Error al guardar la configuración", "There was an error updating your attendance status." : "Ocurrió un error al actualizar su estado de asistencia.", "Please contact the organizer directly." : "Por favor, contacte al organizador directamente.", "Are you accepting the invitation?" : "¿Acepta la invitación?", diff --git a/apps/dav/l10n/eu.js b/apps/dav/l10n/eu.js index 2dddf5dc52d..2a897a6ae73 100644 --- a/apps/dav/l10n/eu.js +++ b/apps/dav/l10n/eu.js @@ -301,6 +301,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Bidali gogorarazpen jakinarazpenak egutegi partekatzea dutenei ere", "Reminders are always sent to organizers and attendees." : "Gogorarazpenak beti bidaltzen zaizkie antolatzaileei eta parte-hartzaileei.", "Enable notifications for events via push" : "Gaitu push bidezko jakinarazpenak gertaerentzat", + "Cancel" : "Utzi", + "Import" : "Inportatu", + "Error while saving settings" : "Errorea ezarpenak gordetzean", "There was an error updating your attendance status." : "Errore bat gertatu da zure parte-hartze egoera eguneratzerakoan.", "Please contact the organizer directly." : "Mesedez jarri harremanetan antolatzailearekin zuzenean.", "Are you accepting the invitation?" : "Gonbidapena onartzen duzu?", diff --git a/apps/dav/l10n/eu.json b/apps/dav/l10n/eu.json index 3c650e92bfa..ab0924414c4 100644 --- a/apps/dav/l10n/eu.json +++ b/apps/dav/l10n/eu.json @@ -299,6 +299,9 @@ "Send reminder notifications to calendar sharees as well" : "Bidali gogorarazpen jakinarazpenak egutegi partekatzea dutenei ere", "Reminders are always sent to organizers and attendees." : "Gogorarazpenak beti bidaltzen zaizkie antolatzaileei eta parte-hartzaileei.", "Enable notifications for events via push" : "Gaitu push bidezko jakinarazpenak gertaerentzat", + "Cancel" : "Utzi", + "Import" : "Inportatu", + "Error while saving settings" : "Errorea ezarpenak gordetzean", "There was an error updating your attendance status." : "Errore bat gertatu da zure parte-hartze egoera eguneratzerakoan.", "Please contact the organizer directly." : "Mesedez jarri harremanetan antolatzailearekin zuzenean.", "Are you accepting the invitation?" : "Gonbidapena onartzen duzu?", diff --git a/apps/dav/l10n/fa.js b/apps/dav/l10n/fa.js index 87498b21be9..03bc4a221ba 100644 --- a/apps/dav/l10n/fa.js +++ b/apps/dav/l10n/fa.js @@ -193,6 +193,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Send reminder notifications to calendar sharees as well", "Reminders are always sent to organizers and attendees." : "Reminders are always sent to organizers and attendees.", "Enable notifications for events via push" : "Enable notifications for events via push", + "Cancel" : "ردکردن", + "Import" : "وارد کردن", + "Error while saving settings" : "Error while saving settings", "There was an error updating your attendance status." : "There was an error updating your attendance status.", "Please contact the organizer directly." : "Please contact the organizer directly.", "Are you accepting the invitation?" : "Are you accepting the invitation?", diff --git a/apps/dav/l10n/fa.json b/apps/dav/l10n/fa.json index 9d75cf5cdd5..97e7a950714 100644 --- a/apps/dav/l10n/fa.json +++ b/apps/dav/l10n/fa.json @@ -191,6 +191,9 @@ "Send reminder notifications to calendar sharees as well" : "Send reminder notifications to calendar sharees as well", "Reminders are always sent to organizers and attendees." : "Reminders are always sent to organizers and attendees.", "Enable notifications for events via push" : "Enable notifications for events via push", + "Cancel" : "ردکردن", + "Import" : "وارد کردن", + "Error while saving settings" : "Error while saving settings", "There was an error updating your attendance status." : "There was an error updating your attendance status.", "Please contact the organizer directly." : "Please contact the organizer directly.", "Are you accepting the invitation?" : "Are you accepting the invitation?", diff --git a/apps/dav/l10n/fr.js b/apps/dav/l10n/fr.js index dc4619e9802..915f8543589 100644 --- a/apps/dav/l10n/fr.js +++ b/apps/dav/l10n/fr.js @@ -272,6 +272,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Envoyez également des notifications de rappel aux personnes partageant le calendrier", "Reminders are always sent to organizers and attendees." : "Des rappels sont toujours envoyés aux organisateurs et aux participants.", "Enable notifications for events via push" : "Activer les notifications push pour les évènements", + "Cancel" : "Annuler", + "Import" : "Importation", + "Error while saving settings" : "Erreur lors de l'enregistrement des paramètres", "There was an error updating your attendance status." : "Une erreur s'est produite lors de la mise à jour de votre statut de présence.", "Please contact the organizer directly." : "Merci de contacter l'organisateur directement.", "Are you accepting the invitation?" : "Acceptez-vous l'invitation ?", diff --git a/apps/dav/l10n/fr.json b/apps/dav/l10n/fr.json index c444e2936ef..7c204187201 100644 --- a/apps/dav/l10n/fr.json +++ b/apps/dav/l10n/fr.json @@ -270,6 +270,9 @@ "Send reminder notifications to calendar sharees as well" : "Envoyez également des notifications de rappel aux personnes partageant le calendrier", "Reminders are always sent to organizers and attendees." : "Des rappels sont toujours envoyés aux organisateurs et aux participants.", "Enable notifications for events via push" : "Activer les notifications push pour les évènements", + "Cancel" : "Annuler", + "Import" : "Importation", + "Error while saving settings" : "Erreur lors de l'enregistrement des paramètres", "There was an error updating your attendance status." : "Une erreur s'est produite lors de la mise à jour de votre statut de présence.", "Please contact the organizer directly." : "Merci de contacter l'organisateur directement.", "Are you accepting the invitation?" : "Acceptez-vous l'invitation ?", diff --git a/apps/dav/l10n/ga.js b/apps/dav/l10n/ga.js index ddeb2a0fbf3..1d3d0d75c89 100644 --- a/apps/dav/l10n/ga.js +++ b/apps/dav/l10n/ga.js @@ -306,6 +306,19 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Seol fógraí meabhrúcháin chuig scaireanna féilire freisin", "Reminders are always sent to organizers and attendees." : "Seoltar meabhrúcháin chuig na heagraithe agus an lucht freastail i gcónaí.", "Enable notifications for events via push" : "Cumasaigh fógraí le haghaidh imeachtaí trí bhrú", + "Cancel" : "Cealaigh", + "Import" : "Iompórtáil", + "Error while saving settings" : "Earráid agus na socruithe á sábháil", + "Contact reset successfully" : "D'éirigh le hathshocrú teagmhála", + "Error while resetting contact" : "Earráid agus an teagmhálaí á athshocrú", + "Contact imported successfully" : "D'éirigh le hiompórtáil an teagmhálaí", + "Error while importing contact" : "Earráid agus an teagmhálaí á iompórtáil", + "Example Content" : "Ábhar Samplach", + "Set example content to be created on new user first login." : "Socraigh ábhar samplach le cruthú ar an gcéad logáil isteach úsáideora nua.", + "Import contact" : "Iompórtáil teagmhála", + "Reset to default contact" : "Athshocraigh go teagmhálaí réamhshocraithe", + "Import contacts" : "Teagmhálaithe a allmhairiú", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Má dhéantar comhad .vcf nua a iompórtáil, scriosfar an teagmhálaí réamhshocraithe atá ann cheana féin agus cuirfear an ceann nua ina ionad. Ar mhaith leat leanúint ar aghaidh?", "There was an error updating your attendance status." : "Tharla earráid agus do stádas freastail á nuashonrú.", "Please contact the organizer directly." : "Téigh i dteagmháil leis an eagraí go díreach le do thoil.", "Are you accepting the invitation?" : "An bhfuil tú ag glacadh leis an gcuireadh?", diff --git a/apps/dav/l10n/ga.json b/apps/dav/l10n/ga.json index 97179703a49..0012739b177 100644 --- a/apps/dav/l10n/ga.json +++ b/apps/dav/l10n/ga.json @@ -304,6 +304,19 @@ "Send reminder notifications to calendar sharees as well" : "Seol fógraí meabhrúcháin chuig scaireanna féilire freisin", "Reminders are always sent to organizers and attendees." : "Seoltar meabhrúcháin chuig na heagraithe agus an lucht freastail i gcónaí.", "Enable notifications for events via push" : "Cumasaigh fógraí le haghaidh imeachtaí trí bhrú", + "Cancel" : "Cealaigh", + "Import" : "Iompórtáil", + "Error while saving settings" : "Earráid agus na socruithe á sábháil", + "Contact reset successfully" : "D'éirigh le hathshocrú teagmhála", + "Error while resetting contact" : "Earráid agus an teagmhálaí á athshocrú", + "Contact imported successfully" : "D'éirigh le hiompórtáil an teagmhálaí", + "Error while importing contact" : "Earráid agus an teagmhálaí á iompórtáil", + "Example Content" : "Ábhar Samplach", + "Set example content to be created on new user first login." : "Socraigh ábhar samplach le cruthú ar an gcéad logáil isteach úsáideora nua.", + "Import contact" : "Iompórtáil teagmhála", + "Reset to default contact" : "Athshocraigh go teagmhálaí réamhshocraithe", + "Import contacts" : "Teagmhálaithe a allmhairiú", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Má dhéantar comhad .vcf nua a iompórtáil, scriosfar an teagmhálaí réamhshocraithe atá ann cheana féin agus cuirfear an ceann nua ina ionad. Ar mhaith leat leanúint ar aghaidh?", "There was an error updating your attendance status." : "Tharla earráid agus do stádas freastail á nuashonrú.", "Please contact the organizer directly." : "Téigh i dteagmháil leis an eagraí go díreach le do thoil.", "Are you accepting the invitation?" : "An bhfuil tú ag glacadh leis an gcuireadh?", diff --git a/apps/dav/l10n/gl.js b/apps/dav/l10n/gl.js index c5d221f9edc..b1fa7954ad1 100644 --- a/apps/dav/l10n/gl.js +++ b/apps/dav/l10n/gl.js @@ -303,6 +303,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Enviar notificacións de lembrete tamén aos que comparten calendario", "Reminders are always sent to organizers and attendees." : "Os lembretes envíanselle sempre aos organizadores e aos asistentes.", "Enable notifications for events via push" : "Activar o envío de notificacións emerxentes para eventos", + "Cancel" : "Cancelar", + "Import" : "Importar", + "Error while saving settings" : "Produciuse un erro ao gardar os axustes", "There was an error updating your attendance status." : "Produciuse un erro ao actualizar o seu estado de asistencia.", "Please contact the organizer directly." : "Contacte directamente co organizador.", "Are you accepting the invitation?" : "Acepta Vde. o convite?", diff --git a/apps/dav/l10n/gl.json b/apps/dav/l10n/gl.json index ae594bd58d5..75453854e87 100644 --- a/apps/dav/l10n/gl.json +++ b/apps/dav/l10n/gl.json @@ -301,6 +301,9 @@ "Send reminder notifications to calendar sharees as well" : "Enviar notificacións de lembrete tamén aos que comparten calendario", "Reminders are always sent to organizers and attendees." : "Os lembretes envíanselle sempre aos organizadores e aos asistentes.", "Enable notifications for events via push" : "Activar o envío de notificacións emerxentes para eventos", + "Cancel" : "Cancelar", + "Import" : "Importar", + "Error while saving settings" : "Produciuse un erro ao gardar os axustes", "There was an error updating your attendance status." : "Produciuse un erro ao actualizar o seu estado de asistencia.", "Please contact the organizer directly." : "Contacte directamente co organizador.", "Are you accepting the invitation?" : "Acepta Vde. o convite?", diff --git a/apps/dav/l10n/hu.js b/apps/dav/l10n/hu.js index 5e43555cd18..94101573c66 100644 --- a/apps/dav/l10n/hu.js +++ b/apps/dav/l10n/hu.js @@ -260,6 +260,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Emlékeztető értesítések küldése azoknak is, akikkel a naptár meg van osztva", "Reminders are always sent to organizers and attendees." : "Az értesítések mindig a szervezőknek és a résztvevőknek lesznek elküldve.", "Enable notifications for events via push" : "Leküldéses értesítések engedélyezése az eseményekhez", + "Cancel" : "Mégse", + "Import" : "Importálás", + "Error while saving settings" : "Hiba a beállítások mentése során", "There was an error updating your attendance status." : "Hiba történt a részvételi állapotának frissítése során.", "Please contact the organizer directly." : "Vegye fel a kapcsolatot közvetlenül a szervezővel.", "Are you accepting the invitation?" : "Elfogadja az meghívást?", diff --git a/apps/dav/l10n/hu.json b/apps/dav/l10n/hu.json index f680b729455..9b396cb9271 100644 --- a/apps/dav/l10n/hu.json +++ b/apps/dav/l10n/hu.json @@ -258,6 +258,9 @@ "Send reminder notifications to calendar sharees as well" : "Emlékeztető értesítések küldése azoknak is, akikkel a naptár meg van osztva", "Reminders are always sent to organizers and attendees." : "Az értesítések mindig a szervezőknek és a résztvevőknek lesznek elküldve.", "Enable notifications for events via push" : "Leküldéses értesítések engedélyezése az eseményekhez", + "Cancel" : "Mégse", + "Import" : "Importálás", + "Error while saving settings" : "Hiba a beállítások mentése során", "There was an error updating your attendance status." : "Hiba történt a részvételi állapotának frissítése során.", "Please contact the organizer directly." : "Vegye fel a kapcsolatot közvetlenül a szervezővel.", "Are you accepting the invitation?" : "Elfogadja az meghívást?", diff --git a/apps/dav/l10n/is.js b/apps/dav/l10n/is.js index 4edb24f10e5..6a704e34114 100644 --- a/apps/dav/l10n/is.js +++ b/apps/dav/l10n/is.js @@ -303,6 +303,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Senda einnig tilkynningar til þeirra sem deila dagatalinu", "Reminders are always sent to organizers and attendees." : "Áminningar eru alltaf sendar til skipuleggjenda og þátttakenda.", "Enable notifications for events via push" : "Senda tilkynningar fyrir atburði sem ýtitilkynningar", + "Cancel" : "Hætta við", + "Import" : "Flytja inn", + "Error while saving settings" : "Villa við að vista stillingar", "There was an error updating your attendance status." : "Það kom upp villa við að uppfæra mætingarstöðu þína.", "Please contact the organizer directly." : "Hafðu samband beint við skipuleggjendurna.", "Are you accepting the invitation?" : "Ætlar þú að samþykkja boðið?", diff --git a/apps/dav/l10n/is.json b/apps/dav/l10n/is.json index 9dec4395dfd..9fc9d6906d0 100644 --- a/apps/dav/l10n/is.json +++ b/apps/dav/l10n/is.json @@ -301,6 +301,9 @@ "Send reminder notifications to calendar sharees as well" : "Senda einnig tilkynningar til þeirra sem deila dagatalinu", "Reminders are always sent to organizers and attendees." : "Áminningar eru alltaf sendar til skipuleggjenda og þátttakenda.", "Enable notifications for events via push" : "Senda tilkynningar fyrir atburði sem ýtitilkynningar", + "Cancel" : "Hætta við", + "Import" : "Flytja inn", + "Error while saving settings" : "Villa við að vista stillingar", "There was an error updating your attendance status." : "Það kom upp villa við að uppfæra mætingarstöðu þína.", "Please contact the organizer directly." : "Hafðu samband beint við skipuleggjendurna.", "Are you accepting the invitation?" : "Ætlar þú að samþykkja boðið?", diff --git a/apps/dav/l10n/it.js b/apps/dav/l10n/it.js index 36ca71903f2..644b25092fc 100644 --- a/apps/dav/l10n/it.js +++ b/apps/dav/l10n/it.js @@ -223,6 +223,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Invia notifiche di promemoria anche ai partecipanti al calendario", "Reminders are always sent to organizers and attendees." : "I promemoria vengono sempre inviati agli organizzatori e ai partecipanti.", "Enable notifications for events via push" : "Abilita notifiche per eventi tramite push", + "Cancel" : "Annulla", + "Import" : "Importa", + "Error while saving settings" : "Errore durante il salvataggio delle impostazioni", "There was an error updating your attendance status." : "Si è verificato un errore durante l'aggiornamento dello stato della tua partecipazione.", "Please contact the organizer directly." : "Contatta direttamente l'amministratore.", "Are you accepting the invitation?" : "Accetti l'invito?", diff --git a/apps/dav/l10n/it.json b/apps/dav/l10n/it.json index eb2a4073f61..7b41fafebbf 100644 --- a/apps/dav/l10n/it.json +++ b/apps/dav/l10n/it.json @@ -221,6 +221,9 @@ "Send reminder notifications to calendar sharees as well" : "Invia notifiche di promemoria anche ai partecipanti al calendario", "Reminders are always sent to organizers and attendees." : "I promemoria vengono sempre inviati agli organizzatori e ai partecipanti.", "Enable notifications for events via push" : "Abilita notifiche per eventi tramite push", + "Cancel" : "Annulla", + "Import" : "Importa", + "Error while saving settings" : "Errore durante il salvataggio delle impostazioni", "There was an error updating your attendance status." : "Si è verificato un errore durante l'aggiornamento dello stato della tua partecipazione.", "Please contact the organizer directly." : "Contatta direttamente l'amministratore.", "Are you accepting the invitation?" : "Accetti l'invito?", diff --git a/apps/dav/l10n/ja.js b/apps/dav/l10n/ja.js index 87612c5de3f..ddf6ba0741c 100644 --- a/apps/dav/l10n/ja.js +++ b/apps/dav/l10n/ja.js @@ -306,6 +306,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "カレンダー共有にもリマインダー通知を送信する", "Reminders are always sent to organizers and attendees." : "リマインダーを常に作成者と出席者に送信します。", "Enable notifications for events via push" : "イベントのプッシュ通知を有効にする", + "Cancel" : "キャンセル", + "Import" : "インポート", + "Error while saving settings" : "設定の保存中にエラーが発生", "There was an error updating your attendance status." : "出席状況の更新中にエラーが発生しました。", "Please contact the organizer directly." : "主催者に直接お問い合わせください。", "Are you accepting the invitation?" : "招待を受け入れていますか?", diff --git a/apps/dav/l10n/ja.json b/apps/dav/l10n/ja.json index 2c48d7c947d..dd0bf1ef9b8 100644 --- a/apps/dav/l10n/ja.json +++ b/apps/dav/l10n/ja.json @@ -304,6 +304,9 @@ "Send reminder notifications to calendar sharees as well" : "カレンダー共有にもリマインダー通知を送信する", "Reminders are always sent to organizers and attendees." : "リマインダーを常に作成者と出席者に送信します。", "Enable notifications for events via push" : "イベントのプッシュ通知を有効にする", + "Cancel" : "キャンセル", + "Import" : "インポート", + "Error while saving settings" : "設定の保存中にエラーが発生", "There was an error updating your attendance status." : "出席状況の更新中にエラーが発生しました。", "Please contact the organizer directly." : "主催者に直接お問い合わせください。", "Are you accepting the invitation?" : "招待を受け入れていますか?", diff --git a/apps/dav/l10n/ka.js b/apps/dav/l10n/ka.js index d6deb8a2b3e..a390102d876 100644 --- a/apps/dav/l10n/ka.js +++ b/apps/dav/l10n/ka.js @@ -207,6 +207,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Send reminder notifications to calendar sharees as well", "Reminders are always sent to organizers and attendees." : "Reminders are always sent to organizers and attendees.", "Enable notifications for events via push" : "Enable notifications for events via push", + "Cancel" : "Cancel", + "Import" : "Import", + "Error while saving settings" : "Error while saving settings", "There was an error updating your attendance status." : "There was an error updating your attendance status.", "Please contact the organizer directly." : "Please contact the organizer directly.", "Are you accepting the invitation?" : "Are you accepting the invitation?", diff --git a/apps/dav/l10n/ka.json b/apps/dav/l10n/ka.json index 2d286ac6821..5738b8b4fb8 100644 --- a/apps/dav/l10n/ka.json +++ b/apps/dav/l10n/ka.json @@ -205,6 +205,9 @@ "Send reminder notifications to calendar sharees as well" : "Send reminder notifications to calendar sharees as well", "Reminders are always sent to organizers and attendees." : "Reminders are always sent to organizers and attendees.", "Enable notifications for events via push" : "Enable notifications for events via push", + "Cancel" : "Cancel", + "Import" : "Import", + "Error while saving settings" : "Error while saving settings", "There was an error updating your attendance status." : "There was an error updating your attendance status.", "Please contact the organizer directly." : "Please contact the organizer directly.", "Are you accepting the invitation?" : "Are you accepting the invitation?", diff --git a/apps/dav/l10n/ko.js b/apps/dav/l10n/ko.js index 2464430dbe7..91c84463670 100644 --- a/apps/dav/l10n/ko.js +++ b/apps/dav/l10n/ko.js @@ -208,6 +208,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "캘린더 공유자에게도 미리 알림 보내기", "Reminders are always sent to organizers and attendees." : "미리 알림은 주최자와 참석자에게 항상 전송됩니다.", "Enable notifications for events via push" : "일정에 대한 푸시 알림 활성화", + "Cancel" : "취소", + "Import" : "가져오기", + "Error while saving settings" : "설정 저장 중 오류 발생", "There was an error updating your attendance status." : "참석 상태를 업데이트하는 중 오류가 발생했습니다.", "Please contact the organizer directly." : "주최자에게 직접 연락하십시오.", "Are you accepting the invitation?" : "초대를 수락하시겠습니까?", diff --git a/apps/dav/l10n/ko.json b/apps/dav/l10n/ko.json index 34738a4ce61..c45f8470385 100644 --- a/apps/dav/l10n/ko.json +++ b/apps/dav/l10n/ko.json @@ -206,6 +206,9 @@ "Send reminder notifications to calendar sharees as well" : "캘린더 공유자에게도 미리 알림 보내기", "Reminders are always sent to organizers and attendees." : "미리 알림은 주최자와 참석자에게 항상 전송됩니다.", "Enable notifications for events via push" : "일정에 대한 푸시 알림 활성화", + "Cancel" : "취소", + "Import" : "가져오기", + "Error while saving settings" : "설정 저장 중 오류 발생", "There was an error updating your attendance status." : "참석 상태를 업데이트하는 중 오류가 발생했습니다.", "Please contact the organizer directly." : "주최자에게 직접 연락하십시오.", "Are you accepting the invitation?" : "초대를 수락하시겠습니까?", diff --git a/apps/dav/l10n/mk.js b/apps/dav/l10n/mk.js index 4753c91d5a9..46b51db6c3f 100644 --- a/apps/dav/l10n/mk.js +++ b/apps/dav/l10n/mk.js @@ -197,6 +197,8 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Испратете известувања за потсетници и до споделувањата на календарот", "Reminders are always sent to organizers and attendees." : "Секогаш се испраќаат потсетници до организаторите и до присутните.", "Enable notifications for events via push" : "Овозможи известувања за настани преку push", + "Cancel" : "Откажи", + "Import" : "Увези", "There was an error updating your attendance status." : "Настана грешка при ажурирање на вашето присуство.", "Please contact the organizer directly." : "Контактирајте го организаторот директно.", "Are you accepting the invitation?" : "Дали ја прифаќате поканата?", diff --git a/apps/dav/l10n/mk.json b/apps/dav/l10n/mk.json index 0a0be6028ca..f7864e8bd64 100644 --- a/apps/dav/l10n/mk.json +++ b/apps/dav/l10n/mk.json @@ -195,6 +195,8 @@ "Send reminder notifications to calendar sharees as well" : "Испратете известувања за потсетници и до споделувањата на календарот", "Reminders are always sent to organizers and attendees." : "Секогаш се испраќаат потсетници до организаторите и до присутните.", "Enable notifications for events via push" : "Овозможи известувања за настани преку push", + "Cancel" : "Откажи", + "Import" : "Увези", "There was an error updating your attendance status." : "Настана грешка при ажурирање на вашето присуство.", "Please contact the organizer directly." : "Контактирајте го организаторот директно.", "Are you accepting the invitation?" : "Дали ја прифаќате поканата?", diff --git a/apps/dav/l10n/nb.js b/apps/dav/l10n/nb.js index 06bae317e37..bd6ae10ed39 100644 --- a/apps/dav/l10n/nb.js +++ b/apps/dav/l10n/nb.js @@ -263,6 +263,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Send påminnelsesvarsler til kalenderdelinger også", "Reminders are always sent to organizers and attendees." : "Reminders are always sent to organizers and attendees.", "Enable notifications for events via push" : "Aktiver varsler for hendelser via push", + "Cancel" : "Avbryt", + "Import" : "Importer", + "Error while saving settings" : "Feil ved lagring av innstillinger", "There was an error updating your attendance status." : "Det oppsto en feil under oppdateringen av oppmøtestatusen din.", "Please contact the organizer directly." : "Ta kontakt med arrangøren direkte.", "Are you accepting the invitation?" : "Aksepterer du invitasjonen?", diff --git a/apps/dav/l10n/nb.json b/apps/dav/l10n/nb.json index 733c8405fbc..e8aee0356f4 100644 --- a/apps/dav/l10n/nb.json +++ b/apps/dav/l10n/nb.json @@ -261,6 +261,9 @@ "Send reminder notifications to calendar sharees as well" : "Send påminnelsesvarsler til kalenderdelinger også", "Reminders are always sent to organizers and attendees." : "Reminders are always sent to organizers and attendees.", "Enable notifications for events via push" : "Aktiver varsler for hendelser via push", + "Cancel" : "Avbryt", + "Import" : "Importer", + "Error while saving settings" : "Feil ved lagring av innstillinger", "There was an error updating your attendance status." : "Det oppsto en feil under oppdateringen av oppmøtestatusen din.", "Please contact the organizer directly." : "Ta kontakt med arrangøren direkte.", "Are you accepting the invitation?" : "Aksepterer du invitasjonen?", diff --git a/apps/dav/l10n/nl.js b/apps/dav/l10n/nl.js index 7578d5db58f..464dae7bf81 100644 --- a/apps/dav/l10n/nl.js +++ b/apps/dav/l10n/nl.js @@ -179,6 +179,9 @@ OC.L10N.register( "Send notifications for events" : "Versturen meldingen voor afspraken", "Notifications are sent via background jobs, so these must occur often enough." : "Meldingen worden via achtergrondtaken verstuurd, dus die moeten vaak genoeg plaatsvinden.", "Enable notifications for events via push" : "Inschakelen push-melding voor afspraken", + "Cancel" : "Annuleren", + "Import" : "Import", + "Error while saving settings" : "Probleem tijdens het opslaan van instellingen", "There was an error updating your attendance status." : "Er trad een fout op bij het bijwerken van je deelnamestatus.", "Please contact the organizer directly." : "Neem rechtstreeks contact op met de organisator.", "Are you accepting the invitation?" : "Neem je de uitnodiging aan?", diff --git a/apps/dav/l10n/nl.json b/apps/dav/l10n/nl.json index 47732060656..f5d509dfc4a 100644 --- a/apps/dav/l10n/nl.json +++ b/apps/dav/l10n/nl.json @@ -177,6 +177,9 @@ "Send notifications for events" : "Versturen meldingen voor afspraken", "Notifications are sent via background jobs, so these must occur often enough." : "Meldingen worden via achtergrondtaken verstuurd, dus die moeten vaak genoeg plaatsvinden.", "Enable notifications for events via push" : "Inschakelen push-melding voor afspraken", + "Cancel" : "Annuleren", + "Import" : "Import", + "Error while saving settings" : "Probleem tijdens het opslaan van instellingen", "There was an error updating your attendance status." : "Er trad een fout op bij het bijwerken van je deelnamestatus.", "Please contact the organizer directly." : "Neem rechtstreeks contact op met de organisator.", "Are you accepting the invitation?" : "Neem je de uitnodiging aan?", diff --git a/apps/dav/l10n/pl.js b/apps/dav/l10n/pl.js index 344913a9c50..45c51f70f42 100644 --- a/apps/dav/l10n/pl.js +++ b/apps/dav/l10n/pl.js @@ -231,6 +231,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Wysyłaj przypomnienia również do udostępnionych kalendarzy", "Reminders are always sent to organizers and attendees." : "Przypomnienia są zawsze wysyłane do organizatorów i uczestników.", "Enable notifications for events via push" : "Włącz powiadomienia o zdarzeniach poprzez Push", + "Cancel" : "Anuluj", + "Import" : "Importuj", + "Error while saving settings" : "Błąd podczas zapisywania ustawień", "There was an error updating your attendance status." : "Wystąpił błąd zmiany stanu uczestnictwa", "Please contact the organizer directly." : "Skontaktuj się bezpośrednio z orgnizatorem.", "Are you accepting the invitation?" : "Czy akceptujesz zaproszenie?", diff --git a/apps/dav/l10n/pl.json b/apps/dav/l10n/pl.json index c18147ebcea..f8a2313f7ea 100644 --- a/apps/dav/l10n/pl.json +++ b/apps/dav/l10n/pl.json @@ -229,6 +229,9 @@ "Send reminder notifications to calendar sharees as well" : "Wysyłaj przypomnienia również do udostępnionych kalendarzy", "Reminders are always sent to organizers and attendees." : "Przypomnienia są zawsze wysyłane do organizatorów i uczestników.", "Enable notifications for events via push" : "Włącz powiadomienia o zdarzeniach poprzez Push", + "Cancel" : "Anuluj", + "Import" : "Importuj", + "Error while saving settings" : "Błąd podczas zapisywania ustawień", "There was an error updating your attendance status." : "Wystąpił błąd zmiany stanu uczestnictwa", "Please contact the organizer directly." : "Skontaktuj się bezpośrednio z orgnizatorem.", "Are you accepting the invitation?" : "Czy akceptujesz zaproszenie?", diff --git a/apps/dav/l10n/pt_BR.js b/apps/dav/l10n/pt_BR.js index eae241c53fc..a3f9ac097d4 100644 --- a/apps/dav/l10n/pt_BR.js +++ b/apps/dav/l10n/pt_BR.js @@ -275,7 +275,7 @@ OC.L10N.register( "No results." : "Nenhum resultado.", "Start typing." : "Comece a digitar.", "Short absence status" : "Status para ausência breve", - "Long absence Message" : "Mensagem para ausência longa", + "Long absence Message" : "Mensagem longa de ausência", "Save" : "Salvar", "Disable absence" : "Desativar ausência", "Failed to load availability" : "Falha ao carregar a disponibilidade", @@ -306,6 +306,19 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Envie notificações de lembrete para compartilhamentos de calendário também", "Reminders are always sent to organizers and attendees." : "Os lembretes são sempre enviados aos organizadores e participantes.", "Enable notifications for events via push" : "Ativar notificações para eventos via push", + "Cancel" : "Cancelar", + "Import" : "Importar", + "Error while saving settings" : "Error while saving settings", + "Contact reset successfully" : "O contato foi reiniciado com sucesso", + "Error while resetting contact" : "Erro ao reiniciar o contato", + "Contact imported successfully" : "O contato foi importado com sucesso", + "Error while importing contact" : "Erro ao importar o contato", + "Example Content" : "Conteúdo de Exemplo", + "Set example content to be created on new user first login." : "Defina o conteúdo de exemplo a ser criado no primeiro login do novo usuário.", + "Import contact" : "Importar contato", + "Reset to default contact" : "Redefinir para o contato padrão", + "Import contacts" : "Importar contatos", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "A importação de um novo arquivo .vcf excluirá o contato padrão existente e o substituirá pelo novo. Deseja continuar?", "There was an error updating your attendance status." : "Houve um erro ao atualizar seu status de participação.", "Please contact the organizer directly." : "Por favor, contate o organizador diretamente.", "Are you accepting the invitation?" : "Você está aceitando o convite?", diff --git a/apps/dav/l10n/pt_BR.json b/apps/dav/l10n/pt_BR.json index c052781d55a..c2345daa85d 100644 --- a/apps/dav/l10n/pt_BR.json +++ b/apps/dav/l10n/pt_BR.json @@ -273,7 +273,7 @@ "No results." : "Nenhum resultado.", "Start typing." : "Comece a digitar.", "Short absence status" : "Status para ausência breve", - "Long absence Message" : "Mensagem para ausência longa", + "Long absence Message" : "Mensagem longa de ausência", "Save" : "Salvar", "Disable absence" : "Desativar ausência", "Failed to load availability" : "Falha ao carregar a disponibilidade", @@ -304,6 +304,19 @@ "Send reminder notifications to calendar sharees as well" : "Envie notificações de lembrete para compartilhamentos de calendário também", "Reminders are always sent to organizers and attendees." : "Os lembretes são sempre enviados aos organizadores e participantes.", "Enable notifications for events via push" : "Ativar notificações para eventos via push", + "Cancel" : "Cancelar", + "Import" : "Importar", + "Error while saving settings" : "Error while saving settings", + "Contact reset successfully" : "O contato foi reiniciado com sucesso", + "Error while resetting contact" : "Erro ao reiniciar o contato", + "Contact imported successfully" : "O contato foi importado com sucesso", + "Error while importing contact" : "Erro ao importar o contato", + "Example Content" : "Conteúdo de Exemplo", + "Set example content to be created on new user first login." : "Defina o conteúdo de exemplo a ser criado no primeiro login do novo usuário.", + "Import contact" : "Importar contato", + "Reset to default contact" : "Redefinir para o contato padrão", + "Import contacts" : "Importar contatos", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "A importação de um novo arquivo .vcf excluirá o contato padrão existente e o substituirá pelo novo. Deseja continuar?", "There was an error updating your attendance status." : "Houve um erro ao atualizar seu status de participação.", "Please contact the organizer directly." : "Por favor, contate o organizador diretamente.", "Are you accepting the invitation?" : "Você está aceitando o convite?", diff --git a/apps/dav/l10n/ru.js b/apps/dav/l10n/ru.js index 7f89aed5330..1b9aa0e5f13 100644 --- a/apps/dav/l10n/ru.js +++ b/apps/dav/l10n/ru.js @@ -231,6 +231,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Отправлять напоминания всем пользователям, имеющим доступ к календарю", "Reminders are always sent to organizers and attendees." : "Организаторам и участникам уведомления отправляются во всех случаях.", "Enable notifications for events via push" : "Включить уведомления о событиях с помощью push", + "Cancel" : "Отмена", + "Import" : "Импортировать", + "Error while saving settings" : "Ошибка при сохранении параметров", "There was an error updating your attendance status." : "Ошибка обновления статуса участия.", "Please contact the organizer directly." : "Обратитесь к организатору напрямую.", "Are you accepting the invitation?" : "Принять приглашение?", diff --git a/apps/dav/l10n/ru.json b/apps/dav/l10n/ru.json index d0087274575..43211c3f748 100644 --- a/apps/dav/l10n/ru.json +++ b/apps/dav/l10n/ru.json @@ -229,6 +229,9 @@ "Send reminder notifications to calendar sharees as well" : "Отправлять напоминания всем пользователям, имеющим доступ к календарю", "Reminders are always sent to organizers and attendees." : "Организаторам и участникам уведомления отправляются во всех случаях.", "Enable notifications for events via push" : "Включить уведомления о событиях с помощью push", + "Cancel" : "Отмена", + "Import" : "Импортировать", + "Error while saving settings" : "Ошибка при сохранении параметров", "There was an error updating your attendance status." : "Ошибка обновления статуса участия.", "Please contact the organizer directly." : "Обратитесь к организатору напрямую.", "Are you accepting the invitation?" : "Принять приглашение?", diff --git a/apps/dav/l10n/sk.js b/apps/dav/l10n/sk.js index bd5c7084653..069ee087b48 100644 --- a/apps/dav/l10n/sk.js +++ b/apps/dav/l10n/sk.js @@ -306,6 +306,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Posielať upozornenia na pripomienky aj zdieľaným osobám v kalendári", "Reminders are always sent to organizers and attendees." : "Upozornenia sa vždy posielajú organizátorom a účastníkom.", "Enable notifications for events via push" : "Zapnúť oznámenia o udalostiach prostredníctvom technológie push.", + "Cancel" : "Zrušiť", + "Import" : "Import", + "Error while saving settings" : "Chyba pri ukladaní nastavení", "There was an error updating your attendance status." : "Nastal problém pri aktualizácii Vašej účasti.", "Please contact the organizer directly." : "Prosím kontaktujte priamo organizátora.", "Are you accepting the invitation?" : "Príjmate pozvánku?", diff --git a/apps/dav/l10n/sk.json b/apps/dav/l10n/sk.json index 0147b378e35..8f3193e45f2 100644 --- a/apps/dav/l10n/sk.json +++ b/apps/dav/l10n/sk.json @@ -304,6 +304,9 @@ "Send reminder notifications to calendar sharees as well" : "Posielať upozornenia na pripomienky aj zdieľaným osobám v kalendári", "Reminders are always sent to organizers and attendees." : "Upozornenia sa vždy posielajú organizátorom a účastníkom.", "Enable notifications for events via push" : "Zapnúť oznámenia o udalostiach prostredníctvom technológie push.", + "Cancel" : "Zrušiť", + "Import" : "Import", + "Error while saving settings" : "Chyba pri ukladaní nastavení", "There was an error updating your attendance status." : "Nastal problém pri aktualizácii Vašej účasti.", "Please contact the organizer directly." : "Prosím kontaktujte priamo organizátora.", "Are you accepting the invitation?" : "Príjmate pozvánku?", diff --git a/apps/dav/l10n/sl.js b/apps/dav/l10n/sl.js index a78d7155a4d..586b8446c5d 100644 --- a/apps/dav/l10n/sl.js +++ b/apps/dav/l10n/sl.js @@ -214,6 +214,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Pošiljanje opomnikov tudi naročnikom koledarja.", "Reminders are always sent to organizers and attendees." : "Opomniki bodo vedno poslani organizatorjem in udeležencem.", "Enable notifications for events via push" : "Omogoči potisna obvestila za dogodke", + "Cancel" : "Prekliči", + "Import" : "Uvozi", + "Error while saving settings" : "Prišlo je do napake med shranjevanjem nastavitev", "There was an error updating your attendance status." : "Prišlo je do napake med posodabljanjem vaše udeležbe.", "Please contact the organizer directly." : "Z organizatorjem stopite neposredno v stik.", "Are you accepting the invitation?" : "Ali želite sprejeti povabilo?", diff --git a/apps/dav/l10n/sl.json b/apps/dav/l10n/sl.json index f6a107d05ac..56efe70d043 100644 --- a/apps/dav/l10n/sl.json +++ b/apps/dav/l10n/sl.json @@ -212,6 +212,9 @@ "Send reminder notifications to calendar sharees as well" : "Pošiljanje opomnikov tudi naročnikom koledarja.", "Reminders are always sent to organizers and attendees." : "Opomniki bodo vedno poslani organizatorjem in udeležencem.", "Enable notifications for events via push" : "Omogoči potisna obvestila za dogodke", + "Cancel" : "Prekliči", + "Import" : "Uvozi", + "Error while saving settings" : "Prišlo je do napake med shranjevanjem nastavitev", "There was an error updating your attendance status." : "Prišlo je do napake med posodabljanjem vaše udeležbe.", "Please contact the organizer directly." : "Z organizatorjem stopite neposredno v stik.", "Are you accepting the invitation?" : "Ali želite sprejeti povabilo?", diff --git a/apps/dav/l10n/sr.js b/apps/dav/l10n/sr.js index dcf035e1cbf..8655196e000 100644 --- a/apps/dav/l10n/sr.js +++ b/apps/dav/l10n/sr.js @@ -306,6 +306,19 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Пошаљи подсетнике и корисницима којима је календар подељен", "Reminders are always sent to organizers and attendees." : "Подсетници се увек шаљу организаторима и учесницима.", "Enable notifications for events via push" : "Укључи обавештења за догађаје преко гурања догађаја", + "Cancel" : "Откажи", + "Import" : "Увоз", + "Error while saving settings" : "Грешка приликом чувања подешавања", + "Contact reset successfully" : "Контакт је успешно ресетован", + "Error while resetting contact" : "Грешка приликом ресетовања контакта", + "Contact imported successfully" : "Контакт је успешно увезен", + "Error while importing contact" : "Грешка током увоза контакта", + "Example Content" : "Пример садржаја", + "Set example content to be created on new user first login." : "Постављање примера садржаја који се креира приликом прве пријаве новог корисника.", + "Import contact" : "Увези контакт", + "Reset to default contact" : "Ресетуј на подразумевани контакт", + "Import contacts" : "Увези контакте", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Увоз новог .vcf фајла ће да обрише постојећи подразумевани контакт и замениће га са новим. Желите ли да наставите?", "There was an error updating your attendance status." : "Десила се грешка приликом ажурирања статуса Вашег присуства.", "Please contact the organizer directly." : "Контактирајте директно организатора.", "Are you accepting the invitation?" : "Да ли прихватате позивницу?", diff --git a/apps/dav/l10n/sr.json b/apps/dav/l10n/sr.json index eb1ba1cfef7..597b4174ab4 100644 --- a/apps/dav/l10n/sr.json +++ b/apps/dav/l10n/sr.json @@ -304,6 +304,19 @@ "Send reminder notifications to calendar sharees as well" : "Пошаљи подсетнике и корисницима којима је календар подељен", "Reminders are always sent to organizers and attendees." : "Подсетници се увек шаљу организаторима и учесницима.", "Enable notifications for events via push" : "Укључи обавештења за догађаје преко гурања догађаја", + "Cancel" : "Откажи", + "Import" : "Увоз", + "Error while saving settings" : "Грешка приликом чувања подешавања", + "Contact reset successfully" : "Контакт је успешно ресетован", + "Error while resetting contact" : "Грешка приликом ресетовања контакта", + "Contact imported successfully" : "Контакт је успешно увезен", + "Error while importing contact" : "Грешка током увоза контакта", + "Example Content" : "Пример садржаја", + "Set example content to be created on new user first login." : "Постављање примера садржаја који се креира приликом прве пријаве новог корисника.", + "Import contact" : "Увези контакт", + "Reset to default contact" : "Ресетуј на подразумевани контакт", + "Import contacts" : "Увези контакте", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Увоз новог .vcf фајла ће да обрише постојећи подразумевани контакт и замениће га са новим. Желите ли да наставите?", "There was an error updating your attendance status." : "Десила се грешка приликом ажурирања статуса Вашег присуства.", "Please contact the organizer directly." : "Контактирајте директно организатора.", "Are you accepting the invitation?" : "Да ли прихватате позивницу?", diff --git a/apps/dav/l10n/sv.js b/apps/dav/l10n/sv.js index c62eca5a335..e0a94ae6663 100644 --- a/apps/dav/l10n/sv.js +++ b/apps/dav/l10n/sv.js @@ -306,6 +306,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Skicka även påminnelser till kalenderdeltagare", "Reminders are always sent to organizers and attendees." : "Påminnelser skickas alltid till arrangörer och deltagare.", "Enable notifications for events via push" : "Aktivera notiser för händelser via push", + "Cancel" : "Avbryt", + "Import" : "Importera", + "Error while saving settings" : "Fel vid sparande av inställningar", "There was an error updating your attendance status." : "Ett fel uppstod vid uppdatering av din närvarostatus.", "Please contact the organizer directly." : "Vänligen kontakta arrangören direkt.", "Are you accepting the invitation?" : "Acceptera inbjudan?", diff --git a/apps/dav/l10n/sv.json b/apps/dav/l10n/sv.json index 3197f066081..207d5921baf 100644 --- a/apps/dav/l10n/sv.json +++ b/apps/dav/l10n/sv.json @@ -304,6 +304,9 @@ "Send reminder notifications to calendar sharees as well" : "Skicka även påminnelser till kalenderdeltagare", "Reminders are always sent to organizers and attendees." : "Påminnelser skickas alltid till arrangörer och deltagare.", "Enable notifications for events via push" : "Aktivera notiser för händelser via push", + "Cancel" : "Avbryt", + "Import" : "Importera", + "Error while saving settings" : "Fel vid sparande av inställningar", "There was an error updating your attendance status." : "Ett fel uppstod vid uppdatering av din närvarostatus.", "Please contact the organizer directly." : "Vänligen kontakta arrangören direkt.", "Are you accepting the invitation?" : "Acceptera inbjudan?", diff --git a/apps/dav/l10n/tr.js b/apps/dav/l10n/tr.js index 337869ce720..0795419cb6c 100644 --- a/apps/dav/l10n/tr.js +++ b/apps/dav/l10n/tr.js @@ -303,6 +303,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Takvim paylaşımlarına da hatırlatma bildirimleri gönderilsin", "Reminders are always sent to organizers and attendees." : "Bu seçenek kullanıma alındığında, hatırlatıcılar her zaman düzenleyici ve katılımcılara gönderilir.", "Enable notifications for events via push" : "Anında etkinlik bildirimlerini aç", + "Cancel" : "İptal", + "Import" : "İçe aktar", + "Error while saving settings" : "Ayarlar kaydedilirken sorun çıktı", "There was an error updating your attendance status." : "Katılım durumunuz güncellenirken bir sorun çıktı.", "Please contact the organizer directly." : "Lütfen düzenleyici ile doğrudan görüşün.", "Are you accepting the invitation?" : "Daveti kabul ediyor musunuz?", diff --git a/apps/dav/l10n/tr.json b/apps/dav/l10n/tr.json index 02de0604933..d20e1e8dcdf 100644 --- a/apps/dav/l10n/tr.json +++ b/apps/dav/l10n/tr.json @@ -301,6 +301,9 @@ "Send reminder notifications to calendar sharees as well" : "Takvim paylaşımlarına da hatırlatma bildirimleri gönderilsin", "Reminders are always sent to organizers and attendees." : "Bu seçenek kullanıma alındığında, hatırlatıcılar her zaman düzenleyici ve katılımcılara gönderilir.", "Enable notifications for events via push" : "Anında etkinlik bildirimlerini aç", + "Cancel" : "İptal", + "Import" : "İçe aktar", + "Error while saving settings" : "Ayarlar kaydedilirken sorun çıktı", "There was an error updating your attendance status." : "Katılım durumunuz güncellenirken bir sorun çıktı.", "Please contact the organizer directly." : "Lütfen düzenleyici ile doğrudan görüşün.", "Are you accepting the invitation?" : "Daveti kabul ediyor musunuz?", diff --git a/apps/dav/l10n/ug.js b/apps/dav/l10n/ug.js index 6affb18f978..e5cb4e9ab2d 100644 --- a/apps/dav/l10n/ug.js +++ b/apps/dav/l10n/ug.js @@ -255,6 +255,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "كالېندار ھەمبەھىرلىرىگىمۇ ئەسكەرتىش ئۇقتۇرۇشى ئەۋەتىڭ", "Reminders are always sent to organizers and attendees." : "ئەسكەرتىش ھەمىشە تەشكىللىگۈچىلەر ۋە قاتناشقۇچىلارغا ئەۋەتىلىدۇ.", "Enable notifications for events via push" : "ئىتتىرىش ئارقىلىق ۋەقەلەرگە ئۇقتۇرۇشنى قوزغىتىڭ", + "Cancel" : "بىكار قىلىش", + "Import" : "ئەكىر", + "Error while saving settings" : "تەڭشەكلەرنى ساقلاش جەريانىدا خاتالىق", "There was an error updating your attendance status." : "قاتنىشىش ھالىتىڭىزنى يېڭىلاشتا خاتالىق كۆرۈلدى.", "Please contact the organizer directly." : "تەشكىللىگۈچى بىلەن بىۋاسىتە ئالاقىلىشىڭ.", "Are you accepting the invitation?" : "تەكلىپنى قوبۇل قىلامسىز؟", diff --git a/apps/dav/l10n/ug.json b/apps/dav/l10n/ug.json index 1a3aa161cfe..5b05663b827 100644 --- a/apps/dav/l10n/ug.json +++ b/apps/dav/l10n/ug.json @@ -253,6 +253,9 @@ "Send reminder notifications to calendar sharees as well" : "كالېندار ھەمبەھىرلىرىگىمۇ ئەسكەرتىش ئۇقتۇرۇشى ئەۋەتىڭ", "Reminders are always sent to organizers and attendees." : "ئەسكەرتىش ھەمىشە تەشكىللىگۈچىلەر ۋە قاتناشقۇچىلارغا ئەۋەتىلىدۇ.", "Enable notifications for events via push" : "ئىتتىرىش ئارقىلىق ۋەقەلەرگە ئۇقتۇرۇشنى قوزغىتىڭ", + "Cancel" : "بىكار قىلىش", + "Import" : "ئەكىر", + "Error while saving settings" : "تەڭشەكلەرنى ساقلاش جەريانىدا خاتالىق", "There was an error updating your attendance status." : "قاتنىشىش ھالىتىڭىزنى يېڭىلاشتا خاتالىق كۆرۈلدى.", "Please contact the organizer directly." : "تەشكىللىگۈچى بىلەن بىۋاسىتە ئالاقىلىشىڭ.", "Are you accepting the invitation?" : "تەكلىپنى قوبۇل قىلامسىز؟", diff --git a/apps/dav/l10n/uk.js b/apps/dav/l10n/uk.js index ba785298a96..84cd5cf9f9f 100644 --- a/apps/dav/l10n/uk.js +++ b/apps/dav/l10n/uk.js @@ -266,6 +266,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Також надсилайте нагадування користувачам вашого спільного календаря", "Reminders are always sent to organizers and attendees." : "Нагадування завжди надсилаються організаторам і учасникам.", "Enable notifications for events via push" : "Увімкнути push-сповіщення для подій", + "Cancel" : "Скасувати", + "Import" : "Імпорт", + "Error while saving settings" : "Помилка під час збереження налаштувань", "There was an error updating your attendance status." : "Виникла помилка при оновленні вашого статусу учасника.", "Please contact the organizer directly." : "Будь-ласка повідомте організатора.", "Are you accepting the invitation?" : "Чи приймаєте ви запрошення?", diff --git a/apps/dav/l10n/uk.json b/apps/dav/l10n/uk.json index c3d7cd5fe4a..c0b0855ef07 100644 --- a/apps/dav/l10n/uk.json +++ b/apps/dav/l10n/uk.json @@ -264,6 +264,9 @@ "Send reminder notifications to calendar sharees as well" : "Також надсилайте нагадування користувачам вашого спільного календаря", "Reminders are always sent to organizers and attendees." : "Нагадування завжди надсилаються організаторам і учасникам.", "Enable notifications for events via push" : "Увімкнути push-сповіщення для подій", + "Cancel" : "Скасувати", + "Import" : "Імпорт", + "Error while saving settings" : "Помилка під час збереження налаштувань", "There was an error updating your attendance status." : "Виникла помилка при оновленні вашого статусу учасника.", "Please contact the organizer directly." : "Будь-ласка повідомте організатора.", "Are you accepting the invitation?" : "Чи приймаєте ви запрошення?", diff --git a/apps/dav/l10n/zh_CN.js b/apps/dav/l10n/zh_CN.js index 3774dc1a965..c3cc8269dff 100644 --- a/apps/dav/l10n/zh_CN.js +++ b/apps/dav/l10n/zh_CN.js @@ -306,6 +306,19 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "同时向日历共享者发送提醒通知", "Reminders are always sent to organizers and attendees." : "始终向组织者和与会者发出提醒。", "Enable notifications for events via push" : "启用推送事件通知", + "Cancel" : "取消", + "Import" : "导入", + "Error while saving settings" : "保存设置时出错", + "Contact reset successfully" : "联系人重置成功", + "Error while resetting contact" : "重置联系人时出错", + "Contact imported successfully" : "联系人导入成功", + "Error while importing contact" : "导入联系人时出错", + "Example Content" : "示例内容", + "Set example content to be created on new user first login." : "设置新用户首次登录时要创建的示例内容。", + "Import contact" : "导入联系人", + "Reset to default contact" : "重置为默认联系人", + "Import contacts" : "导入联系人", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "导入新的 .vcf 文件将删除现有的默认联系人,并用新联系人替换。是否要继续?", "There was an error updating your attendance status." : "更新您的出席状态时出错。", "Please contact the organizer directly." : "请直接联系组织者。", "Are you accepting the invitation?" : "您是否接受邀请?", diff --git a/apps/dav/l10n/zh_CN.json b/apps/dav/l10n/zh_CN.json index 39558914ff1..10e14fc4870 100644 --- a/apps/dav/l10n/zh_CN.json +++ b/apps/dav/l10n/zh_CN.json @@ -304,6 +304,19 @@ "Send reminder notifications to calendar sharees as well" : "同时向日历共享者发送提醒通知", "Reminders are always sent to organizers and attendees." : "始终向组织者和与会者发出提醒。", "Enable notifications for events via push" : "启用推送事件通知", + "Cancel" : "取消", + "Import" : "导入", + "Error while saving settings" : "保存设置时出错", + "Contact reset successfully" : "联系人重置成功", + "Error while resetting contact" : "重置联系人时出错", + "Contact imported successfully" : "联系人导入成功", + "Error while importing contact" : "导入联系人时出错", + "Example Content" : "示例内容", + "Set example content to be created on new user first login." : "设置新用户首次登录时要创建的示例内容。", + "Import contact" : "导入联系人", + "Reset to default contact" : "重置为默认联系人", + "Import contacts" : "导入联系人", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "导入新的 .vcf 文件将删除现有的默认联系人,并用新联系人替换。是否要继续?", "There was an error updating your attendance status." : "更新您的出席状态时出错。", "Please contact the organizer directly." : "请直接联系组织者。", "Are you accepting the invitation?" : "您是否接受邀请?", diff --git a/apps/dav/l10n/zh_HK.js b/apps/dav/l10n/zh_HK.js index 71c9a633c97..7acd613e17f 100644 --- a/apps/dav/l10n/zh_HK.js +++ b/apps/dav/l10n/zh_HK.js @@ -306,6 +306,19 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "也向共享日曆者傳送提醒通告", "Reminders are always sent to organizers and attendees." : "一律傳送提醒通知給舉辦者與參與者。", "Enable notifications for events via push" : "啟用推送活動通知", + "Cancel" : "取消", + "Import" : "導入", + "Error while saving settings" : "儲存設定時發生錯誤", + "Contact reset successfully" : "聯絡人重設成功", + "Error while resetting contact" : "重設聯絡人時發生錯誤", + "Contact imported successfully" : "成功導入了聯絡人", + "Error while importing contact" : "導入聯絡人時發生錯誤", + "Example Content" : "範例內容", + "Set example content to be created on new user first login." : "設定新用戶首次登入時所建立的範例內容。", + "Import contact" : "導入聯絡人", + "Reset to default contact" : "重設為默認聯絡人", + "Import contacts" : "導入聯絡人", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "導入新的 .vcf 檔案將刪除現有的默認聯絡人並將其替換為新的聯絡人。您想繼續嗎?", "There was an error updating your attendance status." : "更新您的參與狀況時發生錯誤", "Please contact the organizer directly." : "請直接聯繫絡主辦人", "Are you accepting the invitation?" : "接受邀請嗎?", diff --git a/apps/dav/l10n/zh_HK.json b/apps/dav/l10n/zh_HK.json index b1e5bafeb24..32b7afce5f8 100644 --- a/apps/dav/l10n/zh_HK.json +++ b/apps/dav/l10n/zh_HK.json @@ -304,6 +304,19 @@ "Send reminder notifications to calendar sharees as well" : "也向共享日曆者傳送提醒通告", "Reminders are always sent to organizers and attendees." : "一律傳送提醒通知給舉辦者與參與者。", "Enable notifications for events via push" : "啟用推送活動通知", + "Cancel" : "取消", + "Import" : "導入", + "Error while saving settings" : "儲存設定時發生錯誤", + "Contact reset successfully" : "聯絡人重設成功", + "Error while resetting contact" : "重設聯絡人時發生錯誤", + "Contact imported successfully" : "成功導入了聯絡人", + "Error while importing contact" : "導入聯絡人時發生錯誤", + "Example Content" : "範例內容", + "Set example content to be created on new user first login." : "設定新用戶首次登入時所建立的範例內容。", + "Import contact" : "導入聯絡人", + "Reset to default contact" : "重設為默認聯絡人", + "Import contacts" : "導入聯絡人", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "導入新的 .vcf 檔案將刪除現有的默認聯絡人並將其替換為新的聯絡人。您想繼續嗎?", "There was an error updating your attendance status." : "更新您的參與狀況時發生錯誤", "Please contact the organizer directly." : "請直接聯繫絡主辦人", "Are you accepting the invitation?" : "接受邀請嗎?", diff --git a/apps/dav/l10n/zh_TW.js b/apps/dav/l10n/zh_TW.js index 328ea586526..e1e5f759f12 100644 --- a/apps/dav/l10n/zh_TW.js +++ b/apps/dav/l10n/zh_TW.js @@ -306,6 +306,19 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "也向共享行事曆傳送提醒通知", "Reminders are always sent to organizers and attendees." : "一律傳送提醒給主辦者與參與者。", "Enable notifications for events via push" : "啟用行程通知推播", + "Cancel" : "取消", + "Import" : "匯入", + "Error while saving settings" : "儲存設定時發生錯誤", + "Contact reset successfully" : "成功重設聯絡人", + "Error while resetting contact" : "重設聯絡人時發生錯誤", + "Contact imported successfully" : "成功匯入聯絡人", + "Error while importing contact" : "匯入聯絡人時發生錯誤", + "Example Content" : "範例內容", + "Set example content to be created on new user first login." : "設定新使用者首次登入時要建立的範例內容。", + "Import contact" : "匯入聯絡人", + "Reset to default contact" : "重設回預設聯絡人", + "Import contacts" : "匯入聯絡人", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "匯入新的 .vcf 檔案將會刪除現有的預設聯絡人並將其取代為新的聯絡人。您想要繼續嗎?", "There was an error updating your attendance status." : "更新您的參與狀態時發生錯誤。", "Please contact the organizer directly." : "請直接聯絡主辦者。", "Are you accepting the invitation?" : "您要接受邀請嗎?", diff --git a/apps/dav/l10n/zh_TW.json b/apps/dav/l10n/zh_TW.json index 8c2822f25f4..0e2bd2af98f 100644 --- a/apps/dav/l10n/zh_TW.json +++ b/apps/dav/l10n/zh_TW.json @@ -304,6 +304,19 @@ "Send reminder notifications to calendar sharees as well" : "也向共享行事曆傳送提醒通知", "Reminders are always sent to organizers and attendees." : "一律傳送提醒給主辦者與參與者。", "Enable notifications for events via push" : "啟用行程通知推播", + "Cancel" : "取消", + "Import" : "匯入", + "Error while saving settings" : "儲存設定時發生錯誤", + "Contact reset successfully" : "成功重設聯絡人", + "Error while resetting contact" : "重設聯絡人時發生錯誤", + "Contact imported successfully" : "成功匯入聯絡人", + "Error while importing contact" : "匯入聯絡人時發生錯誤", + "Example Content" : "範例內容", + "Set example content to be created on new user first login." : "設定新使用者首次登入時要建立的範例內容。", + "Import contact" : "匯入聯絡人", + "Reset to default contact" : "重設回預設聯絡人", + "Import contacts" : "匯入聯絡人", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "匯入新的 .vcf 檔案將會刪除現有的預設聯絡人並將其取代為新的聯絡人。您想要繼續嗎?", "There was an error updating your attendance status." : "更新您的參與狀態時發生錯誤。", "Please contact the organizer directly." : "請直接聯絡主辦者。", "Are you accepting the invitation?" : "您要接受邀請嗎?", diff --git a/apps/dav/lib/Controller/ExampleContentController.php b/apps/dav/lib/Controller/ExampleContentController.php new file mode 100644 index 00000000000..9146eeb639d --- /dev/null +++ b/apps/dav/lib/Controller/ExampleContentController.php @@ -0,0 +1,86 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OCA\DAV\Controller; + +use OCA\DAV\AppInfo\Application; +use OCP\App\IAppManager; +use OCP\AppFramework\ApiController; +use OCP\AppFramework\Http; +use OCP\AppFramework\Http\JSONResponse; +use OCP\Files\AppData\IAppDataFactory; +use OCP\Files\IAppData; +use OCP\Files\NotFoundException; +use OCP\IConfig; +use OCP\IRequest; +use Psr\Log\LoggerInterface; + +class ExampleContentController extends ApiController { + private IAppData $appData; + public function __construct( + IRequest $request, + private IConfig $config, + private IAppDataFactory $appDataFactory, + private IAppManager $appManager, + private LoggerInterface $logger, + ) { + parent::__construct(Application::APP_ID, $request); + $this->appData = $this->appDataFactory->get('dav'); + } + + public function setEnableDefaultContact($allow) { + if ($allow === 'yes' && !$this->defaultContactExists()) { + try { + $this->setCard(); + } catch (\Exception $e) { + $this->logger->error('Could not create default contact', ['exception' => $e]); + return new JSONResponse([], Http::STATUS_INTERNAL_SERVER_ERROR); + } + } + $this->config->setAppValue(Application::APP_ID, 'enableDefaultContact', $allow); + return new JSONResponse([], Http::STATUS_OK); + } + + public function setDefaultContact(?string $contactData = null) { + if (!$this->config->getAppValue(Application::APP_ID, 'enableDefaultContact', 'no')) { + return new JSONResponse([], Http::STATUS_FORBIDDEN); + } + $this->setCard($contactData); + return new JSONResponse([], Http::STATUS_OK); + } + + private function setCard(?string $cardData = null) { + try { + $folder = $this->appData->getFolder('defaultContact'); + } catch (NotFoundException $e) { + $folder = $this->appData->newFolder('defaultContact'); + } + + if (is_null($cardData)) { + $cardData = file_get_contents(__DIR__ . '/../ExampleContentFiles/exampleContact.vcf'); + } + + if (!$cardData) { + throw new \Exception('Could not read exampleContact.vcf'); + } + + $file = (!$folder->fileExists('defaultContact.vcf')) ? $folder->newFile('defaultContact.vcf') : $folder->getFile('defaultContact.vcf'); + $file->putContent($cardData); + } + + private function defaultContactExists(): bool { + try { + $folder = $this->appData->getFolder('defaultContact'); + } catch (NotFoundException $e) { + return false; + } + return $folder->fileExists('defaultContact.vcf'); + } + +} diff --git a/apps/dav/lib/ExampleContentFiles/exampleContact.vcf b/apps/dav/lib/ExampleContentFiles/exampleContact.vcf new file mode 100644 index 00000000000..c58c949d0db --- /dev/null +++ b/apps/dav/lib/ExampleContentFiles/exampleContact.vcf @@ -0,0 +1,3555 @@ +BEGIN:VCARD +VERSION:3.0 +PRODID:-//Sabre//Sabre VObject 4.5.6//EN +UID:cffff367-4580-4e01-8b6d-f91e95ce7e92 +FN:Leon Green +ADR;TYPE=HOME:;;123 Street Street;City;State;;Country +EMAIL;TYPE=HOME:leon@example.com +TEL;TYPE=HOME,VOICE:+999999999999 +PHOTO;ENCODING=b;TYPE=PNG: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 + ORK5CYII= +PHOTO;VALUE=URI: +PHOTO;VALUE=URI: +TITLE:Manager +ORG:Company +BDAY;VALUE=DATE:20000101 +URL;VALUE=URI:www.nextcloud.com +REV;VALUE=DATE-AND-OR-TIME:20250108T160752Z +END:VCARD diff --git a/apps/dav/lib/Listener/UserEventsListener.php b/apps/dav/lib/Listener/UserEventsListener.php index 8f3997a51ef..d7ca9f3fdaa 100644 --- a/apps/dav/lib/Listener/UserEventsListener.php +++ b/apps/dav/lib/Listener/UserEventsListener.php @@ -12,6 +12,7 @@ namespace OCA\DAV\Listener; use OCA\DAV\CalDAV\CalDavBackend; use OCA\DAV\CardDAV\CardDavBackend; use OCA\DAV\CardDAV\SyncService; +use OCA\DAV\Service\DefaultContactService; use OCP\Defaults; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventListener; @@ -44,6 +45,7 @@ class UserEventsListener implements IEventListener { private CalDavBackend $calDav, private CardDavBackend $cardDav, private Defaults $themingDefaults, + private DefaultContactService $defaultContactService, ) { } @@ -139,14 +141,18 @@ class UserEventsListener implements IEventListener { Server::get(LoggerInterface::class)->error($e->getMessage(), ['exception' => $e]); } } + $addressBookId = null; if ($this->cardDav->getAddressBooksForUserCount($principal) === 0) { try { - $this->cardDav->createAddressBook($principal, CardDavBackend::PERSONAL_ADDRESSBOOK_URI, [ + $addressBookId = $this->cardDav->createAddressBook($principal, CardDavBackend::PERSONAL_ADDRESSBOOK_URI, [ '{DAV:}displayname' => CardDavBackend::PERSONAL_ADDRESSBOOK_NAME, ]); } catch (\Exception $e) { Server::get(LoggerInterface::class)->error($e->getMessage(), ['exception' => $e]); } } + if ($addressBookId) { + $this->defaultContactService->createDefaultContact($addressBookId); + } } } diff --git a/apps/dav/lib/Service/DefaultContactService.php b/apps/dav/lib/Service/DefaultContactService.php new file mode 100644 index 00000000000..193f3b285c6 --- /dev/null +++ b/apps/dav/lib/Service/DefaultContactService.php @@ -0,0 +1,70 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OCA\DAV\Service; + +use OCA\DAV\CardDAV\CardDavBackend; +use OCP\App\IAppManager; +use OCP\Files\AppData\IAppDataFactory; +use Psr\Log\LoggerInterface; +use Symfony\Component\Uid\Uuid; + +class DefaultContactService { + public function __construct( + private CardDavBackend $cardDav, + private IAppManager $appManager, + private IAppDataFactory $appDataFactory, + private LoggerInterface $logger, + ) { + } + + public function createDefaultContact(int $addressBookId): void { + $appData = $this->appDataFactory->get('dav'); + try { + $folder = $appData->getFolder('defaultContact'); + $defaultContactFile = $folder->getFile('defaultContact.vcf'); + $data = $defaultContactFile->getContent(); + } catch (\Exception $e) { + $this->logger->error('Couldn\'t get default contact file', ['exception' => $e]); + return; + } + + // Make sure the UID is unique + $newUid = Uuid::v4()->toRfc4122(); + $newRev = date('Ymd\THis\Z'); + $vcard = \Sabre\VObject\Reader::read($data, \Sabre\VObject\Reader::OPTION_FORGIVING); + if ($vcard->UID) { + $vcard->UID->setValue($newUid); + } else { + $vcard->add('UID', $newUid); + } + if ($vcard->REV) { + $vcard->REV->setValue($newRev); + } else { + $vcard->add('REV', $newRev); + } + + // Level 3 means that the document is invalid + // https://sabre.io/vobject/vcard/#validating-vcard + $level3Warnings = array_filter($vcard->validate(), function ($warning) { + return $warning['level'] === 3; + }); + + if (!empty($level3Warnings)) { + $this->logger->error('Default contact is invalid', ['warnings' => $level3Warnings]); + return; + } + try { + $this->cardDav->createCard($addressBookId, 'default', $vcard->serialize(), false); + } catch (\Exception $e) { + $this->logger->error($e->getMessage(), ['exception' => $e]); + } + + } +} diff --git a/apps/dav/lib/Settings/ExampleContentSettings.php b/apps/dav/lib/Settings/ExampleContentSettings.php new file mode 100644 index 00000000000..f5607b6a31b --- /dev/null +++ b/apps/dav/lib/Settings/ExampleContentSettings.php @@ -0,0 +1,44 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\DAV\Settings; + +use OCA\DAV\AppInfo\Application; +use OCP\App\IAppManager; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\AppFramework\Services\IInitialState; +use OCP\IConfig; +use OCP\Settings\ISettings; + +class ExampleContentSettings implements ISettings { + + public function __construct( + private IConfig $config, + private IInitialState $initialState, + private IAppManager $appManager, + ) { + } + + public function getForm(): TemplateResponse { + $enableDefaultContact = $this->config->getAppValue(Application::APP_ID, 'enableDefaultContact', 'no'); + $this->initialState->provideInitialState('enableDefaultContact', $enableDefaultContact); + return new TemplateResponse(Application::APP_ID, 'settings-example-content'); + } + public function getSection(): ?string { + if (!$this->appManager->isEnabledForUser('contacts')) { + return null; + } + + return 'groupware'; + } + + public function getPriority(): int { + return 10; + } + +} diff --git a/apps/dav/lib/SystemTag/SystemTagPlugin.php b/apps/dav/lib/SystemTag/SystemTagPlugin.php index d70eff17ac1..4d4499c7559 100644 --- a/apps/dav/lib/SystemTag/SystemTagPlugin.php +++ b/apps/dav/lib/SystemTag/SystemTagPlugin.php @@ -11,6 +11,8 @@ use OCA\DAV\Connector\Sabre\Directory; use OCA\DAV\Connector\Sabre\FilesPlugin; use OCA\DAV\Connector\Sabre\Node; use OCP\AppFramework\Http; +use OCP\Constants; +use OCP\Files\IRootFolder; use OCP\IGroupManager; use OCP\IUser; use OCP\IUserSession; @@ -68,7 +70,8 @@ class SystemTagPlugin extends \Sabre\DAV\ServerPlugin { protected ISystemTagManager $tagManager, protected IGroupManager $groupManager, protected IUserSession $userSession, - private ISystemTagObjectMapper $tagMapper, + protected IRootFolder $rootFolder, + protected ISystemTagObjectMapper $tagMapper, ) { } @@ -387,6 +390,11 @@ class SystemTagPlugin extends \Sabre\DAV\ServerPlugin { } if (isset($props[self::OBJECTIDS_PROPERTYNAME])) { + $user = $this->userSession->getUser(); + if (!$user) { + throw new Forbidden('You don’t have permissions to update tags'); + } + $propValue = $props[self::OBJECTIDS_PROPERTYNAME]; if (!$propValue instanceof SystemTagsObjectList || count($propValue->getObjects()) === 0) { throw new BadRequest('Invalid object-ids property'); @@ -399,10 +407,35 @@ class SystemTagPlugin extends \Sabre\DAV\ServerPlugin { throw new BadRequest('Invalid object-ids property. All object types must be of the same type: ' . $node->getName()); } + // Only files are supported at the moment + // Also see SystemTagsRelationsCollection file + if ($objectTypes[0] !== 'files') { + throw new BadRequest('Invalid object-ids property type. Only files are supported'); + } + + // Get all current tagged objects + $taggedObjects = $this->tagMapper->getObjectIdsForTags([$node->getSystemTag()->getId()], 'files'); + $toAddObjects = array_map(fn ($value) => (string)$value, array_keys($objects)); + + // Compute the tags to add and remove + $addedObjects = array_values(array_diff($toAddObjects, $taggedObjects)); + $removedObjects = array_values(array_diff($taggedObjects, $toAddObjects)); + + // Check permissions for each object to be freshly tagged or untagged + if (!$this->canUpdateTagForFileIds(array_merge($addedObjects, $removedObjects))) { + throw new Forbidden('You don’t have permissions to update tags'); + } + $this->tagMapper->setObjectIdsForTag($node->getSystemTag()->getId(), $node->getName(), array_keys($objects)); } if ($props[self::OBJECTIDS_PROPERTYNAME] === null) { + // Check the user have permissions to remove the tag from all currently tagged objects + $taggedObjects = $this->tagMapper->getObjectIdsForTags([$node->getSystemTag()->getId()], 'files'); + if (!$this->canUpdateTagForFileIds($taggedObjects)) { + throw new Forbidden('You don’t have permissions to update tags'); + } + $this->tagMapper->setObjectIdsForTag($node->getSystemTag()->getId(), $node->getName(), []); } @@ -483,4 +516,24 @@ class SystemTagPlugin extends \Sabre\DAV\ServerPlugin { return true; }); } + + /** + * Check if the user can update the tag for the given file ids + * + * @param list<string> $fileIds + * @return bool + */ + private function canUpdateTagForFileIds(array $fileIds): bool { + $user = $this->userSession->getUser(); + $userFolder = $this->rootFolder->getUserFolder($user->getUID()); + foreach ($fileIds as $fileId) { + $nodes = $userFolder->getById((int)$fileId); + foreach ($nodes as $node) { + if (($node->getPermissions() & Constants::PERMISSION_UPDATE) === Constants::PERMISSION_UPDATE) { + return true; + } + } + } + return false; + } } diff --git a/apps/dav/lib/SystemTag/SystemTagsObjectList.php b/apps/dav/lib/SystemTag/SystemTagsObjectList.php index 0743b8d8130..5ccc924eb53 100644 --- a/apps/dav/lib/SystemTag/SystemTagsObjectList.php +++ b/apps/dav/lib/SystemTag/SystemTagsObjectList.php @@ -31,6 +31,11 @@ class SystemTagsObjectList implements XmlSerializable, XmlDeserializable { ) { } + /** + * Get the object ids and their types. + * + * @return array<string, string> + */ public function getObjects(): array { return $this->objects; } @@ -55,7 +60,7 @@ class SystemTagsObjectList implements XmlSerializable, XmlDeserializable { } } if ($id !== '' && $type !== '') { - $objects[$id] = $type; + $objects[(string)$id] = (string)$type; } } } diff --git a/apps/dav/lib/SystemTag/SystemTagsRelationsCollection.php b/apps/dav/lib/SystemTag/SystemTagsRelationsCollection.php index dc0f1bc5d36..0839a5bc995 100644 --- a/apps/dav/lib/SystemTag/SystemTagsRelationsCollection.php +++ b/apps/dav/lib/SystemTag/SystemTagsRelationsCollection.php @@ -28,6 +28,8 @@ class SystemTagsRelationsCollection extends SimpleCollection { IRootFolder $rootFolder, ) { $children = [ + // Only files are supported at the moment + // Also see SystemTagPlugin::OBJECTIDS_PROPERTYNAME supported types new SystemTagsObjectTypeCollection( 'files', $tagManager, diff --git a/apps/dav/src/settings-example-content.js b/apps/dav/src/settings-example-content.js new file mode 100644 index 00000000000..f1374027bf3 --- /dev/null +++ b/apps/dav/src/settings-example-content.js @@ -0,0 +1,13 @@ +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +import Vue from 'vue' +import { translate } from '@nextcloud/l10n' +import ExampleContactSettings from './views/ExampleContactSettings.vue' + +Vue.prototype.$t = translate + +const View = Vue.extend(ExampleContactSettings); + +(new View({})).$mount('#settings-example-content') diff --git a/apps/dav/src/views/ExampleContactSettings.vue b/apps/dav/src/views/ExampleContactSettings.vue new file mode 100644 index 00000000000..d4d1c7d31d0 --- /dev/null +++ b/apps/dav/src/views/ExampleContactSettings.vue @@ -0,0 +1,160 @@ +<!-- + - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + - SPDX-License-Identifier: AGPL-3.0-or-later +--> + +<template> + <NcSettingsSection id="exmaple-content" + :name="$t('dav', 'Example Content')" + class="example-content-setting" + :description="$t('dav', 'Set example content to be created on new user first login.')"> + <div class="example-content-setting__contacts"> + <input id="enable-default-contact" + v-model="enableDefaultContact" + type="checkbox" + class="checkbox" + @change="updateEnableDefaultContact"> + <label for="enable-default-contact"> {{ $t('dav',"Default contact is added to the user's own address book on user's first login.") }} </label> + <div v-if="enableDefaultContact" class="example-content-setting__contacts__buttons"> + <NcButton type="primary" + class="example-content-setting__contacts__buttons__button" + @click="toggleModal"> + <template #icon> + <IconUpload :size="20" /> + </template> + {{ $t('dav', 'Import contact') }} + </NcButton> + <NcButton type="secondary" + class="example-content-setting__contacts__buttons__button" + @click="resetContact"> + <template #icon> + <IconRestore :size="20" /> + </template> + {{ $t('dav', 'Reset to default contact') }} + </NcButton> + </div> + </div> + <NcDialog :open.sync="isModalOpen" + :name="$t('dav', 'Import contacts')" + :buttons="buttons"> + <div> + <p>{{ $t('dav', 'Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?') }}</p> + </div> + </NcDialog> + <input id="example-contact-import" + ref="exampleContactImportInput" + :disabled="loading" + type="file" + accept=".vcf" + class="hidden-visually" + @change="processFile"> + </NcSettingsSection> +</template> +<script> +import axios from '@nextcloud/axios' +import { generateUrl } from '@nextcloud/router' +import { loadState } from '@nextcloud/initial-state' +import { NcDialog, NcButton, NcSettingsSection } from '@nextcloud/vue' +import { showError, showSuccess } from '@nextcloud/dialogs' +import IconUpload from 'vue-material-design-icons/Upload.vue' +import IconRestore from 'vue-material-design-icons/Restore.vue' +import IconCancel from '@mdi/svg/svg/cancel.svg?raw' +import IconCheck from '@mdi/svg/svg/check.svg?raw' + +const enableDefaultContact = loadState('dav', 'enableDefaultContact') === 'yes' + +export default { + name: 'ExampleContactSettings', + components: { + NcDialog, + NcButton, + NcSettingsSection, + IconUpload, + IconRestore, + }, + data() { + return { + enableDefaultContact, + isModalOpen: false, + loading: false, + buttons: [ + { + label: this.$t('dav', 'Cancel'), + icon: IconCancel, + callback: () => { this.isModalOpen = false }, + }, + { + label: this.$t('dav', 'Import'), + type: 'primary', + icon: IconCheck, + callback: () => { this.clickImportInput() }, + }, + ], + } + }, + methods: { + updateEnableDefaultContact() { + axios.put(generateUrl('apps/dav/api/defaultcontact/config'), { + allow: this.enableDefaultContact ? 'yes' : 'no', + }).catch(() => { + this.enableDefaultContact = !this.enableDefaultContact + showError(this.$t('dav', 'Error while saving settings')) + }) + }, + toggleModal() { + this.isModalOpen = !this.isModalOpen + }, + clickImportInput() { + this.$refs.exampleContactImportInput.click() + }, + resetContact() { + this.loading = true + axios.put(generateUrl('/apps/dav/api/defaultcontact/contact')) + .then(() => { + showSuccess(this.$t('dav', 'Contact reset successfully')) + }) + .catch((error) => { + console.error('Error importing contact:', error) + showError(this.$t('dav', 'Error while resetting contact')) + }) + .finally(() => { + this.loading = false + }) + }, + processFile(event) { + this.loading = true + + const file = event.target.files[0] + const reader = new FileReader() + + reader.onload = async () => { + this.isModalOpen = false + try { + await axios.put(generateUrl('/apps/dav/api/defaultcontact/contact'), { contactData: reader.result }) + showSuccess(this.$t('dav', 'Contact imported successfully')) + } catch (error) { + console.error('Error importing contact:', error) + showError(this.$t('dav', 'Error while importing contact')) + } finally { + this.loading = false + event.target.value = '' + } + } + reader.readAsText(file) + }, + }, +} +</script> +<style lang="scss" scoped> +.example-content-setting{ + &__contacts{ + &__buttons{ + margin-top: 1rem; + display: flex; + &__button{ + margin-inline-end: 5px; + } + } + } +} +</style> diff --git a/apps/dav/templates/settings-example-content.php b/apps/dav/templates/settings-example-content.php new file mode 100644 index 00000000000..b2b051d745d --- /dev/null +++ b/apps/dav/templates/settings-example-content.php @@ -0,0 +1,11 @@ +<?php + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +script('dav', 'settings-example-content'); + +?> + +<div id="settings-example-content"></div> diff --git a/apps/dav/tests/unit/DAV/Listener/UserEventsListenerTest.php b/apps/dav/tests/unit/DAV/Listener/UserEventsListenerTest.php index ce91a2a7fa6..a0876d8e483 100644 --- a/apps/dav/tests/unit/DAV/Listener/UserEventsListenerTest.php +++ b/apps/dav/tests/unit/DAV/Listener/UserEventsListenerTest.php @@ -14,6 +14,7 @@ use OCA\DAV\CalDAV\CalDavBackend; use OCA\DAV\CardDAV\CardDavBackend; use OCA\DAV\CardDAV\SyncService; use OCA\DAV\Listener\UserEventsListener; +use OCA\DAV\Service\DefaultContactService; use OCP\Defaults; use OCP\IUser; use OCP\IUserManager; @@ -27,6 +28,8 @@ class UserEventsListenerTest extends TestCase { private CardDavBackend&MockObject $cardDavBackend; private Defaults&MockObject $defaults; + private DefaultContactService&MockObject $defaultContactService; + private UserEventsListener $userEventsListener; protected function setUp(): void { @@ -36,12 +39,14 @@ class UserEventsListenerTest extends TestCase { $this->calDavBackend = $this->createMock(CalDavBackend::class); $this->cardDavBackend = $this->createMock(CardDavBackend::class); $this->defaults = $this->createMock(Defaults::class); + $this->defaultContactService = $this->createMock(DefaultContactService::class); $this->userEventsListener = new UserEventsListener( $this->userManager, $this->syncService, $this->calDavBackend, $this->cardDavBackend, $this->defaults, + $this->defaultContactService, ); } diff --git a/apps/dav/tests/unit/Service/DefaultContactServiceTest.php b/apps/dav/tests/unit/Service/DefaultContactServiceTest.php new file mode 100644 index 00000000000..9540e77ce6c --- /dev/null +++ b/apps/dav/tests/unit/Service/DefaultContactServiceTest.php @@ -0,0 +1,148 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OCA\DAV\Tests\Unit\Service; + +use OCA\DAV\CardDAV\CardDavBackend; +use OCA\DAV\Service\DefaultContactService; +use OCP\App\IAppManager; +use OCP\Files\AppData\IAppDataFactory; +use OCP\Files\IAppData; +use OCP\Files\NotFoundException; +use OCP\Files\SimpleFS\ISimpleFile; +use OCP\Files\SimpleFS\ISimpleFolder; +use PHPUnit\Framework\MockObject\MockObject; +use Psr\Log\LoggerInterface; +use Symfony\Component\Uid\Uuid; +use Test\TestCase; + +class DefaultContactServiceTest extends TestCase { + private DefaultContactService $service; + private MockObject|CardDavBackend $cardDav; + private MockObject|IAppManager $appManager; + private MockObject|IAppDataFactory $appDataFactory; + private MockObject|LoggerInterface $logger; + + protected function setUp(): void { + parent::setUp(); + + $this->cardDav = $this->createMock(CardDavBackend::class); + $this->appManager = $this->createMock(IAppManager::class); + $this->appDataFactory = $this->createMock(IAppDataFactory::class); + $this->logger = $this->createMock(LoggerInterface::class); + + $this->service = new DefaultContactService( + $this->cardDav, + $this->appManager, + $this->appDataFactory, + $this->logger + ); + } + + public function testCreateDefaultContactWithInvalidCard(): void { + // Invalid vCard missing required FN property + $vcardContent = "BEGIN:VCARD\nVERSION:3.0\nEND:VCARD"; + + $appData = $this->createMock(IAppData::class); + $folder = $this->createMock(ISimpleFolder::class); + $file = $this->createMock(ISimpleFile::class); + $file->method('getContent')->willReturn($vcardContent); + $folder->method('getFile')->willReturn($file); + $appData->method('getFolder')->willReturn($folder); + $this->appDataFactory->method('get')->willReturn($appData); + + $this->logger->expects($this->once()) + ->method('error') + ->with('Default contact is invalid', $this->anything()); + + $this->cardDav->expects($this->never()) + ->method('createCard'); + + $this->service->createDefaultContact(123); + } + + public function testUidAndRevAreUpdated(): void { + $originalUid = 'original-uid'; + $originalRev = '20200101T000000Z'; + $vcardContent = "BEGIN:VCARD\nVERSION:3.0\nFN:Test User\nUID:$originalUid\nREV:$originalRev\nEND:VCARD"; + + $appData = $this->createMock(IAppData::class); + $folder = $this->createMock(ISimpleFolder::class); + $file = $this->createMock(ISimpleFile::class); + $file->method('getContent')->willReturn($vcardContent); + $folder->method('getFile')->willReturn($file); + $appData->method('getFolder')->willReturn($folder); + $this->appDataFactory->method('get')->willReturn($appData); + + $capturedCardData = null; + $this->cardDav->expects($this->once()) + ->method('createCard') + ->with( + $this->anything(), + $this->anything(), + $this->callback(function ($cardData) use (&$capturedCardData) { + $capturedCardData = $cardData; + return true; + }), + $this->anything() + )->willReturn(null); + + $this->service->createDefaultContact(123); + + $vcard = \Sabre\VObject\Reader::read($capturedCardData); + $this->assertNotEquals($originalUid, $vcard->UID->getValue()); + $this->assertTrue(Uuid::isValid($vcard->UID->getValue())); + $this->assertNotEquals($originalRev, $vcard->REV->getValue()); + } + + public function testDefaultContactFileDoesNotExist(): void { + $appData = $this->createMock(IAppData::class); + $appData->method('getFolder')->willThrowException(new NotFoundException()); + $this->appDataFactory->method('get')->willReturn($appData); + + $this->cardDav->expects($this->never()) + ->method('createCard'); + + $this->service->createDefaultContact(123); + } + + public function testUidAndRevAreAddedIfMissing(): void { + $vcardContent = "BEGIN:VCARD\nVERSION:3.0\nFN:Test User\nEND:VCARD"; + + $appData = $this->createMock(IAppData::class); + $folder = $this->createMock(ISimpleFolder::class); + $file = $this->createMock(ISimpleFile::class); + $file->method('getContent')->willReturn($vcardContent); + $folder->method('getFile')->willReturn($file); + $appData->method('getFolder')->willReturn($folder); + $this->appDataFactory->method('get')->willReturn($appData); + + $capturedCardData = 'new-card-data'; + + $this->cardDav + ->expects($this->once()) + ->method('createCard') + ->with( + $this->anything(), + $this->anything(), + $this->callback(function ($cardData) use (&$capturedCardData) { + $capturedCardData = $cardData; + return true; + }), + $this->anything() + ); + + $this->service->createDefaultContact(123); + $vcard = \Sabre\VObject\Reader::read($capturedCardData); + + $this->assertNotNull($vcard->REV); + $this->assertNotNull($vcard->UID); + $this->assertTrue(Uuid::isValid($vcard->UID->getValue())); + } +} diff --git a/apps/dav/tests/unit/SystemTag/SystemTagPluginTest.php b/apps/dav/tests/unit/SystemTag/SystemTagPluginTest.php index e1517eec425..ab5253147a7 100644 --- a/apps/dav/tests/unit/SystemTag/SystemTagPluginTest.php +++ b/apps/dav/tests/unit/SystemTag/SystemTagPluginTest.php @@ -12,6 +12,7 @@ use OCA\DAV\SystemTag\SystemTagNode; use OCA\DAV\SystemTag\SystemTagPlugin; use OCA\DAV\SystemTag\SystemTagsByIdCollection; use OCA\DAV\SystemTag\SystemTagsObjectMappingCollection; +use OCP\Files\IRootFolder; use OCP\IGroupManager; use OCP\IUser; use OCP\IUserSession; @@ -57,6 +58,11 @@ class SystemTagPluginTest extends \Test\TestCase { private $userSession; /** + * @var IRootFolder + */ + private $rootFolder; + + /** * @var IUser */ private $user; @@ -95,13 +101,17 @@ class SystemTagPluginTest extends \Test\TestCase { ->expects($this->any()) ->method('isLoggedIn') ->willReturn(true); + $this->tagMapper = $this->getMockBuilder(ISystemTagObjectMapper::class) ->getMock(); + $this->rootFolder = $this->getMockBuilder(IRootFolder::class) + ->getMock(); $this->plugin = new SystemTagPlugin( $this->tagManager, $this->groupManager, $this->userSession, + $this->rootFolder, $this->tagMapper ); $this->plugin->initialize($this->server); diff --git a/apps/encryption/l10n/et_EE.js b/apps/encryption/l10n/et_EE.js index 65ffc3cc969..1dd886792e6 100644 --- a/apps/encryption/l10n/et_EE.js +++ b/apps/encryption/l10n/et_EE.js @@ -8,9 +8,9 @@ OC.L10N.register( "Could not enable recovery key. Please check your recovery key password!" : "Ei suutnud lubada taastevõtit. Palun kontrolli oma taastevõtme parooli!", "Recovery key successfully disabled" : "Taastevõtme keelamine õnnestus", "Could not disable recovery key. Please check your recovery key password!" : "Ei suuda keelata taastevõtit. Palun kontrolli oma taastevõtme parooli!", - "Missing parameters" : "Paramttrid puuduvad", - "Please provide the old recovery password" : "Palun sisesta vana taastevõtme parool", - "Please provide a new recovery password" : "Palun sisesta uus taastevõtme parool", + "Missing parameters" : "Parameetrid puuduvad", + "Please provide the old recovery password" : "Palun sisesta vana taastevõtme salasõna", + "Please provide a new recovery password" : "Palun sisesta uus taastevõtme salasõna", "Please repeat the new recovery password" : "Palun korda uut taastevõtme parooli", "Password successfully changed." : "Parool edukalt vahetatud.", "Could not change the password. Maybe the old password was not correct." : "Ei suutnud vahetada parooli. Võib-olla on vana parool valesti sisestatud.", @@ -22,6 +22,9 @@ OC.L10N.register( "Private key password successfully updated." : "Privaatse võtme parool edukalt uuendatud.", "Bad Signature" : "Vigane allkiri", "Missing Signature" : "Allkiri puudub", + "Encryption password" : "Krüptimise salasõna", + "The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>." : "Serveri peakasutaja lülitas sisse serveripoolse krüptimise. Sinu failid on krüptitud salasõnaga <strong>%s</strong>.", + "The administration enabled server-side-encryption. Your files were encrypted using the password \"%s\"." : "Serveri peakasutaja lülitas sisse serveripoolse krüptimise. Sinu failid on krüptitud salasõnaga „%s“.", "Enable recovery key" : "Luba taastevõtme kasutamine", "Disable recovery key" : "Keela taastevõtme kasutamine", "Recovery key password" : "Taastevõtme parool", @@ -39,6 +42,6 @@ OC.L10N.register( "Enable password recovery:" : "Luba parooli taaste:", "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Valiku lubamine võimaldab taastada ligipääsu krüpteeritud failidele kui parooli kaotuse puhul", "Enabled" : "Sisse lülitatud", - "Disabled" : "Väljalülitatud" + "Disabled" : "Välja lülitatud" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/encryption/l10n/et_EE.json b/apps/encryption/l10n/et_EE.json index 4febbb40ef4..1f1cad621d0 100644 --- a/apps/encryption/l10n/et_EE.json +++ b/apps/encryption/l10n/et_EE.json @@ -6,9 +6,9 @@ "Could not enable recovery key. Please check your recovery key password!" : "Ei suutnud lubada taastevõtit. Palun kontrolli oma taastevõtme parooli!", "Recovery key successfully disabled" : "Taastevõtme keelamine õnnestus", "Could not disable recovery key. Please check your recovery key password!" : "Ei suuda keelata taastevõtit. Palun kontrolli oma taastevõtme parooli!", - "Missing parameters" : "Paramttrid puuduvad", - "Please provide the old recovery password" : "Palun sisesta vana taastevõtme parool", - "Please provide a new recovery password" : "Palun sisesta uus taastevõtme parool", + "Missing parameters" : "Parameetrid puuduvad", + "Please provide the old recovery password" : "Palun sisesta vana taastevõtme salasõna", + "Please provide a new recovery password" : "Palun sisesta uus taastevõtme salasõna", "Please repeat the new recovery password" : "Palun korda uut taastevõtme parooli", "Password successfully changed." : "Parool edukalt vahetatud.", "Could not change the password. Maybe the old password was not correct." : "Ei suutnud vahetada parooli. Võib-olla on vana parool valesti sisestatud.", @@ -20,6 +20,9 @@ "Private key password successfully updated." : "Privaatse võtme parool edukalt uuendatud.", "Bad Signature" : "Vigane allkiri", "Missing Signature" : "Allkiri puudub", + "Encryption password" : "Krüptimise salasõna", + "The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>." : "Serveri peakasutaja lülitas sisse serveripoolse krüptimise. Sinu failid on krüptitud salasõnaga <strong>%s</strong>.", + "The administration enabled server-side-encryption. Your files were encrypted using the password \"%s\"." : "Serveri peakasutaja lülitas sisse serveripoolse krüptimise. Sinu failid on krüptitud salasõnaga „%s“.", "Enable recovery key" : "Luba taastevõtme kasutamine", "Disable recovery key" : "Keela taastevõtme kasutamine", "Recovery key password" : "Taastevõtme parool", @@ -37,6 +40,6 @@ "Enable password recovery:" : "Luba parooli taaste:", "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Valiku lubamine võimaldab taastada ligipääsu krüpteeritud failidele kui parooli kaotuse puhul", "Enabled" : "Sisse lülitatud", - "Disabled" : "Väljalülitatud" + "Disabled" : "Välja lülitatud" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/encryption/l10n/pt_BR.js b/apps/encryption/l10n/pt_BR.js index a88c5adca27..a53a5cf461a 100644 --- a/apps/encryption/l10n/pt_BR.js +++ b/apps/encryption/l10n/pt_BR.js @@ -53,6 +53,7 @@ OC.L10N.register( "Basic encryption module" : "Módulo de criptografia básico", "Your private key password no longer matches your log-in password." : "A sua senha de chave privada não corresponde a sua senha de login.", "Set your old private key password to your current log-in password:" : "Defina a sua senha antiga da chave privada para sua senha de login atual:", + "If you do not remember your old password you can ask your administrator to recover your files." : "Se não se lembrar da senha antiga, peça ao administrador para recuperar seus arquivos.", "Old log-in password" : "Senha antiga de login", "Current log-in password" : "Senha atual de login", "Update Private Key Password" : "Atualizar senha da chave privada", diff --git a/apps/encryption/l10n/pt_BR.json b/apps/encryption/l10n/pt_BR.json index a490c17962e..06edec92aa1 100644 --- a/apps/encryption/l10n/pt_BR.json +++ b/apps/encryption/l10n/pt_BR.json @@ -51,6 +51,7 @@ "Basic encryption module" : "Módulo de criptografia básico", "Your private key password no longer matches your log-in password." : "A sua senha de chave privada não corresponde a sua senha de login.", "Set your old private key password to your current log-in password:" : "Defina a sua senha antiga da chave privada para sua senha de login atual:", + "If you do not remember your old password you can ask your administrator to recover your files." : "Se não se lembrar da senha antiga, peça ao administrador para recuperar seus arquivos.", "Old log-in password" : "Senha antiga de login", "Current log-in password" : "Senha atual de login", "Update Private Key Password" : "Atualizar senha da chave privada", diff --git a/apps/federatedfilesharing/l10n/ar.js b/apps/federatedfilesharing/l10n/ar.js index 98b29082869..9b8eb02ef8c 100644 --- a/apps/federatedfilesharing/l10n/ar.js +++ b/apps/federatedfilesharing/l10n/ar.js @@ -30,7 +30,7 @@ OC.L10N.register( "Confirm querying lookup server" : "تأكيد استعلام خادوم البحث", "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "عند تمكين هذا الخيار، سيتم إرسال إدخال البحث عند إنشاء المشاركات إلى نظام خارجي يوفر دفتر عناوين شامل وعمومي.", "This is used to retrieve the federated cloud ID to make federated sharing easier." : "يستعمل هذا لاسترجاع معرف السحابة الاتحادية وذلك لتسهيل المشاركات الاتحادية", - "Moreover email addresses of users might be sent to that system in order to verify it." : "علاوة على ذلك، قد يتم إرسال عناوين بريد المستخدِمين الإلكترونية إلى هذا النظام للتحقق منها.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "علاوة على ذلك، قد يتم إرسال عناوين البريد الإلكتروني للمستخدِمين إلى ذلك النظام للتحقق منها.", "Disable querying" : "تعطيل الاستعلام", "Enable querying" : "تمكين الاستعلام", "Unable to update federated files sharing config" : "تعذر تحديث تهيئة مشاركة الملفات عبر السحابة الاتحادية", diff --git a/apps/federatedfilesharing/l10n/ar.json b/apps/federatedfilesharing/l10n/ar.json index 38b64da9244..aefd5552217 100644 --- a/apps/federatedfilesharing/l10n/ar.json +++ b/apps/federatedfilesharing/l10n/ar.json @@ -28,7 +28,7 @@ "Confirm querying lookup server" : "تأكيد استعلام خادوم البحث", "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "عند تمكين هذا الخيار، سيتم إرسال إدخال البحث عند إنشاء المشاركات إلى نظام خارجي يوفر دفتر عناوين شامل وعمومي.", "This is used to retrieve the federated cloud ID to make federated sharing easier." : "يستعمل هذا لاسترجاع معرف السحابة الاتحادية وذلك لتسهيل المشاركات الاتحادية", - "Moreover email addresses of users might be sent to that system in order to verify it." : "علاوة على ذلك، قد يتم إرسال عناوين بريد المستخدِمين الإلكترونية إلى هذا النظام للتحقق منها.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "علاوة على ذلك، قد يتم إرسال عناوين البريد الإلكتروني للمستخدِمين إلى ذلك النظام للتحقق منها.", "Disable querying" : "تعطيل الاستعلام", "Enable querying" : "تمكين الاستعلام", "Unable to update federated files sharing config" : "تعذر تحديث تهيئة مشاركة الملفات عبر السحابة الاتحادية", diff --git a/apps/federatedfilesharing/l10n/cs.js b/apps/federatedfilesharing/l10n/cs.js index cb7a6010646..799ae3c4170 100644 --- a/apps/federatedfilesharing/l10n/cs.js +++ b/apps/federatedfilesharing/l10n/cs.js @@ -30,7 +30,7 @@ OC.L10N.register( "Confirm querying lookup server" : "Potvrdit dotazování vyhledávacího serveru", "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Pokud zapnuto, obsah hledání při vytváření sdílení bude odeslán na externí systém, který poskytuje veřejný a globální adresář kontaktů.", "This is used to retrieve the federated cloud ID to make federated sharing easier." : "Toto slouží k získávání identifikátorů v rámci federovaného cloudu pro usnadnění federovaného sdílení.", - "Moreover email addresses of users might be sent to that system in order to verify it." : "Dále mohou být pro ověření odeslány na server e-mailové adresy uživatelů.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "Dále mohou být pro ověření odeslány na server e-mailové adresy uživatelů.", "Disable querying" : "Vypnout dotazování", "Enable querying" : "Zapnout dotazování", "Unable to update federated files sharing config" : "Nedaří se aktualizovat nastavení federovaného sdílení souborů", diff --git a/apps/federatedfilesharing/l10n/cs.json b/apps/federatedfilesharing/l10n/cs.json index 796612dc595..e64db4ec990 100644 --- a/apps/federatedfilesharing/l10n/cs.json +++ b/apps/federatedfilesharing/l10n/cs.json @@ -28,7 +28,7 @@ "Confirm querying lookup server" : "Potvrdit dotazování vyhledávacího serveru", "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Pokud zapnuto, obsah hledání při vytváření sdílení bude odeslán na externí systém, který poskytuje veřejný a globální adresář kontaktů.", "This is used to retrieve the federated cloud ID to make federated sharing easier." : "Toto slouží k získávání identifikátorů v rámci federovaného cloudu pro usnadnění federovaného sdílení.", - "Moreover email addresses of users might be sent to that system in order to verify it." : "Dále mohou být pro ověření odeslány na server e-mailové adresy uživatelů.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "Dále mohou být pro ověření odeslány na server e-mailové adresy uživatelů.", "Disable querying" : "Vypnout dotazování", "Enable querying" : "Zapnout dotazování", "Unable to update federated files sharing config" : "Nedaří se aktualizovat nastavení federovaného sdílení souborů", diff --git a/apps/federatedfilesharing/l10n/de.js b/apps/federatedfilesharing/l10n/de.js index 7dfaf506428..e4e485d90b3 100644 --- a/apps/federatedfilesharing/l10n/de.js +++ b/apps/federatedfilesharing/l10n/de.js @@ -3,37 +3,37 @@ OC.L10N.register( { "Invalid Federated Cloud ID" : "Ungültige Federated-Cloud-ID", "Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert", - "Couldn't establish a federated share." : "Federated-Share konnte nicht aufgebaut werden", - "Couldn't establish a federated share, maybe the password was wrong." : "Federated-Share konnte nicht aufgebaut werden, da eventuell das Passwort falsch ist.", - "Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Du erhältst eine Einladung. Bitte prüfe deine Benachrichtigungen. ", - "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Federated-Share konnte nicht aufgebaut werden, da der Zielserver eine zu alte Version verwendet (Nextcloud <=9).", + "Couldn't establish a federated share." : "Federierte Freigabe konnte nicht erstellt werden.", + "Couldn't establish a federated share, maybe the password was wrong." : "Federierte Freigabe konnte nicht erstellt werden, vielleicht ist das Passwort falsch.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage für die federierte Freigabe gesendet, du solltest eine Einladung erhalten. Bitte in Deinen Benachrichtigungen nachsehen. ", + "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Federierte Freigabe konnte nicht aufgebaut werden, da der Zielserver eine zu alte Version verwendet (Nextcloud <=9).", "It is not allowed to send federated group shares from this server." : "Das Erstellen einer Federated Cloud Freigabe ist von diesem Server aus nicht erlaubt.", "Sharing %1$s failed, because this item is already shared with the account %2$s" : "Freigeben von %1$s ist fehlgeschlagen, da dieses Element schon mit dem Konto %2$s geteilt wurde", - "Not allowed to create a federated share to the same account" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Konto ist nicht erlaubt", - "Federated shares require read permissions" : "Federated-Shares benötigen Leseberechtigungen", + "Not allowed to create a federated share to the same account" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem selben Konto ist uzulässig", + "Federated shares require read permissions" : "Federated-Freigaben benötigen Leseberechtigungen", "File is already shared with %s" : "Datei wird bereits mit %s geteilt", - "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Freigabe von %1$s fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar oder nutzt ein selbst zertifiziertes Zertifikat.", + "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Freigabe von %1$s fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar oder nutzt ein selbst-erstelltes Zertifikat.", "Could not find share" : "Freigabe konnte nicht gefunden werden", "Federated sharing" : "Federated-Sharing", "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Du hast {share} als externe Freigabe von {user} empfangen (im Auftrag von {behalf})", "You received {share} as a remote share from {user}" : "Du hast {share} als externe Freigabe von {user} empfangen", "Accept" : "Ok", "Decline" : "Abgelehnt", - "Federated Cloud Sharing" : "Federated-Cloud-Sharing", + "Federated Cloud Sharing" : "Federierte-Cloud-Freigabe", "Sharing" : "Teilen", - "Federated file sharing" : "Federated Datei-Freigabe", + "Federated file sharing" : "Federierte Datei-Freigabe", "Provide federated file sharing across servers" : "Bietet Federated Datei-Freigaben über Servergrenzen hinweg", - "Confirm data upload to lookup server" : "Datenupload zum Lookup-Server bestätigen", + "Confirm data upload to lookup server" : "Hochladen der Daten zum Lookup-Server bestätigen", "When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Wenn diese Option aktiviert ist, werden alle Kontoeigenschaften (z. B. E-Mail-Adresse) mit der auf „veröffentlicht“ eingestellten Bereichssichtbarkeit automatisch synchronisiert und an ein externes System übertragen sowie in einem öffentlichen, globalen Adressbuch verfügbar gemacht.", "Disable upload" : "Hochladen deaktivieren", - "Enable data upload" : "Datenupload aktivieren", + "Enable data upload" : "Hochladen von Daten aktivieren", "Confirm querying lookup server" : "Abfrage des Lookup-Servers bestätigen", "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Wenn aktiviert, wird die Sucheingabe beim Erstellen von Freigaben an ein externes System gesendet, das ein öffentliches und globales Adressbuch bereitstellt.", "This is used to retrieve the federated cloud ID to make federated sharing easier." : "Dies wird verwendet, um die federierte Cloud-ID abzurufen und so die federierte Freigabe zu vereinfachen.", - "Moreover email addresses of users might be sent to that system in order to verify it." : "Darüber hinaus können E-Mail-Adressen von Benutzern zur Überprüfung an dieses System gesendet werden.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "Darüber hinaus können E-Mail-Adressen von Benutzern an dieses System gesendet werden, um sie zu überprüfen.", "Disable querying" : "Abfragen deaktivieren", "Enable querying" : "Abfragen aktivieren", - "Unable to update federated files sharing config" : "Einstellungen zum Federated-Teilen konnten nicht aktualisiert werden", + "Unable to update federated files sharing config" : "Einstellungen zum federierten Teilen konnten nicht aktualisiert werden", "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Legt fest, wie Personen zwischen Servern teilen können. Dies gilt auch für Freigaben zwischen Personen auf diesem Server, wenn sie Federated-Sharing verwenden.", "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Personen auf diesem Server das Senden von Freigaben an andere Server erlauben (Diese Option ermöglicht auch den WebDAV-Zugriff auf öffentliche Freigaben)", "Allow people on this server to receive shares from other servers" : "Ermögliche es Personen auf diesem Server, Freigaben von anderen Servern zu erhalten", @@ -43,7 +43,7 @@ OC.L10N.register( "Search global and public address book for people" : "Durchsuche globales und öffentliches Adressbuch nach Personen", "Allow people to publish their data to a global and public address book" : "Erlaube es Personen, ihre Daten in einem globalen und öffentlichen Adressbuch zu veröffentlichen", "Trusted federation" : "Vertrauenswürdige Federation", - "Automatically accept shares from trusted federated accounts and groups by default" : "Freigaben von vertrauenswürdigen Federation-Konten und -gruppen standardmäßig automatisch akzeptieren", + "Automatically accept shares from trusted federated accounts and groups by default" : "Freigaben von vertrauenswürdigen Federations-Konten und -Gruppen standardmäßig automatisch akzeptieren", "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Teile mit mir über meine #Nextcloud Federated-Cloud-ID, siehe {url}", "Share with me through my #Nextcloud Federated Cloud ID" : "Teile mit mir über meine #Nextcloud Federated-Cloud-ID", "Cloud ID copied to the clipboard" : "Cloud-ID in die Zwischenablage kopiert", @@ -53,7 +53,7 @@ OC.L10N.register( "Federated Cloud" : "Federated 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" : "Du kannst mit jedem teilen, der einen Nextcloud-Server oder andere Open Cloud Mesh (OCM) kompatible Server und Dienste verwendet! Gib einfach deren Federated-Cloud-ID in den Teilen-Dialog ein. Diese sieht wie folgt aus: person@cloud.example.com", "Your Federated Cloud ID" : "Deine Federated-Cloud-ID", - "Share it so your friends can share files with you:" : "Teile es, so dass deine Freunde Dateien mit dir teilen können:", + "Share it so your friends can share files with you:" : "Teile es, damit deine Freunde Dateien mit dir teilen können:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (früher Twitter)", "formerly Twitter" : "früher Twitter", diff --git a/apps/federatedfilesharing/l10n/de.json b/apps/federatedfilesharing/l10n/de.json index 5bda9e3593b..d249e96977c 100644 --- a/apps/federatedfilesharing/l10n/de.json +++ b/apps/federatedfilesharing/l10n/de.json @@ -1,37 +1,37 @@ { "translations": { "Invalid Federated Cloud ID" : "Ungültige Federated-Cloud-ID", "Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert", - "Couldn't establish a federated share." : "Federated-Share konnte nicht aufgebaut werden", - "Couldn't establish a federated share, maybe the password was wrong." : "Federated-Share konnte nicht aufgebaut werden, da eventuell das Passwort falsch ist.", - "Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Du erhältst eine Einladung. Bitte prüfe deine Benachrichtigungen. ", - "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Federated-Share konnte nicht aufgebaut werden, da der Zielserver eine zu alte Version verwendet (Nextcloud <=9).", + "Couldn't establish a federated share." : "Federierte Freigabe konnte nicht erstellt werden.", + "Couldn't establish a federated share, maybe the password was wrong." : "Federierte Freigabe konnte nicht erstellt werden, vielleicht ist das Passwort falsch.", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage für die federierte Freigabe gesendet, du solltest eine Einladung erhalten. Bitte in Deinen Benachrichtigungen nachsehen. ", + "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Federierte Freigabe konnte nicht aufgebaut werden, da der Zielserver eine zu alte Version verwendet (Nextcloud <=9).", "It is not allowed to send federated group shares from this server." : "Das Erstellen einer Federated Cloud Freigabe ist von diesem Server aus nicht erlaubt.", "Sharing %1$s failed, because this item is already shared with the account %2$s" : "Freigeben von %1$s ist fehlgeschlagen, da dieses Element schon mit dem Konto %2$s geteilt wurde", - "Not allowed to create a federated share to the same account" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem gleichen Konto ist nicht erlaubt", - "Federated shares require read permissions" : "Federated-Shares benötigen Leseberechtigungen", + "Not allowed to create a federated share to the same account" : "Das Erstellen einer Federated-Cloud-Freigabe mit dem selben Konto ist uzulässig", + "Federated shares require read permissions" : "Federated-Freigaben benötigen Leseberechtigungen", "File is already shared with %s" : "Datei wird bereits mit %s geteilt", - "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Freigabe von %1$s fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar oder nutzt ein selbst zertifiziertes Zertifikat.", + "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Freigabe von %1$s fehlgeschlagen, da %2$s nicht gefunden wurde. Möglicherweise ist der Server nicht erreichbar oder nutzt ein selbst-erstelltes Zertifikat.", "Could not find share" : "Freigabe konnte nicht gefunden werden", "Federated sharing" : "Federated-Sharing", "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Du hast {share} als externe Freigabe von {user} empfangen (im Auftrag von {behalf})", "You received {share} as a remote share from {user}" : "Du hast {share} als externe Freigabe von {user} empfangen", "Accept" : "Ok", "Decline" : "Abgelehnt", - "Federated Cloud Sharing" : "Federated-Cloud-Sharing", + "Federated Cloud Sharing" : "Federierte-Cloud-Freigabe", "Sharing" : "Teilen", - "Federated file sharing" : "Federated Datei-Freigabe", + "Federated file sharing" : "Federierte Datei-Freigabe", "Provide federated file sharing across servers" : "Bietet Federated Datei-Freigaben über Servergrenzen hinweg", - "Confirm data upload to lookup server" : "Datenupload zum Lookup-Server bestätigen", + "Confirm data upload to lookup server" : "Hochladen der Daten zum Lookup-Server bestätigen", "When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Wenn diese Option aktiviert ist, werden alle Kontoeigenschaften (z. B. E-Mail-Adresse) mit der auf „veröffentlicht“ eingestellten Bereichssichtbarkeit automatisch synchronisiert und an ein externes System übertragen sowie in einem öffentlichen, globalen Adressbuch verfügbar gemacht.", "Disable upload" : "Hochladen deaktivieren", - "Enable data upload" : "Datenupload aktivieren", + "Enable data upload" : "Hochladen von Daten aktivieren", "Confirm querying lookup server" : "Abfrage des Lookup-Servers bestätigen", "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Wenn aktiviert, wird die Sucheingabe beim Erstellen von Freigaben an ein externes System gesendet, das ein öffentliches und globales Adressbuch bereitstellt.", "This is used to retrieve the federated cloud ID to make federated sharing easier." : "Dies wird verwendet, um die federierte Cloud-ID abzurufen und so die federierte Freigabe zu vereinfachen.", - "Moreover email addresses of users might be sent to that system in order to verify it." : "Darüber hinaus können E-Mail-Adressen von Benutzern zur Überprüfung an dieses System gesendet werden.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "Darüber hinaus können E-Mail-Adressen von Benutzern an dieses System gesendet werden, um sie zu überprüfen.", "Disable querying" : "Abfragen deaktivieren", "Enable querying" : "Abfragen aktivieren", - "Unable to update federated files sharing config" : "Einstellungen zum Federated-Teilen konnten nicht aktualisiert werden", + "Unable to update federated files sharing config" : "Einstellungen zum federierten Teilen konnten nicht aktualisiert werden", "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Legt fest, wie Personen zwischen Servern teilen können. Dies gilt auch für Freigaben zwischen Personen auf diesem Server, wenn sie Federated-Sharing verwenden.", "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Personen auf diesem Server das Senden von Freigaben an andere Server erlauben (Diese Option ermöglicht auch den WebDAV-Zugriff auf öffentliche Freigaben)", "Allow people on this server to receive shares from other servers" : "Ermögliche es Personen auf diesem Server, Freigaben von anderen Servern zu erhalten", @@ -41,7 +41,7 @@ "Search global and public address book for people" : "Durchsuche globales und öffentliches Adressbuch nach Personen", "Allow people to publish their data to a global and public address book" : "Erlaube es Personen, ihre Daten in einem globalen und öffentlichen Adressbuch zu veröffentlichen", "Trusted federation" : "Vertrauenswürdige Federation", - "Automatically accept shares from trusted federated accounts and groups by default" : "Freigaben von vertrauenswürdigen Federation-Konten und -gruppen standardmäßig automatisch akzeptieren", + "Automatically accept shares from trusted federated accounts and groups by default" : "Freigaben von vertrauenswürdigen Federations-Konten und -Gruppen standardmäßig automatisch akzeptieren", "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Teile mit mir über meine #Nextcloud Federated-Cloud-ID, siehe {url}", "Share with me through my #Nextcloud Federated Cloud ID" : "Teile mit mir über meine #Nextcloud Federated-Cloud-ID", "Cloud ID copied to the clipboard" : "Cloud-ID in die Zwischenablage kopiert", @@ -51,7 +51,7 @@ "Federated Cloud" : "Federated 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" : "Du kannst mit jedem teilen, der einen Nextcloud-Server oder andere Open Cloud Mesh (OCM) kompatible Server und Dienste verwendet! Gib einfach deren Federated-Cloud-ID in den Teilen-Dialog ein. Diese sieht wie folgt aus: person@cloud.example.com", "Your Federated Cloud ID" : "Deine Federated-Cloud-ID", - "Share it so your friends can share files with you:" : "Teile es, so dass deine Freunde Dateien mit dir teilen können:", + "Share it so your friends can share files with you:" : "Teile es, damit deine Freunde Dateien mit dir teilen können:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (früher Twitter)", "formerly Twitter" : "früher Twitter", diff --git a/apps/federatedfilesharing/l10n/de_DE.js b/apps/federatedfilesharing/l10n/de_DE.js index f75c44faec7..25b68d9c001 100644 --- a/apps/federatedfilesharing/l10n/de_DE.js +++ b/apps/federatedfilesharing/l10n/de_DE.js @@ -30,7 +30,7 @@ OC.L10N.register( "Confirm querying lookup server" : "Abfrage des Lookup-Servers bestätigen", "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Wenn aktiviert, wird die Sucheingabe beim Erstellen von Freigaben an ein externes System gesendet, das ein öffentliches und globales Adressbuch bereitstellt.", "This is used to retrieve the federated cloud ID to make federated sharing easier." : "Dies wird verwendet, um die Federated-Cloud-ID abzurufen und so die federierte Freigabe zu vereinfachen.", - "Moreover email addresses of users might be sent to that system in order to verify it." : "Darüber hinaus können E-Mail-Adressen von Benutzern zur Überprüfung an dieses System gesendet werden.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "Darüber hinaus können E-Mail-Adressen von Benutzern an dieses System gesendet werden, um sie zu überprüfen.", "Disable querying" : "Abfragen deaktivieren", "Enable querying" : "Abfragen aktivieren", "Unable to update federated files sharing config" : "Einstellungen zum Federated-Teilen konnten nicht aktualisiert werden", diff --git a/apps/federatedfilesharing/l10n/de_DE.json b/apps/federatedfilesharing/l10n/de_DE.json index 327c782131a..da17581170c 100644 --- a/apps/federatedfilesharing/l10n/de_DE.json +++ b/apps/federatedfilesharing/l10n/de_DE.json @@ -28,7 +28,7 @@ "Confirm querying lookup server" : "Abfrage des Lookup-Servers bestätigen", "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Wenn aktiviert, wird die Sucheingabe beim Erstellen von Freigaben an ein externes System gesendet, das ein öffentliches und globales Adressbuch bereitstellt.", "This is used to retrieve the federated cloud ID to make federated sharing easier." : "Dies wird verwendet, um die Federated-Cloud-ID abzurufen und so die federierte Freigabe zu vereinfachen.", - "Moreover email addresses of users might be sent to that system in order to verify it." : "Darüber hinaus können E-Mail-Adressen von Benutzern zur Überprüfung an dieses System gesendet werden.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "Darüber hinaus können E-Mail-Adressen von Benutzern an dieses System gesendet werden, um sie zu überprüfen.", "Disable querying" : "Abfragen deaktivieren", "Enable querying" : "Abfragen aktivieren", "Unable to update federated files sharing config" : "Einstellungen zum Federated-Teilen konnten nicht aktualisiert werden", diff --git a/apps/federatedfilesharing/l10n/en_GB.js b/apps/federatedfilesharing/l10n/en_GB.js index 01cd321cf52..90c61b433c8 100644 --- a/apps/federatedfilesharing/l10n/en_GB.js +++ b/apps/federatedfilesharing/l10n/en_GB.js @@ -30,7 +30,7 @@ OC.L10N.register( "Confirm querying lookup server" : "Confirm querying lookup server", "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book.", "This is used to retrieve the federated cloud ID to make federated sharing easier." : "This is used to retrieve the federated cloud ID to make federated sharing easier.", - "Moreover email addresses of users might be sent to that system in order to verify it." : "Moreover email addresses of users might be sent to that system in order to verify it.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "Moreover, email addresses of users might be sent to that system in order to verify them.", "Disable querying" : "Disable querying", "Enable querying" : "Enable querying", "Unable to update federated files sharing config" : "Unable to update federated files sharing config", diff --git a/apps/federatedfilesharing/l10n/en_GB.json b/apps/federatedfilesharing/l10n/en_GB.json index 355c5356c33..5e3600f0413 100644 --- a/apps/federatedfilesharing/l10n/en_GB.json +++ b/apps/federatedfilesharing/l10n/en_GB.json @@ -28,7 +28,7 @@ "Confirm querying lookup server" : "Confirm querying lookup server", "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book.", "This is used to retrieve the federated cloud ID to make federated sharing easier." : "This is used to retrieve the federated cloud ID to make federated sharing easier.", - "Moreover email addresses of users might be sent to that system in order to verify it." : "Moreover email addresses of users might be sent to that system in order to verify it.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "Moreover, email addresses of users might be sent to that system in order to verify them.", "Disable querying" : "Disable querying", "Enable querying" : "Enable querying", "Unable to update federated files sharing config" : "Unable to update federated files sharing config", diff --git a/apps/federatedfilesharing/l10n/et_EE.js b/apps/federatedfilesharing/l10n/et_EE.js index ab23006d7dc..c7636328a6f 100644 --- a/apps/federatedfilesharing/l10n/et_EE.js +++ b/apps/federatedfilesharing/l10n/et_EE.js @@ -21,9 +21,13 @@ OC.L10N.register( "Decline" : "Keeldu", "Federated Cloud Sharing" : "Jagamine liitpilves", "Sharing" : "Jagamine", - "Federated file sharing" : "Littjagamisega failide jagamine", - "Provide federated file sharing across servers" : "Toeta liitjagamise kaudu failide jagamist üle serverite", - "Unable to update federated files sharing config" : "Liitfailide jagamise konfiguratsiooni ei saa värskendada", + "Federated file sharing" : "Failide jagamine liitpilves", + "Provide federated file sharing across servers" : "Toeta failide jagamist liitpilves üle serverite", + "Disable upload" : "Keela üleslaadimine", + "Enable data upload" : "Luba andmete üleslaadimine", + "Disable querying" : "Keela päringute tegemine", + "Enable querying" : "Luba päringute tegemine", + "Unable to update federated files sharing config" : "Failide liitpilves jagamise konfiguratsiooni ei saa uuendada", "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Reguleeri, kuidas inimesed saavad serverite vahel jagada. See hõlmab ka selles serveris olevate inimeste vahelisi jagamisi, kui nad kasutavad liitjagamist.", "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Luba selles serveris olevatel inimestel saata kaustu teistele serveritele (see valik võimaldab ka WebDAV-i juurdepääsu avalikele jagamistele)", "Allow people on this server to receive shares from other servers" : "Luba selles serveris olevatel inimestel saada teistelt serveritelt jagamisi", diff --git a/apps/federatedfilesharing/l10n/et_EE.json b/apps/federatedfilesharing/l10n/et_EE.json index 207c85ad86e..b3fee999e97 100644 --- a/apps/federatedfilesharing/l10n/et_EE.json +++ b/apps/federatedfilesharing/l10n/et_EE.json @@ -19,9 +19,13 @@ "Decline" : "Keeldu", "Federated Cloud Sharing" : "Jagamine liitpilves", "Sharing" : "Jagamine", - "Federated file sharing" : "Littjagamisega failide jagamine", - "Provide federated file sharing across servers" : "Toeta liitjagamise kaudu failide jagamist üle serverite", - "Unable to update federated files sharing config" : "Liitfailide jagamise konfiguratsiooni ei saa värskendada", + "Federated file sharing" : "Failide jagamine liitpilves", + "Provide federated file sharing across servers" : "Toeta failide jagamist liitpilves üle serverite", + "Disable upload" : "Keela üleslaadimine", + "Enable data upload" : "Luba andmete üleslaadimine", + "Disable querying" : "Keela päringute tegemine", + "Enable querying" : "Luba päringute tegemine", + "Unable to update federated files sharing config" : "Failide liitpilves jagamise konfiguratsiooni ei saa uuendada", "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Reguleeri, kuidas inimesed saavad serverite vahel jagada. See hõlmab ka selles serveris olevate inimeste vahelisi jagamisi, kui nad kasutavad liitjagamist.", "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Luba selles serveris olevatel inimestel saata kaustu teistele serveritele (see valik võimaldab ka WebDAV-i juurdepääsu avalikele jagamistele)", "Allow people on this server to receive shares from other servers" : "Luba selles serveris olevatel inimestel saada teistelt serveritelt jagamisi", diff --git a/apps/federatedfilesharing/l10n/ga.js b/apps/federatedfilesharing/l10n/ga.js index eac03b458f4..24527ffa8c9 100644 --- a/apps/federatedfilesharing/l10n/ga.js +++ b/apps/federatedfilesharing/l10n/ga.js @@ -23,6 +23,16 @@ OC.L10N.register( "Sharing" : "Roinnt", "Federated file sharing" : "Comhroinnt chónaidhme", "Provide federated file sharing across servers" : "Comhroinnt comhad cónasctha a sholáthar thar freastalaithe", + "Confirm data upload to lookup server" : "Deimhnigh uaslódáil sonraí chuig an bhfreastalaí cuardaigh", + "When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Nuair a bheidh sé cumasaithe, déanfar gach maoin chuntais (m.sh. seoladh ríomhphoist) a bhfuil scóip infheictheachta aici “foilsithe”, a shioncronú go huathoibríoch agus a tharchur chuig córas seachtrach agus cuirfear ar fáil iad i leabhar seoltaí poiblí domhanda.", + "Disable upload" : "Díchumasaigh uaslódáil", + "Enable data upload" : "Cumasaigh uaslódáil sonraí", + "Confirm querying lookup server" : "Deimhnigh an freastalaí cuardaigh fiosraithe", + "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Nuair a bheidh sé cumasaithe, seolfar an t-ionchur cuardaigh agus scaireanna á gcruthú chuig córas seachtrach a sholáthraíonn leabhar seoltaí poiblí agus domhanda.", + "This is used to retrieve the federated cloud ID to make federated sharing easier." : "Úsáidtear é seo chun an ID scamall cónasctha a aisghabháil chun comhroinnt chónasctha a dhéanamh níos éasca.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "Ina theannta sin, d’fhéadfaí seoltaí ríomhphoist úsáideoirí a sheoladh chuig an gcóras sin chun iad a fhíorú.", + "Disable querying" : "Díchumasaigh an cheistiú", + "Enable querying" : "Cumasaigh fiosrú", "Unable to update federated files sharing config" : "Ní féidir an chumraíocht chomhroinnte comhad a nuashonrú", "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Coigeartaigh conas is féidir le daoine roinnt idir freastalaithe. Áirítear leis seo scaireanna idir daoine ar an bhfreastalaí seo freisin má tá comhroinnt chónaidhmeach á úsáid acu.", "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Lig do dhaoine ar an bhfreastalaí seo scaireanna a sheoladh chuig freastalaithe eile ( ceadaíonn an rogha seo rochtain WebDAV ar scaireanna poiblí freisin)", diff --git a/apps/federatedfilesharing/l10n/ga.json b/apps/federatedfilesharing/l10n/ga.json index a02b390b673..bfe2f20e5d8 100644 --- a/apps/federatedfilesharing/l10n/ga.json +++ b/apps/federatedfilesharing/l10n/ga.json @@ -21,6 +21,16 @@ "Sharing" : "Roinnt", "Federated file sharing" : "Comhroinnt chónaidhme", "Provide federated file sharing across servers" : "Comhroinnt comhad cónasctha a sholáthar thar freastalaithe", + "Confirm data upload to lookup server" : "Deimhnigh uaslódáil sonraí chuig an bhfreastalaí cuardaigh", + "When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Nuair a bheidh sé cumasaithe, déanfar gach maoin chuntais (m.sh. seoladh ríomhphoist) a bhfuil scóip infheictheachta aici “foilsithe”, a shioncronú go huathoibríoch agus a tharchur chuig córas seachtrach agus cuirfear ar fáil iad i leabhar seoltaí poiblí domhanda.", + "Disable upload" : "Díchumasaigh uaslódáil", + "Enable data upload" : "Cumasaigh uaslódáil sonraí", + "Confirm querying lookup server" : "Deimhnigh an freastalaí cuardaigh fiosraithe", + "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Nuair a bheidh sé cumasaithe, seolfar an t-ionchur cuardaigh agus scaireanna á gcruthú chuig córas seachtrach a sholáthraíonn leabhar seoltaí poiblí agus domhanda.", + "This is used to retrieve the federated cloud ID to make federated sharing easier." : "Úsáidtear é seo chun an ID scamall cónasctha a aisghabháil chun comhroinnt chónasctha a dhéanamh níos éasca.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "Ina theannta sin, d’fhéadfaí seoltaí ríomhphoist úsáideoirí a sheoladh chuig an gcóras sin chun iad a fhíorú.", + "Disable querying" : "Díchumasaigh an cheistiú", + "Enable querying" : "Cumasaigh fiosrú", "Unable to update federated files sharing config" : "Ní féidir an chumraíocht chomhroinnte comhad a nuashonrú", "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Coigeartaigh conas is féidir le daoine roinnt idir freastalaithe. Áirítear leis seo scaireanna idir daoine ar an bhfreastalaí seo freisin má tá comhroinnt chónaidhmeach á úsáid acu.", "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Lig do dhaoine ar an bhfreastalaí seo scaireanna a sheoladh chuig freastalaithe eile ( ceadaíonn an rogha seo rochtain WebDAV ar scaireanna poiblí freisin)", diff --git a/apps/federatedfilesharing/l10n/pt_BR.js b/apps/federatedfilesharing/l10n/pt_BR.js index abc06b9dcdd..162540b8f76 100644 --- a/apps/federatedfilesharing/l10n/pt_BR.js +++ b/apps/federatedfilesharing/l10n/pt_BR.js @@ -23,12 +23,23 @@ OC.L10N.register( "Sharing" : "Compartilhar", "Federated file sharing" : "Compartilhamento federado de arquivos", "Provide federated file sharing across servers" : "Fornecer compartilhamento federado entre servidores", + "Confirm data upload to lookup server" : "Confirmar o upload de dados para o servidor de pesquisa", + "When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Quando ativadas, todas as propriedades da conta (por exemplo, endereço de e-mail) com visibilidade de escopo definida como \"publicada\" serão automaticamente sincronizadas e transmitidas para um sistema externo e disponibilizadas em um catálogo de endereços público e global.", + "Disable upload" : "Desativar upload", + "Enable data upload" : "Ativar upload de dados", + "Confirm querying lookup server" : "Confirmar a consulta ao servidor de pesquisa", + "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Quando ativada, a entrada de pesquisa ao criar compartilhamentos será enviada para um sistema externo que fornece um catálogo de endereços público e global.", + "This is used to retrieve the federated cloud ID to make federated sharing easier." : "Isso é usado para recuperar o ID da nuvem federada para facilitar o compartilhamento federado.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "Além disso, os endereços de e-mail dos usuários podem ser enviados para esse sistema a fim de verificá-los.", + "Disable querying" : "Desativar consulta", + "Enable querying" : "Ativar consulta", "Unable to update federated files sharing config" : "Não é possível atualizar a configuração de compartilhamento de arquivos federados", "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Ajuste como as pessoas podem compartilhar entre servidores. Isso também inclui compartilhamentos entre pessoas neste servidor, se elas estiverem usando compartilhamento federado.", "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Permitir que pessoas neste servidor enviem compartilhamentos para outros servidores (esta opção também permite acesso WebDAV a compartilhamentos públicos)", "Allow people on this server to receive shares from other servers" : "Permitir que pessoas neste servidor recebam compartilhamentos de outros servidores", "Allow people on this server to send shares to groups on other servers" : "Permitir que pessoas neste servidor enviem compartilhamentos para grupos em outros servidores", "Allow people on this server to receive group shares from other servers" : "Permitir que as pessoas neste servidor recebam compartilhamentos de grupo de outros servidores", + "The lookup server is only available for global scale." : "O servidor de pesquisa só está disponível para escala global.", "Search global and public address book for people" : "Pesquise pessoas no catálogo de endereços global e público", "Allow people to publish their data to a global and public address book" : "Permitir que as pessoas publiquem seus dados em um catálogo de endereços público e global", "Trusted federation" : "Federação confiável", diff --git a/apps/federatedfilesharing/l10n/pt_BR.json b/apps/federatedfilesharing/l10n/pt_BR.json index b8f34a0b306..3cf64900999 100644 --- a/apps/federatedfilesharing/l10n/pt_BR.json +++ b/apps/federatedfilesharing/l10n/pt_BR.json @@ -21,12 +21,23 @@ "Sharing" : "Compartilhar", "Federated file sharing" : "Compartilhamento federado de arquivos", "Provide federated file sharing across servers" : "Fornecer compartilhamento federado entre servidores", + "Confirm data upload to lookup server" : "Confirmar o upload de dados para o servidor de pesquisa", + "When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Quando ativadas, todas as propriedades da conta (por exemplo, endereço de e-mail) com visibilidade de escopo definida como \"publicada\" serão automaticamente sincronizadas e transmitidas para um sistema externo e disponibilizadas em um catálogo de endereços público e global.", + "Disable upload" : "Desativar upload", + "Enable data upload" : "Ativar upload de dados", + "Confirm querying lookup server" : "Confirmar a consulta ao servidor de pesquisa", + "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Quando ativada, a entrada de pesquisa ao criar compartilhamentos será enviada para um sistema externo que fornece um catálogo de endereços público e global.", + "This is used to retrieve the federated cloud ID to make federated sharing easier." : "Isso é usado para recuperar o ID da nuvem federada para facilitar o compartilhamento federado.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "Além disso, os endereços de e-mail dos usuários podem ser enviados para esse sistema a fim de verificá-los.", + "Disable querying" : "Desativar consulta", + "Enable querying" : "Ativar consulta", "Unable to update federated files sharing config" : "Não é possível atualizar a configuração de compartilhamento de arquivos federados", "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Ajuste como as pessoas podem compartilhar entre servidores. Isso também inclui compartilhamentos entre pessoas neste servidor, se elas estiverem usando compartilhamento federado.", "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Permitir que pessoas neste servidor enviem compartilhamentos para outros servidores (esta opção também permite acesso WebDAV a compartilhamentos públicos)", "Allow people on this server to receive shares from other servers" : "Permitir que pessoas neste servidor recebam compartilhamentos de outros servidores", "Allow people on this server to send shares to groups on other servers" : "Permitir que pessoas neste servidor enviem compartilhamentos para grupos em outros servidores", "Allow people on this server to receive group shares from other servers" : "Permitir que as pessoas neste servidor recebam compartilhamentos de grupo de outros servidores", + "The lookup server is only available for global scale." : "O servidor de pesquisa só está disponível para escala global.", "Search global and public address book for people" : "Pesquise pessoas no catálogo de endereços global e público", "Allow people to publish their data to a global and public address book" : "Permitir que as pessoas publiquem seus dados em um catálogo de endereços público e global", "Trusted federation" : "Federação confiável", diff --git a/apps/federatedfilesharing/l10n/sk.js b/apps/federatedfilesharing/l10n/sk.js index 27b28cbfa33..6073f0e4df3 100644 --- a/apps/federatedfilesharing/l10n/sk.js +++ b/apps/federatedfilesharing/l10n/sk.js @@ -23,6 +23,16 @@ OC.L10N.register( "Sharing" : "Zdieľanie", "Federated file sharing" : "Federované zdieľanie súborov", "Provide federated file sharing across servers" : "Poskytnúť združené zdieľanie súborov naprieč servermi", + "Confirm data upload to lookup server" : "Potvrdiť nahranie dáť na vyhľadávací server", + "When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Keď je táto možnosť povolená, všetky vlastnosti účtu (napr. e-mailová adresa) s viditeľnosťou rozsahu nastavenou na „zverejnené“ sa automaticky synchronizujú a prenesú do externého systému a sprístupnia sa vo verejnom globálnom adresári.", + "Disable upload" : "Zakázať nahrávanie", + "Enable data upload" : "Povoliť nahrávanie dát", + "Confirm querying lookup server" : "Potvrďte dotaz na vyhľadávací server", + "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Keď je táto možnosť povolená, vyhľadávací vstup pri vytváraní zdieľaných položiek sa odošle do externého systému, ktorý poskytuje verejný a globálny adresár.", + "This is used to retrieve the federated cloud ID to make federated sharing easier." : "Používa sa na získanie federatívneho cloudového ID, aby sa uľahčilo federatívne zdieľanie.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "Okrem toho môžu byť do tohto systému odoslané e-mailové adresy užívateľov, aby sa mohli overiť.", + "Disable querying" : "Zakázať dotazovanie", + "Enable querying" : "Povoliť dotazovanie", "Unable to update federated files sharing config" : "Nedá sa aktualizovať konfigurácia zdieľania združených súborov", "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Upravte ako ľudia môžu zdieľať medzi servermi. Toto zahŕňa zdieľania medzi ľuďmi na tomto serveri ako aj používanie združeného zdieľania.", "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Povoliť užívateľom z tohto servera sprístupňovať obsah na iných serveroch (to umožňuje WebDAV prístup k verejným zdieľaniam)", diff --git a/apps/federatedfilesharing/l10n/sk.json b/apps/federatedfilesharing/l10n/sk.json index d3d60251380..890fd0409c1 100644 --- a/apps/federatedfilesharing/l10n/sk.json +++ b/apps/federatedfilesharing/l10n/sk.json @@ -21,6 +21,16 @@ "Sharing" : "Zdieľanie", "Federated file sharing" : "Federované zdieľanie súborov", "Provide federated file sharing across servers" : "Poskytnúť združené zdieľanie súborov naprieč servermi", + "Confirm data upload to lookup server" : "Potvrdiť nahranie dáť na vyhľadávací server", + "When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Keď je táto možnosť povolená, všetky vlastnosti účtu (napr. e-mailová adresa) s viditeľnosťou rozsahu nastavenou na „zverejnené“ sa automaticky synchronizujú a prenesú do externého systému a sprístupnia sa vo verejnom globálnom adresári.", + "Disable upload" : "Zakázať nahrávanie", + "Enable data upload" : "Povoliť nahrávanie dát", + "Confirm querying lookup server" : "Potvrďte dotaz na vyhľadávací server", + "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Keď je táto možnosť povolená, vyhľadávací vstup pri vytváraní zdieľaných položiek sa odošle do externého systému, ktorý poskytuje verejný a globálny adresár.", + "This is used to retrieve the federated cloud ID to make federated sharing easier." : "Používa sa na získanie federatívneho cloudového ID, aby sa uľahčilo federatívne zdieľanie.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "Okrem toho môžu byť do tohto systému odoslané e-mailové adresy užívateľov, aby sa mohli overiť.", + "Disable querying" : "Zakázať dotazovanie", + "Enable querying" : "Povoliť dotazovanie", "Unable to update federated files sharing config" : "Nedá sa aktualizovať konfigurácia zdieľania združených súborov", "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Upravte ako ľudia môžu zdieľať medzi servermi. Toto zahŕňa zdieľania medzi ľuďmi na tomto serveri ako aj používanie združeného zdieľania.", "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Povoliť užívateľom z tohto servera sprístupňovať obsah na iných serveroch (to umožňuje WebDAV prístup k verejným zdieľaniam)", diff --git a/apps/federatedfilesharing/l10n/sr.js b/apps/federatedfilesharing/l10n/sr.js index d4fcef6b2b8..5d9a371c1d5 100644 --- a/apps/federatedfilesharing/l10n/sr.js +++ b/apps/federatedfilesharing/l10n/sr.js @@ -23,6 +23,16 @@ OC.L10N.register( "Sharing" : "Дељење", "Federated file sharing" : "Здружено дељење фајлова", "Provide federated file sharing across servers" : "Пружа здружено дељење фајлова између сервера", + "Confirm data upload to lookup server" : "Потврди отпремање података на сервер претраге", + "When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Када је укључено, све особине налога (нпр. и-мејл адреса) са опсегом видљивости постављеним на „објављено” ће се аутоматски синхронизовати, послати на спољни систем и постати доступне у јавном, глобалном адресару.", + "Disable upload" : "Искључи отпремање", + "Enable data upload" : "Укључи отпремање података", + "Confirm querying lookup server" : "Потврди упитивање сервера претраге", + "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Када је укључено, унос претраге приликом креирања дељења ће се послати на спољни систем који обезбеђује јавни и глобални адресар.", + "This is used to retrieve the federated cloud ID to make federated sharing easier." : "Ово се користи за добављање ID здруженог облака и олакшавање здружених дељења.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "Уз то, и-мејл адресе корисника би могле да се шаљу на тај систем да би се потврдиле.", + "Disable querying" : "Искључи упитивање", + "Enable querying" : "Укључи упитивање", "Unable to update federated files sharing config" : "Конфигурација федерисаног дељења фајлова није могла да се ажурира", "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Подесите како људи могу да деле између сервера. То укључује и дељење између људи на овом серверу ако користе федерисано дељење.", "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Дозволи да људи са овог сервера шаљу дељења на друге сервере (ова опција такође дозвољава WebDAV приступ јавним дељењима)", diff --git a/apps/federatedfilesharing/l10n/sr.json b/apps/federatedfilesharing/l10n/sr.json index bf363539871..06283f2f660 100644 --- a/apps/federatedfilesharing/l10n/sr.json +++ b/apps/federatedfilesharing/l10n/sr.json @@ -21,6 +21,16 @@ "Sharing" : "Дељење", "Federated file sharing" : "Здружено дељење фајлова", "Provide federated file sharing across servers" : "Пружа здружено дељење фајлова између сервера", + "Confirm data upload to lookup server" : "Потврди отпремање података на сервер претраге", + "When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Када је укључено, све особине налога (нпр. и-мејл адреса) са опсегом видљивости постављеним на „објављено” ће се аутоматски синхронизовати, послати на спољни систем и постати доступне у јавном, глобалном адресару.", + "Disable upload" : "Искључи отпремање", + "Enable data upload" : "Укључи отпремање података", + "Confirm querying lookup server" : "Потврди упитивање сервера претраге", + "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Када је укључено, унос претраге приликом креирања дељења ће се послати на спољни систем који обезбеђује јавни и глобални адресар.", + "This is used to retrieve the federated cloud ID to make federated sharing easier." : "Ово се користи за добављање ID здруженог облака и олакшавање здружених дељења.", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "Уз то, и-мејл адресе корисника би могле да се шаљу на тај систем да би се потврдиле.", + "Disable querying" : "Искључи упитивање", + "Enable querying" : "Укључи упитивање", "Unable to update federated files sharing config" : "Конфигурација федерисаног дељења фајлова није могла да се ажурира", "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Подесите како људи могу да деле између сервера. То укључује и дељење између људи на овом серверу ако користе федерисано дељење.", "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Дозволи да људи са овог сервера шаљу дељења на друге сервере (ова опција такође дозвољава WebDAV приступ јавним дељењима)", diff --git a/apps/federatedfilesharing/l10n/sv.js b/apps/federatedfilesharing/l10n/sv.js index 4ef96ba5180..36ce13f65ba 100644 --- a/apps/federatedfilesharing/l10n/sv.js +++ b/apps/federatedfilesharing/l10n/sv.js @@ -30,7 +30,6 @@ OC.L10N.register( "Confirm querying lookup server" : "Bekräfta förfrågan till uppslagningstjänst", "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "När detta är aktiverat kommer sökinmatningen vid skapande av delningar att skickas till ett externt system som tillhandahåller en offentlig och global adressbok.", "This is used to retrieve the federated cloud ID to make federated sharing easier." : "Detta används för att hämta federerat moln-ID för att göra federerad delning enklare.", - "Moreover email addresses of users might be sent to that system in order to verify it." : "Dessutom kan användares e-postadresser skickas till systemet för att verifieras.", "Disable querying" : "Inaktivera förfrågningar", "Enable querying" : "Aktivera förfrågningar", "Unable to update federated files sharing config" : "Kunde inte uppdatera konfigurationen för federerad fildelning", diff --git a/apps/federatedfilesharing/l10n/sv.json b/apps/federatedfilesharing/l10n/sv.json index 54392720c47..ef615487833 100644 --- a/apps/federatedfilesharing/l10n/sv.json +++ b/apps/federatedfilesharing/l10n/sv.json @@ -28,7 +28,6 @@ "Confirm querying lookup server" : "Bekräfta förfrågan till uppslagningstjänst", "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "När detta är aktiverat kommer sökinmatningen vid skapande av delningar att skickas till ett externt system som tillhandahåller en offentlig och global adressbok.", "This is used to retrieve the federated cloud ID to make federated sharing easier." : "Detta används för att hämta federerat moln-ID för att göra federerad delning enklare.", - "Moreover email addresses of users might be sent to that system in order to verify it." : "Dessutom kan användares e-postadresser skickas till systemet för att verifieras.", "Disable querying" : "Inaktivera förfrågningar", "Enable querying" : "Aktivera förfrågningar", "Unable to update federated files sharing config" : "Kunde inte uppdatera konfigurationen för federerad fildelning", diff --git a/apps/federatedfilesharing/l10n/zh_CN.js b/apps/federatedfilesharing/l10n/zh_CN.js index d0b9097f350..86046f9734a 100644 --- a/apps/federatedfilesharing/l10n/zh_CN.js +++ b/apps/federatedfilesharing/l10n/zh_CN.js @@ -23,6 +23,16 @@ OC.L10N.register( "Sharing" : "共享", "Federated file sharing" : "联合云文件共享", "Provide federated file sharing across servers" : "在服务器间提供联合云文件共享", + "Confirm data upload to lookup server" : "确认数据上传到查找服务器", + "When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "启用后,所有范围可见性设置为“已发布”的账号属性(如电子邮件地址)将自动同步并传输到外部系统,并在公开全局通讯录中可用。", + "Disable upload" : "禁用上传", + "Enable data upload" : "启用数据上传", + "Confirm querying lookup server" : "确认查询查找服务器", + "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "启用后,创建分享时的搜索输入将发送到提供公开全局通讯录的外部系统。", + "This is used to retrieve the federated cloud ID to make federated sharing easier." : "这用于检索联合云 ID,以使联合共享更容易。", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "此外,用户的电子邮件地址可能会被发送到该系统以进行验证。", + "Disable querying" : "禁用查询", + "Enable querying" : "启用查询", "Unable to update federated files sharing config" : "无法更新联合云文件分享设置", "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "调整人们在服务器之间共享的方式。如果他们使用联合共享,这也包括此服务器上的人们之间的共享。", "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "允许此服务器上的人员将共享发送到其他服务器(此选项还允许 WebDAV 访问公共共享)", diff --git a/apps/federatedfilesharing/l10n/zh_CN.json b/apps/federatedfilesharing/l10n/zh_CN.json index b8500d709aa..718d43e69e1 100644 --- a/apps/federatedfilesharing/l10n/zh_CN.json +++ b/apps/federatedfilesharing/l10n/zh_CN.json @@ -21,6 +21,16 @@ "Sharing" : "共享", "Federated file sharing" : "联合云文件共享", "Provide federated file sharing across servers" : "在服务器间提供联合云文件共享", + "Confirm data upload to lookup server" : "确认数据上传到查找服务器", + "When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "启用后,所有范围可见性设置为“已发布”的账号属性(如电子邮件地址)将自动同步并传输到外部系统,并在公开全局通讯录中可用。", + "Disable upload" : "禁用上传", + "Enable data upload" : "启用数据上传", + "Confirm querying lookup server" : "确认查询查找服务器", + "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "启用后,创建分享时的搜索输入将发送到提供公开全局通讯录的外部系统。", + "This is used to retrieve the federated cloud ID to make federated sharing easier." : "这用于检索联合云 ID,以使联合共享更容易。", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "此外,用户的电子邮件地址可能会被发送到该系统以进行验证。", + "Disable querying" : "禁用查询", + "Enable querying" : "启用查询", "Unable to update federated files sharing config" : "无法更新联合云文件分享设置", "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "调整人们在服务器之间共享的方式。如果他们使用联合共享,这也包括此服务器上的人们之间的共享。", "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "允许此服务器上的人员将共享发送到其他服务器(此选项还允许 WebDAV 访问公共共享)", diff --git a/apps/federatedfilesharing/l10n/zh_HK.js b/apps/federatedfilesharing/l10n/zh_HK.js index 7a37ad78eb1..a0b8ff09c5c 100644 --- a/apps/federatedfilesharing/l10n/zh_HK.js +++ b/apps/federatedfilesharing/l10n/zh_HK.js @@ -30,7 +30,7 @@ OC.L10N.register( "Confirm querying lookup server" : "確認提問搜索伺服器", "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "當啟用時,創建共享時的搜索輸入將被發送到提供公共全面通訊錄的外部系統。", "This is used to retrieve the federated cloud ID to make federated sharing easier." : "這是用來檢索聯邦雲端 ID,以便簡化聯邦共享的過程。", - "Moreover email addresses of users might be sent to that system in order to verify it." : "此外,用戶的電郵地址可能會被發送到該系統以進行驗證。", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "此外,用戶的電郵地址可能會被發送到該系統以進行驗證。", "Disable querying" : "停用提問", "Enable querying" : "啟用提問", "Unable to update federated files sharing config" : "無法更新聯合檔案分享配置", diff --git a/apps/federatedfilesharing/l10n/zh_HK.json b/apps/federatedfilesharing/l10n/zh_HK.json index 44ed1a9092c..4484737b12f 100644 --- a/apps/federatedfilesharing/l10n/zh_HK.json +++ b/apps/federatedfilesharing/l10n/zh_HK.json @@ -28,7 +28,7 @@ "Confirm querying lookup server" : "確認提問搜索伺服器", "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "當啟用時,創建共享時的搜索輸入將被發送到提供公共全面通訊錄的外部系統。", "This is used to retrieve the federated cloud ID to make federated sharing easier." : "這是用來檢索聯邦雲端 ID,以便簡化聯邦共享的過程。", - "Moreover email addresses of users might be sent to that system in order to verify it." : "此外,用戶的電郵地址可能會被發送到該系統以進行驗證。", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "此外,用戶的電郵地址可能會被發送到該系統以進行驗證。", "Disable querying" : "停用提問", "Enable querying" : "啟用提問", "Unable to update federated files sharing config" : "無法更新聯合檔案分享配置", diff --git a/apps/federatedfilesharing/l10n/zh_TW.js b/apps/federatedfilesharing/l10n/zh_TW.js index a30f31b2b51..ec85000a468 100644 --- a/apps/federatedfilesharing/l10n/zh_TW.js +++ b/apps/federatedfilesharing/l10n/zh_TW.js @@ -23,6 +23,16 @@ OC.L10N.register( "Sharing" : "分享", "Federated file sharing" : "聯邦檔案分享", "Provide federated file sharing across servers" : "提供跨伺服器的聯邦檔案分享", + "Confirm data upload to lookup server" : "確認資料上傳至查詢伺服器", + "When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "啟用後,所有範圍能見度設定為「公開」的帳號屬性(例如電子郵件地址)將會自動同步並傳輸到外部系統,並在公開全域通訊錄中提供。", + "Disable upload" : "停用上傳", + "Enable data upload" : "啟用資料上傳", + "Confirm querying lookup server" : "確認詢問查詢伺服器", + "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "啟用後,建立分享時的搜尋輸入將會被傳送至提供公開全域通訊錄的外部系統。", + "This is used to retrieve the federated cloud ID to make federated sharing easier." : "這是用來擷取聯盟雲端 ID,讓聯盟分享更簡單。", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "此外,使用者的電子郵件地址可能會被傳送至該系統以進行驗證。", + "Disable querying" : "停用詢問", + "Enable querying" : "啟用詢問", "Unable to update federated files sharing config" : "無法更新聯邦檔案分享組態設定", "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "調整人們如何在伺服器間分享。這也包含此伺服器上使用者間的分享,如果他們使用聯盟式分享的話。", "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "允許此伺服器上的使用者傳送分享到其他伺服器(此選項也允許 WebDAV 存取公開分享)", diff --git a/apps/federatedfilesharing/l10n/zh_TW.json b/apps/federatedfilesharing/l10n/zh_TW.json index 69d53426e80..0d1ccd058c2 100644 --- a/apps/federatedfilesharing/l10n/zh_TW.json +++ b/apps/federatedfilesharing/l10n/zh_TW.json @@ -21,6 +21,16 @@ "Sharing" : "分享", "Federated file sharing" : "聯邦檔案分享", "Provide federated file sharing across servers" : "提供跨伺服器的聯邦檔案分享", + "Confirm data upload to lookup server" : "確認資料上傳至查詢伺服器", + "When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "啟用後,所有範圍能見度設定為「公開」的帳號屬性(例如電子郵件地址)將會自動同步並傳輸到外部系統,並在公開全域通訊錄中提供。", + "Disable upload" : "停用上傳", + "Enable data upload" : "啟用資料上傳", + "Confirm querying lookup server" : "確認詢問查詢伺服器", + "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "啟用後,建立分享時的搜尋輸入將會被傳送至提供公開全域通訊錄的外部系統。", + "This is used to retrieve the federated cloud ID to make federated sharing easier." : "這是用來擷取聯盟雲端 ID,讓聯盟分享更簡單。", + "Moreover, email addresses of users might be sent to that system in order to verify them." : "此外,使用者的電子郵件地址可能會被傳送至該系統以進行驗證。", + "Disable querying" : "停用詢問", + "Enable querying" : "啟用詢問", "Unable to update federated files sharing config" : "無法更新聯邦檔案分享組態設定", "Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "調整人們如何在伺服器間分享。這也包含此伺服器上使用者間的分享,如果他們使用聯盟式分享的話。", "Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "允許此伺服器上的使用者傳送分享到其他伺服器(此選項也允許 WebDAV 存取公開分享)", diff --git a/apps/federatedfilesharing/lib/FederatedShareProvider.php b/apps/federatedfilesharing/lib/FederatedShareProvider.php index 58eaca0361e..379cd793116 100644 --- a/apps/federatedfilesharing/lib/FederatedShareProvider.php +++ b/apps/federatedfilesharing/lib/FederatedShareProvider.php @@ -557,10 +557,7 @@ class FederatedShareProvider implements IShareProvider { $qb = $this->dbConnection->getQueryBuilder(); $qb->select('*') ->from('share', 's') - ->andWhere($qb->expr()->orX( - $qb->expr()->eq('item_type', $qb->createNamedParameter('file')), - $qb->expr()->eq('item_type', $qb->createNamedParameter('folder')) - )) + ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY))) ->andWhere( $qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_REMOTE)) ); @@ -1038,10 +1035,7 @@ class FederatedShareProvider implements IShareProvider { ->from('share') ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_REMOTE))) ->andWhere($qb->expr()->in('file_source', $qb->createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY))) - ->andWhere($qb->expr()->orX( - $qb->expr()->eq('item_type', $qb->createNamedParameter('file')), - $qb->expr()->eq('item_type', $qb->createNamedParameter('folder')) - )); + ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY))); $cursor = $qb->executeQuery(); if ($currentAccess === false) { @@ -1068,12 +1062,7 @@ class FederatedShareProvider implements IShareProvider { $qb->select('*') ->from('share') - ->where( - $qb->expr()->orX( - $qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_REMOTE)), - $qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_REMOTE_GROUP)) - ) - ); + ->where($qb->expr()->in('share_type', $qb->createNamedParameter([IShare::TYPE_REMOTE_GROUP, IShare::TYPE_REMOTE], IQueryBuilder::PARAM_INT_ARRAY))); $cursor = $qb->executeQuery(); while ($data = $cursor->fetch()) { diff --git a/apps/federatedfilesharing/src/components/AdminSettings.vue b/apps/federatedfilesharing/src/components/AdminSettings.vue index 22031aa27a3..84bf6b565a3 100644 --- a/apps/federatedfilesharing/src/components/AdminSettings.vue +++ b/apps/federatedfilesharing/src/components/AdminSettings.vue @@ -151,7 +151,7 @@ export default { .setText( t('federatedfilesharing', 'When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book.') + t('federatedfilesharing', 'This is used to retrieve the federated cloud ID to make federated sharing easier.') - + t('federatedfilesharing', 'Moreover email addresses of users might be sent to that system in order to verify it.'), + + t('federatedfilesharing', 'Moreover, email addresses of users might be sent to that system in order to verify them.'), ) .addButton({ callback: () => this.setLookupServerEnabled(false), diff --git a/apps/federation/l10n/de.js b/apps/federation/l10n/de.js index df7d532e170..aa6591c4e75 100644 --- a/apps/federation/l10n/de.js +++ b/apps/federation/l10n/de.js @@ -11,9 +11,9 @@ OC.L10N.register( "Federation" : "Federation", "Federation allows you to connect with other trusted servers to exchange the account directory." : "Federation ermöglicht die Verbindung mit anderen vertrauenswürdigen Servern, um das Kontenverzeichnis auszutauschen.", "Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing." : "Federation ermöglicht es dir, dich mit anderen vertrauenswürdigen Servern zu verbinden, um das Kontoverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Konten beim Federated-Sharing verwendet.", - "External documentation for Federated Cloud Sharing" : "Externe Dokumentation für Teilen über Federated Cloud", + "External documentation for Federated Cloud Sharing" : "Externe Dokumentation für das Teilen über Federated Cloud", "Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share." : "Federation ermöglicht es dir, dich mit anderen vertrauenswürdigen Servern zu verbinden, um das Kontoverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Konten beim Federated-Sharing verwendet. Es ist nicht erforderlich einen Server als vertrauenswürdig hinzuzufügen, um eine \"federated\" Freigabe zu erstellen.", - "Each server must validate the other. This process may require a few cron cycles." : "Jeder Server muss den anderen validieren. Dieser Vorgang kann einige Cron-Zyklen erfordern.", + "Each server must validate the other. This process may require a few cron cycles." : "Jeder Server muss den anderen validieren. Dieser Vorgang kann einige Cron-Zyklen benötigen.", "+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen", "Trusted server" : "Vertrauenswürdiger Server", "Add" : "Hinzufügen" diff --git a/apps/federation/l10n/de.json b/apps/federation/l10n/de.json index cd1092e49c2..80129b204c9 100644 --- a/apps/federation/l10n/de.json +++ b/apps/federation/l10n/de.json @@ -9,9 +9,9 @@ "Federation" : "Federation", "Federation allows you to connect with other trusted servers to exchange the account directory." : "Federation ermöglicht die Verbindung mit anderen vertrauenswürdigen Servern, um das Kontenverzeichnis auszutauschen.", "Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing." : "Federation ermöglicht es dir, dich mit anderen vertrauenswürdigen Servern zu verbinden, um das Kontoverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Konten beim Federated-Sharing verwendet.", - "External documentation for Federated Cloud Sharing" : "Externe Dokumentation für Teilen über Federated Cloud", + "External documentation for Federated Cloud Sharing" : "Externe Dokumentation für das Teilen über Federated Cloud", "Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share." : "Federation ermöglicht es dir, dich mit anderen vertrauenswürdigen Servern zu verbinden, um das Kontoverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Konten beim Federated-Sharing verwendet. Es ist nicht erforderlich einen Server als vertrauenswürdig hinzuzufügen, um eine \"federated\" Freigabe zu erstellen.", - "Each server must validate the other. This process may require a few cron cycles." : "Jeder Server muss den anderen validieren. Dieser Vorgang kann einige Cron-Zyklen erfordern.", + "Each server must validate the other. This process may require a few cron cycles." : "Jeder Server muss den anderen validieren. Dieser Vorgang kann einige Cron-Zyklen benötigen.", "+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen", "Trusted server" : "Vertrauenswürdiger Server", "Add" : "Hinzufügen" diff --git a/apps/files/l10n/et_EE.js b/apps/files/l10n/et_EE.js index a3742c3811d..5112e92d63e 100644 --- a/apps/files/l10n/et_EE.js +++ b/apps/files/l10n/et_EE.js @@ -11,8 +11,9 @@ OC.L10N.register( "Changed by {user}" : "Muudetud kasutaja {user} poolt", "Deleted by {user}" : "Kustutatud kasutaja {user} poolt", "Restored by {user}" : "Taastatud kasutaja {user} poolt", - "Renamed by {user}" : "Ümber nimetatud kasutaja {user} poolt", + "Renamed by {user}" : "Kasutaja {user} muutis nime", "Moved by {user}" : "Liigutatud kasutaja {user} poolt", + "\"remote account\"" : "„kaugkonto“", "You created {file}" : "Sa lõid faili {file}", "You created an encrypted file in {file}" : "Sa lõid krüpteeritud faili {file}", "{user} created {file}" : "Kasutaja {user} lõi faili {file}", @@ -42,77 +43,211 @@ OC.L10N.register( "Files" : "Failid", "A file or folder has been <strong>changed</strong>" : "Fail või kaust on <strong>muudetud</strong>", "A favorite file or folder has been <strong>changed</strong>" : "Lemmikuks märgitud faili või kausta on <strong>muudetud</strong>", + "Failed to authorize" : "Autoriseerimine ei õnnestunud", + "Invalid folder path" : "Kausta vigane asukoht", + "Folder not found" : "Kausta ei leidu", + "The file cannot be found" : "Faili ei õnnestu leida", + "The destination path does not exist: %1$s" : "Sihtasukoht pole olemas: %1$s", + "You do not have permission to create a file at the specified location" : "Sul puudvad õigused faili loomiseks antud asukohas", + "The file could not be converted." : "Seda faili ei õnnestunud teisendada.", + "Could not get relative path to converted file" : "Teisendatud faili suhtelist asukohta ei õnnestunud tuvastada", "Favorite files" : "Lemmikfailid", "No favorites" : "Lemmikuid pole", "More favorites" : "Veel lemmikuid", "Upload (max. %s)" : "Üleslaadimine (max. %s)", "Accept" : "Nõustu", "Reject" : "Keeldu", + "Incoming ownership transfer from {user}" : "Saaduv omandi üleandmine kasutajalt {user}", + "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Kas sa soovid „{path}“ omandi üle võtta?\n\nMärkus: palun arvesta, et selleks võib kuluda kuni 1 tund.", + "Ownership transfer denied" : "Keeldumine omandi üleandmisest", + "Your ownership transfer of {path} was denied by {user}." : "Kasutaja {user} keeldus sinu soovist „{path}“ omand üle anda.", + "Ownership transfer failed" : "Omandi üleandmine ei õnnestunud", + "Your ownership transfer of {path} to {user} failed." : "Sinu poolt algatatud „{path}“ omandi üleandmine kasutajale {user} ei õnnestunud.", + "The ownership transfer of {path} from {user} failed." : "„{path}“ omandi üleandmine kasutajale {user} ei õnnestunud.", + "Ownership transfer done" : "Omandi üleandmine on lõppenud", + "Your ownership transfer of {path} to {user} has completed." : "Sinu poolt algatatud „{path}“ omandi üleandmine kasutajale {user} on lõppenud.", + "The ownership transfer of {path} from {user} has completed." : "„{path}“ omandi üleandmine kasutajale {user} on tehtud.", "in %s" : "kaustas %s", + "Transferred from %1$s on %2$s" : "Üleantud kasutajalt %1$s %2$s", "Files compatibility" : "Failide ühilduvus", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Luba failinimede piiramine tagamaks, et sünkroniseerimine toimib kõikide platvormide klientide vahel. Vaikimisi on lubatud kõik POSIX-i standardile vastavad failinimed (seda järgivad Linux ja macOS).", + "Enforce Windows compatibility" : "Kasuta ühilduvust Windowsiga", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Sellega blokeerid niisuguste failinimede kasutamise, mis Windowsis ei toimiks. See tähendab mõnede nimede ja tähemärkide keelamist. Aga see seadistus ei jõusta suur- ja väiketähtede kasutust.", "File Management" : "Failihaldus", "Home" : "Kodu", "Target folder does not exist any more" : "Sihtkausta pole enam olemas", "Reload current directory" : "Laadi see kaust uuesti", "Go to the \"{dir}\" directory" : "Mine kausta „{dir}“", + "Current directory path" : "Praeguse kausta asukoht", + "Your have used your space quota and cannot upload files anymore" : "Sa oled kasutanud ära kogu oma andmeruumi kvoodi ega saa rohkem faile üles laadida.", + "You do not have permission to upload or create files here." : "Sul puuduvad õigused siia failide üleslaadimiseks või loomiseks.", + "Drag and drop files here to upload" : "Üleslaadimiseks lohista failid siia", "Favorite" : "Lemmik", - "Filename" : "Faili nimi", + "Back" : "Tagasi", + "Toggle selection for file \"{displayName}\"" : "Lülita „{displayName}“ faili valimine sisse/välja", + "Toggle selection for folder \"{displayName}\"" : "Lülita „{displayName}“ kausta valimine sisse/välja", + "File is loading" : "Fail on laadimisel", + "Folder is loading" : "Kaust on laadimisel", + "Filename" : "Failinimi", "Folder name" : "Kausta nimi", + "This node is unavailable" : "See sõlm pole saadaval", + "Another entry with the same name already exists." : "Selle nimega kirje on juba olemas.", + "Invalid filename." : "Vigane failinimi.", + "Renamed \"{oldName}\" to \"{newName}\"" : "Failinimi on muutunud „{oldName}“ ⇨ „{newName}“", + "Rename file" : "Muuda failinime", "Pending" : "Ootel", + "Unknown date" : "Tundmatu kuupäev", + "Clear filter" : "Tühjenda filter", "Modified" : "Muudetud", "Type" : "Tüüp", + "Active filters" : "Aktiivsed filtrid", + "Remove filter" : "Eemalda filter", + "Total rows summary" : "Ridade koondkokkuvõte", + "Toggle selection for all files and folders" : "Lülita kõikide failide ja kaustade valik sisse/välja", "Name" : "Nimi", "Size" : "Suurus", + "\"{displayName}\" failed on some elements" : "„{displayName}“ ei toiminud mõne objekti puhul", + "\"{displayName}\" batch action executed successfully" : "Pakktöötlus õnnestus: „{displayName}“", + "\"{displayName}\" action failed" : "Tegevus ei õnnestunud: „{displayName}“", "Actions" : "Tegevused", + "(selected)" : "(valitud)", "List of files and folders." : "Failide ja kaustade loend", + "You have used your space quota and cannot upload files anymore." : "Sa oled kasutanud ära kogu oma andmeruumi kvoodi ega saa rohkem faile üles laadida.", + "Column headers with buttons are sortable." : "Võid kasutada nuppudega veerupäised järjestamiseks.", + "This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Jõudluse mõttes ei ole kogu loend esimesel hetkel tervikuna nähtav. Uued failid lisanduvad sedamööda, kuid sa loendis edasi liigud.", "File not found" : "Faili ei leitud", "{count} selected" : "{count} valitud", "{usedQuotaByte} used" : "{usedQuotaByte} kasutusel", "{used} of {quota} used" : "{used} / {quota} kasutusel", "{relative}% used" : "{relative}% kasutusel", - "Your storage is full, files can not be updated or synced anymore!" : "Sinu andmemaht on täis! Faile ei uuendata ega sünkroniseerita!", + "Could not refresh storage stats" : "Andmeruumi statistika värskendamine ei õnnestunud", + "Your storage is full, files can not be updated or synced anymore!" : "Sinu andmeruum on täis - faile ei saa enam uuendada ega sünkroniseerida!", + "Storage information" : "Andmeruumi teave", + "Storage quota" : "Andmeruumi kvoot", "New folder" : "Uus kaust", "Create new folder" : "Loo uus kaust", + "This name is already in use." : "See nimi on juba kasutusel.", "Create" : "Loo", + "Fill template fields" : "Täida malli väljad", + "Submitting fields …" : "Saadan välju…", "Submit" : "Saada", - "Transfer" : "Teisalda", + "Choose a file or folder to transfer" : "Vali üleantav fail või kaust", + "Transfer" : "Anna üle teisele kasutajale", + "Transfer {path} to {userid}" : "Anna „{path}“ üle kasutajale {userid}", + "Invalid path selected" : "Vigane asukoht on valitud", "Unknown error" : "Tundmatu viga", + "Ownership transfer request sent" : "Üleandmispäring on saadetud", + "Cannot transfer ownership of a file or folder you do not own" : "Sa ei saa teisele kasutaja anda üle kausta või faili, mis pole sinu oma", + "Transfer ownership of a file or folder" : "Kaustade või failide omandi üleandmine teisele kasutajale", + "Choose file or folder to transfer" : "Vali üleantav fail või kaust", "Change" : "Muuda", "New owner" : "Uus omanik", + "Keep {old}" : "Säilita „{old}“", + "Keep without extension" : "Säilita ilma faililaiendita", + "Use {new}" : "Kasuta „{new}“", + "Remove extension" : "Eemalda faililaiend", + "Change file extension" : "Muuda faililaiendit", + "Changing the file extension from \"{old}\" to \"{new}\" may render the file unreadable." : "Muutes senist faililaiendit „{old}“ uueks laiendiks „{new}“ võib fail muutuda loetamatuks.", + "Removing the file extension \"{old}\" may render the file unreadable." : "„{old}“ faililaiendi eemaldamine võib muuta faili loetamatuks.", + "Adding the file extension \"{new}\" may render the file unreadable." : "„{new}“ faililaiendi lisamine võib muuta faili loetamatuks.", + "Do not show this dialog again." : "Ära näita seda vaadet enam uuesti.", + "Select file or folder to link to" : "Vali lingitav fail või kaust", + "Choose {file}" : "Vali „{file}“", + "Share" : "Jaga", "Shared by link" : "Jagatud lingiga", "Shared" : "Jagatud", + "Switch to list view" : "Kasuta loendivaadet", + "Switch to grid view" : "Kasuta ruudustikuvaadet", + "The file could not be found" : "Seda faili ei õnnestu leida", + "Upload was cancelled by user" : "Kasutaja katkestas üleslaadimise", "Not enough free space" : "Pole piisavalt vaba ruumi", "Operation is blocked by access control" : "Tegevus on blokeeritud ligipääsupiirangute poolt", - "Loading current folder" : "Jooksva kausta laadimine", + "Error during upload: {message}" : "Viga üleslaadimisel: {message}", + "Error during upload, status code {status}" : "Viga üleslaadimisel, olekukood {status} ", + "Unknown error during upload" : "Tundmatu viga üleslaadimisel", + "\"{displayName}\" action executed successfully" : "Toiming õnnestus: „{displayName}“", + "Loading current folder" : "Laadin käesolevat kausta", "Retry" : "Proovi uuesti", "No files in here" : "Siin ei ole faile", "Upload some content or sync with your devices!" : "Laadi sisu üles või süngi oma seadmetega!", "Go back" : "Mine tagasi", + "Filter file names …" : "Otsi failinimesid…", "Views" : "Vaated", - "Files settings" : "Failide seaded", + "Files settings" : "Failide seadistused", + "Your files" : "Sinu failid", + "Open in files" : "Ava failirakenduses", "File cannot be accessed" : "Failile ligipääs puudub", - "Clipboard is not available" : "Lõikelauda ei ole saadaval", - "WebDAV URL copied to clipboard" : "WebDAV URL kopeeritud lõikepuhvrisse", - "Sort folders before files" : "Järjesta kaustade enne faile", + "The file could not be found or you do not have permissions to view it. Ask the sender to share it." : "Faili kas ei leidu või sul puudub õigus selle vaatamiseks. Palu saatjat, et ta jagaks antud faili sulle.", + "Clipboard is not available" : "Lõikelaud ei ole saadaval", + "WebDAV URL copied to clipboard" : "WebDAV-i võrguaadress on kopeeritud lõikelauale", + "Sort favorites first" : "Järjesta lemmikud esimesena", + "Sort folders before files" : "Järjesta kaustad enne faile", "Show hidden files" : "Näita peidetud faile", - "Additional settings" : "Lisaseaded", + "Crop image previews" : "Kadreeri piltide eelvaated", + "Enable the grid view" : "Võta kasutusele ruudustikuvaade", + "Enable folder tree" : "Võta kasutusele kaustapuu", + "Additional settings" : "Lisaseadistused", "WebDAV" : "WebDAV", - "Copy to clipboard" : "Kopeeri lõikepuhvrisse", - "Use this address to access your Files via WebDAV" : "Oma failidele WebDAV kaudu ligipääsemiseks kasuta seda aadressi", - "Keyboard shortcuts" : "Klaviatuuri otseteed", + "WebDAV URL" : "WebDAV-i võrguaadress", + "Copy to clipboard" : "Kopeeri lõikelauale", + "Use this address to access your Files via WebDAV" : "Oma failidele WebDAV-i kaudu ligipääsemiseks kasuta seda aadressi", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Kui sa oled kaheastmelise autentimise kasutusele võtnud, siis peal looma ja kasutama rakenduse uut salasõna klikates siia.", + "Warnings" : "Hoiatused", + "Prevent warning dialogs from open or reenable them." : "Ära kasuta hoiatusteateid nende avamisel või uuesti kasutusele võtmisel.", + "Show a warning dialog when changing a file extension." : "Faililaiendi muutmisel näita hoiatust.", + "Keyboard shortcuts" : "Klaviatuuri kiirklahvid", + "Speed up your Files experience with these quick shortcuts." : "Tee failirakenduse kasutamine kiiremaks nende kiirklahvidega.", + "Open the actions menu for a file" : "Ava failitoimingute menüü", + "Rename a file" : "Muuda failinime", + "Delete a file" : "Kustuta fail", + "Favorite or remove a file from favorites" : "Märgi fail lemmikuks või eemalda olek lemmikuna", + "Manage tags for a file" : "Halda failide silte", + "Selection" : "Valik", + "Select all files" : "Vali kõik failid", + "Deselect all files" : "Eemalda kõikide failide valik", + "Select or deselect a file" : "Vali fail või eemalda valik", + "Select a range of files" : "Vali mitu faili", + "Navigation" : "Liikumine", + "Navigate to the parent folder" : "Mine ülakausta", + "Navigate to the file above" : "Liigu ülemise faili juurde", + "Navigate to the file below" : "Liigu alumise faili juurde", + "Navigate to the file on the left (in grid mode)" : "Liigu vasakpoolse faili juurde (ruudustikuvaates)", + "Navigate to the file on the right (in grid mode)" : "Liigu parempoolse faili juurde (ruudustikuvaates)", "View" : "Vaata", + "Toggle the grid view" : "Lülita ruudustikuvaade sisse/välja", + "Open the sidebar for a file" : "Ava faili külgriba", + "Show those shortcuts" : "Näita neid otseteid", "You" : "Sina", + "Shared multiple times with different people" : "Jagatud mitu korda eri kasutajate poolt", + "Error while loading the file data" : "Viga faili andmete laadimisel", "Owner" : "Omanik", "Remove from favorites" : "Eemalda lemmikutest", "Add to favorites" : "Lisa lemmikutesse", "Tags" : "Sildid", "Blank" : "Tühi", "Unable to create new file from template" : "Faili loomine mallist ebaõnnestus", - "Failed to convert file" : "Faili konvertimine ei õnnestunud", - "Deletion cancelled" : "Kustutamine tühistatud", + "Pick a template for {name}" : "Vali mall „{name}“ faili jaoks", + "Create a new file with the selected template" : "Loo valitud malli alusel uus fail", + "Creating file" : "Fail on loomisel", + "Save as {displayName}" : "Salvesta kui „{displayName}“", + "Save as …" : "Salvesta kui…", + "Converting files …" : "Teisendan faile…", + "Failed to convert files: {message}" : "Failide teisendamine ei õnnestunud: {message}", + "All files failed to be converted" : "Kõiki faile ei õnnestunud teisendada", + "One file could not be converted: {message}" : "Ühe faili teisendamine ei õnnestunud: {message}", + "_One file could not be converted_::_%n files could not be converted_" : ["Ühe faili teisendamine ei õnnestunud","%n faili teisendamine ei õnnestunud"], + "_One file successfully converted_::_%n files successfully converted_" : ["Ühe faili teisendamine õnnestus","%n faili teisendamine õnnestus"], + "Files successfully converted" : "Failide teisendamine õnnestus", + "Failed to convert files" : "Failide teisendamine ei õnnestunud", + "Converting file …" : "Teisendan faili…", + "File successfully converted" : "Faili teisendamine õnnestus", + "Failed to convert file: {message}" : "Faili teisendamine ei õnnestunud: {message}", + "Failed to convert file" : "Faili teisendamine ei õnnestunud", + "Deletion cancelled" : "Kustutamine on tühistatud", "Leave this share" : "Lahku jaoskaustast", "Leave these shares" : "Lahku neist jaoskaustadest", - "Disconnect storage" : "Ühenda andmehoidla lahti", + "Disconnect storage" : "Ühenda andmeruum lahti", + "Disconnect storages" : "Ühenda andmeruumid lahti", "Delete permanently" : "Kustuta jäädavalt", "Delete and unshare" : "Kustuta ja lõpeta jagamine", "Delete file" : "Kustuta fail", @@ -124,6 +259,15 @@ OC.L10N.register( "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Sa oled kustutamas {count} objekti","Sa oled kustutamas {count} objekti"], "Confirm deletion" : "Kinnita kustutamine", "Cancel" : "Loobu", + "Moving \"{source}\" to \"{destination}\" …" : "Teisaldan „{source}“ → „{destination}“…", + "Copying \"{source}\" to \"{destination}\" …" : "Kopeerin „{source}“ → „{destination}“…", + "You cannot move a file/folder onto itself or into a subfolder of itself" : "Sa ei saa faili või kausta iseendaks teisaldada ega teisaldada kausta iseenda alamkausta", + "(copy)" : "(koopia)", + "(copy %n)" : "(%n koopia)", + "Move cancelled" : "Teisaldamine on katkestatud", + "A file or folder with that name already exists in this folder" : "Selles kaustas juba on olemas sama nimega fail või kaust", + "The files are locked" : "Need failid on lukustatud", + "The file does not exist anymore" : "Neid faile pole enam olemas", "Choose destination" : "Vali sihtkaust", "Copy to {target}" : "Kopeeri kausta {target}", "Copy" : "Kopeeri", @@ -131,9 +275,12 @@ OC.L10N.register( "Move" : "Teisalda", "Move or copy operation failed" : "Teisaldamine või kopeerimine ei õnnestunud", "Move or copy" : "Liiguta või kopeeri", + "Cancelled move or copy of \"{filename}\"." : "„{filename}“ faili teisaldamine või kopeerimine on katkestatud.", + "Cancelled move or copy operation" : "Teisaldamine või kopeerimine on katkestatud", "Open folder {displayName}" : "Ava kaust {displayName}", "Open in Files" : "Ava failirakenduses", "Open file locally" : "Ava fail kohalikus seadmes", + "The file should now open on your device. If it doesn't, please check that you have the desktop app installed." : "Fail peaks nüüd sinu seadmes või arvutis olema avatud. Kui see nii pole, siis palun kontrolli, et töölauarakendus on paigaldatud.", "Retry and close" : "Proovi uuesti ja sulge", "Open online" : "Ava võrgust", "Failed to redirect to client" : "Kliendi ümbersuunamine ebaõnnestus", @@ -142,6 +289,10 @@ OC.L10N.register( "Open details" : "Ava üksikasjad", "View in folder" : "Vaata kaustas", "Today" : "Täna", + "Last 7 days" : "Viimase 7 päeva jooksul", + "Last 30 days" : "Viimase 30 päeva jooksul", + "This year ({year})" : "Sel aastal ({year})", + "Last year ({year})" : "Eelmisel aastal ({year})", "Documents" : "Dokumendid", "Spreadsheets" : "Arvutustabelid", "Presentations" : "Esitlused", @@ -156,15 +307,25 @@ OC.L10N.register( "Create templates folder" : "Loo mallide kaust", "Templates" : "Mallid", "New template folder" : "Uus kaustamall", + "In folder" : "Kaustas", "Search in folder: {folder}" : "Otsi kaustast: {folder}", + "One of the dropped files could not be processed" : "Ühte siia lisatud failidest ei õnnestunud töödelda", + "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Sinu veebibrauser ei toeta „Filesystem API“ liidestust. Kaustad jäävad üleslaadimata", + "No files to upload" : "Üleslaaditavaid faile pole", + "Unable to create the directory {directory}" : "„{directory}“ kausta loomine ei õnnestu", + "Some files could not be uploaded" : "Mõnda faili ei saanud üles laadida", + "Files uploaded successfully" : "Failide üleslaadimine õnnestus", + "No files to process" : "Töödeldavaid faile pole", "Some files could not be copied" : "Mõnda faili ei saanud kopeerida", "Some files could not be moved" : "Mõnda faili ei saanud teisaldada", "Files copied successfully" : "Failide kopeerimine õnnestus", "Files moved successfully" : "Failide teisaldamine õnnestus", + "Conflicts resolution skipped" : "Andmekonfilkti lahendamine jäi vahele", "Upload cancelled" : "Üleslaadimine on katkestatud", "This operation is forbidden" : "See toiming on keelatud", "This directory is unavailable, please check the logs or contact the administrator" : "See kaust pole saadaval, palun kontrolli logifaile või võta ühendust administraatoriga", "Storage is temporarily not available" : "Salvestusruum pole ajutiselt kättesaadav", + "Unexpected error: {error}" : "Tundmatu viga: {error}", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} kaust","{folderCount} kausta"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fail","{fileCount} faili"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fail ja {folderCount} kaust","1 fail ja {folderCount} kausta"], @@ -208,7 +369,7 @@ OC.L10N.register( "Target folder \"{dir}\" does not exist any more" : "Kausta \"{dir}\" pole enam olemas", "An unknown error has occurred" : "Tekkis tundmatu tõrge", "File could not be uploaded" : "Faili üleslaadimine ebaõnnestus", - "Uploading …" : "Üleslaadmine ...", + "Uploading …" : "Üleslaadmisel...", "{remainingTime} ({currentNumber}/{total})" : "{remainingTime} ({currentNumber}/{total})", "Uploading … ({currentNumber}/{total})" : "Üleslaadimisel… ({currentNumber}/{total})", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})", @@ -239,8 +400,8 @@ OC.L10N.register( "Could not create file \"{file}\"" : "Faili \"{file}\" loomine ebaõnnestus", "Could not create file \"{file}\" because it already exists" : "Faili \"{file}\" loomine ebaõnnestus, sest see on juba olemas", "Could not create folder \"{dir}\" because it already exists" : "Kausta \"{dir}\" loomine ebaõnnestus, sest see on juba olemas", - "Could not fetch file details \"{file}\"" : "Faili \"{file}\" üksikasjade laadimine ebaõnnestus", - "Error deleting file \"{fileName}\"." : "Tõrge faili \"{fileName}\" kustutamisel.", + "Could not fetch file details \"{file}\"" : "Ei õnnestunud laadida „{file}“ faili üksikasju", + "Error deleting file \"{fileName}\"." : "Viga „{fileName}“ faili kustutamisel.", "No search results in other folders for {tag}{filter}{endtag}" : "Teistest kaustadest ei leitud {tag}{filter}{endtag}", "Enter more than two characters to search in other folders" : "Teistest kaustadest otsimiseks sisesta rohkem kui kaks sümbolit", "_%n folder_::_%n folders_" : ["%n kaust","%n kausta"], @@ -250,20 +411,28 @@ OC.L10N.register( "You do not have permission to upload or create files here" : "Sul pole luba siia faile lisada ja üles laadida", "_Uploading %n file_::_Uploading %n files_" : ["Laadin üles %n faili","Laadin üles %n faili"], "New" : "Uus", + "New file/folder menu" : "Uue faili või kausta menüü", "Select file range" : "Vali failivahemik", "{used}%" : "{used}%", "{used} used" : "{used} kasutusel", - "\"{name}\" is an invalid file name." : "\"{name}\" on vigane failinimi.", - "File name cannot be empty." : "Faili nimi ei saa olla tühi.", - "\"/\" is not allowed inside a file name." : "\"/\" pole failinimedes lubatud.", - "\"{name}\" is not an allowed filetype" : "\"{name}\" pole lubatud failitüüp", + "\"{name}\" is an invalid file name." : "„{name}“ on vigane failinimi.", + "File name cannot be empty." : "Failinimi ei saa olla tühi.", + "\"/\" is not allowed inside a file name." : "„/“ pole failinimedes lubatud.", + "\"{name}\" is not an allowed filetype" : "„{name}“ pole lubatud failitüüp", + "Storage of {owner} is full, files cannot be updated or synced anymore!" : "{owner} andmeruum on täis - faile ei saa enam uuendada ega sünkroniseerida!", + "Group folder \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "„{mountPoint}“ grupikausta andmeruum on täis - faile ei saa enam uuendada ega sünkroniseerida!", + "External storage \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "Väline andmeruum „{mountPoint}“ on täis - faile ei saa enam uuendada ega sünkroniseerida!", + "Your storage is full, files cannot be updated or synced anymore!" : "Sinu andmeruum on täis - faile ei saa enam uuendada ega sünkroniseerida!", "Storage of {owner} is almost full ({usedSpacePercent}%)." : "Kasutaja {owner} andmeruum on peaaegu täis ({usedSpacePercent}%)", "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "„{mountPoint}“ grupi andmeruum on peaaegu täis ({usedSpacePercent}%)", "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "Väline andmeruum „{mountPoint}“ on peaaegu täis ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)." : "Su andmeruum on peaaegu täis ({usedSpacePercent}%)", + "_matches \"{filter}\"_::_match \"{filter}\"_" : ["vastab tingimusele „{filter}“","vastab tingimustele „{filter}“"], + "Direct link was copied (only works for people who have access to this file/folder)" : "Otselink on kopeeritud (toimib ainult nende kasutajate puhul, kellel on ligipääs sellele failile/kaustale)", "Path" : "Asukoht", "_%n byte_::_%n bytes_" : ["%n bait","%n baiti"], "Favorited" : "Lemmikud", + "Copy direct link (only works for people who have access to this file/folder)" : "Kopeeri otselink (töötab ainult nende kasutajate puhul, kellel on ligipääs sellele failile/kaustale)", "Upload file" : "Laadi fail üles", "Not favorited" : "Lemmikuks lisamata", "An error occurred while trying to update the tags" : "Siltide uuendamisel tekkis tõrge", @@ -283,6 +452,8 @@ OC.L10N.register( "Favored" : "Märgitud lemmikuks", "Favor" : "Märgi lemmikuks", "Not favored" : "Pole märgitud lemmikuks", + "Submitting fields…" : "Saadan välju…", + "Filter filenames…" : "Otsi failinimesid…", "{count} files could not be converted" : "{count} faili ei õnnestunud teisendada", "{count} files successfully converted" : "{count} faili teisendamine õnnestus" }, diff --git a/apps/files/l10n/et_EE.json b/apps/files/l10n/et_EE.json index 397cc8dac12..8a31be7f422 100644 --- a/apps/files/l10n/et_EE.json +++ b/apps/files/l10n/et_EE.json @@ -9,8 +9,9 @@ "Changed by {user}" : "Muudetud kasutaja {user} poolt", "Deleted by {user}" : "Kustutatud kasutaja {user} poolt", "Restored by {user}" : "Taastatud kasutaja {user} poolt", - "Renamed by {user}" : "Ümber nimetatud kasutaja {user} poolt", + "Renamed by {user}" : "Kasutaja {user} muutis nime", "Moved by {user}" : "Liigutatud kasutaja {user} poolt", + "\"remote account\"" : "„kaugkonto“", "You created {file}" : "Sa lõid faili {file}", "You created an encrypted file in {file}" : "Sa lõid krüpteeritud faili {file}", "{user} created {file}" : "Kasutaja {user} lõi faili {file}", @@ -40,77 +41,211 @@ "Files" : "Failid", "A file or folder has been <strong>changed</strong>" : "Fail või kaust on <strong>muudetud</strong>", "A favorite file or folder has been <strong>changed</strong>" : "Lemmikuks märgitud faili või kausta on <strong>muudetud</strong>", + "Failed to authorize" : "Autoriseerimine ei õnnestunud", + "Invalid folder path" : "Kausta vigane asukoht", + "Folder not found" : "Kausta ei leidu", + "The file cannot be found" : "Faili ei õnnestu leida", + "The destination path does not exist: %1$s" : "Sihtasukoht pole olemas: %1$s", + "You do not have permission to create a file at the specified location" : "Sul puudvad õigused faili loomiseks antud asukohas", + "The file could not be converted." : "Seda faili ei õnnestunud teisendada.", + "Could not get relative path to converted file" : "Teisendatud faili suhtelist asukohta ei õnnestunud tuvastada", "Favorite files" : "Lemmikfailid", "No favorites" : "Lemmikuid pole", "More favorites" : "Veel lemmikuid", "Upload (max. %s)" : "Üleslaadimine (max. %s)", "Accept" : "Nõustu", "Reject" : "Keeldu", + "Incoming ownership transfer from {user}" : "Saaduv omandi üleandmine kasutajalt {user}", + "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Kas sa soovid „{path}“ omandi üle võtta?\n\nMärkus: palun arvesta, et selleks võib kuluda kuni 1 tund.", + "Ownership transfer denied" : "Keeldumine omandi üleandmisest", + "Your ownership transfer of {path} was denied by {user}." : "Kasutaja {user} keeldus sinu soovist „{path}“ omand üle anda.", + "Ownership transfer failed" : "Omandi üleandmine ei õnnestunud", + "Your ownership transfer of {path} to {user} failed." : "Sinu poolt algatatud „{path}“ omandi üleandmine kasutajale {user} ei õnnestunud.", + "The ownership transfer of {path} from {user} failed." : "„{path}“ omandi üleandmine kasutajale {user} ei õnnestunud.", + "Ownership transfer done" : "Omandi üleandmine on lõppenud", + "Your ownership transfer of {path} to {user} has completed." : "Sinu poolt algatatud „{path}“ omandi üleandmine kasutajale {user} on lõppenud.", + "The ownership transfer of {path} from {user} has completed." : "„{path}“ omandi üleandmine kasutajale {user} on tehtud.", "in %s" : "kaustas %s", + "Transferred from %1$s on %2$s" : "Üleantud kasutajalt %1$s %2$s", "Files compatibility" : "Failide ühilduvus", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Luba failinimede piiramine tagamaks, et sünkroniseerimine toimib kõikide platvormide klientide vahel. Vaikimisi on lubatud kõik POSIX-i standardile vastavad failinimed (seda järgivad Linux ja macOS).", + "Enforce Windows compatibility" : "Kasuta ühilduvust Windowsiga", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Sellega blokeerid niisuguste failinimede kasutamise, mis Windowsis ei toimiks. See tähendab mõnede nimede ja tähemärkide keelamist. Aga see seadistus ei jõusta suur- ja väiketähtede kasutust.", "File Management" : "Failihaldus", "Home" : "Kodu", "Target folder does not exist any more" : "Sihtkausta pole enam olemas", "Reload current directory" : "Laadi see kaust uuesti", "Go to the \"{dir}\" directory" : "Mine kausta „{dir}“", + "Current directory path" : "Praeguse kausta asukoht", + "Your have used your space quota and cannot upload files anymore" : "Sa oled kasutanud ära kogu oma andmeruumi kvoodi ega saa rohkem faile üles laadida.", + "You do not have permission to upload or create files here." : "Sul puuduvad õigused siia failide üleslaadimiseks või loomiseks.", + "Drag and drop files here to upload" : "Üleslaadimiseks lohista failid siia", "Favorite" : "Lemmik", - "Filename" : "Faili nimi", + "Back" : "Tagasi", + "Toggle selection for file \"{displayName}\"" : "Lülita „{displayName}“ faili valimine sisse/välja", + "Toggle selection for folder \"{displayName}\"" : "Lülita „{displayName}“ kausta valimine sisse/välja", + "File is loading" : "Fail on laadimisel", + "Folder is loading" : "Kaust on laadimisel", + "Filename" : "Failinimi", "Folder name" : "Kausta nimi", + "This node is unavailable" : "See sõlm pole saadaval", + "Another entry with the same name already exists." : "Selle nimega kirje on juba olemas.", + "Invalid filename." : "Vigane failinimi.", + "Renamed \"{oldName}\" to \"{newName}\"" : "Failinimi on muutunud „{oldName}“ ⇨ „{newName}“", + "Rename file" : "Muuda failinime", "Pending" : "Ootel", + "Unknown date" : "Tundmatu kuupäev", + "Clear filter" : "Tühjenda filter", "Modified" : "Muudetud", "Type" : "Tüüp", + "Active filters" : "Aktiivsed filtrid", + "Remove filter" : "Eemalda filter", + "Total rows summary" : "Ridade koondkokkuvõte", + "Toggle selection for all files and folders" : "Lülita kõikide failide ja kaustade valik sisse/välja", "Name" : "Nimi", "Size" : "Suurus", + "\"{displayName}\" failed on some elements" : "„{displayName}“ ei toiminud mõne objekti puhul", + "\"{displayName}\" batch action executed successfully" : "Pakktöötlus õnnestus: „{displayName}“", + "\"{displayName}\" action failed" : "Tegevus ei õnnestunud: „{displayName}“", "Actions" : "Tegevused", + "(selected)" : "(valitud)", "List of files and folders." : "Failide ja kaustade loend", + "You have used your space quota and cannot upload files anymore." : "Sa oled kasutanud ära kogu oma andmeruumi kvoodi ega saa rohkem faile üles laadida.", + "Column headers with buttons are sortable." : "Võid kasutada nuppudega veerupäised järjestamiseks.", + "This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Jõudluse mõttes ei ole kogu loend esimesel hetkel tervikuna nähtav. Uued failid lisanduvad sedamööda, kuid sa loendis edasi liigud.", "File not found" : "Faili ei leitud", "{count} selected" : "{count} valitud", "{usedQuotaByte} used" : "{usedQuotaByte} kasutusel", "{used} of {quota} used" : "{used} / {quota} kasutusel", "{relative}% used" : "{relative}% kasutusel", - "Your storage is full, files can not be updated or synced anymore!" : "Sinu andmemaht on täis! Faile ei uuendata ega sünkroniseerita!", + "Could not refresh storage stats" : "Andmeruumi statistika värskendamine ei õnnestunud", + "Your storage is full, files can not be updated or synced anymore!" : "Sinu andmeruum on täis - faile ei saa enam uuendada ega sünkroniseerida!", + "Storage information" : "Andmeruumi teave", + "Storage quota" : "Andmeruumi kvoot", "New folder" : "Uus kaust", "Create new folder" : "Loo uus kaust", + "This name is already in use." : "See nimi on juba kasutusel.", "Create" : "Loo", + "Fill template fields" : "Täida malli väljad", + "Submitting fields …" : "Saadan välju…", "Submit" : "Saada", - "Transfer" : "Teisalda", + "Choose a file or folder to transfer" : "Vali üleantav fail või kaust", + "Transfer" : "Anna üle teisele kasutajale", + "Transfer {path} to {userid}" : "Anna „{path}“ üle kasutajale {userid}", + "Invalid path selected" : "Vigane asukoht on valitud", "Unknown error" : "Tundmatu viga", + "Ownership transfer request sent" : "Üleandmispäring on saadetud", + "Cannot transfer ownership of a file or folder you do not own" : "Sa ei saa teisele kasutaja anda üle kausta või faili, mis pole sinu oma", + "Transfer ownership of a file or folder" : "Kaustade või failide omandi üleandmine teisele kasutajale", + "Choose file or folder to transfer" : "Vali üleantav fail või kaust", "Change" : "Muuda", "New owner" : "Uus omanik", + "Keep {old}" : "Säilita „{old}“", + "Keep without extension" : "Säilita ilma faililaiendita", + "Use {new}" : "Kasuta „{new}“", + "Remove extension" : "Eemalda faililaiend", + "Change file extension" : "Muuda faililaiendit", + "Changing the file extension from \"{old}\" to \"{new}\" may render the file unreadable." : "Muutes senist faililaiendit „{old}“ uueks laiendiks „{new}“ võib fail muutuda loetamatuks.", + "Removing the file extension \"{old}\" may render the file unreadable." : "„{old}“ faililaiendi eemaldamine võib muuta faili loetamatuks.", + "Adding the file extension \"{new}\" may render the file unreadable." : "„{new}“ faililaiendi lisamine võib muuta faili loetamatuks.", + "Do not show this dialog again." : "Ära näita seda vaadet enam uuesti.", + "Select file or folder to link to" : "Vali lingitav fail või kaust", + "Choose {file}" : "Vali „{file}“", + "Share" : "Jaga", "Shared by link" : "Jagatud lingiga", "Shared" : "Jagatud", + "Switch to list view" : "Kasuta loendivaadet", + "Switch to grid view" : "Kasuta ruudustikuvaadet", + "The file could not be found" : "Seda faili ei õnnestu leida", + "Upload was cancelled by user" : "Kasutaja katkestas üleslaadimise", "Not enough free space" : "Pole piisavalt vaba ruumi", "Operation is blocked by access control" : "Tegevus on blokeeritud ligipääsupiirangute poolt", - "Loading current folder" : "Jooksva kausta laadimine", + "Error during upload: {message}" : "Viga üleslaadimisel: {message}", + "Error during upload, status code {status}" : "Viga üleslaadimisel, olekukood {status} ", + "Unknown error during upload" : "Tundmatu viga üleslaadimisel", + "\"{displayName}\" action executed successfully" : "Toiming õnnestus: „{displayName}“", + "Loading current folder" : "Laadin käesolevat kausta", "Retry" : "Proovi uuesti", "No files in here" : "Siin ei ole faile", "Upload some content or sync with your devices!" : "Laadi sisu üles või süngi oma seadmetega!", "Go back" : "Mine tagasi", + "Filter file names …" : "Otsi failinimesid…", "Views" : "Vaated", - "Files settings" : "Failide seaded", + "Files settings" : "Failide seadistused", + "Your files" : "Sinu failid", + "Open in files" : "Ava failirakenduses", "File cannot be accessed" : "Failile ligipääs puudub", - "Clipboard is not available" : "Lõikelauda ei ole saadaval", - "WebDAV URL copied to clipboard" : "WebDAV URL kopeeritud lõikepuhvrisse", - "Sort folders before files" : "Järjesta kaustade enne faile", + "The file could not be found or you do not have permissions to view it. Ask the sender to share it." : "Faili kas ei leidu või sul puudub õigus selle vaatamiseks. Palu saatjat, et ta jagaks antud faili sulle.", + "Clipboard is not available" : "Lõikelaud ei ole saadaval", + "WebDAV URL copied to clipboard" : "WebDAV-i võrguaadress on kopeeritud lõikelauale", + "Sort favorites first" : "Järjesta lemmikud esimesena", + "Sort folders before files" : "Järjesta kaustad enne faile", "Show hidden files" : "Näita peidetud faile", - "Additional settings" : "Lisaseaded", + "Crop image previews" : "Kadreeri piltide eelvaated", + "Enable the grid view" : "Võta kasutusele ruudustikuvaade", + "Enable folder tree" : "Võta kasutusele kaustapuu", + "Additional settings" : "Lisaseadistused", "WebDAV" : "WebDAV", - "Copy to clipboard" : "Kopeeri lõikepuhvrisse", - "Use this address to access your Files via WebDAV" : "Oma failidele WebDAV kaudu ligipääsemiseks kasuta seda aadressi", - "Keyboard shortcuts" : "Klaviatuuri otseteed", + "WebDAV URL" : "WebDAV-i võrguaadress", + "Copy to clipboard" : "Kopeeri lõikelauale", + "Use this address to access your Files via WebDAV" : "Oma failidele WebDAV-i kaudu ligipääsemiseks kasuta seda aadressi", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Kui sa oled kaheastmelise autentimise kasutusele võtnud, siis peal looma ja kasutama rakenduse uut salasõna klikates siia.", + "Warnings" : "Hoiatused", + "Prevent warning dialogs from open or reenable them." : "Ära kasuta hoiatusteateid nende avamisel või uuesti kasutusele võtmisel.", + "Show a warning dialog when changing a file extension." : "Faililaiendi muutmisel näita hoiatust.", + "Keyboard shortcuts" : "Klaviatuuri kiirklahvid", + "Speed up your Files experience with these quick shortcuts." : "Tee failirakenduse kasutamine kiiremaks nende kiirklahvidega.", + "Open the actions menu for a file" : "Ava failitoimingute menüü", + "Rename a file" : "Muuda failinime", + "Delete a file" : "Kustuta fail", + "Favorite or remove a file from favorites" : "Märgi fail lemmikuks või eemalda olek lemmikuna", + "Manage tags for a file" : "Halda failide silte", + "Selection" : "Valik", + "Select all files" : "Vali kõik failid", + "Deselect all files" : "Eemalda kõikide failide valik", + "Select or deselect a file" : "Vali fail või eemalda valik", + "Select a range of files" : "Vali mitu faili", + "Navigation" : "Liikumine", + "Navigate to the parent folder" : "Mine ülakausta", + "Navigate to the file above" : "Liigu ülemise faili juurde", + "Navigate to the file below" : "Liigu alumise faili juurde", + "Navigate to the file on the left (in grid mode)" : "Liigu vasakpoolse faili juurde (ruudustikuvaates)", + "Navigate to the file on the right (in grid mode)" : "Liigu parempoolse faili juurde (ruudustikuvaates)", "View" : "Vaata", + "Toggle the grid view" : "Lülita ruudustikuvaade sisse/välja", + "Open the sidebar for a file" : "Ava faili külgriba", + "Show those shortcuts" : "Näita neid otseteid", "You" : "Sina", + "Shared multiple times with different people" : "Jagatud mitu korda eri kasutajate poolt", + "Error while loading the file data" : "Viga faili andmete laadimisel", "Owner" : "Omanik", "Remove from favorites" : "Eemalda lemmikutest", "Add to favorites" : "Lisa lemmikutesse", "Tags" : "Sildid", "Blank" : "Tühi", "Unable to create new file from template" : "Faili loomine mallist ebaõnnestus", - "Failed to convert file" : "Faili konvertimine ei õnnestunud", - "Deletion cancelled" : "Kustutamine tühistatud", + "Pick a template for {name}" : "Vali mall „{name}“ faili jaoks", + "Create a new file with the selected template" : "Loo valitud malli alusel uus fail", + "Creating file" : "Fail on loomisel", + "Save as {displayName}" : "Salvesta kui „{displayName}“", + "Save as …" : "Salvesta kui…", + "Converting files …" : "Teisendan faile…", + "Failed to convert files: {message}" : "Failide teisendamine ei õnnestunud: {message}", + "All files failed to be converted" : "Kõiki faile ei õnnestunud teisendada", + "One file could not be converted: {message}" : "Ühe faili teisendamine ei õnnestunud: {message}", + "_One file could not be converted_::_%n files could not be converted_" : ["Ühe faili teisendamine ei õnnestunud","%n faili teisendamine ei õnnestunud"], + "_One file successfully converted_::_%n files successfully converted_" : ["Ühe faili teisendamine õnnestus","%n faili teisendamine õnnestus"], + "Files successfully converted" : "Failide teisendamine õnnestus", + "Failed to convert files" : "Failide teisendamine ei õnnestunud", + "Converting file …" : "Teisendan faili…", + "File successfully converted" : "Faili teisendamine õnnestus", + "Failed to convert file: {message}" : "Faili teisendamine ei õnnestunud: {message}", + "Failed to convert file" : "Faili teisendamine ei õnnestunud", + "Deletion cancelled" : "Kustutamine on tühistatud", "Leave this share" : "Lahku jaoskaustast", "Leave these shares" : "Lahku neist jaoskaustadest", - "Disconnect storage" : "Ühenda andmehoidla lahti", + "Disconnect storage" : "Ühenda andmeruum lahti", + "Disconnect storages" : "Ühenda andmeruumid lahti", "Delete permanently" : "Kustuta jäädavalt", "Delete and unshare" : "Kustuta ja lõpeta jagamine", "Delete file" : "Kustuta fail", @@ -122,6 +257,15 @@ "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Sa oled kustutamas {count} objekti","Sa oled kustutamas {count} objekti"], "Confirm deletion" : "Kinnita kustutamine", "Cancel" : "Loobu", + "Moving \"{source}\" to \"{destination}\" …" : "Teisaldan „{source}“ → „{destination}“…", + "Copying \"{source}\" to \"{destination}\" …" : "Kopeerin „{source}“ → „{destination}“…", + "You cannot move a file/folder onto itself or into a subfolder of itself" : "Sa ei saa faili või kausta iseendaks teisaldada ega teisaldada kausta iseenda alamkausta", + "(copy)" : "(koopia)", + "(copy %n)" : "(%n koopia)", + "Move cancelled" : "Teisaldamine on katkestatud", + "A file or folder with that name already exists in this folder" : "Selles kaustas juba on olemas sama nimega fail või kaust", + "The files are locked" : "Need failid on lukustatud", + "The file does not exist anymore" : "Neid faile pole enam olemas", "Choose destination" : "Vali sihtkaust", "Copy to {target}" : "Kopeeri kausta {target}", "Copy" : "Kopeeri", @@ -129,9 +273,12 @@ "Move" : "Teisalda", "Move or copy operation failed" : "Teisaldamine või kopeerimine ei õnnestunud", "Move or copy" : "Liiguta või kopeeri", + "Cancelled move or copy of \"{filename}\"." : "„{filename}“ faili teisaldamine või kopeerimine on katkestatud.", + "Cancelled move or copy operation" : "Teisaldamine või kopeerimine on katkestatud", "Open folder {displayName}" : "Ava kaust {displayName}", "Open in Files" : "Ava failirakenduses", "Open file locally" : "Ava fail kohalikus seadmes", + "The file should now open on your device. If it doesn't, please check that you have the desktop app installed." : "Fail peaks nüüd sinu seadmes või arvutis olema avatud. Kui see nii pole, siis palun kontrolli, et töölauarakendus on paigaldatud.", "Retry and close" : "Proovi uuesti ja sulge", "Open online" : "Ava võrgust", "Failed to redirect to client" : "Kliendi ümbersuunamine ebaõnnestus", @@ -140,6 +287,10 @@ "Open details" : "Ava üksikasjad", "View in folder" : "Vaata kaustas", "Today" : "Täna", + "Last 7 days" : "Viimase 7 päeva jooksul", + "Last 30 days" : "Viimase 30 päeva jooksul", + "This year ({year})" : "Sel aastal ({year})", + "Last year ({year})" : "Eelmisel aastal ({year})", "Documents" : "Dokumendid", "Spreadsheets" : "Arvutustabelid", "Presentations" : "Esitlused", @@ -154,15 +305,25 @@ "Create templates folder" : "Loo mallide kaust", "Templates" : "Mallid", "New template folder" : "Uus kaustamall", + "In folder" : "Kaustas", "Search in folder: {folder}" : "Otsi kaustast: {folder}", + "One of the dropped files could not be processed" : "Ühte siia lisatud failidest ei õnnestunud töödelda", + "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Sinu veebibrauser ei toeta „Filesystem API“ liidestust. Kaustad jäävad üleslaadimata", + "No files to upload" : "Üleslaaditavaid faile pole", + "Unable to create the directory {directory}" : "„{directory}“ kausta loomine ei õnnestu", + "Some files could not be uploaded" : "Mõnda faili ei saanud üles laadida", + "Files uploaded successfully" : "Failide üleslaadimine õnnestus", + "No files to process" : "Töödeldavaid faile pole", "Some files could not be copied" : "Mõnda faili ei saanud kopeerida", "Some files could not be moved" : "Mõnda faili ei saanud teisaldada", "Files copied successfully" : "Failide kopeerimine õnnestus", "Files moved successfully" : "Failide teisaldamine õnnestus", + "Conflicts resolution skipped" : "Andmekonfilkti lahendamine jäi vahele", "Upload cancelled" : "Üleslaadimine on katkestatud", "This operation is forbidden" : "See toiming on keelatud", "This directory is unavailable, please check the logs or contact the administrator" : "See kaust pole saadaval, palun kontrolli logifaile või võta ühendust administraatoriga", "Storage is temporarily not available" : "Salvestusruum pole ajutiselt kättesaadav", + "Unexpected error: {error}" : "Tundmatu viga: {error}", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} kaust","{folderCount} kausta"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fail","{fileCount} faili"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fail ja {folderCount} kaust","1 fail ja {folderCount} kausta"], @@ -206,7 +367,7 @@ "Target folder \"{dir}\" does not exist any more" : "Kausta \"{dir}\" pole enam olemas", "An unknown error has occurred" : "Tekkis tundmatu tõrge", "File could not be uploaded" : "Faili üleslaadimine ebaõnnestus", - "Uploading …" : "Üleslaadmine ...", + "Uploading …" : "Üleslaadmisel...", "{remainingTime} ({currentNumber}/{total})" : "{remainingTime} ({currentNumber}/{total})", "Uploading … ({currentNumber}/{total})" : "Üleslaadimisel… ({currentNumber}/{total})", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})", @@ -237,8 +398,8 @@ "Could not create file \"{file}\"" : "Faili \"{file}\" loomine ebaõnnestus", "Could not create file \"{file}\" because it already exists" : "Faili \"{file}\" loomine ebaõnnestus, sest see on juba olemas", "Could not create folder \"{dir}\" because it already exists" : "Kausta \"{dir}\" loomine ebaõnnestus, sest see on juba olemas", - "Could not fetch file details \"{file}\"" : "Faili \"{file}\" üksikasjade laadimine ebaõnnestus", - "Error deleting file \"{fileName}\"." : "Tõrge faili \"{fileName}\" kustutamisel.", + "Could not fetch file details \"{file}\"" : "Ei õnnestunud laadida „{file}“ faili üksikasju", + "Error deleting file \"{fileName}\"." : "Viga „{fileName}“ faili kustutamisel.", "No search results in other folders for {tag}{filter}{endtag}" : "Teistest kaustadest ei leitud {tag}{filter}{endtag}", "Enter more than two characters to search in other folders" : "Teistest kaustadest otsimiseks sisesta rohkem kui kaks sümbolit", "_%n folder_::_%n folders_" : ["%n kaust","%n kausta"], @@ -248,20 +409,28 @@ "You do not have permission to upload or create files here" : "Sul pole luba siia faile lisada ja üles laadida", "_Uploading %n file_::_Uploading %n files_" : ["Laadin üles %n faili","Laadin üles %n faili"], "New" : "Uus", + "New file/folder menu" : "Uue faili või kausta menüü", "Select file range" : "Vali failivahemik", "{used}%" : "{used}%", "{used} used" : "{used} kasutusel", - "\"{name}\" is an invalid file name." : "\"{name}\" on vigane failinimi.", - "File name cannot be empty." : "Faili nimi ei saa olla tühi.", - "\"/\" is not allowed inside a file name." : "\"/\" pole failinimedes lubatud.", - "\"{name}\" is not an allowed filetype" : "\"{name}\" pole lubatud failitüüp", + "\"{name}\" is an invalid file name." : "„{name}“ on vigane failinimi.", + "File name cannot be empty." : "Failinimi ei saa olla tühi.", + "\"/\" is not allowed inside a file name." : "„/“ pole failinimedes lubatud.", + "\"{name}\" is not an allowed filetype" : "„{name}“ pole lubatud failitüüp", + "Storage of {owner} is full, files cannot be updated or synced anymore!" : "{owner} andmeruum on täis - faile ei saa enam uuendada ega sünkroniseerida!", + "Group folder \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "„{mountPoint}“ grupikausta andmeruum on täis - faile ei saa enam uuendada ega sünkroniseerida!", + "External storage \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "Väline andmeruum „{mountPoint}“ on täis - faile ei saa enam uuendada ega sünkroniseerida!", + "Your storage is full, files cannot be updated or synced anymore!" : "Sinu andmeruum on täis - faile ei saa enam uuendada ega sünkroniseerida!", "Storage of {owner} is almost full ({usedSpacePercent}%)." : "Kasutaja {owner} andmeruum on peaaegu täis ({usedSpacePercent}%)", "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "„{mountPoint}“ grupi andmeruum on peaaegu täis ({usedSpacePercent}%)", "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "Väline andmeruum „{mountPoint}“ on peaaegu täis ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)." : "Su andmeruum on peaaegu täis ({usedSpacePercent}%)", + "_matches \"{filter}\"_::_match \"{filter}\"_" : ["vastab tingimusele „{filter}“","vastab tingimustele „{filter}“"], + "Direct link was copied (only works for people who have access to this file/folder)" : "Otselink on kopeeritud (toimib ainult nende kasutajate puhul, kellel on ligipääs sellele failile/kaustale)", "Path" : "Asukoht", "_%n byte_::_%n bytes_" : ["%n bait","%n baiti"], "Favorited" : "Lemmikud", + "Copy direct link (only works for people who have access to this file/folder)" : "Kopeeri otselink (töötab ainult nende kasutajate puhul, kellel on ligipääs sellele failile/kaustale)", "Upload file" : "Laadi fail üles", "Not favorited" : "Lemmikuks lisamata", "An error occurred while trying to update the tags" : "Siltide uuendamisel tekkis tõrge", @@ -281,6 +450,8 @@ "Favored" : "Märgitud lemmikuks", "Favor" : "Märgi lemmikuks", "Not favored" : "Pole märgitud lemmikuks", + "Submitting fields…" : "Saadan välju…", + "Filter filenames…" : "Otsi failinimesid…", "{count} files could not be converted" : "{count} faili ei õnnestunud teisendada", "{count} files successfully converted" : "{count} faili teisendamine õnnestus" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js index e191ce46939..afc4d7adfc4 100644 --- a/apps/files/l10n/ko.js +++ b/apps/files/l10n/ko.js @@ -67,9 +67,9 @@ OC.L10N.register( "in %s" : "%s", "Transferred from %1$s on %2$s" : "%2$s의 %1$s에서 전송됨", "Files compatibility" : "파일 호환성", - "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "모든 클라이언트와 동기화될 수 있게 제한된 파일이름을 허용하세요. 기본적으로 POSIX(예. 리눅스 혹은 맥오에스)에서 유효한 모든 파일이름은 허용됩니다.", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "모든 클라이언트와 동기화 될 수 있게 제한된 파일이름을 허용하세요. 기본적으로 POSIX (예를 들어 Linux 혹은 macOS) 에서 유효한 모든 파일이름은 허용됩니다.", "Enforce Windows compatibility" : "윈도우 호환성 준수", - "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "예약어나 특수문자사용 같은 윈도우 시스템에서 유효하딘 않은 파일이름은 차단될 것입니다. 그러나 이것은 대소문자 호환성을 강제하지는 않을 것입니다.", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "예약어나 특수 문자 사용 등 Windows 시스템에서 유효하지 않은 파일 이름이 차단됩니다. 그러나 대소문자 구분의 호환성을 강제하지는 않습니다.", "File Management" : "파일 관리", "Home" : "홈", "Target folder does not exist any more" : "대상 폴더가 더 이상 존재하지 않습니다", diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json index 50846fef8d5..148ad7e8d79 100644 --- a/apps/files/l10n/ko.json +++ b/apps/files/l10n/ko.json @@ -65,9 +65,9 @@ "in %s" : "%s", "Transferred from %1$s on %2$s" : "%2$s의 %1$s에서 전송됨", "Files compatibility" : "파일 호환성", - "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "모든 클라이언트와 동기화될 수 있게 제한된 파일이름을 허용하세요. 기본적으로 POSIX(예. 리눅스 혹은 맥오에스)에서 유효한 모든 파일이름은 허용됩니다.", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "모든 클라이언트와 동기화 될 수 있게 제한된 파일이름을 허용하세요. 기본적으로 POSIX (예를 들어 Linux 혹은 macOS) 에서 유효한 모든 파일이름은 허용됩니다.", "Enforce Windows compatibility" : "윈도우 호환성 준수", - "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "예약어나 특수문자사용 같은 윈도우 시스템에서 유효하딘 않은 파일이름은 차단될 것입니다. 그러나 이것은 대소문자 호환성을 강제하지는 않을 것입니다.", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "예약어나 특수 문자 사용 등 Windows 시스템에서 유효하지 않은 파일 이름이 차단됩니다. 그러나 대소문자 구분의 호환성을 강제하지는 않습니다.", "File Management" : "파일 관리", "Home" : "홈", "Target folder does not exist any more" : "대상 폴더가 더 이상 존재하지 않습니다", diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js index 5eb036e6617..d105c56bfbb 100644 --- a/apps/files/l10n/ru.js +++ b/apps/files/l10n/ru.js @@ -229,11 +229,15 @@ OC.L10N.register( "Creating file" : "Создание файла", "Save as {displayName}" : "Сохранить как {displayName}", "Save as …" : "Сохранить как…", + "Converting files …" : "Преобразование файлов…", "Failed to convert files: {message}" : "Не удалось преобразовать файлы: {message}", "All files failed to be converted" : "Не удалось преобразовать все файлы", "One file could not be converted: {message}" : "Один файл не удалось преобразовать: {message}", + "_One file could not be converted_::_%n files could not be converted_" : ["Файл не удалось преобразовать","%n файлы не могут быть преобразованы","%n файлы не могут быть преобразованы","%n файлы не могут быть преобразованы"], + "_One file successfully converted_::_%n files successfully converted_" : ["Файл успешно преобразован","%n файлы успешно преобразованы","%n файлы успешно преобразованы","%n файлы успешно преобразованы"], "Files successfully converted" : "Файлы успешно конвертированы", "Failed to convert files" : "Не удалось преобразовать файлы", + "Converting file …" : "Преобразование файла…", "File successfully converted" : "Файл успешно преобразован", "Failed to convert file: {message}" : "Не удалось преобразовать файл: {message}", "Failed to convert file" : "Не удалось преобразовать файл", @@ -276,6 +280,7 @@ OC.L10N.register( "Open file locally" : "Открыть файл локально", "The file should now open on your device. If it doesn't, please check that you have the desktop app installed." : "Теперь файл должен открыться на вашем устройстве. Если это не произошло, пожалуйста, убедитесь, что у вас установлено настольное приложение.", "Retry and close" : "Повторить попытку и закрыть", + "Open online" : "Открыть онлайн", "Failed to redirect to client" : "Ошибка перенаправления в клиент", "Open locally" : "Открыть локально", "Rename" : "Переименовать", @@ -429,6 +434,7 @@ OC.L10N.register( "Upload file" : "Загрузить файл", "Not favorited" : "Не избранное", "An error occurred while trying to update the tags" : "Во время обновления тегов возникла ошибка", + "You don't have permission to upload or create files here." : "У вас нет разрешения на загрузку или создание файлов здесь.", "Storage informations" : "Сведения о хранилище", "Choose file" : "Выберите файл", "Go to the previous folder" : "Перейти к предыдущей папке", diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json index d711a769db6..ffd73496c8f 100644 --- a/apps/files/l10n/ru.json +++ b/apps/files/l10n/ru.json @@ -227,11 +227,15 @@ "Creating file" : "Создание файла", "Save as {displayName}" : "Сохранить как {displayName}", "Save as …" : "Сохранить как…", + "Converting files …" : "Преобразование файлов…", "Failed to convert files: {message}" : "Не удалось преобразовать файлы: {message}", "All files failed to be converted" : "Не удалось преобразовать все файлы", "One file could not be converted: {message}" : "Один файл не удалось преобразовать: {message}", + "_One file could not be converted_::_%n files could not be converted_" : ["Файл не удалось преобразовать","%n файлы не могут быть преобразованы","%n файлы не могут быть преобразованы","%n файлы не могут быть преобразованы"], + "_One file successfully converted_::_%n files successfully converted_" : ["Файл успешно преобразован","%n файлы успешно преобразованы","%n файлы успешно преобразованы","%n файлы успешно преобразованы"], "Files successfully converted" : "Файлы успешно конвертированы", "Failed to convert files" : "Не удалось преобразовать файлы", + "Converting file …" : "Преобразование файла…", "File successfully converted" : "Файл успешно преобразован", "Failed to convert file: {message}" : "Не удалось преобразовать файл: {message}", "Failed to convert file" : "Не удалось преобразовать файл", @@ -274,6 +278,7 @@ "Open file locally" : "Открыть файл локально", "The file should now open on your device. If it doesn't, please check that you have the desktop app installed." : "Теперь файл должен открыться на вашем устройстве. Если это не произошло, пожалуйста, убедитесь, что у вас установлено настольное приложение.", "Retry and close" : "Повторить попытку и закрыть", + "Open online" : "Открыть онлайн", "Failed to redirect to client" : "Ошибка перенаправления в клиент", "Open locally" : "Открыть локально", "Rename" : "Переименовать", @@ -427,6 +432,7 @@ "Upload file" : "Загрузить файл", "Not favorited" : "Не избранное", "An error occurred while trying to update the tags" : "Во время обновления тегов возникла ошибка", + "You don't have permission to upload or create files here." : "У вас нет разрешения на загрузку или создание файлов здесь.", "Storage informations" : "Сведения о хранилище", "Choose file" : "Выберите файл", "Go to the previous folder" : "Перейти к предыдущей папке", diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js index c9d89c0128e..09336d703cc 100644 --- a/apps/files/l10n/uk.js +++ b/apps/files/l10n/uk.js @@ -235,6 +235,8 @@ OC.L10N.register( "Failed to convert files: {message}" : "Не вдалося конвертувати файли: {message}", "All files failed to be converted" : "Не вдалося конвертувати жодний файл", "One file could not be converted: {message}" : "Неможливо конвертувати один файл: {message}", + "_One file could not be converted_::_%n files could not be converted_" : ["Неможливо конвертувати 1 файл","Неможливо конвертувати %n файли","Неможливо конвертувати %n файлів","Неможливо конвертувати %n файлів"], + "_One file successfully converted_::_%n files successfully converted_" : ["Успішно конвертовано 1 файл","Успішно конвертовано %n файли","Успішно конвертовано %n файлів","Успішно конвертовано %n файлів"], "Files successfully converted" : "Файли успішно конвертовано", "Failed to convert files" : "Не вдалося конвертувати файли", "Converting file …" : "Конвертування файлу ...", diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json index c4952a1a77a..d2fbe22ad88 100644 --- a/apps/files/l10n/uk.json +++ b/apps/files/l10n/uk.json @@ -233,6 +233,8 @@ "Failed to convert files: {message}" : "Не вдалося конвертувати файли: {message}", "All files failed to be converted" : "Не вдалося конвертувати жодний файл", "One file could not be converted: {message}" : "Неможливо конвертувати один файл: {message}", + "_One file could not be converted_::_%n files could not be converted_" : ["Неможливо конвертувати 1 файл","Неможливо конвертувати %n файли","Неможливо конвертувати %n файлів","Неможливо конвертувати %n файлів"], + "_One file successfully converted_::_%n files successfully converted_" : ["Успішно конвертовано 1 файл","Успішно конвертовано %n файли","Успішно конвертовано %n файлів","Успішно конвертовано %n файлів"], "Files successfully converted" : "Файли успішно конвертовано", "Failed to convert files" : "Не вдалося конвертувати файли", "Converting file …" : "Конвертування файлу ...", diff --git a/apps/files/src/actions/downloadAction.ts b/apps/files/src/actions/downloadAction.ts index 32f029d777c..777008c804e 100644 --- a/apps/files/src/actions/downloadAction.ts +++ b/apps/files/src/actions/downloadAction.ts @@ -55,15 +55,15 @@ const downloadNodes = function(nodes: Node[]) { url.searchParams.append('accept', 'zip') } } else { - url = new URL(nodes[0].source) + url = new URL(nodes[0].encodedSource) let base = url.pathname for (const node of nodes.slice(1)) { - base = longestCommonPath(base, (new URL(node.source).pathname)) + base = longestCommonPath(base, (new URL(node.encodedSource).pathname)) } url.pathname = base // The URL contains the path encoded so we need to decode as the query.append will re-encode it - const filenames = nodes.map((node) => decodeURI(node.encodedSource.slice(url.href.length + 1))) + const filenames = nodes.map((node) => decodeURIComponent(node.encodedSource.slice(url.href.length + 1))) url.searchParams.append('accept', 'zip') url.searchParams.append('files', JSON.stringify(filenames)) } diff --git a/apps/files/src/components/FilesListVirtual.vue b/apps/files/src/components/FilesListVirtual.vue index 3042f54a319..4af696bca49 100644 --- a/apps/files/src/components/FilesListVirtual.vue +++ b/apps/files/src/components/FilesListVirtual.vue @@ -864,8 +864,8 @@ export default defineComponent({ .files-list--grid tbody.files-list__tbody { --item-padding: 16px; --icon-preview-size: 166px; - --name-height: 32px; - --mtime-height: 16px; + --name-height: var(--default-clickable-area); + --mtime-height: calc(var(--font-size-small) + var(--default-grid-baseline)); --row-width: calc(var(--icon-preview-size) + var(--item-padding) * 2); --row-height: calc(var(--icon-preview-size) + var(--name-height) + var(--mtime-height) + var(--item-padding) * 2); --checkbox-padding: 0px; @@ -947,7 +947,7 @@ export default defineComponent({ .files-list__row-mtime { width: var(--icon-preview-size); height: var(--mtime-height); - font-size: calc(var(--default-font-size) - 4px); + font-size: var(--font-size-small); } .files-list__row-actions { @@ -958,4 +958,21 @@ export default defineComponent({ height: var(--clickable-area); } } + +@media screen and (max-width: 768px) { + // there is no mtime + .files-list--grid tbody.files-list__tbody { + --mtime-height: 0px; + + // so we move the action to the name + .files-list__row-actions { + inset-block-end: var(--item-padding); + } + + // and we need to keep space on the name for the actions + .files-list__row-name-text { + padding-inline-end: var(--clickable-area) !important; + } + } +} </style> diff --git a/apps/files/src/views/personal-files.ts b/apps/files/src/views/personal-files.ts index 027a6cc7c56..66d4e77b376 100644 --- a/apps/files/src/views/personal-files.ts +++ b/apps/files/src/views/personal-files.ts @@ -7,8 +7,15 @@ import { View, getNavigation } from '@nextcloud/files' import { getContents } from '../services/PersonalFiles' import AccountIcon from '@mdi/svg/svg/account.svg?raw' +import { loadState } from '@nextcloud/initial-state' export default () => { + // Don't show this view if the user has no storage quota + const storageStats = loadState('files', 'storageStats', { quota: -1 }) + if (storageStats.quota === 0) { + return + } + const Navigation = getNavigation() Navigation.register(new View({ id: 'personal', diff --git a/apps/files_external/l10n/pt_BR.js b/apps/files_external/l10n/pt_BR.js index bf9bbb97edc..4df5dddd8db 100644 --- a/apps/files_external/l10n/pt_BR.js +++ b/apps/files_external/l10n/pt_BR.js @@ -7,6 +7,7 @@ OC.L10N.register( "Error configuring OAuth2" : "Erro configurando OAuth2", "Generate keys" : "Gerar chaves", "Error generating key pair" : "Erro ao gerar o par de chaves", + "You are not logged in" : "Você não está logado", "Permission denied" : "Permissão negada", "Forbidden to manage local mounts" : "Proibido gerenciar montagens locais", "Storage with ID \"%d\" not found" : "A armazenagem com a ID \"%d\" não foi encontrada", @@ -63,6 +64,7 @@ OC.L10N.register( "Enable Path Style" : "Ativar Estilo do Caminho", "Legacy (v2) authentication" : "Autenticação (v2) herdada", "Enable multipart copy" : "Habilitar cópia multiparte", + "SSE-C encryption key" : "Chave de criptografia SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Subpasta remota", @@ -104,6 +106,9 @@ OC.L10N.register( "Unable to update this external storage config. {statusMessage}" : "Não é possível atualizar esta configuração de armazenamento externo. {statusMessage}", "New configuration successfully saved" : "Nova configuração salva com sucesso", "Enter missing credentials" : "Digite as credenciais ausentes", + "Credentials successfully set" : "Credenciais configuradas com sucesso", + "Error while setting credentials: {error}" : "Erro ao configurar as credenciais: {error}", + "Checking storage …" : "Verificação do armazenamento …", "There was an error with this external storage." : "Ocorreu um erro com este armazenamento externo.", "We were unable to check the external storage {basename}" : "Não foi possível verificar o armazenamento externo {basename}", "Examine this faulty external storage configuration" : "Examine esta configuração de armazenamento externo com falha", @@ -139,6 +144,8 @@ OC.L10N.register( "Saved" : "Salvo", "Saving …" : "Salvando...", "Save" : "Salvar", + "Failed to save global credentials" : "Falha ao salvar as credenciais globais", + "Failed to save global credentials: {message}" : "Falha ao salvar as credenciais globais: {message}", "No external storage configured or you don't have the permission to configure them" : "Sem armazenamento externo configurado ou você não tem permissão para configurá-los", "Open documentation" : "Abrir documentação", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "O armazenamento externo permite montar serviços e dispositivos de armazenamento externos como dispositivos de armazenamento Nextcloud secundários. Você também pode permitir que as pessoas montem seus próprios serviços de armazenamento externo.", diff --git a/apps/files_external/l10n/pt_BR.json b/apps/files_external/l10n/pt_BR.json index 9ed4c804d4d..02fd258d356 100644 --- a/apps/files_external/l10n/pt_BR.json +++ b/apps/files_external/l10n/pt_BR.json @@ -5,6 +5,7 @@ "Error configuring OAuth2" : "Erro configurando OAuth2", "Generate keys" : "Gerar chaves", "Error generating key pair" : "Erro ao gerar o par de chaves", + "You are not logged in" : "Você não está logado", "Permission denied" : "Permissão negada", "Forbidden to manage local mounts" : "Proibido gerenciar montagens locais", "Storage with ID \"%d\" not found" : "A armazenagem com a ID \"%d\" não foi encontrada", @@ -61,6 +62,7 @@ "Enable Path Style" : "Ativar Estilo do Caminho", "Legacy (v2) authentication" : "Autenticação (v2) herdada", "Enable multipart copy" : "Habilitar cópia multiparte", + "SSE-C encryption key" : "Chave de criptografia SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Subpasta remota", @@ -102,6 +104,9 @@ "Unable to update this external storage config. {statusMessage}" : "Não é possível atualizar esta configuração de armazenamento externo. {statusMessage}", "New configuration successfully saved" : "Nova configuração salva com sucesso", "Enter missing credentials" : "Digite as credenciais ausentes", + "Credentials successfully set" : "Credenciais configuradas com sucesso", + "Error while setting credentials: {error}" : "Erro ao configurar as credenciais: {error}", + "Checking storage …" : "Verificação do armazenamento …", "There was an error with this external storage." : "Ocorreu um erro com este armazenamento externo.", "We were unable to check the external storage {basename}" : "Não foi possível verificar o armazenamento externo {basename}", "Examine this faulty external storage configuration" : "Examine esta configuração de armazenamento externo com falha", @@ -137,6 +142,8 @@ "Saved" : "Salvo", "Saving …" : "Salvando...", "Save" : "Salvar", + "Failed to save global credentials" : "Falha ao salvar as credenciais globais", + "Failed to save global credentials: {message}" : "Falha ao salvar as credenciais globais: {message}", "No external storage configured or you don't have the permission to configure them" : "Sem armazenamento externo configurado ou você não tem permissão para configurá-los", "Open documentation" : "Abrir documentação", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "O armazenamento externo permite montar serviços e dispositivos de armazenamento externos como dispositivos de armazenamento Nextcloud secundários. Você também pode permitir que as pessoas montem seus próprios serviços de armazenamento externo.", diff --git a/apps/files_external/l10n/sk.js b/apps/files_external/l10n/sk.js index ddf46b29e11..54c7ccfb70c 100644 --- a/apps/files_external/l10n/sk.js +++ b/apps/files_external/l10n/sk.js @@ -7,6 +7,8 @@ OC.L10N.register( "Error configuring OAuth2" : "Chyba konfigurovania OAuth2", "Generate keys" : "Vytvoriť kľúče", "Error generating key pair" : "Chyba pri vytváraní dvojice kľúčov", + "You are not logged in" : "Nie ste prihlásený", + "Permission denied" : "Prístup zamietnutý", "Forbidden to manage local mounts" : "Zakázané spravovať lokálne pripojenia", "Storage with ID \"%d\" not found" : "Úložisko s ID \"%d\" sa nenašlo", "Invalid backend or authentication mechanism class" : "Neplatný backend, prípadne trieda mechanizmu autentifikácie", @@ -142,6 +144,8 @@ OC.L10N.register( "Saved" : "Uložené", "Saving …" : "Ukladá sa...", "Save" : "Uložiť", + "Failed to save global credentials" : "Nepodarilo sa uložiť globálne prihlasovacie údaje", + "Failed to save global credentials: {message}" : "Nepodarilo sa uložiť globálne prihlasovacie údaje: {message}", "No external storage configured or you don't have the permission to configure them" : "Žiadne externé úložisko nie je nakonfigurované alebo nemáte práva ich konfigurovať", "Open documentation" : "Otvoriť dokumentáciu", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Externé úložisko umožňuje pripojiť služby externých úložísk a zariadení ako sekundárne zariadenia na ukladanie pre Nextcloud. Môžete tiež umožniť ľuďom pripájať ich vlastné služby externých úložísk.", diff --git a/apps/files_external/l10n/sk.json b/apps/files_external/l10n/sk.json index f6ca5efe4b4..83731a6ed00 100644 --- a/apps/files_external/l10n/sk.json +++ b/apps/files_external/l10n/sk.json @@ -5,6 +5,8 @@ "Error configuring OAuth2" : "Chyba konfigurovania OAuth2", "Generate keys" : "Vytvoriť kľúče", "Error generating key pair" : "Chyba pri vytváraní dvojice kľúčov", + "You are not logged in" : "Nie ste prihlásený", + "Permission denied" : "Prístup zamietnutý", "Forbidden to manage local mounts" : "Zakázané spravovať lokálne pripojenia", "Storage with ID \"%d\" not found" : "Úložisko s ID \"%d\" sa nenašlo", "Invalid backend or authentication mechanism class" : "Neplatný backend, prípadne trieda mechanizmu autentifikácie", @@ -140,6 +142,8 @@ "Saved" : "Uložené", "Saving …" : "Ukladá sa...", "Save" : "Uložiť", + "Failed to save global credentials" : "Nepodarilo sa uložiť globálne prihlasovacie údaje", + "Failed to save global credentials: {message}" : "Nepodarilo sa uložiť globálne prihlasovacie údaje: {message}", "No external storage configured or you don't have the permission to configure them" : "Žiadne externé úložisko nie je nakonfigurované alebo nemáte práva ich konfigurovať", "Open documentation" : "Otvoriť dokumentáciu", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Externé úložisko umožňuje pripojiť služby externých úložísk a zariadení ako sekundárne zariadenia na ukladanie pre Nextcloud. Môžete tiež umožniť ľuďom pripájať ich vlastné služby externých úložísk.", diff --git a/apps/files_reminders/src/actions/setReminderCustomAction.ts b/apps/files_reminders/src/actions/setReminderCustomAction.ts index 0c932fa4799..cfaa1ad169f 100644 --- a/apps/files_reminders/src/actions/setReminderCustomAction.ts +++ b/apps/files_reminders/src/actions/setReminderCustomAction.ts @@ -18,8 +18,17 @@ export const action = new FileAction({ title: () => t('files_reminders', 'Set reminder at custom date & time'), iconSvgInline: () => CalendarClockSvg, - enabled: (_nodes: Node[], view: View) => { - return view.id !== 'trashbin' + enabled: (nodes: Node[], view: View) => { + if (view.id === 'trashbin') { + return false + } + // Only allow on a single node + if (nodes.length !== 1) { + return false + } + const node = nodes.at(0)! + const dueDate = node.attributes['reminder-due-date'] + return dueDate !== undefined }, parent: SET_REMINDER_MENU_ID, diff --git a/apps/files_reminders/src/actions/setReminderMenuAction.ts b/apps/files_reminders/src/actions/setReminderMenuAction.ts index f42277b055a..d6ddcd90677 100644 --- a/apps/files_reminders/src/actions/setReminderMenuAction.ts +++ b/apps/files_reminders/src/actions/setReminderMenuAction.ts @@ -16,8 +16,17 @@ export const action = new FileAction({ displayName: () => t('files_reminders', 'Set reminder'), iconSvgInline: () => AlarmSvg, - enabled: (_nodes: Node[], view: View) => { - return view.id !== 'trashbin' + enabled: (nodes: Node[], view: View) => { + if (view.id === 'trashbin') { + return false + } + // Only allow on a single node + if (nodes.length !== 1) { + return false + } + const node = nodes.at(0)! + const dueDate = node.attributes['reminder-due-date'] + return dueDate !== undefined }, async exec() { diff --git a/apps/files_reminders/src/actions/setReminderSuggestionActions.ts b/apps/files_reminders/src/actions/setReminderSuggestionActions.ts index fae18d758a8..f92b2f89108 100644 --- a/apps/files_reminders/src/actions/setReminderSuggestionActions.ts +++ b/apps/files_reminders/src/actions/setReminderSuggestionActions.ts @@ -74,11 +74,17 @@ const generateFileAction = (option: ReminderOption): FileAction|null => { // Empty svg to hide the icon iconSvgInline: () => '<svg></svg>', - enabled: (_nodes: Node[], view: View) => { + enabled: (nodes: Node[], view: View) => { if (view.id === 'trashbin') { return false } - return Boolean(getDateTime(option.dateTimePreset)) + // Only allow on a single node + if (nodes.length !== 1) { + return false + } + const node = nodes.at(0)! + const dueDate = node.attributes['reminder-due-date'] + return dueDate !== undefined && Boolean(getDateTime(option.dateTimePreset)) }, parent: SET_REMINDER_MENU_ID, diff --git a/apps/files_sharing/composer/composer/autoload_classmap.php b/apps/files_sharing/composer/composer/autoload_classmap.php index b42d1555263..400df9c9771 100644 --- a/apps/files_sharing/composer/composer/autoload_classmap.php +++ b/apps/files_sharing/composer/composer/autoload_classmap.php @@ -59,6 +59,7 @@ return array( 'OCA\\Files_Sharing\\ISharedMountPoint' => $baseDir . '/../lib/ISharedMountPoint.php', 'OCA\\Files_Sharing\\ISharedStorage' => $baseDir . '/../lib/ISharedStorage.php', 'OCA\\Files_Sharing\\Listener\\BeforeDirectFileDownloadListener' => $baseDir . '/../lib/Listener/BeforeDirectFileDownloadListener.php', + 'OCA\\Files_Sharing\\Listener\\BeforeNodeReadListener' => $baseDir . '/../lib/Listener/BeforeNodeReadListener.php', 'OCA\\Files_Sharing\\Listener\\BeforeZipCreatedListener' => $baseDir . '/../lib/Listener/BeforeZipCreatedListener.php', 'OCA\\Files_Sharing\\Listener\\LoadAdditionalListener' => $baseDir . '/../lib/Listener/LoadAdditionalListener.php', 'OCA\\Files_Sharing\\Listener\\LoadPublicFileRequestAuthListener' => $baseDir . '/../lib/Listener/LoadPublicFileRequestAuthListener.php', diff --git a/apps/files_sharing/composer/composer/autoload_static.php b/apps/files_sharing/composer/composer/autoload_static.php index bb364256947..02bb6d08bb5 100644 --- a/apps/files_sharing/composer/composer/autoload_static.php +++ b/apps/files_sharing/composer/composer/autoload_static.php @@ -74,6 +74,7 @@ class ComposerStaticInitFiles_Sharing 'OCA\\Files_Sharing\\ISharedMountPoint' => __DIR__ . '/..' . '/../lib/ISharedMountPoint.php', 'OCA\\Files_Sharing\\ISharedStorage' => __DIR__ . '/..' . '/../lib/ISharedStorage.php', 'OCA\\Files_Sharing\\Listener\\BeforeDirectFileDownloadListener' => __DIR__ . '/..' . '/../lib/Listener/BeforeDirectFileDownloadListener.php', + 'OCA\\Files_Sharing\\Listener\\BeforeNodeReadListener' => __DIR__ . '/..' . '/../lib/Listener/BeforeNodeReadListener.php', 'OCA\\Files_Sharing\\Listener\\BeforeZipCreatedListener' => __DIR__ . '/..' . '/../lib/Listener/BeforeZipCreatedListener.php', 'OCA\\Files_Sharing\\Listener\\LoadAdditionalListener' => __DIR__ . '/..' . '/../lib/Listener/LoadAdditionalListener.php', 'OCA\\Files_Sharing\\Listener\\LoadPublicFileRequestAuthListener' => __DIR__ . '/..' . '/../lib/Listener/LoadPublicFileRequestAuthListener.php', diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js index d02dd933926..866511579d1 100644 --- a/apps/files_sharing/l10n/cs.js +++ b/apps/files_sharing/l10n/cs.js @@ -185,6 +185,8 @@ OC.L10N.register( "Set default folder for accepted shares" : "Nastavit výchozí složku pro přijatá sdílení", "Reset" : "Vrátit na výchozí hodnoty", "Reset folder to system default" : "Resetovat složku na systémovou výchozí", + "Share expiration: " : "Skončení platnosti sdílení:", + "Share Expiration" : "Skončení platnosti sdílení", "group" : "skupina", "conversation" : "konverzace", "remote" : "vzdálené", diff --git a/apps/files_sharing/l10n/cs.json b/apps/files_sharing/l10n/cs.json index 2a4f4775f37..457638daa93 100644 --- a/apps/files_sharing/l10n/cs.json +++ b/apps/files_sharing/l10n/cs.json @@ -183,6 +183,8 @@ "Set default folder for accepted shares" : "Nastavit výchozí složku pro přijatá sdílení", "Reset" : "Vrátit na výchozí hodnoty", "Reset folder to system default" : "Resetovat složku na systémovou výchozí", + "Share expiration: " : "Skončení platnosti sdílení:", + "Share Expiration" : "Skončení platnosti sdílení", "group" : "skupina", "conversation" : "konverzace", "remote" : "vzdálené", diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js index 5e9bbc7336f..e06e205b86f 100644 --- a/apps/files_sharing/l10n/de.js +++ b/apps/files_sharing/l10n/de.js @@ -185,6 +185,8 @@ OC.L10N.register( "Set default folder for accepted shares" : "Standardordner für akzeptierte Freigaben wählen", "Reset" : "Zurücksetzen", "Reset folder to system default" : "Ordner auf Systemstandard zurücksetzen", + "Share expiration: " : "Freigabe-Ablaufdatum:", + "Share Expiration" : "Freigabe-Ablaufdatum", "group" : "Gruppe", "conversation" : "Unterhaltung", "remote" : "Extern", @@ -414,7 +416,7 @@ OC.L10N.register( "Files" : "Dateien", "Download all files" : "Alle Dateien herunterladen", "Search for share recipients" : "Nach Freigabe-Empfängern suchen", - "No recommendations. Start typing." : "Keine Empfehlungen. Beginne mit der Eingabe.", + "No recommendations. Start typing." : "Keine Empfehlungen. Eingabe beginnen.", "Password field can't be empty" : "Passwortfeld darf nicht leer sein", "Allow download" : "Download erlauben", "Share expire date saved" : "Freigabe-Ablaufdatum gespeichert", diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json index b35f6f0ac41..b7c8705ea22 100644 --- a/apps/files_sharing/l10n/de.json +++ b/apps/files_sharing/l10n/de.json @@ -183,6 +183,8 @@ "Set default folder for accepted shares" : "Standardordner für akzeptierte Freigaben wählen", "Reset" : "Zurücksetzen", "Reset folder to system default" : "Ordner auf Systemstandard zurücksetzen", + "Share expiration: " : "Freigabe-Ablaufdatum:", + "Share Expiration" : "Freigabe-Ablaufdatum", "group" : "Gruppe", "conversation" : "Unterhaltung", "remote" : "Extern", @@ -412,7 +414,7 @@ "Files" : "Dateien", "Download all files" : "Alle Dateien herunterladen", "Search for share recipients" : "Nach Freigabe-Empfängern suchen", - "No recommendations. Start typing." : "Keine Empfehlungen. Beginne mit der Eingabe.", + "No recommendations. Start typing." : "Keine Empfehlungen. Eingabe beginnen.", "Password field can't be empty" : "Passwortfeld darf nicht leer sein", "Allow download" : "Download erlauben", "Share expire date saved" : "Freigabe-Ablaufdatum gespeichert", diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js index 5907648c2b2..21b7da2d2c2 100644 --- a/apps/files_sharing/l10n/de_DE.js +++ b/apps/files_sharing/l10n/de_DE.js @@ -185,6 +185,8 @@ OC.L10N.register( "Set default folder for accepted shares" : "Standardordner für akzeptierte Freigaben wählen", "Reset" : "Zurücksetzen", "Reset folder to system default" : "Ordner auf Systemstandard zurücksetzen", + "Share expiration: " : "Freigabe-Ablaufdatum:", + "Share Expiration" : "Freigabe-Ablaufdatum", "group" : "Gruppe", "conversation" : "Unterhaltung", "remote" : "Extern", diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json index fc3c6201a8d..f72a9ae7cfe 100644 --- a/apps/files_sharing/l10n/de_DE.json +++ b/apps/files_sharing/l10n/de_DE.json @@ -183,6 +183,8 @@ "Set default folder for accepted shares" : "Standardordner für akzeptierte Freigaben wählen", "Reset" : "Zurücksetzen", "Reset folder to system default" : "Ordner auf Systemstandard zurücksetzen", + "Share expiration: " : "Freigabe-Ablaufdatum:", + "Share Expiration" : "Freigabe-Ablaufdatum", "group" : "Gruppe", "conversation" : "Unterhaltung", "remote" : "Extern", diff --git a/apps/files_sharing/l10n/en_GB.js b/apps/files_sharing/l10n/en_GB.js index 66fc98b17a9..cb6ec8aa9ea 100644 --- a/apps/files_sharing/l10n/en_GB.js +++ b/apps/files_sharing/l10n/en_GB.js @@ -185,6 +185,8 @@ OC.L10N.register( "Set default folder for accepted shares" : "Set default folder for accepted shares", "Reset" : "Reset", "Reset folder to system default" : "Reset folder to system default", + "Share expiration: " : "Share expiration: ", + "Share Expiration" : "Share Expiration", "group" : "group", "conversation" : "conversation", "remote" : "remote", diff --git a/apps/files_sharing/l10n/en_GB.json b/apps/files_sharing/l10n/en_GB.json index d2393720fa7..fa8e80e2e74 100644 --- a/apps/files_sharing/l10n/en_GB.json +++ b/apps/files_sharing/l10n/en_GB.json @@ -183,6 +183,8 @@ "Set default folder for accepted shares" : "Set default folder for accepted shares", "Reset" : "Reset", "Reset folder to system default" : "Reset folder to system default", + "Share expiration: " : "Share expiration: ", + "Share Expiration" : "Share Expiration", "group" : "group", "conversation" : "conversation", "remote" : "remote", diff --git a/apps/files_sharing/l10n/et_EE.js b/apps/files_sharing/l10n/et_EE.js index 5ac4a4c4558..70446ec3099 100644 --- a/apps/files_sharing/l10n/et_EE.js +++ b/apps/files_sharing/l10n/et_EE.js @@ -1,19 +1,6 @@ OC.L10N.register( "files_sharing", { - "Waiting…" : "Ootan...", - "error" : "viga", - "finished" : "lõpetatud", - "This will stop your current uploads." : "See peatab praegused üleslaadimised.", - "Move or copy" : "Liiguta või kopeeri", - "Download" : "Lae alla", - "Delete" : "Kustuta", - "You can upload into this folder" : "Sa saad sellesse kausta faile üles laadida", - "Terms of service" : "Kasutustingimused", - "Show list view" : "Näita loendivaadet", - "No compatible server found at {remote}" : "Aadressil {remote} ei leitud ühilduvat serverit", - "Invalid server URL" : "Vigane serveri URL", - "Failed to add the public link to your Nextcloud" : "Avaliku lingi lisamine sinu Nextcloudi ebaõnnestus", "File shares" : "Jagatud failid", "Downloaded via public link" : "Alla laetud avalikult lingilt", "Downloaded by {email}" : "Alla laetud {email} poolt", @@ -62,115 +49,196 @@ OC.L10N.register( "{actor} removed you from the share named {file}" : "{actor} lõpetas sinuga {file} jagamise", "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Fail või kaust mis on jagatud e-posti või avaliku lingiga <strong>laeti alla</strong>", "A file or folder was shared from <strong>another server</strong>" : "Fail või kaust jagati <strong>teisest serverist</strong>", - "Files" : "Failid", - "A file or folder has been <strong>shared</strong>" : "Fail või kataloog on <strong>jagatud</strong>", + "Sharing" : "Jagamine", + "A file or folder has been <strong>shared</strong>" : "Fail või kaust on <strong>jagatud</strong>", "Shared link" : "Jagatud link", "Could not delete share" : "Ei saanud jagamist eemaldada", "Please specify a file or folder path" : "Palun määra faili või kausta rada", "Could not create share" : "Ei saanud jagamist luua", - "Invalid date, date format must be YYYY-MM-DD" : "Vigane kuupäev, formaat peab olema YYYY-MM-DD", "Group sharing is disabled by the administrator" : "Grupiga jagamine on administraatori poolt keelatud", "Please specify a valid group" : "Palun määra kehtiv grupp", "Public link sharing is disabled by the administrator" : "Avaliku lingiga jagamine on administraatori poolt keelatud", - "Public upload disabled by the administrator" : "Avalik üleslaadimine on administraatori poolt keelatud", - "Public upload is only possible for publicly shared folders" : "Avalik üleslaadminie on võimalik ainult avalikult jagatud kaustades", - "You cannot share to a Circle if the app is not enabled" : "Sa ei saa jagada Ringi kui see rakendus pole lubatud", - "Please specify a valid circle" : "Palun määra kehtiv ring", "Unknown share type" : "Tundmatu jagamise tüüp", "Not a directory" : "Ei ole kaust", + "Public upload is only possible for publicly shared folders" : "Avalik üleslaadminie on võimalik ainult avalikult jagatud kaustades", + "Public upload disabled by the administrator" : "Avalik üleslaadimine on administraatori poolt keelatud", "Could not lock path" : "Ei saanud rada lukustada", "Wrong or no update parameter given" : "Antud vale või aegunud parameeter", + "Wrong password" : "Vale salasõna", "shared by %s" : "jagas %s", - "Download all files" : "Lae kõik failid alla", + "Download" : "Laadi alla", "Direct link" : "Otsene link", "Share API is disabled" : "Jagamise API on keelatud", "File sharing" : "Faide jagamine", "Share will expire tomorrow" : "Jagamine aegub homme", "Accept" : "Nõustu", "Decline" : "Keeldu", - "Sharing" : "Jagamine", - "Reset" : "Lähtesta", + "Remember to upload the files to %s" : "Ära unusta laadida faile kausta %s", + "We would like to kindly remind you that you have not yet uploaded any files to the shared folder." : "Me lahkesti tuletame sulle meelde, et sa pole veel ühtegi faili lisanud jagatud kausta.", + "Open \"%s\"" : "Ava „%s“", + "People" : "Inimesed", + "Filter accounts" : "Filtreeri kasutajakontosid", + "Expiration date" : "Aegumise kuupäev", + "Select a date" : "Vali kuupäev", + "Password" : "Salasõna", + "Link copied to clipboard" : "Link on lõikelauale kopeeritud", + "_{count} email address already added_::_{count} email addresses already added_" : ["{count} e-posti aadress on juba lisatud","{count} e-posti aadressi on juba lisatud"], + "_{count} email address added_::_{count} email addresses added_" : ["{count} e-posti aadress on lisatud","{count} e-posti aadressi on lisatud"], + "Share link" : "Jaga link", + "Copy to clipboard" : "Kopeeri lõikepuhvrisse", + "Select" : "Vali", + "Close" : "Sulge", + "Cancel" : "Loobu", + "Continue" : "Jätka", + "Invalid path selected" : "Vigane asukoht on valitud", "Unknown error" : "Tundmatu viga", + "Reset" : "Lähtesta", + "Share expiration: " : "Jagamise aegumine:", + "Share Expiration" : "Jagamise aegumine", "group" : "grupp", "conversation" : "vestlus", "remote" : "kaug", "remote group" : "Kauggrupp", "guest" : "külaline", + "by {initiator}" : "kasutajalt {initiator}", "Unshare" : "Lõpeta jagamine", - "Internal link" : "Sisemine link", "Cannot copy, please copy the link manually" : "Ei saa kopeerida, palun kopeeri link käsitsi", "Link copied" : "Link kopeeritud", + "Internal link" : "Sisemine link", + "Create public link" : "Loo avalik link", "Password protection (enforced)" : "Paroolikaitse (jõustatud)", "Password protection" : "Password protection", "Enter a password" : "Enter a password", - "Expiration date (enforced)" : "Aegumise kuupäev (jõustatud)", - "Enter a date" : "Sisesta kuupäev", - "Cancel" : "Loobu", + "Enable link expiration (enforced)" : "Kasuta lingi aegumist (jõustatud)", + "Enable link expiration" : "Kasuta lingi aegumist", + "Enter expiration date (enforced)" : "Sisesta aegumise kuupäev (jõustatud)", + "Enter expiration date" : "Sisesta aegumise kuupäev", + "Create share" : "Lisa jagamine", "Add another link" : "Lisa veel üks link", - "Share link" : "Jaga link", + "View only" : "Ainult vaatamine", "Can edit" : "Võib redigeerida", - "No recommendations. Start typing." : "Soovitusi pole. Alusta trükkimist.", "Resharing is not allowed" : "Edasijagamine pole lubatud", "Searching …" : "Otsin ...", "Guest" : "Külaline", "Group" : "Grupp", "Email" : "Epost", + "Team" : "Tiim", + "Talk conversation" : "Talk suhtlus", + "Enter external recipients" : "Lisa välised saajad", + "Search for internal recipients" : "Otsi rakendusesiseseid saajaid", + "Note from" : "Märge kasutajalt", + "Note:" : "Märkus:", + "File drop" : "Failiedastus", + "Upload files to {foldername}." : "Laadi failid üles kausta {foldername}.", + "By uploading files, you agree to the terms of service." : "Faile üleslaadides nõustud sa kasutustingimustega.", + "View terms of service" : "Vaata kasutustingimusi", + "Terms of service" : "Kasutustingimused", + "Upload files to {folder}" : "Laadi failid üles kausta {folder}", + "{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} jagas sinuga kausta.", + "Nickname" : "Hüüdnimi", + "Enter your nickname" : "Sisesta oma hüüdnimi", + "Read" : "Lugemine", + "Create" : "Lisa", + "Edit" : "Redigeeri", + "Share" : "Jaga", + "Delete" : "Kustuta", + "Password field cannot be empty" : "Salasõna väli ei saa olla tühi", + "Replace current password" : "Asenda praegune salasõna", + "Failed to generate a new token" : "Uue tunnusloa loomine ei õnnestunud", "Allow upload and editing" : "Luba üleslaadimine ja muutmine", "Allow editing" : "Luba muutmine", "Advanced settings" : "Lisavalikud", + "Share label" : "Jaga silti", + "Generating…" : "Loomisel…", + "Generate new token" : "Loo uus tunnusluba", + "Expiration date (enforced)" : "Aegumise kuupäev (jõustatud)", "Set expiration date" : "Määra aegumise kuupäev", - "Expiration date" : "Aegumise kuupäev", + "Hide download" : "Peida allalaaditu", + "Allow download and sync" : "Luba allalaadimine ja sünkroonimine", "Note to recipient" : "Märge saajale", - "Read" : "Lugemine", - "Create" : "Lisa", - "Edit" : "Redigeeri", - "Share" : "Jaga", + "Show files in grid view" : "Näita faile ruudustikuvaates", + "Delete share" : "Kustuta jagamine", + "Link shares" : "Jaoslingid", + "Shares" : "Jagamisi", "Expires {relativetime}" : "Aegub {relativetime}", "this share just expired." : "see jagamine aegus äsja", "Shared with you by {owner}" : "Jagatud sinuga {owner} poolt", + "Internal shares" : "Sisemised jaoskaustad", + "Internal shares explanation" : "Sisemiste jaoskaustade selgitus", + "Share with accounts and teams" : "Jaga kasutajate ja tiimidega", + "External shares" : "Välised jaoskaustad", + "External shares explanation" : "Väliste jaoskaustade selgitus", + "Email, federated cloud id" : "E-posti aadress, liitpilve kasutajatunnus", + "Additional shares" : "Täiendavad jaoskaustad", + "Additional shares explanation" : "Täiendavate jaoskaustade selgitus", + "Open in Files" : "Ava failirakenduses", "Shared" : "Jagatud", - "Shared by" : "Jagas", - "Shared with" : "Jagatud", - "Shared with you and the group {group} by {owner}" : "Jagatud sinu ja grupiga {group} {owner} poolt", - "Shares" : "Jagamisi", + "Shared by {ownerDisplayName}" : "Jagaja: {ownerDisplayName}", + "Shared multiple times with different people" : "Jagatud mitu korda eri kasutajate poolt", + "Show sharing options" : "Näita jagamise valikuid", + "Shared with others" : "Teistega jagatud", + "Upload files to {foldername}" : "Laadi failid üles kausta {foldername}", + "Public file share" : "Avalikud jaosfailid", + "Publicly shared file." : "Avalikult jagatud fail.", + "No file" : "Faile pole", + "The file shared with you will show up here" : "Sinuga jagatud fail on siin nähtav", + "Public share" : "Avalik jaosmeedia", + "Publicly shared files." : "Avalikult jagatud failid.", + "No files" : "Faile pole", + "Files and folders shared with you will show up here" : "Sinuga jagatud failid ja kaustad on siin nähtavad", "No shares" : "Jagamisi pole", "Shared with you" : "Sinuga jagatud", "Nothing shared with you yet" : "Sinuga pole veel midagi jagatud", - "Shared with others" : "Teistega jagatud", "Nothing shared yet" : "Midagi pole veel jagatud", "Shared by link" : "Jagatud lingiga", "No shared links" : "Jagatud linke pole", + "File requests" : "Failipäringud", + "List of file requests." : "Failipäringute loend.", + "No file requests" : "Failipäringuid ei leidu", "Deleted shares" : "Kustutatud jagamised", "No deleted shares" : "Kustutatud jagamisi pole", "Pending shares" : "Ootel jagamised", "No pending shares" : "Ootel jagamisi pole", + "Could not update share" : "Jaosmeedia andmete uuendamine ei õnnestunud", + "Share saved" : "Jaosmeedia andmed on salvestatud", + "Share expiry date saved" : "Jaosmeedia aegumise kuupäev on salvestatud", + "Share hide-download state saved" : "Jaosmeedia „peida allalaadimine“ olek on salvestatud", + "Share label saved" : "Jaosmeedia silt on salvestatud", + "Share note for recipient saved" : "Jaosmeedia märge saajale on salvestatud", + "Share password saved" : "Jaosmeedia salasõna on salvestatud", + "Share permissions saved" : "Jaosmeedia õigused on salvestatud", + "Shared by" : "Jagas", + "Shared with" : "Jagatud", + "Shared with you and the group {group} by {owner}" : "Jagatud sinu ja grupiga {group} {owner} poolt", "Share note" : "Jaga märget", + "Show list view" : "Näita loendivaadet", + "Show grid view" : "Näita ruudustikuvaadet", "Upload files to %s" : "Laadi failid %s", + "%s shared a folder with you." : "%s jagas sinuga kausta.", "Note" : "Märge", "Select or drop files" : "Vali või lohista failid", "Uploaded files:" : "Üleslaetud failid:", + "Share not found" : "Jagamist ei leidu", + "Back to %s" : "Tagasi siia: %s", "Add to your Nextcloud" : "Lisa oma Nextcloudi", - "Files and folders others share with you will show up here" : "Siin näidatakse faile ja kaustasid, mida teised on sulle jaganud", - "Files and folders you share will show up here" : "Siin kuvatakse faile ja kaustasid, mida sa oled teistega jaganud", - "Files and folders you share by link will show up here" : "Siin kuvatakse faile ja kaustasid, mida sa jagad lingiga", - "Shares you deleted will show up here" : "Sinu kustutatud jagamisi näidatakse siin", - "Shares will show up here" : "Jagamisi näidatakse siin", - "Restore" : "Taasta", - "Something happened. Unable to restore the share." : "Midagi juhtus. Ei saa jagamist taastada.", - "No expiration date set" : "Aegumise kuupäeva pole määratud", - "Please specify a valid user" : "Palun määra kehtiv kasutaja", - "Read only" : "kirjutuskaitstud", - "File drop (upload only)" : "Faili lohistamine (ainult üleslaadimine)", - "Upload" : "Lae üles", - "Circle" : "Ring", - "Update" : "Uuenda", - "No entries found in this folder" : "Selles kaustas ei leitud kirjeid", - "Name" : "Nimi", - "Share time" : "Jagamise aeg", - "Reasons might be:" : "Põhjused võivad olla:", - "the item was removed" : "üksus on eemaldatud", - "the link expired" : "link on aegunud", - "sharing is disabled" : "jagamine on peatatud", - "For more info, please ask the person who sent this link." : "Täpsema info saamiseks palun pöördu lingi saatnud isiku poole." + "Waiting…" : "Ootan...", + "error" : "viga", + "finished" : "lõpetatud", + "This will stop your current uploads." : "See peatab praegused üleslaadimised.", + "Move or copy" : "Liiguta või kopeeri", + "You can upload into this folder" : "Sa saad sellesse kausta faile üles laadida", + "No compatible server found at {remote}" : "Aadressil {remote} ei leitud ühilduvat serverit", + "Invalid server URL" : "Vigane serveri URL", + "Failed to add the public link to your Nextcloud" : "Avaliku lingi lisamine sinu Nextcloudi ebaõnnestus", + "Files" : "Failid", + "Download all files" : "Laadi kõik failid alla", + "No recommendations. Start typing." : "Soovitusi pole. Alusta trükkimist.", + "Password field can't be empty" : "Salasõna väli ei saa olla tühi", + "Allow download" : "Luba allalaadimine", + "Share expire date saved" : "Jaosmeedia aegumise kuupäev on salvestatud", + "You are not allowed to edit link shares that you don't own" : "Sa ei saa muuta lingi jagamist, mis pole sinu oma", + "_1 email address already added_::_{count} email addresses already added_" : ["1 e-posti aadress on juba lisatud","{count} e-posti aadressi on juba lisatud"], + "_1 email address added_::_{count} email addresses added_" : ["1 e-posti aadress on lisatud","{count} e-posti aadressi on lisatud"], + "Enter your name" : "Sisesta oma nimi" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/et_EE.json b/apps/files_sharing/l10n/et_EE.json index 80204d618d9..74802762b65 100644 --- a/apps/files_sharing/l10n/et_EE.json +++ b/apps/files_sharing/l10n/et_EE.json @@ -1,17 +1,4 @@ { "translations": { - "Waiting…" : "Ootan...", - "error" : "viga", - "finished" : "lõpetatud", - "This will stop your current uploads." : "See peatab praegused üleslaadimised.", - "Move or copy" : "Liiguta või kopeeri", - "Download" : "Lae alla", - "Delete" : "Kustuta", - "You can upload into this folder" : "Sa saad sellesse kausta faile üles laadida", - "Terms of service" : "Kasutustingimused", - "Show list view" : "Näita loendivaadet", - "No compatible server found at {remote}" : "Aadressil {remote} ei leitud ühilduvat serverit", - "Invalid server URL" : "Vigane serveri URL", - "Failed to add the public link to your Nextcloud" : "Avaliku lingi lisamine sinu Nextcloudi ebaõnnestus", "File shares" : "Jagatud failid", "Downloaded via public link" : "Alla laetud avalikult lingilt", "Downloaded by {email}" : "Alla laetud {email} poolt", @@ -60,115 +47,196 @@ "{actor} removed you from the share named {file}" : "{actor} lõpetas sinuga {file} jagamise", "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Fail või kaust mis on jagatud e-posti või avaliku lingiga <strong>laeti alla</strong>", "A file or folder was shared from <strong>another server</strong>" : "Fail või kaust jagati <strong>teisest serverist</strong>", - "Files" : "Failid", - "A file or folder has been <strong>shared</strong>" : "Fail või kataloog on <strong>jagatud</strong>", + "Sharing" : "Jagamine", + "A file or folder has been <strong>shared</strong>" : "Fail või kaust on <strong>jagatud</strong>", "Shared link" : "Jagatud link", "Could not delete share" : "Ei saanud jagamist eemaldada", "Please specify a file or folder path" : "Palun määra faili või kausta rada", "Could not create share" : "Ei saanud jagamist luua", - "Invalid date, date format must be YYYY-MM-DD" : "Vigane kuupäev, formaat peab olema YYYY-MM-DD", "Group sharing is disabled by the administrator" : "Grupiga jagamine on administraatori poolt keelatud", "Please specify a valid group" : "Palun määra kehtiv grupp", "Public link sharing is disabled by the administrator" : "Avaliku lingiga jagamine on administraatori poolt keelatud", - "Public upload disabled by the administrator" : "Avalik üleslaadimine on administraatori poolt keelatud", - "Public upload is only possible for publicly shared folders" : "Avalik üleslaadminie on võimalik ainult avalikult jagatud kaustades", - "You cannot share to a Circle if the app is not enabled" : "Sa ei saa jagada Ringi kui see rakendus pole lubatud", - "Please specify a valid circle" : "Palun määra kehtiv ring", "Unknown share type" : "Tundmatu jagamise tüüp", "Not a directory" : "Ei ole kaust", + "Public upload is only possible for publicly shared folders" : "Avalik üleslaadminie on võimalik ainult avalikult jagatud kaustades", + "Public upload disabled by the administrator" : "Avalik üleslaadimine on administraatori poolt keelatud", "Could not lock path" : "Ei saanud rada lukustada", "Wrong or no update parameter given" : "Antud vale või aegunud parameeter", + "Wrong password" : "Vale salasõna", "shared by %s" : "jagas %s", - "Download all files" : "Lae kõik failid alla", + "Download" : "Laadi alla", "Direct link" : "Otsene link", "Share API is disabled" : "Jagamise API on keelatud", "File sharing" : "Faide jagamine", "Share will expire tomorrow" : "Jagamine aegub homme", "Accept" : "Nõustu", "Decline" : "Keeldu", - "Sharing" : "Jagamine", - "Reset" : "Lähtesta", + "Remember to upload the files to %s" : "Ära unusta laadida faile kausta %s", + "We would like to kindly remind you that you have not yet uploaded any files to the shared folder." : "Me lahkesti tuletame sulle meelde, et sa pole veel ühtegi faili lisanud jagatud kausta.", + "Open \"%s\"" : "Ava „%s“", + "People" : "Inimesed", + "Filter accounts" : "Filtreeri kasutajakontosid", + "Expiration date" : "Aegumise kuupäev", + "Select a date" : "Vali kuupäev", + "Password" : "Salasõna", + "Link copied to clipboard" : "Link on lõikelauale kopeeritud", + "_{count} email address already added_::_{count} email addresses already added_" : ["{count} e-posti aadress on juba lisatud","{count} e-posti aadressi on juba lisatud"], + "_{count} email address added_::_{count} email addresses added_" : ["{count} e-posti aadress on lisatud","{count} e-posti aadressi on lisatud"], + "Share link" : "Jaga link", + "Copy to clipboard" : "Kopeeri lõikepuhvrisse", + "Select" : "Vali", + "Close" : "Sulge", + "Cancel" : "Loobu", + "Continue" : "Jätka", + "Invalid path selected" : "Vigane asukoht on valitud", "Unknown error" : "Tundmatu viga", + "Reset" : "Lähtesta", + "Share expiration: " : "Jagamise aegumine:", + "Share Expiration" : "Jagamise aegumine", "group" : "grupp", "conversation" : "vestlus", "remote" : "kaug", "remote group" : "Kauggrupp", "guest" : "külaline", + "by {initiator}" : "kasutajalt {initiator}", "Unshare" : "Lõpeta jagamine", - "Internal link" : "Sisemine link", "Cannot copy, please copy the link manually" : "Ei saa kopeerida, palun kopeeri link käsitsi", "Link copied" : "Link kopeeritud", + "Internal link" : "Sisemine link", + "Create public link" : "Loo avalik link", "Password protection (enforced)" : "Paroolikaitse (jõustatud)", "Password protection" : "Password protection", "Enter a password" : "Enter a password", - "Expiration date (enforced)" : "Aegumise kuupäev (jõustatud)", - "Enter a date" : "Sisesta kuupäev", - "Cancel" : "Loobu", + "Enable link expiration (enforced)" : "Kasuta lingi aegumist (jõustatud)", + "Enable link expiration" : "Kasuta lingi aegumist", + "Enter expiration date (enforced)" : "Sisesta aegumise kuupäev (jõustatud)", + "Enter expiration date" : "Sisesta aegumise kuupäev", + "Create share" : "Lisa jagamine", "Add another link" : "Lisa veel üks link", - "Share link" : "Jaga link", + "View only" : "Ainult vaatamine", "Can edit" : "Võib redigeerida", - "No recommendations. Start typing." : "Soovitusi pole. Alusta trükkimist.", "Resharing is not allowed" : "Edasijagamine pole lubatud", "Searching …" : "Otsin ...", "Guest" : "Külaline", "Group" : "Grupp", "Email" : "Epost", + "Team" : "Tiim", + "Talk conversation" : "Talk suhtlus", + "Enter external recipients" : "Lisa välised saajad", + "Search for internal recipients" : "Otsi rakendusesiseseid saajaid", + "Note from" : "Märge kasutajalt", + "Note:" : "Märkus:", + "File drop" : "Failiedastus", + "Upload files to {foldername}." : "Laadi failid üles kausta {foldername}.", + "By uploading files, you agree to the terms of service." : "Faile üleslaadides nõustud sa kasutustingimustega.", + "View terms of service" : "Vaata kasutustingimusi", + "Terms of service" : "Kasutustingimused", + "Upload files to {folder}" : "Laadi failid üles kausta {folder}", + "{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} jagas sinuga kausta.", + "Nickname" : "Hüüdnimi", + "Enter your nickname" : "Sisesta oma hüüdnimi", + "Read" : "Lugemine", + "Create" : "Lisa", + "Edit" : "Redigeeri", + "Share" : "Jaga", + "Delete" : "Kustuta", + "Password field cannot be empty" : "Salasõna väli ei saa olla tühi", + "Replace current password" : "Asenda praegune salasõna", + "Failed to generate a new token" : "Uue tunnusloa loomine ei õnnestunud", "Allow upload and editing" : "Luba üleslaadimine ja muutmine", "Allow editing" : "Luba muutmine", "Advanced settings" : "Lisavalikud", + "Share label" : "Jaga silti", + "Generating…" : "Loomisel…", + "Generate new token" : "Loo uus tunnusluba", + "Expiration date (enforced)" : "Aegumise kuupäev (jõustatud)", "Set expiration date" : "Määra aegumise kuupäev", - "Expiration date" : "Aegumise kuupäev", + "Hide download" : "Peida allalaaditu", + "Allow download and sync" : "Luba allalaadimine ja sünkroonimine", "Note to recipient" : "Märge saajale", - "Read" : "Lugemine", - "Create" : "Lisa", - "Edit" : "Redigeeri", - "Share" : "Jaga", + "Show files in grid view" : "Näita faile ruudustikuvaates", + "Delete share" : "Kustuta jagamine", + "Link shares" : "Jaoslingid", + "Shares" : "Jagamisi", "Expires {relativetime}" : "Aegub {relativetime}", "this share just expired." : "see jagamine aegus äsja", "Shared with you by {owner}" : "Jagatud sinuga {owner} poolt", + "Internal shares" : "Sisemised jaoskaustad", + "Internal shares explanation" : "Sisemiste jaoskaustade selgitus", + "Share with accounts and teams" : "Jaga kasutajate ja tiimidega", + "External shares" : "Välised jaoskaustad", + "External shares explanation" : "Väliste jaoskaustade selgitus", + "Email, federated cloud id" : "E-posti aadress, liitpilve kasutajatunnus", + "Additional shares" : "Täiendavad jaoskaustad", + "Additional shares explanation" : "Täiendavate jaoskaustade selgitus", + "Open in Files" : "Ava failirakenduses", "Shared" : "Jagatud", - "Shared by" : "Jagas", - "Shared with" : "Jagatud", - "Shared with you and the group {group} by {owner}" : "Jagatud sinu ja grupiga {group} {owner} poolt", - "Shares" : "Jagamisi", + "Shared by {ownerDisplayName}" : "Jagaja: {ownerDisplayName}", + "Shared multiple times with different people" : "Jagatud mitu korda eri kasutajate poolt", + "Show sharing options" : "Näita jagamise valikuid", + "Shared with others" : "Teistega jagatud", + "Upload files to {foldername}" : "Laadi failid üles kausta {foldername}", + "Public file share" : "Avalikud jaosfailid", + "Publicly shared file." : "Avalikult jagatud fail.", + "No file" : "Faile pole", + "The file shared with you will show up here" : "Sinuga jagatud fail on siin nähtav", + "Public share" : "Avalik jaosmeedia", + "Publicly shared files." : "Avalikult jagatud failid.", + "No files" : "Faile pole", + "Files and folders shared with you will show up here" : "Sinuga jagatud failid ja kaustad on siin nähtavad", "No shares" : "Jagamisi pole", "Shared with you" : "Sinuga jagatud", "Nothing shared with you yet" : "Sinuga pole veel midagi jagatud", - "Shared with others" : "Teistega jagatud", "Nothing shared yet" : "Midagi pole veel jagatud", "Shared by link" : "Jagatud lingiga", "No shared links" : "Jagatud linke pole", + "File requests" : "Failipäringud", + "List of file requests." : "Failipäringute loend.", + "No file requests" : "Failipäringuid ei leidu", "Deleted shares" : "Kustutatud jagamised", "No deleted shares" : "Kustutatud jagamisi pole", "Pending shares" : "Ootel jagamised", "No pending shares" : "Ootel jagamisi pole", + "Could not update share" : "Jaosmeedia andmete uuendamine ei õnnestunud", + "Share saved" : "Jaosmeedia andmed on salvestatud", + "Share expiry date saved" : "Jaosmeedia aegumise kuupäev on salvestatud", + "Share hide-download state saved" : "Jaosmeedia „peida allalaadimine“ olek on salvestatud", + "Share label saved" : "Jaosmeedia silt on salvestatud", + "Share note for recipient saved" : "Jaosmeedia märge saajale on salvestatud", + "Share password saved" : "Jaosmeedia salasõna on salvestatud", + "Share permissions saved" : "Jaosmeedia õigused on salvestatud", + "Shared by" : "Jagas", + "Shared with" : "Jagatud", + "Shared with you and the group {group} by {owner}" : "Jagatud sinu ja grupiga {group} {owner} poolt", "Share note" : "Jaga märget", + "Show list view" : "Näita loendivaadet", + "Show grid view" : "Näita ruudustikuvaadet", "Upload files to %s" : "Laadi failid %s", + "%s shared a folder with you." : "%s jagas sinuga kausta.", "Note" : "Märge", "Select or drop files" : "Vali või lohista failid", "Uploaded files:" : "Üleslaetud failid:", + "Share not found" : "Jagamist ei leidu", + "Back to %s" : "Tagasi siia: %s", "Add to your Nextcloud" : "Lisa oma Nextcloudi", - "Files and folders others share with you will show up here" : "Siin näidatakse faile ja kaustasid, mida teised on sulle jaganud", - "Files and folders you share will show up here" : "Siin kuvatakse faile ja kaustasid, mida sa oled teistega jaganud", - "Files and folders you share by link will show up here" : "Siin kuvatakse faile ja kaustasid, mida sa jagad lingiga", - "Shares you deleted will show up here" : "Sinu kustutatud jagamisi näidatakse siin", - "Shares will show up here" : "Jagamisi näidatakse siin", - "Restore" : "Taasta", - "Something happened. Unable to restore the share." : "Midagi juhtus. Ei saa jagamist taastada.", - "No expiration date set" : "Aegumise kuupäeva pole määratud", - "Please specify a valid user" : "Palun määra kehtiv kasutaja", - "Read only" : "kirjutuskaitstud", - "File drop (upload only)" : "Faili lohistamine (ainult üleslaadimine)", - "Upload" : "Lae üles", - "Circle" : "Ring", - "Update" : "Uuenda", - "No entries found in this folder" : "Selles kaustas ei leitud kirjeid", - "Name" : "Nimi", - "Share time" : "Jagamise aeg", - "Reasons might be:" : "Põhjused võivad olla:", - "the item was removed" : "üksus on eemaldatud", - "the link expired" : "link on aegunud", - "sharing is disabled" : "jagamine on peatatud", - "For more info, please ask the person who sent this link." : "Täpsema info saamiseks palun pöördu lingi saatnud isiku poole." + "Waiting…" : "Ootan...", + "error" : "viga", + "finished" : "lõpetatud", + "This will stop your current uploads." : "See peatab praegused üleslaadimised.", + "Move or copy" : "Liiguta või kopeeri", + "You can upload into this folder" : "Sa saad sellesse kausta faile üles laadida", + "No compatible server found at {remote}" : "Aadressil {remote} ei leitud ühilduvat serverit", + "Invalid server URL" : "Vigane serveri URL", + "Failed to add the public link to your Nextcloud" : "Avaliku lingi lisamine sinu Nextcloudi ebaõnnestus", + "Files" : "Failid", + "Download all files" : "Laadi kõik failid alla", + "No recommendations. Start typing." : "Soovitusi pole. Alusta trükkimist.", + "Password field can't be empty" : "Salasõna väli ei saa olla tühi", + "Allow download" : "Luba allalaadimine", + "Share expire date saved" : "Jaosmeedia aegumise kuupäev on salvestatud", + "You are not allowed to edit link shares that you don't own" : "Sa ei saa muuta lingi jagamist, mis pole sinu oma", + "_1 email address already added_::_{count} email addresses already added_" : ["1 e-posti aadress on juba lisatud","{count} e-posti aadressi on juba lisatud"], + "_1 email address added_::_{count} email addresses added_" : ["1 e-posti aadress on lisatud","{count} e-posti aadressi on lisatud"], + "Enter your name" : "Sisesta oma nimi" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js index 8eaecca7103..d7108e65633 100644 --- a/apps/files_sharing/l10n/fr.js +++ b/apps/files_sharing/l10n/fr.js @@ -221,8 +221,8 @@ OC.L10N.register( "Password protection (enforced)" : "Protection par mot de passe (forcée)", "Password protection" : "Protection par mot de passe", "Enter a password" : "Saisissez un mot de passe", - "Enable link expiration (enforced)" : "Activer l'expiration des liens (forcée)", - "Enable link expiration" : "Activer l'expiration des liens", + "Enable link expiration (enforced)" : "Activer l'expiration du lien (forcée)", + "Enable link expiration" : "Activer l'expiration du lien", "Enter expiration date (enforced)" : "Saisir la date d'expiration (obligatoire)", "Enter expiration date" : "Saisir la date d'expiration", "Create share" : "Créer un partage", diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json index 4afb0b1215f..a028ce2401b 100644 --- a/apps/files_sharing/l10n/fr.json +++ b/apps/files_sharing/l10n/fr.json @@ -219,8 +219,8 @@ "Password protection (enforced)" : "Protection par mot de passe (forcée)", "Password protection" : "Protection par mot de passe", "Enter a password" : "Saisissez un mot de passe", - "Enable link expiration (enforced)" : "Activer l'expiration des liens (forcée)", - "Enable link expiration" : "Activer l'expiration des liens", + "Enable link expiration (enforced)" : "Activer l'expiration du lien (forcée)", + "Enable link expiration" : "Activer l'expiration du lien", "Enter expiration date (enforced)" : "Saisir la date d'expiration (obligatoire)", "Enter expiration date" : "Saisir la date d'expiration", "Create share" : "Créer un partage", diff --git a/apps/files_sharing/l10n/ga.js b/apps/files_sharing/l10n/ga.js index 7b7966e2e43..c81dde218c8 100644 --- a/apps/files_sharing/l10n/ga.js +++ b/apps/files_sharing/l10n/ga.js @@ -185,6 +185,8 @@ OC.L10N.register( "Set default folder for accepted shares" : "Socraigh fillteán réamhshocraithe le haghaidh scaireanna glactha", "Reset" : "Athshocraigh", "Reset folder to system default" : "Athshocraigh an fillteán go réamhshocrú an chórais", + "Share expiration: " : "Éaga scaireanna:", + "Share Expiration" : "Comhroinn Éaga", "group" : "grúpa", "conversation" : "comhrá", "remote" : "iargúlta", diff --git a/apps/files_sharing/l10n/ga.json b/apps/files_sharing/l10n/ga.json index e45ccf82d51..0c31f3aa1c1 100644 --- a/apps/files_sharing/l10n/ga.json +++ b/apps/files_sharing/l10n/ga.json @@ -183,6 +183,8 @@ "Set default folder for accepted shares" : "Socraigh fillteán réamhshocraithe le haghaidh scaireanna glactha", "Reset" : "Athshocraigh", "Reset folder to system default" : "Athshocraigh an fillteán go réamhshocrú an chórais", + "Share expiration: " : "Éaga scaireanna:", + "Share Expiration" : "Comhroinn Éaga", "group" : "grúpa", "conversation" : "comhrá", "remote" : "iargúlta", diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js index 5d678d52d37..34971d60de2 100644 --- a/apps/files_sharing/l10n/pt_BR.js +++ b/apps/files_sharing/l10n/pt_BR.js @@ -185,6 +185,8 @@ OC.L10N.register( "Set default folder for accepted shares" : "Definir pasta padrão para compartilhamentos aceitos", "Reset" : "Redefinir", "Reset folder to system default" : "Redefinir pasta para o padrão do sistema", + "Share expiration: " : "Vencimento do compartilhamento:", + "Share Expiration" : "Vencimento do Compartilhamento", "group" : "grupo", "conversation" : "conversa", "remote" : "remoto", @@ -245,7 +247,7 @@ OC.L10N.register( "Email" : "E-mail", "Team" : "Equipe", "Talk conversation" : "Conversa Talk", - "Deck board" : "Painel de deck", + "Deck board" : "Painel de Deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "em {server}", "Enter external recipients" : "Insira destinatários externos", diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json index fc41624ec0d..fed35e3bed9 100644 --- a/apps/files_sharing/l10n/pt_BR.json +++ b/apps/files_sharing/l10n/pt_BR.json @@ -183,6 +183,8 @@ "Set default folder for accepted shares" : "Definir pasta padrão para compartilhamentos aceitos", "Reset" : "Redefinir", "Reset folder to system default" : "Redefinir pasta para o padrão do sistema", + "Share expiration: " : "Vencimento do compartilhamento:", + "Share Expiration" : "Vencimento do Compartilhamento", "group" : "grupo", "conversation" : "conversa", "remote" : "remoto", @@ -243,7 +245,7 @@ "Email" : "E-mail", "Team" : "Equipe", "Talk conversation" : "Conversa Talk", - "Deck board" : "Painel de deck", + "Deck board" : "Painel de Deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "em {server}", "Enter external recipients" : "Insira destinatários externos", diff --git a/apps/files_sharing/l10n/uk.js b/apps/files_sharing/l10n/uk.js index 76f6f62c735..103f94a58fc 100644 --- a/apps/files_sharing/l10n/uk.js +++ b/apps/files_sharing/l10n/uk.js @@ -184,6 +184,8 @@ OC.L10N.register( "Set default folder for accepted shares" : "Встановити типовий каталог для прийнятих спільних ресурсів", "Reset" : "Скидання", "Reset folder to system default" : "Відновити типові системні налаштування для каталогу", + "Share expiration: " : "Термін дії спільного ресурсу:", + "Share Expiration" : "Термін дії спільного ресурсу:", "group" : "група", "conversation" : "розмова", "remote" : "віддалений", diff --git a/apps/files_sharing/l10n/uk.json b/apps/files_sharing/l10n/uk.json index 909a184aaea..6a972250716 100644 --- a/apps/files_sharing/l10n/uk.json +++ b/apps/files_sharing/l10n/uk.json @@ -182,6 +182,8 @@ "Set default folder for accepted shares" : "Встановити типовий каталог для прийнятих спільних ресурсів", "Reset" : "Скидання", "Reset folder to system default" : "Відновити типові системні налаштування для каталогу", + "Share expiration: " : "Термін дії спільного ресурсу:", + "Share Expiration" : "Термін дії спільного ресурсу:", "group" : "група", "conversation" : "розмова", "remote" : "віддалений", diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js index e2877be10f8..b669a4d213f 100644 --- a/apps/files_sharing/l10n/zh_CN.js +++ b/apps/files_sharing/l10n/zh_CN.js @@ -185,6 +185,8 @@ OC.L10N.register( "Set default folder for accepted shares" : "设置已接受共享的默认文件夹", "Reset" : "重置", "Reset folder to system default" : "重置文件夹为系统默认值", + "Share expiration: " : "共享有效期:", + "Share Expiration" : "共享有效期", "group" : "分组", "conversation" : "会话", "remote" : "远程", diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json index e855ad969cf..80418e9def9 100644 --- a/apps/files_sharing/l10n/zh_CN.json +++ b/apps/files_sharing/l10n/zh_CN.json @@ -183,6 +183,8 @@ "Set default folder for accepted shares" : "设置已接受共享的默认文件夹", "Reset" : "重置", "Reset folder to system default" : "重置文件夹为系统默认值", + "Share expiration: " : "共享有效期:", + "Share Expiration" : "共享有效期", "group" : "分组", "conversation" : "会话", "remote" : "远程", diff --git a/apps/files_sharing/l10n/zh_HK.js b/apps/files_sharing/l10n/zh_HK.js index 9075d7eebe6..18275f217eb 100644 --- a/apps/files_sharing/l10n/zh_HK.js +++ b/apps/files_sharing/l10n/zh_HK.js @@ -185,6 +185,8 @@ OC.L10N.register( "Set default folder for accepted shares" : "為已接受的分享選擇一個默認資料夾", "Reset" : "重設", "Reset folder to system default" : "將資料夾重置為系統默認值", + "Share expiration: " : "共享有效期:", + "Share Expiration" : "共享有效期", "group" : "群組", "conversation" : "對話", "remote" : "遠端", diff --git a/apps/files_sharing/l10n/zh_HK.json b/apps/files_sharing/l10n/zh_HK.json index 9c364df131f..215d60c4d0e 100644 --- a/apps/files_sharing/l10n/zh_HK.json +++ b/apps/files_sharing/l10n/zh_HK.json @@ -183,6 +183,8 @@ "Set default folder for accepted shares" : "為已接受的分享選擇一個默認資料夾", "Reset" : "重設", "Reset folder to system default" : "將資料夾重置為系統默認值", + "Share expiration: " : "共享有效期:", + "Share Expiration" : "共享有效期", "group" : "群組", "conversation" : "對話", "remote" : "遠端", diff --git a/apps/files_sharing/lib/AppInfo/Application.php b/apps/files_sharing/lib/AppInfo/Application.php index 6c0d5ca0781..4c47d3fc2c0 100644 --- a/apps/files_sharing/lib/AppInfo/Application.php +++ b/apps/files_sharing/lib/AppInfo/Application.php @@ -16,6 +16,7 @@ use OCA\Files_Sharing\External\Manager; use OCA\Files_Sharing\External\MountProvider as ExternalMountProvider; use OCA\Files_Sharing\Helper; use OCA\Files_Sharing\Listener\BeforeDirectFileDownloadListener; +use OCA\Files_Sharing\Listener\BeforeNodeReadListener; use OCA\Files_Sharing\Listener\BeforeZipCreatedListener; use OCA\Files_Sharing\Listener\LoadAdditionalListener; use OCA\Files_Sharing\Listener\LoadPublicFileRequestAuthListener; @@ -42,6 +43,7 @@ use OCP\Federation\ICloudIdManager; use OCP\Files\Config\IMountProviderCollection; use OCP\Files\Events\BeforeDirectFileDownloadEvent; use OCP\Files\Events\BeforeZipCreatedEvent; +use OCP\Files\Events\Node\BeforeNodeReadEvent; use OCP\Group\Events\GroupChangedEvent; use OCP\Group\Events\GroupDeletedEvent; use OCP\Group\Events\UserAddedEvent; @@ -94,9 +96,13 @@ class Application extends App implements IBootstrap { $context->registerEventListener(ShareCreatedEvent::class, UserShareAcceptanceListener::class); $context->registerEventListener(UserAddedEvent::class, UserAddedToGroupListener::class); - // Handle download events for view only checks - $context->registerEventListener(BeforeZipCreatedEvent::class, BeforeZipCreatedListener::class); - $context->registerEventListener(BeforeDirectFileDownloadEvent::class, BeforeDirectFileDownloadListener::class); + // Publish activity for public download + $context->registerEventListener(BeforeNodeReadEvent::class, BeforeNodeReadListener::class); + $context->registerEventListener(BeforeZipCreatedEvent::class, BeforeNodeReadListener::class); + + // Handle download events for view only checks. Priority higher than 0 to run early. + $context->registerEventListener(BeforeZipCreatedEvent::class, BeforeZipCreatedListener::class, 5); + $context->registerEventListener(BeforeDirectFileDownloadEvent::class, BeforeDirectFileDownloadListener::class, 5); // File request auth $context->registerEventListener(BeforeTemplateRenderedEvent::class, LoadPublicFileRequestAuthListener::class); diff --git a/apps/files_sharing/lib/Controller/ShareController.php b/apps/files_sharing/lib/Controller/ShareController.php index cfd9628410e..ad8023ba6bb 100644 --- a/apps/files_sharing/lib/Controller/ShareController.php +++ b/apps/files_sharing/lib/Controller/ShareController.php @@ -9,7 +9,6 @@ namespace OCA\Files_Sharing\Controller; use OC\Security\CSP\ContentSecurityPolicy; use OCA\DAV\Connector\Sabre\PublicAuth; use OCA\FederatedFileSharing\FederatedShareProvider; -use OCA\Files_Sharing\Activity\Providers\Downloads; use OCA\Files_Sharing\Event\BeforeTemplateRenderedEvent; use OCA\Files_Sharing\Event\ShareLinkAccessedEvent; use OCP\Accounts\IAccountManager; @@ -28,7 +27,6 @@ use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\File; use OCP\Files\Folder; use OCP\Files\IRootFolder; -use OCP\Files\Node; use OCP\Files\NotFoundException; use OCP\HintException; use OCP\IConfig; @@ -368,15 +366,9 @@ class ShareController extends AuthPublicShareController { throw new NotFoundException(); } - // Single file share - if ($share->getNode() instanceof File) { - // Single file download - $this->singleFileDownloaded($share, $share->getNode()); - } - // Directory share - else { - /** @var Folder $node */ - $node = $share->getNode(); + $node = $share->getNode(); + if ($node instanceof Folder) { + // Directory share // Try to get the path if ($path !== '') { @@ -391,22 +383,10 @@ class ShareController extends AuthPublicShareController { if ($node instanceof Folder) { if ($files === null || $files === '') { - // The folder is downloaded - $this->singleFileDownloaded($share, $share->getNode()); - } else { - $fileList = json_decode($files); - // in case we get only a single file - if (!is_array($fileList)) { - $fileList = [$fileList]; - } - foreach ($fileList as $file) { - $subNode = $node->get($file); - $this->singleFileDownloaded($share, $subNode); + if ($share->getHideDownload()) { + throw new NotFoundException('Downloading a folder'); } } - } else { - // Single file download - $this->singleFileDownloaded($share, $share->getNode()); } } @@ -419,77 +399,4 @@ class ShareController extends AuthPublicShareController { } return new RedirectResponse($this->urlGenerator->getAbsoluteURL($davUrl)); } - - /** - * create activity if a single file was downloaded from a link share - * - * @param Share\IShare $share - * @throws NotFoundException when trying to download a folder of a "hide download" share - */ - protected function singleFileDownloaded(IShare $share, Node $node) { - if ($share->getHideDownload() && $node instanceof Folder) { - throw new NotFoundException('Downloading a folder'); - } - - $fileId = $node->getId(); - - $userFolder = $this->rootFolder->getUserFolder($share->getSharedBy()); - $userNode = $userFolder->getFirstNodeById($fileId); - $ownerFolder = $this->rootFolder->getUserFolder($share->getShareOwner()); - $userPath = $userFolder->getRelativePath($userNode->getPath()); - $ownerPath = $ownerFolder->getRelativePath($node->getPath()); - $remoteAddress = $this->request->getRemoteAddress(); - $dateTime = new \DateTime(); - $dateTime = $dateTime->format('Y-m-d H'); - $remoteAddressHash = md5($dateTime . '-' . $remoteAddress); - - $parameters = [$userPath]; - - if ($share->getShareType() === IShare::TYPE_EMAIL) { - if ($node instanceof File) { - $subject = Downloads::SUBJECT_SHARED_FILE_BY_EMAIL_DOWNLOADED; - } else { - $subject = Downloads::SUBJECT_SHARED_FOLDER_BY_EMAIL_DOWNLOADED; - } - $parameters[] = $share->getSharedWith(); - } else { - if ($node instanceof File) { - $subject = Downloads::SUBJECT_PUBLIC_SHARED_FILE_DOWNLOADED; - $parameters[] = $remoteAddressHash; - } else { - $subject = Downloads::SUBJECT_PUBLIC_SHARED_FOLDER_DOWNLOADED; - $parameters[] = $remoteAddressHash; - } - } - - $this->publishActivity($subject, $parameters, $share->getSharedBy(), $fileId, $userPath); - - if ($share->getShareOwner() !== $share->getSharedBy()) { - $parameters[0] = $ownerPath; - $this->publishActivity($subject, $parameters, $share->getShareOwner(), $fileId, $ownerPath); - } - } - - /** - * publish activity - * - * @param string $subject - * @param array $parameters - * @param string $affectedUser - * @param int $fileId - * @param string $filePath - */ - protected function publishActivity($subject, - array $parameters, - $affectedUser, - $fileId, - $filePath) { - $event = $this->activityManager->generateEvent(); - $event->setApp('files_sharing') - ->setType('public_links') - ->setSubject($subject, $parameters) - ->setAffectedUser($affectedUser) - ->setObject('files', $fileId, $filePath); - $this->activityManager->publish($event); - } } diff --git a/apps/files_sharing/lib/ExpireSharesJob.php b/apps/files_sharing/lib/ExpireSharesJob.php index 8ea6fee8a5c..d78352cfeaa 100644 --- a/apps/files_sharing/lib/ExpireSharesJob.php +++ b/apps/files_sharing/lib/ExpireSharesJob.php @@ -8,6 +8,7 @@ namespace OCA\Files_Sharing; use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\TimedJob; +use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; use OCP\Share\Exceptions\ShareNotFound; use OCP\Share\IManager; @@ -49,15 +50,9 @@ class ExpireSharesJob extends TimedJob { ->from('share') ->where( $qb->expr()->andX( - $qb->expr()->orX( - $qb->expr()->eq('share_type', $qb->expr()->literal(IShare::TYPE_LINK)), - $qb->expr()->eq('share_type', $qb->expr()->literal(IShare::TYPE_EMAIL)) - ), + $qb->expr()->in('share_type', $qb->createNamedParameter([IShare::TYPE_LINK, IShare::TYPE_EMAIL], IQueryBuilder::PARAM_INT_ARRAY)), $qb->expr()->lte('expiration', $qb->expr()->literal($now)), - $qb->expr()->orX( - $qb->expr()->eq('item_type', $qb->expr()->literal('file')), - $qb->expr()->eq('item_type', $qb->expr()->literal('folder')) - ) + $qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)) ) ); diff --git a/apps/files_sharing/lib/Listener/BeforeNodeReadListener.php b/apps/files_sharing/lib/Listener/BeforeNodeReadListener.php new file mode 100644 index 00000000000..d19bc8dfae9 --- /dev/null +++ b/apps/files_sharing/lib/Listener/BeforeNodeReadListener.php @@ -0,0 +1,189 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OCA\Files_Sharing\Listener; + +use OCA\Files_Sharing\Activity\Providers\Downloads; +use OCP\EventDispatcher\Event; +use OCP\EventDispatcher\IEventListener; +use OCP\Files\Events\BeforeZipCreatedEvent; +use OCP\Files\Events\Node\BeforeNodeReadEvent; +use OCP\Files\File; +use OCP\Files\Folder; +use OCP\Files\IRootFolder; +use OCP\Files\NotFoundException; +use OCP\Files\Storage\ISharedStorage; +use OCP\ICache; +use OCP\ICacheFactory; +use OCP\IRequest; +use OCP\ISession; +use OCP\Share\IShare; + +/** + * @template-implements IEventListener<BeforeNodeReadEvent|BeforeZipCreatedEvent|Event> + */ +class BeforeNodeReadListener implements IEventListener { + private ICache $cache; + + public function __construct( + private ISession $session, + private IRootFolder $rootFolder, + private \OCP\Activity\IManager $activityManager, + private IRequest $request, + ICacheFactory $cacheFactory, + ) { + $this->cache = $cacheFactory->createDistributed('files_sharing_activity_events'); + } + + public function handle(Event $event): void { + if ($event instanceof BeforeZipCreatedEvent) { + $this->handleBeforeZipCreatedEvent($event); + } elseif ($event instanceof BeforeNodeReadEvent) { + $this->handleBeforeNodeReadEvent($event); + } + } + + public function handleBeforeZipCreatedEvent(BeforeZipCreatedEvent $event): void { + $files = $event->getFiles(); + if (count($files) !== 0) { + /* No need to do anything, activity will be triggered for each file in the zip by the BeforeNodeReadEvent */ + return; + } + + $node = $event->getFolder(); + if (!($node instanceof Folder)) { + return; + } + + try { + $storage = $node->getStorage(); + } catch (NotFoundException) { + return; + } + + if (!$storage->instanceOfStorage(ISharedStorage::class)) { + return; + } + + /** @var ISharedStorage $storage */ + $share = $storage->getShare(); + + if (!in_array($share->getShareType(), [IShare::TYPE_EMAIL, IShare::TYPE_LINK])) { + return; + } + + /* Cache that that folder download activity was published */ + $this->cache->set($this->request->getId(), $node->getPath(), 3600); + + $this->singleFileDownloaded($share, $node); + } + + public function handleBeforeNodeReadEvent(BeforeNodeReadEvent $event): void { + $node = $event->getNode(); + if (!($node instanceof File)) { + return; + } + + try { + $storage = $node->getStorage(); + } catch (NotFoundException) { + return; + } + + if (!$storage->instanceOfStorage(ISharedStorage::class)) { + return; + } + + /** @var ISharedStorage $storage */ + $share = $storage->getShare(); + + if (!in_array($share->getShareType(), [IShare::TYPE_EMAIL, IShare::TYPE_LINK])) { + return; + } + + $path = $this->cache->get($this->request->getId()); + if (is_string($path) && str_starts_with($node->getPath(), $path)) { + /* An activity was published for a containing folder already */ + return; + } + + /* Avoid publishing several activities for one video playing */ + $cacheKey = $node->getId() . $node->getPath() . $this->session->getId(); + if (($this->request->getHeader('range') !== '') && ($this->cache->get($cacheKey) === 'true')) { + /* This is a range request and an activity for the same file was published in the same session */ + return; + } + $this->cache->set($cacheKey, 'true', 3600); + + $this->singleFileDownloaded($share, $node); + } + + /** + * create activity if a single file or folder was downloaded from a link share + */ + protected function singleFileDownloaded(IShare $share, File|Folder $node): void { + $fileId = $node->getId(); + + $userFolder = $this->rootFolder->getUserFolder($share->getSharedBy()); + $userNode = $userFolder->getFirstNodeById($fileId); + $ownerFolder = $this->rootFolder->getUserFolder($share->getShareOwner()); + $userPath = $userFolder->getRelativePath($userNode?->getPath() ?? '') ?? ''; + $ownerPath = $ownerFolder->getRelativePath($node->getPath()) ?? ''; + + $parameters = [$userPath]; + + if ($share->getShareType() === IShare::TYPE_EMAIL) { + if ($node instanceof File) { + $subject = Downloads::SUBJECT_SHARED_FILE_BY_EMAIL_DOWNLOADED; + } else { + $subject = Downloads::SUBJECT_SHARED_FOLDER_BY_EMAIL_DOWNLOADED; + } + $parameters[] = $share->getSharedWith(); + } elseif ($share->getShareType() === IShare::TYPE_LINK) { + if ($node instanceof File) { + $subject = Downloads::SUBJECT_PUBLIC_SHARED_FILE_DOWNLOADED; + } else { + $subject = Downloads::SUBJECT_PUBLIC_SHARED_FOLDER_DOWNLOADED; + } + $remoteAddress = $this->request->getRemoteAddress(); + $dateTime = new \DateTime(); + $dateTime = $dateTime->format('Y-m-d H'); + $remoteAddressHash = md5($dateTime . '-' . $remoteAddress); + $parameters[] = $remoteAddressHash; + } else { + return; + } + + $this->publishActivity($subject, $parameters, $share->getSharedBy(), $fileId, $userPath); + + if ($share->getShareOwner() !== $share->getSharedBy()) { + $parameters[0] = $ownerPath; + $this->publishActivity($subject, $parameters, $share->getShareOwner(), $fileId, $ownerPath); + } + } + + /** + * publish activity + */ + protected function publishActivity( + string $subject, + array $parameters, + string $affectedUser, + int $fileId, + string $filePath, + ): void { + $event = $this->activityManager->generateEvent(); + $event->setApp('files_sharing') + ->setType('public_links') + ->setSubject($subject, $parameters) + ->setAffectedUser($affectedUser) + ->setObject('files', $fileId, $filePath); + $this->activityManager->publish($event); + } +} diff --git a/apps/files_sharing/lib/OrphanHelper.php b/apps/files_sharing/lib/OrphanHelper.php index 4a52af0406c..6e070f1446b 100644 --- a/apps/files_sharing/lib/OrphanHelper.php +++ b/apps/files_sharing/lib/OrphanHelper.php @@ -58,8 +58,7 @@ class OrphanHelper { $query = $this->connection->getQueryBuilder(); $query->select('id', 'file_source', 'uid_owner', 'file_target') ->from('share') - ->where($query->expr()->eq('item_type', $query->createNamedParameter('file'))) - ->orWhere($query->expr()->eq('item_type', $query->createNamedParameter('folder'))); + ->where($query->expr()->in('item_type', $query->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY))); $result = $query->executeQuery(); while ($row = $result->fetch()) { yield [ diff --git a/apps/files_sharing/src/components/ShareExpiryTime.vue b/apps/files_sharing/src/components/ShareExpiryTime.vue new file mode 100644 index 00000000000..b789bc92db5 --- /dev/null +++ b/apps/files_sharing/src/components/ShareExpiryTime.vue @@ -0,0 +1,91 @@ +<!-- + - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + - SPDX-License-Identifier: AGPL-3.0-or-later +--> +<template> + <div class="share-expiry-time"> + <NcPopover popup-role="dialog"> + <template #trigger> + <NcButton v-if="expiryTime" + class="hint-icon" + type="tertiary" + :aria-label="t('files_sharing', 'Share expiration: ') + new Date(expiryTime).toLocaleString()"> + <template #icon> + <ClockIcon :size="20" /> + </template> + </NcButton> + </template> + <h3 class="hint-heading"> + {{ t('files_sharing', 'Share Expiration') }} + </h3> + <p v-if="expiryTime" class="hint-body"> + <NcDateTime :timestamp="expiryTime" + :format="timeFormat" + :relative-time="false" /> (<NcDateTime :timestamp="expiryTime" />) + </p> + </NcPopover> + </div> +</template> + +<script> +import NcButton from '@nextcloud/vue/components/NcButton' +import NcPopover from '@nextcloud/vue/components/NcPopover' +import NcDateTime from '@nextcloud/vue/components/NcDateTime' +import ClockIcon from 'vue-material-design-icons/Clock.vue' + +export default { + name: 'ShareExpiryTime', + + components: { + NcButton, + NcPopover, + NcDateTime, + ClockIcon, + }, + + props: { + share: { + type: Object, + required: true, + }, + }, + + computed: { + expiryTime() { + return this.share?.expireDate ? new Date(this.share.expireDate).getTime() : null + }, + timeFormat() { + return { dateStyle: 'full', timeStyle: 'short' } + }, + }, +} +</script> + +<style scoped lang="scss"> +.share-expiry-time { + display: inline-flex; + align-items: center; + justify-content: center; + + .hint-icon { + padding: 0; + margin: 0; + width: 24px; + height: 24px; + } +} + +.hint-heading { + text-align: center; + font-size: 1rem; + margin-top: 8px; + padding-bottom: 8px; + margin-bottom: 0; + border-bottom: 1px solid var(--color-border); +} + +.hint-body { + padding: var(--border-radius-element); + max-width: 300px; +} +</style> diff --git a/apps/files_sharing/src/components/SharingEntry.vue b/apps/files_sharing/src/components/SharingEntry.vue index 3f8f03753d8..4ff5fae364b 100644 --- a/apps/files_sharing/src/components/SharingEntry.vue +++ b/apps/files_sharing/src/components/SharingEntry.vue @@ -28,6 +28,7 @@ :file-info="fileInfo" @open-sharing-details="openShareDetailsForCustomSettings(share)" /> </div> + <ShareExpiryTime v-if="share && share.expireDate" :share="share" /> <NcButton v-if="share.canEdit" class="sharing-entry__action" data-cy-files-sharing-share-actions @@ -49,6 +50,7 @@ import NcSelect from '@nextcloud/vue/components/NcSelect' import NcAvatar from '@nextcloud/vue/components/NcAvatar' import DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue' +import ShareExpiryTime from './ShareExpiryTime.vue' import SharingEntryQuickShareSelect from './SharingEntryQuickShareSelect.vue' import SharesMixin from '../mixins/SharesMixin.js' @@ -62,6 +64,7 @@ export default { NcAvatar, DotsHorizontalIcon, NcSelect, + ShareExpiryTime, SharingEntryQuickShareSelect, }, diff --git a/apps/files_sharing/src/components/SharingEntryLink.vue b/apps/files_sharing/src/components/SharingEntryLink.vue index e03370bb6e8..9427bd78967 100644 --- a/apps/files_sharing/src/components/SharingEntryLink.vue +++ b/apps/files_sharing/src/components/SharingEntryLink.vue @@ -24,20 +24,26 @@ @open-sharing-details="openShareDetailsForCustomSettings(share)" /> </div> - <!-- clipboard --> - <NcActions v-if="share && (!isEmailShareType || isFileRequest) && share.token" ref="copyButton" class="sharing-entry__copy"> - <NcActionButton :aria-label="copyLinkTooltip" - :title="copyLinkTooltip" - :href="shareLink" - @click.prevent="copyLink"> - <template #icon> - <CheckIcon v-if="copied && copySuccess" - :size="20" - class="icon-checkmark-color" /> - <ClipboardIcon v-else :size="20" /> - </template> - </NcActionButton> - </NcActions> + <div class="sharing-entry__actions"> + <ShareExpiryTime v-if="share && share.expireDate" :share="share" /> + + <!-- clipboard --> + <div> + <NcActions v-if="share && (!isEmailShareType || isFileRequest) && share.token" ref="copyButton" class="sharing-entry__copy"> + <NcActionButton :aria-label="copyLinkTooltip" + :title="copyLinkTooltip" + :href="shareLink" + @click.prevent="copyLink"> + <template #icon> + <CheckIcon v-if="copied && copySuccess" + :size="20" + class="icon-checkmark-color" /> + <ClipboardIcon v-else :size="20" /> + </template> + </NcActionButton> + </NcActions> + </div> + </div> </div> <!-- pending actions --> @@ -245,6 +251,7 @@ import CloseIcon from 'vue-material-design-icons/Close.vue' import PlusIcon from 'vue-material-design-icons/Plus.vue' import SharingEntryQuickShareSelect from './SharingEntryQuickShareSelect.vue' +import ShareExpiryTime from './ShareExpiryTime.vue' import ExternalShareAction from './ExternalShareAction.vue' import GeneratePassword from '../utils/GeneratePassword.ts' @@ -278,6 +285,7 @@ export default { CloseIcon, PlusIcon, SharingEntryQuickShareSelect, + ShareExpiryTime, }, mixins: [SharesMixin, ShareDetails], @@ -936,6 +944,12 @@ export default { } } + &__actions { + display: flex; + align-items: center; + margin-inline-start: auto; + } + &:not(.sharing-entry--share) &__actions { .new-share-link { border-top: 1px solid var(--color-border); diff --git a/apps/files_sharing/src/files_views/shares.spec.ts b/apps/files_sharing/src/files_views/shares.spec.ts index 79ef2a09843..7e5b59e0ad9 100644 --- a/apps/files_sharing/src/files_views/shares.spec.ts +++ b/apps/files_sharing/src/files_views/shares.spec.ts @@ -5,8 +5,10 @@ /* eslint-disable n/no-extraneous-import */ /* eslint-disable @typescript-eslint/no-explicit-any */ import type { OCSResponse } from '@nextcloud/typings/ocs' -import { Folder, Navigation, View, getNavigation } from '@nextcloud/files' + import { beforeEach, describe, expect, test, vi } from 'vitest' +import { Folder, Navigation, View, getNavigation } from '@nextcloud/files' +import * as ncInitialState from '@nextcloud/initial-state' import axios from '@nextcloud/axios' import '../main' @@ -72,6 +74,27 @@ describe('Sharing views definition', () => { expect(view?.getContents).toBeDefined() }) }) + + test('Shared with others view is not registered if user has no storage quota', () => { + vi.spyOn(Navigation, 'register') + const spy = vi.spyOn(ncInitialState, 'loadState').mockImplementationOnce(() => ({ quota: 0 })) + + expect(Navigation.views.length).toBe(0) + registerSharingViews() + expect(Navigation.register).toHaveBeenCalledTimes(6) + expect(Navigation.views.length).toBe(6) + + const shareOverviewView = Navigation.views.find(view => view.id === 'shareoverview') as View + const sharesChildViews = Navigation.views.filter(view => view.parent === 'shareoverview') as View[] + expect(shareOverviewView).toBeDefined() + expect(sharesChildViews.length).toBe(5) + + expect(spy).toHaveBeenCalled() + expect(spy).toHaveBeenCalledWith('files', 'storageStats', { quota: -1 }) + + const sharedWithOthersView = Navigation.views.find(view => view.id === 'sharingout') + expect(sharedWithOthersView).toBeUndefined() + }) }) describe('Sharing views contents', () => { diff --git a/apps/files_sharing/src/files_views/shares.ts b/apps/files_sharing/src/files_views/shares.ts index 7aec0dbeafb..297fd4796fd 100644 --- a/apps/files_sharing/src/files_views/shares.ts +++ b/apps/files_sharing/src/files_views/shares.ts @@ -14,6 +14,7 @@ import FileUploadSvg from '@mdi/svg/svg/file-upload.svg?raw' import LinkSvg from '@mdi/svg/svg/link.svg?raw' import { getContents, isFileRequest } from '../services/SharingService' +import { loadState } from '@nextcloud/initial-state' export const sharesViewId = 'shareoverview' export const sharedWithYouViewId = 'sharingin' @@ -58,22 +59,26 @@ export default () => { getContents: () => getContents(true, false, false, false), })) - Navigation.register(new View({ - id: sharedWithOthersViewId, - name: t('files_sharing', 'Shared with others'), - caption: t('files_sharing', 'List of files that you shared with others.'), + // Don't show this view if the user has no storage quota + const storageStats = loadState('files', 'storageStats', { quota: -1 }) + if (storageStats.quota !== 0) { + Navigation.register(new View({ + id: sharedWithOthersViewId, + name: t('files_sharing', 'Shared with others'), + caption: t('files_sharing', 'List of files that you shared with others.'), - emptyTitle: t('files_sharing', 'Nothing shared yet'), - emptyCaption: t('files_sharing', 'Files and folders you shared will show up here'), + emptyTitle: t('files_sharing', 'Nothing shared yet'), + emptyCaption: t('files_sharing', 'Files and folders you shared will show up here'), - icon: AccountGroupSvg, - order: 2, - parent: sharesViewId, + icon: AccountGroupSvg, + order: 2, + parent: sharesViewId, - columns: [], + columns: [], - getContents: () => getContents(false, true, false, false), - })) + getContents: () => getContents(false, true, false, false), + })) + } Navigation.register(new View({ id: sharingByLinksViewId, diff --git a/apps/files_trashbin/lib/BackgroundJob/ExpireTrash.php b/apps/files_trashbin/lib/BackgroundJob/ExpireTrash.php index 4e1c1b95fde..c587d463501 100644 --- a/apps/files_trashbin/lib/BackgroundJob/ExpireTrash.php +++ b/apps/files_trashbin/lib/BackgroundJob/ExpireTrash.php @@ -12,13 +12,12 @@ use OCA\Files_Trashbin\Helper; use OCA\Files_Trashbin\Trashbin; use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\TimedJob; -use OCP\IConfig; -use OCP\IUser; +use OCP\IAppConfig; use OCP\IUserManager; class ExpireTrash extends TimedJob { public function __construct( - private IConfig $config, + private IAppConfig $appConfig, private IUserManager $userManager, private Expiration $expiration, ITimeFactory $time, @@ -28,12 +27,8 @@ class ExpireTrash extends TimedJob { $this->setInterval(60 * 30); } - /** - * @param $argument - * @throws \Exception - */ protected function run($argument) { - $backgroundJob = $this->config->getAppValue('files_trashbin', 'background_job_expire_trash', 'yes'); + $backgroundJob = $this->appConfig->getValueString('files_trashbin', 'background_job_expire_trash', 'yes'); if ($backgroundJob === 'no') { return; } @@ -43,15 +38,28 @@ class ExpireTrash extends TimedJob { return; } - $this->userManager->callForSeenUsers(function (IUser $user): void { + $stopTime = time() + 60 * 30; // Stops after 30 minutes. + $offset = $this->appConfig->getValueInt('files_trashbin', 'background_job_expire_trash_offset', 0); + $users = $this->userManager->getSeenUsers($offset); + + foreach ($users as $user) { $uid = $user->getUID(); if (!$this->setupFS($uid)) { - return; + continue; } $dirContent = Helper::getTrashFiles('/', $uid, 'mtime'); Trashbin::deleteExpiredFiles($dirContent, $uid); - }); + $offset++; + + if ($stopTime < time()) { + $this->appConfig->setValueInt('files_trashbin', 'background_job_expire_trash_offset', $offset); + \OC_Util::tearDownFS(); + return; + } + } + + $this->appConfig->setValueInt('files_trashbin', 'background_job_expire_trash_offset', 0); \OC_Util::tearDownFS(); } diff --git a/apps/files_trashbin/tests/BackgroundJob/ExpireTrashTest.php b/apps/files_trashbin/tests/BackgroundJob/ExpireTrashTest.php index b172f1f2715..82977068983 100644 --- a/apps/files_trashbin/tests/BackgroundJob/ExpireTrashTest.php +++ b/apps/files_trashbin/tests/BackgroundJob/ExpireTrashTest.php @@ -11,31 +11,31 @@ use OCA\Files_Trashbin\BackgroundJob\ExpireTrash; use OCA\Files_Trashbin\Expiration; use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; -use OCP\IConfig; +use OCP\IAppConfig; use OCP\IUserManager; use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class ExpireTrashTest extends TestCase { - /** @var IConfig|MockObject */ - private $config; + /** @var IAppConfig&MockObject */ + private $appConfig; - /** @var IUserManager|MockObject */ + /** @var IUserManager&MockObject */ private $userManager; - /** @var Expiration|MockObject */ + /** @var Expiration&MockObject */ private $expiration; - /** @var IJobList|MockObject */ + /** @var IJobList&MockObject */ private $jobList; - /** @var ITimeFactory|MockObject */ + /** @var ITimeFactory&MockObject */ private $time; protected function setUp(): void { parent::setUp(); - $this->config = $this->createMock(IConfig::class); + $this->appConfig = $this->createMock(IAppConfig::class); $this->userManager = $this->createMock(IUserManager::class); $this->expiration = $this->createMock(Expiration::class); $this->jobList = $this->createMock(IJobList::class); @@ -51,22 +51,25 @@ class ExpireTrashTest extends TestCase { } public function testConstructAndRun(): void { - $this->config->method('getAppValue') + $this->appConfig->method('getValueString') ->with('files_trashbin', 'background_job_expire_trash', 'yes') ->willReturn('yes'); + $this->appConfig->method('getValueInt') + ->with('files_trashbin', 'background_job_expire_trash_offset', 0) + ->willReturn(0); - $job = new ExpireTrash($this->config, $this->userManager, $this->expiration, $this->time); + $job = new ExpireTrash($this->appConfig, $this->userManager, $this->expiration, $this->time); $job->start($this->jobList); } public function testBackgroundJobDeactivated(): void { - $this->config->method('getAppValue') + $this->appConfig->method('getValueString') ->with('files_trashbin', 'background_job_expire_trash', 'yes') ->willReturn('no'); $this->expiration->expects($this->never()) ->method('getMaxAgeAsTimestamp'); - $job = new ExpireTrash($this->config, $this->userManager, $this->expiration, $this->time); + $job = new ExpireTrash($this->appConfig, $this->userManager, $this->expiration, $this->time); $job->start($this->jobList); } } diff --git a/apps/files_versions/l10n/ar.js b/apps/files_versions/l10n/ar.js index 93578b41ca7..318ca0dbfe2 100644 --- a/apps/files_versions/l10n/ar.js +++ b/apps/files_versions/l10n/ar.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "يحتفظ هذا التطبيق تلقائيًا بالنُّسخ القديمة من الملفات بعد تعديلها. عند تمكينه، يتم توفير مجلد الإصدارات المخفية في دليل كل مستخدم و يتم استخدامه لتخزين النسخ الأقدم للملفات. يمكن للمستخدم الرجوع إلى نسخة أقدم من خلال واجهة الويب في أي وقت. حيث يصبح الملف المستبدل نسخةً. يقوم التطبيق تلقائيًا بإدارة مجلد النُّسخ لضمان عدم نفاد الحصة النسبية للحساب بسبب النُّسخ. \t\t\nبالإضافة إلى انتهاء صلاحية النُّسخ، يتأكد تطبيق النُّسخ من عدم استخدام أكثر من 50% من المساحة المجانية المتوفرة حاليًا للحساب لغرض الاحتفاظ بالنُّسخ. إذا تجاوزت مساحة تخزين النُّسخ المخزنة هذا الحد، عندها يقوم التطبيق بحذف النُّسخ الأقدم أولاً حتى ترجع مساحة التخزين إلى الحد المسموح به. مزيد من المعلومات في توثيق التطبيق.", "Current version" : "النسخة الحالية", "Initial version" : "النسخة الأساسية", + "You" : "أنت", "Actions for version from {versionHumanExplicitDate}" : "إجراءات على النسخة من {versionHumanExplicitDate}", "Name this version" : "أعط اسماً لهذه النسخة", "Edit version name" : "تعديل اسم النسخة", @@ -22,6 +23,7 @@ OC.L10N.register( "Version restored" : "تمّت استعادة النسخة", "Could not restore version" : "تعذّرت استعادة النسخة", "Could not set version label" : "تعذّر تعيين تسمية للنسخة", - "Could not delete version" : "تعذّر حذف النسخة" + "Could not delete version" : "تعذّر حذف النسخة", + "File versions" : "إصدارات الملف" }, "nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"); diff --git a/apps/files_versions/l10n/ar.json b/apps/files_versions/l10n/ar.json index 95dd5aa7b19..9473ac90f25 100644 --- a/apps/files_versions/l10n/ar.json +++ b/apps/files_versions/l10n/ar.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "يحتفظ هذا التطبيق تلقائيًا بالنُّسخ القديمة من الملفات بعد تعديلها. عند تمكينه، يتم توفير مجلد الإصدارات المخفية في دليل كل مستخدم و يتم استخدامه لتخزين النسخ الأقدم للملفات. يمكن للمستخدم الرجوع إلى نسخة أقدم من خلال واجهة الويب في أي وقت. حيث يصبح الملف المستبدل نسخةً. يقوم التطبيق تلقائيًا بإدارة مجلد النُّسخ لضمان عدم نفاد الحصة النسبية للحساب بسبب النُّسخ. \t\t\nبالإضافة إلى انتهاء صلاحية النُّسخ، يتأكد تطبيق النُّسخ من عدم استخدام أكثر من 50% من المساحة المجانية المتوفرة حاليًا للحساب لغرض الاحتفاظ بالنُّسخ. إذا تجاوزت مساحة تخزين النُّسخ المخزنة هذا الحد، عندها يقوم التطبيق بحذف النُّسخ الأقدم أولاً حتى ترجع مساحة التخزين إلى الحد المسموح به. مزيد من المعلومات في توثيق التطبيق.", "Current version" : "النسخة الحالية", "Initial version" : "النسخة الأساسية", + "You" : "أنت", "Actions for version from {versionHumanExplicitDate}" : "إجراءات على النسخة من {versionHumanExplicitDate}", "Name this version" : "أعط اسماً لهذه النسخة", "Edit version name" : "تعديل اسم النسخة", @@ -20,6 +21,7 @@ "Version restored" : "تمّت استعادة النسخة", "Could not restore version" : "تعذّرت استعادة النسخة", "Could not set version label" : "تعذّر تعيين تسمية للنسخة", - "Could not delete version" : "تعذّر حذف النسخة" + "Could not delete version" : "تعذّر حذف النسخة", + "File versions" : "إصدارات الملف" },"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/ast.js b/apps/files_versions/l10n/ast.js index 8515c4978e8..4264f046b1f 100644 --- a/apps/files_versions/l10n/ast.js +++ b/apps/files_versions/l10n/ast.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Esta aplicación caltién automáticamente les versiones antigües de los ficheros que camudaron. Cuando s'activa, crease una carpeta de versiones anubrida p'atroxar les versiones antigües de los ficheros. Los usuarios puen recuperar una versión anterior pente la interfaz web en cualesquier momentu y el ficheru trocáu conviértese nun versión. L'aplicación xestiona automáticamente la carpeta de versiones p'asegurar de que la cuenta nun escosa la cuota pola mor de les versiones.\n\t\tAmás de la caducidá de les versiones, l'aplicación Versiones garantiza qu'enxamás nun s'usa más del 50% d'espaciu llibre disponible pa la cuenta. Si les versiones atroxaes superen esta llende, l'aplicación va desaniciar les primeres versiones más antigües hasta que se respete esta llende. Tienes más información disponible na documentación de Versiones.", "Current version" : "Versión actual", "Initial version" : "Versión inicial", + "You" : "Tu", "Name this version" : "Nomar esta versión", "Edit version name" : "Editar el nome de la versión", "Compare to current version" : "Comparar cola versión actual", diff --git a/apps/files_versions/l10n/ast.json b/apps/files_versions/l10n/ast.json index 103c0d7b42e..27cdb853abc 100644 --- a/apps/files_versions/l10n/ast.json +++ b/apps/files_versions/l10n/ast.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Esta aplicación caltién automáticamente les versiones antigües de los ficheros que camudaron. Cuando s'activa, crease una carpeta de versiones anubrida p'atroxar les versiones antigües de los ficheros. Los usuarios puen recuperar una versión anterior pente la interfaz web en cualesquier momentu y el ficheru trocáu conviértese nun versión. L'aplicación xestiona automáticamente la carpeta de versiones p'asegurar de que la cuenta nun escosa la cuota pola mor de les versiones.\n\t\tAmás de la caducidá de les versiones, l'aplicación Versiones garantiza qu'enxamás nun s'usa más del 50% d'espaciu llibre disponible pa la cuenta. Si les versiones atroxaes superen esta llende, l'aplicación va desaniciar les primeres versiones más antigües hasta que se respete esta llende. Tienes más información disponible na documentación de Versiones.", "Current version" : "Versión actual", "Initial version" : "Versión inicial", + "You" : "Tu", "Name this version" : "Nomar esta versión", "Edit version name" : "Editar el nome de la versión", "Compare to current version" : "Comparar cola versión actual", diff --git a/apps/files_versions/l10n/ca.js b/apps/files_versions/l10n/ca.js index 969ac2bde06..104759c334a 100644 --- a/apps/files_versions/l10n/ca.js +++ b/apps/files_versions/l10n/ca.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Aquesta aplicació conserva automàticament les versions antigues dels fitxers modificats. Si s'habilita, es crearà una carpeta de versions oculta a cada carpeta del compte i s'utilitzarà per a emmagatzemar les versions antigues dels fitxers. Els usuaris poden recuperar una versió anterior a través de la interfície web en qualsevol moment i el fitxer substituït es converteix en una versió. L'aplicació administra automàticament la carpeta de versions per a assegurar-se que l'usuari no es quedi sense espai per culpa de les versions.\n\t\tA més del venciment de les versions, l'aplicació Versions garanteix que no s'utilitzarà mai més del 50% de l'espai lliure disponible actualment per al compte. Si les versions emmagatzemades superen aquest límit, l'aplicació suprimirà primer les versions més antigues fins que es respecti aquest límit. Podeu trobar més informació a la documentació de Versions.", "Current version" : "Versió actual", "Initial version" : "Versió inicial", + "You" : "Vós", "Actions for version from {versionHumanExplicitDate}" : "Accions per a la versió a partir de {versionHumanExplicitDate}", "Name this version" : "Anomena aquesta versió", "Edit version name" : "Edita el nom de la versió", diff --git a/apps/files_versions/l10n/ca.json b/apps/files_versions/l10n/ca.json index a4ed5e7e365..f4818d3c7ad 100644 --- a/apps/files_versions/l10n/ca.json +++ b/apps/files_versions/l10n/ca.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Aquesta aplicació conserva automàticament les versions antigues dels fitxers modificats. Si s'habilita, es crearà una carpeta de versions oculta a cada carpeta del compte i s'utilitzarà per a emmagatzemar les versions antigues dels fitxers. Els usuaris poden recuperar una versió anterior a través de la interfície web en qualsevol moment i el fitxer substituït es converteix en una versió. L'aplicació administra automàticament la carpeta de versions per a assegurar-se que l'usuari no es quedi sense espai per culpa de les versions.\n\t\tA més del venciment de les versions, l'aplicació Versions garanteix que no s'utilitzarà mai més del 50% de l'espai lliure disponible actualment per al compte. Si les versions emmagatzemades superen aquest límit, l'aplicació suprimirà primer les versions més antigues fins que es respecti aquest límit. Podeu trobar més informació a la documentació de Versions.", "Current version" : "Versió actual", "Initial version" : "Versió inicial", + "You" : "Vós", "Actions for version from {versionHumanExplicitDate}" : "Accions per a la versió a partir de {versionHumanExplicitDate}", "Name this version" : "Anomena aquesta versió", "Edit version name" : "Edita el nom de la versió", diff --git a/apps/files_versions/l10n/cs.js b/apps/files_versions/l10n/cs.js index eb5c56c247e..1cdc5564ede 100644 --- a/apps/files_versions/l10n/cs.js +++ b/apps/files_versions/l10n/cs.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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 změnily. 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ší verzi 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 účet 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% právě dostupného volného prostoru, který má účet 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.", "Current version" : "Stávající verze", "Initial version" : "Počáteční verze", + "You" : "Vy", "Actions for version from {versionHumanExplicitDate}" : "Akce pro verzi od {versionHumanExplicitDate}", "Name this version" : "Nazvat tuto verzi", "Edit version name" : "Upravit název verze", @@ -22,6 +23,7 @@ OC.L10N.register( "Version restored" : "Verze obnovena", "Could not restore version" : "Verzi se nedaří obnovit", "Could not set version label" : "Nepodařilo se nastavit štítek verze", - "Could not delete version" : "Nedaří se smazat verzi" + "Could not delete version" : "Nedaří se smazat verzi", + "File versions" : "Verze souborů" }, "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 7cff6438acd..1ef843d2b90 100644 --- a/apps/files_versions/l10n/cs.json +++ b/apps/files_versions/l10n/cs.json @@ -4,6 +4,7 @@ "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 account 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 account'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 změnily. 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ší verzi 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 účet 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% právě dostupného volného prostoru, který má účet 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.", "Current version" : "Stávající verze", "Initial version" : "Počáteční verze", + "You" : "Vy", "Actions for version from {versionHumanExplicitDate}" : "Akce pro verzi od {versionHumanExplicitDate}", "Name this version" : "Nazvat tuto verzi", "Edit version name" : "Upravit název verze", @@ -20,6 +21,7 @@ "Version restored" : "Verze obnovena", "Could not restore version" : "Verzi se nedaří obnovit", "Could not set version label" : "Nepodařilo se nastavit štítek verze", - "Could not delete version" : "Nedaří se smazat verzi" + "Could not delete version" : "Nedaří se smazat verzi", + "File versions" : "Verze souborů" },"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/da.js b/apps/files_versions/l10n/da.js index 8fe66ccd5ec..afc2d3558cc 100644 --- a/apps/files_versions/l10n/da.js +++ b/apps/files_versions/l10n/da.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Denne applikation vedligeholder automatisk ældre versioner af filer, der ændres. Når den er aktiveret, er der klargjort en skjult versionsmappe i hver brugers mappe, som anvendes til at gemme gamle filversioner. En bruger kan til enhver tid vende tilbage til en ældre version via webgrænsefladen, hvor den erstattede fil bliver til en version. App'en administrerer automatisk versionsmappen for at sikre, at kontoen ikke løber tør for kvote på grund af versioner..\n\t\tUd over udløbet af versioner sørger versionsappen for aldrig at bruge mere end 50 % af kontoens aktuelt ledige plads. Hvis lagrede versioner overskrider denne grænse, så vil app'en først slette de ældste versioner, indtil den når denne grænse. Mere information er tilgængelig i versionsdokumentationen.", "Current version" : "Nuværende version", "Initial version" : "Oprindelig version", + "You" : "Dig", "Actions for version from {versionHumanExplicitDate}" : "Handlinger for version fra {versionHumanExplicitDate}", "Name this version" : "Navngiv denne version", "Edit version name" : "Rediger versionsnavn", diff --git a/apps/files_versions/l10n/da.json b/apps/files_versions/l10n/da.json index 87f92487b61..b13d195f88b 100644 --- a/apps/files_versions/l10n/da.json +++ b/apps/files_versions/l10n/da.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Denne applikation vedligeholder automatisk ældre versioner af filer, der ændres. Når den er aktiveret, er der klargjort en skjult versionsmappe i hver brugers mappe, som anvendes til at gemme gamle filversioner. En bruger kan til enhver tid vende tilbage til en ældre version via webgrænsefladen, hvor den erstattede fil bliver til en version. App'en administrerer automatisk versionsmappen for at sikre, at kontoen ikke løber tør for kvote på grund af versioner..\n\t\tUd over udløbet af versioner sørger versionsappen for aldrig at bruge mere end 50 % af kontoens aktuelt ledige plads. Hvis lagrede versioner overskrider denne grænse, så vil app'en først slette de ældste versioner, indtil den når denne grænse. Mere information er tilgængelig i versionsdokumentationen.", "Current version" : "Nuværende version", "Initial version" : "Oprindelig version", + "You" : "Dig", "Actions for version from {versionHumanExplicitDate}" : "Handlinger for version fra {versionHumanExplicitDate}", "Name this version" : "Navngiv denne version", "Edit version name" : "Rediger versionsnavn", diff --git a/apps/files_versions/l10n/de.js b/apps/files_versions/l10n/de.js index 8c29852226d..95d5da11277 100644 --- a/apps/files_versions/l10n/de.js +++ b/apps/files_versions/l10n/de.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert wurden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über die Web-Oberfläche auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Konto nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\nZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Kontos für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen findest du in der Versionsdokumentation.", "Current version" : "Aktuelle Version", "Initial version" : "Initiale Version", + "You" : "Du", "Actions for version from {versionHumanExplicitDate}" : "Aktionen für Version vom {versionHumanExplicitDate}", "Name this version" : "Diese Version benennen", "Edit version name" : "Versionsnamen bearbeiten", @@ -22,6 +23,7 @@ OC.L10N.register( "Version restored" : "Version wiederhergestellt", "Could not restore version" : "Version konnte nicht wiederhergestellt werden", "Could not set version label" : "Der Versionsname konnte nicht festgelegt werden", - "Could not delete version" : "Version konnte nicht gelöscht werden" + "Could not delete version" : "Version konnte nicht gelöscht werden", + "File versions" : "Dateiversionen" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_versions/l10n/de.json b/apps/files_versions/l10n/de.json index 8ebc3cba871..28becae635c 100644 --- a/apps/files_versions/l10n/de.json +++ b/apps/files_versions/l10n/de.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert wurden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über die Web-Oberfläche auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Konto nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\nZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Kontos für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen findest du in der Versionsdokumentation.", "Current version" : "Aktuelle Version", "Initial version" : "Initiale Version", + "You" : "Du", "Actions for version from {versionHumanExplicitDate}" : "Aktionen für Version vom {versionHumanExplicitDate}", "Name this version" : "Diese Version benennen", "Edit version name" : "Versionsnamen bearbeiten", @@ -20,6 +21,7 @@ "Version restored" : "Version wiederhergestellt", "Could not restore version" : "Version konnte nicht wiederhergestellt werden", "Could not set version label" : "Der Versionsname konnte nicht festgelegt werden", - "Could not delete version" : "Version konnte nicht gelöscht werden" + "Could not delete version" : "Version konnte nicht gelöscht werden", + "File versions" : "Dateiversionen" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/de_DE.js b/apps/files_versions/l10n/de_DE.js index 8c6aaf81f58..7b290d51b25 100644 --- a/apps/files_versions/l10n/de_DE.js +++ b/apps/files_versions/l10n/de_DE.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert wurden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über die Web-Oberfläche auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Konto nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\nZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Kontos für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation.", "Current version" : "Aktuelle Version", "Initial version" : "Initiale Version", + "You" : "Sie", "Actions for version from {versionHumanExplicitDate}" : "Aktionen für Version von {versionHumanExplicitDate}", "Name this version" : "Diese Version benennen", "Edit version name" : "Versionsnamen bearbeiten", @@ -22,6 +23,7 @@ OC.L10N.register( "Version restored" : "Version wiederhergestellt", "Could not restore version" : "Version konnte nicht wiederhergestellt werden", "Could not set version label" : "Der Versionsname konnte nicht festgelegt werden", - "Could not delete version" : "Version konnte nicht gelöscht werden" + "Could not delete version" : "Version konnte nicht gelöscht werden", + "File versions" : "Dateiversionen" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_versions/l10n/de_DE.json b/apps/files_versions/l10n/de_DE.json index 0abfd5246dd..e08cc07dfc4 100644 --- a/apps/files_versions/l10n/de_DE.json +++ b/apps/files_versions/l10n/de_DE.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert wurden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über die Web-Oberfläche auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Konto nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\nZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Kontos für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation.", "Current version" : "Aktuelle Version", "Initial version" : "Initiale Version", + "You" : "Sie", "Actions for version from {versionHumanExplicitDate}" : "Aktionen für Version von {versionHumanExplicitDate}", "Name this version" : "Diese Version benennen", "Edit version name" : "Versionsnamen bearbeiten", @@ -20,6 +21,7 @@ "Version restored" : "Version wiederhergestellt", "Could not restore version" : "Version konnte nicht wiederhergestellt werden", "Could not set version label" : "Der Versionsname konnte nicht festgelegt werden", - "Could not delete version" : "Version konnte nicht gelöscht werden" + "Could not delete version" : "Version konnte nicht gelöscht werden", + "File versions" : "Dateiversionen" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/el.js b/apps/files_versions/l10n/el.js index a5dfcc68329..fbe5807376b 100644 --- a/apps/files_versions/l10n/el.js +++ b/apps/files_versions/l10n/el.js @@ -5,6 +5,7 @@ OC.L10N.register( "This application automatically maintains older versions of files that are changed." : "Η εφαρμογή διατηρεί αυτόματα παλαιότερες εκδόσεις των αρχείων που έχουν αλλάξει.", "Current version" : "Τρέχουσα έκδοση", "Initial version" : "Αρχική έκδοση", + "You" : "Εσύ", "Name this version" : "Ονομασία αυτής της έκδοσης", "Edit version name" : "Επεξεργασία ονόματος έκδοσης", "Compare to current version" : "Σύγκριση με την τρέχουσα έκδοση", diff --git a/apps/files_versions/l10n/el.json b/apps/files_versions/l10n/el.json index 735cd066dac..490b5b52899 100644 --- a/apps/files_versions/l10n/el.json +++ b/apps/files_versions/l10n/el.json @@ -3,6 +3,7 @@ "This application automatically maintains older versions of files that are changed." : "Η εφαρμογή διατηρεί αυτόματα παλαιότερες εκδόσεις των αρχείων που έχουν αλλάξει.", "Current version" : "Τρέχουσα έκδοση", "Initial version" : "Αρχική έκδοση", + "You" : "Εσύ", "Name this version" : "Ονομασία αυτής της έκδοσης", "Edit version name" : "Επεξεργασία ονόματος έκδοσης", "Compare to current version" : "Σύγκριση με την τρέχουσα έκδοση", diff --git a/apps/files_versions/l10n/en_GB.js b/apps/files_versions/l10n/en_GB.js index 05822ee6dd5..4b5161e3889 100644 --- a/apps/files_versions/l10n/en_GB.js +++ b/apps/files_versions/l10n/en_GB.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "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 account 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 account'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.", "Current version" : "Current version", "Initial version" : "Initial version", + "You" : "You", "Actions for version from {versionHumanExplicitDate}" : "Actions for version from {versionHumanExplicitDate}", "Name this version" : "Name this version", "Edit version name" : "Edit version name", @@ -22,6 +23,7 @@ OC.L10N.register( "Version restored" : "Version restored", "Could not restore version" : "Could not restore version", "Could not set version label" : "Could not set version label", - "Could not delete version" : "Could not delete version" + "Could not delete version" : "Could not delete version", + "File versions" : "File versions" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_versions/l10n/en_GB.json b/apps/files_versions/l10n/en_GB.json index 387e0ae8951..6daff63aade 100644 --- a/apps/files_versions/l10n/en_GB.json +++ b/apps/files_versions/l10n/en_GB.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "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 account 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 account'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.", "Current version" : "Current version", "Initial version" : "Initial version", + "You" : "You", "Actions for version from {versionHumanExplicitDate}" : "Actions for version from {versionHumanExplicitDate}", "Name this version" : "Name this version", "Edit version name" : "Edit version name", @@ -20,6 +21,7 @@ "Version restored" : "Version restored", "Could not restore version" : "Could not restore version", "Could not set version label" : "Could not set version label", - "Could not delete version" : "Could not delete version" + "Could not delete version" : "Could not delete version", + "File versions" : "File versions" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/es.js b/apps/files_versions/l10n/es.js index e2bc96fd90b..e7025d84b3e 100644 --- a/apps/files_versions/l10n/es.js +++ b/apps/files_versions/l10n/es.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Esta aplicación mantiene automáticamente versiones antiguas de los archivos que cambian. Cuando se activa, una carpeta escondida de versiones aparece en cada directorio del usuario y se usa para almacenar los archivos de versiones antiguas. Un usuario puede volver a una versión más antigua a través de la interfaz web en cualquier momento, convirtiéndose el archivo reemplazado en una versión. La app controla automáticamente la carpeta de versiones para asegurarse de que la cuenta no se queda sin cuota de disco por las versiones.\n\t\tAdemás de administrar la caducidad de las versiones, la app de versiones se asegura de no usar nunca más del 50% del espacio libre actualmente disponible para el usuario. Si las versiones almacenadas exceden este límite, la app borrará primero las versiones más viejas hasta alcanzar este límite. Más información disponible en la documentación de Versiones.", "Current version" : "Versión actual", "Initial version" : "Versión inicial", + "You" : "Usted", "Actions for version from {versionHumanExplicitDate}" : "Acciones para la versión de {versionHumanExplicitDate}", "Name this version" : "Nombrar esta versión", "Edit version name" : "Editar nombre de versión", diff --git a/apps/files_versions/l10n/es.json b/apps/files_versions/l10n/es.json index 3735d6dc773..754d23df9ce 100644 --- a/apps/files_versions/l10n/es.json +++ b/apps/files_versions/l10n/es.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Esta aplicación mantiene automáticamente versiones antiguas de los archivos que cambian. Cuando se activa, una carpeta escondida de versiones aparece en cada directorio del usuario y se usa para almacenar los archivos de versiones antiguas. Un usuario puede volver a una versión más antigua a través de la interfaz web en cualquier momento, convirtiéndose el archivo reemplazado en una versión. La app controla automáticamente la carpeta de versiones para asegurarse de que la cuenta no se queda sin cuota de disco por las versiones.\n\t\tAdemás de administrar la caducidad de las versiones, la app de versiones se asegura de no usar nunca más del 50% del espacio libre actualmente disponible para el usuario. Si las versiones almacenadas exceden este límite, la app borrará primero las versiones más viejas hasta alcanzar este límite. Más información disponible en la documentación de Versiones.", "Current version" : "Versión actual", "Initial version" : "Versión inicial", + "You" : "Usted", "Actions for version from {versionHumanExplicitDate}" : "Acciones para la versión de {versionHumanExplicitDate}", "Name this version" : "Nombrar esta versión", "Edit version name" : "Editar nombre de versión", diff --git a/apps/files_versions/l10n/es_MX.js b/apps/files_versions/l10n/es_MX.js index f6346c01b1b..67683cc4967 100644 --- a/apps/files_versions/l10n/es_MX.js +++ b/apps/files_versions/l10n/es_MX.js @@ -5,6 +5,7 @@ OC.L10N.register( "This application automatically maintains older versions of files that are changed." : "Esta aplicación mantiene automáticamente versiones anteriores de archivos que fueron cambiados. ", "Current version" : "Versión actual", "Initial version" : "Versión inicial", + "You" : "Usted", "Name this version" : "Nombrar esta versión", "Edit version name" : "Editar el nombre de la versión", "Compare to current version" : "Comparar con la versión actual", diff --git a/apps/files_versions/l10n/es_MX.json b/apps/files_versions/l10n/es_MX.json index 938af06e416..403db393aaf 100644 --- a/apps/files_versions/l10n/es_MX.json +++ b/apps/files_versions/l10n/es_MX.json @@ -3,6 +3,7 @@ "This application automatically maintains older versions of files that are changed." : "Esta aplicación mantiene automáticamente versiones anteriores de archivos que fueron cambiados. ", "Current version" : "Versión actual", "Initial version" : "Versión inicial", + "You" : "Usted", "Name this version" : "Nombrar esta versión", "Edit version name" : "Editar el nombre de la versión", "Compare to current version" : "Comparar con la versión actual", diff --git a/apps/files_versions/l10n/et_EE.js b/apps/files_versions/l10n/et_EE.js index 81790242a63..dadd03d14dc 100644 --- a/apps/files_versions/l10n/et_EE.js +++ b/apps/files_versions/l10n/et_EE.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "See rakendus säilitab automaatselt muudetud failide vanemaid versioone. Kui see on lubatud, luuakse iga kasutaja kataloogis peidetud versioonide kaust ja seda kasutatakse vanade failiversioonide salvestamiseks. Kasutaja saab veebiliidese kaudu igal ajal naasta vanemale versioonile, kusjuures asendatud failist saab versioon. Rakendus haldab automaatselt versioonide kausta, et kontol kvoot versioonide tõttu otsa ei saaks.\nLisaks versioonide aegumisele tagab versioonirakendus, et ei kasutataks kunagi rohkem kui 50% konto hetkel saadaolevast vabast ruumist. Kui salvestatud versioonid ületavad selle limiidi, kustutab rakendus kõigepealt vanimad versioonid, kuni see limiit jõuab. Lisateavet leiate versioonide dokumentatsioonist.", "Current version" : "Hetkeversioon", "Initial version" : "Algversioon", + "You" : "Sina", "Actions for version from {versionHumanExplicitDate}" : "Tegevused versiooniga {versionHumanExplicitDate}-st", "Name this version" : "Nimeta see versioon", "Edit version name" : "Muuda versiooni nime", @@ -22,6 +23,7 @@ OC.L10N.register( "Version restored" : "Versioon taastatud", "Could not restore version" : "Versiooni taastamine ebaõnnestus", "Could not set version label" : "Ei saanud määrata versiooni märget", - "Could not delete version" : "Versiooni kustutamine ebaõnnestus" + "Could not delete version" : "Versiooni kustutamine ebaõnnestus", + "File versions" : "Faili versioonid" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_versions/l10n/et_EE.json b/apps/files_versions/l10n/et_EE.json index 4c5602db95f..d2b4f6170f7 100644 --- a/apps/files_versions/l10n/et_EE.json +++ b/apps/files_versions/l10n/et_EE.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "See rakendus säilitab automaatselt muudetud failide vanemaid versioone. Kui see on lubatud, luuakse iga kasutaja kataloogis peidetud versioonide kaust ja seda kasutatakse vanade failiversioonide salvestamiseks. Kasutaja saab veebiliidese kaudu igal ajal naasta vanemale versioonile, kusjuures asendatud failist saab versioon. Rakendus haldab automaatselt versioonide kausta, et kontol kvoot versioonide tõttu otsa ei saaks.\nLisaks versioonide aegumisele tagab versioonirakendus, et ei kasutataks kunagi rohkem kui 50% konto hetkel saadaolevast vabast ruumist. Kui salvestatud versioonid ületavad selle limiidi, kustutab rakendus kõigepealt vanimad versioonid, kuni see limiit jõuab. Lisateavet leiate versioonide dokumentatsioonist.", "Current version" : "Hetkeversioon", "Initial version" : "Algversioon", + "You" : "Sina", "Actions for version from {versionHumanExplicitDate}" : "Tegevused versiooniga {versionHumanExplicitDate}-st", "Name this version" : "Nimeta see versioon", "Edit version name" : "Muuda versiooni nime", @@ -20,6 +21,7 @@ "Version restored" : "Versioon taastatud", "Could not restore version" : "Versiooni taastamine ebaõnnestus", "Could not set version label" : "Ei saanud määrata versiooni märget", - "Could not delete version" : "Versiooni kustutamine ebaõnnestus" + "Could not delete version" : "Versiooni kustutamine ebaõnnestus", + "File versions" : "Faili versioonid" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/eu.js b/apps/files_versions/l10n/eu.js index 0efa5e5ab74..76e0383e4c8 100644 --- a/apps/files_versions/l10n/eu.js +++ b/apps/files_versions/l10n/eu.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Aplikazio honek automatikoki mantentzen ditu aldatzen diren fitxategien bertsio zaharragoak. Gaituta dagoenean, ezkutuko bertsioen karpeta batez hornitzen da erabiltzaile bakoitzaren direktorioa, fitxategien bertsio zaharrak gordetzeko. Erabiltzaileak edozein unetan bertsio zaharrago batera leheneratu dezake web interfazearen bidez, ordeztutako fitxategia bertsio bihurtuz. Aplikazioak automatikoki kudeatzen du bertsioen karpeta, erabiltzailea bertsioak direla eta kuotarik gabe geratuko ez dela ziurtatzeko.\n\t\tBertsioak iraungitzeaz gain, bertsioen aplikazioak ziurtatzen du ez dela inoiz erabiliko kontuaren uneko espazio librearen %50 baino gehiago. Biltegiratutako bertsioek muga hori gainditzen badute, aplikazioak bertsio zaharrenak ezabatuko ditu, mugara jaitsi arte. Informazio gehiago dago eskuragarri bertsioen dokumentazioan.", "Current version" : "Uneko bertsioa", "Initial version" : "Hasierako bertsioa", + "You" : "Zu ", "Actions for version from {versionHumanExplicitDate}" : "Bertsiorako ekintzak {versionHumanExplicitDate}(e)tik", "Name this version" : "Eman izena bertsio honi", "Edit version name" : "Editatu bertsioaren izena", diff --git a/apps/files_versions/l10n/eu.json b/apps/files_versions/l10n/eu.json index f291bc31676..59421f36b36 100644 --- a/apps/files_versions/l10n/eu.json +++ b/apps/files_versions/l10n/eu.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Aplikazio honek automatikoki mantentzen ditu aldatzen diren fitxategien bertsio zaharragoak. Gaituta dagoenean, ezkutuko bertsioen karpeta batez hornitzen da erabiltzaile bakoitzaren direktorioa, fitxategien bertsio zaharrak gordetzeko. Erabiltzaileak edozein unetan bertsio zaharrago batera leheneratu dezake web interfazearen bidez, ordeztutako fitxategia bertsio bihurtuz. Aplikazioak automatikoki kudeatzen du bertsioen karpeta, erabiltzailea bertsioak direla eta kuotarik gabe geratuko ez dela ziurtatzeko.\n\t\tBertsioak iraungitzeaz gain, bertsioen aplikazioak ziurtatzen du ez dela inoiz erabiliko kontuaren uneko espazio librearen %50 baino gehiago. Biltegiratutako bertsioek muga hori gainditzen badute, aplikazioak bertsio zaharrenak ezabatuko ditu, mugara jaitsi arte. Informazio gehiago dago eskuragarri bertsioen dokumentazioan.", "Current version" : "Uneko bertsioa", "Initial version" : "Hasierako bertsioa", + "You" : "Zu ", "Actions for version from {versionHumanExplicitDate}" : "Bertsiorako ekintzak {versionHumanExplicitDate}(e)tik", "Name this version" : "Eman izena bertsio honi", "Edit version name" : "Editatu bertsioaren izena", diff --git a/apps/files_versions/l10n/fi.js b/apps/files_versions/l10n/fi.js index 94e21333f71..5e17e4022e0 100644 --- a/apps/files_versions/l10n/fi.js +++ b/apps/files_versions/l10n/fi.js @@ -5,6 +5,7 @@ OC.L10N.register( "This application automatically maintains older versions of files that are changed." : "Tämä sovellus säilyttää automaattisesti vanhempia versioita muuttuneista tiedostoista.", "Current version" : "Nykyinen versio", "Initial version" : "Ensimmäinen versio", + "You" : "Sinä", "Name this version" : "Nimeä tämä versio", "Edit version name" : "Muokkaa version nimeä", "Compare to current version" : "Vertaa nykyiseen versioon", diff --git a/apps/files_versions/l10n/fi.json b/apps/files_versions/l10n/fi.json index 086db8b2441..86edaddb56a 100644 --- a/apps/files_versions/l10n/fi.json +++ b/apps/files_versions/l10n/fi.json @@ -3,6 +3,7 @@ "This application automatically maintains older versions of files that are changed." : "Tämä sovellus säilyttää automaattisesti vanhempia versioita muuttuneista tiedostoista.", "Current version" : "Nykyinen versio", "Initial version" : "Ensimmäinen versio", + "You" : "Sinä", "Name this version" : "Nimeä tämä versio", "Edit version name" : "Muokkaa version nimeä", "Compare to current version" : "Vertaa nykyiseen versioon", diff --git a/apps/files_versions/l10n/fr.js b/apps/files_versions/l10n/fr.js index 54a75118d61..34d2e110a98 100644 --- a/apps/files_versions/l10n/fr.js +++ b/apps/files_versions/l10n/fr.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Cette application maintient automatiquement les anciennes versions des fichiers qui sont modifiés. Lorsqu'elle est activée, un dossier de versions cachées est provisionné dans le répertoire de chaque utilisateur et est utilisé pour stocker les anciennes versions de fichiers. Un utilisateur peut à tout moment revenir à une ancienne version via l'interface Web, le fichier remplacé devenant à son tour une version. L'application gère automatiquement le dossier des versions pour s'assurer que le compte ne manque pas de place à cause des versions stockées.\n\t\tEn plus de l'expiration des versions, l'application veille à ne jamais utiliser plus de 50% de l'espace libre actuellement disponible pour le compte. Si les versions stockées dépassent cette limite, l'application supprime les versions les plus anciennes en premier jusqu'à ce qu'elle atteigne cette limite. Plus d'informations sont disponibles dans la documentation Versions.", "Current version" : "Version actuelle", "Initial version" : "Version initiale", + "You" : "Vous", "Actions for version from {versionHumanExplicitDate}" : "Actions pour la version du {versionHumanExplicitDate}", "Name this version" : "Nommer cette version", "Edit version name" : "Modifier le nom de version", diff --git a/apps/files_versions/l10n/fr.json b/apps/files_versions/l10n/fr.json index f1c96acee80..3e5343e93dc 100644 --- a/apps/files_versions/l10n/fr.json +++ b/apps/files_versions/l10n/fr.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Cette application maintient automatiquement les anciennes versions des fichiers qui sont modifiés. Lorsqu'elle est activée, un dossier de versions cachées est provisionné dans le répertoire de chaque utilisateur et est utilisé pour stocker les anciennes versions de fichiers. Un utilisateur peut à tout moment revenir à une ancienne version via l'interface Web, le fichier remplacé devenant à son tour une version. L'application gère automatiquement le dossier des versions pour s'assurer que le compte ne manque pas de place à cause des versions stockées.\n\t\tEn plus de l'expiration des versions, l'application veille à ne jamais utiliser plus de 50% de l'espace libre actuellement disponible pour le compte. Si les versions stockées dépassent cette limite, l'application supprime les versions les plus anciennes en premier jusqu'à ce qu'elle atteigne cette limite. Plus d'informations sont disponibles dans la documentation Versions.", "Current version" : "Version actuelle", "Initial version" : "Version initiale", + "You" : "Vous", "Actions for version from {versionHumanExplicitDate}" : "Actions pour la version du {versionHumanExplicitDate}", "Name this version" : "Nommer cette version", "Edit version name" : "Modifier le nom de version", diff --git a/apps/files_versions/l10n/ga.js b/apps/files_versions/l10n/ga.js index 4ae4cd56f0e..f9bbe03d5fe 100644 --- a/apps/files_versions/l10n/ga.js +++ b/apps/files_versions/l10n/ga.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Coinníonn an feidhmchlár seo leaganacha níos sine de chomhaid a athraítear go huathoibríoch. Nuair atá sé cumasaithe, cuirtear fillteán leaganacha ceilte ar fáil i gcomhadlann gach úsáideora agus úsáidtear é chun seanleaganacha comhaid a stóráil. Is féidir le húsáideoir filleadh ar leagan níos sine tríd an gcomhéadan gréasáin am ar bith, agus an comhad a athsholáthar ina leagan. Bainistíonn an aip fillteán na leaganacha go huathoibríoch lena chinntiú nach n-éireoidh an cuntas as Cuóta mar gheall ar leaganacha.\n\t\t Chomh maith le dul in éag na leaganacha, cinntíonn an aip leaganacha nach n-úsáidfidh siad riamh níos mó ná 50% den spás saor in aisce atá ar fáil sa chuntas faoi láthair. Má sháraíonn na leaganacha stóráilte an teorainn seo, scriosfaidh an aip na leaganacha is sine ar dtús go dtí go gcomhlíonann sé an teorainn seo. Tá tuilleadh eolais ar fáil sna doiciméid Leaganacha.", "Current version" : "Leagan reatha", "Initial version" : "Leagan tosaigh", + "You" : "tú", "Actions for version from {versionHumanExplicitDate}" : "Gníomhartha don leagan ó {versionHumanExplicitDate}", "Name this version" : "Ainmnigh an leagan seo", "Edit version name" : "Cuir ainm an leagain in eagar", @@ -22,6 +23,7 @@ OC.L10N.register( "Version restored" : "Leagan athchóirithe", "Could not restore version" : "Níorbh fhéidir an leagan a chur ar ais", "Could not set version label" : "Níorbh fhéidir lipéad an leagain a shocrú", - "Could not delete version" : "Níorbh fhéidir an leagan a scriosadh" + "Could not delete version" : "Níorbh fhéidir an leagan a scriosadh", + "File versions" : "Leaganacha comhaid" }, "nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);"); diff --git a/apps/files_versions/l10n/ga.json b/apps/files_versions/l10n/ga.json index a232fc4c15f..38098d13973 100644 --- a/apps/files_versions/l10n/ga.json +++ b/apps/files_versions/l10n/ga.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Coinníonn an feidhmchlár seo leaganacha níos sine de chomhaid a athraítear go huathoibríoch. Nuair atá sé cumasaithe, cuirtear fillteán leaganacha ceilte ar fáil i gcomhadlann gach úsáideora agus úsáidtear é chun seanleaganacha comhaid a stóráil. Is féidir le húsáideoir filleadh ar leagan níos sine tríd an gcomhéadan gréasáin am ar bith, agus an comhad a athsholáthar ina leagan. Bainistíonn an aip fillteán na leaganacha go huathoibríoch lena chinntiú nach n-éireoidh an cuntas as Cuóta mar gheall ar leaganacha.\n\t\t Chomh maith le dul in éag na leaganacha, cinntíonn an aip leaganacha nach n-úsáidfidh siad riamh níos mó ná 50% den spás saor in aisce atá ar fáil sa chuntas faoi láthair. Má sháraíonn na leaganacha stóráilte an teorainn seo, scriosfaidh an aip na leaganacha is sine ar dtús go dtí go gcomhlíonann sé an teorainn seo. Tá tuilleadh eolais ar fáil sna doiciméid Leaganacha.", "Current version" : "Leagan reatha", "Initial version" : "Leagan tosaigh", + "You" : "tú", "Actions for version from {versionHumanExplicitDate}" : "Gníomhartha don leagan ó {versionHumanExplicitDate}", "Name this version" : "Ainmnigh an leagan seo", "Edit version name" : "Cuir ainm an leagain in eagar", @@ -20,6 +21,7 @@ "Version restored" : "Leagan athchóirithe", "Could not restore version" : "Níorbh fhéidir an leagan a chur ar ais", "Could not set version label" : "Níorbh fhéidir lipéad an leagain a shocrú", - "Could not delete version" : "Níorbh fhéidir an leagan a scriosadh" + "Could not delete version" : "Níorbh fhéidir an leagan a scriosadh", + "File versions" : "Leaganacha comhaid" },"pluralForm" :"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/gl.js b/apps/files_versions/l10n/gl.js index 98dc55a57fa..c9ab468c4c0 100644 --- a/apps/files_versions/l10n/gl.js +++ b/apps/files_versions/l10n/gl.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Esta aplicación mantén automaticamente as versións anteriores dos ficheiros que se modifican. Ao activarse, crease un cartafol agochado de versións que se emprega para almacenar versións antigas de ficheiros. Un usuario pode reverter cara a unha versión anterior a través da interface web en calquera momento, e o ficheiro substituído pasa a ser unha versión. A aplicación xestiona automaticamente o cartafol de versións para garantir que a conta non esgota a cota de espazo por mor das versións.\n\t\tAdemais da caducidade de versións, a aplicación de versións asegurase de non empregar nunca máis do 50% do espazo libre dispoñíbel actualmente para unha conta. Se as versións almacenadas superan este límite, a aplicación eliminará primeiro as versións máis antigas ata acadar este límite. Hai máis información dispoñíbel na documentación de Versións.", "Current version" : "Versión actual", "Initial version" : "Versión inicial", + "You" : "Vde.", "Actions for version from {versionHumanExplicitDate}" : "Accións para a versión a partir de {versionHumanExplicitDate}", "Name this version" : "Nomear esta versión", "Edit version name" : "Editar o nome da versión", diff --git a/apps/files_versions/l10n/gl.json b/apps/files_versions/l10n/gl.json index 77b93261a65..ec5a2856615 100644 --- a/apps/files_versions/l10n/gl.json +++ b/apps/files_versions/l10n/gl.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Esta aplicación mantén automaticamente as versións anteriores dos ficheiros que se modifican. Ao activarse, crease un cartafol agochado de versións que se emprega para almacenar versións antigas de ficheiros. Un usuario pode reverter cara a unha versión anterior a través da interface web en calquera momento, e o ficheiro substituído pasa a ser unha versión. A aplicación xestiona automaticamente o cartafol de versións para garantir que a conta non esgota a cota de espazo por mor das versións.\n\t\tAdemais da caducidade de versións, a aplicación de versións asegurase de non empregar nunca máis do 50% do espazo libre dispoñíbel actualmente para unha conta. Se as versións almacenadas superan este límite, a aplicación eliminará primeiro as versións máis antigas ata acadar este límite. Hai máis información dispoñíbel na documentación de Versións.", "Current version" : "Versión actual", "Initial version" : "Versión inicial", + "You" : "Vde.", "Actions for version from {versionHumanExplicitDate}" : "Accións para a versión a partir de {versionHumanExplicitDate}", "Name this version" : "Nomear esta versión", "Edit version name" : "Editar o nome da versión", diff --git a/apps/files_versions/l10n/hu.js b/apps/files_versions/l10n/hu.js index 51fe3edb9d6..d8c34d9aa53 100644 --- a/apps/files_versions/l10n/hu.js +++ b/apps/files_versions/l10n/hu.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Ez az alkalmazás automatikusan karbantartja a változtatott fájlok régebbi verzióit. Amikor be van kapcsolva, egy rejtett verziómappa jön létre minden felhasználó tárhelyén, amit a korábbi verziók tárolására használ a rendszer. Egy felhasználó bármikor visszatérhet egy korábbi verzióhoz a webes felületen keresztül, és a lecserélt fájl maga is előzménnyé válik. Az alkalmazás automatikusan kezeli a verziómappát, biztosítva, hogy a fiók ne fusson ki a tárterületéből az előzmények miatt.\n\t\tA fájlelőzmények lejárati dátumán kívül az alkalmazás sose használ az elérhető szabad terület 50%-ánál többet. Ha a tárolt előzmények túllépik ezt a korlátot, az alkalmazás addig törli a legrégebbi verziókat, amíg nem felel meg a korlátozásnak. További információ érhető el a Verziók dokumentációjában.", "Current version" : "Jelenlegi verzió", "Initial version" : "Kezdeti verzió", + "You" : "Ön", "Actions for version from {versionHumanExplicitDate}" : "A verzióra vonatkozó műveletek: {versionHumanExplicitDate}", "Name this version" : "Verzió elnevezése", "Edit version name" : "Verziónév szerkesztése", diff --git a/apps/files_versions/l10n/hu.json b/apps/files_versions/l10n/hu.json index 0806b34675b..1f4f2a3b26e 100644 --- a/apps/files_versions/l10n/hu.json +++ b/apps/files_versions/l10n/hu.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Ez az alkalmazás automatikusan karbantartja a változtatott fájlok régebbi verzióit. Amikor be van kapcsolva, egy rejtett verziómappa jön létre minden felhasználó tárhelyén, amit a korábbi verziók tárolására használ a rendszer. Egy felhasználó bármikor visszatérhet egy korábbi verzióhoz a webes felületen keresztül, és a lecserélt fájl maga is előzménnyé válik. Az alkalmazás automatikusan kezeli a verziómappát, biztosítva, hogy a fiók ne fusson ki a tárterületéből az előzmények miatt.\n\t\tA fájlelőzmények lejárati dátumán kívül az alkalmazás sose használ az elérhető szabad terület 50%-ánál többet. Ha a tárolt előzmények túllépik ezt a korlátot, az alkalmazás addig törli a legrégebbi verziókat, amíg nem felel meg a korlátozásnak. További információ érhető el a Verziók dokumentációjában.", "Current version" : "Jelenlegi verzió", "Initial version" : "Kezdeti verzió", + "You" : "Ön", "Actions for version from {versionHumanExplicitDate}" : "A verzióra vonatkozó műveletek: {versionHumanExplicitDate}", "Name this version" : "Verzió elnevezése", "Edit version name" : "Verziónév szerkesztése", diff --git a/apps/files_versions/l10n/is.js b/apps/files_versions/l10n/is.js index 06ff3971930..5f995d19f2f 100644 --- a/apps/files_versions/l10n/is.js +++ b/apps/files_versions/l10n/is.js @@ -5,6 +5,7 @@ OC.L10N.register( "This application automatically maintains older versions of files that are changed." : "Þetta forrit viðheldur sjálfvirkt eldri útgáfum skráa sem er breytt.", "Current version" : "Fyrirliggjandi útgáfa", "Initial version" : "Upprunaleg útgáfa", + "You" : "Þú", "Actions for version from {versionHumanExplicitDate}" : "Aðgerðir fyrir útgáfu frá {versionHumanExplicitDate}", "Name this version" : "Settu heiti á þessa útgáfu", "Edit version name" : "Breyta heiti útgáfunnar", diff --git a/apps/files_versions/l10n/is.json b/apps/files_versions/l10n/is.json index d189a05e517..368351cdac7 100644 --- a/apps/files_versions/l10n/is.json +++ b/apps/files_versions/l10n/is.json @@ -3,6 +3,7 @@ "This application automatically maintains older versions of files that are changed." : "Þetta forrit viðheldur sjálfvirkt eldri útgáfum skráa sem er breytt.", "Current version" : "Fyrirliggjandi útgáfa", "Initial version" : "Upprunaleg útgáfa", + "You" : "Þú", "Actions for version from {versionHumanExplicitDate}" : "Aðgerðir fyrir útgáfu frá {versionHumanExplicitDate}", "Name this version" : "Settu heiti á þessa útgáfu", "Edit version name" : "Breyta heiti útgáfunnar", diff --git a/apps/files_versions/l10n/it.js b/apps/files_versions/l10n/it.js index a89a84e9bf0..2e782c6d327 100644 --- a/apps/files_versions/l10n/it.js +++ b/apps/files_versions/l10n/it.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Questa applicazione conserva automaticamente le versioni più datate dei file che sono stati modificati. Se attivata, una cartella nascosta delle versioni viene generata in ogni cartella degli utenti ed è usata per archiviare le versioni datate dei file. Un utente può tornare a una versione più datata tramite l'interfaccia web in qualsiasi momento, con il file sostituito che diventa una versione. L'applicazione gestisce automaticamente la cartella delle versioni per assicurare che l'account non esaurisca mai la quota a causa delle versioni.\n\t\tIn aggiunta alla scadenza delle versioni, l'applicazione delle versioni si accerta che non sia utilizzato mai più del 50% dello spazio disponibile attualmente all'account. Se le versioni archiviate eccedono questo limite, l'applicazione eliminerà prima le versioni più vecchie, fino a raggiungere questo limite. Altre informazioni sono disponibili nella documentazione di Versioni.", "Current version" : "Versione corrente", "Initial version" : "Versione iniziale", + "You" : "Tu", "Actions for version from {versionHumanExplicitDate}" : "Azioni per la versione da {versionHumanExplicitDate}", "Name this version" : "Nome di questa versione", "Edit version name" : "Modifica nome versione", @@ -22,6 +23,7 @@ OC.L10N.register( "Version restored" : "Versione ripristinata", "Could not restore version" : "Impossibile ripristinare la versione", "Could not set version label" : "Impossibile impostare l'etichetta della versione", - "Could not delete version" : "Impossibile eliminare la versione" + "Could not delete version" : "Impossibile eliminare la versione", + "File versions" : "Versioni dei file" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_versions/l10n/it.json b/apps/files_versions/l10n/it.json index a5beb882c9c..0871aa8c115 100644 --- a/apps/files_versions/l10n/it.json +++ b/apps/files_versions/l10n/it.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Questa applicazione conserva automaticamente le versioni più datate dei file che sono stati modificati. Se attivata, una cartella nascosta delle versioni viene generata in ogni cartella degli utenti ed è usata per archiviare le versioni datate dei file. Un utente può tornare a una versione più datata tramite l'interfaccia web in qualsiasi momento, con il file sostituito che diventa una versione. L'applicazione gestisce automaticamente la cartella delle versioni per assicurare che l'account non esaurisca mai la quota a causa delle versioni.\n\t\tIn aggiunta alla scadenza delle versioni, l'applicazione delle versioni si accerta che non sia utilizzato mai più del 50% dello spazio disponibile attualmente all'account. Se le versioni archiviate eccedono questo limite, l'applicazione eliminerà prima le versioni più vecchie, fino a raggiungere questo limite. Altre informazioni sono disponibili nella documentazione di Versioni.", "Current version" : "Versione corrente", "Initial version" : "Versione iniziale", + "You" : "Tu", "Actions for version from {versionHumanExplicitDate}" : "Azioni per la versione da {versionHumanExplicitDate}", "Name this version" : "Nome di questa versione", "Edit version name" : "Modifica nome versione", @@ -20,6 +21,7 @@ "Version restored" : "Versione ripristinata", "Could not restore version" : "Impossibile ripristinare la versione", "Could not set version label" : "Impossibile impostare l'etichetta della versione", - "Could not delete version" : "Impossibile eliminare la versione" + "Could not delete version" : "Impossibile eliminare la versione", + "File versions" : "Versioni dei file" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/ja.js b/apps/files_versions/l10n/ja.js index 13e608003a0..fc54548b782 100644 --- a/apps/files_versions/l10n/ja.js +++ b/apps/files_versions/l10n/ja.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "このアプリケーションは、変更された古いバージョンのファイルを自動的に維持します。有効にすると、隠れバージョン用フォルダーがすべてのユーザーのディレクトリに用意され、古いファイルバージョンを格納するために使用されます。ユーザーはいつでもWebインターフェースから古いバージョンに戻すことができ、置き換えられたファイルはバージョン管理されます。アプリはバージョンフォルダーを自動的に管理して、アカウントがバージョン履歴のために容量を使い果たさないようにします。\nバージョンの有効期限に加えて、バージョンアプリは、アカウントの現在利用可能な空き容量の50%以上を使用しないように維持します。保存されたバージョンがこの制限を超えた場合、アプリはこの制限を満たすまで、最初に最も古いバージョンから削除します。詳細は、バージョンのドキュメントを参照してください。", "Current version" : "現在のバージョン", "Initial version" : "最初のバージョン", + "You" : "自分", "Actions for version from {versionHumanExplicitDate}" : "{versionHumanExplicitDate}からのバージョンに対するアクション", "Name this version" : "このバージョンに名前を付けます", "Edit version name" : "バージョン名の編集", diff --git a/apps/files_versions/l10n/ja.json b/apps/files_versions/l10n/ja.json index 32a0cdd5508..fd7e6b9d3ec 100644 --- a/apps/files_versions/l10n/ja.json +++ b/apps/files_versions/l10n/ja.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "このアプリケーションは、変更された古いバージョンのファイルを自動的に維持します。有効にすると、隠れバージョン用フォルダーがすべてのユーザーのディレクトリに用意され、古いファイルバージョンを格納するために使用されます。ユーザーはいつでもWebインターフェースから古いバージョンに戻すことができ、置き換えられたファイルはバージョン管理されます。アプリはバージョンフォルダーを自動的に管理して、アカウントがバージョン履歴のために容量を使い果たさないようにします。\nバージョンの有効期限に加えて、バージョンアプリは、アカウントの現在利用可能な空き容量の50%以上を使用しないように維持します。保存されたバージョンがこの制限を超えた場合、アプリはこの制限を満たすまで、最初に最も古いバージョンから削除します。詳細は、バージョンのドキュメントを参照してください。", "Current version" : "現在のバージョン", "Initial version" : "最初のバージョン", + "You" : "自分", "Actions for version from {versionHumanExplicitDate}" : "{versionHumanExplicitDate}からのバージョンに対するアクション", "Name this version" : "このバージョンに名前を付けます", "Edit version name" : "バージョン名の編集", diff --git a/apps/files_versions/l10n/ka.js b/apps/files_versions/l10n/ka.js index fb3ae5b7d08..92b8518a28f 100644 --- a/apps/files_versions/l10n/ka.js +++ b/apps/files_versions/l10n/ka.js @@ -5,6 +5,7 @@ OC.L10N.register( "This application automatically maintains older versions of files that are changed." : "This application automatically maintains older versions of files that are changed.", "Current version" : "Current version", "Initial version" : "Initial version", + "You" : "You", "Name this version" : "Name this version", "Edit version name" : "Edit version name", "Compare to current version" : "Compare to current version", diff --git a/apps/files_versions/l10n/ka.json b/apps/files_versions/l10n/ka.json index 4259efd747c..fb116a07a9d 100644 --- a/apps/files_versions/l10n/ka.json +++ b/apps/files_versions/l10n/ka.json @@ -3,6 +3,7 @@ "This application automatically maintains older versions of files that are changed." : "This application automatically maintains older versions of files that are changed.", "Current version" : "Current version", "Initial version" : "Initial version", + "You" : "You", "Name this version" : "Name this version", "Edit version name" : "Edit version name", "Compare to current version" : "Compare to current version", diff --git a/apps/files_versions/l10n/ko.js b/apps/files_versions/l10n/ko.js index 23088f17ebc..ec839dace65 100644 --- a/apps/files_versions/l10n/ko.js +++ b/apps/files_versions/l10n/ko.js @@ -5,6 +5,7 @@ OC.L10N.register( "This application automatically maintains older versions of files that are changed." : "이 앱은 변경된 파일의 이전 버전을 관리합니다.", "Current version" : "현재 버전", "Initial version" : "초기 버전", + "You" : "당신", "Name this version" : "버전 이름 지정", "Edit version name" : "버전 이름 수정", "Compare to current version" : "현재 버전과 비교하기", diff --git a/apps/files_versions/l10n/ko.json b/apps/files_versions/l10n/ko.json index b1c7d4d02cc..658529bf8bd 100644 --- a/apps/files_versions/l10n/ko.json +++ b/apps/files_versions/l10n/ko.json @@ -3,6 +3,7 @@ "This application automatically maintains older versions of files that are changed." : "이 앱은 변경된 파일의 이전 버전을 관리합니다.", "Current version" : "현재 버전", "Initial version" : "초기 버전", + "You" : "당신", "Name this version" : "버전 이름 지정", "Edit version name" : "버전 이름 수정", "Compare to current version" : "현재 버전과 비교하기", diff --git a/apps/files_versions/l10n/lt_LT.js b/apps/files_versions/l10n/lt_LT.js index df08c662549..101281dae52 100644 --- a/apps/files_versions/l10n/lt_LT.js +++ b/apps/files_versions/l10n/lt_LT.js @@ -5,6 +5,7 @@ OC.L10N.register( "This application automatically maintains older versions of files that are changed." : "Ši programa automatiškai palaiko senesnes pakeistų failų versijas.", "Current version" : "Dabartinė versija", "Initial version" : "Pradinė versija", + "You" : "Jūs", "Edit version name" : "Taisyti versijos pavadinimą", "Compare to current version" : "Palyginti su dabartine versija", "Restore version" : "Atkurti versiją", diff --git a/apps/files_versions/l10n/lt_LT.json b/apps/files_versions/l10n/lt_LT.json index 11022393356..6f0ce5d3c6d 100644 --- a/apps/files_versions/l10n/lt_LT.json +++ b/apps/files_versions/l10n/lt_LT.json @@ -3,6 +3,7 @@ "This application automatically maintains older versions of files that are changed." : "Ši programa automatiškai palaiko senesnes pakeistų failų versijas.", "Current version" : "Dabartinė versija", "Initial version" : "Pradinė versija", + "You" : "Jūs", "Edit version name" : "Taisyti versijos pavadinimą", "Compare to current version" : "Palyginti su dabartine versija", "Restore version" : "Atkurti versiją", diff --git a/apps/files_versions/l10n/mk.js b/apps/files_versions/l10n/mk.js index 0017f6898e9..69789889290 100644 --- a/apps/files_versions/l10n/mk.js +++ b/apps/files_versions/l10n/mk.js @@ -5,6 +5,7 @@ OC.L10N.register( "This application automatically maintains older versions of files that are changed." : "Оваа апликација автоматски ги менаџира постарите верзии на датотеките кој се изменети.", "Current version" : "Моментална верзија", "Initial version" : "Првична верзија", + "You" : "Вие", "Name this version" : "Додај име на оваа верзијата", "Edit version name" : "Промени име на верзијата", "Compare to current version" : "Спореди со моменталната верзија", diff --git a/apps/files_versions/l10n/mk.json b/apps/files_versions/l10n/mk.json index b1a58b96ad2..06737b098d6 100644 --- a/apps/files_versions/l10n/mk.json +++ b/apps/files_versions/l10n/mk.json @@ -3,6 +3,7 @@ "This application automatically maintains older versions of files that are changed." : "Оваа апликација автоматски ги менаџира постарите верзии на датотеките кој се изменети.", "Current version" : "Моментална верзија", "Initial version" : "Првична верзија", + "You" : "Вие", "Name this version" : "Додај име на оваа верзијата", "Edit version name" : "Промени име на верзијата", "Compare to current version" : "Спореди со моменталната верзија", diff --git a/apps/files_versions/l10n/nb.js b/apps/files_versions/l10n/nb.js index f155df00646..16e91d78621 100644 --- a/apps/files_versions/l10n/nb.js +++ b/apps/files_versions/l10n/nb.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Dette programmet opprettholder automatisk eldre versjoner av filer som endres. Når den er aktivert, klargjøres en mappe for skjulte versjoner i hver brukers katalog og brukes til å lagre gamle filversjoner. En bruker kan når som helst gå tilbake til en eldre versjon via webgrensesnittet, og den erstattede filen blir en versjon. Appen administrerer automatisk versjonsmappen for å sikre at brukeren ikke går tom for kvote på grunn av versjoner.\n\t\tI tillegg til at versjoner opphører, sørger versjonsappen for aldri å bruke mer enn 50% av brukerens tilgjengelige ledige plass. Hvis lagrede versjoner overskrider denne grensen, sletter appen de eldste versjonene først til den oppfyller denne grensen. Du finner mer informasjon i dokumentasjonen for Versions.", "Current version" : "Nåværende versjon", "Initial version" : "Opprinnelig versjon", + "You" : "Du", "Actions for version from {versionHumanExplicitDate}" : "Handlinger for versjon fra {versionHumanExplicitDate}", "Name this version" : "Navngi denne versjonen", "Edit version name" : "Rediger versjonsnavn", diff --git a/apps/files_versions/l10n/nb.json b/apps/files_versions/l10n/nb.json index 5dcef7c7b4c..a08659e07ac 100644 --- a/apps/files_versions/l10n/nb.json +++ b/apps/files_versions/l10n/nb.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Dette programmet opprettholder automatisk eldre versjoner av filer som endres. Når den er aktivert, klargjøres en mappe for skjulte versjoner i hver brukers katalog og brukes til å lagre gamle filversjoner. En bruker kan når som helst gå tilbake til en eldre versjon via webgrensesnittet, og den erstattede filen blir en versjon. Appen administrerer automatisk versjonsmappen for å sikre at brukeren ikke går tom for kvote på grunn av versjoner.\n\t\tI tillegg til at versjoner opphører, sørger versjonsappen for aldri å bruke mer enn 50% av brukerens tilgjengelige ledige plass. Hvis lagrede versjoner overskrider denne grensen, sletter appen de eldste versjonene først til den oppfyller denne grensen. Du finner mer informasjon i dokumentasjonen for Versions.", "Current version" : "Nåværende versjon", "Initial version" : "Opprinnelig versjon", + "You" : "Du", "Actions for version from {versionHumanExplicitDate}" : "Handlinger for versjon fra {versionHumanExplicitDate}", "Name this version" : "Navngi denne versjonen", "Edit version name" : "Rediger versjonsnavn", diff --git a/apps/files_versions/l10n/nl.js b/apps/files_versions/l10n/nl.js index a5823f591e2..dba7e5bc48e 100644 --- a/apps/files_versions/l10n/nl.js +++ b/apps/files_versions/l10n/nl.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Deze applicatie bewaart automatisch oudere versies van bestanden die gewijzigd zijn. Als dit is ingeschakeld, wordt er in de map van elke gebruiker een map met verborgen versies gemaakt waarin oude bestandsversies worden opgeslagen. Een gebruiker kan op elk moment teruggaan naar een oudere versie via de webinterface, waarbij het vervangen bestand een versie wordt. De app beheert de versie map automatisch om ervoor te zorgen dat het account niet zonder quota komt te zitten door versies.\n\t\tNaast het verlopen van versies zorgt de versies-app ervoor dat nooit meer dan 50% van de op dat moment beschikbare vrije ruimte van het account wordt gebruikt. Als opgeslagen versies deze limiet overschrijden, zal de app eerst de oudste versies verwijderen totdat deze limiet is bereikt. Meer informatie is beschikbaar in de documentatie over versies.", "Current version" : "Huidige versie", "Initial version" : "Initiële versie", + "You" : "Jij", "Name this version" : "Geef deze versie een naam", "Edit version name" : "Bewerk versie naam", "Compare to current version" : "Vergelijk met huidige versie", diff --git a/apps/files_versions/l10n/nl.json b/apps/files_versions/l10n/nl.json index 9dbd130d7f2..425b5db0399 100644 --- a/apps/files_versions/l10n/nl.json +++ b/apps/files_versions/l10n/nl.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Deze applicatie bewaart automatisch oudere versies van bestanden die gewijzigd zijn. Als dit is ingeschakeld, wordt er in de map van elke gebruiker een map met verborgen versies gemaakt waarin oude bestandsversies worden opgeslagen. Een gebruiker kan op elk moment teruggaan naar een oudere versie via de webinterface, waarbij het vervangen bestand een versie wordt. De app beheert de versie map automatisch om ervoor te zorgen dat het account niet zonder quota komt te zitten door versies.\n\t\tNaast het verlopen van versies zorgt de versies-app ervoor dat nooit meer dan 50% van de op dat moment beschikbare vrije ruimte van het account wordt gebruikt. Als opgeslagen versies deze limiet overschrijden, zal de app eerst de oudste versies verwijderen totdat deze limiet is bereikt. Meer informatie is beschikbaar in de documentatie over versies.", "Current version" : "Huidige versie", "Initial version" : "Initiële versie", + "You" : "Jij", "Name this version" : "Geef deze versie een naam", "Edit version name" : "Bewerk versie naam", "Compare to current version" : "Vergelijk met huidige versie", diff --git a/apps/files_versions/l10n/pl.js b/apps/files_versions/l10n/pl.js index fcb85fc1e23..413cab89b0b 100644 --- a/apps/files_versions/l10n/pl.js +++ b/apps/files_versions/l10n/pl.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Ta aplikacja automatycznie utrzymuje starsze wersje plików, które zostały zmienione. Po włączeniu, w katalogu każdego użytkownika udostępniany jest katalog wersji ukrytych, który służy do przechowywania starych wersji plików. Użytkownik może w dowolnym momencie powrócić do starszej wersji za pośrednictwem interfejsu internetowego, a zastąpiony plik staje się wersją. Aplikacja automatycznie zarządza katalogiem wersji, aby mieć pewność, że na koncie nie zabraknie miejsca z powodu wersji.\n\t\tOprócz wygaszania wersji aplikacja sprawdza, by nigdy nie zostało wykorzystane więcej niż 50% aktualnie dostępnego wolnego miejsca na koncie. Jeśli przechowywane wersje przekroczą ten limit, aplikacja najpierw usunie najstarsze wersje, aż do osiągnięcia tego limitu. Więcej informacji można znaleźć w dokumentacji aplikacji wersji.", "Current version" : "Obecna wersja", "Initial version" : "Początkowa wersja", + "You" : "Ty", "Actions for version from {versionHumanExplicitDate}" : "Działania dla wersji z {versionHumanExplicitDate}", "Name this version" : "Nazwij tę wersję", "Edit version name" : "Edytuj nazwę wersji", diff --git a/apps/files_versions/l10n/pl.json b/apps/files_versions/l10n/pl.json index 118c0c9f5f5..1912a026752 100644 --- a/apps/files_versions/l10n/pl.json +++ b/apps/files_versions/l10n/pl.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Ta aplikacja automatycznie utrzymuje starsze wersje plików, które zostały zmienione. Po włączeniu, w katalogu każdego użytkownika udostępniany jest katalog wersji ukrytych, który służy do przechowywania starych wersji plików. Użytkownik może w dowolnym momencie powrócić do starszej wersji za pośrednictwem interfejsu internetowego, a zastąpiony plik staje się wersją. Aplikacja automatycznie zarządza katalogiem wersji, aby mieć pewność, że na koncie nie zabraknie miejsca z powodu wersji.\n\t\tOprócz wygaszania wersji aplikacja sprawdza, by nigdy nie zostało wykorzystane więcej niż 50% aktualnie dostępnego wolnego miejsca na koncie. Jeśli przechowywane wersje przekroczą ten limit, aplikacja najpierw usunie najstarsze wersje, aż do osiągnięcia tego limitu. Więcej informacji można znaleźć w dokumentacji aplikacji wersji.", "Current version" : "Obecna wersja", "Initial version" : "Początkowa wersja", + "You" : "Ty", "Actions for version from {versionHumanExplicitDate}" : "Działania dla wersji z {versionHumanExplicitDate}", "Name this version" : "Nazwij tę wersję", "Edit version name" : "Edytuj nazwę wersji", diff --git a/apps/files_versions/l10n/pt_BR.js b/apps/files_versions/l10n/pt_BR.js index 696cc68299f..5397448addc 100644 --- a/apps/files_versions/l10n/pt_BR.js +++ b/apps/files_versions/l10n/pt_BR.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Este aplicativo mantém automaticamente versões mais antigas de arquivos que foram alterados. Quando ativada, uma pasta de versões ocultas é provisionada no diretório de cada usuário e usada para armazenar versões antigas de arquivos. Um usuário pode reverter para uma versão mais antiga através da interface web a qualquer momento, com o arquivo substituído se tornando uma versão. O aplicativo gerencia automaticamente a pasta de versões para garantir que a conta não fique sem cota por causa das versões. \n\t\tAlém da expiração das versões, o aplicativo de versões garante nunca usar mais de 50% do espaço livre disponível atualmente na conta. Se as versões armazenadas excederem esse limite, o aplicativo excluirá primeiro as versões mais antigas até atingir esse limite. Mais informações estão disponíveis na documentação de Versões.", "Current version" : "Versão atual", "Initial version" : "Versão inicial", + "You" : "Você", "Actions for version from {versionHumanExplicitDate}" : "Ações para versão de {versionHumanExplicitDate}", "Name this version" : "Nomeie esta versão", "Edit version name" : "Editar nome da versão", @@ -22,6 +23,7 @@ OC.L10N.register( "Version restored" : "Versão restaurada", "Could not restore version" : "Não foi possível restaurar esta versão", "Could not set version label" : "Não foi possível definir o rótulo da versão", - "Could not delete version" : "Não foi possível excluir a versão" + "Could not delete version" : "Não foi possível excluir a versão", + "File versions" : "Versões do arquivo" }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_versions/l10n/pt_BR.json b/apps/files_versions/l10n/pt_BR.json index f818957eb8d..ae825969fb6 100644 --- a/apps/files_versions/l10n/pt_BR.json +++ b/apps/files_versions/l10n/pt_BR.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Este aplicativo mantém automaticamente versões mais antigas de arquivos que foram alterados. Quando ativada, uma pasta de versões ocultas é provisionada no diretório de cada usuário e usada para armazenar versões antigas de arquivos. Um usuário pode reverter para uma versão mais antiga através da interface web a qualquer momento, com o arquivo substituído se tornando uma versão. O aplicativo gerencia automaticamente a pasta de versões para garantir que a conta não fique sem cota por causa das versões. \n\t\tAlém da expiração das versões, o aplicativo de versões garante nunca usar mais de 50% do espaço livre disponível atualmente na conta. Se as versões armazenadas excederem esse limite, o aplicativo excluirá primeiro as versões mais antigas até atingir esse limite. Mais informações estão disponíveis na documentação de Versões.", "Current version" : "Versão atual", "Initial version" : "Versão inicial", + "You" : "Você", "Actions for version from {versionHumanExplicitDate}" : "Ações para versão de {versionHumanExplicitDate}", "Name this version" : "Nomeie esta versão", "Edit version name" : "Editar nome da versão", @@ -20,6 +21,7 @@ "Version restored" : "Versão restaurada", "Could not restore version" : "Não foi possível restaurar esta versão", "Could not set version label" : "Não foi possível definir o rótulo da versão", - "Could not delete version" : "Não foi possível excluir a versão" + "Could not delete version" : "Não foi possível excluir a versão", + "File versions" : "Versões do arquivo" },"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/files_versions/l10n/ru.js b/apps/files_versions/l10n/ru.js index ef54c876b54..a06b03e6126 100644 --- a/apps/files_versions/l10n/ru.js +++ b/apps/files_versions/l10n/ru.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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% доступного в данный момент свободного места в учетной записи. Если сохраненные версии превысят это ограничение, приложение сначала удалит самые старые версии, пока не достигнет этого ограничения. Более подробная информация доступна в документации по версиям.", "Current version" : "Текущая версия", "Initial version" : "Первоначальная версия", + "You" : "Вы", "Actions for version from {versionHumanExplicitDate}" : "Действия для версии из {versionHumanExplicitDate}", "Name this version" : "Обозначить версию", "Edit version name" : "Изменить название версии", diff --git a/apps/files_versions/l10n/ru.json b/apps/files_versions/l10n/ru.json index f7dd7181d16..4df12d77afa 100644 --- a/apps/files_versions/l10n/ru.json +++ b/apps/files_versions/l10n/ru.json @@ -4,6 +4,7 @@ "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 account 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 account'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% доступного в данный момент свободного места в учетной записи. Если сохраненные версии превысят это ограничение, приложение сначала удалит самые старые версии, пока не достигнет этого ограничения. Более подробная информация доступна в документации по версиям.", "Current version" : "Текущая версия", "Initial version" : "Первоначальная версия", + "You" : "Вы", "Actions for version from {versionHumanExplicitDate}" : "Действия для версии из {versionHumanExplicitDate}", "Name this version" : "Обозначить версию", "Edit version name" : "Изменить название версии", diff --git a/apps/files_versions/l10n/sk.js b/apps/files_versions/l10n/sk.js index a18855f66cd..ff9ab4ed723 100644 --- a/apps/files_versions/l10n/sk.js +++ b/apps/files_versions/l10n/sk.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Táto aplikácia automaticky udržiava staršie verzie súborov, ktoré sú zmenené. Keď je táto možnosť povolená, v adresári každého užívateľa sa vytvorí adresáč skrytých verzií, ktorý sa používa na ukladanie starých verzií súborov. Užívateľ sa môže kedykoľvek vrátiť k staršej verzii prostredníctvom webového rozhrania, pričom nahradený súbor sa stane verziou. Aplikácia automaticky spravuje adresár verzií, aby sa zabezpečilo, že užívateľovi nevyčerpá kvóta kvôli verziám.\nOkrem vypršania platnosti verzií, aplikácia verzie zaisťuje, že nikdy nevyužije viac ako 50 % aktuálne dostupného voľného miesta užívateľa. Ak uložené verzie prekročia tento limit, aplikácia najskôr vymaže najstaršie verzie, kým tento limit nedosiahne. Ďalšie informácie sú k dispozícii v dokumentácii k verziám.", "Current version" : "Aktuálna verzia", "Initial version" : "Úvodná verzia", + "You" : "Vy", "Actions for version from {versionHumanExplicitDate}" : "Akcie pre verziu od {versionHumanExplicitDate}", "Name this version" : "Pomenovať túto verziu", "Edit version name" : "Upraviť názov verzie", @@ -22,6 +23,7 @@ OC.L10N.register( "Version restored" : "Verzia bola obnovená", "Could not restore version" : "Nepodarilo sa obnoviť verziu", "Could not set version label" : "Nepodarilo sa nastaviť označenie verzie", - "Could not delete version" : "Nepodarilo sa odstrániť verziu" + "Could not delete version" : "Nepodarilo sa odstrániť verziu", + "File versions" : "Verzie súboru" }, "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/files_versions/l10n/sk.json b/apps/files_versions/l10n/sk.json index 3f996500934..afe241520b7 100644 --- a/apps/files_versions/l10n/sk.json +++ b/apps/files_versions/l10n/sk.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Táto aplikácia automaticky udržiava staršie verzie súborov, ktoré sú zmenené. Keď je táto možnosť povolená, v adresári každého užívateľa sa vytvorí adresáč skrytých verzií, ktorý sa používa na ukladanie starých verzií súborov. Užívateľ sa môže kedykoľvek vrátiť k staršej verzii prostredníctvom webového rozhrania, pričom nahradený súbor sa stane verziou. Aplikácia automaticky spravuje adresár verzií, aby sa zabezpečilo, že užívateľovi nevyčerpá kvóta kvôli verziám.\nOkrem vypršania platnosti verzií, aplikácia verzie zaisťuje, že nikdy nevyužije viac ako 50 % aktuálne dostupného voľného miesta užívateľa. Ak uložené verzie prekročia tento limit, aplikácia najskôr vymaže najstaršie verzie, kým tento limit nedosiahne. Ďalšie informácie sú k dispozícii v dokumentácii k verziám.", "Current version" : "Aktuálna verzia", "Initial version" : "Úvodná verzia", + "You" : "Vy", "Actions for version from {versionHumanExplicitDate}" : "Akcie pre verziu od {versionHumanExplicitDate}", "Name this version" : "Pomenovať túto verziu", "Edit version name" : "Upraviť názov verzie", @@ -20,6 +21,7 @@ "Version restored" : "Verzia bola obnovená", "Could not restore version" : "Nepodarilo sa obnoviť verziu", "Could not set version label" : "Nepodarilo sa nastaviť označenie verzie", - "Could not delete version" : "Nepodarilo sa odstrániť verziu" + "Could not delete version" : "Nepodarilo sa odstrániť verziu", + "File versions" : "Verzie súboru" },"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/files_versions/l10n/sl.js b/apps/files_versions/l10n/sl.js index 7ae00aa1a28..0881c039161 100644 --- a/apps/files_versions/l10n/sl.js +++ b/apps/files_versions/l10n/sl.js @@ -4,6 +4,7 @@ OC.L10N.register( "Versions" : "Različice", "This application automatically maintains older versions of files that are changed." : "Program samodejno ustvarja zaporedne različice sprememb datotek.", "Current version" : "Trenutna različica", + "You" : "Jaz", "Name this version" : "Poimenovanje razičice", "Edit version name" : "Uredi ime različice", "Restore version" : "Obnovi različico", diff --git a/apps/files_versions/l10n/sl.json b/apps/files_versions/l10n/sl.json index 850d2c598c0..21c2a0b2089 100644 --- a/apps/files_versions/l10n/sl.json +++ b/apps/files_versions/l10n/sl.json @@ -2,6 +2,7 @@ "Versions" : "Različice", "This application automatically maintains older versions of files that are changed." : "Program samodejno ustvarja zaporedne različice sprememb datotek.", "Current version" : "Trenutna različica", + "You" : "Jaz", "Name this version" : "Poimenovanje razičice", "Edit version name" : "Uredi ime različice", "Restore version" : "Obnovi različico", diff --git a/apps/files_versions/l10n/sr.js b/apps/files_versions/l10n/sr.js index 6d2eb5524b5..9fae518228f 100644 --- a/apps/files_versions/l10n/sr.js +++ b/apps/files_versions/l10n/sr.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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% текућег слободног простора налога. Ако сачуване верзије прекораче ово ограничење, апликација ће најпре обриати најстарије верзије све док се не задовољи ограничење. Више информација се налази у документацији апликације Верзије.", "Current version" : "Тренутна верзија", "Initial version" : "Почетна верзија", + "You" : "Ви", "Actions for version from {versionHumanExplicitDate}" : "Акције за верзију од {versionHumanExplicitDate}", "Name this version" : "Назив ове верзије", "Edit version name" : "Уреди назив верзије", @@ -22,6 +23,7 @@ OC.L10N.register( "Version restored" : "Верзија је рестаурирана", "Could not restore version" : "Верзија није могла да се рестаурира", "Could not set version label" : "Није могла да се постави ознака назива верзије", - "Could not delete version" : "Верзија није могла да се обрише" + "Could not delete version" : "Верзија није могла да се обрише", + "File versions" : "Верзије фајла" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_versions/l10n/sr.json b/apps/files_versions/l10n/sr.json index ab8d2161cdd..c4d24c85abf 100644 --- a/apps/files_versions/l10n/sr.json +++ b/apps/files_versions/l10n/sr.json @@ -4,6 +4,7 @@ "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 account 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 account'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% текућег слободног простора налога. Ако сачуване верзије прекораче ово ограничење, апликација ће најпре обриати најстарије верзије све док се не задовољи ограничење. Више информација се налази у документацији апликације Верзије.", "Current version" : "Тренутна верзија", "Initial version" : "Почетна верзија", + "You" : "Ви", "Actions for version from {versionHumanExplicitDate}" : "Акције за верзију од {versionHumanExplicitDate}", "Name this version" : "Назив ове верзије", "Edit version name" : "Уреди назив верзије", @@ -20,6 +21,7 @@ "Version restored" : "Верзија је рестаурирана", "Could not restore version" : "Верзија није могла да се рестаурира", "Could not set version label" : "Није могла да се постави ознака назива верзије", - "Could not delete version" : "Верзија није могла да се обрише" + "Could not delete version" : "Верзија није могла да се обрише", + "File versions" : "Верзије фајла" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/sv.js b/apps/files_versions/l10n/sv.js index de7c822fd17..d8d9152ab8b 100644 --- a/apps/files_versions/l10n/sv.js +++ b/apps/files_versions/l10n/sv.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Denna applikation hanterar automatiskt äldre versioner av filer när de ändras. När funktionen är aktiverad tillhandahålls en dold versionsmapp i varje användares katalog som används för att lagra gamla filversioner. En användare kan när som helst återgå till en äldre version via webbgränssnittet, när detta görs blir den ersatta filen en version. Appen hanterar automatiskt versionsmappen för att säkerställa att användaren inte får slut på sin kvot på grund av sparade versioner.\nUtöver hantering av utgångna versioner så förvissar sig appen för versionshantering att den inte använder sig av mer än 50% av användarens tillgängliga ledigt utrymme. Om lagrade versioner överskrider denna gräns, kommer appen att ta bort de äldsta versionerna först tills den inte längre överskrider gränsen. Mer information finns i Versionsdokumentationen.", "Current version" : "Aktuell version", "Initial version" : "Första versionen", + "You" : "Du", "Actions for version from {versionHumanExplicitDate}" : "Åtgärder för version från {versionHumanExplicitDate}", "Name this version" : "Namnge denna version", "Edit version name" : "Ändra versionsnamn", diff --git a/apps/files_versions/l10n/sv.json b/apps/files_versions/l10n/sv.json index bed1d527481..7aa2251e688 100644 --- a/apps/files_versions/l10n/sv.json +++ b/apps/files_versions/l10n/sv.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Denna applikation hanterar automatiskt äldre versioner av filer när de ändras. När funktionen är aktiverad tillhandahålls en dold versionsmapp i varje användares katalog som används för att lagra gamla filversioner. En användare kan när som helst återgå till en äldre version via webbgränssnittet, när detta görs blir den ersatta filen en version. Appen hanterar automatiskt versionsmappen för att säkerställa att användaren inte får slut på sin kvot på grund av sparade versioner.\nUtöver hantering av utgångna versioner så förvissar sig appen för versionshantering att den inte använder sig av mer än 50% av användarens tillgängliga ledigt utrymme. Om lagrade versioner överskrider denna gräns, kommer appen att ta bort de äldsta versionerna först tills den inte längre överskrider gränsen. Mer information finns i Versionsdokumentationen.", "Current version" : "Aktuell version", "Initial version" : "Första versionen", + "You" : "Du", "Actions for version from {versionHumanExplicitDate}" : "Åtgärder för version från {versionHumanExplicitDate}", "Name this version" : "Namnge denna version", "Edit version name" : "Ändra versionsnamn", diff --git a/apps/files_versions/l10n/tr.js b/apps/files_versions/l10n/tr.js index 0800511e8d7..968a662dfd0 100644 --- a/apps/files_versions/l10n/tr.js +++ b/apps/files_versions/l10n/tr.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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." : "Bu uygulama değiştirilen dosyaların önceki sürümlerini otomatik olarak izler ve saklar. Kullanıma alındığında, dosya sürümlerini saklamak için her kullanıcının klasörlerinde gizli bir versions klasörü oluşturulur. Kullanıcılar site arayüzünü kullanarak istedikleri zaman dosyalarının daha önceki sürümlerine geri dönebilirler. Uygulama versions klasörünü otomatik olarak düzenler ve önceki dosya sürümleri nedeniyle hesabın kotasının dolmasını engeller.\n\t\tSürümler uygulaması dosya sürümlerini belirli bir süreyle saklarken, hesabın depolama alanının en çok %50 oranındaki bölümünü kullanır. Depolanan sürüm dosyalarının boyutu bu sınırın üzerine çıkarsa, sınır değerine geri dönülene kadar en eski sürüm dosyaları silinir. Ayrıntılı bilgi almak için Sürümler uygulamasının belgelerine bakabilirsiniz.", "Current version" : "Geçerli sürüm", "Initial version" : "İlk sürüm", + "You" : "Siz", "Actions for version from {versionHumanExplicitDate}" : "{versionHumanExplicitDate} tarihindeki sürüm için işlemler", "Name this version" : "Bu sürümü adlandırın", "Edit version name" : "Sürüm adını düzenle", diff --git a/apps/files_versions/l10n/tr.json b/apps/files_versions/l10n/tr.json index 9d6bad2ff02..303dbcf8bae 100644 --- a/apps/files_versions/l10n/tr.json +++ b/apps/files_versions/l10n/tr.json @@ -4,6 +4,7 @@ "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 account 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 account'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." : "Bu uygulama değiştirilen dosyaların önceki sürümlerini otomatik olarak izler ve saklar. Kullanıma alındığında, dosya sürümlerini saklamak için her kullanıcının klasörlerinde gizli bir versions klasörü oluşturulur. Kullanıcılar site arayüzünü kullanarak istedikleri zaman dosyalarının daha önceki sürümlerine geri dönebilirler. Uygulama versions klasörünü otomatik olarak düzenler ve önceki dosya sürümleri nedeniyle hesabın kotasının dolmasını engeller.\n\t\tSürümler uygulaması dosya sürümlerini belirli bir süreyle saklarken, hesabın depolama alanının en çok %50 oranındaki bölümünü kullanır. Depolanan sürüm dosyalarının boyutu bu sınırın üzerine çıkarsa, sınır değerine geri dönülene kadar en eski sürüm dosyaları silinir. Ayrıntılı bilgi almak için Sürümler uygulamasının belgelerine bakabilirsiniz.", "Current version" : "Geçerli sürüm", "Initial version" : "İlk sürüm", + "You" : "Siz", "Actions for version from {versionHumanExplicitDate}" : "{versionHumanExplicitDate} tarihindeki sürüm için işlemler", "Name this version" : "Bu sürümü adlandırın", "Edit version name" : "Sürüm adını düzenle", diff --git a/apps/files_versions/l10n/ug.js b/apps/files_versions/l10n/ug.js index 89687a1f386..5fb5ab3d7e3 100644 --- a/apps/files_versions/l10n/ug.js +++ b/apps/files_versions/l10n/ug.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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 تىن كۆپرەكىنى ھەرگىز ئىشلەتمەسلىككە كاپالەتلىك قىلىدۇ. ئەگەر ساقلانغان نەشرى بۇ چەكتىن ئېشىپ كەتسە ، ئەپ بۇ چەككە توشقۇچە ئەڭ كونا نەشرىنى ئۆچۈرۈۋېتىدۇ. تېخىمۇ كۆپ ئۇچۇرلار نەشىر ھۆججىتىدە بار.", "Current version" : "نۆۋەتتىكى نەشرى", "Initial version" : "دەسلەپكى نەشرى", + "You" : "سەن", "Actions for version from {versionHumanExplicitDate}" : "{versionHumanExplicitDate} HumanExplicitDate from نەشرىدىكى مەشغۇلاتلار", "Name this version" : "بۇ نەشرىگە ئىسىم قويۇڭ", "Edit version name" : "نەشرىنىڭ نامىنى تەھرىرلەش", diff --git a/apps/files_versions/l10n/ug.json b/apps/files_versions/l10n/ug.json index 2d956e94f11..29d3a9be9b6 100644 --- a/apps/files_versions/l10n/ug.json +++ b/apps/files_versions/l10n/ug.json @@ -4,6 +4,7 @@ "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 account 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 account'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 تىن كۆپرەكىنى ھەرگىز ئىشلەتمەسلىككە كاپالەتلىك قىلىدۇ. ئەگەر ساقلانغان نەشرى بۇ چەكتىن ئېشىپ كەتسە ، ئەپ بۇ چەككە توشقۇچە ئەڭ كونا نەشرىنى ئۆچۈرۈۋېتىدۇ. تېخىمۇ كۆپ ئۇچۇرلار نەشىر ھۆججىتىدە بار.", "Current version" : "نۆۋەتتىكى نەشرى", "Initial version" : "دەسلەپكى نەشرى", + "You" : "سەن", "Actions for version from {versionHumanExplicitDate}" : "{versionHumanExplicitDate} HumanExplicitDate from نەشرىدىكى مەشغۇلاتلار", "Name this version" : "بۇ نەشرىگە ئىسىم قويۇڭ", "Edit version name" : "نەشرىنىڭ نامىنى تەھرىرلەش", diff --git a/apps/files_versions/l10n/uk.js b/apps/files_versions/l10n/uk.js index bc26eea733d..e2a6801b0af 100644 --- a/apps/files_versions/l10n/uk.js +++ b/apps/files_versions/l10n/uk.js @@ -5,6 +5,7 @@ OC.L10N.register( "This application automatically maintains older versions of files that are changed." : "Цей застосунок підтримує роботу з попередніми версіями файлів, які було змінено.", "Current version" : "Поточна версія", "Initial version" : "Початкова версія", + "You" : "Ви", "Actions for version from {versionHumanExplicitDate}" : "Дії для версії від {versionHumanExplicitDate}", "Name this version" : "Назвіть цю версію", "Edit version name" : "Редагуйте назву версії", @@ -21,6 +22,7 @@ OC.L10N.register( "Version restored" : "Версію відновлено", "Could not restore version" : "Не вдалося відновити версію", "Could not set version label" : "Не вдалося встановити ярлик версії", - "Could not delete version" : "Не вдалося вилучити версію" + "Could not delete version" : "Не вдалося вилучити версію", + "File versions" : "Версії файлу" }, "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 64503bc67c1..7ff4719704e 100644 --- a/apps/files_versions/l10n/uk.json +++ b/apps/files_versions/l10n/uk.json @@ -3,6 +3,7 @@ "This application automatically maintains older versions of files that are changed." : "Цей застосунок підтримує роботу з попередніми версіями файлів, які було змінено.", "Current version" : "Поточна версія", "Initial version" : "Початкова версія", + "You" : "Ви", "Actions for version from {versionHumanExplicitDate}" : "Дії для версії від {versionHumanExplicitDate}", "Name this version" : "Назвіть цю версію", "Edit version name" : "Редагуйте назву версії", @@ -19,6 +20,7 @@ "Version restored" : "Версію відновлено", "Could not restore version" : "Не вдалося відновити версію", "Could not set version label" : "Не вдалося встановити ярлик версії", - "Could not delete version" : "Не вдалося вилучити версію" + "Could not delete version" : "Не вдалося вилучити версію", + "File versions" : "Версії файлу" },"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/files_versions/l10n/vi.js b/apps/files_versions/l10n/vi.js index b08122ba132..2b9a02aa4e1 100644 --- a/apps/files_versions/l10n/vi.js +++ b/apps/files_versions/l10n/vi.js @@ -5,6 +5,7 @@ OC.L10N.register( "This application automatically maintains older versions of files that are changed." : "ng dụng này tự động duy trì các phiên bản cũ hơn của tệp đã được thay đổi.", "Current version" : "Phiên bản hiện tại", "Initial version" : "Phiên bản đầu tiên", + "You" : "Bạn", "Name this version" : "Đặt tên cho phiên bản này", "Edit version name" : "Chỉnh sửa tên phiên bản", "Compare to current version" : "So sánh với phiên bản hiện tại", diff --git a/apps/files_versions/l10n/vi.json b/apps/files_versions/l10n/vi.json index 0e24a0d9f33..db50330b5dc 100644 --- a/apps/files_versions/l10n/vi.json +++ b/apps/files_versions/l10n/vi.json @@ -3,6 +3,7 @@ "This application automatically maintains older versions of files that are changed." : "ng dụng này tự động duy trì các phiên bản cũ hơn của tệp đã được thay đổi.", "Current version" : "Phiên bản hiện tại", "Initial version" : "Phiên bản đầu tiên", + "You" : "Bạn", "Name this version" : "Đặt tên cho phiên bản này", "Edit version name" : "Chỉnh sửa tên phiên bản", "Compare to current version" : "So sánh với phiên bản hiện tại", diff --git a/apps/files_versions/l10n/zh_CN.js b/apps/files_versions/l10n/zh_CN.js index 4a871a1a50c..cdc937e9c11 100644 --- a/apps/files_versions/l10n/zh_CN.js +++ b/apps/files_versions/l10n/zh_CN.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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%。如果存储的版本超出此限制,则版本管理会先删除最早的版本直至低于存储限制。更多资讯详见“版本”说明文档。", "Current version" : "当前版本", "Initial version" : "初始版本", + "You" : "您", "Actions for version from {versionHumanExplicitDate}" : "{versionHumanExplicitDate} 版本的操作", "Name this version" : "命名此版本", "Edit version name" : "编辑版本名", @@ -22,6 +23,7 @@ OC.L10N.register( "Version restored" : "版本已还原", "Could not restore version" : "无法还原版本", "Could not set version label" : "无法设置版本标签", - "Could not delete version" : "无法删除版本" + "Could not delete version" : "无法删除版本", + "File versions" : "文件版本" }, "nplurals=1; plural=0;"); diff --git a/apps/files_versions/l10n/zh_CN.json b/apps/files_versions/l10n/zh_CN.json index d133c4dc717..24943a2fbf1 100644 --- a/apps/files_versions/l10n/zh_CN.json +++ b/apps/files_versions/l10n/zh_CN.json @@ -4,6 +4,7 @@ "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 account 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 account'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%。如果存储的版本超出此限制,则版本管理会先删除最早的版本直至低于存储限制。更多资讯详见“版本”说明文档。", "Current version" : "当前版本", "Initial version" : "初始版本", + "You" : "您", "Actions for version from {versionHumanExplicitDate}" : "{versionHumanExplicitDate} 版本的操作", "Name this version" : "命名此版本", "Edit version name" : "编辑版本名", @@ -20,6 +21,7 @@ "Version restored" : "版本已还原", "Could not restore version" : "无法还原版本", "Could not set version label" : "无法设置版本标签", - "Could not delete version" : "无法删除版本" + "Could not delete version" : "无法删除版本", + "File versions" : "文件版本" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/zh_HK.js b/apps/files_versions/l10n/zh_HK.js index 8eb7d057e52..48a566dc6cb 100644 --- a/apps/files_versions/l10n/zh_HK.js +++ b/apps/files_versions/l10n/zh_HK.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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%。如果儲存的版本超出此限制,則應用程式會先刪除最舊的版本,直到低於此限制。更多資訊請見「版本」說明書。", "Current version" : "目前版本", "Initial version" : "初始版本", + "You" : "您", "Actions for version from {versionHumanExplicitDate}" : "{versionHumanExplicitDate} 版本的操作", "Name this version" : "為此版本命名", "Edit version name" : "編輯版本名稱", @@ -22,6 +23,7 @@ OC.L10N.register( "Version restored" : "版本已還原", "Could not restore version" : "無法還原版本", "Could not set version label" : "無法設置版本標籤", - "Could not delete version" : "無法刪除版本" + "Could not delete version" : "無法刪除版本", + "File versions" : "檔案版本" }, "nplurals=1; plural=0;"); diff --git a/apps/files_versions/l10n/zh_HK.json b/apps/files_versions/l10n/zh_HK.json index f4d2058fc7a..b3ef15aae24 100644 --- a/apps/files_versions/l10n/zh_HK.json +++ b/apps/files_versions/l10n/zh_HK.json @@ -4,6 +4,7 @@ "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 account 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 account'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%。如果儲存的版本超出此限制,則應用程式會先刪除最舊的版本,直到低於此限制。更多資訊請見「版本」說明書。", "Current version" : "目前版本", "Initial version" : "初始版本", + "You" : "您", "Actions for version from {versionHumanExplicitDate}" : "{versionHumanExplicitDate} 版本的操作", "Name this version" : "為此版本命名", "Edit version name" : "編輯版本名稱", @@ -20,6 +21,7 @@ "Version restored" : "版本已還原", "Could not restore version" : "無法還原版本", "Could not set version label" : "無法設置版本標籤", - "Could not delete version" : "無法刪除版本" + "Could not delete version" : "無法刪除版本", + "File versions" : "檔案版本" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/zh_TW.js b/apps/files_versions/l10n/zh_TW.js index 6853b566598..8cb5f7c5c32 100644 --- a/apps/files_versions/l10n/zh_TW.js +++ b/apps/files_versions/l10n/zh_TW.js @@ -6,6 +6,7 @@ OC.L10N.register( "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 account 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 account'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%。如果儲存的版本超出此限制,則應用程式會先刪除最舊的版本,直到低於此限制。更多資訊請見「版本」文件。", "Current version" : "目前版本", "Initial version" : "初始版本", + "You" : "您", "Actions for version from {versionHumanExplicitDate}" : "來自 {versionHumanExplicitDate} 版本的動作", "Name this version" : "為此版本命名", "Edit version name" : "編輯版本名稱", @@ -22,6 +23,7 @@ OC.L10N.register( "Version restored" : "版本已還原", "Could not restore version" : "無法還原版本", "Could not set version label" : "無法設定版本標籤", - "Could not delete version" : "無法刪除版本" + "Could not delete version" : "無法刪除版本", + "File versions" : "檔案版本" }, "nplurals=1; plural=0;"); diff --git a/apps/files_versions/l10n/zh_TW.json b/apps/files_versions/l10n/zh_TW.json index 9f2be9dd578..f56231dcda0 100644 --- a/apps/files_versions/l10n/zh_TW.json +++ b/apps/files_versions/l10n/zh_TW.json @@ -4,6 +4,7 @@ "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 account 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 account'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%。如果儲存的版本超出此限制,則應用程式會先刪除最舊的版本,直到低於此限制。更多資訊請見「版本」文件。", "Current version" : "目前版本", "Initial version" : "初始版本", + "You" : "您", "Actions for version from {versionHumanExplicitDate}" : "來自 {versionHumanExplicitDate} 版本的動作", "Name this version" : "為此版本命名", "Edit version name" : "編輯版本名稱", @@ -20,6 +21,7 @@ "Version restored" : "版本已還原", "Could not restore version" : "無法還原版本", "Could not set version label" : "無法設定版本標籤", - "Could not delete version" : "無法刪除版本" + "Could not delete version" : "無法刪除版本", + "File versions" : "檔案版本" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_versions/lib/Controller/PreviewController.php b/apps/files_versions/lib/Controller/PreviewController.php index 2c2793b6878..be62c5eb957 100644 --- a/apps/files_versions/lib/Controller/PreviewController.php +++ b/apps/files_versions/lib/Controller/PreviewController.php @@ -13,11 +13,13 @@ use OCP\AppFramework\Http\Attribute\NoCSRFRequired; use OCP\AppFramework\Http\Attribute\OpenAPI; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\FileDisplayResponse; +use OCP\AppFramework\Http\RedirectResponse; use OCP\Files\IRootFolder; use OCP\Files\NotFoundException; use OCP\IPreview; use OCP\IRequest; use OCP\IUserSession; +use OCP\Preview\IMimeIconProvider; #[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)] class PreviewController extends Controller { @@ -29,6 +31,7 @@ class PreviewController extends Controller { private IUserSession $userSession, private IVersionManager $versionManager, private IPreview $previewManager, + private IMimeIconProvider $mimeIconProvider, ) { parent::__construct($appName, $request); } @@ -40,9 +43,11 @@ class PreviewController extends Controller { * @param int $x Width of the preview * @param int $y Height of the preview * @param string $version Version of the file to get the preview for - * @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_NOT_FOUND, list<empty>, array{}> + * @param bool $mimeFallback Whether to fallback to the mime icon if no preview is available + * @return FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_NOT_FOUND, list<empty>, array{}>|RedirectResponse<Http::STATUS_SEE_OTHER, array{}> * * 200: Preview returned + * 303: Redirect to the mime icon url if mimeFallback is true * 400: Getting preview is not possible * 404: Preview not found */ @@ -53,19 +58,31 @@ class PreviewController extends Controller { int $x = 44, int $y = 44, string $version = '', + bool $mimeFallback = false, ) { if ($file === '' || $version === '' || $x === 0 || $y === 0) { return new DataResponse([], Http::STATUS_BAD_REQUEST); } + $versionFile = null; try { $user = $this->userSession->getUser(); $userFolder = $this->rootFolder->getUserFolder($user->getUID()); $file = $userFolder->get($file); $versionFile = $this->versionManager->getVersionFile($user, $file, $version); $preview = $this->previewManager->getPreview($versionFile, $x, $y, true, IPreview::MODE_FILL, $versionFile->getMimetype()); - return new FileDisplayResponse($preview, Http::STATUS_OK, ['Content-Type' => $preview->getMimeType()]); + $response = new FileDisplayResponse($preview, Http::STATUS_OK, ['Content-Type' => $preview->getMimeType()]); + $response->cacheFor(3600 * 24, false, true); + return $response; } catch (NotFoundException $e) { + // If we have no preview enabled, we can redirect to the mime icon if any + if ($mimeFallback && $versionFile !== null) { + $url = $this->mimeIconProvider->getMimeIconUrl($versionFile->getMimeType()); + if ($url !== null) { + return new RedirectResponse($url); + } + } + return new DataResponse([], Http::STATUS_NOT_FOUND); } catch (\InvalidArgumentException $e) { return new DataResponse([], Http::STATUS_BAD_REQUEST); diff --git a/apps/files_versions/openapi.json b/apps/files_versions/openapi.json index 9c6a7e5f473..aea18edf3ec 100644 --- a/apps/files_versions/openapi.json +++ b/apps/files_versions/openapi.json @@ -103,6 +103,19 @@ "type": "string", "default": "" } + }, + { + "name": "mimeFallback", + "in": "query", + "description": "Whether to fallback to the mime icon if no preview is available", + "schema": { + "type": "integer", + "default": 0, + "enum": [ + 0, + 1 + ] + } } ], "responses": { @@ -132,6 +145,16 @@ "schema": {} } } + }, + "303": { + "description": "Redirect to the mime icon url if mimeFallback is true", + "headers": { + "Location": { + "schema": { + "type": "string" + } + } + } } } } diff --git a/apps/files_versions/src/components/Version.vue b/apps/files_versions/src/components/Version.vue index ca4cb3eac77..8ea16e215c6 100644 --- a/apps/files_versions/src/components/Version.vue +++ b/apps/files_versions/src/components/Version.vue @@ -11,7 +11,7 @@ <!-- Icon --> <template #icon> <div v-if="!(loadPreview || previewLoaded)" class="version__image" /> - <img v-else-if="(isCurrent || version.hasPreview) && !previewErrored" + <img v-else-if="version.previewUrl && !previewErrored" :src="version.previewUrl" alt="" decoding="async" @@ -31,16 +31,19 @@ <div class="version__info"> <div v-if="versionLabel" class="version__info__label" + data-cy-files-version-label :title="versionLabel"> {{ versionLabel }} </div> - <div v-if="versionAuthor" class="version__info"> + <div v-if="versionAuthor" + class="version__info" + data-cy-files-version-author-name> <span v-if="versionLabel">•</span> <NcAvatar class="avatar" :user="version.author" - :size="16" - :disable-menu="true" - :disable-tooltip="true" + :size="20" + disable-menu + disable-tooltip :show-user-status="false" /> <div>{{ versionAuthor }}</div> </div> @@ -53,7 +56,7 @@ <NcDateTime class="version__info__date" relative-time="short" :timestamp="version.mtime" /> - <!-- Separate dot to improve alignement --> + <!-- Separate dot to improve alignment --> <span>•</span> <span>{{ humanReadableSize }}</span> </div> @@ -114,8 +117,18 @@ import type { PropType } from 'vue' import type { Version } from '../utils/versions' +import { getCurrentUser } from '@nextcloud/auth' +import { Permission, formatFileSize } from '@nextcloud/files' +import { loadState } from '@nextcloud/initial-state' +import { t } from '@nextcloud/l10n' +import { joinPaths } from '@nextcloud/paths' +import { getRootUrl, generateUrl } from '@nextcloud/router' import { defineComponent } from 'vue' +import axios from '@nextcloud/axios' +import moment from '@nextcloud/moment' +import logger from '../utils/logger' + import BackupRestore from 'vue-material-design-icons/BackupRestore.vue' import Delete from 'vue-material-design-icons/Delete.vue' import Download from 'vue-material-design-icons/Download.vue' @@ -130,14 +143,6 @@ import NcDateTime from '@nextcloud/vue/components/NcDateTime' import NcListItem from '@nextcloud/vue/components/NcListItem' import Tooltip from '@nextcloud/vue/directives/Tooltip' -import { Permission, formatFileSize } from '@nextcloud/files' -import { loadState } from '@nextcloud/initial-state' -import { t } from '@nextcloud/l10n' -import { joinPaths } from '@nextcloud/paths' -import { getRootUrl, generateOcsUrl } from '@nextcloud/router' -import axios from '@nextcloud/axios' -import moment from '@nextcloud/moment' - const hasPermission = (permissions: number, permission: number): boolean => (permissions & permission) !== 0 export default defineComponent({ @@ -295,21 +300,26 @@ export default defineComponent({ }, async fetchDisplayName() { - // check to make sure that we have a valid author - in case database did not migrate, null author, etc. - if (this.version.author) { + this.versionAuthor = null + if (!this.version.author) { + return + } + + if (this.version.author === getCurrentUser()?.uid) { + this.versionAuthor = t('files_versions', 'You') + } else { try { - const { data } = await axios.get(generateOcsUrl(`/cloud/users/${this.version.author}`)) - this.versionAuthor = data.ocs.data.displayname - } catch (e) { - // Promise got rejected - default to null author to not try to load author profile - this.versionAuthor = null + const { data } = await axios.post(generateUrl('/displaynames'), { users: [this.version.author] }) + this.versionAuthor = data.users[this.version.author] + } catch (error) { + logger.warn('Could not load user display name', { error }) } } }, click() { if (!this.canView) { - window.location = this.downloadURL + window.location.href = this.downloadURL return } this.$emit('click', { version: this.version }) diff --git a/apps/files_versions/src/utils/versions.ts b/apps/files_versions/src/utils/versions.ts index b52f92ef462..6d5933f0bd9 100644 --- a/apps/files_versions/src/utils/versions.ts +++ b/apps/files_versions/src/utils/versions.ts @@ -28,7 +28,6 @@ export interface Version { type: string, // 'file' mtime: number, // Version creation date as a timestamp permissions: string, // Only readable: 'R' - hasPreview: boolean, // Whether the version has a preview previewUrl: string, // Preview URL of the version url: string, // Download URL of the version source: string, // The WebDAV endpoint of the ressource @@ -78,12 +77,12 @@ function formatVersion(version: any, fileInfo: any): Version { let previewUrl = '' if (mtime === fileInfo.mtime) { // Version is the current one - previewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0', { + previewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0&forceIcon=1&mimeFallback=1', { fileId: fileInfo.id, fileEtag: fileInfo.etag, }) } else { - previewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}', { + previewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}&mimeFallback=1', { file: joinPaths(fileInfo.path, fileInfo.name), fileVersion: version.basename, }) @@ -102,7 +101,6 @@ function formatVersion(version: any, fileInfo: any): Version { type: version.type, mtime, permissions: 'R', - hasPreview: version.props['has-preview'] === 1, previewUrl, url: joinPaths('/remote.php/dav', version.filename), source: generateRemoteUrl('dav') + encodePath(version.filename), diff --git a/apps/files_versions/src/views/VersionTab.vue b/apps/files_versions/src/views/VersionTab.vue index 8bdb51f088d..48e07b7c786 100644 --- a/apps/files_versions/src/views/VersionTab.vue +++ b/apps/files_versions/src/views/VersionTab.vue @@ -4,28 +4,27 @@ --> <template> <div class="versions-tab__container"> - <VirtualScrolling :sections="sections" + <VirtualScrolling v-slot="{ visibleSections }" + :sections="sections" :header-height="0"> - <template slot-scope="{visibleSections}"> - <ul data-files-versions-versions-list> - <template v-if="visibleSections.length === 1"> - <Version v-for="(row) of visibleSections[0].rows" - :key="row.items[0].mtime" - :can-view="canView" - :can-compare="canCompare" - :load-preview="isActive" - :version="row.items[0]" - :file-info="fileInfo" - :is-current="row.items[0].mtime === fileInfo.mtime" - :is-first-version="row.items[0].mtime === initialVersionMtime" - @click="openVersion" - @compare="compareVersion" - @restore="handleRestore" - @label-update-request="handleLabelUpdateRequest(row.items[0])" - @delete="handleDelete" /> - </template> - </ul> - </template> + <ul :aria-label="t('files_versions', 'File versions')" data-files-versions-versions-list> + <template v-if="visibleSections.length === 1"> + <Version v-for="(row) of visibleSections[0].rows" + :key="row.items[0].mtime" + :can-view="canView" + :can-compare="canCompare" + :load-preview="isActive" + :version="row.items[0]" + :file-info="fileInfo" + :is-current="row.items[0].mtime === fileInfo.mtime" + :is-first-version="row.items[0].mtime === initialVersionMtime" + @click="openVersion" + @compare="compareVersion" + @restore="handleRestore" + @label-update-request="handleLabelUpdateRequest(row.items[0])" + @delete="handleDelete" /> + </template> + </ul> <NcLoadingIcon v-if="loading" slot="loader" class="files-list-viewer__loader" /> </VirtualScrolling> <VersionLabelDialog v-if="editedVersion" @@ -278,13 +277,12 @@ export default { return } - // Versions previews are too small for our use case, so we override hasPreview and previewUrl + // Versions previews are too small for our use case, so we override previewUrl // which makes the viewer render the original file. // We also point to the original filename if the version is the current one. const versions = this.versions.map(version => ({ ...version, filename: version.mtime === this.fileInfo.mtime ? path.join('files', getCurrentUser()?.uid ?? '', this.fileInfo.path, this.fileInfo.name) : version.filename, - hasPreview: false, previewUrl: undefined, })) @@ -295,7 +293,7 @@ export default { }, compareVersion({ version }) { - const versions = this.versions.map(version => ({ ...version, hasPreview: false, previewUrl: undefined })) + const versions = this.versions.map(version => ({ ...version, previewUrl: undefined })) OCA.Viewer.compare(this.viewerFileInfo, versions.find(v => v.source === version.source)) }, diff --git a/apps/files_versions/tests/Controller/PreviewControllerTest.php b/apps/files_versions/tests/Controller/PreviewControllerTest.php index 9899836bb88..0e36703d5aa 100644 --- a/apps/files_versions/tests/Controller/PreviewControllerTest.php +++ b/apps/files_versions/tests/Controller/PreviewControllerTest.php @@ -3,13 +3,13 @@ * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ + namespace OCA\Files_Versions\Tests\Controller; use OCA\Files_Versions\Controller\PreviewController; use OCA\Files_Versions\Versions\IVersionManager; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; -use OCP\AppFramework\Http\FileDisplayResponse; use OCP\Files\File; use OCP\Files\Folder; use OCP\Files\IMimeTypeDetector; @@ -20,6 +20,8 @@ use OCP\IPreview; use OCP\IRequest; use OCP\IUser; use OCP\IUserSession; +use OCP\Preview\IMimeIconProvider; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class PreviewControllerTest extends TestCase { @@ -45,6 +47,8 @@ class PreviewControllerTest extends TestCase { /** @var IVersionManager|\PHPUnit\Framework\MockObject\MockObject */ private $versionManager; + private IMimeIconProvider&MockObject $mimeIconProvider; + protected function setUp(): void { parent::setUp(); @@ -60,6 +64,7 @@ class PreviewControllerTest extends TestCase { ->method('getUser') ->willReturn($user); $this->versionManager = $this->createMock(IVersionManager::class); + $this->mimeIconProvider = $this->createMock(IMimeIconProvider::class); $this->controller = new PreviewController( 'files_versions', @@ -67,7 +72,8 @@ class PreviewControllerTest extends TestCase { $this->rootFolder, $this->userSession, $this->versionManager, - $this->previewManager + $this->previewManager, + $this->mimeIconProvider, ); } @@ -131,9 +137,10 @@ class PreviewControllerTest extends TestCase { ->willReturn('previewMime'); $res = $this->controller->getPreview('file', 10, 10, '42'); - $expected = new FileDisplayResponse($preview, Http::STATUS_OK, ['Content-Type' => 'previewMime']); - $this->assertEquals($expected, $res); + $this->assertEquals('previewMime', $res->getHeaders()['Content-Type']); + $this->assertEquals(Http::STATUS_OK, $res->getStatus()); + $this->assertEquals($preview, $this->invokePrivate($res, 'file')); } public function testVersionNotFound(): void { diff --git a/apps/profile/l10n/et_EE.js b/apps/profile/l10n/et_EE.js index b9d4b651b8f..f648bb561cd 100644 --- a/apps/profile/l10n/et_EE.js +++ b/apps/profile/l10n/et_EE.js @@ -5,7 +5,9 @@ OC.L10N.register( "{user} has not added any info yet" : "{user} pole veel mingit infot lisanud", "Error opening the user status modal, try hard refreshing the page" : "Kasutaja staatuse modaaldialoogi avamine ebaõnnestus, proovi lehte värskendada", "Edit Profile" : "Muuda profiili", + "The headline and about sections will show up here" : "Alapealkirja ja teabe lõigud saavad olema nähtavad siin", "Profile not found" : "Profiili ei leitud", - "The profile does not exist." : "Profiili ei eksisteeri" + "The profile does not exist." : "Profiili ei eksisteeri", + "Back to %s" : "Tagasi siia: %s" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/profile/l10n/et_EE.json b/apps/profile/l10n/et_EE.json index 566a01aeeda..2f4c14c6d83 100644 --- a/apps/profile/l10n/et_EE.json +++ b/apps/profile/l10n/et_EE.json @@ -3,7 +3,9 @@ "{user} has not added any info yet" : "{user} pole veel mingit infot lisanud", "Error opening the user status modal, try hard refreshing the page" : "Kasutaja staatuse modaaldialoogi avamine ebaõnnestus, proovi lehte värskendada", "Edit Profile" : "Muuda profiili", + "The headline and about sections will show up here" : "Alapealkirja ja teabe lõigud saavad olema nähtavad siin", "Profile not found" : "Profiili ei leitud", - "The profile does not exist." : "Profiili ei eksisteeri" + "The profile does not exist." : "Profiili ei eksisteeri", + "Back to %s" : "Tagasi siia: %s" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/provisioning_api/appinfo/routes.php b/apps/provisioning_api/appinfo/routes.php index 78526ce6402..66d1fb699a9 100644 --- a/apps/provisioning_api/appinfo/routes.php +++ b/apps/provisioning_api/appinfo/routes.php @@ -42,9 +42,11 @@ return [ ['root' => '/cloud', 'name' => 'Users#enableUser', 'url' => '/users/{userId}/enable', 'verb' => 'PUT'], ['root' => '/cloud', 'name' => 'Users#disableUser', 'url' => '/users/{userId}/disable', 'verb' => 'PUT'], ['root' => '/cloud', 'name' => 'Users#getUsersGroups', 'url' => '/users/{userId}/groups', 'verb' => 'GET'], + ['root' => '/cloud', 'name' => 'Users#getUsersGroupsDetails', 'url' => '/users/{userId}/groups/details', 'verb' => 'GET'], ['root' => '/cloud', 'name' => 'Users#addToGroup', 'url' => '/users/{userId}/groups', 'verb' => 'POST'], ['root' => '/cloud', 'name' => 'Users#removeFromGroup', 'url' => '/users/{userId}/groups', 'verb' => 'DELETE'], ['root' => '/cloud', 'name' => 'Users#getUserSubAdminGroups', 'url' => '/users/{userId}/subadmins', 'verb' => 'GET'], + ['root' => '/cloud', 'name' => 'Users#getUserSubAdminGroupsDetails', 'url' => '/users/{userId}/subadmins/details', 'verb' => 'GET'], ['root' => '/cloud', 'name' => 'Users#addSubAdmin', 'url' => '/users/{userId}/subadmins', 'verb' => 'POST'], ['root' => '/cloud', 'name' => 'Users#removeSubAdmin', 'url' => '/users/{userId}/subadmins', 'verb' => 'DELETE'], ['root' => '/cloud', 'name' => 'Users#resendWelcomeMessage', 'url' => '/users/{userId}/welcome', 'verb' => 'POST'], diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php index 69bd5548d68..6b22a010a8c 100644 --- a/apps/provisioning_api/lib/Controller/UsersController.php +++ b/apps/provisioning_api/lib/Controller/UsersController.php @@ -12,6 +12,7 @@ namespace OCA\Provisioning_API\Controller; use InvalidArgumentException; use OC\Authentication\Token\RemoteWipe; +use OC\Group\Group; use OC\KnownUser\KnownUserService; use OC\User\Backend; use OCA\Provisioning_API\ResponseDefinitions; @@ -52,6 +53,7 @@ use OCP\Util; use Psr\Log\LoggerInterface; /** + * @psalm-import-type Provisioning_APIGroupDetails from ResponseDefinitions * @psalm-import-type Provisioning_APIUserDetails from ResponseDefinitions */ class UsersController extends AUserDataOCSController { @@ -1073,7 +1075,7 @@ class UsersController extends AUserDataOCSController { } $targetUser->setPassword($value); } catch (HintException $e) { // password policy error - throw new OCSException($e->getMessage(), 107); + throw new OCSException($e->getHint(), 107); } break; case self::USER_FIELD_LANGUAGE: @@ -1403,6 +1405,127 @@ class UsersController extends AUserDataOCSController { } /** + * @NoSubAdminRequired + * + * Get a list of groups with details + * + * @param string $userId ID of the user + * @return DataResponse<Http::STATUS_OK, array{groups: list<Provisioning_APIGroupDetails>}, array{}> + * @throws OCSException + * + * 200: Users groups returned + */ + #[NoAdminRequired] + public function getUsersGroupsDetails(string $userId): DataResponse { + $loggedInUser = $this->userSession->getUser(); + + $targetUser = $this->userManager->get($userId); + if ($targetUser === null) { + throw new OCSException('', OCSController::RESPOND_NOT_FOUND); + } + + $isAdmin = $this->groupManager->isAdmin($loggedInUser->getUID()); + $isDelegatedAdmin = $this->groupManager->isDelegatedAdmin($loggedInUser->getUID()); + if ($targetUser->getUID() === $loggedInUser->getUID() || $isAdmin || $isDelegatedAdmin) { + // Self lookup or admin lookup + $groups = array_map( + function (Group $group) { + return [ + 'id' => $group->getGID(), + 'displayname' => $group->getDisplayName(), + 'usercount' => $group->count(), + 'disabled' => $group->countDisabled(), + 'canAdd' => $group->canAddUser(), + 'canRemove' => $group->canRemoveUser(), + ]; + }, + array_values($this->groupManager->getUserGroups($targetUser)), + ); + return new DataResponse([ + 'groups' => $groups, + ]); + } else { + $subAdminManager = $this->groupManager->getSubAdmin(); + + // Looking up someone else + if ($subAdminManager->isUserAccessible($loggedInUser, $targetUser)) { + // Return the group that the method caller is subadmin of for the user in question + $gids = array_values(array_intersect( + array_map( + static fn (IGroup $group) => $group->getGID(), + $subAdminManager->getSubAdminsGroups($loggedInUser), + ), + $this->groupManager->getUserGroupIds($targetUser) + )); + $groups = array_map( + function (string $gid) { + $group = $this->groupManager->get($gid); + return [ + 'id' => $group->getGID(), + 'displayname' => $group->getDisplayName(), + 'usercount' => $group->count(), + 'disabled' => $group->countDisabled(), + 'canAdd' => $group->canAddUser(), + 'canRemove' => $group->canRemoveUser(), + ]; + }, + $gids, + ); + return new DataResponse([ + 'groups' => $groups, + ]); + } else { + // Not permitted + throw new OCSException('', OCSController::RESPOND_NOT_FOUND); + } + } + } + + /** + * @NoSubAdminRequired + * + * Get a list of the groups the user is a subadmin of, with details + * + * @param string $userId ID of the user + * @return DataResponse<Http::STATUS_OK, array{groups: list<Provisioning_APIGroupDetails>}, array{}> + * @throws OCSException + * + * 200: Users subadmin groups returned + */ + #[NoAdminRequired] + public function getUserSubAdminGroupsDetails(string $userId): DataResponse { + $loggedInUser = $this->userSession->getUser(); + + $targetUser = $this->userManager->get($userId); + if ($targetUser === null) { + throw new OCSException('', OCSController::RESPOND_NOT_FOUND); + } + + $isAdmin = $this->groupManager->isAdmin($loggedInUser->getUID()); + $isDelegatedAdmin = $this->groupManager->isDelegatedAdmin($loggedInUser->getUID()); + if ($targetUser->getUID() === $loggedInUser->getUID() || $isAdmin || $isDelegatedAdmin) { + $subAdminManager = $this->groupManager->getSubAdmin(); + $groups = array_map( + function (IGroup $group) { + return [ + 'id' => $group->getGID(), + 'displayname' => $group->getDisplayName(), + 'usercount' => $group->count(), + 'disabled' => $group->countDisabled(), + 'canAdd' => $group->canAddUser(), + 'canRemove' => $group->canRemoveUser(), + ]; + }, + array_values($subAdminManager->getSubAdminsGroups($targetUser)), + ); + return new DataResponse([ + 'groups' => $groups, + ]); + } + throw new OCSException('', OCSController::RESPOND_NOT_FOUND); + } + + /** * Add a user to a group * * @param string $userId ID of the user diff --git a/apps/provisioning_api/openapi-full.json b/apps/provisioning_api/openapi-full.json index c63e466e2ac..9079404c35c 100644 --- a/apps/provisioning_api/openapi-full.json +++ b/apps/provisioning_api/openapi-full.json @@ -4115,6 +4115,168 @@ } } }, + "/ocs/v2.php/cloud/users/{userId}/groups/details": { + "get": { + "operationId": "users-get-users-groups-details", + "summary": "Get a list of groups with details", + "tags": [ + "users" + ], + "security": [ + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "ID of the user", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "description": "Required to be true for the API request to pass", + "required": true, + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Users groups returned", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "object", + "required": [ + "groups" + ], + "properties": { + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupDetails" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/users/{userId}/subadmins/details": { + "get": { + "operationId": "users-get-user-sub-admin-groups-details", + "summary": "Get a list of the groups the user is a subadmin of, with details", + "tags": [ + "users" + ], + "security": [ + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "ID of the user", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "description": "Required to be true for the API request to pass", + "required": true, + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Users subadmin groups returned", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "object", + "required": [ + "groups" + ], + "properties": { + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupDetails" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, "/ocs/v2.php/cloud/users/{userId}/welcome": { "post": { "operationId": "users-resend-welcome-message", diff --git a/apps/provisioning_api/openapi.json b/apps/provisioning_api/openapi.json index a55b8c5771f..59f31a2c25d 100644 --- a/apps/provisioning_api/openapi.json +++ b/apps/provisioning_api/openapi.json @@ -2547,6 +2547,168 @@ } } }, + "/ocs/v2.php/cloud/users/{userId}/groups/details": { + "get": { + "operationId": "users-get-users-groups-details", + "summary": "Get a list of groups with details", + "tags": [ + "users" + ], + "security": [ + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "ID of the user", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "description": "Required to be true for the API request to pass", + "required": true, + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Users groups returned", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "object", + "required": [ + "groups" + ], + "properties": { + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupDetails" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "/ocs/v2.php/cloud/users/{userId}/subadmins/details": { + "get": { + "operationId": "users-get-user-sub-admin-groups-details", + "summary": "Get a list of the groups the user is a subadmin of, with details", + "tags": [ + "users" + ], + "security": [ + { + "bearer_auth": [] + }, + { + "basic_auth": [] + } + ], + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "ID of the user", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "OCS-APIRequest", + "in": "header", + "description": "Required to be true for the API request to pass", + "required": true, + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "Users subadmin groups returned", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ocs" + ], + "properties": { + "ocs": { + "type": "object", + "required": [ + "meta", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/OCSMeta" + }, + "data": { + "type": "object", + "required": [ + "groups" + ], + "properties": { + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupDetails" + } + } + } + } + } + } + } + } + } + } + } + } + } + }, "/ocs/v2.php/cloud/users/{userId}/welcome": { "post": { "operationId": "users-resend-welcome-message", diff --git a/apps/settings/l10n/ar.js b/apps/settings/l10n/ar.js index ee17497cc2d..ef9de9e67ba 100644 --- a/apps/settings/l10n/ar.js +++ b/apps/settings/l10n/ar.js @@ -428,6 +428,12 @@ OC.L10N.register( "No apps found for your version" : "لا يمكن العثور على تطبيقات للإصدار الخاص بك.", "_%n app has an update available_::_%n apps have an update available_" : ["%n تطبيقات لها تحديث متاح","%n تطبيق له تحديث متاح","%n تطبيقات لها تحديث متاح","%n تطبيقات لها تحديث متاح","%n تطبيقات لها تحديث متاح","%n تطبيقات لها تحديث متاح"], "_Update_::_Update all_" : ["تحديث الكل","تحديث","تحديث الكل","تحديث الكل","تحديث الكل","تحديث الكل"], + "Failed to create group" : "تعذّر إنشاء المجموعة", + "Creating group…" : "جارٍ إنشاء مجموعة ...", + "Create group" : "إنشاء مجموعة", + "Group name" : "اسم الفريق", + "Please enter a valid group name" : "يرجى إدخال اسم مناسب للمجموعة", + "Loading groups…" : "تحميل المجموعات ...", "Could not load app discover section" : "تعذّر تحميل قسم اكتشاف التطبيقات", "Could not render element" : "تعذّر عرض العنصر", "Nothing to show" : "لا يوجد ما يستوجب العرض", @@ -769,12 +775,7 @@ OC.L10N.register( "All accounts" : "جميع الحسابات", "Admins" : "المديرون", "Account group: {group}" : "مجموعة الحساب: {group}", - "Failed to create group" : "تعذّر إنشاء المجموعة", "Account management" : "إدارة الحساب", - "Creating group…" : "جارٍ إنشاء مجموعة ...", - "Create group" : "إنشاء مجموعة", - "Group name" : "اسم الفريق", - "Please enter a valid group name" : "يرجى إدخال اسم مناسب للمجموعة", "Sending…" : "الإرسال جارٍ …", "Email sent" : "تمّ إرسال الإيميل", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "لأسباب تتعلق بالأداء، عندما تقوم بتمكين التشفير على خادوم نكست كلاود، يتم تشفير الملفات الجديدة والمتغيرة فقط.", diff --git a/apps/settings/l10n/ar.json b/apps/settings/l10n/ar.json index a92eac39be1..fc69171c272 100644 --- a/apps/settings/l10n/ar.json +++ b/apps/settings/l10n/ar.json @@ -426,6 +426,12 @@ "No apps found for your version" : "لا يمكن العثور على تطبيقات للإصدار الخاص بك.", "_%n app has an update available_::_%n apps have an update available_" : ["%n تطبيقات لها تحديث متاح","%n تطبيق له تحديث متاح","%n تطبيقات لها تحديث متاح","%n تطبيقات لها تحديث متاح","%n تطبيقات لها تحديث متاح","%n تطبيقات لها تحديث متاح"], "_Update_::_Update all_" : ["تحديث الكل","تحديث","تحديث الكل","تحديث الكل","تحديث الكل","تحديث الكل"], + "Failed to create group" : "تعذّر إنشاء المجموعة", + "Creating group…" : "جارٍ إنشاء مجموعة ...", + "Create group" : "إنشاء مجموعة", + "Group name" : "اسم الفريق", + "Please enter a valid group name" : "يرجى إدخال اسم مناسب للمجموعة", + "Loading groups…" : "تحميل المجموعات ...", "Could not load app discover section" : "تعذّر تحميل قسم اكتشاف التطبيقات", "Could not render element" : "تعذّر عرض العنصر", "Nothing to show" : "لا يوجد ما يستوجب العرض", @@ -767,12 +773,7 @@ "All accounts" : "جميع الحسابات", "Admins" : "المديرون", "Account group: {group}" : "مجموعة الحساب: {group}", - "Failed to create group" : "تعذّر إنشاء المجموعة", "Account management" : "إدارة الحساب", - "Creating group…" : "جارٍ إنشاء مجموعة ...", - "Create group" : "إنشاء مجموعة", - "Group name" : "اسم الفريق", - "Please enter a valid group name" : "يرجى إدخال اسم مناسب للمجموعة", "Sending…" : "الإرسال جارٍ …", "Email sent" : "تمّ إرسال الإيميل", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "لأسباب تتعلق بالأداء، عندما تقوم بتمكين التشفير على خادوم نكست كلاود، يتم تشفير الملفات الجديدة والمتغيرة فقط.", diff --git a/apps/settings/l10n/ast.js b/apps/settings/l10n/ast.js index ce90249ba29..784fd4ac181 100644 --- a/apps/settings/l10n/ast.js +++ b/apps/settings/l10n/ast.js @@ -232,6 +232,12 @@ OC.L10N.register( "Results from other categories" : "Resultaos d'otres categoríes", "No apps found for your version" : "Nun s'atopó nenguna aplicación pa esta versión", "_Update_::_Update all_" : ["Anovar","Anovar too"], + "Failed to create group" : "Nun se pue crear el grupu", + "Creating group…" : "Creando'l grupu…", + "Create group" : "Crear el grupu", + "Group name" : "Nome del grupu", + "Please enter a valid group name" : "Introduz un nome válidu pal grupu", + "Loading groups…" : "Cargando los grupos…", "Could not load app discover section" : "Nun se pudo cargar la seición de descubrimientu d'aplicaciones", "Could not render element" : "Nun se pudo dibuxar l'elementu", "Loading" : "Cargando", @@ -451,12 +457,7 @@ OC.L10N.register( "Version {version}, {license}-licensed" : "Versión {version}, con llicencia {license}", "Admins" : "Alministradores", "Account group: {group}" : "Grupu de cuentes: {group}", - "Failed to create group" : "Nun se pue crear el grupu", "Account management" : "Xestión de cuentes", - "Creating group…" : "Creando'l grupu…", - "Create group" : "Crear el grupu", - "Group name" : "Nome del grupu", - "Please enter a valid group name" : "Introduz un nome válidu pal grupu", "Sending…" : "Unviando…", "Email sent" : "Unvióse'l corréu electrónicu", "Location" : "Llocalización", diff --git a/apps/settings/l10n/ast.json b/apps/settings/l10n/ast.json index f81d90c2f1f..8b8178b9afe 100644 --- a/apps/settings/l10n/ast.json +++ b/apps/settings/l10n/ast.json @@ -230,6 +230,12 @@ "Results from other categories" : "Resultaos d'otres categoríes", "No apps found for your version" : "Nun s'atopó nenguna aplicación pa esta versión", "_Update_::_Update all_" : ["Anovar","Anovar too"], + "Failed to create group" : "Nun se pue crear el grupu", + "Creating group…" : "Creando'l grupu…", + "Create group" : "Crear el grupu", + "Group name" : "Nome del grupu", + "Please enter a valid group name" : "Introduz un nome válidu pal grupu", + "Loading groups…" : "Cargando los grupos…", "Could not load app discover section" : "Nun se pudo cargar la seición de descubrimientu d'aplicaciones", "Could not render element" : "Nun se pudo dibuxar l'elementu", "Loading" : "Cargando", @@ -449,12 +455,7 @@ "Version {version}, {license}-licensed" : "Versión {version}, con llicencia {license}", "Admins" : "Alministradores", "Account group: {group}" : "Grupu de cuentes: {group}", - "Failed to create group" : "Nun se pue crear el grupu", "Account management" : "Xestión de cuentes", - "Creating group…" : "Creando'l grupu…", - "Create group" : "Crear el grupu", - "Group name" : "Nome del grupu", - "Please enter a valid group name" : "Introduz un nome válidu pal grupu", "Sending…" : "Unviando…", "Email sent" : "Unvióse'l corréu electrónicu", "Location" : "Llocalización", diff --git a/apps/settings/l10n/bg.js b/apps/settings/l10n/bg.js index e5ee53731dd..94d156b1bbb 100644 --- a/apps/settings/l10n/bg.js +++ b/apps/settings/l10n/bg.js @@ -176,6 +176,8 @@ OC.L10N.register( "No apps found for your version" : "Няма намерени приложения за версията, която ползвате", "_%n app has an update available_::_%n apps have an update available_" : ["%n приложения имат налична актуализация ","%n приложения имат налична актуализация"], "_Update_::_Update all_" : ["Актуализиране на всички","Актуализиране на всички"], + "Group name" : "Име на групата", + "Loading groups…" : "Зареждане на групи ...", "Loading" : "Зареждане", "Type" : "Тип", "Display Name" : "Име за визуализация", @@ -363,7 +365,6 @@ OC.L10N.register( "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Като администратор можете да прецизирате поведението на споделяне. Моля, вижте документацията за повече информация.", "You need to enable the File sharing App." : "Трябва да активирате приложението за споделяне на файлове.", "Admins" : "Администратори", - "Group name" : "Име на групата", "Sending…" : "Изпращане...", "Email sent" : "Имейлът е изпратен", "Location" : "Местоположение", diff --git a/apps/settings/l10n/bg.json b/apps/settings/l10n/bg.json index fe47b8d2481..f121cc1cad9 100644 --- a/apps/settings/l10n/bg.json +++ b/apps/settings/l10n/bg.json @@ -174,6 +174,8 @@ "No apps found for your version" : "Няма намерени приложения за версията, която ползвате", "_%n app has an update available_::_%n apps have an update available_" : ["%n приложения имат налична актуализация ","%n приложения имат налична актуализация"], "_Update_::_Update all_" : ["Актуализиране на всички","Актуализиране на всички"], + "Group name" : "Име на групата", + "Loading groups…" : "Зареждане на групи ...", "Loading" : "Зареждане", "Type" : "Тип", "Display Name" : "Име за визуализация", @@ -361,7 +363,6 @@ "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Като администратор можете да прецизирате поведението на споделяне. Моля, вижте документацията за повече информация.", "You need to enable the File sharing App." : "Трябва да активирате приложението за споделяне на файлове.", "Admins" : "Администратори", - "Group name" : "Име на групата", "Sending…" : "Изпращане...", "Email sent" : "Имейлът е изпратен", "Location" : "Местоположение", diff --git a/apps/settings/l10n/ca.js b/apps/settings/l10n/ca.js index d5039c06bd1..d76932be11c 100644 --- a/apps/settings/l10n/ca.js +++ b/apps/settings/l10n/ca.js @@ -427,6 +427,12 @@ OC.L10N.register( "No apps found for your version" : "No s'han trobat aplicacions per la vostra versió", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplicació té una actualització disponible","%n aplicacions tenen una actualització disponible"], "_Update_::_Update all_" : ["Actualitza","Actualitza-les totes"], + "Failed to create group" : "No s'ha pogut crear el grup", + "Creating group…" : "S'està creant un grup …", + "Create group" : "Crear grup", + "Group name" : "Nom del grup", + "Please enter a valid group name" : "Introduïu un nom de grup vàlid", + "Loading groups…" : "S'estan carregant els grups…", "Could not load app discover section" : "No s'ha pogut carregar la secció de descoberta d'aplicacions", "Could not render element" : "No s'ha pogut representar l'element", "Nothing to show" : "Res a mostrar", @@ -768,12 +774,7 @@ OC.L10N.register( "All accounts" : "Tots els comptes", "Admins" : "Administradors", "Account group: {group}" : "Grup de comptes: {group}", - "Failed to create group" : "No s'ha pogut crear el grup", "Account management" : "Gestió de comptes", - "Creating group…" : "S'està creant un grup …", - "Create group" : "Crear grup", - "Group name" : "Nom del grup", - "Please enter a valid group name" : "Introduïu un nom de grup vàlid", "Sending…" : "S'està enviant…", "Email sent" : "S'ha enviat el correu electrònic", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Per raons de rendiment, quan s'habilita el xifratge en un servidor Nextcloud només es xifren els fitxers nous i els modificats.", diff --git a/apps/settings/l10n/ca.json b/apps/settings/l10n/ca.json index de258f88d4e..d0edd65054b 100644 --- a/apps/settings/l10n/ca.json +++ b/apps/settings/l10n/ca.json @@ -425,6 +425,12 @@ "No apps found for your version" : "No s'han trobat aplicacions per la vostra versió", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplicació té una actualització disponible","%n aplicacions tenen una actualització disponible"], "_Update_::_Update all_" : ["Actualitza","Actualitza-les totes"], + "Failed to create group" : "No s'ha pogut crear el grup", + "Creating group…" : "S'està creant un grup …", + "Create group" : "Crear grup", + "Group name" : "Nom del grup", + "Please enter a valid group name" : "Introduïu un nom de grup vàlid", + "Loading groups…" : "S'estan carregant els grups…", "Could not load app discover section" : "No s'ha pogut carregar la secció de descoberta d'aplicacions", "Could not render element" : "No s'ha pogut representar l'element", "Nothing to show" : "Res a mostrar", @@ -766,12 +772,7 @@ "All accounts" : "Tots els comptes", "Admins" : "Administradors", "Account group: {group}" : "Grup de comptes: {group}", - "Failed to create group" : "No s'ha pogut crear el grup", "Account management" : "Gestió de comptes", - "Creating group…" : "S'està creant un grup …", - "Create group" : "Crear grup", - "Group name" : "Nom del grup", - "Please enter a valid group name" : "Introduïu un nom de grup vàlid", "Sending…" : "S'està enviant…", "Email sent" : "S'ha enviat el correu electrònic", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Per raons de rendiment, quan s'habilita el xifratge en un servidor Nextcloud només es xifren els fitxers nous i els modificats.", diff --git a/apps/settings/l10n/cs.js b/apps/settings/l10n/cs.js index 83e1ce3306d..e5e41a89965 100644 --- a/apps/settings/l10n/cs.js +++ b/apps/settings/l10n/cs.js @@ -428,6 +428,15 @@ OC.L10N.register( "No apps found for your version" : "Nenalezeny žádné aplikace pro vámi využívanou verzi", "_%n app has an update available_::_%n apps have an update available_" : ["Pro %n aplikaci je k dispozici aktualizace","Pro %n aplikace jsou k dispozici aktualizace","Pro %n aplikací jsou k dispozici aktualizace","Pro %n aplikace jsou k dispozici aktualizace"], "_Update_::_Update all_" : ["Aktualizovat","Aktualizovat vše","Aktualizovat vše","Aktualizovat vše"], + "Failed to load groups" : "Nepodařilo se načíst skupiny", + "Failed to create group" : "Skupinu se nepodařilo vytvořit", + "Creating group…" : "Vytváření skupiny…", + "Create group" : "Vytvořit skupinu", + "Group name" : "Název skupiny", + "Please enter a valid group name" : "Zadejte platný název pro skupinu", + "Search groups…" : "Hledat skupiny…", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Seznam skupin. Není vykreslen celý z důvodu nároků na výkon. Skupiny budou načítány, jak se budete posouvat seznamem nebo ho prohledávat.", + "Loading groups…" : "Načítání skupin…", "Could not load app discover section" : "Nepodařilo se načíst sekci objevování aplikací", "Could not render element" : "Prvek se nepodařilo vykreslit", "Nothing to show" : "Není co zobrazit", @@ -669,6 +678,7 @@ OC.L10N.register( "Set line manager" : "Nastavit přímého nadřízeného", "Account name will be autogenerated" : "Název účtu bude vytvořen automaticky", "Account name (required)" : "Název účtu (vyžadováno)", + "Failed to search groups" : "Nepodařilo se prohledat skupiny", "New account" : "Nový účet", "Display name" : "Zobrazované jméno", "Either password or email is required" : "Je zapotřebí heslo nebo e-mail", @@ -708,6 +718,8 @@ OC.L10N.register( "Remote wipe of devices" : "Vymazat obsah zařízení na dálku", "Wipe {userid}'s devices" : "Vymazat obsah ze zařízení uživatele {userid}", "Wiped {userid}'s devices" : "Data ze zařízení uživatele {userid} vymazána", + "Failed to load groups with details" : "Nepodařilo se načíst skupiny s podrobnostmi", + "Failed to load subadmin groups with details" : "Nepodařilo se načíst skupiny dílčích správců s podrobnostmi", "Failed to update line manager" : "Nepodařilo se aktualizovat přímého nadřízeného", "Fully delete {userid}'s account including all their personal files, app data, etc." : "Úplně vymazat účet {userid}, včetně veškerých osobní souborů, dat aplikací, atd.", "Account deletion" : "Smazání účtu", @@ -740,6 +752,7 @@ OC.L10N.register( "Sorting" : "Řazení", "The system config enforces sorting the groups by name. This also disables showing the member count." : "Nastavení systému vynucuje řazení skupin podle názvu. Toto také vypíná zobrazování počtu členů.", "Group list sorting" : "Řazení seznamu skupin", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "Z výkonnostních důvodů bude řazení uplatněno pouze na v tuto chvíli načtené skupiny. Ty budou načteny jak se budete pohybovat seznamem nebo ho prohledávat.", "By member count" : "Podle počtu členů", "By name" : "Podle názvu", "Send email" : "Odeslat e-mail", @@ -769,12 +782,7 @@ OC.L10N.register( "All accounts" : "Veškeré účty", "Admins" : "Správci", "Account group: {group}" : "Skupina účtu: {group}", - "Failed to create group" : "Skupinu se nepodařilo vytvořit", "Account management" : "Správa účtů", - "Creating group…" : "Vytváření skupiny…", - "Create group" : "Vytvořit skupinu", - "Group name" : "Název skupiny", - "Please enter a valid group name" : "Zadejte platný název pro skupinu", "Sending…" : "Odesílání…", "Email sent" : "E-mail odeslán", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Z výkonových důvodů, pokud zapnete šifrování na Nextcloud serveru, budou šifrovány pouze nové a změněné soubory.", diff --git a/apps/settings/l10n/cs.json b/apps/settings/l10n/cs.json index fc78855b2b2..97e0aca2b51 100644 --- a/apps/settings/l10n/cs.json +++ b/apps/settings/l10n/cs.json @@ -426,6 +426,15 @@ "No apps found for your version" : "Nenalezeny žádné aplikace pro vámi využívanou verzi", "_%n app has an update available_::_%n apps have an update available_" : ["Pro %n aplikaci je k dispozici aktualizace","Pro %n aplikace jsou k dispozici aktualizace","Pro %n aplikací jsou k dispozici aktualizace","Pro %n aplikace jsou k dispozici aktualizace"], "_Update_::_Update all_" : ["Aktualizovat","Aktualizovat vše","Aktualizovat vše","Aktualizovat vše"], + "Failed to load groups" : "Nepodařilo se načíst skupiny", + "Failed to create group" : "Skupinu se nepodařilo vytvořit", + "Creating group…" : "Vytváření skupiny…", + "Create group" : "Vytvořit skupinu", + "Group name" : "Název skupiny", + "Please enter a valid group name" : "Zadejte platný název pro skupinu", + "Search groups…" : "Hledat skupiny…", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Seznam skupin. Není vykreslen celý z důvodu nároků na výkon. Skupiny budou načítány, jak se budete posouvat seznamem nebo ho prohledávat.", + "Loading groups…" : "Načítání skupin…", "Could not load app discover section" : "Nepodařilo se načíst sekci objevování aplikací", "Could not render element" : "Prvek se nepodařilo vykreslit", "Nothing to show" : "Není co zobrazit", @@ -667,6 +676,7 @@ "Set line manager" : "Nastavit přímého nadřízeného", "Account name will be autogenerated" : "Název účtu bude vytvořen automaticky", "Account name (required)" : "Název účtu (vyžadováno)", + "Failed to search groups" : "Nepodařilo se prohledat skupiny", "New account" : "Nový účet", "Display name" : "Zobrazované jméno", "Either password or email is required" : "Je zapotřebí heslo nebo e-mail", @@ -706,6 +716,8 @@ "Remote wipe of devices" : "Vymazat obsah zařízení na dálku", "Wipe {userid}'s devices" : "Vymazat obsah ze zařízení uživatele {userid}", "Wiped {userid}'s devices" : "Data ze zařízení uživatele {userid} vymazána", + "Failed to load groups with details" : "Nepodařilo se načíst skupiny s podrobnostmi", + "Failed to load subadmin groups with details" : "Nepodařilo se načíst skupiny dílčích správců s podrobnostmi", "Failed to update line manager" : "Nepodařilo se aktualizovat přímého nadřízeného", "Fully delete {userid}'s account including all their personal files, app data, etc." : "Úplně vymazat účet {userid}, včetně veškerých osobní souborů, dat aplikací, atd.", "Account deletion" : "Smazání účtu", @@ -738,6 +750,7 @@ "Sorting" : "Řazení", "The system config enforces sorting the groups by name. This also disables showing the member count." : "Nastavení systému vynucuje řazení skupin podle názvu. Toto také vypíná zobrazování počtu členů.", "Group list sorting" : "Řazení seznamu skupin", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "Z výkonnostních důvodů bude řazení uplatněno pouze na v tuto chvíli načtené skupiny. Ty budou načteny jak se budete pohybovat seznamem nebo ho prohledávat.", "By member count" : "Podle počtu členů", "By name" : "Podle názvu", "Send email" : "Odeslat e-mail", @@ -767,12 +780,7 @@ "All accounts" : "Veškeré účty", "Admins" : "Správci", "Account group: {group}" : "Skupina účtu: {group}", - "Failed to create group" : "Skupinu se nepodařilo vytvořit", "Account management" : "Správa účtů", - "Creating group…" : "Vytváření skupiny…", - "Create group" : "Vytvořit skupinu", - "Group name" : "Název skupiny", - "Please enter a valid group name" : "Zadejte platný název pro skupinu", "Sending…" : "Odesílání…", "Email sent" : "E-mail odeslán", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Z výkonových důvodů, pokud zapnete šifrování na Nextcloud serveru, budou šifrovány pouze nové a změněné soubory.", diff --git a/apps/settings/l10n/da.js b/apps/settings/l10n/da.js index 8a6ba645e25..ec1c3cb52c1 100644 --- a/apps/settings/l10n/da.js +++ b/apps/settings/l10n/da.js @@ -393,6 +393,11 @@ OC.L10N.register( "No apps found for your version" : "Ingen apps fundet til din verion", "_%n app has an update available_::_%n apps have an update available_" : ["%n app har en tilgængelig opdatering","%n apps har en tilgængelig opdatering"], "_Update_::_Update all_" : ["Opdatér","Opdater alle"], + "Failed to create group" : "Kunne ikke oprette gruppe", + "Creating group…" : "Opretter gruppe...", + "Create group" : "Opret gruppe", + "Group name" : "Gruppenavn", + "Please enter a valid group name" : "Indtast venligst et gyldigt gruppenavn", "Could not load app discover section" : "App opdagelsessektionen kunne ikke indlæses", "Could not render element" : "Elementet kunne ikke gengives", "Nothing to show" : "Intet indhold", @@ -728,12 +733,7 @@ OC.L10N.register( "Version {version}" : "Version {version}", "All accounts" : "Alle konti", "Admins" : "Administratorer", - "Failed to create group" : "Kunne ikke oprette gruppe", "Account management" : "Kontostyring", - "Creating group…" : "Opretter gruppe...", - "Create group" : "Opret gruppe", - "Group name" : "Gruppenavn", - "Please enter a valid group name" : "Indtast venligst et gyldigt gruppenavn", "Sending…" : "Sender...", "Email sent" : "E-mail afsendt", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Af hensyn til performancemæssige, så er det kun nye og ændrede filer, der krypteres, når du aktiverer kryptering på en Nextcloud server.", diff --git a/apps/settings/l10n/da.json b/apps/settings/l10n/da.json index 41b68d4a578..2b3fb6daf61 100644 --- a/apps/settings/l10n/da.json +++ b/apps/settings/l10n/da.json @@ -391,6 +391,11 @@ "No apps found for your version" : "Ingen apps fundet til din verion", "_%n app has an update available_::_%n apps have an update available_" : ["%n app har en tilgængelig opdatering","%n apps har en tilgængelig opdatering"], "_Update_::_Update all_" : ["Opdatér","Opdater alle"], + "Failed to create group" : "Kunne ikke oprette gruppe", + "Creating group…" : "Opretter gruppe...", + "Create group" : "Opret gruppe", + "Group name" : "Gruppenavn", + "Please enter a valid group name" : "Indtast venligst et gyldigt gruppenavn", "Could not load app discover section" : "App opdagelsessektionen kunne ikke indlæses", "Could not render element" : "Elementet kunne ikke gengives", "Nothing to show" : "Intet indhold", @@ -726,12 +731,7 @@ "Version {version}" : "Version {version}", "All accounts" : "Alle konti", "Admins" : "Administratorer", - "Failed to create group" : "Kunne ikke oprette gruppe", "Account management" : "Kontostyring", - "Creating group…" : "Opretter gruppe...", - "Create group" : "Opret gruppe", - "Group name" : "Gruppenavn", - "Please enter a valid group name" : "Indtast venligst et gyldigt gruppenavn", "Sending…" : "Sender...", "Email sent" : "E-mail afsendt", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Af hensyn til performancemæssige, så er det kun nye og ændrede filer, der krypteres, når du aktiverer kryptering på en Nextcloud server.", diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js index c71e1018f0f..3f95ea125e1 100644 --- a/apps/settings/l10n/de.js +++ b/apps/settings/l10n/de.js @@ -428,6 +428,15 @@ OC.L10N.register( "No apps found for your version" : "Es wurden keine Apps für deine Version gefunden", "_%n app has an update available_::_%n apps have an update available_" : ["Für eine App ist eine Aktualisierung verfügbar.","Für %n Apps sind Aktualisierungen verfügbar."], "_Update_::_Update all_" : ["Aktualisieren","Alle aktualisieren"], + "Failed to load groups" : "Gruppen konnten nicht geladen werden", + "Failed to create group" : "Fehler beim Erstellen der Gruppe", + "Creating group…" : "Erstelle Gruppe…", + "Create group" : "Gruppe erstellen", + "Group name" : "Gruppenname", + "Please enter a valid group name" : "Bitte einen gültigen Gruppennamen eingeben", + "Search groups…" : "Suche Gruppen…", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Liste der Gruppen. Diese Liste ist aus Leistungsgründen nicht vollständig gefüllt. Die Gruppen werden während des Navigierens oder Suchens geladen.", + "Loading groups…" : "Lade Gruppen…", "Could not load app discover section" : "Der App-Erkennungsabschnitt konnte nicht geladen werden", "Could not render element" : "Element konnte nicht dargestellt werden", "Nothing to show" : "Nichts anzuzeigen", @@ -669,6 +678,7 @@ OC.L10N.register( "Set line manager" : "Linien-Manager festlegen", "Account name will be autogenerated" : "Kontenname wird automatisch erstellt", "Account name (required)" : "Kontoname (erforderlich)", + "Failed to search groups" : "Suche nach Gruppen fehlgeschlagen", "New account" : "Neues Konto", "Display name" : "Anzeigename", "Either password or email is required" : "Passwort oder E-Mail-Adresse ist erforderlich.", @@ -708,6 +718,8 @@ OC.L10N.register( "Remote wipe of devices" : "Fernlöschung von Geräten", "Wipe {userid}'s devices" : "Lösche {userid}s Geräte", "Wiped {userid}'s devices" : "{userid}s Geräte bereinigt", + "Failed to load groups with details" : "Gruppen mit Details konnten nicht geladen werden", + "Failed to load subadmin groups with details" : "Subadministrations-Gruppen mit Details konnten nicht geladen werden", "Failed to update line manager" : "Fehler beim Aktualisieren des Managers", "Fully delete {userid}'s account including all their personal files, app data, etc." : "Vollständig {userid}s Konto löschen inklusive aller persönlichen Dateien, App-Daten, usw.", "Account deletion" : "Kontenlöschung", @@ -740,6 +752,7 @@ OC.L10N.register( "Sorting" : "Sortiere", "The system config enforces sorting the groups by name. This also disables showing the member count." : "Die Systemkonfiguration erzwingt die Sortierung der Gruppen nach Namen. Dadurch wird auch die Anzeige der Mitgliederzahl deaktiviert.", "Group list sorting" : "Sortierung der Gruppenliste", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "Aus Leistungsgründen wird die Sortierung nur auf die aktuell geladenen Gruppen angewendet. Gruppen werden beim Navigieren oder Suchen geladen.", "By member count" : "Nach Mitgliederzahl", "By name" : "Nach Name", "Send email" : "E-Mail senden", @@ -769,12 +782,7 @@ OC.L10N.register( "All accounts" : "Alle Konten", "Admins" : "Administration", "Account group: {group}" : "Kontengruppe: {group}", - "Failed to create group" : "Fehler beim Erstellen der Gruppe", "Account management" : "Kontoverwaltung", - "Creating group…" : "Erstelle Gruppe…", - "Create group" : "Gruppe erstellen", - "Group name" : "Gruppenname", - "Please enter a valid group name" : "Bitte einen gültigen Gruppennamen eingeben", "Sending…" : "Sende…", "Email sent" : "E-Mail gesendet", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Beim Aktivieren der Verschlüsselung auf einem Nextcloud-Server werden aus Leistungsgründen nur neue und geänderte Dateien verschlüsselt.", diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json index 6be851cfdfa..e7d6e9dc894 100644 --- a/apps/settings/l10n/de.json +++ b/apps/settings/l10n/de.json @@ -426,6 +426,15 @@ "No apps found for your version" : "Es wurden keine Apps für deine Version gefunden", "_%n app has an update available_::_%n apps have an update available_" : ["Für eine App ist eine Aktualisierung verfügbar.","Für %n Apps sind Aktualisierungen verfügbar."], "_Update_::_Update all_" : ["Aktualisieren","Alle aktualisieren"], + "Failed to load groups" : "Gruppen konnten nicht geladen werden", + "Failed to create group" : "Fehler beim Erstellen der Gruppe", + "Creating group…" : "Erstelle Gruppe…", + "Create group" : "Gruppe erstellen", + "Group name" : "Gruppenname", + "Please enter a valid group name" : "Bitte einen gültigen Gruppennamen eingeben", + "Search groups…" : "Suche Gruppen…", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Liste der Gruppen. Diese Liste ist aus Leistungsgründen nicht vollständig gefüllt. Die Gruppen werden während des Navigierens oder Suchens geladen.", + "Loading groups…" : "Lade Gruppen…", "Could not load app discover section" : "Der App-Erkennungsabschnitt konnte nicht geladen werden", "Could not render element" : "Element konnte nicht dargestellt werden", "Nothing to show" : "Nichts anzuzeigen", @@ -667,6 +676,7 @@ "Set line manager" : "Linien-Manager festlegen", "Account name will be autogenerated" : "Kontenname wird automatisch erstellt", "Account name (required)" : "Kontoname (erforderlich)", + "Failed to search groups" : "Suche nach Gruppen fehlgeschlagen", "New account" : "Neues Konto", "Display name" : "Anzeigename", "Either password or email is required" : "Passwort oder E-Mail-Adresse ist erforderlich.", @@ -706,6 +716,8 @@ "Remote wipe of devices" : "Fernlöschung von Geräten", "Wipe {userid}'s devices" : "Lösche {userid}s Geräte", "Wiped {userid}'s devices" : "{userid}s Geräte bereinigt", + "Failed to load groups with details" : "Gruppen mit Details konnten nicht geladen werden", + "Failed to load subadmin groups with details" : "Subadministrations-Gruppen mit Details konnten nicht geladen werden", "Failed to update line manager" : "Fehler beim Aktualisieren des Managers", "Fully delete {userid}'s account including all their personal files, app data, etc." : "Vollständig {userid}s Konto löschen inklusive aller persönlichen Dateien, App-Daten, usw.", "Account deletion" : "Kontenlöschung", @@ -738,6 +750,7 @@ "Sorting" : "Sortiere", "The system config enforces sorting the groups by name. This also disables showing the member count." : "Die Systemkonfiguration erzwingt die Sortierung der Gruppen nach Namen. Dadurch wird auch die Anzeige der Mitgliederzahl deaktiviert.", "Group list sorting" : "Sortierung der Gruppenliste", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "Aus Leistungsgründen wird die Sortierung nur auf die aktuell geladenen Gruppen angewendet. Gruppen werden beim Navigieren oder Suchen geladen.", "By member count" : "Nach Mitgliederzahl", "By name" : "Nach Name", "Send email" : "E-Mail senden", @@ -767,12 +780,7 @@ "All accounts" : "Alle Konten", "Admins" : "Administration", "Account group: {group}" : "Kontengruppe: {group}", - "Failed to create group" : "Fehler beim Erstellen der Gruppe", "Account management" : "Kontoverwaltung", - "Creating group…" : "Erstelle Gruppe…", - "Create group" : "Gruppe erstellen", - "Group name" : "Gruppenname", - "Please enter a valid group name" : "Bitte einen gültigen Gruppennamen eingeben", "Sending…" : "Sende…", "Email sent" : "E-Mail gesendet", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Beim Aktivieren der Verschlüsselung auf einem Nextcloud-Server werden aus Leistungsgründen nur neue und geänderte Dateien verschlüsselt.", diff --git a/apps/settings/l10n/de_DE.js b/apps/settings/l10n/de_DE.js index 5b1bffb273e..139c85e5974 100644 --- a/apps/settings/l10n/de_DE.js +++ b/apps/settings/l10n/de_DE.js @@ -56,7 +56,7 @@ OC.L10N.register( "Wrong password" : "Falsches Passwort", "Unable to change personal password" : "Das persönliche Passwort konnte nicht geändert werden", "Saved" : "Gespeichert", - "No Login supplied" : "Keine Anmeldename eingegeben", + "No Login supplied" : "Kein Anmeldename eingegeben", "Unable to change password. Password too long." : "Passwort konnte nicht geändert werden. Passwort ist zu lang.", "Authentication error" : "Authentifizierungsfehler", "Please provide an admin recovery password; otherwise, all account data will be lost." : "Bitte geben Sie ein Wiederherstellungspasswort für das Administrationskonto an, da sonst alle Kontodaten verlorengehen.", @@ -100,7 +100,7 @@ OC.L10N.register( "Welcome aboard" : "Willkommen an Bord", "Welcome aboard %s" : "Willkommen an Bord %s", "Welcome to your %s account, you can add, protect, and share your data." : "Willkommen zu Ihrem %s-Konto. Sie können Ihre Daten hinzufügen, schützen und teilen.", - "Your Login is: %s" : "Ihre Anmeldename lautet: %s", + "Your Login is: %s" : "Ihr Anmeldename lautet: %s", "Set your password" : "Setzen Sie Ihr Passwort", "Go to %s" : "%s aufrufen", "Install Client" : "Installiere den Client", @@ -428,6 +428,15 @@ OC.L10N.register( "No apps found for your version" : "Es wurden keine Apps für Ihre Version gefunden", "_%n app has an update available_::_%n apps have an update available_" : ["Für %n App ist eine Aktualisierung verfügbar","Für %n Apps sind Aktualisierungen verfügbar"], "_Update_::_Update all_" : ["Aktualisieren","Alle aktualisieren"], + "Failed to load groups" : "Gruppen konnten nicht geladen werden", + "Failed to create group" : "Fehler beim Erstellen der Gruppe", + "Creating group…" : "Erstelle Gruppe…", + "Create group" : "Gruppe erstellen", + "Group name" : "Gruppenname", + "Please enter a valid group name" : "Bitte einen gültigen Gruppennamen eingeben", + "Search groups…" : "Suche Gruppen…", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Liste der Gruppen. Diese Liste ist aus Leistungsgründen nicht vollständig gefüllt. Die Gruppen werden während des Navigierens oder Suchens geladen.", + "Loading groups…" : "Lade Gruppen …", "Could not load app discover section" : "Der App-Erkennungsabschnitt konnte nicht geladen werden", "Could not render element" : "Element konnte nicht gerendert werden", "Nothing to show" : "Nichts anzuzeigen", @@ -669,6 +678,7 @@ OC.L10N.register( "Set line manager" : "Manager festlegen", "Account name will be autogenerated" : "Kontenname wird automatisch erstellt", "Account name (required)" : "Kontoname (erforderlich)", + "Failed to search groups" : "Suche nach Gruppen fehlgeschlagen", "New account" : "Neues Konto", "Display name" : "Anzeigename", "Either password or email is required" : "Passwort oder E-Mail-Adresse ist erforderlich", @@ -708,6 +718,8 @@ OC.L10N.register( "Remote wipe of devices" : "Fernlöschung von Geräten", "Wipe {userid}'s devices" : "Lösche {userid}s Geräte", "Wiped {userid}'s devices" : "{userid}s Geräte gelöscht", + "Failed to load groups with details" : "Gruppen mit Details konnten nicht geladen werden", + "Failed to load subadmin groups with details" : "Subadministrations-Gruppen mit Details konnten nicht geladen werden", "Failed to update line manager" : "Fehler beim Aktualisieren des Managers", "Fully delete {userid}'s account including all their personal files, app data, etc." : "Lösche {userid}s Konto vollständig inklusive aller persönlichen Dateien, App-Daten, usw.", "Account deletion" : "Löschung des Kontos", @@ -740,6 +752,7 @@ OC.L10N.register( "Sorting" : "Sortierung", "The system config enforces sorting the groups by name. This also disables showing the member count." : "Die Systemkonfiguration erzwingt die Sortierung der Gruppen nach Namen. Dadurch wird auch die Anzeige der Kontenzahl deaktiviert.", "Group list sorting" : "Sortierung der Gruppenliste", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "Aus Leistungsgründen wird die Sortierung nur auf die aktuell geladenen Gruppen angewendet. Gruppen werden beim Navigieren oder Suchen geladen.", "By member count" : "Nach Kontenzahl", "By name" : "Nach Name", "Send email" : "E-Mail senden", @@ -769,12 +782,7 @@ OC.L10N.register( "All accounts" : "Alle Konten", "Admins" : "Administration", "Account group: {group}" : "Kontengruppe: {group}", - "Failed to create group" : "Fehler beim Erstellen der Gruppe", "Account management" : "Kontoverwaltung", - "Creating group…" : "Erstelle Gruppe…", - "Create group" : "Gruppe erstellen", - "Group name" : "Gruppenname", - "Please enter a valid group name" : "Bitte einen gültigen Gruppennamen eingeben", "Sending…" : "Senden…", "Email sent" : "E-Mail gesendet", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Beim Aktivieren der Verschlüsselung auf einem Nextcloud-Server werden aus Leistungsgründen nur neue und geänderte Dateien verschlüsselt.", diff --git a/apps/settings/l10n/de_DE.json b/apps/settings/l10n/de_DE.json index 0ade5c62bf8..38e380fda5f 100644 --- a/apps/settings/l10n/de_DE.json +++ b/apps/settings/l10n/de_DE.json @@ -54,7 +54,7 @@ "Wrong password" : "Falsches Passwort", "Unable to change personal password" : "Das persönliche Passwort konnte nicht geändert werden", "Saved" : "Gespeichert", - "No Login supplied" : "Keine Anmeldename eingegeben", + "No Login supplied" : "Kein Anmeldename eingegeben", "Unable to change password. Password too long." : "Passwort konnte nicht geändert werden. Passwort ist zu lang.", "Authentication error" : "Authentifizierungsfehler", "Please provide an admin recovery password; otherwise, all account data will be lost." : "Bitte geben Sie ein Wiederherstellungspasswort für das Administrationskonto an, da sonst alle Kontodaten verlorengehen.", @@ -98,7 +98,7 @@ "Welcome aboard" : "Willkommen an Bord", "Welcome aboard %s" : "Willkommen an Bord %s", "Welcome to your %s account, you can add, protect, and share your data." : "Willkommen zu Ihrem %s-Konto. Sie können Ihre Daten hinzufügen, schützen und teilen.", - "Your Login is: %s" : "Ihre Anmeldename lautet: %s", + "Your Login is: %s" : "Ihr Anmeldename lautet: %s", "Set your password" : "Setzen Sie Ihr Passwort", "Go to %s" : "%s aufrufen", "Install Client" : "Installiere den Client", @@ -426,6 +426,15 @@ "No apps found for your version" : "Es wurden keine Apps für Ihre Version gefunden", "_%n app has an update available_::_%n apps have an update available_" : ["Für %n App ist eine Aktualisierung verfügbar","Für %n Apps sind Aktualisierungen verfügbar"], "_Update_::_Update all_" : ["Aktualisieren","Alle aktualisieren"], + "Failed to load groups" : "Gruppen konnten nicht geladen werden", + "Failed to create group" : "Fehler beim Erstellen der Gruppe", + "Creating group…" : "Erstelle Gruppe…", + "Create group" : "Gruppe erstellen", + "Group name" : "Gruppenname", + "Please enter a valid group name" : "Bitte einen gültigen Gruppennamen eingeben", + "Search groups…" : "Suche Gruppen…", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Liste der Gruppen. Diese Liste ist aus Leistungsgründen nicht vollständig gefüllt. Die Gruppen werden während des Navigierens oder Suchens geladen.", + "Loading groups…" : "Lade Gruppen …", "Could not load app discover section" : "Der App-Erkennungsabschnitt konnte nicht geladen werden", "Could not render element" : "Element konnte nicht gerendert werden", "Nothing to show" : "Nichts anzuzeigen", @@ -667,6 +676,7 @@ "Set line manager" : "Manager festlegen", "Account name will be autogenerated" : "Kontenname wird automatisch erstellt", "Account name (required)" : "Kontoname (erforderlich)", + "Failed to search groups" : "Suche nach Gruppen fehlgeschlagen", "New account" : "Neues Konto", "Display name" : "Anzeigename", "Either password or email is required" : "Passwort oder E-Mail-Adresse ist erforderlich", @@ -706,6 +716,8 @@ "Remote wipe of devices" : "Fernlöschung von Geräten", "Wipe {userid}'s devices" : "Lösche {userid}s Geräte", "Wiped {userid}'s devices" : "{userid}s Geräte gelöscht", + "Failed to load groups with details" : "Gruppen mit Details konnten nicht geladen werden", + "Failed to load subadmin groups with details" : "Subadministrations-Gruppen mit Details konnten nicht geladen werden", "Failed to update line manager" : "Fehler beim Aktualisieren des Managers", "Fully delete {userid}'s account including all their personal files, app data, etc." : "Lösche {userid}s Konto vollständig inklusive aller persönlichen Dateien, App-Daten, usw.", "Account deletion" : "Löschung des Kontos", @@ -738,6 +750,7 @@ "Sorting" : "Sortierung", "The system config enforces sorting the groups by name. This also disables showing the member count." : "Die Systemkonfiguration erzwingt die Sortierung der Gruppen nach Namen. Dadurch wird auch die Anzeige der Kontenzahl deaktiviert.", "Group list sorting" : "Sortierung der Gruppenliste", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "Aus Leistungsgründen wird die Sortierung nur auf die aktuell geladenen Gruppen angewendet. Gruppen werden beim Navigieren oder Suchen geladen.", "By member count" : "Nach Kontenzahl", "By name" : "Nach Name", "Send email" : "E-Mail senden", @@ -767,12 +780,7 @@ "All accounts" : "Alle Konten", "Admins" : "Administration", "Account group: {group}" : "Kontengruppe: {group}", - "Failed to create group" : "Fehler beim Erstellen der Gruppe", "Account management" : "Kontoverwaltung", - "Creating group…" : "Erstelle Gruppe…", - "Create group" : "Gruppe erstellen", - "Group name" : "Gruppenname", - "Please enter a valid group name" : "Bitte einen gültigen Gruppennamen eingeben", "Sending…" : "Senden…", "Email sent" : "E-Mail gesendet", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Beim Aktivieren der Verschlüsselung auf einem Nextcloud-Server werden aus Leistungsgründen nur neue und geänderte Dateien verschlüsselt.", diff --git a/apps/settings/l10n/el.js b/apps/settings/l10n/el.js index 927169571ea..64ad6609ceb 100644 --- a/apps/settings/l10n/el.js +++ b/apps/settings/l10n/el.js @@ -427,6 +427,12 @@ OC.L10N.register( "No apps found for your version" : "Δεν βρέθηκαν εφαρμογές για αυτή την έκδοση", "_%n app has an update available_::_%n apps have an update available_" : ["%n εφαρμογή έχει διαθέσιμη αναβάθμιση","%n εφαρμογές έχουν διαθέσιμη αναβάθμιση"], "_Update_::_Update all_" : ["Ενημέρωση","Ενημέρωση όλων"], + "Failed to create group" : "Αποτυχία δημιουργίας ομάδας", + "Creating group…" : "Δημιουργία ομάδας…", + "Create group" : "Δημιουργία ομάδας", + "Group name" : "Όνομα ομάδας", + "Please enter a valid group name" : "Παρακαλώ εισάγετε ένα έγκυρο όνομα ομάδας", + "Loading groups…" : "Γίνεται φόρτωση ομάδων…", "Could not load app discover section" : "Δεν ήταν δυνατή η φόρτωση της ενότητας ανακαλύψεως εφαρμογών", "Could not render element" : "Δεν ήταν δυνατή η απόδοση του στοιχείου", "Nothing to show" : "Τίποτα προς εμφάνιση", @@ -767,12 +773,7 @@ OC.L10N.register( "All accounts" : "Όλοι οι λογαριασμοί", "Admins" : "Διαχειριστές", "Account group: {group}" : "Ομάδα λογαριασμού: {group}", - "Failed to create group" : "Αποτυχία δημιουργίας ομάδας", "Account management" : "Διαχείριση λογαριασμών", - "Creating group…" : "Δημιουργία ομάδας…", - "Create group" : "Δημιουργία ομάδας", - "Group name" : "Όνομα ομάδας", - "Please enter a valid group name" : "Παρακαλώ εισάγετε ένα έγκυρο όνομα ομάδας", "Sending…" : "Γίνεται αποστολή…", "Email sent" : "Το Email απεστάλη", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Για λόγους απόδοσης, όταν ενεργοποιείτε την κρυπτογράφηση σε έναν διακομιστή Nextcloud, μόνο τα νέα και τα τροποποιημένα αρχεία κρυπτογραφούνται.", diff --git a/apps/settings/l10n/el.json b/apps/settings/l10n/el.json index f8ad90f87fc..6110e84cc95 100644 --- a/apps/settings/l10n/el.json +++ b/apps/settings/l10n/el.json @@ -425,6 +425,12 @@ "No apps found for your version" : "Δεν βρέθηκαν εφαρμογές για αυτή την έκδοση", "_%n app has an update available_::_%n apps have an update available_" : ["%n εφαρμογή έχει διαθέσιμη αναβάθμιση","%n εφαρμογές έχουν διαθέσιμη αναβάθμιση"], "_Update_::_Update all_" : ["Ενημέρωση","Ενημέρωση όλων"], + "Failed to create group" : "Αποτυχία δημιουργίας ομάδας", + "Creating group…" : "Δημιουργία ομάδας…", + "Create group" : "Δημιουργία ομάδας", + "Group name" : "Όνομα ομάδας", + "Please enter a valid group name" : "Παρακαλώ εισάγετε ένα έγκυρο όνομα ομάδας", + "Loading groups…" : "Γίνεται φόρτωση ομάδων…", "Could not load app discover section" : "Δεν ήταν δυνατή η φόρτωση της ενότητας ανακαλύψεως εφαρμογών", "Could not render element" : "Δεν ήταν δυνατή η απόδοση του στοιχείου", "Nothing to show" : "Τίποτα προς εμφάνιση", @@ -765,12 +771,7 @@ "All accounts" : "Όλοι οι λογαριασμοί", "Admins" : "Διαχειριστές", "Account group: {group}" : "Ομάδα λογαριασμού: {group}", - "Failed to create group" : "Αποτυχία δημιουργίας ομάδας", "Account management" : "Διαχείριση λογαριασμών", - "Creating group…" : "Δημιουργία ομάδας…", - "Create group" : "Δημιουργία ομάδας", - "Group name" : "Όνομα ομάδας", - "Please enter a valid group name" : "Παρακαλώ εισάγετε ένα έγκυρο όνομα ομάδας", "Sending…" : "Γίνεται αποστολή…", "Email sent" : "Το Email απεστάλη", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Για λόγους απόδοσης, όταν ενεργοποιείτε την κρυπτογράφηση σε έναν διακομιστή Nextcloud, μόνο τα νέα και τα τροποποιημένα αρχεία κρυπτογραφούνται.", diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js index 3a87440c16a..73f016e7dab 100644 --- a/apps/settings/l10n/en_GB.js +++ b/apps/settings/l10n/en_GB.js @@ -428,6 +428,15 @@ OC.L10N.register( "No apps found for your version" : "No apps found for your version", "_%n app has an update available_::_%n apps have an update available_" : ["%n app has an update available","%n apps have an update available"], "_Update_::_Update all_" : ["Update","Update all"], + "Failed to load groups" : "Failed to load groups", + "Failed to create group" : "Failed to create group", + "Creating group…" : "Creating group…", + "Create group" : "Create group", + "Group name" : "Group name", + "Please enter a valid group name" : "Please enter a valid group name", + "Search groups…" : "Search groups…", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list.", + "Loading groups…" : "Loading groups…", "Could not load app discover section" : "Could not load app discover section", "Could not render element" : "Could not render element", "Nothing to show" : "Nothing to show", @@ -669,6 +678,7 @@ OC.L10N.register( "Set line manager" : "Set line manager", "Account name will be autogenerated" : "Account name will be autogenerated", "Account name (required)" : "Account name (required)", + "Failed to search groups" : "Failed to search groups", "New account" : "New account", "Display name" : "Display name", "Either password or email is required" : "Either password or email is required", @@ -708,6 +718,8 @@ OC.L10N.register( "Remote wipe of devices" : "Remote wipe of devices", "Wipe {userid}'s devices" : "Wipe {userid}'s devices", "Wiped {userid}'s devices" : "Wiped {userid}'s devices", + "Failed to load groups with details" : "Failed to load groups with details", + "Failed to load subadmin groups with details" : "Failed to load subadmin groups with details", "Failed to update line manager" : "Failed to update line manager", "Fully delete {userid}'s account including all their personal files, app data, etc." : "Fully delete {userid}'s account including all their personal files, app data, etc.", "Account deletion" : "Account deletion", @@ -740,6 +752,7 @@ OC.L10N.register( "Sorting" : "Sorting", "The system config enforces sorting the groups by name. This also disables showing the member count." : "The system config enforces sorting the groups by name. This also disables showing the member count.", "Group list sorting" : "Group list sorting", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.", "By member count" : "By member count", "By name" : "By name", "Send email" : "Send email", @@ -769,12 +782,7 @@ OC.L10N.register( "All accounts" : "All accounts", "Admins" : "Admins", "Account group: {group}" : "Account group: {group}", - "Failed to create group" : "Failed to create group", "Account management" : "Account management", - "Creating group…" : "Creating group…", - "Create group" : "Create group", - "Group name" : "Group name", - "Please enter a valid group name" : "Please enter a valid group name", "Sending…" : "Sending…", "Email sent" : "Email sent", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted.", diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json index 11280d8d55a..0419b38cc4e 100644 --- a/apps/settings/l10n/en_GB.json +++ b/apps/settings/l10n/en_GB.json @@ -426,6 +426,15 @@ "No apps found for your version" : "No apps found for your version", "_%n app has an update available_::_%n apps have an update available_" : ["%n app has an update available","%n apps have an update available"], "_Update_::_Update all_" : ["Update","Update all"], + "Failed to load groups" : "Failed to load groups", + "Failed to create group" : "Failed to create group", + "Creating group…" : "Creating group…", + "Create group" : "Create group", + "Group name" : "Group name", + "Please enter a valid group name" : "Please enter a valid group name", + "Search groups…" : "Search groups…", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list.", + "Loading groups…" : "Loading groups…", "Could not load app discover section" : "Could not load app discover section", "Could not render element" : "Could not render element", "Nothing to show" : "Nothing to show", @@ -667,6 +676,7 @@ "Set line manager" : "Set line manager", "Account name will be autogenerated" : "Account name will be autogenerated", "Account name (required)" : "Account name (required)", + "Failed to search groups" : "Failed to search groups", "New account" : "New account", "Display name" : "Display name", "Either password or email is required" : "Either password or email is required", @@ -706,6 +716,8 @@ "Remote wipe of devices" : "Remote wipe of devices", "Wipe {userid}'s devices" : "Wipe {userid}'s devices", "Wiped {userid}'s devices" : "Wiped {userid}'s devices", + "Failed to load groups with details" : "Failed to load groups with details", + "Failed to load subadmin groups with details" : "Failed to load subadmin groups with details", "Failed to update line manager" : "Failed to update line manager", "Fully delete {userid}'s account including all their personal files, app data, etc." : "Fully delete {userid}'s account including all their personal files, app data, etc.", "Account deletion" : "Account deletion", @@ -738,6 +750,7 @@ "Sorting" : "Sorting", "The system config enforces sorting the groups by name. This also disables showing the member count." : "The system config enforces sorting the groups by name. This also disables showing the member count.", "Group list sorting" : "Group list sorting", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.", "By member count" : "By member count", "By name" : "By name", "Send email" : "Send email", @@ -767,12 +780,7 @@ "All accounts" : "All accounts", "Admins" : "Admins", "Account group: {group}" : "Account group: {group}", - "Failed to create group" : "Failed to create group", "Account management" : "Account management", - "Creating group…" : "Creating group…", - "Create group" : "Create group", - "Group name" : "Group name", - "Please enter a valid group name" : "Please enter a valid group name", "Sending…" : "Sending…", "Email sent" : "Email sent", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted.", diff --git a/apps/settings/l10n/eo.js b/apps/settings/l10n/eo.js index f58a7085568..5bc41ce9ec6 100644 --- a/apps/settings/l10n/eo.js +++ b/apps/settings/l10n/eo.js @@ -137,6 +137,7 @@ OC.L10N.register( "Actions" : "Agoj", "Results from other categories" : "Rezultoj el aliaj kategorioj", "No apps found for your version" : "Neniu aplikaĵo trovita por via versio", + "Group name" : "Gruponomo", "Loading" : "Ŝargado", "Type" : "Tipo", "Learn more" : "Scii pli", @@ -240,7 +241,6 @@ OC.L10N.register( "Select default quota" : "Elekti defaŭltan kvoton", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Kiel administranto, vi povas agordi plidetale la kunhavigon. Bv. vidi la dokumentaron pri tio.", "Admins" : "Administrantoj", - "Group name" : "Gruponomo", "Sending…" : "Sendado...", "Email sent" : "La retpoŝtaĵo sendiĝis", "Location" : "Loko", diff --git a/apps/settings/l10n/eo.json b/apps/settings/l10n/eo.json index c4c9184bf00..baf93471b1b 100644 --- a/apps/settings/l10n/eo.json +++ b/apps/settings/l10n/eo.json @@ -135,6 +135,7 @@ "Actions" : "Agoj", "Results from other categories" : "Rezultoj el aliaj kategorioj", "No apps found for your version" : "Neniu aplikaĵo trovita por via versio", + "Group name" : "Gruponomo", "Loading" : "Ŝargado", "Type" : "Tipo", "Learn more" : "Scii pli", @@ -238,7 +239,6 @@ "Select default quota" : "Elekti defaŭltan kvoton", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Kiel administranto, vi povas agordi plidetale la kunhavigon. Bv. vidi la dokumentaron pri tio.", "Admins" : "Administrantoj", - "Group name" : "Gruponomo", "Sending…" : "Sendado...", "Email sent" : "La retpoŝtaĵo sendiĝis", "Location" : "Loko", diff --git a/apps/settings/l10n/es.js b/apps/settings/l10n/es.js index 7f9e90ad408..21efbd71224 100644 --- a/apps/settings/l10n/es.js +++ b/apps/settings/l10n/es.js @@ -420,6 +420,12 @@ OC.L10N.register( "No apps found for your version" : "No se han encontrado aplicaciones para su versión", "_%n app has an update available_::_%n apps have an update available_" : ["%n app tiene una actualización disponible.","%n apps tienen una actualización disponible.","%n apps tienen una actualización disponible."], "_Update_::_Update all_" : ["Actualizar todo","Actualizar todo","Actualizar todo"], + "Failed to create group" : "Fallo al crear el grupo", + "Creating group…" : "Creando grupo…", + "Create group" : "Crear grupo", + "Group name" : "Nombre del grupo", + "Please enter a valid group name" : "Por favor, ingrese un nombre de grupo válido", + "Loading groups…" : "Cargando grupos…", "Could not load app discover section" : "No se pudo cargar la sección de descubrir aplicaciones", "Could not render element" : "No se pudo renderizar el elemento", "Nothing to show" : "Nada que mostrar", @@ -756,12 +762,7 @@ OC.L10N.register( "All accounts" : "Todas las cuentas", "Admins" : "Administradores", "Account group: {group}" : "Grupo de cuentas: {group}", - "Failed to create group" : "Fallo al crear el grupo", "Account management" : "Administración de cuentas", - "Creating group…" : "Creando grupo…", - "Create group" : "Crear grupo", - "Group name" : "Nombre del grupo", - "Please enter a valid group name" : "Por favor, ingrese un nombre de grupo válido", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Por razones de rendimiento, cuando activas el cifrado en un servidor Nextcloud sólo se cifrarán los archivos nuevos y modificados.", diff --git a/apps/settings/l10n/es.json b/apps/settings/l10n/es.json index ee4c1ca686e..a0f40b6557b 100644 --- a/apps/settings/l10n/es.json +++ b/apps/settings/l10n/es.json @@ -418,6 +418,12 @@ "No apps found for your version" : "No se han encontrado aplicaciones para su versión", "_%n app has an update available_::_%n apps have an update available_" : ["%n app tiene una actualización disponible.","%n apps tienen una actualización disponible.","%n apps tienen una actualización disponible."], "_Update_::_Update all_" : ["Actualizar todo","Actualizar todo","Actualizar todo"], + "Failed to create group" : "Fallo al crear el grupo", + "Creating group…" : "Creando grupo…", + "Create group" : "Crear grupo", + "Group name" : "Nombre del grupo", + "Please enter a valid group name" : "Por favor, ingrese un nombre de grupo válido", + "Loading groups…" : "Cargando grupos…", "Could not load app discover section" : "No se pudo cargar la sección de descubrir aplicaciones", "Could not render element" : "No se pudo renderizar el elemento", "Nothing to show" : "Nada que mostrar", @@ -754,12 +760,7 @@ "All accounts" : "Todas las cuentas", "Admins" : "Administradores", "Account group: {group}" : "Grupo de cuentas: {group}", - "Failed to create group" : "Fallo al crear el grupo", "Account management" : "Administración de cuentas", - "Creating group…" : "Creando grupo…", - "Create group" : "Crear grupo", - "Group name" : "Nombre del grupo", - "Please enter a valid group name" : "Por favor, ingrese un nombre de grupo válido", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Por razones de rendimiento, cuando activas el cifrado en un servidor Nextcloud sólo se cifrarán los archivos nuevos y modificados.", diff --git a/apps/settings/l10n/es_419.js b/apps/settings/l10n/es_419.js index 777be6cb84e..33fef6fceb8 100644 --- a/apps/settings/l10n/es_419.js +++ b/apps/settings/l10n/es_419.js @@ -101,6 +101,7 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Type" : "Tipo", "Display Name" : "Nombre a desplegar", "Learn more" : "Conoce más", @@ -183,7 +184,6 @@ OC.L10N.register( "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_419.json b/apps/settings/l10n/es_419.json index f060d010b18..d50cf12fc29 100644 --- a/apps/settings/l10n/es_419.json +++ b/apps/settings/l10n/es_419.json @@ -99,6 +99,7 @@ "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Type" : "Tipo", "Display Name" : "Nombre a desplegar", "Learn more" : "Conoce más", @@ -181,7 +182,6 @@ "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_AR.js b/apps/settings/l10n/es_AR.js index 987f344038d..91e1336e884 100644 --- a/apps/settings/l10n/es_AR.js +++ b/apps/settings/l10n/es_AR.js @@ -4,9 +4,9 @@ OC.L10N.register( "Private" : "Privado", "Only visible to people matched via phone number integration through Talk on mobile" : "Sólo visible para las personas que coincidan con la integración del número de teléfono a través de Talk en el móvil", "Local" : "Local", - "Only visible to people on this instance and guests" : "Solo visible para personas en esta instancia e invitados", + "Only visible to people on this instance and guests" : "Sólo visible para personas en esta instancia e invitados", "Federated" : "Federado", - "Only synchronize to trusted servers" : "Sincronizar solo con servidores de confianza", + "Only synchronize to trusted servers" : "Sincronizar sólo con servidores de confianza", "Published" : "Publicado", "Synchronize to trusted servers and the global and public address book" : "Sincronizar con servidores de confianza y con la libreta de direcciones global y pública", "Verify" : "Verificar", @@ -59,10 +59,10 @@ OC.L10N.register( "No Login supplied" : "No se especificó un usuario", "Unable to change password. Password too long." : "No se pudo cambiar la contraseña. La contraseña es demasiado larga.", "Authentication error" : "Error de autenticación", - "Please provide an admin recovery password; otherwise, all account data will be lost." : "Por favor, asigna una contraseña de recuperación del administrador; fr lo contrario, se perderán todos los datos de los usuarios.", + "Please provide an admin recovery password; otherwise, all account data will be lost." : "Por favor proporcioná una contraseña de recuperación de administrador; de lo contrario, toda la información de la cuenta se perderá.", "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación del administrador incorrecta. Por favor verificala e intentalo de nuevo.", "Backend does not support password change, but the encryption of the account key was updated." : "El backend no admite el cambio de contraseña, pero se actualizó la clave de cifrado del usuario.", - "Administrator documentation" : "Documentación del adminsitrador", + "Administrator documentation" : "Documentación del administrador", "User documentation" : "Documentación del usuario", "Nextcloud help overview" : "Vista general de la ayuda de Nextcloud", "Invalid SMTP password." : "Constraseña SMTP inválida. ", @@ -122,7 +122,7 @@ OC.L10N.register( "Mobile & desktop" : "Móvil & escritorio", "Email server" : "Servidor de correo electrónico", "Mail Providers" : "Proveedores de correo electrónico", - "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "El proveedor de correo permite enviar correos electrónicos directamente a través de la cuenta de correo personal del usuario. En la actualidad, esta funcionalidad se limita a las invitaciones de calendario. Requiere Nextcloud Mail 4.1 y una cuenta de correo electrónico en Nextcloud Mail que coincida con la dirección de correo electrónico del usuario en Nextcloud.", + "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "El proveedor de correo electrónico permite enviar correos electrónicos directamente a través de la cuenta de correo personal del usuario. En la actualidad, esta funcionalidad se limita a las invitaciones de calendario. Requiere Nextcloud Mail 4.1 y una cuenta de correo electrónico en Nextcloud Mail que coincida con la dirección de correo electrónico del usuario en Nextcloud.", "Send emails using" : "Enviar correos electrónicos usando", "User's email account" : "Cuenta de correo electrónico del usuario", "System email account" : "Cuenta de correo electrónico del sistema", @@ -229,10 +229,21 @@ OC.L10N.register( "Your web server is not properly set up to resolve %1$s.\nThis is most likely related to a web server configuration that was not updated to deliver this folder directly.\nPlease compare your configuration against the shipped rewrite rules in \".htaccess\" for Apache or the provided one in the documentation for Nginx.\nOn Nginx those are typically the lines starting with \"location ~\" that need an update." : "Tu servidor web no está configurado correctamente para resolver %1$s.\nEsto probablemente se debe a que la configuración del servidor web no se actualizó para entregar esta carpeta directamente.\nPor favor, compará tu configuración con las reglas de re-escritura por defecto en \".htaccess\" para Apache o la que se proporcionó en la documentación de Nginx\nEn Nginx las líneas que empiezan con \"location ~\" son las que habitualmente necesitan actualizarse.", "Overwrite CLI URL" : "Sobreescribir el URL del CLI", "The \"overwrite.cli.url\" option in your config.php is correctly set to \"%s\"." : "La opción \"overwrite.cli.url\" en tu config.php está correctamente establecida como \"%s\".", + "PHP default charset" : "Conjunto de caracteres predeterminado de PHP", + "PHP configuration option \"default_charset\" should be UTF-8" : "La opción de configuración de PHP \"default_charset\" debería ser UTF-8", "Freetype" : "FreeType", "Supported" : "Soportado", "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Tu PHP no tiene soporte FreeType, lo que resulta en fallas en las imágenes de perfil y en la interfaz de configuraciones.", + "PHP file size upload limit" : "Límite de carga de archivos en PHP", + "The PHP upload_max_filesize is too low. A size of at least %1$s is recommended. Current value: %2$s." : "El upload_max_filesize de PHP es demasiado bajo. Se recomienda un tamaño de al menos %1$s. Valor actual: %2$s.", + "The PHP post_max_size is too low. A size of at least %1$s is recommended. Current value: %2$s." : "El post_max_size de PHP es demasiado bajo. Se recomienda un tamaño de al menos %1$s. Valor actual: %2$s.", + "The PHP max_input_time is too low. A time of at least %1$s is recommended. Current value: %2$s." : "El max_input_time de PHP es demasiado bajo. Se recomienda un tiempo de al menos %1$s. Valor actual: %2$s.", + "The PHP max_execution_time is too low. A time of at least %1$s is recommended. Current value: %2$s." : "El max_execution_time de PHP es demasiado bajo. Se recomienda un tiempo de al menos %1$s. Valor actual: %2$s.", + "PHP memory limit" : "Límite de memoria de PHP", + "The PHP memory limit is below the recommended value of %s. Some features or apps - including the Updater - may not function properly." : "El límite de memoria PHP está por debajo del valor recomendado de %s. Es posible que algunas funciones o aplicaciones -incluyendo el Actualizador- no funcionen correctamente.", + "PHP modules" : "Módulos de PHP", "required for SFTP storage and recommended for WebAuthn performance" : "necesario para el almacenamiento SFTP y recomendado para el rendimiento de WebAuthn", + "PHP opcache" : "opcache de PHP", "Architecture" : "Arquitectura", "64-bit" : "64 bits", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Su base de datos no puede correr con el nivel de aislamiento de transacción de \"READ COMMITTED\". Puede causar problemas cuando mútiples acciones sean ejecutadas en paralelo.", @@ -260,6 +271,11 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Failed to create group" : "No se pudo crear el grupo", + "Creating group…" : "Creando grupo…", + "Create group" : "Crear grupo", + "Group name" : "Nombre del grupo", + "Please enter a valid group name" : "Ingresá un nombre de grupo válido", "Loading" : "Cargando", "Type" : "Escribir", "Display Name" : "Nombre a desplegar", @@ -408,18 +424,55 @@ OC.L10N.register( "Avatar" : "Avatar", "Account name" : "Nombre de la cuenta", "Group admin for" : "Administrador del grupo para", + "Account backend" : "Backend de la cuenta", "Storage location" : "Úbicación del almacenamiento", + "First login" : "Primer inicio de sesión", "Last login" : "Último inicio de sesión", "Account actions" : "Acciones de la cuenta", + "{size} used" : "{size} usados", "Delete account" : "Borrar cuenta", "Disconnect all devices and delete local data" : "Desconectar todos los dispositivos y eliminar los datos locales", + "Disable account" : "Deshabilitar la cuenta", + "Enable account" : "Habilitar la cuenta", + "Resend welcome email" : "Volver a enviar el correo electrónico de bienvenida", "In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet." : "En caso de pérdida del dispositivo o salida de la organización, esto puede borrar de forma remota los datos de Nextcloud de todos los dispositivos asociados con {userid}. Funciona únicamente si los dispositivos están conectados a Internet.", "Remote wipe of devices" : "Borrado remoto de dispositivos", "Wipe {userid}'s devices" : "Borrar los dispositivos de {userid}", "Wiped {userid}'s devices" : "Se borraron los dispositivos de {userid}", + "Failed to update line manager" : "No se pudo actualizar el superior inmediato", + "Fully delete {userid}'s account including all their personal files, app data, etc." : "Eliminar completamente la cuenta de {userid}, incluyendo todos sus archivos personales, datos de las aplicaciones, etc.", + "Account deletion" : "Eliminación de la cuenta", + "Delete {userid}'s account" : "Eliminar la cuenta de {userid}", + "Display name was successfully changed" : "Se cambió correctamente el nombre para mostrar", + "Password can't be empty" : "La contraseña no puede estar en blanco", + "Password was successfully changed" : "La contraseña se cambió correctamente", + "Email can't be empty" : "El correo electrónico no puede estar en blanco", + "Email was successfully changed" : "El correo electrónico se cambió correctamente", + "Welcome mail sent!" : "¡Correo electrónico de bienvenida enviado!", + "Loading account …" : "Cargando cuenta ...", + "Change display name" : "Cambiar el nombre a mostrar", + "Set new password" : "Establecer nueva contraseña", + "You do not have permissions to see the details of this account" : "No tenés permisos para ver los detalles de esta cuenta", + "Set new email address" : "Establecer nueva dirección de correo electrónico", + "Add account to group" : "Agregar cuenta al grupo", + "Set account as admin for" : "Establecer cuenta como administrador de", + "Select account quota" : "Seleccionar la cuota de la cuenta", + "Set the language" : "Establecer el lenguaje", + "Toggle account actions menu" : "Alternar menú de acciones de cuenta", "Done" : "Terminado", "Edit" : "Editar", + "Account management settings" : "Configuración de administración de cuentas", + "Visibility" : "Visibilidad", + "Show language" : "Mostrar lenguaje", + "Show account backend" : "Mostrar el backend de la cuenta", + "Show storage path" : "Mostrar la ruta de almacenamiento", + "Show first login" : "Mostrar primer inicio de sesión", "Show last login" : "Mostrar último inicio de sesión", + "Sorting" : "Orden", + "The system config enforces sorting the groups by name. This also disables showing the member count." : "La configuración de sistema fuerza a que los grupos sean ordenados por nombre. Esto también impide mostrar la cantidad de miembros.", + "Group list sorting" : "Ordenamiento de la lista de grupos", + "By member count" : "Por cantidad de miembros", + "By name" : "Por nombre", "Send email" : "Enviar correo electrónico", "Send welcome email to new accounts" : "Enviar un correo electrónico de bienvenida a usuarios nuevos", "Defaults" : "Valores por defecto", @@ -437,14 +490,17 @@ OC.L10N.register( "The following devices are configured for your account:" : "Los siguientes dispositivos están configurados para tu cuenta:", "Your browser does not support WebAuthn." : "Tu navegador no admite WebAuthn.", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, usted puede hacer ajustes finos al comportamiento de compartir. Favor de consultar la documentación para más información. ", + "You need to enable the File sharing App." : "Tenés que habilitar la aplicación Compartir archivos.", "App Store" : "Tienda de aplicaciones", "Loading app list" : "Cargando la lista de aplicaciones", + "Loading categories" : "Cargando categorías", + "Developer documentation ↗" : "Documentación del desarrollador ↗", + "Version {version}, {license}-licensed" : "Versión {version}, bajo licencia {license}", + "Version {version}" : "Versión {version}", + "All accounts" : "Todas las cuentas", "Admins" : "Administradores", + "Account group: {group}" : "Grupo de cuentas: {group}", "Account management" : "Administración de cuentas", - "Creating group…" : "Creando grupo…", - "Create group" : "Crear grupo", - "Group name" : "Nombre del grupo", - "Please enter a valid group name" : "Ingresá un nombre de grupo válido", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Por razones de rendimiento, cuando actives el cifrado en un servidor Nextcloud sólo se cifrarán los archivos nuevos y modificados.", @@ -465,6 +521,9 @@ OC.L10N.register( "Profile visibility" : "Visibilidad del perfil", "Locale" : "Configuración regional", "First day of week" : "Primer día de la semana", + "Not available as this property is required for core functionality including file sharing and calendar invitations" : "No está disponible porque esta propiedad es necesaria para la funcionalidad básica, incluyendo el compartir archivos y las invitaciones de calendario", + "Not available as federation has been disabled for your account, contact your system administration if you have any questions" : "No está disponible porque la federación está deshabilitada para tu cuenta. Ponete en contacto con el administrador del sistema si tenés alguna duda.", + "Not available as publishing account specific data to the lookup server is not allowed, contact your system administration if you have any questions" : "No está disponible porque no está permitida la publicación de datos específicos de cuentas en el servidor de búsqueda. Ponete en contacto con el administrador del sistema si tenés alguna duda", "Discover" : "Descubrí", "Your apps" : "Tus aplicaciones", "Active apps" : "Aplicaciones activas", @@ -477,14 +536,32 @@ OC.L10N.register( "Show to logged in accounts only" : "Visible únicamente para usuarios conectados", "Hide" : "Invisible", "Manually installed apps cannot be updated" : "Las aplicaciones instaladas manualmente no pueden ser actualizadas", + "{progress}% Deploying …" : "Desplegando {progress}%", + "{progress}% Initializing …" : "Inicializando {progress}%", + "Health checking" : "Revisión de salud del servidor", "Deploy and Enable" : "Desplegar y habilitar", "Download and enable" : "Descargar y habilitar", "Disable" : "Deshabilitar", "Allow untested app" : "Permitir aplicación no probada", + "The app will be downloaded from the App Store" : "La aplicación será descargada de la tienda de aplicaciones", + "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." : "Esta aplicación no está marcada como compatible con tu versión de Nextcloud. Si continuás podrás instalar la aplicación, pero tené en cuenta que podría no funcionar según lo esperado.", "Unknown" : "Desconocido", "Never" : "Nunca", + "Could not register device: Network error" : "No se pudo registrar el dispositivo: error de red", + "Could not register device: Probably already registered" : "No se pudo registrar el dispositivo: es probable que ya esté registrado", + "Could not register device" : "No se pudo registrar el dispositivo", + "An error occurred during the request. Unable to proceed." : "Ocurrió un error durante la solicitud. No se puede continuar.", + "The app has been enabled but needs to be updated." : "La aplicación ha sido habilitada pero necesita actualizarse.", + "Error: This app cannot be enabled because it makes the server unstable" : "Error: Esta aplicación no se puede habilitar porque genera inestabilidad en el servidor", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación está habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "Do you really want to wipe your data from this device?" : "¿Estás seguro de querer borrar tus datos de este dispositivo?", + "Confirm wipe" : "Confirmar borrado", "Could not delete the app token" : "No se pudo eliminar el token de aplicación", + "Error while wiping the device with the token" : "Error al borrar el dispositivo con el token", + "Error while updating device token name" : "Error al actualizar el nombre del token de dispositivo", + "Error while updating device token scope" : "Error al actualizar el alcance del token de dispositivo", + "Could not set group sorting" : "No se pudo establecer el ordenamiento de grupos", + "There were too many requests from your network. Retry later or contact your administrator if this is an error." : "Hubo demasiadas solicitudes desde tu red. Volvé a intentarlo más tarde o ponete en contacto con tu administrador si se trata de un error.", "Error" : "Error", "Account documentation" : "Documentación de la cuenta", "Administration documentation" : "Documentación de administración", @@ -506,10 +583,18 @@ OC.L10N.register( "Authentication" : "Autenticación", "Authentication required" : "Autenticación requerida", "Credentials" : "Credenciales", + "SMTP Login" : "Inicio de sesión SMTP", "SMTP Password" : "Contraseña SMTP", "Save" : "Guardar", + "Test and verify email settings" : "Probar y verificar la configuración del correo electrónico", "Security & setup warnings" : "Advertencias de seguridad y configuración", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Es importante para la seguridad y rendimiento de tu instancia que todo esté configurado correctamente. Para ayudarte con eso estamos haciendo algunas comprobaciones automáticas. Consultá la documentación para mayor información.", "All checks passed." : "Todas las verificaciones fueron exitosas.", + "There are some errors regarding your setup." : "Hay algunos errores en tu configuración.", + "There are some warnings regarding your setup." : "Hay algunas advertencias en tu configuración.", + "Checking for system and security issues." : "Comprobando problemas del sistema y de seguridad.", + "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>." : "Por favor, volvé a consultar las <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guías de instalación ↗</a>, y comprobá posibles errores y advertencias en el <a href=\"%2$s\">registro</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Revisá la seguridad de tu Nextcloud usando <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nuestro escáner de seguridad ↗</a>.", "Reasons to use Nextcloud in your organization" : "Motivos para usar Nextcloud en tu organización", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", "Like our Facebook page" : "Me gusta en nuestra página de Facebook", @@ -520,6 +605,11 @@ OC.L10N.register( "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Esta versión comunitaria de Nextcloud no cuenta con soporte y las notificaciones instantáneas no están disponibles.", "Use a second factor besides your password to increase security for your account." : "Usá un segundo factor además de tu contraseña para aumentar la seguridad de tu cuenta.", "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 usás aplicaciones de terceros para conectarte a Nextcloud, por favor asegurate de crear y configurar una contraseña de app para cada una antes de activar la autenticación en dos pasos.", + "To allow this check to run you have to make sure that your webserver can connect to itself. Therefor it must be able to resolve and connect to at least one its `trusted_domains` or the `overwrite.cli.url`." : "Para permitir que este chequeo se lleve a cabo, tenés que asegurarte de que tu servidor pueda conectarse a sí mismo. Por tanto, este debe poder resolver y conectarse a alguno de sus `trusted_domains` o al url definido en `overwrite.cli.url`", + "Missing optional index \"%s\" in table \"%s\"." : "Falta el índice opcional \"%s\" en la tabla \"%s\".", + "The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically. By running \"occ db:add-missing-indices\" those missing indexes could be added manually while the instance keeps running. Once the indexes are added queries to those tables are usually much faster." : "A la base de datos le faltan algunos índices. Dado que agregar índices a tablas grandes puede llevar bastante tiempo, no se han agregado automáticamente. Ejecutando \"occ db:add-missing-indices\" se pueden agregar manualmente los índices faltantes mientras la instancia sigue corriendo. Una vez agregados los índices, las consultas a esas tablas suelen ser mucho más rápidas.", + "File locking" : "Bloqueo de archivos", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "El bloqueo transaccional de archivos está desactivado, lo que podría ocasionar problemas de race conditions. Habilitá \"filelocking.enabled\" en config.php para evitar estos problemas.", "for WebAuthn passwordless login" : "para el inicio de sesión sin contraseña de WebAuthn", "for WebAuthn passwordless login, and SFTP storage" : "para el inicio de sesión sin contraseña de WebAuthn y el almacenamiento SFTP", "Your biography" : "Tu biografía", diff --git a/apps/settings/l10n/es_AR.json b/apps/settings/l10n/es_AR.json index aed4ba2b7b7..9fae468c276 100644 --- a/apps/settings/l10n/es_AR.json +++ b/apps/settings/l10n/es_AR.json @@ -2,9 +2,9 @@ "Private" : "Privado", "Only visible to people matched via phone number integration through Talk on mobile" : "Sólo visible para las personas que coincidan con la integración del número de teléfono a través de Talk en el móvil", "Local" : "Local", - "Only visible to people on this instance and guests" : "Solo visible para personas en esta instancia e invitados", + "Only visible to people on this instance and guests" : "Sólo visible para personas en esta instancia e invitados", "Federated" : "Federado", - "Only synchronize to trusted servers" : "Sincronizar solo con servidores de confianza", + "Only synchronize to trusted servers" : "Sincronizar sólo con servidores de confianza", "Published" : "Publicado", "Synchronize to trusted servers and the global and public address book" : "Sincronizar con servidores de confianza y con la libreta de direcciones global y pública", "Verify" : "Verificar", @@ -57,10 +57,10 @@ "No Login supplied" : "No se especificó un usuario", "Unable to change password. Password too long." : "No se pudo cambiar la contraseña. La contraseña es demasiado larga.", "Authentication error" : "Error de autenticación", - "Please provide an admin recovery password; otherwise, all account data will be lost." : "Por favor, asigna una contraseña de recuperación del administrador; fr lo contrario, se perderán todos los datos de los usuarios.", + "Please provide an admin recovery password; otherwise, all account data will be lost." : "Por favor proporcioná una contraseña de recuperación de administrador; de lo contrario, toda la información de la cuenta se perderá.", "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación del administrador incorrecta. Por favor verificala e intentalo de nuevo.", "Backend does not support password change, but the encryption of the account key was updated." : "El backend no admite el cambio de contraseña, pero se actualizó la clave de cifrado del usuario.", - "Administrator documentation" : "Documentación del adminsitrador", + "Administrator documentation" : "Documentación del administrador", "User documentation" : "Documentación del usuario", "Nextcloud help overview" : "Vista general de la ayuda de Nextcloud", "Invalid SMTP password." : "Constraseña SMTP inválida. ", @@ -120,7 +120,7 @@ "Mobile & desktop" : "Móvil & escritorio", "Email server" : "Servidor de correo electrónico", "Mail Providers" : "Proveedores de correo electrónico", - "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "El proveedor de correo permite enviar correos electrónicos directamente a través de la cuenta de correo personal del usuario. En la actualidad, esta funcionalidad se limita a las invitaciones de calendario. Requiere Nextcloud Mail 4.1 y una cuenta de correo electrónico en Nextcloud Mail que coincida con la dirección de correo electrónico del usuario en Nextcloud.", + "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "El proveedor de correo electrónico permite enviar correos electrónicos directamente a través de la cuenta de correo personal del usuario. En la actualidad, esta funcionalidad se limita a las invitaciones de calendario. Requiere Nextcloud Mail 4.1 y una cuenta de correo electrónico en Nextcloud Mail que coincida con la dirección de correo electrónico del usuario en Nextcloud.", "Send emails using" : "Enviar correos electrónicos usando", "User's email account" : "Cuenta de correo electrónico del usuario", "System email account" : "Cuenta de correo electrónico del sistema", @@ -227,10 +227,21 @@ "Your web server is not properly set up to resolve %1$s.\nThis is most likely related to a web server configuration that was not updated to deliver this folder directly.\nPlease compare your configuration against the shipped rewrite rules in \".htaccess\" for Apache or the provided one in the documentation for Nginx.\nOn Nginx those are typically the lines starting with \"location ~\" that need an update." : "Tu servidor web no está configurado correctamente para resolver %1$s.\nEsto probablemente se debe a que la configuración del servidor web no se actualizó para entregar esta carpeta directamente.\nPor favor, compará tu configuración con las reglas de re-escritura por defecto en \".htaccess\" para Apache o la que se proporcionó en la documentación de Nginx\nEn Nginx las líneas que empiezan con \"location ~\" son las que habitualmente necesitan actualizarse.", "Overwrite CLI URL" : "Sobreescribir el URL del CLI", "The \"overwrite.cli.url\" option in your config.php is correctly set to \"%s\"." : "La opción \"overwrite.cli.url\" en tu config.php está correctamente establecida como \"%s\".", + "PHP default charset" : "Conjunto de caracteres predeterminado de PHP", + "PHP configuration option \"default_charset\" should be UTF-8" : "La opción de configuración de PHP \"default_charset\" debería ser UTF-8", "Freetype" : "FreeType", "Supported" : "Soportado", "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Tu PHP no tiene soporte FreeType, lo que resulta en fallas en las imágenes de perfil y en la interfaz de configuraciones.", + "PHP file size upload limit" : "Límite de carga de archivos en PHP", + "The PHP upload_max_filesize is too low. A size of at least %1$s is recommended. Current value: %2$s." : "El upload_max_filesize de PHP es demasiado bajo. Se recomienda un tamaño de al menos %1$s. Valor actual: %2$s.", + "The PHP post_max_size is too low. A size of at least %1$s is recommended. Current value: %2$s." : "El post_max_size de PHP es demasiado bajo. Se recomienda un tamaño de al menos %1$s. Valor actual: %2$s.", + "The PHP max_input_time is too low. A time of at least %1$s is recommended. Current value: %2$s." : "El max_input_time de PHP es demasiado bajo. Se recomienda un tiempo de al menos %1$s. Valor actual: %2$s.", + "The PHP max_execution_time is too low. A time of at least %1$s is recommended. Current value: %2$s." : "El max_execution_time de PHP es demasiado bajo. Se recomienda un tiempo de al menos %1$s. Valor actual: %2$s.", + "PHP memory limit" : "Límite de memoria de PHP", + "The PHP memory limit is below the recommended value of %s. Some features or apps - including the Updater - may not function properly." : "El límite de memoria PHP está por debajo del valor recomendado de %s. Es posible que algunas funciones o aplicaciones -incluyendo el Actualizador- no funcionen correctamente.", + "PHP modules" : "Módulos de PHP", "required for SFTP storage and recommended for WebAuthn performance" : "necesario para el almacenamiento SFTP y recomendado para el rendimiento de WebAuthn", + "PHP opcache" : "opcache de PHP", "Architecture" : "Arquitectura", "64-bit" : "64 bits", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Su base de datos no puede correr con el nivel de aislamiento de transacción de \"READ COMMITTED\". Puede causar problemas cuando mútiples acciones sean ejecutadas en paralelo.", @@ -258,6 +269,11 @@ "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Failed to create group" : "No se pudo crear el grupo", + "Creating group…" : "Creando grupo…", + "Create group" : "Crear grupo", + "Group name" : "Nombre del grupo", + "Please enter a valid group name" : "Ingresá un nombre de grupo válido", "Loading" : "Cargando", "Type" : "Escribir", "Display Name" : "Nombre a desplegar", @@ -406,18 +422,55 @@ "Avatar" : "Avatar", "Account name" : "Nombre de la cuenta", "Group admin for" : "Administrador del grupo para", + "Account backend" : "Backend de la cuenta", "Storage location" : "Úbicación del almacenamiento", + "First login" : "Primer inicio de sesión", "Last login" : "Último inicio de sesión", "Account actions" : "Acciones de la cuenta", + "{size} used" : "{size} usados", "Delete account" : "Borrar cuenta", "Disconnect all devices and delete local data" : "Desconectar todos los dispositivos y eliminar los datos locales", + "Disable account" : "Deshabilitar la cuenta", + "Enable account" : "Habilitar la cuenta", + "Resend welcome email" : "Volver a enviar el correo electrónico de bienvenida", "In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet." : "En caso de pérdida del dispositivo o salida de la organización, esto puede borrar de forma remota los datos de Nextcloud de todos los dispositivos asociados con {userid}. Funciona únicamente si los dispositivos están conectados a Internet.", "Remote wipe of devices" : "Borrado remoto de dispositivos", "Wipe {userid}'s devices" : "Borrar los dispositivos de {userid}", "Wiped {userid}'s devices" : "Se borraron los dispositivos de {userid}", + "Failed to update line manager" : "No se pudo actualizar el superior inmediato", + "Fully delete {userid}'s account including all their personal files, app data, etc." : "Eliminar completamente la cuenta de {userid}, incluyendo todos sus archivos personales, datos de las aplicaciones, etc.", + "Account deletion" : "Eliminación de la cuenta", + "Delete {userid}'s account" : "Eliminar la cuenta de {userid}", + "Display name was successfully changed" : "Se cambió correctamente el nombre para mostrar", + "Password can't be empty" : "La contraseña no puede estar en blanco", + "Password was successfully changed" : "La contraseña se cambió correctamente", + "Email can't be empty" : "El correo electrónico no puede estar en blanco", + "Email was successfully changed" : "El correo electrónico se cambió correctamente", + "Welcome mail sent!" : "¡Correo electrónico de bienvenida enviado!", + "Loading account …" : "Cargando cuenta ...", + "Change display name" : "Cambiar el nombre a mostrar", + "Set new password" : "Establecer nueva contraseña", + "You do not have permissions to see the details of this account" : "No tenés permisos para ver los detalles de esta cuenta", + "Set new email address" : "Establecer nueva dirección de correo electrónico", + "Add account to group" : "Agregar cuenta al grupo", + "Set account as admin for" : "Establecer cuenta como administrador de", + "Select account quota" : "Seleccionar la cuota de la cuenta", + "Set the language" : "Establecer el lenguaje", + "Toggle account actions menu" : "Alternar menú de acciones de cuenta", "Done" : "Terminado", "Edit" : "Editar", + "Account management settings" : "Configuración de administración de cuentas", + "Visibility" : "Visibilidad", + "Show language" : "Mostrar lenguaje", + "Show account backend" : "Mostrar el backend de la cuenta", + "Show storage path" : "Mostrar la ruta de almacenamiento", + "Show first login" : "Mostrar primer inicio de sesión", "Show last login" : "Mostrar último inicio de sesión", + "Sorting" : "Orden", + "The system config enforces sorting the groups by name. This also disables showing the member count." : "La configuración de sistema fuerza a que los grupos sean ordenados por nombre. Esto también impide mostrar la cantidad de miembros.", + "Group list sorting" : "Ordenamiento de la lista de grupos", + "By member count" : "Por cantidad de miembros", + "By name" : "Por nombre", "Send email" : "Enviar correo electrónico", "Send welcome email to new accounts" : "Enviar un correo electrónico de bienvenida a usuarios nuevos", "Defaults" : "Valores por defecto", @@ -435,14 +488,17 @@ "The following devices are configured for your account:" : "Los siguientes dispositivos están configurados para tu cuenta:", "Your browser does not support WebAuthn." : "Tu navegador no admite WebAuthn.", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, usted puede hacer ajustes finos al comportamiento de compartir. Favor de consultar la documentación para más información. ", + "You need to enable the File sharing App." : "Tenés que habilitar la aplicación Compartir archivos.", "App Store" : "Tienda de aplicaciones", "Loading app list" : "Cargando la lista de aplicaciones", + "Loading categories" : "Cargando categorías", + "Developer documentation ↗" : "Documentación del desarrollador ↗", + "Version {version}, {license}-licensed" : "Versión {version}, bajo licencia {license}", + "Version {version}" : "Versión {version}", + "All accounts" : "Todas las cuentas", "Admins" : "Administradores", + "Account group: {group}" : "Grupo de cuentas: {group}", "Account management" : "Administración de cuentas", - "Creating group…" : "Creando grupo…", - "Create group" : "Crear grupo", - "Group name" : "Nombre del grupo", - "Please enter a valid group name" : "Ingresá un nombre de grupo válido", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Por razones de rendimiento, cuando actives el cifrado en un servidor Nextcloud sólo se cifrarán los archivos nuevos y modificados.", @@ -463,6 +519,9 @@ "Profile visibility" : "Visibilidad del perfil", "Locale" : "Configuración regional", "First day of week" : "Primer día de la semana", + "Not available as this property is required for core functionality including file sharing and calendar invitations" : "No está disponible porque esta propiedad es necesaria para la funcionalidad básica, incluyendo el compartir archivos y las invitaciones de calendario", + "Not available as federation has been disabled for your account, contact your system administration if you have any questions" : "No está disponible porque la federación está deshabilitada para tu cuenta. Ponete en contacto con el administrador del sistema si tenés alguna duda.", + "Not available as publishing account specific data to the lookup server is not allowed, contact your system administration if you have any questions" : "No está disponible porque no está permitida la publicación de datos específicos de cuentas en el servidor de búsqueda. Ponete en contacto con el administrador del sistema si tenés alguna duda", "Discover" : "Descubrí", "Your apps" : "Tus aplicaciones", "Active apps" : "Aplicaciones activas", @@ -475,14 +534,32 @@ "Show to logged in accounts only" : "Visible únicamente para usuarios conectados", "Hide" : "Invisible", "Manually installed apps cannot be updated" : "Las aplicaciones instaladas manualmente no pueden ser actualizadas", + "{progress}% Deploying …" : "Desplegando {progress}%", + "{progress}% Initializing …" : "Inicializando {progress}%", + "Health checking" : "Revisión de salud del servidor", "Deploy and Enable" : "Desplegar y habilitar", "Download and enable" : "Descargar y habilitar", "Disable" : "Deshabilitar", "Allow untested app" : "Permitir aplicación no probada", + "The app will be downloaded from the App Store" : "La aplicación será descargada de la tienda de aplicaciones", + "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." : "Esta aplicación no está marcada como compatible con tu versión de Nextcloud. Si continuás podrás instalar la aplicación, pero tené en cuenta que podría no funcionar según lo esperado.", "Unknown" : "Desconocido", "Never" : "Nunca", + "Could not register device: Network error" : "No se pudo registrar el dispositivo: error de red", + "Could not register device: Probably already registered" : "No se pudo registrar el dispositivo: es probable que ya esté registrado", + "Could not register device" : "No se pudo registrar el dispositivo", + "An error occurred during the request. Unable to proceed." : "Ocurrió un error durante la solicitud. No se puede continuar.", + "The app has been enabled but needs to be updated." : "La aplicación ha sido habilitada pero necesita actualizarse.", + "Error: This app cannot be enabled because it makes the server unstable" : "Error: Esta aplicación no se puede habilitar porque genera inestabilidad en el servidor", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación está habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "Do you really want to wipe your data from this device?" : "¿Estás seguro de querer borrar tus datos de este dispositivo?", + "Confirm wipe" : "Confirmar borrado", "Could not delete the app token" : "No se pudo eliminar el token de aplicación", + "Error while wiping the device with the token" : "Error al borrar el dispositivo con el token", + "Error while updating device token name" : "Error al actualizar el nombre del token de dispositivo", + "Error while updating device token scope" : "Error al actualizar el alcance del token de dispositivo", + "Could not set group sorting" : "No se pudo establecer el ordenamiento de grupos", + "There were too many requests from your network. Retry later or contact your administrator if this is an error." : "Hubo demasiadas solicitudes desde tu red. Volvé a intentarlo más tarde o ponete en contacto con tu administrador si se trata de un error.", "Error" : "Error", "Account documentation" : "Documentación de la cuenta", "Administration documentation" : "Documentación de administración", @@ -504,10 +581,18 @@ "Authentication" : "Autenticación", "Authentication required" : "Autenticación requerida", "Credentials" : "Credenciales", + "SMTP Login" : "Inicio de sesión SMTP", "SMTP Password" : "Contraseña SMTP", "Save" : "Guardar", + "Test and verify email settings" : "Probar y verificar la configuración del correo electrónico", "Security & setup warnings" : "Advertencias de seguridad y configuración", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Es importante para la seguridad y rendimiento de tu instancia que todo esté configurado correctamente. Para ayudarte con eso estamos haciendo algunas comprobaciones automáticas. Consultá la documentación para mayor información.", "All checks passed." : "Todas las verificaciones fueron exitosas.", + "There are some errors regarding your setup." : "Hay algunos errores en tu configuración.", + "There are some warnings regarding your setup." : "Hay algunas advertencias en tu configuración.", + "Checking for system and security issues." : "Comprobando problemas del sistema y de seguridad.", + "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>." : "Por favor, volvé a consultar las <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guías de instalación ↗</a>, y comprobá posibles errores y advertencias en el <a href=\"%2$s\">registro</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Revisá la seguridad de tu Nextcloud usando <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nuestro escáner de seguridad ↗</a>.", "Reasons to use Nextcloud in your organization" : "Motivos para usar Nextcloud en tu organización", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", "Like our Facebook page" : "Me gusta en nuestra página de Facebook", @@ -518,6 +603,11 @@ "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Esta versión comunitaria de Nextcloud no cuenta con soporte y las notificaciones instantáneas no están disponibles.", "Use a second factor besides your password to increase security for your account." : "Usá un segundo factor además de tu contraseña para aumentar la seguridad de tu cuenta.", "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 usás aplicaciones de terceros para conectarte a Nextcloud, por favor asegurate de crear y configurar una contraseña de app para cada una antes de activar la autenticación en dos pasos.", + "To allow this check to run you have to make sure that your webserver can connect to itself. Therefor it must be able to resolve and connect to at least one its `trusted_domains` or the `overwrite.cli.url`." : "Para permitir que este chequeo se lleve a cabo, tenés que asegurarte de que tu servidor pueda conectarse a sí mismo. Por tanto, este debe poder resolver y conectarse a alguno de sus `trusted_domains` o al url definido en `overwrite.cli.url`", + "Missing optional index \"%s\" in table \"%s\"." : "Falta el índice opcional \"%s\" en la tabla \"%s\".", + "The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically. By running \"occ db:add-missing-indices\" those missing indexes could be added manually while the instance keeps running. Once the indexes are added queries to those tables are usually much faster." : "A la base de datos le faltan algunos índices. Dado que agregar índices a tablas grandes puede llevar bastante tiempo, no se han agregado automáticamente. Ejecutando \"occ db:add-missing-indices\" se pueden agregar manualmente los índices faltantes mientras la instancia sigue corriendo. Una vez agregados los índices, las consultas a esas tablas suelen ser mucho más rápidas.", + "File locking" : "Bloqueo de archivos", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems." : "El bloqueo transaccional de archivos está desactivado, lo que podría ocasionar problemas de race conditions. Habilitá \"filelocking.enabled\" en config.php para evitar estos problemas.", "for WebAuthn passwordless login" : "para el inicio de sesión sin contraseña de WebAuthn", "for WebAuthn passwordless login, and SFTP storage" : "para el inicio de sesión sin contraseña de WebAuthn y el almacenamiento SFTP", "Your biography" : "Tu biografía", diff --git a/apps/settings/l10n/es_CL.js b/apps/settings/l10n/es_CL.js index 4ae2064e019..c932220248f 100644 --- a/apps/settings/l10n/es_CL.js +++ b/apps/settings/l10n/es_CL.js @@ -104,6 +104,7 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Daemon" : "Demonio", "Type" : "Tipo", @@ -188,7 +189,6 @@ OC.L10N.register( "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_CL.json b/apps/settings/l10n/es_CL.json index 16fa08f1098..62934bb093e 100644 --- a/apps/settings/l10n/es_CL.json +++ b/apps/settings/l10n/es_CL.json @@ -102,6 +102,7 @@ "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Daemon" : "Demonio", "Type" : "Tipo", @@ -186,7 +187,6 @@ "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_CO.js b/apps/settings/l10n/es_CO.js index e0f574aa4c3..5d8a9eb6dac 100644 --- a/apps/settings/l10n/es_CO.js +++ b/apps/settings/l10n/es_CO.js @@ -104,6 +104,7 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Daemon" : "Demonio", "Type" : "Tipo", "Display Name" : "Nombre a desplegar", @@ -186,7 +187,6 @@ OC.L10N.register( "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_CO.json b/apps/settings/l10n/es_CO.json index 3d17dbb8134..84c9dde44b9 100644 --- a/apps/settings/l10n/es_CO.json +++ b/apps/settings/l10n/es_CO.json @@ -102,6 +102,7 @@ "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Daemon" : "Demonio", "Type" : "Tipo", "Display Name" : "Nombre a desplegar", @@ -184,7 +185,6 @@ "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_CR.js b/apps/settings/l10n/es_CR.js index d7292eb89d9..69c1a438ed6 100644 --- a/apps/settings/l10n/es_CR.js +++ b/apps/settings/l10n/es_CR.js @@ -104,6 +104,7 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Daemon" : "Demonio", "Display Name" : "Nombre a desplegar", @@ -186,7 +187,6 @@ OC.L10N.register( "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_CR.json b/apps/settings/l10n/es_CR.json index 9a0c5136a47..aafa425f83e 100644 --- a/apps/settings/l10n/es_CR.json +++ b/apps/settings/l10n/es_CR.json @@ -102,6 +102,7 @@ "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Daemon" : "Demonio", "Display Name" : "Nombre a desplegar", @@ -184,7 +185,6 @@ "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_DO.js b/apps/settings/l10n/es_DO.js index 985f152e70b..1b31f277732 100644 --- a/apps/settings/l10n/es_DO.js +++ b/apps/settings/l10n/es_DO.js @@ -104,6 +104,7 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Daemon" : "Demonio", "Display Name" : "Nombre a desplegar", "Learn more" : "Conoce más", @@ -185,7 +186,6 @@ OC.L10N.register( "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_DO.json b/apps/settings/l10n/es_DO.json index cc98357e935..fcc3f24420a 100644 --- a/apps/settings/l10n/es_DO.json +++ b/apps/settings/l10n/es_DO.json @@ -102,6 +102,7 @@ "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Daemon" : "Demonio", "Display Name" : "Nombre a desplegar", "Learn more" : "Conoce más", @@ -183,7 +184,6 @@ "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_EC.js b/apps/settings/l10n/es_EC.js index 13c70f1c63e..142948761a3 100644 --- a/apps/settings/l10n/es_EC.js +++ b/apps/settings/l10n/es_EC.js @@ -177,6 +177,8 @@ OC.L10N.register( "No apps found for your version" : "No se encontraron aplicaciones para tu versión", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplicación tiene una actualización disponible","%n aplicaciones tienen una actualización disponible","%n aplicaciones tienen una actualización disponible"], "_Update_::_Update all_" : ["Actualizar","Actualizar todo","Actualizar todo"], + "Group name" : "Nombre del grupo", + "Loading groups…" : "Cargando grupos...", "Loading" : "Cargando", "Daemon" : "Demonio", "Type" : "Tipo", @@ -379,7 +381,6 @@ OC.L10N.register( "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "You need to enable the File sharing App." : "Debes habilitar la aplicación Compartir archivos.", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_EC.json b/apps/settings/l10n/es_EC.json index 3e3b755e7a2..a24e1117084 100644 --- a/apps/settings/l10n/es_EC.json +++ b/apps/settings/l10n/es_EC.json @@ -175,6 +175,8 @@ "No apps found for your version" : "No se encontraron aplicaciones para tu versión", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplicación tiene una actualización disponible","%n aplicaciones tienen una actualización disponible","%n aplicaciones tienen una actualización disponible"], "_Update_::_Update all_" : ["Actualizar","Actualizar todo","Actualizar todo"], + "Group name" : "Nombre del grupo", + "Loading groups…" : "Cargando grupos...", "Loading" : "Cargando", "Daemon" : "Demonio", "Type" : "Tipo", @@ -377,7 +379,6 @@ "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "You need to enable the File sharing App." : "Debes habilitar la aplicación Compartir archivos.", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_GT.js b/apps/settings/l10n/es_GT.js index 9e3fd9a8f7e..db206ca98c9 100644 --- a/apps/settings/l10n/es_GT.js +++ b/apps/settings/l10n/es_GT.js @@ -104,6 +104,7 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Daemon" : "Demonio", "Type" : "Tipo", @@ -188,7 +189,6 @@ OC.L10N.register( "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_GT.json b/apps/settings/l10n/es_GT.json index e8f2d846143..0219ce7c120 100644 --- a/apps/settings/l10n/es_GT.json +++ b/apps/settings/l10n/es_GT.json @@ -102,6 +102,7 @@ "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Daemon" : "Demonio", "Type" : "Tipo", @@ -186,7 +187,6 @@ "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_HN.js b/apps/settings/l10n/es_HN.js index 96d2bd2c039..cc7466b70cd 100644 --- a/apps/settings/l10n/es_HN.js +++ b/apps/settings/l10n/es_HN.js @@ -99,6 +99,7 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Daemon" : "Demonio", "Type" : "Tipo", @@ -181,7 +182,6 @@ OC.L10N.register( "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_HN.json b/apps/settings/l10n/es_HN.json index 0270278cf9a..da2e6984a5e 100644 --- a/apps/settings/l10n/es_HN.json +++ b/apps/settings/l10n/es_HN.json @@ -97,6 +97,7 @@ "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Daemon" : "Demonio", "Type" : "Tipo", @@ -179,7 +180,6 @@ "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_MX.js b/apps/settings/l10n/es_MX.js index 2d1834c2573..20362a3ff4a 100644 --- a/apps/settings/l10n/es_MX.js +++ b/apps/settings/l10n/es_MX.js @@ -347,6 +347,11 @@ OC.L10N.register( "No apps found for your version" : "No se encontraron aplicaciones para tu versión", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplicación tiene una actualización disponible","%n aplicaciones tienen una actualización disponible","%n aplicaciones tienen una actualización disponible"], "_Update_::_Update all_" : ["Actualizar","Actualizar todo","Actualizar todo"], + "Failed to create group" : "No se pudo crear el grupo", + "Creating group…" : "Creando grupo...", + "Create group" : "Crear grupo", + "Group name" : "Nombre del grupo", + "Please enter a valid group name" : "Por favor, ingrese un nombre de grupo válido", "Could not load app discover section" : "No se pudo cargar la sección de descubrir aplicaciones", "Could not render element" : "No se pudo renderizar el elemento", "Nothing to show" : "Nada que mostrar", @@ -652,12 +657,7 @@ OC.L10N.register( "All accounts" : "Todas las cuentas", "Admins" : "Administradores", "Account group: {group}" : "Grupo de cuentas: {group}", - "Failed to create group" : "No se pudo crear el grupo", "Account management" : "Administración de cuentas", - "Creating group…" : "Creando grupo...", - "Create group" : "Crear grupo", - "Group name" : "Nombre del grupo", - "Please enter a valid group name" : "Por favor, ingrese un nombre de grupo válido", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_MX.json b/apps/settings/l10n/es_MX.json index a7c2f5fd9b4..4e724c41af4 100644 --- a/apps/settings/l10n/es_MX.json +++ b/apps/settings/l10n/es_MX.json @@ -345,6 +345,11 @@ "No apps found for your version" : "No se encontraron aplicaciones para tu versión", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplicación tiene una actualización disponible","%n aplicaciones tienen una actualización disponible","%n aplicaciones tienen una actualización disponible"], "_Update_::_Update all_" : ["Actualizar","Actualizar todo","Actualizar todo"], + "Failed to create group" : "No se pudo crear el grupo", + "Creating group…" : "Creando grupo...", + "Create group" : "Crear grupo", + "Group name" : "Nombre del grupo", + "Please enter a valid group name" : "Por favor, ingrese un nombre de grupo válido", "Could not load app discover section" : "No se pudo cargar la sección de descubrir aplicaciones", "Could not render element" : "No se pudo renderizar el elemento", "Nothing to show" : "Nada que mostrar", @@ -650,12 +655,7 @@ "All accounts" : "Todas las cuentas", "Admins" : "Administradores", "Account group: {group}" : "Grupo de cuentas: {group}", - "Failed to create group" : "No se pudo crear el grupo", "Account management" : "Administración de cuentas", - "Creating group…" : "Creando grupo...", - "Create group" : "Crear grupo", - "Group name" : "Nombre del grupo", - "Please enter a valid group name" : "Por favor, ingrese un nombre de grupo válido", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_NI.js b/apps/settings/l10n/es_NI.js index 2f14fe683f8..993679bc09e 100644 --- a/apps/settings/l10n/es_NI.js +++ b/apps/settings/l10n/es_NI.js @@ -99,6 +99,7 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Type" : "Tipo", "Display Name" : "Nombre a desplegar", @@ -180,7 +181,6 @@ OC.L10N.register( "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_NI.json b/apps/settings/l10n/es_NI.json index ef1ae3d2e57..11f292af0dc 100644 --- a/apps/settings/l10n/es_NI.json +++ b/apps/settings/l10n/es_NI.json @@ -97,6 +97,7 @@ "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Type" : "Tipo", "Display Name" : "Nombre a desplegar", @@ -178,7 +179,6 @@ "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_PA.js b/apps/settings/l10n/es_PA.js index 7f3fa9900d9..074dbf3d7d7 100644 --- a/apps/settings/l10n/es_PA.js +++ b/apps/settings/l10n/es_PA.js @@ -99,6 +99,7 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Type" : "Tipo", "Display Name" : "Nombre a desplegar", @@ -181,7 +182,6 @@ OC.L10N.register( "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_PA.json b/apps/settings/l10n/es_PA.json index 6a86161a5d6..e7a5edb32bb 100644 --- a/apps/settings/l10n/es_PA.json +++ b/apps/settings/l10n/es_PA.json @@ -97,6 +97,7 @@ "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Type" : "Tipo", "Display Name" : "Nombre a desplegar", @@ -179,7 +180,6 @@ "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_PE.js b/apps/settings/l10n/es_PE.js index d6381cf6edc..32a0f331dd7 100644 --- a/apps/settings/l10n/es_PE.js +++ b/apps/settings/l10n/es_PE.js @@ -99,6 +99,7 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Type" : "Tipo", "Display Name" : "Nombre a desplegar", "Learn more" : "Conoce más", @@ -180,7 +181,6 @@ OC.L10N.register( "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_PE.json b/apps/settings/l10n/es_PE.json index f3a66fe15de..86e2d0bb204 100644 --- a/apps/settings/l10n/es_PE.json +++ b/apps/settings/l10n/es_PE.json @@ -97,6 +97,7 @@ "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Type" : "Tipo", "Display Name" : "Nombre a desplegar", "Learn more" : "Conoce más", @@ -178,7 +179,6 @@ "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_PR.js b/apps/settings/l10n/es_PR.js index 7f3fa9900d9..074dbf3d7d7 100644 --- a/apps/settings/l10n/es_PR.js +++ b/apps/settings/l10n/es_PR.js @@ -99,6 +99,7 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Type" : "Tipo", "Display Name" : "Nombre a desplegar", @@ -181,7 +182,6 @@ OC.L10N.register( "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_PR.json b/apps/settings/l10n/es_PR.json index 6a86161a5d6..e7a5edb32bb 100644 --- a/apps/settings/l10n/es_PR.json +++ b/apps/settings/l10n/es_PR.json @@ -97,6 +97,7 @@ "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Type" : "Tipo", "Display Name" : "Nombre a desplegar", @@ -179,7 +180,6 @@ "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_PY.js b/apps/settings/l10n/es_PY.js index 40f4ce9edf0..30d67c0650b 100644 --- a/apps/settings/l10n/es_PY.js +++ b/apps/settings/l10n/es_PY.js @@ -99,6 +99,7 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Type" : "Tipo", "Display Name" : "Nombre a desplegar", @@ -181,7 +182,6 @@ OC.L10N.register( "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_PY.json b/apps/settings/l10n/es_PY.json index e9eea24eef5..5b6159b1261 100644 --- a/apps/settings/l10n/es_PY.json +++ b/apps/settings/l10n/es_PY.json @@ -97,6 +97,7 @@ "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Type" : "Tipo", "Display Name" : "Nombre a desplegar", @@ -179,7 +180,6 @@ "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_SV.js b/apps/settings/l10n/es_SV.js index 9e3fd9a8f7e..db206ca98c9 100644 --- a/apps/settings/l10n/es_SV.js +++ b/apps/settings/l10n/es_SV.js @@ -104,6 +104,7 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Daemon" : "Demonio", "Type" : "Tipo", @@ -188,7 +189,6 @@ OC.L10N.register( "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_SV.json b/apps/settings/l10n/es_SV.json index e8f2d846143..0219ce7c120 100644 --- a/apps/settings/l10n/es_SV.json +++ b/apps/settings/l10n/es_SV.json @@ -102,6 +102,7 @@ "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Loading" : "Cargando", "Daemon" : "Demonio", "Type" : "Tipo", @@ -186,7 +187,6 @@ "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_UY.js b/apps/settings/l10n/es_UY.js index 1e078e0fdef..01ae7d8d062 100644 --- a/apps/settings/l10n/es_UY.js +++ b/apps/settings/l10n/es_UY.js @@ -99,6 +99,7 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Type" : "Tipo", "Display Name" : "Nombre a desplegar", "Learn more" : "Conoce más", @@ -179,7 +180,6 @@ OC.L10N.register( "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/es_UY.json b/apps/settings/l10n/es_UY.json index 7b664074bc0..25239b016c4 100644 --- a/apps/settings/l10n/es_UY.json +++ b/apps/settings/l10n/es_UY.json @@ -97,6 +97,7 @@ "Level" : "Nivel", "Actions" : "Acciones", "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Group name" : "Nombre del grupo", "Type" : "Tipo", "Display Name" : "Nombre a desplegar", "Learn more" : "Conoce más", @@ -177,7 +178,6 @@ "Unnamed device" : "Dispositivo sin nombre", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", "Admins" : "Administradores", - "Group name" : "Nombre del grupo", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Location" : "Ubicación", diff --git a/apps/settings/l10n/et_EE.js b/apps/settings/l10n/et_EE.js index 82c56258094..fdcfeb0ea4b 100644 --- a/apps/settings/l10n/et_EE.js +++ b/apps/settings/l10n/et_EE.js @@ -87,7 +87,14 @@ OC.L10N.register( "Unlimited" : "Piiramatult", "Verifying" : "Kontrollin", "Disabled" : "Keelatud", + "Logging level" : "Logitase", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ei tundu olevat süsteemsete keskkonnamuutujate pärimiseks korrektselt seadistatud. Test getenv(\"PATH\") abil tagastab tühja vastuse.", + "required for SFTP storage and recommended for WebAuthn performance" : "nõutav SFTP andmeruumi jaoks ja soovitatav WebAuthn jõudluse jaoks", + "PHP version" : "PHP versioon", + "Push service" : "Tõuketeenus", + "Valid enterprise license" : "Suurfirmade litsents", + "Free push service" : "Tasuta tõuketeenus", + "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 {link}." : "See on mittetoetatud Nextcloudi variant kogukonnale. Arvestades selle serveri parameetreid, pole jõudlus, töökindlus ja skaleeritavus garanteeritud. Meie tasuta teenuse ülekoormuse vältimiseks on tõuketeavituste arv piiratud. Nextcloud Enterprise versiooni eelistest loe siin: {link}.", "Nextcloud settings" : "Nextcloud seaded", "Enable" : "Lülita sisse", "None" : "Pole", @@ -100,6 +107,7 @@ OC.L10N.register( "Enforce password protection" : "Jõusta paroolikaitse", "Enforce expiration date" : "Sunnitud aegumise kuupäev", "This text will be shown on the public link upload page when the file list is hidden." : "Seda teksti näidatakse avaliku lingiga üleslaadimise lehel kui failide loend on peidetud.", + "Two-Factor Authentication" : "Kaheastmeline autentimine", "Limit to groups" : "Luba gruppidele", "Save changes" : "Salvesta muudatused", "Remove" : "Eemalda", @@ -110,11 +118,26 @@ OC.L10N.register( "Level" : "Tase", "Actions" : "Tegevused", "No apps found for your version" : "Sinu versiooni jaoks ei leitud ühtegi rakendust", + "Failed to load groups" : "Gruppe ei õnnestunud laadida", + "Group name" : "Grupi nimi", + "Search groups…" : "Otsi gruppe…", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Gruppide loend. Jõudluse mõttes ei ole kogu loend esimesel hetkel tervikuna nähtav. Uued grupid lisanduvad sedamööda, kui sa loendis edasi liigud.", + "Loading groups…" : "Laadin gruppe…", "Loading" : "Laadimine", "Type" : "Tüüp", "Display Name" : "Kuvatav nimi", + "Learn more" : "Lisateave", + "Environment variables" : "Keskonnamuutujad", + "Mounts" : "Haakepunktid", + "Read-only" : "Ainult lugemiseks", + "Remove mount" : "Eemalda haakepunkt", + "New mount" : "Uus haakepunkt", + "Confirm adding new mount" : "Kinnita uue haakepunkti lisamine", "Confirm" : "Kinnita", + "Cancel adding mount" : "Katkesta haakepunkti lisamine", "Cancel" : "Loobu", + "Add mount" : "Lisa haakepunkt", + "No mounts defined" : "Ühtegi haakepunkti pole määratletud", "Description" : "Kirjeldus", "View in store" : "Vaata poes", "Visit website" : "Külasta veebisaiti", @@ -128,6 +151,7 @@ OC.L10N.register( "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Sellel rakendusel pole määratud minimaalset Nextcloudi versiooni. See põhjustab tulevikus veateateid.", "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Sellel rakendusel pole määratud maksimaalset Nextcloudi versiooni. See põhjustab tulevikus veateateid.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Seda rakendust ei saa paigaldada, sest järgmised sõltuvusel ei ole täidetud:", + "Author" : "Autor", "Categories" : "Kategooriad", "Resources" : "Ressursid", "Documentation" : "Dokumentatsioon", @@ -151,16 +175,30 @@ OC.L10N.register( "Create new app password" : "Loo uus rakenduse parool", "Login" : "Logi sisse", "Password" : "Parool", - "Server-side encryption" : "Serveripoolne krüpteerimine", + "Unable to update server side encryption config" : "Serveripoolse krüptimise seadistusi ei õnnestu uuendada", + "Server-side encryption" : "Serveripoolne krüptimine", "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." : "Serveripoole krüpteerimine võimaldab serverisse üleslaetud faile krüpteerida. Sellega kaasnevad piirangud, näiteks jõudluskadu. Lülita see sisse ainult siis, kui vaja on.", - "Enable server-side encryption" : "Luba serveripoolne krüpteerimine", + "To encrypt all existing files run this OCC command:" : "Kõikide failide krüptimiseks käivita käsurealt see OCC-käsk:", + "Enable server-side encryption" : "Võta serveripoolne krüptimine kasutusele", + "Disabling server side encryption is only possible using OCC, please refer to the documentation." : "Serveripoolse krüptimise väljalülitamine on võimalik vaid käsureapõhise OCC-tarvikuga. Lisateavet leiad dokumentatsioonist.", "No encryption module loaded, please enable an encryption module in the app menu." : "Krüpteerimise moodulit pole laetud, palun luba krüpteerimise moodul rakenduste menüüs.", - "Select default encryption module:" : "Määra vaikimisi krüpteerimise moodul:", - "Enable encryption" : "Luba krüpteerimine", - "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." : "Ainult krüpteerimine ei garanteeri süsteemi turvalisust. Palun vaadake dokumentatsiooni, et teada saada kuidas krüpteerimise rakendus töötab ja näha toetatud kasutamisvõimalusi.", - "Be aware that encryption always increases the file size." : "Pane tähele, et krüpteerimine suurendab alati failide suurust.", - "This is the final warning: Do you really want to enable encryption?" : "See on viimane hoiatus: Kas oled kindel, et soovid krüpteerimise sisse lülitada?", + "Select default encryption module:" : "Määra vaikimisi krüptimise moodul:", + "Cancel encryption" : "Katkesta krüptimine", + "Enable encryption" : "Luba krüptimine", + "Confirm enabling encryption" : "Kinnita krüptimise kasutuselevõtmine", + "Please read carefully before activating server-side encryption:" : "Palun loe hoolikalt enne serveripoolse krüptimise kasutuselevõtmist:", + "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." : "Kui krüptimine on kasutusel, siis kõik sellest hetkest alates serverisse üleslaaditavad saavad olema serveris krüptitud kujul. Tulevikus on võimalik krüptimist välja lülitada vaid siis, kui kasutusel olev krüptimise lisamoodul seda võimaldab ja eeltingimused (nt taastevõtme olemasolu) on täidetud.", + "By default a master key for the whole instance will be generated. Please check if that level of access is compliant with your needs." : "Vaikimisi luuakse üldvõti kogu serveri jaoks. Palun kontrolli, kas sellest johtuvad ligipääsuõigused vastavad sinu vajadustele.", + "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." : "Ainult krüptimine ei taga süsteemi turvalisust. Saamaks teada kuidas krüptimise rakendus töötab ja mis kasutusjuhtumiteks ta on mõeldud, palun vaata dokumentatsiooni.", + "Be aware that encryption always increases the file size." : "Pane tähele, et krüptimine suurendab alati failide suurust.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Alati on hea mõte, kui varundad oma andmeid. Kui aga kasutusel on krüptimine, siis palun kontrolli, et lisaks andmetele on varundatud ka krüptovõtmed.", + "Refer to the admin documentation on how to manually also encrypt existing files." : "Süsteemihalduse juhendist leiad teavet kuidas saad käsitsi krüptida juba olemasolevaid faile.", + "This is the final warning: Do you really want to enable encryption?" : "See on viimane hoiatus: Kas oled kindel, et soovid krüptimise sisse lülitada?", + "Failed to remove group \"{group}\"" : "„{group}“ grupi eemaldamine ei õnnestunud", + "Please confirm the group removal" : "Palun kinnita grupi eemaldamine", + "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Sa oled eemaldamas gruppi „{group}“. Selles grupis olevad kasutajad aga JÄÄVAD kustutamata.", "Submit" : "Saada", + "Rename group" : "Muuda grupi nime", "Remove group" : "Eemalda grupp", "Current password" : "Praegune parool", "New password" : "Uus parool", @@ -195,6 +233,7 @@ OC.L10N.register( "Default language" : "Vaikekeel", "Common languages" : "Levinud keeled", "Loading accounts …" : "Kontode laadimine ...", + "Failed to search groups" : "Gruppe ei õnnestunud otsida", "New account" : "Uus kasutajakonto", "Display name" : "Kuvatav nimi", "Either password or email is required" : "Kas salasõna või e-posti aadress on kohustuslik", @@ -204,7 +243,11 @@ OC.L10N.register( "Quota" : "Mahupiir", "Set account quota" : "Määra kasutajakonto kvoot", "Language" : "Keel", + "_{userCount} account …_::_{userCount} accounts …_" : ["{userCount} kasutajakonto…","{userCount} kasutajakontot…"], + "_{userCount} account_::_{userCount} accounts_" : ["{userCount} kasutajakonto","{userCount} kasutajakontot"], + "Total rows summary" : "Ridade koondkokkuvõte", "Avatar" : "Avatar", + "Account name" : "Kasutajakonto nimi", "Group admin for" : "Grupi admin", "Storage location" : "Salvestusruumi asukoht", "First login" : "Esimene sisselogimine", @@ -212,6 +255,8 @@ OC.L10N.register( "{size} used" : "{size} kasutatud", "Delete account" : "Kustuta konto", "Resend welcome email" : "Saada tervituskiri uuesti", + "Failed to load groups with details" : "Gruppe koos üksikasjadega ei õnnestunud laadida", + "Failed to load subadmin groups with details" : "Alamgruppe koos üksikasjadega ei õnnestunud laadida", "Password can't be empty" : "Salasõna ei saa olla tühi", "Password was successfully changed" : "Salasõna muutmine õnnestus", "Email can't be empty" : "E-posti aadress ei saa olla tühi", @@ -227,7 +272,6 @@ OC.L10N.register( "Unnamed device" : "Nimetu seade", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Administraatorina saate jagamise valikuid täpselt seadistada. Lisateavet leiad dokumentatsioonist.", "Admins" : "Haldurid", - "Group name" : "Grupi nimi", "Sending…" : "Saadan...", "Email sent" : "E-kiri on saadetud", "Location" : "Asukoht", @@ -244,6 +288,7 @@ OC.L10N.register( "Disabled apps" : "Keelatud rakendused", "Updates" : "Uuendused", "App bundles" : "Rakenduste kogumikud", + "Featured apps" : "Esiletõstetud rakendused", "Hide" : "Peida", "Disable" : "Lülita välja", "Unknown" : "Teadmata", @@ -252,6 +297,7 @@ OC.L10N.register( "There were too many requests from your network. Retry later or contact your administrator if this is an error." : "Sinu võrgust tuli liiga palju päringuid. Proovi hiljem uuesti, või võta ühendust administraatoriga, kui tegu on veaga.", "Error" : "Viga", "Forum" : "Foorum", + "Legal notice" : "Juriidiline teave", "SSL" : "SSL", "Open documentation" : "Ava dokumentatsioon", "It is important to set up this server to be able to send emails, like for password reset and notifications." : "E-kirjad saatmise võimekus on olulile seadistada paroolide lähtestamiseks ja teavituste saatmiseks.", @@ -268,6 +314,8 @@ OC.L10N.register( "Security & setup warnings" : "Turva- ja paigalduse hoiatused", "All checks passed." : "Kõik kontrollid on läbitud.", "New user" : "Uus kasutaja", + "_{userCount} user …_::_{userCount} users …_" : ["{userCount} kasutaja…","{userCount} kasutajat…"], + "_{userCount} user_::_{userCount} users_" : ["{userCount} kasutaja","{userCount} kasutajat"], "Username" : "Kasutajanimi", "User backend" : "Kasutaja taustarakendus" }, diff --git a/apps/settings/l10n/et_EE.json b/apps/settings/l10n/et_EE.json index 7ec338f7b5f..d6c0eed5761 100644 --- a/apps/settings/l10n/et_EE.json +++ b/apps/settings/l10n/et_EE.json @@ -85,7 +85,14 @@ "Unlimited" : "Piiramatult", "Verifying" : "Kontrollin", "Disabled" : "Keelatud", + "Logging level" : "Logitase", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP ei tundu olevat süsteemsete keskkonnamuutujate pärimiseks korrektselt seadistatud. Test getenv(\"PATH\") abil tagastab tühja vastuse.", + "required for SFTP storage and recommended for WebAuthn performance" : "nõutav SFTP andmeruumi jaoks ja soovitatav WebAuthn jõudluse jaoks", + "PHP version" : "PHP versioon", + "Push service" : "Tõuketeenus", + "Valid enterprise license" : "Suurfirmade litsents", + "Free push service" : "Tasuta tõuketeenus", + "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 {link}." : "See on mittetoetatud Nextcloudi variant kogukonnale. Arvestades selle serveri parameetreid, pole jõudlus, töökindlus ja skaleeritavus garanteeritud. Meie tasuta teenuse ülekoormuse vältimiseks on tõuketeavituste arv piiratud. Nextcloud Enterprise versiooni eelistest loe siin: {link}.", "Nextcloud settings" : "Nextcloud seaded", "Enable" : "Lülita sisse", "None" : "Pole", @@ -98,6 +105,7 @@ "Enforce password protection" : "Jõusta paroolikaitse", "Enforce expiration date" : "Sunnitud aegumise kuupäev", "This text will be shown on the public link upload page when the file list is hidden." : "Seda teksti näidatakse avaliku lingiga üleslaadimise lehel kui failide loend on peidetud.", + "Two-Factor Authentication" : "Kaheastmeline autentimine", "Limit to groups" : "Luba gruppidele", "Save changes" : "Salvesta muudatused", "Remove" : "Eemalda", @@ -108,11 +116,26 @@ "Level" : "Tase", "Actions" : "Tegevused", "No apps found for your version" : "Sinu versiooni jaoks ei leitud ühtegi rakendust", + "Failed to load groups" : "Gruppe ei õnnestunud laadida", + "Group name" : "Grupi nimi", + "Search groups…" : "Otsi gruppe…", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Gruppide loend. Jõudluse mõttes ei ole kogu loend esimesel hetkel tervikuna nähtav. Uued grupid lisanduvad sedamööda, kui sa loendis edasi liigud.", + "Loading groups…" : "Laadin gruppe…", "Loading" : "Laadimine", "Type" : "Tüüp", "Display Name" : "Kuvatav nimi", + "Learn more" : "Lisateave", + "Environment variables" : "Keskonnamuutujad", + "Mounts" : "Haakepunktid", + "Read-only" : "Ainult lugemiseks", + "Remove mount" : "Eemalda haakepunkt", + "New mount" : "Uus haakepunkt", + "Confirm adding new mount" : "Kinnita uue haakepunkti lisamine", "Confirm" : "Kinnita", + "Cancel adding mount" : "Katkesta haakepunkti lisamine", "Cancel" : "Loobu", + "Add mount" : "Lisa haakepunkt", + "No mounts defined" : "Ühtegi haakepunkti pole määratletud", "Description" : "Kirjeldus", "View in store" : "Vaata poes", "Visit website" : "Külasta veebisaiti", @@ -126,6 +149,7 @@ "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Sellel rakendusel pole määratud minimaalset Nextcloudi versiooni. See põhjustab tulevikus veateateid.", "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Sellel rakendusel pole määratud maksimaalset Nextcloudi versiooni. See põhjustab tulevikus veateateid.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Seda rakendust ei saa paigaldada, sest järgmised sõltuvusel ei ole täidetud:", + "Author" : "Autor", "Categories" : "Kategooriad", "Resources" : "Ressursid", "Documentation" : "Dokumentatsioon", @@ -149,16 +173,30 @@ "Create new app password" : "Loo uus rakenduse parool", "Login" : "Logi sisse", "Password" : "Parool", - "Server-side encryption" : "Serveripoolne krüpteerimine", + "Unable to update server side encryption config" : "Serveripoolse krüptimise seadistusi ei õnnestu uuendada", + "Server-side encryption" : "Serveripoolne krüptimine", "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." : "Serveripoole krüpteerimine võimaldab serverisse üleslaetud faile krüpteerida. Sellega kaasnevad piirangud, näiteks jõudluskadu. Lülita see sisse ainult siis, kui vaja on.", - "Enable server-side encryption" : "Luba serveripoolne krüpteerimine", + "To encrypt all existing files run this OCC command:" : "Kõikide failide krüptimiseks käivita käsurealt see OCC-käsk:", + "Enable server-side encryption" : "Võta serveripoolne krüptimine kasutusele", + "Disabling server side encryption is only possible using OCC, please refer to the documentation." : "Serveripoolse krüptimise väljalülitamine on võimalik vaid käsureapõhise OCC-tarvikuga. Lisateavet leiad dokumentatsioonist.", "No encryption module loaded, please enable an encryption module in the app menu." : "Krüpteerimise moodulit pole laetud, palun luba krüpteerimise moodul rakenduste menüüs.", - "Select default encryption module:" : "Määra vaikimisi krüpteerimise moodul:", - "Enable encryption" : "Luba krüpteerimine", - "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." : "Ainult krüpteerimine ei garanteeri süsteemi turvalisust. Palun vaadake dokumentatsiooni, et teada saada kuidas krüpteerimise rakendus töötab ja näha toetatud kasutamisvõimalusi.", - "Be aware that encryption always increases the file size." : "Pane tähele, et krüpteerimine suurendab alati failide suurust.", - "This is the final warning: Do you really want to enable encryption?" : "See on viimane hoiatus: Kas oled kindel, et soovid krüpteerimise sisse lülitada?", + "Select default encryption module:" : "Määra vaikimisi krüptimise moodul:", + "Cancel encryption" : "Katkesta krüptimine", + "Enable encryption" : "Luba krüptimine", + "Confirm enabling encryption" : "Kinnita krüptimise kasutuselevõtmine", + "Please read carefully before activating server-side encryption:" : "Palun loe hoolikalt enne serveripoolse krüptimise kasutuselevõtmist:", + "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." : "Kui krüptimine on kasutusel, siis kõik sellest hetkest alates serverisse üleslaaditavad saavad olema serveris krüptitud kujul. Tulevikus on võimalik krüptimist välja lülitada vaid siis, kui kasutusel olev krüptimise lisamoodul seda võimaldab ja eeltingimused (nt taastevõtme olemasolu) on täidetud.", + "By default a master key for the whole instance will be generated. Please check if that level of access is compliant with your needs." : "Vaikimisi luuakse üldvõti kogu serveri jaoks. Palun kontrolli, kas sellest johtuvad ligipääsuõigused vastavad sinu vajadustele.", + "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." : "Ainult krüptimine ei taga süsteemi turvalisust. Saamaks teada kuidas krüptimise rakendus töötab ja mis kasutusjuhtumiteks ta on mõeldud, palun vaata dokumentatsiooni.", + "Be aware that encryption always increases the file size." : "Pane tähele, et krüptimine suurendab alati failide suurust.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Alati on hea mõte, kui varundad oma andmeid. Kui aga kasutusel on krüptimine, siis palun kontrolli, et lisaks andmetele on varundatud ka krüptovõtmed.", + "Refer to the admin documentation on how to manually also encrypt existing files." : "Süsteemihalduse juhendist leiad teavet kuidas saad käsitsi krüptida juba olemasolevaid faile.", + "This is the final warning: Do you really want to enable encryption?" : "See on viimane hoiatus: Kas oled kindel, et soovid krüptimise sisse lülitada?", + "Failed to remove group \"{group}\"" : "„{group}“ grupi eemaldamine ei õnnestunud", + "Please confirm the group removal" : "Palun kinnita grupi eemaldamine", + "You are about to remove the group \"{group}\". The accounts will NOT be deleted." : "Sa oled eemaldamas gruppi „{group}“. Selles grupis olevad kasutajad aga JÄÄVAD kustutamata.", "Submit" : "Saada", + "Rename group" : "Muuda grupi nime", "Remove group" : "Eemalda grupp", "Current password" : "Praegune parool", "New password" : "Uus parool", @@ -193,6 +231,7 @@ "Default language" : "Vaikekeel", "Common languages" : "Levinud keeled", "Loading accounts …" : "Kontode laadimine ...", + "Failed to search groups" : "Gruppe ei õnnestunud otsida", "New account" : "Uus kasutajakonto", "Display name" : "Kuvatav nimi", "Either password or email is required" : "Kas salasõna või e-posti aadress on kohustuslik", @@ -202,7 +241,11 @@ "Quota" : "Mahupiir", "Set account quota" : "Määra kasutajakonto kvoot", "Language" : "Keel", + "_{userCount} account …_::_{userCount} accounts …_" : ["{userCount} kasutajakonto…","{userCount} kasutajakontot…"], + "_{userCount} account_::_{userCount} accounts_" : ["{userCount} kasutajakonto","{userCount} kasutajakontot"], + "Total rows summary" : "Ridade koondkokkuvõte", "Avatar" : "Avatar", + "Account name" : "Kasutajakonto nimi", "Group admin for" : "Grupi admin", "Storage location" : "Salvestusruumi asukoht", "First login" : "Esimene sisselogimine", @@ -210,6 +253,8 @@ "{size} used" : "{size} kasutatud", "Delete account" : "Kustuta konto", "Resend welcome email" : "Saada tervituskiri uuesti", + "Failed to load groups with details" : "Gruppe koos üksikasjadega ei õnnestunud laadida", + "Failed to load subadmin groups with details" : "Alamgruppe koos üksikasjadega ei õnnestunud laadida", "Password can't be empty" : "Salasõna ei saa olla tühi", "Password was successfully changed" : "Salasõna muutmine õnnestus", "Email can't be empty" : "E-posti aadress ei saa olla tühi", @@ -225,7 +270,6 @@ "Unnamed device" : "Nimetu seade", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Administraatorina saate jagamise valikuid täpselt seadistada. Lisateavet leiad dokumentatsioonist.", "Admins" : "Haldurid", - "Group name" : "Grupi nimi", "Sending…" : "Saadan...", "Email sent" : "E-kiri on saadetud", "Location" : "Asukoht", @@ -242,6 +286,7 @@ "Disabled apps" : "Keelatud rakendused", "Updates" : "Uuendused", "App bundles" : "Rakenduste kogumikud", + "Featured apps" : "Esiletõstetud rakendused", "Hide" : "Peida", "Disable" : "Lülita välja", "Unknown" : "Teadmata", @@ -250,6 +295,7 @@ "There were too many requests from your network. Retry later or contact your administrator if this is an error." : "Sinu võrgust tuli liiga palju päringuid. Proovi hiljem uuesti, või võta ühendust administraatoriga, kui tegu on veaga.", "Error" : "Viga", "Forum" : "Foorum", + "Legal notice" : "Juriidiline teave", "SSL" : "SSL", "Open documentation" : "Ava dokumentatsioon", "It is important to set up this server to be able to send emails, like for password reset and notifications." : "E-kirjad saatmise võimekus on olulile seadistada paroolide lähtestamiseks ja teavituste saatmiseks.", @@ -266,6 +312,8 @@ "Security & setup warnings" : "Turva- ja paigalduse hoiatused", "All checks passed." : "Kõik kontrollid on läbitud.", "New user" : "Uus kasutaja", + "_{userCount} user …_::_{userCount} users …_" : ["{userCount} kasutaja…","{userCount} kasutajat…"], + "_{userCount} user_::_{userCount} users_" : ["{userCount} kasutaja","{userCount} kasutajat"], "Username" : "Kasutajanimi", "User backend" : "Kasutaja taustarakendus" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/settings/l10n/eu.js b/apps/settings/l10n/eu.js index 811cffa53ba..1698906f8c8 100644 --- a/apps/settings/l10n/eu.js +++ b/apps/settings/l10n/eu.js @@ -416,6 +416,12 @@ OC.L10N.register( "No apps found for your version" : "Ez dira aplikaziorik aurkitu zure bertsiorako", "_%n app has an update available_::_%n apps have an update available_" : ["Aplikazio %nek eguneraketa dauka prest.","%n aplikaziok eguneraketa daukate prest."], "_Update_::_Update all_" : ["Eguneratu","Eguneratu denak"], + "Failed to create group" : "Taldea sortzeak huts egin du", + "Creating group…" : "Taldea sortzen...", + "Create group" : "Sortu taldea", + "Group name" : "Taldearen izena", + "Please enter a valid group name" : "Mesedez, sartu baliozko talde baten izena", + "Loading groups…" : "Taldeak kargatzen...", "Could not load app discover section" : "Ezin izan da aplikazioen aurkikuntza atala kargatu", "Could not render element" : "Ezin izan da elementua errenderizatu", "Nothing to show" : "Ez dago ezer erakusteko", @@ -725,12 +731,7 @@ OC.L10N.register( "All accounts" : "Kontu guztiak", "Admins" : "Administratzaileak", "Account group: {group}" : "Kontuaren taldea: {group}", - "Failed to create group" : "Taldea sortzeak huts egin du", "Account management" : "Kontuen kudeaketa", - "Creating group…" : "Taldea sortzen...", - "Create group" : "Sortu taldea", - "Group name" : "Taldearen izena", - "Please enter a valid group name" : "Mesedez, sartu baliozko talde baten izena", "Sending…" : "Bidaltzen...", "Email sent" : "Eposta bidalia", "Location" : "Kokapena", diff --git a/apps/settings/l10n/eu.json b/apps/settings/l10n/eu.json index 3c3c7b4edea..bdb20157bb3 100644 --- a/apps/settings/l10n/eu.json +++ b/apps/settings/l10n/eu.json @@ -414,6 +414,12 @@ "No apps found for your version" : "Ez dira aplikaziorik aurkitu zure bertsiorako", "_%n app has an update available_::_%n apps have an update available_" : ["Aplikazio %nek eguneraketa dauka prest.","%n aplikaziok eguneraketa daukate prest."], "_Update_::_Update all_" : ["Eguneratu","Eguneratu denak"], + "Failed to create group" : "Taldea sortzeak huts egin du", + "Creating group…" : "Taldea sortzen...", + "Create group" : "Sortu taldea", + "Group name" : "Taldearen izena", + "Please enter a valid group name" : "Mesedez, sartu baliozko talde baten izena", + "Loading groups…" : "Taldeak kargatzen...", "Could not load app discover section" : "Ezin izan da aplikazioen aurkikuntza atala kargatu", "Could not render element" : "Ezin izan da elementua errenderizatu", "Nothing to show" : "Ez dago ezer erakusteko", @@ -723,12 +729,7 @@ "All accounts" : "Kontu guztiak", "Admins" : "Administratzaileak", "Account group: {group}" : "Kontuaren taldea: {group}", - "Failed to create group" : "Taldea sortzeak huts egin du", "Account management" : "Kontuen kudeaketa", - "Creating group…" : "Taldea sortzen...", - "Create group" : "Sortu taldea", - "Group name" : "Taldearen izena", - "Please enter a valid group name" : "Mesedez, sartu baliozko talde baten izena", "Sending…" : "Bidaltzen...", "Email sent" : "Eposta bidalia", "Location" : "Kokapena", diff --git a/apps/settings/l10n/fa.js b/apps/settings/l10n/fa.js index fb31fe1c518..53fe0e4de4b 100644 --- a/apps/settings/l10n/fa.js +++ b/apps/settings/l10n/fa.js @@ -183,6 +183,8 @@ OC.L10N.register( "No apps found for your version" : "هیچ برنامهای برای نسخهی شما یافت نشد", "_%n app has an update available_::_%n apps have an update available_" : ["۱ کاره بهروز رسانی دارد","%n کاره بهروز رسانی دارند"], "_Update_::_Update all_" : ["بهروز رسانی","بهروز رسانی همه"], + "Group name" : "نام گروه", + "Loading groups…" : "Loading groups…", "Loading" : "Loading", "Daemon" : "فرایندهای پس زمینه", "Type" : "نوع", @@ -390,7 +392,6 @@ OC.L10N.register( "You need to enable the File sharing App." : "You need to enable the File sharing App.", "All accounts" : "همهٔ حسابها", "Admins" : "مدیران", - "Group name" : "نام گروه", "Sending…" : "در حال ارسال", "Email sent" : "ایمیل ارسال شد", "Location" : "مکان", diff --git a/apps/settings/l10n/fa.json b/apps/settings/l10n/fa.json index dea57e89549..d623181172e 100644 --- a/apps/settings/l10n/fa.json +++ b/apps/settings/l10n/fa.json @@ -181,6 +181,8 @@ "No apps found for your version" : "هیچ برنامهای برای نسخهی شما یافت نشد", "_%n app has an update available_::_%n apps have an update available_" : ["۱ کاره بهروز رسانی دارد","%n کاره بهروز رسانی دارند"], "_Update_::_Update all_" : ["بهروز رسانی","بهروز رسانی همه"], + "Group name" : "نام گروه", + "Loading groups…" : "Loading groups…", "Loading" : "Loading", "Daemon" : "فرایندهای پس زمینه", "Type" : "نوع", @@ -388,7 +390,6 @@ "You need to enable the File sharing App." : "You need to enable the File sharing App.", "All accounts" : "همهٔ حسابها", "Admins" : "مدیران", - "Group name" : "نام گروه", "Sending…" : "در حال ارسال", "Email sent" : "ایمیل ارسال شد", "Location" : "مکان", diff --git a/apps/settings/l10n/fi.js b/apps/settings/l10n/fi.js index ef8d16da391..e246392f9ce 100644 --- a/apps/settings/l10n/fi.js +++ b/apps/settings/l10n/fi.js @@ -209,6 +209,12 @@ OC.L10N.register( "No apps found for your version" : "Sovelluksia ei löytynyt versiollesi", "_%n app has an update available_::_%n apps have an update available_" : ["%n sovelluksella on päivitys saatavilla","%n sovelluksella on päivitys saatavilla"], "_Update_::_Update all_" : ["Päivitä","Päivitä kaikki"], + "Failed to create group" : "Ryhmän luonti epäonnistui", + "Creating group…" : "Luodaan ryhmä…", + "Create group" : "Luo ryhmä", + "Group name" : "Ryhmän nimi", + "Please enter a valid group name" : "Kirjoita kelvollinen ryhmän nimi", + "Loading groups…" : "Ladataan ryhmiä…", "Nothing to show" : "Ei mitään näytettävää", "Loading" : "Ladataan", "Fetching the latest news…" : "Noudetaan viimeisimpiä uutisia…", @@ -437,12 +443,7 @@ OC.L10N.register( "Version {version}, {license}-licensed" : "Versio {version}, lisenssi {license}", "Admins" : "Ylläpitäjät", "Account group: {group}" : "Tiliryhmä: {group}", - "Failed to create group" : "Ryhmän luonti epäonnistui", "Account management" : "Tilihallinta", - "Creating group…" : "Luodaan ryhmä…", - "Create group" : "Luo ryhmä", - "Group name" : "Ryhmän nimi", - "Please enter a valid group name" : "Kirjoita kelvollinen ryhmän nimi", "Sending…" : "Lähetetään…", "Email sent" : "Sähköposti lähetetty", "Location" : "Sijainti", diff --git a/apps/settings/l10n/fi.json b/apps/settings/l10n/fi.json index f92d81ad6ab..f09740ab075 100644 --- a/apps/settings/l10n/fi.json +++ b/apps/settings/l10n/fi.json @@ -207,6 +207,12 @@ "No apps found for your version" : "Sovelluksia ei löytynyt versiollesi", "_%n app has an update available_::_%n apps have an update available_" : ["%n sovelluksella on päivitys saatavilla","%n sovelluksella on päivitys saatavilla"], "_Update_::_Update all_" : ["Päivitä","Päivitä kaikki"], + "Failed to create group" : "Ryhmän luonti epäonnistui", + "Creating group…" : "Luodaan ryhmä…", + "Create group" : "Luo ryhmä", + "Group name" : "Ryhmän nimi", + "Please enter a valid group name" : "Kirjoita kelvollinen ryhmän nimi", + "Loading groups…" : "Ladataan ryhmiä…", "Nothing to show" : "Ei mitään näytettävää", "Loading" : "Ladataan", "Fetching the latest news…" : "Noudetaan viimeisimpiä uutisia…", @@ -435,12 +441,7 @@ "Version {version}, {license}-licensed" : "Versio {version}, lisenssi {license}", "Admins" : "Ylläpitäjät", "Account group: {group}" : "Tiliryhmä: {group}", - "Failed to create group" : "Ryhmän luonti epäonnistui", "Account management" : "Tilihallinta", - "Creating group…" : "Luodaan ryhmä…", - "Create group" : "Luo ryhmä", - "Group name" : "Ryhmän nimi", - "Please enter a valid group name" : "Kirjoita kelvollinen ryhmän nimi", "Sending…" : "Lähetetään…", "Email sent" : "Sähköposti lähetetty", "Location" : "Sijainti", diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js index a2a98882120..20fbfe25e8d 100644 --- a/apps/settings/l10n/fr.js +++ b/apps/settings/l10n/fr.js @@ -422,6 +422,12 @@ OC.L10N.register( "No apps found for your version" : "Pas d’application trouvée pour votre version", "_%n app has an update available_::_%n apps have an update available_" : ["%n application a une mise à jour disponible","%n applications ont une mise à jour disponible","%n applications ont une mise à jour disponible"], "_Update_::_Update all_" : ["Mettre à jour","Tout mettre à jour","Tout mettre à jour"], + "Failed to create group" : "La création du groupe a échoué", + "Creating group…" : "Création du groupe…", + "Create group" : "Créer un groupe", + "Group name" : "Nom du groupe", + "Please enter a valid group name" : "Merci de saisir un nom de groupe valide", + "Loading groups…" : "Chargement des groupes …", "Could not load app discover section" : "Impossible de charger la section des applications à découvrir", "Could not render element" : "Impossible de générer l’élément", "Nothing to show" : "Rien à montrer", @@ -760,12 +766,7 @@ OC.L10N.register( "All accounts" : "Tous les comptes", "Admins" : "Administrateurs", "Account group: {group}" : "Groupe de comptes : {group}", - "Failed to create group" : "La création du groupe a échoué", "Account management" : "Gestion de compte", - "Creating group…" : "Création du groupe…", - "Create group" : "Créer un groupe", - "Group name" : "Nom du groupe", - "Please enter a valid group name" : "Merci de saisir un nom de groupe valide", "Sending…" : "Envoi en cours...", "Email sent" : "E-mail envoyé", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Pour des raisons de performance, quand vous activez le chiffrement sur un serveur Nextcloud, seuls les fichiers nouveaux et modifiés sont chiffrés.", diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json index daef36bd162..3bc86dfb909 100644 --- a/apps/settings/l10n/fr.json +++ b/apps/settings/l10n/fr.json @@ -420,6 +420,12 @@ "No apps found for your version" : "Pas d’application trouvée pour votre version", "_%n app has an update available_::_%n apps have an update available_" : ["%n application a une mise à jour disponible","%n applications ont une mise à jour disponible","%n applications ont une mise à jour disponible"], "_Update_::_Update all_" : ["Mettre à jour","Tout mettre à jour","Tout mettre à jour"], + "Failed to create group" : "La création du groupe a échoué", + "Creating group…" : "Création du groupe…", + "Create group" : "Créer un groupe", + "Group name" : "Nom du groupe", + "Please enter a valid group name" : "Merci de saisir un nom de groupe valide", + "Loading groups…" : "Chargement des groupes …", "Could not load app discover section" : "Impossible de charger la section des applications à découvrir", "Could not render element" : "Impossible de générer l’élément", "Nothing to show" : "Rien à montrer", @@ -758,12 +764,7 @@ "All accounts" : "Tous les comptes", "Admins" : "Administrateurs", "Account group: {group}" : "Groupe de comptes : {group}", - "Failed to create group" : "La création du groupe a échoué", "Account management" : "Gestion de compte", - "Creating group…" : "Création du groupe…", - "Create group" : "Créer un groupe", - "Group name" : "Nom du groupe", - "Please enter a valid group name" : "Merci de saisir un nom de groupe valide", "Sending…" : "Envoi en cours...", "Email sent" : "E-mail envoyé", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Pour des raisons de performance, quand vous activez le chiffrement sur un serveur Nextcloud, seuls les fichiers nouveaux et modifiés sont chiffrés.", diff --git a/apps/settings/l10n/ga.js b/apps/settings/l10n/ga.js index fa2e1d4ea5a..f6a969aeda7 100644 --- a/apps/settings/l10n/ga.js +++ b/apps/settings/l10n/ga.js @@ -258,6 +258,7 @@ OC.L10N.register( "PHP modules" : "Modúil PHP", "increases language translation performance and fixes sorting of non-ASCII characters" : "méaduithe ar fheidhmíocht aistriúcháin teanga agus socraítear sórtáil carachtar neamh-ASCII", "for Argon2 for password hashing" : "le haghaidh Argon2 le haghaidh hashing pasfhocal", + "required for SFTP storage and recommended for WebAuthn performance" : "ag teastáil le haghaidh stórála SFTP agus molta le haghaidh feidhmíochta WebAuthn", "for picture rotation in server and metadata extraction in the Photos app" : "le haghaidh rothlú pictiúr san eastóscadh freastalaí agus meiteashonraí san aip Grianghraif", "This instance is missing some required PHP modules. It is required to install them: %s." : "Tá roinnt modúl PHP riachtanach in easnamh ar an gcás seo. Tá sé riachtanach iad a shuiteáil: %s.", "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them:\n%s" : "Tá roinnt modúl PHP molta in easnamh ar an gcás seo. Ar mhaithe le feidhmíocht fheabhsaithe agus comhoiriúnacht níos fearr, moltar go mór iad a shuiteáil:\n%s", @@ -427,6 +428,15 @@ OC.L10N.register( "No apps found for your version" : "Níor aimsíodh aon aipeanna do do leagan", "_%n app has an update available_::_%n apps have an update available_" : ["%n d'aip tá nuashonrú ar fáil","%n d'aipanna tá nuashonrú ar fáil","%n d'aipanna tá nuashonrú ar fáil","%n d'aipanna tá nuashonrú ar fáil","%n d'aipanna tá nuashonrú ar fáil"], "_Update_::_Update all_" : ["Nuashonrú","Nuashonraigh go léir","Nuashonraigh go léir","Nuashonraigh go léir","Nuashonraigh go léir"], + "Failed to load groups" : "Theip ar lódáil na ngrúpaí", + "Failed to create group" : "Theip ar chruthú grúpa", + "Creating group…" : "Grúpa á chruthú…", + "Create group" : "Cruthaigh grúpa", + "Group name" : "Ainm an ghrúpa", + "Please enter a valid group name" : "Cuir isteach ainm grúpa bailí le do thoil", + "Search groups…" : "Cuardaigh grúpaí…", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Liosta grúpaí. Níl an liosta seo lándaite ar chúiseanna feidhmíochta. Déanfar na grúpaí a luchtú agus tú ag nascleanúint nó ag cuardach tríd an liosta.", + "Loading groups…" : "Grúpaí á lódáil…", "Could not load app discover section" : "Níorbh fhéidir an rannán aimsithe feidhmchláir a lódáil", "Could not render element" : "Níorbh fhéidir an eilimint a thabhairt", "Nothing to show" : "Ní dhéanfaidh aon ní a thaispeáint", @@ -668,6 +678,7 @@ OC.L10N.register( "Set line manager" : "Socraigh bainisteoir líne", "Account name will be autogenerated" : "Déanfar ainm an chuntais a ghiniúint go huathoibríoch", "Account name (required)" : "Ainm an chuntais (riachtanach)", + "Failed to search groups" : "Theip ar chuardach grúpaí", "New account" : "Cuntas nua", "Display name" : "Ainm taispeána", "Either password or email is required" : "Tá pasfhocal nó ríomhphost ag teastáil", @@ -707,6 +718,8 @@ OC.L10N.register( "Remote wipe of devices" : "Cianda wipe gléasanna", "Wipe {userid}'s devices" : "Glan gléasanna {userid}", "Wiped {userid}'s devices" : "Scriosadh gléasanna {userid}", + "Failed to load groups with details" : "Theip ar lódáil na ngrúpaí le sonraí", + "Failed to load subadmin groups with details" : "Theip ar lódáil na ngrúpaí fo-riaracháin le sonraí", "Failed to update line manager" : "Theip ar an mbainisteoir líne a nuashonrú", "Fully delete {userid}'s account including all their personal files, app data, etc." : "Scrios go hiomlán cuntas {userid} lena n-áirítear a chomhaid phearsanta go léir, sonraí aipe, etc.", "Account deletion" : "Scriosadh cuntais", @@ -739,6 +752,7 @@ OC.L10N.register( "Sorting" : "Sórtáil", "The system config enforces sorting the groups by name. This also disables showing the member count." : "Forfheidhmíonn cumraíocht an chórais na grúpaí a shórtáil de réir ainm. Díchumasaítear é seo freisin líon na mball a thaispeáint.", "Group list sorting" : "Sórtáil liostaí grúpa", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "Ní bhaineann an sórtáil ach leis na grúpaí luchtaithe faoi láthair ar chúiseanna feidhmíochta. Déanfar grúpaí a luchtú agus tú ag dul tríd an liosta nó ag cuardach tríd an liosta.", "By member count" : "De réir líon na mball", "By name" : "De réir ainm", "Send email" : "Seol ríomhphost", @@ -768,12 +782,7 @@ OC.L10N.register( "All accounts" : "Gach cuntas", "Admins" : "Riarthóirí", "Account group: {group}" : "Grúpa cuntais: {group}", - "Failed to create group" : "Theip ar chruthú grúpa", "Account management" : "Bainistíocht cuntais", - "Creating group…" : "Grúpa á chruthú…", - "Create group" : "Cruthaigh grúpa", - "Group name" : "Ainm an ghrúpa", - "Please enter a valid group name" : "Cuir isteach ainm grúpa bailí le do thoil", "Sending…" : "Á sheoladh…", "Email sent" : "Ríomhphost seolta", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Ar chúiseanna feidhmíochta, nuair a chumasaíonn tú criptiú ar fhreastalaí Nextcloud ní dhéantar ach comhaid nua agus athraithe a chriptiú.", diff --git a/apps/settings/l10n/ga.json b/apps/settings/l10n/ga.json index be654b87195..4cf01eff1c7 100644 --- a/apps/settings/l10n/ga.json +++ b/apps/settings/l10n/ga.json @@ -256,6 +256,7 @@ "PHP modules" : "Modúil PHP", "increases language translation performance and fixes sorting of non-ASCII characters" : "méaduithe ar fheidhmíocht aistriúcháin teanga agus socraítear sórtáil carachtar neamh-ASCII", "for Argon2 for password hashing" : "le haghaidh Argon2 le haghaidh hashing pasfhocal", + "required for SFTP storage and recommended for WebAuthn performance" : "ag teastáil le haghaidh stórála SFTP agus molta le haghaidh feidhmíochta WebAuthn", "for picture rotation in server and metadata extraction in the Photos app" : "le haghaidh rothlú pictiúr san eastóscadh freastalaí agus meiteashonraí san aip Grianghraif", "This instance is missing some required PHP modules. It is required to install them: %s." : "Tá roinnt modúl PHP riachtanach in easnamh ar an gcás seo. Tá sé riachtanach iad a shuiteáil: %s.", "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them:\n%s" : "Tá roinnt modúl PHP molta in easnamh ar an gcás seo. Ar mhaithe le feidhmíocht fheabhsaithe agus comhoiriúnacht níos fearr, moltar go mór iad a shuiteáil:\n%s", @@ -425,6 +426,15 @@ "No apps found for your version" : "Níor aimsíodh aon aipeanna do do leagan", "_%n app has an update available_::_%n apps have an update available_" : ["%n d'aip tá nuashonrú ar fáil","%n d'aipanna tá nuashonrú ar fáil","%n d'aipanna tá nuashonrú ar fáil","%n d'aipanna tá nuashonrú ar fáil","%n d'aipanna tá nuashonrú ar fáil"], "_Update_::_Update all_" : ["Nuashonrú","Nuashonraigh go léir","Nuashonraigh go léir","Nuashonraigh go léir","Nuashonraigh go léir"], + "Failed to load groups" : "Theip ar lódáil na ngrúpaí", + "Failed to create group" : "Theip ar chruthú grúpa", + "Creating group…" : "Grúpa á chruthú…", + "Create group" : "Cruthaigh grúpa", + "Group name" : "Ainm an ghrúpa", + "Please enter a valid group name" : "Cuir isteach ainm grúpa bailí le do thoil", + "Search groups…" : "Cuardaigh grúpaí…", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Liosta grúpaí. Níl an liosta seo lándaite ar chúiseanna feidhmíochta. Déanfar na grúpaí a luchtú agus tú ag nascleanúint nó ag cuardach tríd an liosta.", + "Loading groups…" : "Grúpaí á lódáil…", "Could not load app discover section" : "Níorbh fhéidir an rannán aimsithe feidhmchláir a lódáil", "Could not render element" : "Níorbh fhéidir an eilimint a thabhairt", "Nothing to show" : "Ní dhéanfaidh aon ní a thaispeáint", @@ -666,6 +676,7 @@ "Set line manager" : "Socraigh bainisteoir líne", "Account name will be autogenerated" : "Déanfar ainm an chuntais a ghiniúint go huathoibríoch", "Account name (required)" : "Ainm an chuntais (riachtanach)", + "Failed to search groups" : "Theip ar chuardach grúpaí", "New account" : "Cuntas nua", "Display name" : "Ainm taispeána", "Either password or email is required" : "Tá pasfhocal nó ríomhphost ag teastáil", @@ -705,6 +716,8 @@ "Remote wipe of devices" : "Cianda wipe gléasanna", "Wipe {userid}'s devices" : "Glan gléasanna {userid}", "Wiped {userid}'s devices" : "Scriosadh gléasanna {userid}", + "Failed to load groups with details" : "Theip ar lódáil na ngrúpaí le sonraí", + "Failed to load subadmin groups with details" : "Theip ar lódáil na ngrúpaí fo-riaracháin le sonraí", "Failed to update line manager" : "Theip ar an mbainisteoir líne a nuashonrú", "Fully delete {userid}'s account including all their personal files, app data, etc." : "Scrios go hiomlán cuntas {userid} lena n-áirítear a chomhaid phearsanta go léir, sonraí aipe, etc.", "Account deletion" : "Scriosadh cuntais", @@ -737,6 +750,7 @@ "Sorting" : "Sórtáil", "The system config enforces sorting the groups by name. This also disables showing the member count." : "Forfheidhmíonn cumraíocht an chórais na grúpaí a shórtáil de réir ainm. Díchumasaítear é seo freisin líon na mball a thaispeáint.", "Group list sorting" : "Sórtáil liostaí grúpa", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "Ní bhaineann an sórtáil ach leis na grúpaí luchtaithe faoi láthair ar chúiseanna feidhmíochta. Déanfar grúpaí a luchtú agus tú ag dul tríd an liosta nó ag cuardach tríd an liosta.", "By member count" : "De réir líon na mball", "By name" : "De réir ainm", "Send email" : "Seol ríomhphost", @@ -766,12 +780,7 @@ "All accounts" : "Gach cuntas", "Admins" : "Riarthóirí", "Account group: {group}" : "Grúpa cuntais: {group}", - "Failed to create group" : "Theip ar chruthú grúpa", "Account management" : "Bainistíocht cuntais", - "Creating group…" : "Grúpa á chruthú…", - "Create group" : "Cruthaigh grúpa", - "Group name" : "Ainm an ghrúpa", - "Please enter a valid group name" : "Cuir isteach ainm grúpa bailí le do thoil", "Sending…" : "Á sheoladh…", "Email sent" : "Ríomhphost seolta", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Ar chúiseanna feidhmíochta, nuair a chumasaíonn tú criptiú ar fhreastalaí Nextcloud ní dhéantar ach comhaid nua agus athraithe a chriptiú.", diff --git a/apps/settings/l10n/gl.js b/apps/settings/l10n/gl.js index 120b0bffe92..93d53f2752c 100644 --- a/apps/settings/l10n/gl.js +++ b/apps/settings/l10n/gl.js @@ -427,6 +427,12 @@ OC.L10N.register( "No apps found for your version" : "Non se atopou ningunha aplicación para a súa versión", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplicación ten unha actualización dispòñíbel.","%n aplicacións teñen unha actualización dispoñíbel."], "_Update_::_Update all_" : ["Actualizar","Actualizar todo"], + "Failed to create group" : "Produciuse un fallo ao crear o grupo", + "Creating group…" : "Creando un grupo…", + "Create group" : "Creando o grupo", + "Group name" : "Nome do grupo", + "Please enter a valid group name" : "Introduza un nome de grupo válido", + "Loading groups…" : "Cargando grupos…", "Could not load app discover section" : "Non foi posíbel cargar a sección de achado de aplicacións", "Could not render element" : "Non foi posíbel representar o elemento", "Nothing to show" : "Ren que amosar", @@ -768,12 +774,7 @@ OC.L10N.register( "All accounts" : "Todas as contas", "Admins" : "Administración", "Account group: {group}" : "Grupo de contas: {group}", - "Failed to create group" : "Produciuse un fallo ao crear o grupo", "Account management" : "Xestión de contas", - "Creating group…" : "Creando un grupo…", - "Create group" : "Creando o grupo", - "Group name" : "Nome do grupo", - "Please enter a valid group name" : "Introduza un nome de grupo válido", "Sending…" : "Enviando…", "Email sent" : "Correo enviado", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Por razóns de rendemento, cando activa o cifrado nun servidor NextCloud só se cifran os ficheiros novos e os modificados.", diff --git a/apps/settings/l10n/gl.json b/apps/settings/l10n/gl.json index 4a0e9b2b718..5bb58c35f62 100644 --- a/apps/settings/l10n/gl.json +++ b/apps/settings/l10n/gl.json @@ -425,6 +425,12 @@ "No apps found for your version" : "Non se atopou ningunha aplicación para a súa versión", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplicación ten unha actualización dispòñíbel.","%n aplicacións teñen unha actualización dispoñíbel."], "_Update_::_Update all_" : ["Actualizar","Actualizar todo"], + "Failed to create group" : "Produciuse un fallo ao crear o grupo", + "Creating group…" : "Creando un grupo…", + "Create group" : "Creando o grupo", + "Group name" : "Nome do grupo", + "Please enter a valid group name" : "Introduza un nome de grupo válido", + "Loading groups…" : "Cargando grupos…", "Could not load app discover section" : "Non foi posíbel cargar a sección de achado de aplicacións", "Could not render element" : "Non foi posíbel representar o elemento", "Nothing to show" : "Ren que amosar", @@ -766,12 +772,7 @@ "All accounts" : "Todas as contas", "Admins" : "Administración", "Account group: {group}" : "Grupo de contas: {group}", - "Failed to create group" : "Produciuse un fallo ao crear o grupo", "Account management" : "Xestión de contas", - "Creating group…" : "Creando un grupo…", - "Create group" : "Creando o grupo", - "Group name" : "Nome do grupo", - "Please enter a valid group name" : "Introduza un nome de grupo válido", "Sending…" : "Enviando…", "Email sent" : "Correo enviado", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Por razóns de rendemento, cando activa o cifrado nun servidor NextCloud só se cifran os ficheiros novos e os modificados.", diff --git a/apps/settings/l10n/he.js b/apps/settings/l10n/he.js index 0a5976781f7..7066ac747ee 100644 --- a/apps/settings/l10n/he.js +++ b/apps/settings/l10n/he.js @@ -149,6 +149,8 @@ OC.L10N.register( "Results from other categories" : "תוצאות מקטגוריות אחרות", "No apps found for your version" : "לא נמצאו יישומים לגרסה שלך", "_%n app has an update available_::_%n apps have an update available_" : ["לאחד היישומונים יש עדכון זמין","ל־%n יישומונים יש עדכון זמין","ל־%n יישומונים יש עדכון זמין"], + "Group name" : "שם קבוצה", + "Loading groups…" : "הקבוצות נטענות…", "Loading" : "בטעינה", "Daemon" : "סוכן", "Type" : "סוג", @@ -270,7 +272,6 @@ OC.L10N.register( "Your browser does not support WebAuthn." : "הדפדפן שלך אינו תומך ב־WebAuthn.", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "כמנהל יש לך אפשרות לכוונן את התנהגות השיתוף. נא לעיין בתיעוד לפרטים נוספים.", "Admins" : "מנהלים", - "Group name" : "שם קבוצה", "Sending…" : "בשליחה…", "Email sent" : "הודעת הדואר האלקטרוני נשלחה", "Location" : "מיקום", diff --git a/apps/settings/l10n/he.json b/apps/settings/l10n/he.json index 52ab6b2164d..d6628079bc1 100644 --- a/apps/settings/l10n/he.json +++ b/apps/settings/l10n/he.json @@ -147,6 +147,8 @@ "Results from other categories" : "תוצאות מקטגוריות אחרות", "No apps found for your version" : "לא נמצאו יישומים לגרסה שלך", "_%n app has an update available_::_%n apps have an update available_" : ["לאחד היישומונים יש עדכון זמין","ל־%n יישומונים יש עדכון זמין","ל־%n יישומונים יש עדכון זמין"], + "Group name" : "שם קבוצה", + "Loading groups…" : "הקבוצות נטענות…", "Loading" : "בטעינה", "Daemon" : "סוכן", "Type" : "סוג", @@ -268,7 +270,6 @@ "Your browser does not support WebAuthn." : "הדפדפן שלך אינו תומך ב־WebAuthn.", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "כמנהל יש לך אפשרות לכוונן את התנהגות השיתוף. נא לעיין בתיעוד לפרטים נוספים.", "Admins" : "מנהלים", - "Group name" : "שם קבוצה", "Sending…" : "בשליחה…", "Email sent" : "הודעת הדואר האלקטרוני נשלחה", "Location" : "מיקום", diff --git a/apps/settings/l10n/hr.js b/apps/settings/l10n/hr.js index f63b929710b..9cffe03cadb 100644 --- a/apps/settings/l10n/hr.js +++ b/apps/settings/l10n/hr.js @@ -160,6 +160,8 @@ OC.L10N.register( "Results from other categories" : "Rezultati iz drugih kategorija", "No apps found for your version" : "Nije pronađena nijedna aplikacija za vašu inačicu", "_%n app has an update available_::_%n apps have an update available_" : ["Dostupno je ažuriranje za %n aplikaciju","Dostupno je ažuriranje za %n aplikacije","Dostupno je ažuriranje za %n aplikacija"], + "Group name" : "Naziv grupe", + "Loading groups…" : "Učitavanje grupa…", "Loading" : "Učitavanje", "Daemon" : "Daemon", "Type" : "Vrsta", @@ -309,7 +311,6 @@ OC.L10N.register( "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Administrator možete detaljnije podešavati dijeljenja. Pogledajte odgovarajuću dokumentaciju za više informacija.", "You need to enable the File sharing App." : "Morate omogućiti aplikaciju za dijeljenje datoteka.", "Admins" : "Administratori", - "Group name" : "Naziv grupe", "Sending…" : "Slanje…", "Email sent" : "E-pošta je poslana", "Location" : "Lokacija", diff --git a/apps/settings/l10n/hr.json b/apps/settings/l10n/hr.json index c6de8fec6ff..35c0e2d9b79 100644 --- a/apps/settings/l10n/hr.json +++ b/apps/settings/l10n/hr.json @@ -158,6 +158,8 @@ "Results from other categories" : "Rezultati iz drugih kategorija", "No apps found for your version" : "Nije pronađena nijedna aplikacija za vašu inačicu", "_%n app has an update available_::_%n apps have an update available_" : ["Dostupno je ažuriranje za %n aplikaciju","Dostupno je ažuriranje za %n aplikacije","Dostupno je ažuriranje za %n aplikacija"], + "Group name" : "Naziv grupe", + "Loading groups…" : "Učitavanje grupa…", "Loading" : "Učitavanje", "Daemon" : "Daemon", "Type" : "Vrsta", @@ -307,7 +309,6 @@ "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Administrator možete detaljnije podešavati dijeljenja. Pogledajte odgovarajuću dokumentaciju za više informacija.", "You need to enable the File sharing App." : "Morate omogućiti aplikaciju za dijeljenje datoteka.", "Admins" : "Administratori", - "Group name" : "Naziv grupe", "Sending…" : "Slanje…", "Email sent" : "E-pošta je poslana", "Location" : "Lokacija", diff --git a/apps/settings/l10n/hu.js b/apps/settings/l10n/hu.js index df6956bb376..9f51d76bca0 100644 --- a/apps/settings/l10n/hu.js +++ b/apps/settings/l10n/hu.js @@ -294,6 +294,12 @@ OC.L10N.register( "No apps found for your version" : "Nem található alkalmazás a verziójához", "_%n app has an update available_::_%n apps have an update available_" : ["%n alkalmazás frissítése érhető el","%n alkalmazás frissítése érhető el"], "_Update_::_Update all_" : ["Frissítés","Összes frissítése"], + "Failed to create group" : "A csoport létrehozása sikertelen", + "Creating group…" : "Csoport létrehozása…", + "Create group" : "Csoport létrehozása", + "Group name" : "Csoport neve", + "Please enter a valid group name" : "Adjon meg egy érvényes csoportnevet", + "Loading groups…" : "Csoportok betöltése…", "Nothing to show" : "Nincs mit megjeleníteni", "Loading" : "Betöltés", "Fetching the latest news…" : "Legfrissebb hírek lekérése…", @@ -559,12 +565,7 @@ OC.L10N.register( "All accounts" : "Összes fiók", "Admins" : "Rendszergazdák", "Account group: {group}" : "Fiókcsoport: {group}", - "Failed to create group" : "A csoport létrehozása sikertelen", "Account management" : "Fiókkezelés", - "Creating group…" : "Csoport létrehozása…", - "Create group" : "Csoport létrehozása", - "Group name" : "Csoport neve", - "Please enter a valid group name" : "Adjon meg egy érvényes csoportnevet", "Sending…" : "Küldés…", "Email sent" : "E-mail elküldve", "Location" : "Hely", diff --git a/apps/settings/l10n/hu.json b/apps/settings/l10n/hu.json index dc22f534814..0d185751d66 100644 --- a/apps/settings/l10n/hu.json +++ b/apps/settings/l10n/hu.json @@ -292,6 +292,12 @@ "No apps found for your version" : "Nem található alkalmazás a verziójához", "_%n app has an update available_::_%n apps have an update available_" : ["%n alkalmazás frissítése érhető el","%n alkalmazás frissítése érhető el"], "_Update_::_Update all_" : ["Frissítés","Összes frissítése"], + "Failed to create group" : "A csoport létrehozása sikertelen", + "Creating group…" : "Csoport létrehozása…", + "Create group" : "Csoport létrehozása", + "Group name" : "Csoport neve", + "Please enter a valid group name" : "Adjon meg egy érvényes csoportnevet", + "Loading groups…" : "Csoportok betöltése…", "Nothing to show" : "Nincs mit megjeleníteni", "Loading" : "Betöltés", "Fetching the latest news…" : "Legfrissebb hírek lekérése…", @@ -557,12 +563,7 @@ "All accounts" : "Összes fiók", "Admins" : "Rendszergazdák", "Account group: {group}" : "Fiókcsoport: {group}", - "Failed to create group" : "A csoport létrehozása sikertelen", "Account management" : "Fiókkezelés", - "Creating group…" : "Csoport létrehozása…", - "Create group" : "Csoport létrehozása", - "Group name" : "Csoport neve", - "Please enter a valid group name" : "Adjon meg egy érvényes csoportnevet", "Sending…" : "Küldés…", "Email sent" : "E-mail elküldve", "Location" : "Hely", diff --git a/apps/settings/l10n/id.js b/apps/settings/l10n/id.js index 46bb371f6fc..510ecca1416 100644 --- a/apps/settings/l10n/id.js +++ b/apps/settings/l10n/id.js @@ -148,6 +148,7 @@ OC.L10N.register( "No apps found for your version" : "Aplikasi tidak ditemukan untuk versi ini", "_%n app has an update available_::_%n apps have an update available_" : ["Ada pembaruan tersedia untuk %naplikasi"], "_Update_::_Update all_" : ["Perbarui semua"], + "Group name" : "Nama grup", "Loading" : "Memuat", "Type" : "tipe", "Learn more" : "Pelajari lebih lanjut", @@ -261,7 +262,6 @@ OC.L10N.register( "Passwordless Authentication" : "Otentikasi Tanpa Kata Sandi", "No devices configured." : "Tidak ada perangkat yang dikonfigurasi.", "Admins" : "Admin", - "Group name" : "Nama grup", "Sending…" : "Mengirim…", "Email sent" : "Surel terkirim", "Location" : "Lokasi", diff --git a/apps/settings/l10n/id.json b/apps/settings/l10n/id.json index 73bf07e6422..5cbbbbb4a45 100644 --- a/apps/settings/l10n/id.json +++ b/apps/settings/l10n/id.json @@ -146,6 +146,7 @@ "No apps found for your version" : "Aplikasi tidak ditemukan untuk versi ini", "_%n app has an update available_::_%n apps have an update available_" : ["Ada pembaruan tersedia untuk %naplikasi"], "_Update_::_Update all_" : ["Perbarui semua"], + "Group name" : "Nama grup", "Loading" : "Memuat", "Type" : "tipe", "Learn more" : "Pelajari lebih lanjut", @@ -259,7 +260,6 @@ "Passwordless Authentication" : "Otentikasi Tanpa Kata Sandi", "No devices configured." : "Tidak ada perangkat yang dikonfigurasi.", "Admins" : "Admin", - "Group name" : "Nama grup", "Sending…" : "Mengirim…", "Email sent" : "Surel terkirim", "Location" : "Lokasi", diff --git a/apps/settings/l10n/is.js b/apps/settings/l10n/is.js index 916b6309c60..1ddd9c19ffe 100644 --- a/apps/settings/l10n/is.js +++ b/apps/settings/l10n/is.js @@ -283,6 +283,12 @@ OC.L10N.register( "No apps found for your version" : "Engin forrit fundust fyrir útgáfuna þína", "_%n app has an update available_::_%n apps have an update available_" : ["%n forrit er með tiltæka uppfærslu","%n forrit eru með tiltæka uppfærslu"], "_Update_::_Update all_" : ["Uppfæra","Uppfæra allt"], + "Failed to create group" : "Mistókst að búa til hóp", + "Creating group…" : "Bý til hóp …", + "Create group" : "Búa til hóp", + "Group name" : "Heiti hóps", + "Please enter a valid group name" : "Settu inn gilt nafn á hópi", + "Loading groups…" : "Hleð inn hópum…", "Nothing to show" : "Ekkert til að sýna", "Loading" : "Hleð inn", "Fetching the latest news…" : "Sæki nýjustu fréttir…", @@ -597,12 +603,7 @@ OC.L10N.register( "All accounts" : "Allir aðgangar", "Admins" : "Kerfisstjórar", "Account group: {group}" : "Hópur notendaaðganga: {group}", - "Failed to create group" : "Mistókst að búa til hóp", "Account management" : "Umsýsla notandaaðgangs", - "Creating group…" : "Bý til hóp …", - "Create group" : "Búa til hóp", - "Group name" : "Heiti hóps", - "Please enter a valid group name" : "Settu inn gilt nafn á hópi", "Sending…" : "Sendi...", "Email sent" : "Tölvupóstur sendur", "Location" : "Staðsetning", diff --git a/apps/settings/l10n/is.json b/apps/settings/l10n/is.json index 4a48d86e491..2b2d900e3f4 100644 --- a/apps/settings/l10n/is.json +++ b/apps/settings/l10n/is.json @@ -281,6 +281,12 @@ "No apps found for your version" : "Engin forrit fundust fyrir útgáfuna þína", "_%n app has an update available_::_%n apps have an update available_" : ["%n forrit er með tiltæka uppfærslu","%n forrit eru með tiltæka uppfærslu"], "_Update_::_Update all_" : ["Uppfæra","Uppfæra allt"], + "Failed to create group" : "Mistókst að búa til hóp", + "Creating group…" : "Bý til hóp …", + "Create group" : "Búa til hóp", + "Group name" : "Heiti hóps", + "Please enter a valid group name" : "Settu inn gilt nafn á hópi", + "Loading groups…" : "Hleð inn hópum…", "Nothing to show" : "Ekkert til að sýna", "Loading" : "Hleð inn", "Fetching the latest news…" : "Sæki nýjustu fréttir…", @@ -595,12 +601,7 @@ "All accounts" : "Allir aðgangar", "Admins" : "Kerfisstjórar", "Account group: {group}" : "Hópur notendaaðganga: {group}", - "Failed to create group" : "Mistókst að búa til hóp", "Account management" : "Umsýsla notandaaðgangs", - "Creating group…" : "Bý til hóp …", - "Create group" : "Búa til hóp", - "Group name" : "Heiti hóps", - "Please enter a valid group name" : "Settu inn gilt nafn á hópi", "Sending…" : "Sendi...", "Email sent" : "Tölvupóstur sendur", "Location" : "Staðsetning", diff --git a/apps/settings/l10n/it.js b/apps/settings/l10n/it.js index e6468f8936e..e00cb95d5e6 100644 --- a/apps/settings/l10n/it.js +++ b/apps/settings/l10n/it.js @@ -349,6 +349,11 @@ OC.L10N.register( "No apps found for your version" : "Nessuna applicazione trovata per la tua versione", "_%n app has an update available_::_%n apps have an update available_" : ["%n applicazione ha un aggiornamento disponibile","%n applicazioni hanno un aggiornamento disponibile","%n applicazioni hanno un aggiornamento disponibile"], "_Update_::_Update all_" : ["Aggiorna","Aggiorna","Aggiorna tutto"], + "Failed to create group" : "Creazione gruppo fallita", + "Create group" : "Crea gruppo", + "Group name" : "Nome del gruppo", + "Please enter a valid group name" : "Inserisci un nome di gruppo valido", + "Loading groups…" : "Caricamento gruppi...", "Nothing to show" : "Niente da mostrare", "Loading" : "Caricamento", "Carousel" : "Carosello", @@ -586,10 +591,6 @@ OC.L10N.register( "You need to enable the File sharing App." : "Devi attivare l'applicazione Condivisione file.", "App Store" : "App Store", "Admins" : "Amministratori", - "Failed to create group" : "Creazione gruppo fallita", - "Create group" : "Crea gruppo", - "Group name" : "Nome del gruppo", - "Please enter a valid group name" : "Inserisci un nome di gruppo valido", "Sending…" : "Invio in corso...", "Email sent" : "Email inviata", "Location" : "Posizione", diff --git a/apps/settings/l10n/it.json b/apps/settings/l10n/it.json index 74193b91970..bf30d48820b 100644 --- a/apps/settings/l10n/it.json +++ b/apps/settings/l10n/it.json @@ -347,6 +347,11 @@ "No apps found for your version" : "Nessuna applicazione trovata per la tua versione", "_%n app has an update available_::_%n apps have an update available_" : ["%n applicazione ha un aggiornamento disponibile","%n applicazioni hanno un aggiornamento disponibile","%n applicazioni hanno un aggiornamento disponibile"], "_Update_::_Update all_" : ["Aggiorna","Aggiorna","Aggiorna tutto"], + "Failed to create group" : "Creazione gruppo fallita", + "Create group" : "Crea gruppo", + "Group name" : "Nome del gruppo", + "Please enter a valid group name" : "Inserisci un nome di gruppo valido", + "Loading groups…" : "Caricamento gruppi...", "Nothing to show" : "Niente da mostrare", "Loading" : "Caricamento", "Carousel" : "Carosello", @@ -584,10 +589,6 @@ "You need to enable the File sharing App." : "Devi attivare l'applicazione Condivisione file.", "App Store" : "App Store", "Admins" : "Amministratori", - "Failed to create group" : "Creazione gruppo fallita", - "Create group" : "Crea gruppo", - "Group name" : "Nome del gruppo", - "Please enter a valid group name" : "Inserisci un nome di gruppo valido", "Sending…" : "Invio in corso...", "Email sent" : "Email inviata", "Location" : "Posizione", diff --git a/apps/settings/l10n/ja.js b/apps/settings/l10n/ja.js index a1ac4e7fe92..722aabf5e6b 100644 --- a/apps/settings/l10n/ja.js +++ b/apps/settings/l10n/ja.js @@ -427,6 +427,12 @@ OC.L10N.register( "No apps found for your version" : "現在のバージョンに対応するアプリはありません", "_%n app has an update available_::_%n apps have an update available_" : ["%n 個のアプリに更新情報があります"], "_Update_::_Update all_" : ["全て更新"], + "Failed to create group" : "グループの作成に失敗しました", + "Creating group…" : "グループを作成中...", + "Create group" : "グループを作成", + "Group name" : "グループ名", + "Please enter a valid group name" : "有効なグループ名を入力してください", + "Loading groups…" : "グループを読み込み中…", "Could not load app discover section" : "アプリ検出セクションをロードできませんでした", "Could not render element" : "要素を表示できませんでした", "Nothing to show" : "表示するものがありません", @@ -768,12 +774,7 @@ OC.L10N.register( "All accounts" : "全てのアカウント", "Admins" : "管理者", "Account group: {group}" : "アカウントグループ: {group}", - "Failed to create group" : "グループの作成に失敗しました", "Account management" : "アカウント管理", - "Creating group…" : "グループを作成中...", - "Create group" : "グループを作成", - "Group name" : "グループ名", - "Please enter a valid group name" : "有効なグループ名を入力してください", "Sending…" : "送信中 …", "Email sent" : "メールを送信しました", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "パフォーマンス上の理由から、Nextcloudサーバーで暗号化を有効にすると、新規ファイルと変更されたファイルだけが暗号化されます。", diff --git a/apps/settings/l10n/ja.json b/apps/settings/l10n/ja.json index 67adae27a5a..36a3f84aca8 100644 --- a/apps/settings/l10n/ja.json +++ b/apps/settings/l10n/ja.json @@ -425,6 +425,12 @@ "No apps found for your version" : "現在のバージョンに対応するアプリはありません", "_%n app has an update available_::_%n apps have an update available_" : ["%n 個のアプリに更新情報があります"], "_Update_::_Update all_" : ["全て更新"], + "Failed to create group" : "グループの作成に失敗しました", + "Creating group…" : "グループを作成中...", + "Create group" : "グループを作成", + "Group name" : "グループ名", + "Please enter a valid group name" : "有効なグループ名を入力してください", + "Loading groups…" : "グループを読み込み中…", "Could not load app discover section" : "アプリ検出セクションをロードできませんでした", "Could not render element" : "要素を表示できませんでした", "Nothing to show" : "表示するものがありません", @@ -766,12 +772,7 @@ "All accounts" : "全てのアカウント", "Admins" : "管理者", "Account group: {group}" : "アカウントグループ: {group}", - "Failed to create group" : "グループの作成に失敗しました", "Account management" : "アカウント管理", - "Creating group…" : "グループを作成中...", - "Create group" : "グループを作成", - "Group name" : "グループ名", - "Please enter a valid group name" : "有効なグループ名を入力してください", "Sending…" : "送信中 …", "Email sent" : "メールを送信しました", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "パフォーマンス上の理由から、Nextcloudサーバーで暗号化を有効にすると、新規ファイルと変更されたファイルだけが暗号化されます。", diff --git a/apps/settings/l10n/ka.js b/apps/settings/l10n/ka.js index 9095e12e59a..a2c3570affa 100644 --- a/apps/settings/l10n/ka.js +++ b/apps/settings/l10n/ka.js @@ -256,6 +256,11 @@ OC.L10N.register( "No apps found for your version" : "No apps found for your version", "_%n app has an update available_::_%n apps have an update available_" : ["%n app has an update available","%n apps have an update available"], "_Update_::_Update all_" : ["Update","Update all"], + "Failed to create group" : "Failed to create group", + "Create group" : "Create group", + "Group name" : "Group name", + "Please enter a valid group name" : "Please enter a valid group name", + "Loading groups…" : "Loading groups…", "Loading" : "Loading", "Type" : "Type", "Confirm" : "Confirm", @@ -476,10 +481,6 @@ OC.L10N.register( "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "As admin you can fine-tune the sharing behavior. Please see the documentation for more information.", "You need to enable the File sharing App." : "You need to enable the File sharing App.", "Admins" : "Admins", - "Failed to create group" : "Failed to create group", - "Create group" : "Create group", - "Group name" : "Group name", - "Please enter a valid group name" : "Please enter a valid group name", "Sending…" : "Sending…", "Email sent" : "Email sent", "Location" : "Location", diff --git a/apps/settings/l10n/ka.json b/apps/settings/l10n/ka.json index dce7052c31f..86c65b3f921 100644 --- a/apps/settings/l10n/ka.json +++ b/apps/settings/l10n/ka.json @@ -254,6 +254,11 @@ "No apps found for your version" : "No apps found for your version", "_%n app has an update available_::_%n apps have an update available_" : ["%n app has an update available","%n apps have an update available"], "_Update_::_Update all_" : ["Update","Update all"], + "Failed to create group" : "Failed to create group", + "Create group" : "Create group", + "Group name" : "Group name", + "Please enter a valid group name" : "Please enter a valid group name", + "Loading groups…" : "Loading groups…", "Loading" : "Loading", "Type" : "Type", "Confirm" : "Confirm", @@ -474,10 +479,6 @@ "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "As admin you can fine-tune the sharing behavior. Please see the documentation for more information.", "You need to enable the File sharing App." : "You need to enable the File sharing App.", "Admins" : "Admins", - "Failed to create group" : "Failed to create group", - "Create group" : "Create group", - "Group name" : "Group name", - "Please enter a valid group name" : "Please enter a valid group name", "Sending…" : "Sending…", "Email sent" : "Email sent", "Location" : "Location", diff --git a/apps/settings/l10n/ka_GE.js b/apps/settings/l10n/ka_GE.js index 1adf632d3db..cc4dd566e7c 100644 --- a/apps/settings/l10n/ka_GE.js +++ b/apps/settings/l10n/ka_GE.js @@ -104,6 +104,7 @@ OC.L10N.register( "Level" : "დონე", "Actions" : "მოქმედებები", "No apps found for your version" : "აპლიკაციები თქვენი ვერსიისთვის ვერ იქნა ნაპოვნი", + "Group name" : "ჯგუფის სახელი", "Daemon" : "დაემონი", "Display Name" : "დისპლეი სახელი", "Learn more" : "შეიტყვეთ მეტი", @@ -185,7 +186,6 @@ OC.L10N.register( "Unnamed device" : "უსახელო მოწყობილობა", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "როგორც ადმინისტრატორს შეგიძლიათ გაზიარების ქცევის კორექტირება. დამატებითი ინფორმაციისთვის იხილეთ დოკუმენტაცია.", "Admins" : "ადმინისტრატორები", - "Group name" : "ჯგუფის სახელი", "Sending…" : "იგზავნება…", "Email sent" : "ელ-წერილი გაიგზავნა", "Location" : "ადგილმდებარეობა", diff --git a/apps/settings/l10n/ka_GE.json b/apps/settings/l10n/ka_GE.json index a17cbf6c886..1e854b08572 100644 --- a/apps/settings/l10n/ka_GE.json +++ b/apps/settings/l10n/ka_GE.json @@ -102,6 +102,7 @@ "Level" : "დონე", "Actions" : "მოქმედებები", "No apps found for your version" : "აპლიკაციები თქვენი ვერსიისთვის ვერ იქნა ნაპოვნი", + "Group name" : "ჯგუფის სახელი", "Daemon" : "დაემონი", "Display Name" : "დისპლეი სახელი", "Learn more" : "შეიტყვეთ მეტი", @@ -183,7 +184,6 @@ "Unnamed device" : "უსახელო მოწყობილობა", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "როგორც ადმინისტრატორს შეგიძლიათ გაზიარების ქცევის კორექტირება. დამატებითი ინფორმაციისთვის იხილეთ დოკუმენტაცია.", "Admins" : "ადმინისტრატორები", - "Group name" : "ჯგუფის სახელი", "Sending…" : "იგზავნება…", "Email sent" : "ელ-წერილი გაიგზავნა", "Location" : "ადგილმდებარეობა", diff --git a/apps/settings/l10n/ko.js b/apps/settings/l10n/ko.js index 4d925c8ebfd..244544f3301 100644 --- a/apps/settings/l10n/ko.js +++ b/apps/settings/l10n/ko.js @@ -360,6 +360,12 @@ OC.L10N.register( "No apps found for your version" : "설치된 버전에 대한 앱 없음", "_%n app has an update available_::_%n apps have an update available_" : ["%n개의 앱을 업데이트 할 수 있습니다."], "_Update_::_Update all_" : ["모두 업데이트"], + "Failed to create group" : "그룹을 만들 수 없음", + "Creating group…" : "그룹 생성 ...", + "Create group" : "그룹 생성", + "Group name" : "그룹 이름", + "Please enter a valid group name" : "올바른 그룹 이름을 입력하세요", + "Loading groups…" : "그룹 불러오는 중...", "Could not load app discover section" : "앱 검색 섹션을 불러올 수 없음", "Could not render element" : "요소를 렌더할 수 없음", "Nothing to show" : "표시할 항목 없음", @@ -624,12 +630,7 @@ OC.L10N.register( "Developer documentation ↗" : "개발자 문서 ↗", "Admins" : "관리자", "Account group: {group}" : "계정 그룹: {group}", - "Failed to create group" : "그룹을 만들 수 없음", "Account management" : "계정 관리", - "Creating group…" : "그룹 생성 ...", - "Create group" : "그룹 생성", - "Group name" : "그룹 이름", - "Please enter a valid group name" : "올바른 그룹 이름을 입력하세요", "Sending…" : "보내는 중…", "Email sent" : "이메일 보냄", "Location" : "위치", diff --git a/apps/settings/l10n/ko.json b/apps/settings/l10n/ko.json index 3cdc399e35b..9ce29b22cfa 100644 --- a/apps/settings/l10n/ko.json +++ b/apps/settings/l10n/ko.json @@ -358,6 +358,12 @@ "No apps found for your version" : "설치된 버전에 대한 앱 없음", "_%n app has an update available_::_%n apps have an update available_" : ["%n개의 앱을 업데이트 할 수 있습니다."], "_Update_::_Update all_" : ["모두 업데이트"], + "Failed to create group" : "그룹을 만들 수 없음", + "Creating group…" : "그룹 생성 ...", + "Create group" : "그룹 생성", + "Group name" : "그룹 이름", + "Please enter a valid group name" : "올바른 그룹 이름을 입력하세요", + "Loading groups…" : "그룹 불러오는 중...", "Could not load app discover section" : "앱 검색 섹션을 불러올 수 없음", "Could not render element" : "요소를 렌더할 수 없음", "Nothing to show" : "표시할 항목 없음", @@ -622,12 +628,7 @@ "Developer documentation ↗" : "개발자 문서 ↗", "Admins" : "관리자", "Account group: {group}" : "계정 그룹: {group}", - "Failed to create group" : "그룹을 만들 수 없음", "Account management" : "계정 관리", - "Creating group…" : "그룹 생성 ...", - "Create group" : "그룹 생성", - "Group name" : "그룹 이름", - "Please enter a valid group name" : "올바른 그룹 이름을 입력하세요", "Sending…" : "보내는 중…", "Email sent" : "이메일 보냄", "Location" : "위치", diff --git a/apps/settings/l10n/lt_LT.js b/apps/settings/l10n/lt_LT.js index dc3ed1992c5..520df2cefe3 100644 --- a/apps/settings/l10n/lt_LT.js +++ b/apps/settings/l10n/lt_LT.js @@ -118,6 +118,7 @@ OC.L10N.register( "Unlimited" : "Neribotai", "Verifying" : "Tikrinimas", "Your remote address could not be determined." : "Nepavyko nustatyti jūsų nuotolinio adreso.", + "Data directory protected" : "Duomenų katalogas apsaugotas", "Debug mode" : "Derinimo veiksena", "Debug mode is disabled." : "Derinimo veiksena yra išjungta.", "Internet connectivity" : "Interneto ryšys", @@ -129,6 +130,7 @@ OC.L10N.register( "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Jūsų PHP neturi FreeType palaikymo, kas savo ruožtu sąlygoja profilio paveikslėlių ir nustatymų sąsajos neteisingą atvaizdavimą.", "PHP modules" : "PHP moduliai", "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "PHP OPcache modulis nėra įkeltas. Geresniam našumui rekomenduojame įkelti šį modulį į savo PHP diegimą.", + "PHP version" : "PHP versija", "Database version" : "Duomenų bazės versija", "Unknown database platform" : "Nežinoma duomenų bazės platforma", "Architecture" : "Architektūra", @@ -137,6 +139,7 @@ OC.L10N.register( "Nextcloud settings" : "Nextcloud nustatymai", "Enable" : "Įjungti", "Here you can decide which group can access certain sections of the administration settings." : "Čia galite nuspręsti, kuri grupė galės gauti prieigą prie tam tikrų administravimo nustatymų sekcijų.", + "Unable to modify setting" : "Nepavyko modifikuoti nustatymo", "None" : "Nėra", "Could not set disclaimer text" : "Nepavyko nustatyti atsakomybės ribojimo teksto", "Allow apps to use the Share API" : "Leisti programėlėms naudoti bendrinimo API", @@ -177,6 +180,11 @@ OC.L10N.register( "No apps found for your version" : "Jūsų versijai programėlių nėra", "_%n app has an update available_::_%n apps have an update available_" : ["%n programėlei yra prieinamas atnaujinimas","%n programėlėms yra prieinamas atnaujinimas","%n programėlių yra prieinamas atnaujinimas","%n programėlei yra prieinamas atnaujinimas"], "_Update_::_Update all_" : ["Atnaujinti","Atnaujinti visas","Atnaujinti visas","Atnaujinti visas"], + "Failed to create group" : "Nepavyko sukurti grupės", + "Creating group…" : "Kuriama grupė…", + "Create group" : "Sukurti grupę", + "Group name" : "Grupės pavadinimas", + "Loading groups…" : "Įkeliamos grupės…", "Nothing to show" : "Nėra ką rodyti", "Loading" : "Įkeliama", "Fetching the latest news…" : "Gaunamos paskiausios naujienos…", @@ -187,6 +195,7 @@ OC.L10N.register( "Type" : "Tipas", "Display Name" : "Rodomas vardas", "Learn more" : "Sužinoti daugiau", + "Environment variables" : "Aplinkos kintamieji", "Read-only" : "Tik skaitymui", "Confirm" : "Patvirtinti", "Cancel" : "Atšaukti", @@ -388,10 +397,6 @@ OC.L10N.register( "Version {version}" : "Versija {version}", "All accounts" : "Visos paskyros", "Admins" : "Administratoriai", - "Failed to create group" : "Nepavyko sukurti grupės", - "Creating group…" : "Kuriama grupė…", - "Create group" : "Sukurti grupę", - "Group name" : "Grupės pavadinimas", "Sending…" : "Siunčiama…", "Email sent" : "El. paštas išsiųstas", "Location" : "Vieta", diff --git a/apps/settings/l10n/lt_LT.json b/apps/settings/l10n/lt_LT.json index 6e0d95a4b3d..6c31e607411 100644 --- a/apps/settings/l10n/lt_LT.json +++ b/apps/settings/l10n/lt_LT.json @@ -116,6 +116,7 @@ "Unlimited" : "Neribotai", "Verifying" : "Tikrinimas", "Your remote address could not be determined." : "Nepavyko nustatyti jūsų nuotolinio adreso.", + "Data directory protected" : "Duomenų katalogas apsaugotas", "Debug mode" : "Derinimo veiksena", "Debug mode is disabled." : "Derinimo veiksena yra išjungta.", "Internet connectivity" : "Interneto ryšys", @@ -127,6 +128,7 @@ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Jūsų PHP neturi FreeType palaikymo, kas savo ruožtu sąlygoja profilio paveikslėlių ir nustatymų sąsajos neteisingą atvaizdavimą.", "PHP modules" : "PHP moduliai", "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "PHP OPcache modulis nėra įkeltas. Geresniam našumui rekomenduojame įkelti šį modulį į savo PHP diegimą.", + "PHP version" : "PHP versija", "Database version" : "Duomenų bazės versija", "Unknown database platform" : "Nežinoma duomenų bazės platforma", "Architecture" : "Architektūra", @@ -135,6 +137,7 @@ "Nextcloud settings" : "Nextcloud nustatymai", "Enable" : "Įjungti", "Here you can decide which group can access certain sections of the administration settings." : "Čia galite nuspręsti, kuri grupė galės gauti prieigą prie tam tikrų administravimo nustatymų sekcijų.", + "Unable to modify setting" : "Nepavyko modifikuoti nustatymo", "None" : "Nėra", "Could not set disclaimer text" : "Nepavyko nustatyti atsakomybės ribojimo teksto", "Allow apps to use the Share API" : "Leisti programėlėms naudoti bendrinimo API", @@ -175,6 +178,11 @@ "No apps found for your version" : "Jūsų versijai programėlių nėra", "_%n app has an update available_::_%n apps have an update available_" : ["%n programėlei yra prieinamas atnaujinimas","%n programėlėms yra prieinamas atnaujinimas","%n programėlių yra prieinamas atnaujinimas","%n programėlei yra prieinamas atnaujinimas"], "_Update_::_Update all_" : ["Atnaujinti","Atnaujinti visas","Atnaujinti visas","Atnaujinti visas"], + "Failed to create group" : "Nepavyko sukurti grupės", + "Creating group…" : "Kuriama grupė…", + "Create group" : "Sukurti grupę", + "Group name" : "Grupės pavadinimas", + "Loading groups…" : "Įkeliamos grupės…", "Nothing to show" : "Nėra ką rodyti", "Loading" : "Įkeliama", "Fetching the latest news…" : "Gaunamos paskiausios naujienos…", @@ -185,6 +193,7 @@ "Type" : "Tipas", "Display Name" : "Rodomas vardas", "Learn more" : "Sužinoti daugiau", + "Environment variables" : "Aplinkos kintamieji", "Read-only" : "Tik skaitymui", "Confirm" : "Patvirtinti", "Cancel" : "Atšaukti", @@ -386,10 +395,6 @@ "Version {version}" : "Versija {version}", "All accounts" : "Visos paskyros", "Admins" : "Administratoriai", - "Failed to create group" : "Nepavyko sukurti grupės", - "Creating group…" : "Kuriama grupė…", - "Create group" : "Sukurti grupę", - "Group name" : "Grupės pavadinimas", "Sending…" : "Siunčiama…", "Email sent" : "El. paštas išsiųstas", "Location" : "Vieta", diff --git a/apps/settings/l10n/lv.js b/apps/settings/l10n/lv.js index b6da3055d3e..d9b232618db 100644 --- a/apps/settings/l10n/lv.js +++ b/apps/settings/l10n/lv.js @@ -83,6 +83,7 @@ OC.L10N.register( "No apps found for your version" : "Neatrada lietotnes jūsu versijai", "_%n app has an update available_::_%n apps have an update available_" : ["%n lietotnēm ir pieejams atjauninājums","%n lietotnei ir pieejams atjauninājums","%n lietotnēm ir pieejams atjauninājums"], "_Update_::_Update all_" : ["Atjaunināt visas","Atjaunināt","Atjaunināt visas"], + "Group name" : "Grupas nosaukums", "Loading" : "Ielādē", "Type" : "Veids", "Display Name" : "Attēlojamais vārds", @@ -140,6 +141,7 @@ OC.L10N.register( "You are using {s}{usage}{/s}" : "Jūs izmantojat {s}{usage}{/s}", "You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Jūs izmantojat {s}{usage}{/s} no {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})", "You are a member of the following groups:" : "Tu esi zemāk uzskaitīto kopu dalībnieks:", + "This address is not confirmed" : "Šī adrese nav apstiprināta", "Primary email for password reset and notifications" : "Primārā e-pasta adrese paroles atjaunošanai un paziņojumiem", "No email address set" : "Nav norādīts e-pasts", "Help translate" : "Palīdzi tulkot", @@ -174,7 +176,6 @@ OC.L10N.register( "Send email" : "Sūtīt e-pastu", "Default quota" : "Apjoms pēc noklusējuma", "Admins" : "Pārvaldītāji", - "Group name" : "Grupas nosaukums", "Sending…" : "Sūta …", "Email sent" : "Vēstule nosūtīta", "Location" : "Atrašanās vieta", diff --git a/apps/settings/l10n/lv.json b/apps/settings/l10n/lv.json index 8f75daab4bd..06b2e3db1d2 100644 --- a/apps/settings/l10n/lv.json +++ b/apps/settings/l10n/lv.json @@ -81,6 +81,7 @@ "No apps found for your version" : "Neatrada lietotnes jūsu versijai", "_%n app has an update available_::_%n apps have an update available_" : ["%n lietotnēm ir pieejams atjauninājums","%n lietotnei ir pieejams atjauninājums","%n lietotnēm ir pieejams atjauninājums"], "_Update_::_Update all_" : ["Atjaunināt visas","Atjaunināt","Atjaunināt visas"], + "Group name" : "Grupas nosaukums", "Loading" : "Ielādē", "Type" : "Veids", "Display Name" : "Attēlojamais vārds", @@ -138,6 +139,7 @@ "You are using {s}{usage}{/s}" : "Jūs izmantojat {s}{usage}{/s}", "You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Jūs izmantojat {s}{usage}{/s} no {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})", "You are a member of the following groups:" : "Tu esi zemāk uzskaitīto kopu dalībnieks:", + "This address is not confirmed" : "Šī adrese nav apstiprināta", "Primary email for password reset and notifications" : "Primārā e-pasta adrese paroles atjaunošanai un paziņojumiem", "No email address set" : "Nav norādīts e-pasts", "Help translate" : "Palīdzi tulkot", @@ -172,7 +174,6 @@ "Send email" : "Sūtīt e-pastu", "Default quota" : "Apjoms pēc noklusējuma", "Admins" : "Pārvaldītāji", - "Group name" : "Grupas nosaukums", "Sending…" : "Sūta …", "Email sent" : "Vēstule nosūtīta", "Location" : "Atrašanās vieta", diff --git a/apps/settings/l10n/mk.js b/apps/settings/l10n/mk.js index 775c26fc12d..e619e52400a 100644 --- a/apps/settings/l10n/mk.js +++ b/apps/settings/l10n/mk.js @@ -180,6 +180,7 @@ OC.L10N.register( "No apps found for your version" : "За вашата верзија не се пронајдени апликации", "_%n app has an update available_::_%n apps have an update available_" : ["За %n апликација има достапно ажурирање","За %n апликации има достапно ажурирање"], "_Update_::_Update all_" : ["Ажурирај","Ажурирај ги сите"], + "Group name" : "Име на група", "Type" : "Вид", "Learn more" : "Научи повеќе", "Confirm" : "Потврди", @@ -376,7 +377,6 @@ OC.L10N.register( "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Како администратор, можете детално да го прилагодите однесувањето на споделувањето. Погледнете ја документацијата за повеќе информации.", "You need to enable the File sharing App." : "Треба да ја овозможите апликацијата Споделување на датотеки.", "Admins" : "Администратори", - "Group name" : "Име на група", "Sending…" : "Испраќа…", "Email sent" : "Е-порака пратена", "Location" : "Локација", diff --git a/apps/settings/l10n/mk.json b/apps/settings/l10n/mk.json index 25c428ee425..a5dfc408664 100644 --- a/apps/settings/l10n/mk.json +++ b/apps/settings/l10n/mk.json @@ -178,6 +178,7 @@ "No apps found for your version" : "За вашата верзија не се пронајдени апликации", "_%n app has an update available_::_%n apps have an update available_" : ["За %n апликација има достапно ажурирање","За %n апликации има достапно ажурирање"], "_Update_::_Update all_" : ["Ажурирај","Ажурирај ги сите"], + "Group name" : "Име на група", "Type" : "Вид", "Learn more" : "Научи повеќе", "Confirm" : "Потврди", @@ -374,7 +375,6 @@ "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Како администратор, можете детално да го прилагодите однесувањето на споделувањето. Погледнете ја документацијата за повеќе информации.", "You need to enable the File sharing App." : "Треба да ја овозможите апликацијата Споделување на датотеки.", "Admins" : "Администратори", - "Group name" : "Име на група", "Sending…" : "Испраќа…", "Email sent" : "Е-порака пратена", "Location" : "Локација", diff --git a/apps/settings/l10n/nb.js b/apps/settings/l10n/nb.js index e17a2287108..3ec4b81a121 100644 --- a/apps/settings/l10n/nb.js +++ b/apps/settings/l10n/nb.js @@ -403,6 +403,12 @@ OC.L10N.register( "No apps found for your version" : "Ingen apper funnet for din versjon", "_%n app has an update available_::_%n apps have an update available_" : ["%n app har en oppdatering tilgjengelig","%n apper har en oppdatering tilgjengelig"], "_Update_::_Update all_" : ["Oppdater","Oppdater alle"], + "Failed to create group" : "Kunne ikke opprette gruppe", + "Creating group…" : "Oppretter gruppe...", + "Create group" : "Opprett gruppe", + "Group name" : "Gruppenavn", + "Please enter a valid group name" : "Vennligst angi et gyldig gruppenavn", + "Loading groups…" : "Laster grupper...", "Could not load app discover section" : "Kunne ikke laste inn appoppdagelsesdelen", "Could not render element" : "Kunne ikke gjengi element", "Nothing to show" : "Ingenting å vise her", @@ -712,12 +718,7 @@ OC.L10N.register( "All accounts" : "Alle kontoer", "Admins" : "Administratorer", "Account group: {group}" : "Kontogruppe: {group}", - "Failed to create group" : "Kunne ikke opprette gruppe", "Account management" : "Kontoadministrasjon", - "Creating group…" : "Oppretter gruppe...", - "Create group" : "Opprett gruppe", - "Group name" : "Gruppenavn", - "Please enter a valid group name" : "Vennligst angi et gyldig gruppenavn", "Sending…" : "Sender…", "Email sent" : "E-post sendt", "Location" : "Sted", diff --git a/apps/settings/l10n/nb.json b/apps/settings/l10n/nb.json index 2f093d93453..2fc51335c4b 100644 --- a/apps/settings/l10n/nb.json +++ b/apps/settings/l10n/nb.json @@ -401,6 +401,12 @@ "No apps found for your version" : "Ingen apper funnet for din versjon", "_%n app has an update available_::_%n apps have an update available_" : ["%n app har en oppdatering tilgjengelig","%n apper har en oppdatering tilgjengelig"], "_Update_::_Update all_" : ["Oppdater","Oppdater alle"], + "Failed to create group" : "Kunne ikke opprette gruppe", + "Creating group…" : "Oppretter gruppe...", + "Create group" : "Opprett gruppe", + "Group name" : "Gruppenavn", + "Please enter a valid group name" : "Vennligst angi et gyldig gruppenavn", + "Loading groups…" : "Laster grupper...", "Could not load app discover section" : "Kunne ikke laste inn appoppdagelsesdelen", "Could not render element" : "Kunne ikke gjengi element", "Nothing to show" : "Ingenting å vise her", @@ -710,12 +716,7 @@ "All accounts" : "Alle kontoer", "Admins" : "Administratorer", "Account group: {group}" : "Kontogruppe: {group}", - "Failed to create group" : "Kunne ikke opprette gruppe", "Account management" : "Kontoadministrasjon", - "Creating group…" : "Oppretter gruppe...", - "Create group" : "Opprett gruppe", - "Group name" : "Gruppenavn", - "Please enter a valid group name" : "Vennligst angi et gyldig gruppenavn", "Sending…" : "Sender…", "Email sent" : "E-post sendt", "Location" : "Sted", diff --git a/apps/settings/l10n/nl.js b/apps/settings/l10n/nl.js index d50a686ef0a..100bda83f0b 100644 --- a/apps/settings/l10n/nl.js +++ b/apps/settings/l10n/nl.js @@ -264,6 +264,12 @@ OC.L10N.register( "No apps found for your version" : "Geen apps gevonden voor jouw versie", "_%n app has an update available_::_%n apps have an update available_" : ["Voor %n app is een update beschikbaar","Voor %n apps is een update beschikbaar"], "_Update_::_Update all_" : ["Update","Update alles"], + "Failed to create group" : "Creëren groep mislukt", + "Creating group…" : "Creëren groep...", + "Create group" : "Creëer groep", + "Group name" : "Groepsnaam", + "Please enter a valid group name" : "Voer een valide groepsnaam in", + "Loading groups…" : "Laden groepen...", "Could not load app discover section" : "Kon het onderdeel app ontdekken niet laden", "Could not render element" : "Kon het element niet verwerken", "Nothing to show" : "Niets te tonen", @@ -532,12 +538,7 @@ OC.L10N.register( "All accounts" : "Alle accounts", "Admins" : "Beheerders", "Account group: {group}" : "Accountgroep: {group}", - "Failed to create group" : "Creëren groep mislukt", "Account management" : "Accountbeheer", - "Creating group…" : "Creëren groep...", - "Create group" : "Creëer groep", - "Group name" : "Groepsnaam", - "Please enter a valid group name" : "Voer een valide groepsnaam in", "Sending…" : "Versturen...", "Email sent" : "E-mail verzonden", "Location" : "Locatie", diff --git a/apps/settings/l10n/nl.json b/apps/settings/l10n/nl.json index b9bdcfa9c82..7d9aad0e26f 100644 --- a/apps/settings/l10n/nl.json +++ b/apps/settings/l10n/nl.json @@ -262,6 +262,12 @@ "No apps found for your version" : "Geen apps gevonden voor jouw versie", "_%n app has an update available_::_%n apps have an update available_" : ["Voor %n app is een update beschikbaar","Voor %n apps is een update beschikbaar"], "_Update_::_Update all_" : ["Update","Update alles"], + "Failed to create group" : "Creëren groep mislukt", + "Creating group…" : "Creëren groep...", + "Create group" : "Creëer groep", + "Group name" : "Groepsnaam", + "Please enter a valid group name" : "Voer een valide groepsnaam in", + "Loading groups…" : "Laden groepen...", "Could not load app discover section" : "Kon het onderdeel app ontdekken niet laden", "Could not render element" : "Kon het element niet verwerken", "Nothing to show" : "Niets te tonen", @@ -530,12 +536,7 @@ "All accounts" : "Alle accounts", "Admins" : "Beheerders", "Account group: {group}" : "Accountgroep: {group}", - "Failed to create group" : "Creëren groep mislukt", "Account management" : "Accountbeheer", - "Creating group…" : "Creëren groep...", - "Create group" : "Creëer groep", - "Group name" : "Groepsnaam", - "Please enter a valid group name" : "Voer een valide groepsnaam in", "Sending…" : "Versturen...", "Email sent" : "E-mail verzonden", "Location" : "Locatie", diff --git a/apps/settings/l10n/oc.js b/apps/settings/l10n/oc.js index fa8898b1b00..8f5a7a5b053 100644 --- a/apps/settings/l10n/oc.js +++ b/apps/settings/l10n/oc.js @@ -90,6 +90,7 @@ OC.L10N.register( "Version" : "Version", "Actions" : "Accions", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplicacion an una mesa a jorn de disponibla","%n aplicacions an una mesa a jorn de disponibla"], + "Group name" : "Nom del grop", "Loading" : "Cargament", "Type" : "Tipe", "Confirm" : "Confirmar", @@ -180,7 +181,6 @@ OC.L10N.register( "No devices configured." : "Cap de periferic pas configurat.", "Your browser does not support WebAuthn." : "Vòstre navigador es pas compatible amb WebAuthn.", "Admins" : "Admins", - "Group name" : "Nom del grop", "Sending…" : "Mandadís…", "Email sent" : "Corrièl mandat", "Location" : "Emplaçament", diff --git a/apps/settings/l10n/oc.json b/apps/settings/l10n/oc.json index 4304ea8e04b..805af6783ba 100644 --- a/apps/settings/l10n/oc.json +++ b/apps/settings/l10n/oc.json @@ -88,6 +88,7 @@ "Version" : "Version", "Actions" : "Accions", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplicacion an una mesa a jorn de disponibla","%n aplicacions an una mesa a jorn de disponibla"], + "Group name" : "Nom del grop", "Loading" : "Cargament", "Type" : "Tipe", "Confirm" : "Confirmar", @@ -178,7 +179,6 @@ "No devices configured." : "Cap de periferic pas configurat.", "Your browser does not support WebAuthn." : "Vòstre navigador es pas compatible amb WebAuthn.", "Admins" : "Admins", - "Group name" : "Nom del grop", "Sending…" : "Mandadís…", "Email sent" : "Corrièl mandat", "Location" : "Emplaçament", diff --git a/apps/settings/l10n/pl.js b/apps/settings/l10n/pl.js index dd68d97a5f7..0fca9376c3b 100644 --- a/apps/settings/l10n/pl.js +++ b/apps/settings/l10n/pl.js @@ -350,6 +350,12 @@ OC.L10N.register( "No apps found for your version" : "Nie znaleziono aplikacji dla Twojej wersji", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplikacja ma dostępną aktualizację","%n aplikacje mają dostępną aktualizację","%n aplikacji mają dostępną aktualizację","%n aplikacji mają dostępną aktualizację"], "_Update_::_Update all_" : ["Zaktualizuj","Zaktualizuj","Zaktualizuj","Zaktualizuj wszystko"], + "Failed to create group" : "Nie udało się utworzyć grupy", + "Creating group…" : "Tworzenie grupy", + "Create group" : "Utwórz grupę", + "Group name" : "Nazwa grupy", + "Please enter a valid group name" : "Podaj właściwą nazwę grupy", + "Loading groups…" : "Wczytywanie grup…", "Could not load app discover section" : "Nie można wczytać sekcji odkrywania aplikacji", "Could not render element" : "Nie można wyrenderować elementu", "Nothing to show" : "Nie ma nic do pokazania", @@ -649,12 +655,7 @@ OC.L10N.register( "All accounts" : "Wszystkie konta", "Admins" : "Administratorzy", "Account group: {group}" : "Grupa kont: {group}", - "Failed to create group" : "Nie udało się utworzyć grupy", "Account management" : "Zarządzanie kontem", - "Creating group…" : "Tworzenie grupy", - "Create group" : "Utwórz grupę", - "Group name" : "Nazwa grupy", - "Please enter a valid group name" : "Podaj właściwą nazwę grupy", "Sending…" : "Wysyłam…", "Email sent" : "E-mail został wysłany", "Location" : "Lokalizacja", diff --git a/apps/settings/l10n/pl.json b/apps/settings/l10n/pl.json index 6747322d0a6..1d3b41a82f5 100644 --- a/apps/settings/l10n/pl.json +++ b/apps/settings/l10n/pl.json @@ -348,6 +348,12 @@ "No apps found for your version" : "Nie znaleziono aplikacji dla Twojej wersji", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplikacja ma dostępną aktualizację","%n aplikacje mają dostępną aktualizację","%n aplikacji mają dostępną aktualizację","%n aplikacji mają dostępną aktualizację"], "_Update_::_Update all_" : ["Zaktualizuj","Zaktualizuj","Zaktualizuj","Zaktualizuj wszystko"], + "Failed to create group" : "Nie udało się utworzyć grupy", + "Creating group…" : "Tworzenie grupy", + "Create group" : "Utwórz grupę", + "Group name" : "Nazwa grupy", + "Please enter a valid group name" : "Podaj właściwą nazwę grupy", + "Loading groups…" : "Wczytywanie grup…", "Could not load app discover section" : "Nie można wczytać sekcji odkrywania aplikacji", "Could not render element" : "Nie można wyrenderować elementu", "Nothing to show" : "Nie ma nic do pokazania", @@ -647,12 +653,7 @@ "All accounts" : "Wszystkie konta", "Admins" : "Administratorzy", "Account group: {group}" : "Grupa kont: {group}", - "Failed to create group" : "Nie udało się utworzyć grupy", "Account management" : "Zarządzanie kontem", - "Creating group…" : "Tworzenie grupy", - "Create group" : "Utwórz grupę", - "Group name" : "Nazwa grupy", - "Please enter a valid group name" : "Podaj właściwą nazwę grupy", "Sending…" : "Wysyłam…", "Email sent" : "E-mail został wysłany", "Location" : "Lokalizacja", diff --git a/apps/settings/l10n/pt_BR.js b/apps/settings/l10n/pt_BR.js index d8ed7ff79a9..22fbd35db94 100644 --- a/apps/settings/l10n/pt_BR.js +++ b/apps/settings/l10n/pt_BR.js @@ -428,6 +428,15 @@ OC.L10N.register( "No apps found for your version" : "Nenhum aplicativo encontrado para a sua versão", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplicativo tem atualização disponível","%n aplicativos tem atualização disponível","%n aplicativos tem atualização disponível"], "_Update_::_Update all_" : ["Atualizar","Atualize tudo","Atualize tudo"], + "Failed to load groups" : "Falha ao carregar grupos", + "Failed to create group" : "Falha ao criar grupo", + "Creating group…" : "Criando grupo…", + "Create group" : "Criar grupo", + "Group name" : "Nome do grupo", + "Please enter a valid group name" : "Insira um nome de grupo válido", + "Search groups…" : "Pesquisar grupos…", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Lista de grupos. Essa lista não está totalmente preenchida por motivos de desempenho. Os grupos serão carregados à medida que você navegar ou pesquisar na lista.", + "Loading groups…" : "Carregando grupos...", "Could not load app discover section" : "Não foi possível carregar a seção de descoberta do aplicativo", "Could not render element" : "Não foi possível renderizar o elemento", "Nothing to show" : "Nada a mostrar", @@ -559,6 +568,7 @@ OC.L10N.register( "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." : "A criptografia do lado do servidor torna possível criptografar arquivos que são carregados para este servidor. Isso diminui um pouco o desempenho portanto habilite apenas se necessário.", "To encrypt all existing files run this OCC command:" : "Para criptografar todos os arquivos existentes, execute este comando OCC:", "Enable server-side encryption" : "Ativar a criptografia do lado do servidor", + "Disabling server side encryption is only possible using OCC, please refer to the documentation." : "A desativação da criptografia do lado do servidor só é possível usando o OCC; consulte a documentação.", "No encryption module loaded, please enable an encryption module in the app menu." : "Nenhum módulo de criptografia carregado. Por favor, ative um deles no menu de aplicativos.", "Select default encryption module:" : "Selecione o módulo de criptografia padrão:", "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}" : "Você precisa migrar suas chaves de criptografia da criptografia antiga (ownCloud <= 8.0) para a nova. Ative o \"módulo de criptografia padrão\" e execute {command}", @@ -567,9 +577,11 @@ OC.L10N.register( "Confirm enabling encryption" : "Confirmar a ativação da criptografia", "Please read carefully before activating server-side encryption:" : "Leia atentamente antes de ativar a criptografia do lado do servidor:", "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." : "Uma vez que a criptografia é ativada, todos os arquivos enviados ao servidor a partir desse ponto em diante serão criptografados e assim ficarão no servidor. Só será possível desativar a criptografia em uma data posterior se o módulo de criptografia ativo suportar essa função e todas as pré-condições sejam cumpridas (ex., defininindo uma chave de recuperação).", + "By default a master key for the whole instance will be generated. Please check if that level of access is compliant with your needs." : "Por padrão, será gerada uma chave mestra para toda a instância. Verifique se esse nível de acesso está de acordo com suas necessidades.", "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." : "Criptografia por si só não garante a segurança do sistema. Por favor, veja a documentação para mais informações sobe como o aplicativo de criptografia funciona e os casos de uso suportados.", "Be aware that encryption always increases the file size." : "Esteja ciente de que a criptografia sempre aumenta o tamanho do arquivo.", "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "É sempre bom criar backups regulares dos seus dados. No caso de criptografia, certifique-se de fazer backup das chaves de criptografia juntamente com os seus dados.", + "Refer to the admin documentation on how to manually also encrypt existing files." : "Consulte a documentação do administrador para saber como criptografar manualmente também os arquivos existentes.", "This is the final warning: Do you really want to enable encryption?" : "Este é o aviso final: Você realmente quer ativar a criptografia?", "Failed to remove group \"{group}\"" : "Falha ao remover o grupo \"{group}\"", "Please confirm the group removal" : "Por favor confirme a remoção do grupo", @@ -594,6 +606,7 @@ OC.L10N.register( "Picture provided by original account" : "Imagem fornecida pela conta original", "Set as profile picture" : "Definir como imagem de perfil", "Please note that it can take up to 24 hours for your profile picture to be updated everywhere." : "Observe que pode levar até 24 horas para que sua foto de perfil seja atualizada em todos os lugares.", + "Your biography. Markdown is supported." : "Sua biografia. Markdown é suportado.", "Unable to update date of birth" : "Não foi possível atualizar a data de nascimento", "Enter your date of birth" : "Digite sua data de nascimento", "You are using {s}{usage}{/s}" : "Você está usando {s}{usage}{/s}", @@ -665,6 +678,7 @@ OC.L10N.register( "Set line manager" : "Definir gerente de linha", "Account name will be autogenerated" : "O nome da conta será gerado automaticamente", "Account name (required)" : "Nome da conta (obrigatório)", + "Failed to search groups" : "Falha ao pesquisar grupos", "New account" : "Nova conta", "Display name" : "Nome de exibição", "Either password or email is required" : "É necessário email ou senha", @@ -704,6 +718,8 @@ OC.L10N.register( "Remote wipe of devices" : "Limpeza remota de dispositivos", "Wipe {userid}'s devices" : "Limpar os dispositivos de {userid}", "Wiped {userid}'s devices" : "Dispositivos de {userid}'s apagados", + "Failed to load groups with details" : "Falha ao carregar grupos com detalhes", + "Failed to load subadmin groups with details" : "Falha ao carregar grupos de subadministradores com detalhes", "Failed to update line manager" : "Falha ao atualizar o gerente de linha", "Fully delete {userid}'s account including all their personal files, app data, etc." : "Excluir a conta de {userid}, incluindo todos os arquivos pessoais, dados de aplicativos, etc", "Account deletion" : "Exclusão de conta", @@ -736,6 +752,7 @@ OC.L10N.register( "Sorting" : "Classificação", "The system config enforces sorting the groups by name. This also disables showing the member count." : "A configuração do sistema impõe a classificação dos grupos por nome. Isso também desabilita a exibição da contagem de membros.", "Group list sorting" : "Classificação de lista de grupos", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "Por motivos de desempenho, a classificação só se aplica aos grupos carregados no momento. Os grupos serão carregados à medida que você navegar ou pesquisar na lista.", "By member count" : "Por contagem de membros", "By name" : "Por nome", "Send email" : "Enviar e-mail", @@ -765,14 +782,10 @@ OC.L10N.register( "All accounts" : "Todas as contas", "Admins" : "Administradores", "Account group: {group}" : "Grupo de contas: {group}", - "Failed to create group" : "Falha ao criar grupo", "Account management" : "Gerenciamento de contas", - "Creating group…" : "Criando grupo…", - "Create group" : "Criar grupo", - "Group name" : "Nome do grupo", - "Please enter a valid group name" : "Insira um nome de grupo válido", "Sending…" : "Enviando...", "Email sent" : "E-mail enviado", + "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Por motivos de desempenho, quando você ativa a criptografia em um servidor Nextcloud, somente os arquivos novos e alterados são criptografados.", "Location" : "Localização", "Profile picture" : "Imagem do perfil", "About" : "Sobre", @@ -804,6 +817,7 @@ OC.L10N.register( "Show to everyone" : "Mostrar para todos", "Show to logged in accounts only" : "Mostrar apenas para contas logadas", "Hide" : "Esconder ", + "Manually installed apps cannot be updated" : "Os aplicativos instalados manualmente não podem ser atualizados", "{progress}% Deploying …" : "{progress}% Implantando …", "{progress}% Initializing …" : "{progress}% Inicializando …", "Health checking" : "Verificação de saúde", diff --git a/apps/settings/l10n/pt_BR.json b/apps/settings/l10n/pt_BR.json index b7e6e74ef75..3d660594c0e 100644 --- a/apps/settings/l10n/pt_BR.json +++ b/apps/settings/l10n/pt_BR.json @@ -426,6 +426,15 @@ "No apps found for your version" : "Nenhum aplicativo encontrado para a sua versão", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplicativo tem atualização disponível","%n aplicativos tem atualização disponível","%n aplicativos tem atualização disponível"], "_Update_::_Update all_" : ["Atualizar","Atualize tudo","Atualize tudo"], + "Failed to load groups" : "Falha ao carregar grupos", + "Failed to create group" : "Falha ao criar grupo", + "Creating group…" : "Criando grupo…", + "Create group" : "Criar grupo", + "Group name" : "Nome do grupo", + "Please enter a valid group name" : "Insira um nome de grupo válido", + "Search groups…" : "Pesquisar grupos…", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Lista de grupos. Essa lista não está totalmente preenchida por motivos de desempenho. Os grupos serão carregados à medida que você navegar ou pesquisar na lista.", + "Loading groups…" : "Carregando grupos...", "Could not load app discover section" : "Não foi possível carregar a seção de descoberta do aplicativo", "Could not render element" : "Não foi possível renderizar o elemento", "Nothing to show" : "Nada a mostrar", @@ -557,6 +566,7 @@ "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." : "A criptografia do lado do servidor torna possível criptografar arquivos que são carregados para este servidor. Isso diminui um pouco o desempenho portanto habilite apenas se necessário.", "To encrypt all existing files run this OCC command:" : "Para criptografar todos os arquivos existentes, execute este comando OCC:", "Enable server-side encryption" : "Ativar a criptografia do lado do servidor", + "Disabling server side encryption is only possible using OCC, please refer to the documentation." : "A desativação da criptografia do lado do servidor só é possível usando o OCC; consulte a documentação.", "No encryption module loaded, please enable an encryption module in the app menu." : "Nenhum módulo de criptografia carregado. Por favor, ative um deles no menu de aplicativos.", "Select default encryption module:" : "Selecione o módulo de criptografia padrão:", "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}" : "Você precisa migrar suas chaves de criptografia da criptografia antiga (ownCloud <= 8.0) para a nova. Ative o \"módulo de criptografia padrão\" e execute {command}", @@ -565,9 +575,11 @@ "Confirm enabling encryption" : "Confirmar a ativação da criptografia", "Please read carefully before activating server-side encryption:" : "Leia atentamente antes de ativar a criptografia do lado do servidor:", "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." : "Uma vez que a criptografia é ativada, todos os arquivos enviados ao servidor a partir desse ponto em diante serão criptografados e assim ficarão no servidor. Só será possível desativar a criptografia em uma data posterior se o módulo de criptografia ativo suportar essa função e todas as pré-condições sejam cumpridas (ex., defininindo uma chave de recuperação).", + "By default a master key for the whole instance will be generated. Please check if that level of access is compliant with your needs." : "Por padrão, será gerada uma chave mestra para toda a instância. Verifique se esse nível de acesso está de acordo com suas necessidades.", "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." : "Criptografia por si só não garante a segurança do sistema. Por favor, veja a documentação para mais informações sobe como o aplicativo de criptografia funciona e os casos de uso suportados.", "Be aware that encryption always increases the file size." : "Esteja ciente de que a criptografia sempre aumenta o tamanho do arquivo.", "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "É sempre bom criar backups regulares dos seus dados. No caso de criptografia, certifique-se de fazer backup das chaves de criptografia juntamente com os seus dados.", + "Refer to the admin documentation on how to manually also encrypt existing files." : "Consulte a documentação do administrador para saber como criptografar manualmente também os arquivos existentes.", "This is the final warning: Do you really want to enable encryption?" : "Este é o aviso final: Você realmente quer ativar a criptografia?", "Failed to remove group \"{group}\"" : "Falha ao remover o grupo \"{group}\"", "Please confirm the group removal" : "Por favor confirme a remoção do grupo", @@ -592,6 +604,7 @@ "Picture provided by original account" : "Imagem fornecida pela conta original", "Set as profile picture" : "Definir como imagem de perfil", "Please note that it can take up to 24 hours for your profile picture to be updated everywhere." : "Observe que pode levar até 24 horas para que sua foto de perfil seja atualizada em todos os lugares.", + "Your biography. Markdown is supported." : "Sua biografia. Markdown é suportado.", "Unable to update date of birth" : "Não foi possível atualizar a data de nascimento", "Enter your date of birth" : "Digite sua data de nascimento", "You are using {s}{usage}{/s}" : "Você está usando {s}{usage}{/s}", @@ -663,6 +676,7 @@ "Set line manager" : "Definir gerente de linha", "Account name will be autogenerated" : "O nome da conta será gerado automaticamente", "Account name (required)" : "Nome da conta (obrigatório)", + "Failed to search groups" : "Falha ao pesquisar grupos", "New account" : "Nova conta", "Display name" : "Nome de exibição", "Either password or email is required" : "É necessário email ou senha", @@ -702,6 +716,8 @@ "Remote wipe of devices" : "Limpeza remota de dispositivos", "Wipe {userid}'s devices" : "Limpar os dispositivos de {userid}", "Wiped {userid}'s devices" : "Dispositivos de {userid}'s apagados", + "Failed to load groups with details" : "Falha ao carregar grupos com detalhes", + "Failed to load subadmin groups with details" : "Falha ao carregar grupos de subadministradores com detalhes", "Failed to update line manager" : "Falha ao atualizar o gerente de linha", "Fully delete {userid}'s account including all their personal files, app data, etc." : "Excluir a conta de {userid}, incluindo todos os arquivos pessoais, dados de aplicativos, etc", "Account deletion" : "Exclusão de conta", @@ -734,6 +750,7 @@ "Sorting" : "Classificação", "The system config enforces sorting the groups by name. This also disables showing the member count." : "A configuração do sistema impõe a classificação dos grupos por nome. Isso também desabilita a exibição da contagem de membros.", "Group list sorting" : "Classificação de lista de grupos", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "Por motivos de desempenho, a classificação só se aplica aos grupos carregados no momento. Os grupos serão carregados à medida que você navegar ou pesquisar na lista.", "By member count" : "Por contagem de membros", "By name" : "Por nome", "Send email" : "Enviar e-mail", @@ -763,14 +780,10 @@ "All accounts" : "Todas as contas", "Admins" : "Administradores", "Account group: {group}" : "Grupo de contas: {group}", - "Failed to create group" : "Falha ao criar grupo", "Account management" : "Gerenciamento de contas", - "Creating group…" : "Criando grupo…", - "Create group" : "Criar grupo", - "Group name" : "Nome do grupo", - "Please enter a valid group name" : "Insira um nome de grupo válido", "Sending…" : "Enviando...", "Email sent" : "E-mail enviado", + "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Por motivos de desempenho, quando você ativa a criptografia em um servidor Nextcloud, somente os arquivos novos e alterados são criptografados.", "Location" : "Localização", "Profile picture" : "Imagem do perfil", "About" : "Sobre", @@ -802,6 +815,7 @@ "Show to everyone" : "Mostrar para todos", "Show to logged in accounts only" : "Mostrar apenas para contas logadas", "Hide" : "Esconder ", + "Manually installed apps cannot be updated" : "Os aplicativos instalados manualmente não podem ser atualizados", "{progress}% Deploying …" : "{progress}% Implantando …", "{progress}% Initializing …" : "{progress}% Inicializando …", "Health checking" : "Verificação de saúde", diff --git a/apps/settings/l10n/pt_PT.js b/apps/settings/l10n/pt_PT.js index bedf4810844..c9fe6f0d14a 100644 --- a/apps/settings/l10n/pt_PT.js +++ b/apps/settings/l10n/pt_PT.js @@ -131,6 +131,7 @@ OC.L10N.register( "Results from other categories" : "Resultados de outras categorias", "No apps found for your version" : "Nenhuma aplicação encontrada para a sua versão", "_Update_::_Update all_" : ["Atualizar","Atualizar todos","Atualizar todos"], + "Group name" : "Nome do grupo", "Loading" : "A carregar", "Type" : "Tipo", "Learn more" : "Conheça melhor", @@ -237,7 +238,6 @@ OC.L10N.register( "Default quota" : "Quota padrão", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador pode afinar o comportamento de partilha. Por favor veja a documentação para mais informação.", "Admins" : "Administrador", - "Group name" : "Nome do grupo", "Sending…" : "A enviar...", "Email sent" : "Mensagem de correio eletrónico enviada", "Location" : "Localização", diff --git a/apps/settings/l10n/pt_PT.json b/apps/settings/l10n/pt_PT.json index a184a4b85b7..8dd56c1dc4e 100644 --- a/apps/settings/l10n/pt_PT.json +++ b/apps/settings/l10n/pt_PT.json @@ -129,6 +129,7 @@ "Results from other categories" : "Resultados de outras categorias", "No apps found for your version" : "Nenhuma aplicação encontrada para a sua versão", "_Update_::_Update all_" : ["Atualizar","Atualizar todos","Atualizar todos"], + "Group name" : "Nome do grupo", "Loading" : "A carregar", "Type" : "Tipo", "Learn more" : "Conheça melhor", @@ -235,7 +236,6 @@ "Default quota" : "Quota padrão", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador pode afinar o comportamento de partilha. Por favor veja a documentação para mais informação.", "Admins" : "Administrador", - "Group name" : "Nome do grupo", "Sending…" : "A enviar...", "Email sent" : "Mensagem de correio eletrónico enviada", "Location" : "Localização", diff --git a/apps/settings/l10n/ro.js b/apps/settings/l10n/ro.js index 47038bafb8e..bb160a45ffa 100644 --- a/apps/settings/l10n/ro.js +++ b/apps/settings/l10n/ro.js @@ -145,6 +145,7 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Acțiuni", "No apps found for your version" : "Nu au fost găsite aplicații pentru versiunea ta", + "Group name" : "Numele grupului", "Type" : "Tip", "Learn more" : "Află mai mult", "Confirm" : "Confirmă", @@ -221,7 +222,6 @@ OC.L10N.register( "Unnamed device" : "Dispozitiv fără nume", "Your browser does not support WebAuthn." : "Browserul dvs. nu acceptă WebAuthn.", "Admins" : "Administratori", - "Group name" : "Numele grupului", "Sending…" : "Se trimite...", "Email sent" : "Mesajul a fost expediat", "Location" : "Locație", diff --git a/apps/settings/l10n/ro.json b/apps/settings/l10n/ro.json index d53fd31de1c..84186fcf74a 100644 --- a/apps/settings/l10n/ro.json +++ b/apps/settings/l10n/ro.json @@ -143,6 +143,7 @@ "Level" : "Nivel", "Actions" : "Acțiuni", "No apps found for your version" : "Nu au fost găsite aplicații pentru versiunea ta", + "Group name" : "Numele grupului", "Type" : "Tip", "Learn more" : "Află mai mult", "Confirm" : "Confirmă", @@ -219,7 +220,6 @@ "Unnamed device" : "Dispozitiv fără nume", "Your browser does not support WebAuthn." : "Browserul dvs. nu acceptă WebAuthn.", "Admins" : "Administratori", - "Group name" : "Numele grupului", "Sending…" : "Se trimite...", "Email sent" : "Mesajul a fost expediat", "Location" : "Locație", diff --git a/apps/settings/l10n/ru.js b/apps/settings/l10n/ru.js index 38a30a19c31..c5b98f91d85 100644 --- a/apps/settings/l10n/ru.js +++ b/apps/settings/l10n/ru.js @@ -131,6 +131,7 @@ OC.L10N.register( "Unlimited" : "Неограничено", "Verifying" : "Проверка", "Allowed admin IP ranges" : "Разрешенные диапазоны IP-адресов администратора", + "Admin IP filtering isn't applied." : "Фильтрация IP-адресов администратора не применяется.", "Configuration key \"%1$s\" expects an array (%2$s found). Admin IP range validation will not be applied." : "Ключ конфигурации \"%1$s\" ожидает массив (обнаружен %2$s). Проверка диапазона IP-адресов администратора не будет применена.", "Configuration key \"%1$s\" contains invalid IP range(s): \"%2$s\"" : "Конфигурационный ключ \"%1$s\" содержит недопустимый диапазон(ы) IP-адресов: \"%2$s\"", "Admin IP filtering is correctly configured." : "Фильтрация IP-адресов администратора настроена правильно.", @@ -203,6 +204,8 @@ OC.L10N.register( "Old server-side-encryption" : "Устаревший режим шифрования на стороне сервера", "Disabled" : "Отключено", "The old server-side-encryption format is enabled. We recommend disabling this." : "Задействован устаревший режим шифрования файлов на стороне сервера. Рекомендуется отключить такое шифрование.", + "Logging level" : "Уровень системного журнала", + "Logging level configured correctly." : "Уровень ведения системного журнала настроен правильно.", "Maintenance window start" : "Начало окна обслуживания", "Server has no maintenance window start time configured. This means resource intensive daily background jobs will also be executed during your main usage time. We recommend to set it to a time of low usage, so users are less impacted by the load caused from these heavy tasks." : "Не настроено время начала окна обслуживания. Это означает, что ресурсоемкие ежедневные фоновые задачи будут выполняться во время основного использования. Рекомендуется установить время в период низкой активности, чтобы снизить влияние выполнения ресурсоемких процедур на пользователей.", "Maintenance window to execute heavy background jobs is between {start}:00 UTC and {end}:00 UTC" : "Период обслуживания для выполнения тяжелых фоновых задач — с {start}:00 UTC до {end}:00 UTC", @@ -421,6 +424,12 @@ OC.L10N.register( "No apps found for your version" : "Приложений, совместимых с установленной версией Nextcloud, не найдено", "_%n app has an update available_::_%n apps have an update available_" : ["Возможно обновить %n приложение.","Возможно обновить %n приложения.","Возможно обновить %n приложений.","Возможно обновить %n приложения."], "_Update_::_Update all_" : ["Обновить","Обновить все","Обновить все","Обновить все"], + "Failed to create group" : "Не удалось создать группу", + "Creating group…" : "Создание группы…", + "Create group" : "Создать группу", + "Group name" : "Название группы", + "Please enter a valid group name" : "Пожалуйста, введите допустимое название группы", + "Loading groups…" : "Загрузка групп…", "Could not load app discover section" : "Не удалось загрузить раздел «Центр приложений»", "Could not render element" : "Не удалось подготовить объект к показу", "Nothing to show" : "Нет ни одного объекта для просмотра", @@ -758,12 +767,7 @@ OC.L10N.register( "All accounts" : "Все аккаунты", "Admins" : "Администраторы", "Account group: {group}" : "Группа учётных записей: {group}", - "Failed to create group" : "Не удалось создать группу", "Account management" : "Управление учётными записями", - "Creating group…" : "Создание группы…", - "Create group" : "Создать группу", - "Group name" : "Название группы", - "Please enter a valid group name" : "Пожалуйста, введите допустимое название группы", "Sending…" : "Отправка…", "Email sent" : "Письмо отправлено", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "В целях повышения производительности при включении шифрования на сервере Nextcloud шифруются только новые и измененные файлы.", diff --git a/apps/settings/l10n/ru.json b/apps/settings/l10n/ru.json index a5a290ce4d7..33152043553 100644 --- a/apps/settings/l10n/ru.json +++ b/apps/settings/l10n/ru.json @@ -129,6 +129,7 @@ "Unlimited" : "Неограничено", "Verifying" : "Проверка", "Allowed admin IP ranges" : "Разрешенные диапазоны IP-адресов администратора", + "Admin IP filtering isn't applied." : "Фильтрация IP-адресов администратора не применяется.", "Configuration key \"%1$s\" expects an array (%2$s found). Admin IP range validation will not be applied." : "Ключ конфигурации \"%1$s\" ожидает массив (обнаружен %2$s). Проверка диапазона IP-адресов администратора не будет применена.", "Configuration key \"%1$s\" contains invalid IP range(s): \"%2$s\"" : "Конфигурационный ключ \"%1$s\" содержит недопустимый диапазон(ы) IP-адресов: \"%2$s\"", "Admin IP filtering is correctly configured." : "Фильтрация IP-адресов администратора настроена правильно.", @@ -201,6 +202,8 @@ "Old server-side-encryption" : "Устаревший режим шифрования на стороне сервера", "Disabled" : "Отключено", "The old server-side-encryption format is enabled. We recommend disabling this." : "Задействован устаревший режим шифрования файлов на стороне сервера. Рекомендуется отключить такое шифрование.", + "Logging level" : "Уровень системного журнала", + "Logging level configured correctly." : "Уровень ведения системного журнала настроен правильно.", "Maintenance window start" : "Начало окна обслуживания", "Server has no maintenance window start time configured. This means resource intensive daily background jobs will also be executed during your main usage time. We recommend to set it to a time of low usage, so users are less impacted by the load caused from these heavy tasks." : "Не настроено время начала окна обслуживания. Это означает, что ресурсоемкие ежедневные фоновые задачи будут выполняться во время основного использования. Рекомендуется установить время в период низкой активности, чтобы снизить влияние выполнения ресурсоемких процедур на пользователей.", "Maintenance window to execute heavy background jobs is between {start}:00 UTC and {end}:00 UTC" : "Период обслуживания для выполнения тяжелых фоновых задач — с {start}:00 UTC до {end}:00 UTC", @@ -419,6 +422,12 @@ "No apps found for your version" : "Приложений, совместимых с установленной версией Nextcloud, не найдено", "_%n app has an update available_::_%n apps have an update available_" : ["Возможно обновить %n приложение.","Возможно обновить %n приложения.","Возможно обновить %n приложений.","Возможно обновить %n приложения."], "_Update_::_Update all_" : ["Обновить","Обновить все","Обновить все","Обновить все"], + "Failed to create group" : "Не удалось создать группу", + "Creating group…" : "Создание группы…", + "Create group" : "Создать группу", + "Group name" : "Название группы", + "Please enter a valid group name" : "Пожалуйста, введите допустимое название группы", + "Loading groups…" : "Загрузка групп…", "Could not load app discover section" : "Не удалось загрузить раздел «Центр приложений»", "Could not render element" : "Не удалось подготовить объект к показу", "Nothing to show" : "Нет ни одного объекта для просмотра", @@ -756,12 +765,7 @@ "All accounts" : "Все аккаунты", "Admins" : "Администраторы", "Account group: {group}" : "Группа учётных записей: {group}", - "Failed to create group" : "Не удалось создать группу", "Account management" : "Управление учётными записями", - "Creating group…" : "Создание группы…", - "Create group" : "Создать группу", - "Group name" : "Название группы", - "Please enter a valid group name" : "Пожалуйста, введите допустимое название группы", "Sending…" : "Отправка…", "Email sent" : "Письмо отправлено", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "В целях повышения производительности при включении шифрования на сервере Nextcloud шифруются только новые и измененные файлы.", diff --git a/apps/settings/l10n/sc.js b/apps/settings/l10n/sc.js index 0201f2b3e17..769b242d503 100644 --- a/apps/settings/l10n/sc.js +++ b/apps/settings/l10n/sc.js @@ -158,6 +158,7 @@ OC.L10N.register( "Results from other categories" : "Resurtados dae àteras categorias", "No apps found for your version" : "Peruna aplicatzione agatada pro sa versione tua", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplicatzione tenet un'agiornamentu a disponimentu","%n aplicatziones tenent un'agiornamentu a disponimentu"], + "Loading groups…" : "Carrighende grupos...", "Nothing to show" : "Nudda de mustrare", "Loading" : "Carrighende", "Type" : "Genia", diff --git a/apps/settings/l10n/sc.json b/apps/settings/l10n/sc.json index 4ee392a24f7..e9127e3af0b 100644 --- a/apps/settings/l10n/sc.json +++ b/apps/settings/l10n/sc.json @@ -156,6 +156,7 @@ "Results from other categories" : "Resurtados dae àteras categorias", "No apps found for your version" : "Peruna aplicatzione agatada pro sa versione tua", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplicatzione tenet un'agiornamentu a disponimentu","%n aplicatziones tenent un'agiornamentu a disponimentu"], + "Loading groups…" : "Carrighende grupos...", "Nothing to show" : "Nudda de mustrare", "Loading" : "Carrighende", "Type" : "Genia", diff --git a/apps/settings/l10n/sk.js b/apps/settings/l10n/sk.js index 07549a8ead6..f8b8cc05cfb 100644 --- a/apps/settings/l10n/sk.js +++ b/apps/settings/l10n/sk.js @@ -131,6 +131,7 @@ OC.L10N.register( "Unlimited" : "Nelimitované", "Verifying" : "Overovanie", "Allowed admin IP ranges" : "Povolené rozsahy IP adries pre administráciu", + "Admin IP filtering isn't applied." : "Filtrovanie IP adries pre administráciu sa nepoužije.", "Configuration key \"%1$s\" expects an array (%2$s found). Admin IP range validation will not be applied." : "Konfiguračný kľúč \"%1$s\" očakáva pole (nájdené %2$s). Overenie IP rozsahu pre administráciu sa nepoužije.", "Configuration key \"%1$s\" contains invalid IP range(s): \"%2$s\"" : "Konfiguračný kľúč \"%1$s\" obsahuje naplatný IP rozsah(y): \"%2$s\"", "Admin IP filtering is correctly configured." : "Filtrovanie IP pre adminstráciu je správne nakonfigurované.", @@ -163,6 +164,7 @@ OC.L10N.register( "Database missing indices" : "Chýbajúce indexy databázy", "Missing indices:" : "Chýbajúce indexy:", "\"%s\" in table \"%s\"" : "\"%s\" v tabuľke \"%s\"", + "Detected some missing optional indices. Occasionally new indices are added (by Nextcloud or installed applications) to improve database performance. Adding indices can sometimes take awhile and temporarily hurt performance so this is not done automatically during upgrades. Once the indices are added, queries to those tables should be faster. Use the command `occ db:add-missing-indices` to add them." : "Zistilo sa niekoľko chýbajúcich voliteľných indexov. Príležitostne sa pridávajú nové indexy (prostredníctvom Nextcloud alebo nainštalovaných aplikácií), aby sa zlepšil výkon databázy. Pridávanie indexov môže niekedy chvíľu trvať a dočasne poškodiť výkon, takže sa to počas aktualizácií nerobí automaticky. Po pridaní indexov by mali byť dopyty do týchto tabuliek rýchlejšie. Na ich pridanie použite príkaz `occ db:add-missing-indices`.", "Database missing primary keys" : "Chýbajúce primárne kľúče v databáze.", "Missing primary key on table \"%s\"." : "Chýbajúci primárny kľúč na tabuľke \"%s\".", "The database is missing some primary keys. Due to the fact that adding primary keys on big tables could take some time they were not added automatically. By running \"occ db:add-missing-primary-keys\" those missing primary keys could be added manually while the instance keeps running." : "V databáze chýbajú niektoré primárne kľúče. Vzhľadom na to, že pridávanie primárnych kľúčov do veľkých tabuliek by mohlo chvíľu trvať, neboli pridané automaticky. Spustením príkazu „occ db:add-missing-primary-keys“ je možné tieto chýbajúce primárne kľúče pridať ručne, zatiaľ čo inštancia beží.", @@ -256,6 +258,7 @@ OC.L10N.register( "PHP modules" : "PHP moduly", "increases language translation performance and fixes sorting of non-ASCII characters" : "zvyšuje výkon prekladu jazyka a opravuje triedenie ne-ASCII znakov", "for Argon2 for password hashing" : "pre Argon2 na hašovanie hesiel", + "required for SFTP storage and recommended for WebAuthn performance" : "vyžadované pre úložisko SFTP a odporúčané pre výkon WebAuthn", "for picture rotation in server and metadata extraction in the Photos app" : "pre rotáciu obrázka na serveri a extrakciu metadát v aplikácii Fotky", "This instance is missing some required PHP modules. It is required to install them: %s." : "Táto inštancia nemá niektoré potrebné PHP moduly. Je potrebné ich nainštalovať: %s.", "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them:\n%s" : "V tejto inštancii chýbajú niektoré odporúčané moduly PHP. Ak chcete zlepšiť výkon a kompatibilitu, dôrazne odporúčame, aby ste ich nainštalovali:\n%s", @@ -425,6 +428,15 @@ OC.L10N.register( "No apps found for your version" : "Aplikácie pre vašu verziu sa nenašli", "_%n app has an update available_::_%n apps have an update available_" : ["Pre %n aplikáciu je dostupná aktualizácia","Pre %n aplikácie sú dostupné aktualizácie","Pre %n aplikácií sú dostupné aktualizácie","Pre %n aplikácií sú dostupné aktualizácie"], "_Update_::_Update all_" : ["Aktualizovať všetko","Aktualizovať všetko","Aktualizovať všetko","Aktualizovať všetko"], + "Failed to load groups" : "Nepodarilo sa načítať skupiny", + "Failed to create group" : "Nepodarilo sa vytvoriť skupinu", + "Creating group…" : "Vytváram skupinu...", + "Create group" : "Vytvoriť skupinu", + "Group name" : "Názov skupiny", + "Please enter a valid group name" : "Prosím, zadajte platné meno skupiny", + "Search groups…" : "Prehľadať skupiny...", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Zoznam skupín. Tento zoznam nie je úplne vykreslený z dôvodov výkonu. Skupiny budú vykreslené, keď budete prechádzať zoznamom.", + "Loading groups…" : "Načítavanie skupín…", "Could not load app discover section" : "Nepodarilo sa načítať sekciu objavovania aplikácií", "Could not render element" : "Prvok sa nepodarilo vykresliť", "Nothing to show" : "Nič pre zobrazenie", @@ -565,6 +577,7 @@ OC.L10N.register( "Confirm enabling encryption" : "Potvrďte povolenie šifrovania", "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).", + "By default a master key for the whole instance will be generated. Please check if that level of access is compliant with your needs." : "Štandardne sa vygeneruje hlavný kľúč pre celú inštanciu. Skontrolujte, či je táto úroveň prístupu v súlade s vašimi potrebami.", "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.", "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Je dobré vytvárať pravidelné zálohy vašich dát, uistite sa, že v prípade šifrovania spolu s vašimi dátami zálohujete aj šifrovacie kľúče.", @@ -665,6 +678,7 @@ OC.L10N.register( "Set line manager" : "Nastaviť líniového manažéra", "Account name will be autogenerated" : "Názov účtu bude automaticky generovaný", "Account name (required)" : "Názov účtu (povinné)", + "Failed to search groups" : "Neporarilo sa prehľadať skupiny", "New account" : "Nový účet", "Display name" : "Zobrazované meno", "Either password or email is required" : "Buď je potrebné zadať heslo alebo e-mail", @@ -681,6 +695,8 @@ OC.L10N.register( "Language" : "Jazyk", "Set default language" : "Nastaviť predvolený jazyk", "Add new account" : " Pridať nový účet", + "_{userCount} account …_::_{userCount} accounts …_" : ["{userCount} účet ...","{userCount} účty ...","{userCount} účtov ...","{userCount} účtov ..."], + "_{userCount} account_::_{userCount} accounts_" : ["{userCount} účet","{userCount} účty","{userCount} účtov","{userCount} účtov"], "Total rows summary" : "Súčet všetkých riadkov", "Scroll to load more rows" : "Posúvajte pre načítanie ďalších riadkov", "Password or insufficient permissions message" : "Heslo alebo správa o nedostatočných oprávneniach", @@ -702,12 +718,16 @@ OC.L10N.register( "Remote wipe of devices" : "Vymazať obsah zariadení na diaľku", "Wipe {userid}'s devices" : "Vymazať obsah zariadení {userid}", "Wiped {userid}'s devices" : "Vymazané zariadenia užívateľa {userid}", + "Failed to load groups with details" : "Nepodarilo sa načítať skupiny s podrobnosťami", + "Failed to load subadmin groups with details" : "Nepodarilo sa načítať skupiny subadministátorov s podrobnosťami", "Failed to update line manager" : "Nepodarilo sa aktualizovať líniového manažéra", "Fully delete {userid}'s account including all their personal files, app data, etc." : "Úplne odstráiť účet používateľa {userid} vrátane všetkých osobných súborov, údajov aplikácií atď.", "Account deletion" : "Zmazanie účtu", "Delete {userid}'s account" : "Vymazať účet {userid}", "Display name was successfully changed" : "Zobrazované meno ste úspešne zmenili", + "Password can't be empty" : "Heslo nemôže byť prázdne", "Password was successfully changed" : "Heslo bolo úspešne zmenené", + "Email can't be empty" : "E-mail nemôže byť prázdny", "Email was successfully changed" : "Email bol úspešne zmenený", "Welcome mail sent!" : "Privítací email odoslaný", "Loading account …" : "Nahrávam účet ...", @@ -732,6 +752,7 @@ OC.L10N.register( "Sorting" : "Triedenie", "The system config enforces sorting the groups by name. This also disables showing the member count." : "Systémová konfigurácia vynucuje triedenie skupín podľa názvu. Toto tiež zakáže zobrazovanie počtu členov.", "Group list sorting" : "Triedenie zoznamu skupín", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "Zoradenie sa z dôvodu výkonu vzťahuje len na aktuálne načítané skupiny. Skupiny sa načítajú pri navigácii alebo vyhľadávaní v zozname.", "By member count" : "Podľa počtu členov", "By name" : "Podľa názvu", "Send email" : "Odoslať email", @@ -761,12 +782,7 @@ OC.L10N.register( "All accounts" : "Všetky účty", "Admins" : "Administrátori", "Account group: {group}" : "Skupina účtu: {group}", - "Failed to create group" : "Nepodarilo sa vytvoriť skupinu", "Account management" : "Správa účtu", - "Creating group…" : "Vytváram skupinu...", - "Create group" : "Vytvoriť skupinu", - "Group name" : "Názov skupiny", - "Please enter a valid group name" : "Prosím, zadajte platné meno skupiny", "Sending…" : "Odosielam...", "Email sent" : "Email odoslaný", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Z dôvodu zachovania výkonu, keď povolíte šifrovanie na serveri Nextcloud, budú šifrované iba nové a zmenené súbory.", diff --git a/apps/settings/l10n/sk.json b/apps/settings/l10n/sk.json index 8425d4c83aa..e2bd2a2d224 100644 --- a/apps/settings/l10n/sk.json +++ b/apps/settings/l10n/sk.json @@ -129,6 +129,7 @@ "Unlimited" : "Nelimitované", "Verifying" : "Overovanie", "Allowed admin IP ranges" : "Povolené rozsahy IP adries pre administráciu", + "Admin IP filtering isn't applied." : "Filtrovanie IP adries pre administráciu sa nepoužije.", "Configuration key \"%1$s\" expects an array (%2$s found). Admin IP range validation will not be applied." : "Konfiguračný kľúč \"%1$s\" očakáva pole (nájdené %2$s). Overenie IP rozsahu pre administráciu sa nepoužije.", "Configuration key \"%1$s\" contains invalid IP range(s): \"%2$s\"" : "Konfiguračný kľúč \"%1$s\" obsahuje naplatný IP rozsah(y): \"%2$s\"", "Admin IP filtering is correctly configured." : "Filtrovanie IP pre adminstráciu je správne nakonfigurované.", @@ -161,6 +162,7 @@ "Database missing indices" : "Chýbajúce indexy databázy", "Missing indices:" : "Chýbajúce indexy:", "\"%s\" in table \"%s\"" : "\"%s\" v tabuľke \"%s\"", + "Detected some missing optional indices. Occasionally new indices are added (by Nextcloud or installed applications) to improve database performance. Adding indices can sometimes take awhile and temporarily hurt performance so this is not done automatically during upgrades. Once the indices are added, queries to those tables should be faster. Use the command `occ db:add-missing-indices` to add them." : "Zistilo sa niekoľko chýbajúcich voliteľných indexov. Príležitostne sa pridávajú nové indexy (prostredníctvom Nextcloud alebo nainštalovaných aplikácií), aby sa zlepšil výkon databázy. Pridávanie indexov môže niekedy chvíľu trvať a dočasne poškodiť výkon, takže sa to počas aktualizácií nerobí automaticky. Po pridaní indexov by mali byť dopyty do týchto tabuliek rýchlejšie. Na ich pridanie použite príkaz `occ db:add-missing-indices`.", "Database missing primary keys" : "Chýbajúce primárne kľúče v databáze.", "Missing primary key on table \"%s\"." : "Chýbajúci primárny kľúč na tabuľke \"%s\".", "The database is missing some primary keys. Due to the fact that adding primary keys on big tables could take some time they were not added automatically. By running \"occ db:add-missing-primary-keys\" those missing primary keys could be added manually while the instance keeps running." : "V databáze chýbajú niektoré primárne kľúče. Vzhľadom na to, že pridávanie primárnych kľúčov do veľkých tabuliek by mohlo chvíľu trvať, neboli pridané automaticky. Spustením príkazu „occ db:add-missing-primary-keys“ je možné tieto chýbajúce primárne kľúče pridať ručne, zatiaľ čo inštancia beží.", @@ -254,6 +256,7 @@ "PHP modules" : "PHP moduly", "increases language translation performance and fixes sorting of non-ASCII characters" : "zvyšuje výkon prekladu jazyka a opravuje triedenie ne-ASCII znakov", "for Argon2 for password hashing" : "pre Argon2 na hašovanie hesiel", + "required for SFTP storage and recommended for WebAuthn performance" : "vyžadované pre úložisko SFTP a odporúčané pre výkon WebAuthn", "for picture rotation in server and metadata extraction in the Photos app" : "pre rotáciu obrázka na serveri a extrakciu metadát v aplikácii Fotky", "This instance is missing some required PHP modules. It is required to install them: %s." : "Táto inštancia nemá niektoré potrebné PHP moduly. Je potrebné ich nainštalovať: %s.", "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them:\n%s" : "V tejto inštancii chýbajú niektoré odporúčané moduly PHP. Ak chcete zlepšiť výkon a kompatibilitu, dôrazne odporúčame, aby ste ich nainštalovali:\n%s", @@ -423,6 +426,15 @@ "No apps found for your version" : "Aplikácie pre vašu verziu sa nenašli", "_%n app has an update available_::_%n apps have an update available_" : ["Pre %n aplikáciu je dostupná aktualizácia","Pre %n aplikácie sú dostupné aktualizácie","Pre %n aplikácií sú dostupné aktualizácie","Pre %n aplikácií sú dostupné aktualizácie"], "_Update_::_Update all_" : ["Aktualizovať všetko","Aktualizovať všetko","Aktualizovať všetko","Aktualizovať všetko"], + "Failed to load groups" : "Nepodarilo sa načítať skupiny", + "Failed to create group" : "Nepodarilo sa vytvoriť skupinu", + "Creating group…" : "Vytváram skupinu...", + "Create group" : "Vytvoriť skupinu", + "Group name" : "Názov skupiny", + "Please enter a valid group name" : "Prosím, zadajte platné meno skupiny", + "Search groups…" : "Prehľadať skupiny...", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Zoznam skupín. Tento zoznam nie je úplne vykreslený z dôvodov výkonu. Skupiny budú vykreslené, keď budete prechádzať zoznamom.", + "Loading groups…" : "Načítavanie skupín…", "Could not load app discover section" : "Nepodarilo sa načítať sekciu objavovania aplikácií", "Could not render element" : "Prvok sa nepodarilo vykresliť", "Nothing to show" : "Nič pre zobrazenie", @@ -563,6 +575,7 @@ "Confirm enabling encryption" : "Potvrďte povolenie šifrovania", "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).", + "By default a master key for the whole instance will be generated. Please check if that level of access is compliant with your needs." : "Štandardne sa vygeneruje hlavný kľúč pre celú inštanciu. Skontrolujte, či je táto úroveň prístupu v súlade s vašimi potrebami.", "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.", "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Je dobré vytvárať pravidelné zálohy vašich dát, uistite sa, že v prípade šifrovania spolu s vašimi dátami zálohujete aj šifrovacie kľúče.", @@ -663,6 +676,7 @@ "Set line manager" : "Nastaviť líniového manažéra", "Account name will be autogenerated" : "Názov účtu bude automaticky generovaný", "Account name (required)" : "Názov účtu (povinné)", + "Failed to search groups" : "Neporarilo sa prehľadať skupiny", "New account" : "Nový účet", "Display name" : "Zobrazované meno", "Either password or email is required" : "Buď je potrebné zadať heslo alebo e-mail", @@ -679,6 +693,8 @@ "Language" : "Jazyk", "Set default language" : "Nastaviť predvolený jazyk", "Add new account" : " Pridať nový účet", + "_{userCount} account …_::_{userCount} accounts …_" : ["{userCount} účet ...","{userCount} účty ...","{userCount} účtov ...","{userCount} účtov ..."], + "_{userCount} account_::_{userCount} accounts_" : ["{userCount} účet","{userCount} účty","{userCount} účtov","{userCount} účtov"], "Total rows summary" : "Súčet všetkých riadkov", "Scroll to load more rows" : "Posúvajte pre načítanie ďalších riadkov", "Password or insufficient permissions message" : "Heslo alebo správa o nedostatočných oprávneniach", @@ -700,12 +716,16 @@ "Remote wipe of devices" : "Vymazať obsah zariadení na diaľku", "Wipe {userid}'s devices" : "Vymazať obsah zariadení {userid}", "Wiped {userid}'s devices" : "Vymazané zariadenia užívateľa {userid}", + "Failed to load groups with details" : "Nepodarilo sa načítať skupiny s podrobnosťami", + "Failed to load subadmin groups with details" : "Nepodarilo sa načítať skupiny subadministátorov s podrobnosťami", "Failed to update line manager" : "Nepodarilo sa aktualizovať líniového manažéra", "Fully delete {userid}'s account including all their personal files, app data, etc." : "Úplne odstráiť účet používateľa {userid} vrátane všetkých osobných súborov, údajov aplikácií atď.", "Account deletion" : "Zmazanie účtu", "Delete {userid}'s account" : "Vymazať účet {userid}", "Display name was successfully changed" : "Zobrazované meno ste úspešne zmenili", + "Password can't be empty" : "Heslo nemôže byť prázdne", "Password was successfully changed" : "Heslo bolo úspešne zmenené", + "Email can't be empty" : "E-mail nemôže byť prázdny", "Email was successfully changed" : "Email bol úspešne zmenený", "Welcome mail sent!" : "Privítací email odoslaný", "Loading account …" : "Nahrávam účet ...", @@ -730,6 +750,7 @@ "Sorting" : "Triedenie", "The system config enforces sorting the groups by name. This also disables showing the member count." : "Systémová konfigurácia vynucuje triedenie skupín podľa názvu. Toto tiež zakáže zobrazovanie počtu členov.", "Group list sorting" : "Triedenie zoznamu skupín", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "Zoradenie sa z dôvodu výkonu vzťahuje len na aktuálne načítané skupiny. Skupiny sa načítajú pri navigácii alebo vyhľadávaní v zozname.", "By member count" : "Podľa počtu členov", "By name" : "Podľa názvu", "Send email" : "Odoslať email", @@ -759,12 +780,7 @@ "All accounts" : "Všetky účty", "Admins" : "Administrátori", "Account group: {group}" : "Skupina účtu: {group}", - "Failed to create group" : "Nepodarilo sa vytvoriť skupinu", "Account management" : "Správa účtu", - "Creating group…" : "Vytváram skupinu...", - "Create group" : "Vytvoriť skupinu", - "Group name" : "Názov skupiny", - "Please enter a valid group name" : "Prosím, zadajte platné meno skupiny", "Sending…" : "Odosielam...", "Email sent" : "Email odoslaný", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Z dôvodu zachovania výkonu, keď povolíte šifrovanie na serveri Nextcloud, budú šifrované iba nové a zmenené súbory.", diff --git a/apps/settings/l10n/sl.js b/apps/settings/l10n/sl.js index 4c891f98669..52366223f21 100644 --- a/apps/settings/l10n/sl.js +++ b/apps/settings/l10n/sl.js @@ -307,6 +307,12 @@ OC.L10N.register( "No apps found for your version" : "Za navedeni iskalni niz ni programov", "_%n app has an update available_::_%n apps have an update available_" : ["Na voljo je posodobitev za %n program.","Na voljo sta posodobitvi za %n programa.","Na voljo so posodobitve za %n programe.","Na voljo so posodobitve za %n programov."], "_Update_::_Update all_" : ["Posodobi","Posodobi","Posodobi","Posodobi vse"], + "Failed to create group" : "Ustvarjanje skupine je spodletelo", + "Creating group…" : "Poteka ustvarjanje skupine ...", + "Create group" : "Ustvari skupino", + "Group name" : "Ime skupine", + "Please enter a valid group name" : "Vpisati je treba veljavno ime skupine", + "Loading groups…" : "Poteka nalaganje skupin ...", "Could not load app discover section" : "Ni mogoče naložiti razdelka predstavitve programov", "Could not render element" : "Predmeta ni mogoče izrisati", "Nothing to show" : "Ni vsebine za prikaz", @@ -591,12 +597,7 @@ OC.L10N.register( "All accounts" : "Vsi računi", "Admins" : "Skrbniki", "Account group: {group}" : "Skupina računov: {group}", - "Failed to create group" : "Ustvarjanje skupine je spodletelo", "Account management" : "Upravljanje z računi", - "Creating group…" : "Poteka ustvarjanje skupine ...", - "Create group" : "Ustvari skupino", - "Group name" : "Ime skupine", - "Please enter a valid group name" : "Vpisati je treba veljavno ime skupine", "Sending…" : "Poteka pošiljanje ...", "Email sent" : "Elektronsko sporočilo je poslano", "Location" : "Trenutno mesto", diff --git a/apps/settings/l10n/sl.json b/apps/settings/l10n/sl.json index 2352ccc2a53..edf8f9d1aed 100644 --- a/apps/settings/l10n/sl.json +++ b/apps/settings/l10n/sl.json @@ -305,6 +305,12 @@ "No apps found for your version" : "Za navedeni iskalni niz ni programov", "_%n app has an update available_::_%n apps have an update available_" : ["Na voljo je posodobitev za %n program.","Na voljo sta posodobitvi za %n programa.","Na voljo so posodobitve za %n programe.","Na voljo so posodobitve za %n programov."], "_Update_::_Update all_" : ["Posodobi","Posodobi","Posodobi","Posodobi vse"], + "Failed to create group" : "Ustvarjanje skupine je spodletelo", + "Creating group…" : "Poteka ustvarjanje skupine ...", + "Create group" : "Ustvari skupino", + "Group name" : "Ime skupine", + "Please enter a valid group name" : "Vpisati je treba veljavno ime skupine", + "Loading groups…" : "Poteka nalaganje skupin ...", "Could not load app discover section" : "Ni mogoče naložiti razdelka predstavitve programov", "Could not render element" : "Predmeta ni mogoče izrisati", "Nothing to show" : "Ni vsebine za prikaz", @@ -589,12 +595,7 @@ "All accounts" : "Vsi računi", "Admins" : "Skrbniki", "Account group: {group}" : "Skupina računov: {group}", - "Failed to create group" : "Ustvarjanje skupine je spodletelo", "Account management" : "Upravljanje z računi", - "Creating group…" : "Poteka ustvarjanje skupine ...", - "Create group" : "Ustvari skupino", - "Group name" : "Ime skupine", - "Please enter a valid group name" : "Vpisati je treba veljavno ime skupine", "Sending…" : "Poteka pošiljanje ...", "Email sent" : "Elektronsko sporočilo je poslano", "Location" : "Trenutno mesto", diff --git a/apps/settings/l10n/sq.js b/apps/settings/l10n/sq.js index 6e0d7fe4ca8..cbde7b52295 100644 --- a/apps/settings/l10n/sq.js +++ b/apps/settings/l10n/sq.js @@ -96,6 +96,7 @@ OC.L10N.register( "Level" : "Nivel", "Actions" : "Veprimet", "No apps found for your version" : "S’u gjetën aplikacione për versionin tuaj", + "Group name" : "Emër grupi", "Type" : "Tipi", "Display Name" : "Trego Emrin", "Learn more" : "Mësoni më shumë", @@ -179,7 +180,6 @@ OC.L10N.register( "Unnamed device" : "Paisje pa emër", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Si admin ju mund të rregulloni mirë sjelljen e ndarjes. Ju lutem shih dokumentacionin për më shumë informacion.", "Admins" : "Administratorë", - "Group name" : "Emër grupi", "Sending…" : "dërgim", "Email sent" : "Email-i u dërgua", "Location" : "Vendndodhje", diff --git a/apps/settings/l10n/sq.json b/apps/settings/l10n/sq.json index e4e21dae4b9..ba32ae4e6ce 100644 --- a/apps/settings/l10n/sq.json +++ b/apps/settings/l10n/sq.json @@ -94,6 +94,7 @@ "Level" : "Nivel", "Actions" : "Veprimet", "No apps found for your version" : "S’u gjetën aplikacione për versionin tuaj", + "Group name" : "Emër grupi", "Type" : "Tipi", "Display Name" : "Trego Emrin", "Learn more" : "Mësoni më shumë", @@ -177,7 +178,6 @@ "Unnamed device" : "Paisje pa emër", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Si admin ju mund të rregulloni mirë sjelljen e ndarjes. Ju lutem shih dokumentacionin për më shumë informacion.", "Admins" : "Administratorë", - "Group name" : "Emër grupi", "Sending…" : "dërgim", "Email sent" : "Email-i u dërgua", "Location" : "Vendndodhje", diff --git a/apps/settings/l10n/sr.js b/apps/settings/l10n/sr.js index b8db88fe4a5..2712c66e357 100644 --- a/apps/settings/l10n/sr.js +++ b/apps/settings/l10n/sr.js @@ -428,6 +428,12 @@ OC.L10N.register( "No apps found for your version" : "Нема апликација за вашу верзију", "_%n app has an update available_::_%n apps have an update available_" : ["%n апликација има доступно ажурирање","%n апликације имају доступна ажурирања","%n апликација имају доступна ажурирања"], "_Update_::_Update all_" : ["Ажурирај","Ажурирај све","Ажурирај све"], + "Failed to create group" : "Није успело креирање групе", + "Creating group…" : "Креира се група…", + "Create group" : "Креирај групу", + "Group name" : "Назив групе", + "Please enter a valid group name" : "Молимо вас да унесете исправно име групе", + "Loading groups…" : "Учитавање група...", "Could not load app discover section" : "Не може да се учита одељак откривања апликација", "Could not render element" : "Не може да се исцрта елемент", "Nothing to show" : "Овде нема шта да се прикаже", @@ -769,12 +775,7 @@ OC.L10N.register( "All accounts" : "Сви налози", "Admins" : "Администратори", "Account group: {group}" : "Група налога: {group}", - "Failed to create group" : "Није успело креирање групе", "Account management" : "Управљање налозима", - "Creating group…" : "Креира се група…", - "Create group" : "Креирај групу", - "Group name" : "Назив групе", - "Please enter a valid group name" : "Молимо вас да унесете исправно име групе", "Sending…" : "Шаљем…", "Email sent" : "Порука је послата", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Из разлога перформанси, када укључите шифровање само на Nextcloud серверу, шифрују се нови и измењени фајлови.", diff --git a/apps/settings/l10n/sr.json b/apps/settings/l10n/sr.json index f57ab24018a..3355b239d04 100644 --- a/apps/settings/l10n/sr.json +++ b/apps/settings/l10n/sr.json @@ -426,6 +426,12 @@ "No apps found for your version" : "Нема апликација за вашу верзију", "_%n app has an update available_::_%n apps have an update available_" : ["%n апликација има доступно ажурирање","%n апликације имају доступна ажурирања","%n апликација имају доступна ажурирања"], "_Update_::_Update all_" : ["Ажурирај","Ажурирај све","Ажурирај све"], + "Failed to create group" : "Није успело креирање групе", + "Creating group…" : "Креира се група…", + "Create group" : "Креирај групу", + "Group name" : "Назив групе", + "Please enter a valid group name" : "Молимо вас да унесете исправно име групе", + "Loading groups…" : "Учитавање група...", "Could not load app discover section" : "Не може да се учита одељак откривања апликација", "Could not render element" : "Не може да се исцрта елемент", "Nothing to show" : "Овде нема шта да се прикаже", @@ -767,12 +773,7 @@ "All accounts" : "Сви налози", "Admins" : "Администратори", "Account group: {group}" : "Група налога: {group}", - "Failed to create group" : "Није успело креирање групе", "Account management" : "Управљање налозима", - "Creating group…" : "Креира се група…", - "Create group" : "Креирај групу", - "Group name" : "Назив групе", - "Please enter a valid group name" : "Молимо вас да унесете исправно име групе", "Sending…" : "Шаљем…", "Email sent" : "Порука је послата", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Из разлога перформанси, када укључите шифровање само на Nextcloud серверу, шифрују се нови и измењени фајлови.", diff --git a/apps/settings/l10n/sv.js b/apps/settings/l10n/sv.js index b03d07e1df3..fe6a7cfbf33 100644 --- a/apps/settings/l10n/sv.js +++ b/apps/settings/l10n/sv.js @@ -303,6 +303,12 @@ OC.L10N.register( "No apps found for your version" : "Inga appar funna för din version", "_%n app has an update available_::_%n apps have an update available_" : ["%n app har en uppdatering tillgänglig","%n appar har en uppdatering tillgänglig"], "_Update_::_Update all_" : ["Uppdatera","Uppdatera alla"], + "Failed to create group" : "Det gick inte att skapa gruppen", + "Creating group…" : "Skapar grupp...", + "Create group" : "Skapa grupp", + "Group name" : "Gruppnamn", + "Please enter a valid group name" : "Ange ett giltigt gruppnamn", + "Loading groups…" : "Hämtar grupper...", "Nothing to show" : "Inget att visa", "Could not load section content from app store." : "Det gick inte att ladda avsnittsinnehåll från app store.", "Loading" : "Läser in", @@ -597,12 +603,7 @@ OC.L10N.register( "All accounts" : "Alla konton", "Admins" : "Administratörer", "Account group: {group}" : "Kontogrupp: {group}", - "Failed to create group" : "Det gick inte att skapa gruppen", "Account management" : "Kontohantering", - "Creating group…" : "Skapar grupp...", - "Create group" : "Skapa grupp", - "Group name" : "Gruppnamn", - "Please enter a valid group name" : "Ange ett giltigt gruppnamn", "Sending…" : "Skickar...", "Email sent" : "E-post skickad", "Location" : "Plats", diff --git a/apps/settings/l10n/sv.json b/apps/settings/l10n/sv.json index 208cbcdc584..9ee3bcd0544 100644 --- a/apps/settings/l10n/sv.json +++ b/apps/settings/l10n/sv.json @@ -301,6 +301,12 @@ "No apps found for your version" : "Inga appar funna för din version", "_%n app has an update available_::_%n apps have an update available_" : ["%n app har en uppdatering tillgänglig","%n appar har en uppdatering tillgänglig"], "_Update_::_Update all_" : ["Uppdatera","Uppdatera alla"], + "Failed to create group" : "Det gick inte att skapa gruppen", + "Creating group…" : "Skapar grupp...", + "Create group" : "Skapa grupp", + "Group name" : "Gruppnamn", + "Please enter a valid group name" : "Ange ett giltigt gruppnamn", + "Loading groups…" : "Hämtar grupper...", "Nothing to show" : "Inget att visa", "Could not load section content from app store." : "Det gick inte att ladda avsnittsinnehåll från app store.", "Loading" : "Läser in", @@ -595,12 +601,7 @@ "All accounts" : "Alla konton", "Admins" : "Administratörer", "Account group: {group}" : "Kontogrupp: {group}", - "Failed to create group" : "Det gick inte att skapa gruppen", "Account management" : "Kontohantering", - "Creating group…" : "Skapar grupp...", - "Create group" : "Skapa grupp", - "Group name" : "Gruppnamn", - "Please enter a valid group name" : "Ange ett giltigt gruppnamn", "Sending…" : "Skickar...", "Email sent" : "E-post skickad", "Location" : "Plats", diff --git a/apps/settings/l10n/th.js b/apps/settings/l10n/th.js index cecad0290a3..1fb141f89cd 100644 --- a/apps/settings/l10n/th.js +++ b/apps/settings/l10n/th.js @@ -101,6 +101,7 @@ OC.L10N.register( "Results from other categories" : "ผลลัพธ์จากหมวดหมู่อื่น ๆ", "No apps found for your version" : "ไม่พบแอปสำหรับรุ่นของคุณ", "_%n app has an update available_::_%n apps have an update available_" : ["%n แอปมีอัปเดตใหม่"], + "Group name" : "ชื่อกลุ่ม", "Loading" : "กำลังโหลด", "Type" : "ประเภท", "Confirm" : "ยืนยัน", @@ -216,7 +217,6 @@ OC.L10N.register( "The following devices are configured for your account:" : "อุปกรณ์เหล่านี้มีการกำหนดค่าสำหรับบัญชีของคุณแล้ว:", "Your browser does not support WebAuthn." : "เบราว์เซอร์ของคุณไม่รองรับ WebAuthn", "Admins" : "ผู้ดูแลระบบ", - "Group name" : "ชื่อกลุ่ม", "Sending…" : "กำลังส่ง....", "Email sent" : "ส่งอีเมลแล้ว", "Location" : "ตำแหน่ง", diff --git a/apps/settings/l10n/th.json b/apps/settings/l10n/th.json index 506d059951a..9d6648c4398 100644 --- a/apps/settings/l10n/th.json +++ b/apps/settings/l10n/th.json @@ -99,6 +99,7 @@ "Results from other categories" : "ผลลัพธ์จากหมวดหมู่อื่น ๆ", "No apps found for your version" : "ไม่พบแอปสำหรับรุ่นของคุณ", "_%n app has an update available_::_%n apps have an update available_" : ["%n แอปมีอัปเดตใหม่"], + "Group name" : "ชื่อกลุ่ม", "Loading" : "กำลังโหลด", "Type" : "ประเภท", "Confirm" : "ยืนยัน", @@ -214,7 +215,6 @@ "The following devices are configured for your account:" : "อุปกรณ์เหล่านี้มีการกำหนดค่าสำหรับบัญชีของคุณแล้ว:", "Your browser does not support WebAuthn." : "เบราว์เซอร์ของคุณไม่รองรับ WebAuthn", "Admins" : "ผู้ดูแลระบบ", - "Group name" : "ชื่อกลุ่ม", "Sending…" : "กำลังส่ง....", "Email sent" : "ส่งอีเมลแล้ว", "Location" : "ตำแหน่ง", diff --git a/apps/settings/l10n/tr.js b/apps/settings/l10n/tr.js index 27953b92ae2..f81f22d0cf1 100644 --- a/apps/settings/l10n/tr.js +++ b/apps/settings/l10n/tr.js @@ -427,6 +427,12 @@ OC.L10N.register( "No apps found for your version" : "Sürümünüze uygun bir uygulama bulunamadı", "_%n app has an update available_::_%n apps have an update available_" : ["%n uygulama için güncelleme yayınlanmış","%n uygulama için güncelleme yayınlanmış"], "_Update_::_Update all_" : ["Güncelle","Tümünü güncelle"], + "Failed to create group" : "Grup eklenemedi", + "Creating group…" : "Grup oluşturuluyor…", + "Create group" : "Grup ekle", + "Group name" : "Grup adı", + "Please enter a valid group name" : "Lütfen geçerli bir grup adı yazın", + "Loading groups…" : "Gruplar yükleniyor …", "Could not load app discover section" : "Uygulama keşfetme bölümü yüklenemedi", "Could not render element" : "Bileşen oluşturulamadı", "Nothing to show" : "Görüntülenebilecek bir şey yok", @@ -768,12 +774,7 @@ OC.L10N.register( "All accounts" : "Tüm hesaplar", "Admins" : "Yöneticiler", "Account group: {group}" : "Hesap grubu: {group}", - "Failed to create group" : "Grup eklenemedi", "Account management" : "Hesap yönetimi", - "Creating group…" : "Grup oluşturuluyor…", - "Create group" : "Grup ekle", - "Group name" : "Grup adı", - "Please enter a valid group name" : "Lütfen geçerli bir grup adı yazın", "Sending…" : "Gönderiliyor …", "Email sent" : "E-posta gönderildi", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Bir Nextcloud sunucusunda şifrelemeyi açtığınızda, başarımı korumak için yalnızca yeni ve değiştirilen dosyalar şifrelenir.", diff --git a/apps/settings/l10n/tr.json b/apps/settings/l10n/tr.json index bc39d3d9e0c..c5af3b4f241 100644 --- a/apps/settings/l10n/tr.json +++ b/apps/settings/l10n/tr.json @@ -425,6 +425,12 @@ "No apps found for your version" : "Sürümünüze uygun bir uygulama bulunamadı", "_%n app has an update available_::_%n apps have an update available_" : ["%n uygulama için güncelleme yayınlanmış","%n uygulama için güncelleme yayınlanmış"], "_Update_::_Update all_" : ["Güncelle","Tümünü güncelle"], + "Failed to create group" : "Grup eklenemedi", + "Creating group…" : "Grup oluşturuluyor…", + "Create group" : "Grup ekle", + "Group name" : "Grup adı", + "Please enter a valid group name" : "Lütfen geçerli bir grup adı yazın", + "Loading groups…" : "Gruplar yükleniyor …", "Could not load app discover section" : "Uygulama keşfetme bölümü yüklenemedi", "Could not render element" : "Bileşen oluşturulamadı", "Nothing to show" : "Görüntülenebilecek bir şey yok", @@ -766,12 +772,7 @@ "All accounts" : "Tüm hesaplar", "Admins" : "Yöneticiler", "Account group: {group}" : "Hesap grubu: {group}", - "Failed to create group" : "Grup eklenemedi", "Account management" : "Hesap yönetimi", - "Creating group…" : "Grup oluşturuluyor…", - "Create group" : "Grup ekle", - "Group name" : "Grup adı", - "Please enter a valid group name" : "Lütfen geçerli bir grup adı yazın", "Sending…" : "Gönderiliyor …", "Email sent" : "E-posta gönderildi", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Bir Nextcloud sunucusunda şifrelemeyi açtığınızda, başarımı korumak için yalnızca yeni ve değiştirilen dosyalar şifrelenir.", diff --git a/apps/settings/l10n/ug.js b/apps/settings/l10n/ug.js index ef69fed975d..7b2592e693a 100644 --- a/apps/settings/l10n/ug.js +++ b/apps/settings/l10n/ug.js @@ -397,6 +397,12 @@ OC.L10N.register( "Actions" : "مەشغۇلاتلار", "Results from other categories" : "باشقا تۈرلەرنىڭ نەتىجىسى", "No apps found for your version" : "نەشرىڭىزگە ھېچقانداق ئەپ تېپىلمىدى", + "Failed to create group" : "گۇرۇپپا قۇرالمىدى", + "Creating group…" : "گۇرۇپپا قۇرۇش…", + "Create group" : "گۇرۇپپا قۇرۇش", + "Group name" : "گۇرۇپپا ئاتى", + "Please enter a valid group name" : "ئىناۋەتلىك گۇرۇپپا نامىنى كىرگۈزۈڭ", + "Loading groups…" : "گۇرۇپپىلارنى يۈكلەۋاتىدۇ…", "Could not load app discover section" : "ئەپ بايقاش بۆلىكىنى يۈكلىيەلمىدى", "Could not render element" : "ئېلېمېنتنى بېرەلمىدى", "Nothing to show" : "كۆرسىتىدىغان ھېچنېمە يوق", @@ -700,12 +706,7 @@ OC.L10N.register( "All accounts" : "بارلىق ھېساباتلار", "Admins" : "باشقۇرغۇچى", "Account group: {group}" : "ھېسابات گۇرۇپپىسى: {group}", - "Failed to create group" : "گۇرۇپپا قۇرالمىدى", "Account management" : "ھېسابات باشقۇرۇش", - "Creating group…" : "گۇرۇپپا قۇرۇش…", - "Create group" : "گۇرۇپپا قۇرۇش", - "Group name" : "گۇرۇپپا ئاتى", - "Please enter a valid group name" : "ئىناۋەتلىك گۇرۇپپا نامىنى كىرگۈزۈڭ", "Sending…" : "ئەۋەتىش…", "Email sent" : "ئېلخەت يوللاندى", "Location" : "ئورنى", diff --git a/apps/settings/l10n/ug.json b/apps/settings/l10n/ug.json index 8d9ab23077e..a6d6b244abf 100644 --- a/apps/settings/l10n/ug.json +++ b/apps/settings/l10n/ug.json @@ -395,6 +395,12 @@ "Actions" : "مەشغۇلاتلار", "Results from other categories" : "باشقا تۈرلەرنىڭ نەتىجىسى", "No apps found for your version" : "نەشرىڭىزگە ھېچقانداق ئەپ تېپىلمىدى", + "Failed to create group" : "گۇرۇپپا قۇرالمىدى", + "Creating group…" : "گۇرۇپپا قۇرۇش…", + "Create group" : "گۇرۇپپا قۇرۇش", + "Group name" : "گۇرۇپپا ئاتى", + "Please enter a valid group name" : "ئىناۋەتلىك گۇرۇپپا نامىنى كىرگۈزۈڭ", + "Loading groups…" : "گۇرۇپپىلارنى يۈكلەۋاتىدۇ…", "Could not load app discover section" : "ئەپ بايقاش بۆلىكىنى يۈكلىيەلمىدى", "Could not render element" : "ئېلېمېنتنى بېرەلمىدى", "Nothing to show" : "كۆرسىتىدىغان ھېچنېمە يوق", @@ -698,12 +704,7 @@ "All accounts" : "بارلىق ھېساباتلار", "Admins" : "باشقۇرغۇچى", "Account group: {group}" : "ھېسابات گۇرۇپپىسى: {group}", - "Failed to create group" : "گۇرۇپپا قۇرالمىدى", "Account management" : "ھېسابات باشقۇرۇش", - "Creating group…" : "گۇرۇپپا قۇرۇش…", - "Create group" : "گۇرۇپپا قۇرۇش", - "Group name" : "گۇرۇپپا ئاتى", - "Please enter a valid group name" : "ئىناۋەتلىك گۇرۇپپا نامىنى كىرگۈزۈڭ", "Sending…" : "ئەۋەتىش…", "Email sent" : "ئېلخەت يوللاندى", "Location" : "ئورنى", diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js index 0bd97b5520b..8b21b860a74 100644 --- a/apps/settings/l10n/uk.js +++ b/apps/settings/l10n/uk.js @@ -122,6 +122,9 @@ OC.L10N.register( "Mobile & desktop" : "Застосунки для пристроїв", "Email server" : "Сервер електронної пошти", "Mail Providers" : "Постачальники послуг ел.пошти", + "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Поштовий провайдер дозволяє надсилати електронні листи безпосередньо через особисту електронну скриньку користувача. Наразі ця функція обмежена запрошеннями за календарем. Для цього потрібна Nextcloud Mail 4.1 та обліковий запис електронної пошти в Nextcloud Mail, який відповідає адресі електронної пошти користувача в Nextcloud.", + "Send emails using" : "Надсилайте електронні листи, використовуючи", + "User's email account" : "Обліковий запис електронної пошти користувача", "System email account" : "Системний обліковий запис ел.пошти", "Security & setup checks" : "Безпека та перевірка налаштувань", "Background jobs" : "Фонові завдання", @@ -135,6 +138,7 @@ OC.L10N.register( "Your remote address could not be determined." : "Не вдалося визначити вашу віддалену адресу.", "Your remote address was identified as \"%s\" and is brute-force throttled at the moment slowing down the performance of various requests. If the remote address is not your address this can be an indication that a proxy is not configured correctly." : "Ваша віддалена адреса була ідентифікована як \"%s\" і наразі щодо неї виконуються спроби грубого підбору паролів, відповідно виконання різних запитів відбувається уповільнено . Якщо віддалена адреса не є вашою адресою, це може свідчити про те, що проксі налаштовано неправильно.", "Your remote address \"%s\" is not brute-force throttled." : "Ваша віддалена адреса \"%s\" не уповільнена через грубі спроби підбору паролів.", + "A background job is pending that checks for administration imported SSL certificates. Please check back later." : "Виконується фонове завдання, яке перевіряє імпортовані SSL-сертифікати на предмет адміністрування. Будь ласка, перевірте пізніше.", "Code integrity" : "Цілісність коду", "Integrity checker has been disabled. Integrity cannot be verified." : "Перевірку на цілісність вимкнено. Цілісність буде неможливо перевірити.", "No altered files" : "Відсутні змінені файли", @@ -166,6 +170,7 @@ OC.L10N.register( "Email test" : "Тест ел.пошти", "Email test was successfully sent" : "Ел.лист було успішно надіслано", "You have not set or verified your email server configuration, yet. Please head over to the \"Basic settings\" in order to set them. Afterwards, use the \"Send email\" button below the form to verify your settings." : "Ви ще не налаштувати або не перевірили налаштування поштового сервера. Перейдіть до \"Основних налаштувань. Після цього перевірте коректність поштових налаштувань, для цього клацніть на кнопку \"Надіслати ел.пошту\" під формою.", + "Transactional File Locking" : "Блокування транзакційних файлів", "The database is used for transactional file locking. To enhance performance, please configure memcache, if available." : "База даних використовується для транзакційного блокування файлів. Для кращої продуктивности рекомендується налаштувати memcache, якщо доступний.", "Forwarded for headers" : "Перенаправлено для заголовків", "Your \"trusted_proxies\" setting is not correctly set, it should be an array." : "Ваш параметр \"trusted_proxies\" встановлено неправильно, це має бути масив.", @@ -186,6 +191,7 @@ OC.L10N.register( "Memcache" : "Memcache", "No memory cache has been configured. To enhance performance, please configure a memcache, if available." : "Відсутні налаштування кешування пам'яти. Для кращої продуктивности рекомендуємо налаштувати memcache, якщо доступний.", "Configured" : "Налаштовано", + "MySQL row format" : "Формат рядка MySQL", "You are not using MySQL" : "Ви не використовуєте MySQL", "MySQL Unicode support" : "Підтримка юнікоду в MySQL", "MySQL is used as database and does support 4-byte characters" : "MySQL використовується яко база даних, увімкнено підтримку 4-бітних символів", @@ -339,6 +345,11 @@ OC.L10N.register( "No apps found for your version" : "Відсутні застосунки для вашої версії", "_%n app has an update available_::_%n apps have an update available_" : ["Для %n застосунку доступне оновлення","Для %n застосунків доступні оновлення","Для %n застосунків доступні оновлення","Для %n застосунків доступні оновлення"], "_Update_::_Update all_" : ["Оновити","Оновити все","Оновити все","Оновити все"], + "Failed to create group" : "Не вдалося створити групу", + "Creating group…" : "Створення групи...", + "Create group" : "Створити групу", + "Group name" : "Назва групи", + "Please enter a valid group name" : "Введіть дійсну назву групи", "Could not render element" : "Не вдалося показати елемент", "Nothing to show" : "Відсутня інформація для показу", "Could not load section content from app store." : "Не вдалося отримати розділ вмісту із крамнички.", @@ -402,7 +413,7 @@ OC.L10N.register( "Devices & sessions" : "Пристрої та сеанси", "Web, desktop and mobile clients currently logged in to your account." : "Вебдоступ, стільничі клієнти та мобільні застосунки, які було авторизовано з вашим обліковим записом.", "Error while creating device token" : "Помилка під час створення токена пристрою", - "App name" : "Дайте назву застосунку", + "App name" : "Зазначте назву застосунку", "Create new app password" : "Створіть новий пароль застосунку", "App password copied!" : "Пароль на застосунок скопійовано!", "Copy app password" : "Копіювати пароль на застосунок", @@ -622,12 +633,7 @@ OC.L10N.register( "All accounts" : "Всі облікові записи", "Admins" : "Адміністратори", "Account group: {group}" : "Група облікового запису: {group}", - "Failed to create group" : "Не вдалося створити групу", "Account management" : "Керування обліковими записами", - "Creating group…" : "Створення групи...", - "Create group" : "Створити групу", - "Group name" : "Назва групи", - "Please enter a valid group name" : "Введіть дійсну назву групи", "Sending…" : "Надсилання...", "Email sent" : "Лист надіслано", "Location" : "Місце розташування", diff --git a/apps/settings/l10n/uk.json b/apps/settings/l10n/uk.json index 22966dea1bb..4be0bcedba7 100644 --- a/apps/settings/l10n/uk.json +++ b/apps/settings/l10n/uk.json @@ -120,6 +120,9 @@ "Mobile & desktop" : "Застосунки для пристроїв", "Email server" : "Сервер електронної пошти", "Mail Providers" : "Постачальники послуг ел.пошти", + "Mail provider enables sending emails directly through the user's personal email account. At present, this functionality is limited to calendar invitations. It requires Nextcloud Mail 4.1 and an email account in Nextcloud Mail that matches the user's email address in Nextcloud." : "Поштовий провайдер дозволяє надсилати електронні листи безпосередньо через особисту електронну скриньку користувача. Наразі ця функція обмежена запрошеннями за календарем. Для цього потрібна Nextcloud Mail 4.1 та обліковий запис електронної пошти в Nextcloud Mail, який відповідає адресі електронної пошти користувача в Nextcloud.", + "Send emails using" : "Надсилайте електронні листи, використовуючи", + "User's email account" : "Обліковий запис електронної пошти користувача", "System email account" : "Системний обліковий запис ел.пошти", "Security & setup checks" : "Безпека та перевірка налаштувань", "Background jobs" : "Фонові завдання", @@ -133,6 +136,7 @@ "Your remote address could not be determined." : "Не вдалося визначити вашу віддалену адресу.", "Your remote address was identified as \"%s\" and is brute-force throttled at the moment slowing down the performance of various requests. If the remote address is not your address this can be an indication that a proxy is not configured correctly." : "Ваша віддалена адреса була ідентифікована як \"%s\" і наразі щодо неї виконуються спроби грубого підбору паролів, відповідно виконання різних запитів відбувається уповільнено . Якщо віддалена адреса не є вашою адресою, це може свідчити про те, що проксі налаштовано неправильно.", "Your remote address \"%s\" is not brute-force throttled." : "Ваша віддалена адреса \"%s\" не уповільнена через грубі спроби підбору паролів.", + "A background job is pending that checks for administration imported SSL certificates. Please check back later." : "Виконується фонове завдання, яке перевіряє імпортовані SSL-сертифікати на предмет адміністрування. Будь ласка, перевірте пізніше.", "Code integrity" : "Цілісність коду", "Integrity checker has been disabled. Integrity cannot be verified." : "Перевірку на цілісність вимкнено. Цілісність буде неможливо перевірити.", "No altered files" : "Відсутні змінені файли", @@ -164,6 +168,7 @@ "Email test" : "Тест ел.пошти", "Email test was successfully sent" : "Ел.лист було успішно надіслано", "You have not set or verified your email server configuration, yet. Please head over to the \"Basic settings\" in order to set them. Afterwards, use the \"Send email\" button below the form to verify your settings." : "Ви ще не налаштувати або не перевірили налаштування поштового сервера. Перейдіть до \"Основних налаштувань. Після цього перевірте коректність поштових налаштувань, для цього клацніть на кнопку \"Надіслати ел.пошту\" під формою.", + "Transactional File Locking" : "Блокування транзакційних файлів", "The database is used for transactional file locking. To enhance performance, please configure memcache, if available." : "База даних використовується для транзакційного блокування файлів. Для кращої продуктивности рекомендується налаштувати memcache, якщо доступний.", "Forwarded for headers" : "Перенаправлено для заголовків", "Your \"trusted_proxies\" setting is not correctly set, it should be an array." : "Ваш параметр \"trusted_proxies\" встановлено неправильно, це має бути масив.", @@ -184,6 +189,7 @@ "Memcache" : "Memcache", "No memory cache has been configured. To enhance performance, please configure a memcache, if available." : "Відсутні налаштування кешування пам'яти. Для кращої продуктивности рекомендуємо налаштувати memcache, якщо доступний.", "Configured" : "Налаштовано", + "MySQL row format" : "Формат рядка MySQL", "You are not using MySQL" : "Ви не використовуєте MySQL", "MySQL Unicode support" : "Підтримка юнікоду в MySQL", "MySQL is used as database and does support 4-byte characters" : "MySQL використовується яко база даних, увімкнено підтримку 4-бітних символів", @@ -337,6 +343,11 @@ "No apps found for your version" : "Відсутні застосунки для вашої версії", "_%n app has an update available_::_%n apps have an update available_" : ["Для %n застосунку доступне оновлення","Для %n застосунків доступні оновлення","Для %n застосунків доступні оновлення","Для %n застосунків доступні оновлення"], "_Update_::_Update all_" : ["Оновити","Оновити все","Оновити все","Оновити все"], + "Failed to create group" : "Не вдалося створити групу", + "Creating group…" : "Створення групи...", + "Create group" : "Створити групу", + "Group name" : "Назва групи", + "Please enter a valid group name" : "Введіть дійсну назву групи", "Could not render element" : "Не вдалося показати елемент", "Nothing to show" : "Відсутня інформація для показу", "Could not load section content from app store." : "Не вдалося отримати розділ вмісту із крамнички.", @@ -400,7 +411,7 @@ "Devices & sessions" : "Пристрої та сеанси", "Web, desktop and mobile clients currently logged in to your account." : "Вебдоступ, стільничі клієнти та мобільні застосунки, які було авторизовано з вашим обліковим записом.", "Error while creating device token" : "Помилка під час створення токена пристрою", - "App name" : "Дайте назву застосунку", + "App name" : "Зазначте назву застосунку", "Create new app password" : "Створіть новий пароль застосунку", "App password copied!" : "Пароль на застосунок скопійовано!", "Copy app password" : "Копіювати пароль на застосунок", @@ -620,12 +631,7 @@ "All accounts" : "Всі облікові записи", "Admins" : "Адміністратори", "Account group: {group}" : "Група облікового запису: {group}", - "Failed to create group" : "Не вдалося створити групу", "Account management" : "Керування обліковими записами", - "Creating group…" : "Створення групи...", - "Create group" : "Створити групу", - "Group name" : "Назва групи", - "Please enter a valid group name" : "Введіть дійсну назву групи", "Sending…" : "Надсилання...", "Email sent" : "Лист надіслано", "Location" : "Місце розташування", diff --git a/apps/settings/l10n/vi.js b/apps/settings/l10n/vi.js index 468a12d7c79..8194c674fce 100644 --- a/apps/settings/l10n/vi.js +++ b/apps/settings/l10n/vi.js @@ -191,6 +191,10 @@ OC.L10N.register( "No apps found for your version" : "Không tìm thấy ứng dụng nào cho phiên bản của bạn", "_%n app has an update available_::_%n apps have an update available_" : ["%n ứng dụng có sẵn bản cập nhật"], "_Update_::_Update all_" : ["Cập nhật tất cả"], + "Failed to create group" : "Không tạo được nhóm", + "Create group" : "Tạo nhóm", + "Group name" : "Tên nhóm", + "Please enter a valid group name" : "Vui lòng nhập tên nhóm hợp lệ", "Loading" : "Đang tải", "Type" : "Loại", "Learn more" : "Đọc nhiều hơn", @@ -393,10 +397,6 @@ OC.L10N.register( "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Với tư cách là quản trị viên, bạn có thể tinh chỉnh hành vi chia sẻ. Vui lòng xem tài liệu để biết thêm thông tin.", "You need to enable the File sharing App." : "Bạn cần kích hoạt Ứng dụng chia sẻ tệp.", "Admins" : "Quản trị viên", - "Failed to create group" : "Không tạo được nhóm", - "Create group" : "Tạo nhóm", - "Group name" : "Tên nhóm", - "Please enter a valid group name" : "Vui lòng nhập tên nhóm hợp lệ", "Sending…" : "Đang gửi...", "Email sent" : "Email đã được gửi", "Location" : "Vị trí", diff --git a/apps/settings/l10n/vi.json b/apps/settings/l10n/vi.json index 86abe7e30bc..26144a3a72e 100644 --- a/apps/settings/l10n/vi.json +++ b/apps/settings/l10n/vi.json @@ -189,6 +189,10 @@ "No apps found for your version" : "Không tìm thấy ứng dụng nào cho phiên bản của bạn", "_%n app has an update available_::_%n apps have an update available_" : ["%n ứng dụng có sẵn bản cập nhật"], "_Update_::_Update all_" : ["Cập nhật tất cả"], + "Failed to create group" : "Không tạo được nhóm", + "Create group" : "Tạo nhóm", + "Group name" : "Tên nhóm", + "Please enter a valid group name" : "Vui lòng nhập tên nhóm hợp lệ", "Loading" : "Đang tải", "Type" : "Loại", "Learn more" : "Đọc nhiều hơn", @@ -391,10 +395,6 @@ "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Với tư cách là quản trị viên, bạn có thể tinh chỉnh hành vi chia sẻ. Vui lòng xem tài liệu để biết thêm thông tin.", "You need to enable the File sharing App." : "Bạn cần kích hoạt Ứng dụng chia sẻ tệp.", "Admins" : "Quản trị viên", - "Failed to create group" : "Không tạo được nhóm", - "Create group" : "Tạo nhóm", - "Group name" : "Tên nhóm", - "Please enter a valid group name" : "Vui lòng nhập tên nhóm hợp lệ", "Sending…" : "Đang gửi...", "Email sent" : "Email đã được gửi", "Location" : "Vị trí", diff --git a/apps/settings/l10n/zh_CN.js b/apps/settings/l10n/zh_CN.js index 05871c08c3e..0ed74f90344 100644 --- a/apps/settings/l10n/zh_CN.js +++ b/apps/settings/l10n/zh_CN.js @@ -258,6 +258,7 @@ OC.L10N.register( "PHP modules" : "PHP模块", "increases language translation performance and fixes sorting of non-ASCII characters" : "提高语言翻译性能并修复非 ASCII 字符的排序", "for Argon2 for password hashing" : "用于 Argon2 进行密码哈希处理", + "required for SFTP storage and recommended for WebAuthn performance" : "SFTP 存储所需,推荐用于 WebAuthn 性能", "for picture rotation in server and metadata extraction in the Photos app" : "用于服务器中的图片旋转和照片应用程序中的元数据提取", "This instance is missing some required PHP modules. It is required to install them: %s." : "该实例缺少一些必须的PHP模块。必须安装以下模块:%s", "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them:\n%s" : "此实例缺少一些推荐的 PHP 模块。为了提高性能和更好的兼容性,强烈建议安装它们:\n%s", @@ -427,6 +428,15 @@ OC.L10N.register( "No apps found for your version" : "未找到适合当前版本的应用", "_%n app has an update available_::_%n apps have an update available_" : ["%n 应用有可用的更新"], "_Update_::_Update all_" : ["全部更新"], + "Failed to load groups" : "无法加载群组", + "Failed to create group" : "无法创建群组", + "Creating group…" : "正在创建群组 ...", + "Create group" : "创建群组", + "Group name" : "分组名称", + "Please enter a valid group name" : "请处输入一个有效的群组名称", + "Search groups…" : "搜索群组…", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "群组列表。出于性能原因,此列表未完全填充。当您在列表中导航或搜索时,将加载这些群组。", + "Loading groups…" : "正在加载群组……", "Could not load app discover section" : "无法加载应用程序发现部分", "Could not render element" : "无法渲染元素", "Nothing to show" : "没有什么可显示的", @@ -668,6 +678,7 @@ OC.L10N.register( "Set line manager" : "设置行管理员", "Account name will be autogenerated" : "账号名称将自动生成", "Account name (required)" : "账号名称(必填)", + "Failed to search groups" : "无法搜索群组", "New account" : "新建账号", "Display name" : "显示名称", "Either password or email is required" : "需要密码或者电子邮件地址", @@ -707,6 +718,8 @@ OC.L10N.register( "Remote wipe of devices" : "远程擦除设备", "Wipe {userid}'s devices" : "擦除 {userid} 的设备", "Wiped {userid}'s devices" : "已抹除 {userid} 的设备", + "Failed to load groups with details" : "无法加载包含详情的群组", + "Failed to load subadmin groups with details" : "无法加载包含详情的子管理员群组", "Failed to update line manager" : "更新行管理员失败", "Fully delete {userid}'s account including all their personal files, app data, etc." : "完全删除 {userid} 的账号,包括其所有个人文件,应用程序数据等。", "Account deletion" : "账号删除", @@ -739,6 +752,7 @@ OC.L10N.register( "Sorting" : "正在排序", "The system config enforces sorting the groups by name. This also disables showing the member count." : "系统配置强制按名称对组进行排序。 这也会禁用显示成员计数。", "Group list sorting" : "群组列表排序", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "出于性能原因,排序仅适用于当前加载的群组。当您在列表中导航或搜索时,将加载群组。", "By member count" : "按成员数量", "By name" : "按用户名", "Send email" : "发送电子邮件", @@ -768,12 +782,7 @@ OC.L10N.register( "All accounts" : "所有账号", "Admins" : "管理员", "Account group: {group}" : "账号群组:{group}", - "Failed to create group" : "创建群组失败", "Account management" : "账号管理", - "Creating group…" : "正在创建群组 ...", - "Create group" : "创建群组", - "Group name" : "分组名称", - "Please enter a valid group name" : "请处输入一个有效的群组名称", "Sending…" : "正在发送 ...", "Email sent" : "邮件已发送", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "出于性能原因,当您在 Nextcloud 服务器上启用加密时,仅加密新文件和更改的文件。", diff --git a/apps/settings/l10n/zh_CN.json b/apps/settings/l10n/zh_CN.json index 1e68714f5b6..73997889f4f 100644 --- a/apps/settings/l10n/zh_CN.json +++ b/apps/settings/l10n/zh_CN.json @@ -256,6 +256,7 @@ "PHP modules" : "PHP模块", "increases language translation performance and fixes sorting of non-ASCII characters" : "提高语言翻译性能并修复非 ASCII 字符的排序", "for Argon2 for password hashing" : "用于 Argon2 进行密码哈希处理", + "required for SFTP storage and recommended for WebAuthn performance" : "SFTP 存储所需,推荐用于 WebAuthn 性能", "for picture rotation in server and metadata extraction in the Photos app" : "用于服务器中的图片旋转和照片应用程序中的元数据提取", "This instance is missing some required PHP modules. It is required to install them: %s." : "该实例缺少一些必须的PHP模块。必须安装以下模块:%s", "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them:\n%s" : "此实例缺少一些推荐的 PHP 模块。为了提高性能和更好的兼容性,强烈建议安装它们:\n%s", @@ -425,6 +426,15 @@ "No apps found for your version" : "未找到适合当前版本的应用", "_%n app has an update available_::_%n apps have an update available_" : ["%n 应用有可用的更新"], "_Update_::_Update all_" : ["全部更新"], + "Failed to load groups" : "无法加载群组", + "Failed to create group" : "无法创建群组", + "Creating group…" : "正在创建群组 ...", + "Create group" : "创建群组", + "Group name" : "分组名称", + "Please enter a valid group name" : "请处输入一个有效的群组名称", + "Search groups…" : "搜索群组…", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "群组列表。出于性能原因,此列表未完全填充。当您在列表中导航或搜索时,将加载这些群组。", + "Loading groups…" : "正在加载群组……", "Could not load app discover section" : "无法加载应用程序发现部分", "Could not render element" : "无法渲染元素", "Nothing to show" : "没有什么可显示的", @@ -666,6 +676,7 @@ "Set line manager" : "设置行管理员", "Account name will be autogenerated" : "账号名称将自动生成", "Account name (required)" : "账号名称(必填)", + "Failed to search groups" : "无法搜索群组", "New account" : "新建账号", "Display name" : "显示名称", "Either password or email is required" : "需要密码或者电子邮件地址", @@ -705,6 +716,8 @@ "Remote wipe of devices" : "远程擦除设备", "Wipe {userid}'s devices" : "擦除 {userid} 的设备", "Wiped {userid}'s devices" : "已抹除 {userid} 的设备", + "Failed to load groups with details" : "无法加载包含详情的群组", + "Failed to load subadmin groups with details" : "无法加载包含详情的子管理员群组", "Failed to update line manager" : "更新行管理员失败", "Fully delete {userid}'s account including all their personal files, app data, etc." : "完全删除 {userid} 的账号,包括其所有个人文件,应用程序数据等。", "Account deletion" : "账号删除", @@ -737,6 +750,7 @@ "Sorting" : "正在排序", "The system config enforces sorting the groups by name. This also disables showing the member count." : "系统配置强制按名称对组进行排序。 这也会禁用显示成员计数。", "Group list sorting" : "群组列表排序", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "出于性能原因,排序仅适用于当前加载的群组。当您在列表中导航或搜索时,将加载群组。", "By member count" : "按成员数量", "By name" : "按用户名", "Send email" : "发送电子邮件", @@ -766,12 +780,7 @@ "All accounts" : "所有账号", "Admins" : "管理员", "Account group: {group}" : "账号群组:{group}", - "Failed to create group" : "创建群组失败", "Account management" : "账号管理", - "Creating group…" : "正在创建群组 ...", - "Create group" : "创建群组", - "Group name" : "分组名称", - "Please enter a valid group name" : "请处输入一个有效的群组名称", "Sending…" : "正在发送 ...", "Email sent" : "邮件已发送", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "出于性能原因,当您在 Nextcloud 服务器上启用加密时,仅加密新文件和更改的文件。", diff --git a/apps/settings/l10n/zh_HK.js b/apps/settings/l10n/zh_HK.js index e2ba19c97a1..1c8fe68d2af 100644 --- a/apps/settings/l10n/zh_HK.js +++ b/apps/settings/l10n/zh_HK.js @@ -428,6 +428,15 @@ OC.L10N.register( "No apps found for your version" : "沒有找到適合您的版本的應用程式", "_%n app has an update available_::_%n apps have an update available_" : ["%n 個應用程式有可用的更新"], "_Update_::_Update all_" : ["更新全部"], + "Failed to load groups" : "無法加載群組", + "Failed to create group" : "創建群組失敗", + "Creating group…" : "正在創建群組 ...", + "Create group" : "創建群組", + "Group name" : "群組名稱", + "Please enter a valid group name" : "請輸入有效的群組名稱", + "Search groups…" : "搜尋群組 ...", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "群組列表。出於性能考慮,此列表並未完全加載。當您瀏覽或搜尋時,將會自動顯示群組。", + "Loading groups…" : "正在加載群組…", "Could not load app discover section" : "無法載入應用程式探索區塊", "Could not render element" : "無法繪製元素", "Nothing to show" : "沒有什麼可顯示的", @@ -669,6 +678,7 @@ OC.L10N.register( "Set line manager" : "設定行管理員", "Account name will be autogenerated" : "將會自動產生帳戶名稱", "Account name (required)" : "帳戶名稱(必填)", + "Failed to search groups" : "無法搜尋群組", "New account" : "新帳戶", "Display name" : "顯示名稱", "Either password or email is required" : "需要密碼或電郵地址", @@ -708,6 +718,8 @@ OC.L10N.register( "Remote wipe of devices" : "遠端抹除裝置", "Wipe {userid}'s devices" : "抹除 {userid} 的裝置", "Wiped {userid}'s devices" : "抹除了 {userid} 的裝置", + "Failed to load groups with details" : "無法加載包含詳情的群組", + "Failed to load subadmin groups with details" : "無法加載包含詳情的副管理員群組", "Failed to update line manager" : "更新行管理員失敗", "Fully delete {userid}'s account including all their personal files, app data, etc." : "完全刪除 {userid} 的帳戶,包含他們所有的個人檔案、應用程式資料等等。", "Account deletion" : "帳戶刪除", @@ -740,6 +752,7 @@ OC.L10N.register( "Sorting" : "排序", "The system config enforces sorting the groups by name. This also disables showing the member count." : "系統設定強制按名稱對群組排序。這也會停用顯示成員數量。", "Group list sorting" : "群組清單排序", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "出於性能考慮,排序僅適用於當前加載的群組。當您瀏覽或搜尋列表時,群組將會被加載。", "By member count" : "按成員數量", "By name" : "按名稱", "Send email" : "傳送測試電郵", @@ -769,12 +782,7 @@ OC.L10N.register( "All accounts" : "所有帳戶", "Admins" : "管理員", "Account group: {group}" : "帳戶群組:{group}", - "Failed to create group" : "創建群組失敗", "Account management" : "帳戶管理", - "Creating group…" : "正在創建群組 ...", - "Create group" : "創建群組", - "Group name" : "群組名稱", - "Please enter a valid group name" : "請輸入有效的群組名稱", "Sending…" : "正在傳送……", "Email sent" : "電子郵件已寄出", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "出於性能考慮,當您在 Nextcloud 伺服器上啟用加密時,僅會加密新檔案和已更改的檔案。", diff --git a/apps/settings/l10n/zh_HK.json b/apps/settings/l10n/zh_HK.json index 56f1b5403aa..7889fa4c0f6 100644 --- a/apps/settings/l10n/zh_HK.json +++ b/apps/settings/l10n/zh_HK.json @@ -426,6 +426,15 @@ "No apps found for your version" : "沒有找到適合您的版本的應用程式", "_%n app has an update available_::_%n apps have an update available_" : ["%n 個應用程式有可用的更新"], "_Update_::_Update all_" : ["更新全部"], + "Failed to load groups" : "無法加載群組", + "Failed to create group" : "創建群組失敗", + "Creating group…" : "正在創建群組 ...", + "Create group" : "創建群組", + "Group name" : "群組名稱", + "Please enter a valid group name" : "請輸入有效的群組名稱", + "Search groups…" : "搜尋群組 ...", + "List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "群組列表。出於性能考慮,此列表並未完全加載。當您瀏覽或搜尋時,將會自動顯示群組。", + "Loading groups…" : "正在加載群組…", "Could not load app discover section" : "無法載入應用程式探索區塊", "Could not render element" : "無法繪製元素", "Nothing to show" : "沒有什麼可顯示的", @@ -667,6 +676,7 @@ "Set line manager" : "設定行管理員", "Account name will be autogenerated" : "將會自動產生帳戶名稱", "Account name (required)" : "帳戶名稱(必填)", + "Failed to search groups" : "無法搜尋群組", "New account" : "新帳戶", "Display name" : "顯示名稱", "Either password or email is required" : "需要密碼或電郵地址", @@ -706,6 +716,8 @@ "Remote wipe of devices" : "遠端抹除裝置", "Wipe {userid}'s devices" : "抹除 {userid} 的裝置", "Wiped {userid}'s devices" : "抹除了 {userid} 的裝置", + "Failed to load groups with details" : "無法加載包含詳情的群組", + "Failed to load subadmin groups with details" : "無法加載包含詳情的副管理員群組", "Failed to update line manager" : "更新行管理員失敗", "Fully delete {userid}'s account including all their personal files, app data, etc." : "完全刪除 {userid} 的帳戶,包含他們所有的個人檔案、應用程式資料等等。", "Account deletion" : "帳戶刪除", @@ -738,6 +750,7 @@ "Sorting" : "排序", "The system config enforces sorting the groups by name. This also disables showing the member count." : "系統設定強制按名稱對群組排序。這也會停用顯示成員數量。", "Group list sorting" : "群組清單排序", + "Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list." : "出於性能考慮,排序僅適用於當前加載的群組。當您瀏覽或搜尋列表時,群組將會被加載。", "By member count" : "按成員數量", "By name" : "按名稱", "Send email" : "傳送測試電郵", @@ -767,12 +780,7 @@ "All accounts" : "所有帳戶", "Admins" : "管理員", "Account group: {group}" : "帳戶群組:{group}", - "Failed to create group" : "創建群組失敗", "Account management" : "帳戶管理", - "Creating group…" : "正在創建群組 ...", - "Create group" : "創建群組", - "Group name" : "群組名稱", - "Please enter a valid group name" : "請輸入有效的群組名稱", "Sending…" : "正在傳送……", "Email sent" : "電子郵件已寄出", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "出於性能考慮,當您在 Nextcloud 伺服器上啟用加密時,僅會加密新檔案和已更改的檔案。", diff --git a/apps/settings/l10n/zh_TW.js b/apps/settings/l10n/zh_TW.js index 28eec7cec8b..1cafd80b772 100644 --- a/apps/settings/l10n/zh_TW.js +++ b/apps/settings/l10n/zh_TW.js @@ -428,6 +428,11 @@ OC.L10N.register( "No apps found for your version" : "沒有找到適合您版本的應用程式", "_%n app has an update available_::_%n apps have an update available_" : ["%n 個應用程式有可用的更新"], "_Update_::_Update all_" : ["更新全部"], + "Failed to create group" : "建立群組失敗", + "Creating group…" : "正在建立群組……", + "Create group" : "建立群組", + "Group name" : "群組名稱", + "Please enter a valid group name" : "請輸入有效的群組名稱", "Could not load app discover section" : "無法載入應用程式探索區塊", "Could not render element" : "無法繪製元素", "Nothing to show" : "沒有什麼可顯示的", @@ -769,12 +774,7 @@ OC.L10N.register( "All accounts" : "所有帳號", "Admins" : "管理員", "Account group: {group}" : "帳號群組:{group}", - "Failed to create group" : "建立群組失敗", "Account management" : "帳號管理", - "Creating group…" : "正在建立群組……", - "Create group" : "建立群組", - "Group name" : "群組名稱", - "Please enter a valid group name" : "請輸入有效的群組名稱", "Sending…" : "正在傳送…", "Email sent" : "電子郵件已寄出", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "出於效能考量,當您在 Nextcloud 上啟用加密時,僅會加密新檔案與已變更的檔案。", diff --git a/apps/settings/l10n/zh_TW.json b/apps/settings/l10n/zh_TW.json index c18d5a19ddb..a5e18ff62f1 100644 --- a/apps/settings/l10n/zh_TW.json +++ b/apps/settings/l10n/zh_TW.json @@ -426,6 +426,11 @@ "No apps found for your version" : "沒有找到適合您版本的應用程式", "_%n app has an update available_::_%n apps have an update available_" : ["%n 個應用程式有可用的更新"], "_Update_::_Update all_" : ["更新全部"], + "Failed to create group" : "建立群組失敗", + "Creating group…" : "正在建立群組……", + "Create group" : "建立群組", + "Group name" : "群組名稱", + "Please enter a valid group name" : "請輸入有效的群組名稱", "Could not load app discover section" : "無法載入應用程式探索區塊", "Could not render element" : "無法繪製元素", "Nothing to show" : "沒有什麼可顯示的", @@ -767,12 +772,7 @@ "All accounts" : "所有帳號", "Admins" : "管理員", "Account group: {group}" : "帳號群組:{group}", - "Failed to create group" : "建立群組失敗", "Account management" : "帳號管理", - "Creating group…" : "正在建立群組……", - "Create group" : "建立群組", - "Group name" : "群組名稱", - "Please enter a valid group name" : "請輸入有效的群組名稱", "Sending…" : "正在傳送…", "Email sent" : "電子郵件已寄出", "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "出於效能考量,當您在 Nextcloud 上啟用加密時,僅會加密新檔案與已變更的檔案。", diff --git a/apps/settings/lib/Controller/UsersController.php b/apps/settings/lib/Controller/UsersController.php index 739943d91b0..e97e497b9c1 100644 --- a/apps/settings/lib/Controller/UsersController.php +++ b/apps/settings/lib/Controller/UsersController.php @@ -134,8 +134,15 @@ class UsersController extends Controller { $this->userSession ); - $groupsInfo->setSorting($sortGroupsBy); - [$adminGroup, $groups] = $groupsInfo->get(); + $adminGroup = $this->groupManager->get('admin'); + $adminGroupData = [ + 'id' => $adminGroup->getGID(), + 'name' => $adminGroup->getDisplayName(), + 'usercount' => $sortGroupsBy === MetaData::SORT_USERCOUNT ? $adminGroup->count() : 0, + 'disabled' => $adminGroup->countDisabled(), + 'canAdd' => $adminGroup->canAddUser(), + 'canRemove' => $adminGroup->canRemoveUser(), + ]; if (!$isLDAPUsed && $this->appManager->isEnabledForUser('user_ldap')) { $isLDAPUsed = (bool)array_reduce($this->userManager->getBackends(), function ($ldapFound, $backend) { @@ -196,7 +203,7 @@ class UsersController extends Controller { /* FINAL DATA */ $serverData = []; // groups - $serverData['groups'] = array_merge_recursive($adminGroup, [$recentUsersGroup, $disabledUsersGroup], $groups); + $serverData['systemGroups'] = [$adminGroupData, $recentUsersGroup, $disabledUsersGroup]; // Various data $serverData['isAdmin'] = $isAdmin; $serverData['isDelegatedAdmin'] = $isDelegatedAdmin; diff --git a/apps/settings/src/admin.js b/apps/settings/src/admin.js index ee9f24ac2a6..66848162d28 100644 --- a/apps/settings/src/admin.js +++ b/apps/settings/src/admin.js @@ -101,7 +101,6 @@ window.addEventListener('DOMContentLoaded', () => { const $el = $('#postsetupchecks') $('#security-warning-state-loading').addClass('hidden') - let hasMessages = false const $errorsEl = $el.find('.errors') const $warningsEl = $el.find('.warnings') const $infoEl = $el.find('.info') @@ -120,33 +119,30 @@ window.addEventListener('DOMContentLoaded', () => { } } + let hasErrors = false + let hasWarnings = false + if ($errorsEl.find('li').length > 0) { $errorsEl.removeClass('hidden') - hasMessages = true + hasErrors = true } if ($warningsEl.find('li').length > 0) { $warningsEl.removeClass('hidden') - hasMessages = true + hasWarnings = true } if ($infoEl.find('li').length > 0) { $infoEl.removeClass('hidden') - hasMessages = true } - if (hasMessages) { + if (hasErrors || hasWarnings) { $('#postsetupchecks-hint').removeClass('hidden') - if ($errorsEl.find('li').length > 0) { + if (hasErrors) { $('#security-warning-state-failure').removeClass('hidden') } else { $('#security-warning-state-warning').removeClass('hidden') } } else { - const securityWarning = $('#security-warning') - if (securityWarning.children('ul').children().length === 0) { - $('#security-warning-state-ok').removeClass('hidden') - } else { - $('#security-warning-state-failure').removeClass('hidden') - } + $('#security-warning-state-ok').removeClass('hidden') } }) } diff --git a/apps/settings/src/components/AppNavigationGroupList.vue b/apps/settings/src/components/AppNavigationGroupList.vue new file mode 100644 index 00000000000..b32a07bc9b8 --- /dev/null +++ b/apps/settings/src/components/AppNavigationGroupList.vue @@ -0,0 +1,200 @@ +<!-- + - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + - SPDX-License-Identifier: AGPL-3.0-or-later +--> + +<template> + <Fragment> + <NcAppNavigationCaption :name="t('settings', 'Groups')" + :disabled="loadingAddGroup" + :aria-label="loadingAddGroup ? t('settings', 'Creating group…') : t('settings', 'Create group')" + force-menu + is-heading + :open.sync="isAddGroupOpen"> + <template v-if="isAdminOrDelegatedAdmin" #actionsTriggerIcon> + <NcLoadingIcon v-if="loadingAddGroup" /> + <NcIconSvgWrapper v-else :path="mdiPlus" /> + </template> + <template v-if="isAdminOrDelegatedAdmin" #actions> + <NcActionText> + <template #icon> + <NcIconSvgWrapper :path="mdiAccountGroup" /> + </template> + {{ t('settings', 'Create group') }} + </NcActionText> + <NcActionInput :label="t('settings', 'Group name')" + data-cy-users-settings-new-group-name + :label-outside="false" + :disabled="loadingAddGroup" + :value.sync="newGroupName" + :error="hasAddGroupError" + :helper-text="hasAddGroupError ? t('settings', 'Please enter a valid group name') : ''" + @submit="createGroup" /> + </template> + </NcAppNavigationCaption> + + <NcAppNavigationSearch v-model="groupsSearchQuery" + :label="t('settings', 'Search groups…')" /> + + <p id="group-list-desc" class="hidden-visually"> + {{ t('settings', 'List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list.') }} + </p> + <NcAppNavigationList class="account-management__group-list" + aria-describedby="group-list-desc" + data-cy-users-settings-navigation-groups="custom"> + <GroupListItem v-for="group in userGroups" + :id="group.id" + ref="groupListItems" + :key="group.id" + :active="selectedGroupDecoded === group.id" + :name="group.title" + :count="group.count" /> + <div v-if="loadingGroups" role="note"> + <NcLoadingIcon :name="t('settings', 'Loading groups…')" /> + </div> + </NcAppNavigationList> + </Fragment> +</template> + +<script setup lang="ts"> +import { computed, ref, watch, onBeforeMount } from 'vue' +import { Fragment } from 'vue-frag' +import { useRoute, useRouter } from 'vue-router/composables' +import { useElementVisibility } from '@vueuse/core' +import { showError } from '@nextcloud/dialogs' +import { mdiAccountGroup, mdiPlus } from '@mdi/js' + +import NcActionInput from '@nextcloud/vue/components/NcActionInput' +import NcActionText from '@nextcloud/vue/components/NcActionText' +import NcAppNavigationCaption from '@nextcloud/vue/components/NcAppNavigationCaption' +import NcAppNavigationList from '@nextcloud/vue/components/NcAppNavigationList' +import NcAppNavigationSearch from '@nextcloud/vue/components/NcAppNavigationSearch' +import NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper' +import NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon' + +import GroupListItem from './GroupListItem.vue' + +import { useFormatGroups } from '../composables/useGroupsNavigation.ts' +import { useStore } from '../store' +import { searchGroups } from '../service/groups.ts' +import logger from '../logger.ts' + +const store = useStore() +const route = useRoute() +const router = useRouter() + +onBeforeMount(async () => { + await loadGroups() +}) + +/** Current active group in the view - this is URL encoded */ +const selectedGroup = computed(() => route.params?.selectedGroup) +/** Current active group - URL decoded */ +const selectedGroupDecoded = computed(() => selectedGroup.value ? decodeURIComponent(selectedGroup.value) : null) +/** All available groups */ +const groups = computed(() => store.getters.getSortedGroups) +/** User groups */ +const { userGroups } = useFormatGroups(groups) +/** Server settings for current user */ +const settings = computed(() => store.getters.getServerData) +/** True if the current user is a (delegated) admin */ +const isAdminOrDelegatedAdmin = computed(() => settings.value.isAdmin || settings.value.isDelegatedAdmin) + +/** True if the 'add-group' dialog is open - needed to be able to close it when the group is created */ +const isAddGroupOpen = ref(false) +/** True if the group creation is in progress to show loading spinner and disable adding another one */ +const loadingAddGroup = ref(false) +/** Error state for creating a new group */ +const hasAddGroupError = ref(false) +/** Name of the group to create (used in the group creation dialog) */ +const newGroupName = ref('') + +/** True if groups are loading */ +const loadingGroups = ref(false) +/** Search offset */ +const offset = ref(0) +/** Search query for groups */ +const groupsSearchQuery = ref('') + +const groupListItems = ref([]) +const lastGroupListItem = computed(() => { + return groupListItems.value + .findLast(component => component?.$vnode?.key === userGroups.value?.at(-1)?.id) // Order of refs is not guaranteed to match source array order + ?.$refs?.listItem?.$el +}) +const isLastGroupVisible = useElementVisibility(lastGroupListItem) +watch(isLastGroupVisible, async () => { + if (!isLastGroupVisible.value) { + return + } + await loadGroups() +}) + +watch(groupsSearchQuery, async () => { + store.commit('resetGroups') + offset.value = 0 + await loadGroups() +}) + +/** Cancelable promise for search groups request */ +const promise = ref(null) + +/** + * Load groups + */ +async function loadGroups() { + if (promise.value) { + promise.value.cancel() + } + loadingGroups.value = true + try { + promise.value = searchGroups({ + search: groupsSearchQuery.value, + offset: offset.value, + limit: 25, + }) + const groups = await promise.value + if (groups.length > 0) { + offset.value += 25 + } + for (const group of groups) { + store.commit('addGroup', group) + } + } catch (error) { + logger.error(t('settings', 'Failed to load groups'), { error }) + } + promise.value = null + loadingGroups.value = false +} + +/** + * Create a new group + */ +async function createGroup() { + hasAddGroupError.value = false + const groupId = newGroupName.value.trim() + if (groupId === '') { + hasAddGroupError.value = true + return + } + + isAddGroupOpen.value = false + loadingAddGroup.value = true + + try { + await store.dispatch('addGroup', groupId) + await router.push({ + name: 'group', + params: { + selectedGroup: encodeURIComponent(groupId), + }, + }) + const newGroupListItem = groupListItems.value.findLast(component => component?.$vnode?.key === groupId) + newGroupListItem?.$refs?.listItem?.$el?.scrollIntoView({ behavior: 'smooth', block: 'nearest' }) + newGroupName.value = '' + } catch { + showError(t('settings', 'Failed to create group')) + } + loadingAddGroup.value = false +} +</script> diff --git a/apps/settings/src/components/GroupListItem.vue b/apps/settings/src/components/GroupListItem.vue index 19786507b48..65d46136ec1 100644 --- a/apps/settings/src/components/GroupListItem.vue +++ b/apps/settings/src/components/GroupListItem.vue @@ -29,6 +29,7 @@ </NcModal> <NcAppNavigationItem :key="id" + ref="listItem" :exact="true" :name="name" :to="{ name: 'group', params: { selectedGroup: encodeURIComponent(id) } }" diff --git a/apps/settings/src/components/UserList.vue b/apps/settings/src/components/UserList.vue index 00c7ec547cb..5d6bd5f04ee 100644 --- a/apps/settings/src/components/UserList.vue +++ b/apps/settings/src/components/UserList.vue @@ -34,8 +34,6 @@ users, settings, hasObfuscated, - groups, - subAdminsGroups, quotaOptions, languages, externalActions, @@ -173,15 +171,8 @@ export default { }, groups() { - // data provided php side + remove the recent and disabled groups - return this.$store.getters.getGroups + return this.$store.getters.getSortedGroups .filter(group => group.id !== '__nc_internal_recent' && group.id !== 'disabled') - .sort((a, b) => a.name.localeCompare(b.name)) - }, - - subAdminsGroups() { - // data provided php side - return this.$store.getters.getSubadminGroups }, quotaOptions() { diff --git a/apps/settings/src/components/Users/NewUserDialog.vue b/apps/settings/src/components/Users/NewUserDialog.vue index 39757602ee1..3e50efc2072 100644 --- a/apps/settings/src/components/Users/NewUserDialog.vue +++ b/apps/settings/src/components/Users/NewUserDialog.vue @@ -64,29 +64,32 @@ :input-label="!settings.isAdmin && !settings.isDelegatedAdmin ? t('settings', 'Member of the following groups (required)') : t('settings', 'Member of the following groups')" :placeholder="t('settings', 'Set account groups')" :disabled="loading.groups || loading.all" - :options="canAddGroups" + :options="availableGroups" :value="newUser.groups" label="name" :close-on-select="false" :multiple="true" :taggable="true" :required="!settings.isAdmin && !settings.isDelegatedAdmin" - @input="handleGroupInput" - @option:created="createGroup" /> + :create-option="(value) => ({ id: value, name: value, isCreating: true })" + @search="searchGroups" + @option:created="createGroup" + @option:selected="options => addGroup(options.at(-1))" /> <!-- If user is not admin, they are a subadmin. Subadmins can't create users outside their groups Therefore, empty select is forbidden --> </div> - <div v-if="subAdminsGroups.length > 0" - class="dialog__item"> + <div class="dialog__item"> <NcSelect v-model="newUser.subAdminsGroups" class="dialog__select" :input-label="t('settings', 'Admin of the following groups')" :placeholder="t('settings', 'Set account as admin for …')" + :disabled="loading.groups || loading.all" :options="subAdminsGroups" :close-on-select="false" :multiple="true" - label="name" /> + label="name" + @search="searchGroups" /> </div> <div class="dialog__item"> <NcSelect v-model="newUser.quota" @@ -142,6 +145,9 @@ import NcPasswordField from '@nextcloud/vue/components/NcPasswordField' import NcSelect from '@nextcloud/vue/components/NcSelect' import NcTextField from '@nextcloud/vue/components/NcTextField' +import { searchGroups } from '../../service/groups.ts' +import logger from '../../logger.ts' + export default { name: 'NewUserDialog', @@ -172,11 +178,14 @@ export default { data() { return { + availableGroups: this.$store.getters.getSortedGroups.filter(group => group.id !== '__nc_internal_recent' && group.id !== 'disabled'), possibleManagers: [], // TRANSLATORS This string describes a manager in the context of an organization managerInputLabel: t('settings', 'Manager'), // TRANSLATORS This string describes a manager in the context of an organization managerLabel: t('settings', 'Set line manager'), + // Cancelable promise for search groups request + promise: null, } }, @@ -200,27 +209,9 @@ export default { return this.$store.getters.getPasswordPolicyMinLength }, - groups() { - // data provided php side + remove the recent and disabled groups - return this.$store.getters.getGroups - .filter(group => group.id !== '__nc_internal_recent' && group.id !== 'disabled') - .sort((a, b) => a.name.localeCompare(b.name)) - }, - subAdminsGroups() { // data provided php side - return this.$store.getters.getSubadminGroups - }, - - canAddGroups() { - // disabled if no permission to add new users to group - return this.groups.map(group => { - // clone object because we don't want - // to edit the original groups - group = Object.assign({}, group) - group.$isDisabled = group.canAdd === false - return group - }) + return this.availableGroups.filter(group => group.id !== 'admin' && group.id !== '__nc_internal_recent' && group.id !== 'disabled') }, languages() { @@ -281,13 +272,24 @@ export default { } }, - handleGroupInput(groups) { - /** - * Filter out groups with no id to prevent duplicate selected options - * - * Created groups are added programmatically by `createGroup()` - */ - this.newUser.groups = groups.filter(group => Boolean(group.id)) + async searchGroups(query, toggleLoading) { + if (this.promise) { + this.promise.cancel() + } + toggleLoading(true) + try { + this.promise = searchGroups({ + search: query, + offset: 0, + limit: 25, + }) + const groups = await this.promise + this.availableGroups = groups + } catch (error) { + logger.error(t('settings', 'Failed to search groups'), { error }) + } + this.promise = null + toggleLoading(false) }, /** @@ -300,11 +302,27 @@ export default { this.loading.groups = true try { await this.$store.dispatch('addGroup', gid) - this.newUser.groups.push(this.groups.find(group => group.id === gid)) - this.loading.groups = false + this.availableGroups.push({ id: gid, name: gid }) + this.newUser.groups.push({ id: gid, name: gid }) } catch (error) { - this.loading.groups = false + logger.error(t('settings', 'Failed to create group'), { error }) + } + this.loading.groups = false + }, + + /** + * Add user to group + * + * @param {object} group Group object + */ + async addGroup(group) { + if (group.isCreating) { + return + } + if (group.canAdd === false) { + return } + this.newUser.groups.push(group) }, /** diff --git a/apps/settings/src/components/Users/UserListHeader.vue b/apps/settings/src/components/Users/UserListHeader.vue index 6bc547228a4..a85306d84d3 100644 --- a/apps/settings/src/components/Users/UserListHeader.vue +++ b/apps/settings/src/components/Users/UserListHeader.vue @@ -42,7 +42,7 @@ scope="col"> <span>{{ t('settings', 'Groups') }}</span> </th> - <th v-if="subAdminsGroups.length > 0 && (settings.isAdmin || settings.isDelegatedAdmin)" + <th v-if="settings.isAdmin || settings.isDelegatedAdmin" class="header__cell header__cell--large" data-cy-user-list-header-subadmins scope="col"> @@ -125,11 +125,6 @@ export default Vue.extend({ return this.$store.getters.getServerData }, - subAdminsGroups() { - // @ts-expect-error: allow untyped $store - return this.$store.getters.getSubadminGroups - }, - passwordLabel(): string { if (this.hasObfuscated) { // TRANSLATORS This string is for a column header labelling either a password or a message that the current user has insufficient permissions diff --git a/apps/settings/src/components/Users/UserRow.vue b/apps/settings/src/components/Users/UserRow.vue index 638a1bb39f8..1432ed2c6af 100644 --- a/apps/settings/src/components/Users/UserRow.vue +++ b/apps/settings/src/components/Users/UserRow.vue @@ -106,7 +106,7 @@ :data-loading="loading.groups || undefined" :input-id="'groups' + uniqueId" :close-on-select="false" - :disabled="isLoadingField" + :disabled="isLoadingField || loading.groupsDetails" :loading="loading.groups" :multiple="true" :append-to-body="false" @@ -116,7 +116,8 @@ :value="userGroups" label="name" :no-wrap="true" - :create-option="(value) => ({ name: value, isCreating: true })" + :create-option="(value) => ({ id: value, name: value, isCreating: true })" + @search="searchGroups" @option:created="createGroup" @option:selected="options => addUserGroup(options.at(-1))" @option:deselected="removeUserGroup" /> @@ -127,10 +128,10 @@ </span> </td> - <td v-if="subAdminsGroups.length > 0 && (settings.isAdmin || settings.isDelegatedAdmin)" + <td v-if="settings.isAdmin || settings.isDelegatedAdmin" data-cy-user-list-cell-subadmins class="row__cell row__cell--large row__cell--multiline"> - <template v-if="editing && (settings.isAdmin || settings.isDelegatedAdmin) && subAdminsGroups.length > 0"> + <template v-if="editing && (settings.isAdmin || settings.isDelegatedAdmin)"> <label class="hidden-visually" :for="'subadmins' + uniqueId"> {{ t('settings', 'Set account as admin for') }} @@ -139,21 +140,22 @@ :data-loading="loading.subadmins || undefined" :input-id="'subadmins' + uniqueId" :close-on-select="false" - :disabled="isLoadingField" + :disabled="isLoadingField || loading.subAdminGroupsDetails" :loading="loading.subadmins" label="name" :append-to-body="false" :multiple="true" :no-wrap="true" - :options="subAdminsGroups" + :options="availableSubAdminGroups" :placeholder="t('settings', 'Set account as admin for')" - :value="userSubAdminsGroups" + :value="userSubAdminGroups" + @search="searchGroups" @option:deselected="removeUserSubAdmin" @option:selected="options => addUserSubAdmin(options.at(-1))" /> </template> <span v-else-if="!isObfuscated" - :title="userSubAdminsGroupsLabels?.length > 40 ? userSubAdminsGroupsLabels : null"> - {{ userSubAdminsGroupsLabels }} + :title="userSubAdminGroupsLabels?.length > 40 ? userSubAdminGroupsLabels : null"> + {{ userSubAdminGroupsLabels }} </span> </td> @@ -296,6 +298,8 @@ import UserRowActions from './UserRowActions.vue' import UserRowMixin from '../../mixins/UserRowMixin.js' import { isObfuscated, unlimitedQuota } from '../../utils/userUtils.ts' +import { searchGroups, loadUserGroups, loadUserSubAdminGroups } from '../../service/groups.ts' +import logger from '../../logger.ts' export default { name: 'UserRow', @@ -330,14 +334,6 @@ export default { type: Boolean, required: true, }, - groups: { - type: Array, - default: () => [], - }, - subAdminsGroups: { - type: Array, - required: true, - }, quotaOptions: { type: Array, required: true, @@ -370,6 +366,8 @@ export default { password: false, mailAddress: false, groups: false, + groupsDetails: false, + subAdminGroupsDetails: false, subadmins: false, quota: false, delete: false, @@ -381,6 +379,8 @@ export default { editedDisplayName: this.user.displayname, editedPassword: '', editedMail: this.user.email ?? '', + // Cancelable promise for search groups request + promise: null, } }, @@ -412,13 +412,13 @@ export default { userGroupsLabels() { return this.userGroups - .map(group => group.name) + .map(group => group.name ?? group.id) .join(', ') }, - userSubAdminsGroupsLabels() { - return this.userSubAdminsGroups - .map(group => group.name) + userSubAdminGroupsLabels() { + return this.userSubAdminGroups + .map(group => group.name ?? group.id) .join(', ') }, @@ -554,6 +554,56 @@ export default { this.loadingPossibleManagers = false }, + async loadGroupsDetails() { + this.loading.groups = true + this.loading.groupsDetails = true + try { + const groups = await loadUserGroups({ userId: this.user.id }) + this.availableGroups = this.availableGroups.map(availableGroup => groups.find(group => group.id === availableGroup.id) ?? availableGroup) + } catch (error) { + logger.error(t('settings', 'Failed to load groups with details'), { error }) + } + this.loading.groups = false + this.loading.groupsDetails = false + }, + + async loadSubAdminGroupsDetails() { + this.loading.subadmins = true + this.loading.subAdminGroupsDetails = true + try { + const groups = await loadUserSubAdminGroups({ userId: this.user.id }) + this.availableSubAdminGroups = this.availableSubAdminGroups.map(availableGroup => groups.find(group => group.id === availableGroup.id) ?? availableGroup) + } catch (error) { + logger.error(t('settings', 'Failed to load subadmin groups with details'), { error }) + } + this.loading.subadmins = false + this.loading.subAdminGroupsDetails = false + }, + + async searchGroups(query, toggleLoading) { + if (query === '') { + return // Prevent unexpected search behaviour e.g. on option:created + } + if (this.promise) { + this.promise.cancel() + } + toggleLoading(true) + try { + this.promise = await searchGroups({ + search: query, + offset: 0, + limit: 25, + }) + const groups = await this.promise + this.availableGroups = groups + this.availableSubAdminGroups = groups.filter(group => group.id !== 'admin') + } catch (error) { + logger.error(t('settings', 'Failed to search groups'), { error }) + } + this.promise = null + toggleLoading(false) + }, + async searchUserManager(query) { await this.$store.dispatch('searchUsers', { offset: 0, limit: 10, search: query }).then(response => { const users = response?.data ? this.filterManagers(Object.values(response?.data.ocs.data.users)) : [] @@ -576,7 +626,7 @@ export default { }) } catch (error) { // TRANSLATORS This string describes a line manager in the context of an organization - showError(t('setting', 'Failed to update line manager')) + showError(t('settings', 'Failed to update line manager')) console.error(error) } finally { this.loading.manager = false @@ -638,7 +688,7 @@ export default { }) if (this.editedDisplayName === this.user.displayname) { - showSuccess(t('setting', 'Display name was successfully changed')) + showSuccess(t('settings', 'Display name was successfully changed')) } } finally { this.loading.displayName = false @@ -651,7 +701,7 @@ export default { async updatePassword() { this.loading.password = true if (this.editedPassword.length === 0) { - showError(t('setting', "Password can't be empty")) + showError(t('settings', "Password can't be empty")) this.loading.password = false } else { try { @@ -661,7 +711,7 @@ export default { value: this.editedPassword, }) this.editedPassword = '' - showSuccess(t('setting', 'Password was successfully changed')) + showSuccess(t('settings', 'Password was successfully changed')) } finally { this.loading.password = false } @@ -674,7 +724,7 @@ export default { async updateEmail() { this.loading.mailAddress = true if (this.editedMail === '') { - showError(t('setting', "Email can't be empty")) + showError(t('settings', "Email can't be empty")) this.loading.mailAddress = false this.editedMail = this.user.email } else { @@ -686,7 +736,7 @@ export default { }) if (this.editedMail === this.user.email) { - showSuccess(t('setting', 'Email was successfully changed')) + showSuccess(t('settings', 'Email was successfully changed')) } } finally { this.loading.mailAddress = false @@ -700,17 +750,18 @@ export default { * @param {string} gid Group id */ async createGroup({ name: gid }) { - this.loading = { groups: true, subadmins: true } + this.loading.groups = true try { await this.$store.dispatch('addGroup', gid) + this.availableGroups.push({ id: gid, name: gid }) + this.availableSubAdminGroups.push({ id: gid, name: gid }) const userid = this.user.id await this.$store.dispatch('addUserGroup', { userid, gid }) + this.userGroups.push({ id: gid, name: gid }) } catch (error) { - console.error(error) - } finally { - this.loading = { groups: false, subadmins: false } + logger.error(t('settings', 'Failed to create group'), { error }) } - return this.$store.getters.getGroups[this.groups.length] + this.loading.groups = false }, /** @@ -724,19 +775,19 @@ export default { // Ignore return } - this.loading.groups = true const userid = this.user.id const gid = group.id if (group.canAdd === false) { - return false + return } + this.loading.groups = true try { await this.$store.dispatch('addUserGroup', { userid, gid }) + this.userGroups.push(group) } catch (error) { console.error(error) - } finally { - this.loading.groups = false } + this.loading.groups = false }, /** @@ -756,6 +807,7 @@ export default { userid, gid, }) + this.userGroups = this.userGroups.filter(group => group.id !== gid) this.loading.groups = false // remove user from current list if current list is the removed group if (this.$route.params.selectedGroup === gid) { @@ -780,10 +832,11 @@ export default { userid, gid, }) - this.loading.subadmins = false + this.userSubAdminGroups.push(group) } catch (error) { console.error(error) } + this.loading.subadmins = false }, /** @@ -801,6 +854,7 @@ export default { userid, gid, }) + this.userSubAdminGroups = this.userSubAdminGroups.filter(group => group.id !== gid) } catch (error) { console.error(error) } finally { @@ -890,7 +944,7 @@ export default { sendWelcomeMail() { this.loading.all = true this.$store.dispatch('sendWelcomeMail', this.user.id) - .then(() => showSuccess(t('setting', 'Welcome mail sent!'), { timeout: 2000 })) + .then(() => showSuccess(t('settings', 'Welcome mail sent!'), { timeout: 2000 })) .finally(() => { this.loading.all = false }) @@ -901,6 +955,8 @@ export default { if (this.editing) { await this.$nextTick() this.$refs.displayNameField?.$refs?.inputField?.$refs?.input?.focus() + this.loadGroupsDetails() + this.loadSubAdminGroupsDetails() } if (this.editedDisplayName !== this.user.displayname) { this.editedDisplayName = this.user.displayname diff --git a/apps/settings/src/components/Users/UserSettingsDialog.vue b/apps/settings/src/components/Users/UserSettingsDialog.vue index 56a2f65f3f1..94c77d320dd 100644 --- a/apps/settings/src/components/Users/UserSettingsDialog.vue +++ b/apps/settings/src/components/Users/UserSettingsDialog.vue @@ -43,6 +43,9 @@ </NcNoteCard> <fieldset> <legend>{{ t('settings', 'Group list sorting') }}</legend> + <NcNoteCard class="dialog__note" + type="info" + :text="t('settings', 'Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.')" /> <NcCheckboxRadioSwitch type="radio" :checked.sync="groupSorting" data-test="sortGroupsByMemberCount" @@ -322,6 +325,12 @@ export default { </script> <style scoped lang="scss"> +.dialog { + &__note { + font-weight: normal; + } +} + fieldset { font-weight: bold; } diff --git a/apps/settings/src/mixins/UserRowMixin.js b/apps/settings/src/mixins/UserRowMixin.js index 984607ef3d3..2cb69ff2e96 100644 --- a/apps/settings/src/mixins/UserRowMixin.js +++ b/apps/settings/src/mixins/UserRowMixin.js @@ -16,14 +16,6 @@ export default { type: Object, default: () => ({}), }, - groups: { - type: Array, - default: () => [], - }, - subAdminsGroups: { - type: Array, - default: () => [], - }, quotaOptions: { type: Array, default: () => [], @@ -49,38 +41,19 @@ export default { formattedFullTime, } }, + data() { + return { + availableGroups: this.user.groups.map(id => ({ id, name: id })), + availableSubAdminGroups: this.user.subadmin.map(id => ({ id, name: id })), + userGroups: this.user.groups.map(id => ({ id, name: id })), + userSubAdminGroups: this.user.subadmin.map(id => ({ id, name: id })), + } + }, computed: { showConfig() { return this.$store.getters.getShowConfig }, - /* GROUPS MANAGEMENT */ - userGroups() { - const userGroups = this.groups.filter(group => this.user.groups.includes(group.id)) - return userGroups - }, - userSubAdminsGroups() { - const userSubAdminsGroups = this.subAdminsGroups.filter(group => this.user.subadmin.includes(group.id)) - return userSubAdminsGroups - }, - availableGroups() { - return this.groups.map((group) => { - // clone object because we don't want - // to edit the original groups - const groupClone = Object.assign({}, group) - - // two settings here: - // 1. user NOT in group but no permission to add - // 2. user is in group but no permission to remove - groupClone.$isDisabled - = (group.canAdd === false - && !this.user.groups.includes(group.id)) - || (group.canRemove === false - && this.user.groups.includes(group.id)) - return groupClone - }) - }, - /* QUOTA MANAGEMENT */ usedSpace() { const quotaUsed = this.user.quota.used > 0 ? this.user.quota.used : 0 diff --git a/apps/settings/src/service/groups.ts b/apps/settings/src/service/groups.ts new file mode 100644 index 00000000000..a8cfd842451 --- /dev/null +++ b/apps/settings/src/service/groups.ts @@ -0,0 +1,83 @@ +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import type { IGroup } from '../views/user-types.d.ts' + +import axios from '@nextcloud/axios' +import { generateOcsUrl } from '@nextcloud/router' +import { CancelablePromise } from 'cancelable-promise' + +interface Group { + id: string + displayname: string + usercount: number + disabled: number + canAdd: boolean + canRemove: boolean +} + +const formatGroup = (group: Group): Required<IGroup> => ({ + id: group.id, + name: group.displayname, + usercount: group.usercount, + disabled: group.disabled, + canAdd: group.canAdd, + canRemove: group.canRemove, +}) + +/** + * Search groups + * + * @param {object} options Options + * @param {string} options.search Search query + * @param {number} options.offset Offset + * @param {number} options.limit Limit + */ +export const searchGroups = ({ search, offset, limit }): CancelablePromise<Required<IGroup>[]> => { + const controller = new AbortController() + return new CancelablePromise(async (resolve, reject, onCancel) => { + onCancel(() => controller.abort()) + try { + const { data } = await axios.get( + generateOcsUrl('/cloud/groups/details?search={search}&offset={offset}&limit={limit}', { search, offset, limit }), { + signal: controller.signal, + }, + ) + const groups: Group[] = data.ocs?.data?.groups ?? [] + const formattedGroups = groups.map(formatGroup) + resolve(formattedGroups) + } catch (error) { + reject(error) + } + }) +} + +/** + * Load user groups + * + * @param {object} options Options + * @param {string} options.userId User id + */ +export const loadUserGroups = async ({ userId }): Promise<Required<IGroup>[]> => { + const url = generateOcsUrl('/cloud/users/{userId}/groups/details', { userId }) + const { data } = await axios.get(url) + const groups: Group[] = data.ocs?.data?.groups ?? [] + const formattedGroups = groups.map(formatGroup) + return formattedGroups +} + +/** + * Load user subadmin groups + * + * @param {object} options Options + * @param {string} options.userId User id + */ +export const loadUserSubAdminGroups = async ({ userId }): Promise<Required<IGroup>[]> => { + const url = generateOcsUrl('/cloud/users/{userId}/subadmins/details', { userId }) + const { data } = await axios.get(url) + const groups: Group[] = data.ocs?.data?.groups ?? [] + const formattedGroups = groups.map(formatGroup) + return formattedGroups +} diff --git a/apps/settings/src/store/users.js b/apps/settings/src/store/users.js index 61473528ba6..a6298a38e2d 100644 --- a/apps/settings/src/store/users.js +++ b/apps/settings/src/store/users.js @@ -8,15 +8,22 @@ import { getCapabilities } from '@nextcloud/capabilities' import { parseFileSize } from '@nextcloud/files' import { showError } from '@nextcloud/dialogs' import { generateOcsUrl, generateUrl } from '@nextcloud/router' +import { loadState } from '@nextcloud/initial-state' import axios from '@nextcloud/axios' import { GroupSorting } from '../constants/GroupManagement.ts' +import { naturalCollator } from '../utils/sorting.ts' import api from './api.js' import logger from '../logger.ts' +const usersSettings = loadState('settings', 'usersSettings', {}) + const localStorage = getBuilder('settings').persist(true).build() const defaults = { + /** + * @type {import('../views/user-types').IGroup} + */ group: { id: '', name: '', @@ -29,14 +36,14 @@ const defaults = { const state = { users: [], - groups: [], - orderBy: GroupSorting.UserCount, + groups: [...(usersSettings.systemGroups ?? [])], + orderBy: usersSettings.sortGroups ?? GroupSorting.UserCount, minPasswordLength: 0, usersOffset: 0, usersLimit: 25, disabledUsersOffset: 0, disabledUsersLimit: 25, - userCount: 0, + userCount: usersSettings.userCount ?? 0, showConfig: { showStoragePath: localStorage.getItem('account_settings__showStoragePath') === 'true', showUserBackend: localStorage.getItem('account_settings__showUserBackend') === 'true', @@ -63,21 +70,17 @@ const mutations = { setPasswordPolicyMinLength(state, length) { state.minPasswordLength = length !== '' ? length : 0 }, - initGroups(state, { groups, orderBy, userCount }) { - state.groups = groups.map(group => Object.assign({}, defaults.group, group)) - state.orderBy = orderBy - state.userCount = userCount - }, - addGroup(state, { gid, displayName }) { + /** + * @param {object} state store state + * @param {import('../views/user-types.js').IGroup} newGroup new group + */ + addGroup(state, newGroup) { try { - if (typeof state.groups.find((group) => group.id === gid) !== 'undefined') { + if (typeof state.groups.find((group) => group.id === newGroup.id) !== 'undefined') { return } // extend group to default values - const group = Object.assign({}, defaults.group, { - id: gid, - name: displayName, - }) + const group = Object.assign({}, defaults.group, newGroup) state.groups.unshift(group) } catch (e) { console.error('Can\'t create group', e) @@ -157,6 +160,9 @@ const mutations = { state.userCount += user.enabled ? 1 : -1 // update Active Users count user.groups.forEach(userGroup => { const group = state.groups.find(groupSearch => groupSearch.id === userGroup) + if (!group) { + return + } group.disabled += user.enabled ? -1 : 1 // update group disabled count }) break @@ -165,9 +171,11 @@ const mutations = { state.userCount++ // increment Active Users count user.groups.forEach(userGroup => { - state.groups - .find(groupSearch => groupSearch.id === userGroup) - .usercount++ // increment group total count + const group = state.groups.find(groupSearch => groupSearch.id === userGroup) + if (!group) { + return + } + group.usercount++ // increment group total count }) break case 'remove': @@ -186,6 +194,9 @@ const mutations = { disabledGroup.usercount-- // decrement Disabled Users count user.groups.forEach(userGroup => { const group = state.groups.find(groupSearch => groupSearch.id === userGroup) + if (!group) { + return + } group.disabled-- // decrement group disabled count }) } @@ -215,6 +226,20 @@ const mutations = { state.disabledUsersOffset = 0 }, + /** + * Reset group list + * + * @param {object} state the store state + */ + resetGroups(state) { + const systemGroups = state.groups.filter(group => [ + 'admin', + '__nc_internal_recent', + 'disabled', + ].includes(group.id)) + state.groups = [...systemGroups] + }, + setShowConfig(state, { key, value }) { localStorage.setItem(`account_settings__${key}`, JSON.stringify(value)) state.showConfig[key] = value @@ -245,20 +270,16 @@ const getters = { getGroups(state) { return state.groups }, - getSubadminGroups(state) { - // Can't be subadmin of admin, recent, or disabled - return state.groups.filter(group => group.id !== 'admin' && group.id !== '__nc_internal_recent' && group.id !== 'disabled') - }, getSortedGroups(state) { const groups = [...state.groups] if (state.orderBy === GroupSorting.UserCount) { return groups.sort((a, b) => { const numA = a.usercount - a.disabled const numB = b.usercount - b.disabled - return (numA < numB) ? 1 : (numB < numA ? -1 : a.name.localeCompare(b.name)) + return (numA < numB) ? 1 : (numB < numA ? -1 : naturalCollator.compare(a.name, b.name)) }) } else { - return groups.sort((a, b) => a.name.localeCompare(b.name)) + return groups.sort((a, b) => naturalCollator.compare(a.name, b.name)) } }, getGroupSorting(state) { @@ -444,7 +465,7 @@ const actions = { .then((response) => { if (Object.keys(response.data.ocs.data.groups).length > 0) { response.data.ocs.data.groups.forEach(function(group) { - context.commit('addGroup', { gid: group, displayName: group }) + context.commit('addGroup', { id: group, name: group }) }) return true } @@ -511,7 +532,7 @@ const actions = { return api.requireAdmin().then((response) => { return api.post(generateOcsUrl('cloud/groups'), { groupid: gid }) .then((response) => { - context.commit('addGroup', { gid, displayName: gid }) + context.commit('addGroup', { id: gid, name: gid }) return { gid, displayName: gid } }) .catch((error) => { throw error }) diff --git a/apps/settings/src/utils/sorting.ts b/apps/settings/src/utils/sorting.ts new file mode 100644 index 00000000000..88f877733cc --- /dev/null +++ b/apps/settings/src/utils/sorting.ts @@ -0,0 +1,14 @@ +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { getCanonicalLocale, getLanguage } from '@nextcloud/l10n' + +export const naturalCollator = Intl.Collator( + [getLanguage(), getCanonicalLocale()], + { + numeric: true, + usage: 'sort', + }, +) diff --git a/apps/settings/src/views/UserManagement.vue b/apps/settings/src/views/UserManagement.vue index d09f0a76f81..9ab76f921a0 100644 --- a/apps/settings/src/views/UserManagement.vue +++ b/apps/settings/src/views/UserManagement.vue @@ -55,11 +55,6 @@ export default defineComponent({ }, beforeMount() { - this.$store.commit('initGroups', { - groups: this.$store.getters.getServerData.groups, - orderBy: this.$store.getters.getServerData.sortGroups, - userCount: this.$store.getters.getServerData.userCount, - }) this.$store.dispatch('getPasswordPolicyMinLength') }, diff --git a/apps/settings/src/views/UserManagementNavigation.vue b/apps/settings/src/views/UserManagementNavigation.vue index f4c8c646ae2..df3670bcfc7 100644 --- a/apps/settings/src/views/UserManagementNavigation.vue +++ b/apps/settings/src/views/UserManagementNavigation.vue @@ -3,7 +3,8 @@ - SPDX-License-Identifier: AGPL-3.0-or-later --> <template> - <NcAppNavigation :aria-label="t('settings', 'Account management')"> + <NcAppNavigation class="account-management__navigation" + :aria-label="t('settings', 'Account management')"> <NcAppNavigationNew button-id="new-user-button" :text="t('settings','New account')" @click="showNewUserMenu" @@ -79,42 +80,7 @@ </NcAppNavigationItem> </NcAppNavigationList> - <NcAppNavigationCaption :name="t('settings', 'Groups')" - :disabled="loadingAddGroup" - :aria-label="loadingAddGroup ? t('settings', 'Creating group…') : t('settings', 'Create group')" - force-menu - is-heading - :open.sync="isAddGroupOpen"> - <template v-if="isAdminOrDelegatedAdmin" #actionsTriggerIcon> - <NcLoadingIcon v-if="loadingAddGroup" /> - <NcIconSvgWrapper v-else :path="mdiPlus" /> - </template> - <template v-if="isAdminOrDelegatedAdmin" #actions> - <NcActionText> - <template #icon> - <NcIconSvgWrapper :path="mdiAccountGroup" /> - </template> - {{ t('settings', 'Create group') }} - </NcActionText> - <NcActionInput :label="t('settings', 'Group name')" - data-cy-users-settings-new-group-name - :label-outside="false" - :disabled="loadingAddGroup" - :value.sync="newGroupName" - :error="hasAddGroupError" - :helper-text="hasAddGroupError ? t('settings', 'Please enter a valid group name') : ''" - @submit="createGroup" /> - </template> - </NcAppNavigationCaption> - - <NcAppNavigationList class="account-management__group-list" data-cy-users-settings-navigation-groups="custom"> - <GroupListItem v-for="group in userGroups" - :id="group.id" - :key="group.id" - :active="selectedGroupDecoded === group.id" - :name="group.title" - :count="group.count" /> - </NcAppNavigationList> + <AppNavigationGroupList /> <template #footer> <NcButton class="account-management__settings-toggle" @@ -131,31 +97,26 @@ </template> <script setup lang="ts"> -import { mdiAccount, mdiAccountGroup, mdiAccountOff, mdiCog, mdiPlus, mdiShieldAccount, mdiHistory } from '@mdi/js' -import { showError } from '@nextcloud/dialogs' +import { mdiAccount, mdiAccountOff, mdiCog, mdiPlus, mdiShieldAccount, mdiHistory } from '@mdi/js' import { translate as t } from '@nextcloud/l10n' import { computed, ref } from 'vue' -import NcActionInput from '@nextcloud/vue/components/NcActionInput' -import NcActionText from '@nextcloud/vue/components/NcActionText' import NcAppNavigation from '@nextcloud/vue/components/NcAppNavigation' -import NcAppNavigationCaption from '@nextcloud/vue/components/NcAppNavigationCaption' import NcAppNavigationItem from '@nextcloud/vue/components/NcAppNavigationItem' import NcAppNavigationList from '@nextcloud/vue/components/NcAppNavigationList' import NcAppNavigationNew from '@nextcloud/vue/components/NcAppNavigationNew' import NcButton from '@nextcloud/vue/components/NcButton' import NcCounterBubble from '@nextcloud/vue/components/NcCounterBubble' import NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper' -import NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon' -import GroupListItem from '../components/GroupListItem.vue' import UserSettingsDialog from '../components/Users/UserSettingsDialog.vue' +import AppNavigationGroupList from '../components/AppNavigationGroupList.vue' + import { useStore } from '../store' -import { useRoute, useRouter } from 'vue-router/composables' +import { useRoute } from 'vue-router/composables' import { useFormatGroups } from '../composables/useGroupsNavigation' const route = useRoute() -const router = useRouter() const store = useStore() /** State of the 'new-account' dialog */ @@ -170,51 +131,13 @@ const selectedGroupDecoded = computed(() => selectedGroup.value ? decodeURICompo const userCount = computed(() => store.getters.getUserCount) /** All available groups */ const groups = computed(() => store.getters.getSortedGroups) -const { adminGroup, recentGroup, disabledGroup, userGroups } = useFormatGroups(groups) +const { adminGroup, recentGroup, disabledGroup } = useFormatGroups(groups) /** Server settings for current user */ const settings = computed(() => store.getters.getServerData) /** True if the current user is a (delegated) admin */ const isAdminOrDelegatedAdmin = computed(() => settings.value.isAdmin || settings.value.isDelegatedAdmin) -/** True if the 'add-group' dialog is open - needed to be able to close it when the group is created */ -const isAddGroupOpen = ref(false) -/** True if the group creation is in progress to show loading spinner and disable adding another one */ -const loadingAddGroup = ref(false) -/** Error state for creating a new group */ -const hasAddGroupError = ref(false) -/** Name of the group to create (used in the group creation dialog) */ -const newGroupName = ref('') - -/** - * Create a new group - */ -async function createGroup() { - hasAddGroupError.value = false - const groupId = newGroupName.value.trim() - if (groupId === '') { - hasAddGroupError.value = true - return - } - - isAddGroupOpen.value = false - loadingAddGroup.value = true - - try { - await store.dispatch('addGroup', groupId) - await router.push({ - name: 'group', - params: { - selectedGroup: encodeURIComponent(groupId), - }, - }) - newGroupName.value = '' - } catch { - showError(t('settings', 'Failed to create group')) - } - loadingAddGroup.value = false -} - /** * Open the new-user form dialog */ @@ -227,7 +150,12 @@ function showNewUserMenu() { </script> <style scoped lang="scss"> -.account-management{ +.account-management { + &__navigation { + :deep(.app-navigation__body) { + will-change: scroll-position; + } + } &__system-list { height: auto !important; overflow: visible !important; diff --git a/apps/settings/src/views/user-types.d.ts b/apps/settings/src/views/user-types.d.ts index b8cd30e53d9..21c63a13b03 100644 --- a/apps/settings/src/views/user-types.d.ts +++ b/apps/settings/src/views/user-types.d.ts @@ -3,7 +3,14 @@ * SPDX-License-Identifier: AGPL-3.0-or-later */ export interface IGroup { + /** + * Id + */ id: string + + /** + * Display name + */ name: string /** @@ -15,4 +22,14 @@ export interface IGroup { * Number of disabled users */ disabled: number + + /** + * True if users can be added to this group + */ + canAdd?: boolean + + /** + * True if users can be removed from this group + */ + canRemove?: boolean } diff --git a/apps/sharebymail/l10n/fr.js b/apps/sharebymail/l10n/fr.js index eed52b835e7..748e6173dab 100644 --- a/apps/sharebymail/l10n/fr.js +++ b/apps/sharebymail/l10n/fr.js @@ -24,7 +24,7 @@ OC.L10N.register( "Expiration:" : "Expiration:", "Open %s" : "Ouvrir %s", "%1$s via %2$s" : "%1$s via %2$s", - "%1$s shared %2$s with you. You should have already received a separate mail with a link to access it." : "%1$s à partagé %2$s avec vous. Vous devriez déjà avoir reçu un email séparé avec un lien pour y accéder.", + "%1$s shared %2$s with you. You should have already received a separate mail with a link to access it." : "%1$s a partagé %2$s avec vous. Vous devriez déjà avoir reçu un e-mail séparé avec un lien pour y accéder.", "Password to access %1$s shared to you by %2$s" : "Mot de passe pour accéder à %1$s partagé avec vous par %2$s", "Password to access %s" : "Mot de passe pour accéder à %s", "It is protected with the following password:" : "Il est protégé avec le mot de passe suivant :", diff --git a/apps/sharebymail/l10n/fr.json b/apps/sharebymail/l10n/fr.json index 48a5b463db3..25cf1f6b5e7 100644 --- a/apps/sharebymail/l10n/fr.json +++ b/apps/sharebymail/l10n/fr.json @@ -22,7 +22,7 @@ "Expiration:" : "Expiration:", "Open %s" : "Ouvrir %s", "%1$s via %2$s" : "%1$s via %2$s", - "%1$s shared %2$s with you. You should have already received a separate mail with a link to access it." : "%1$s à partagé %2$s avec vous. Vous devriez déjà avoir reçu un email séparé avec un lien pour y accéder.", + "%1$s shared %2$s with you. You should have already received a separate mail with a link to access it." : "%1$s a partagé %2$s avec vous. Vous devriez déjà avoir reçu un e-mail séparé avec un lien pour y accéder.", "Password to access %1$s shared to you by %2$s" : "Mot de passe pour accéder à %1$s partagé avec vous par %2$s", "Password to access %s" : "Mot de passe pour accéder à %s", "It is protected with the following password:" : "Il est protégé avec le mot de passe suivant :", diff --git a/apps/sharebymail/lib/Activity.php b/apps/sharebymail/lib/Activity.php index ae3407c1e2b..7e9389da060 100644 --- a/apps/sharebymail/lib/Activity.php +++ b/apps/sharebymail/lib/Activity.php @@ -233,12 +233,12 @@ class Activity implements IProvider { /** * @param int $id * @param string $path - * @return array + * @return array<string,string> */ - protected function generateFileParameter($id, $path) { + protected function generateFileParameter($id, $path): array { return [ 'type' => 'file', - 'id' => $id, + 'id' => (string)$id, 'name' => basename($path), 'path' => trim($path, '/'), 'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $id]), diff --git a/apps/sharebymail/lib/ShareByMailProvider.php b/apps/sharebymail/lib/ShareByMailProvider.php index 7d0665ca630..e6e1cf509e9 100644 --- a/apps/sharebymail/lib/ShareByMailProvider.php +++ b/apps/sharebymail/lib/ShareByMailProvider.php @@ -1115,10 +1115,7 @@ class ShareByMailProvider extends DefaultShareProvider implements IShareProvider $qb = $this->dbConnection->getQueryBuilder(); $qb->select('*') ->from('share', 's') - ->andWhere($qb->expr()->orX( - $qb->expr()->eq('item_type', $qb->createNamedParameter('file')), - $qb->expr()->eq('item_type', $qb->createNamedParameter('folder')) - )) + ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY))) ->andWhere( $qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)) ); @@ -1167,10 +1164,7 @@ class ShareByMailProvider extends DefaultShareProvider implements IShareProvider ->from('share') ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL))) ->andWhere($qb->expr()->in('file_source', $qb->createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY))) - ->andWhere($qb->expr()->orX( - $qb->expr()->eq('item_type', $qb->createNamedParameter('file')), - $qb->expr()->eq('item_type', $qb->createNamedParameter('folder')) - )); + ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY))); $cursor = $qb->executeQuery(); $public = false; diff --git a/apps/systemtags/l10n/de.js b/apps/systemtags/l10n/de.js index ceba9d935e2..85c8f0ded1b 100644 --- a/apps/systemtags/l10n/de.js +++ b/apps/systemtags/l10n/de.js @@ -40,11 +40,11 @@ OC.L10N.register( "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei wurden geändert", "Files" : "Dateien", "Tags" : "Tags", - "All tagged %s …" : "Alle Schlagwörter %s hinzugefügt …", + "All tagged %s …" : "Alle Schlagworte %s hinzugefügt …", "tagged %s" : "Schlagwort %s hinzugefügt", "Collaborative tags" : "Kollaborative Tags", "Collaborative tagging functionality which shares tags among people." : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt.", - "Collaborative tagging functionality which shares tags among people. 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.)" : "Schlagwort-Funktionalität für Zusammenarbeit, die das Teilen von Schlagworten unter Benutzern ermöglicht. Sehr gut für Gruppen geeignet.\n\t(Wenn du eine Mehrkundeninstallation betreibst, so sollte diese App deaktiviert werden, da sonst die Schlagworte mit allen Kunden geteilt werden.)", + "Collaborative tagging functionality which shares tags among people. 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.)" : "Schlagwort-Funktionalität für die Zusammenarbeit, die das Teilen von Schlagworten unter Benutzern ermöglicht. Sehr gut für Gruppen geeignet.\n\t(In eine Mehrkundeninstallation sollte diese App deaktiviert werden, da sonst die Schlagworte mit allen Kunden geteilt werden.)", "Public" : "Öffentlich", "Restricted" : "Eingeschränkt", "Invisible" : "Nicht sichtbar", @@ -88,10 +88,10 @@ OC.L10N.register( "Failed to load tags" : "Schlagworte konnten nicht geladen werden", "Failed to load selected tags" : "Ausgewählte Schlagworte konnten nicht geladen werden", "Failed to select tag" : "Schlagwort konnte nicht ausgewählt werden", - "System admin disabled tag creation. You can only use existing ones." : "Die Systemadministration hat die Erstellung von Schlagworten deaktiviert. Du kannst nur vorhandene Schlagworte verwenden.", - "Loading collaborative tags …" : "Lade kollaborative Schlagworte …", + "System admin disabled tag creation. You can only use existing ones." : "Die Systemadministration hat die Erstellung von Schlagworten deaktiviert. Es können nur vorhandene Schlagworte verwendet werden.", + "Loading collaborative tags …" : "Kollaborative Schlagworte laden …", "Search or create collaborative tags" : "Suchen oder erstellen von kollaborativen Schlagworten", - "No tags to select, type to create a new tag" : "Keine Schlagworte zur Auswahl, gib ein, um ein neues Schlagwort zu erstellen", + "No tags to select, type to create a new tag" : "Keine Schlagworte zur Auswahl, Eingabe beginnen, um ein neues Schlagwort zu erstellen", "Unable to update setting" : "Einstellung konnte nicht aktualisiert werden", "System tag creation is now restricted to administrators" : "Die Erstellung von System-Schlagworten ist jetzt auf die Administration beschränkt", "System tag creation is now allowed for everybody" : "Die Erstellung von System-Schlagworten ist jetzt für alle erlaubt", diff --git a/apps/systemtags/l10n/de.json b/apps/systemtags/l10n/de.json index e98b38ccc55..6f366504d3d 100644 --- a/apps/systemtags/l10n/de.json +++ b/apps/systemtags/l10n/de.json @@ -38,11 +38,11 @@ "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei wurden geändert", "Files" : "Dateien", "Tags" : "Tags", - "All tagged %s …" : "Alle Schlagwörter %s hinzugefügt …", + "All tagged %s …" : "Alle Schlagworte %s hinzugefügt …", "tagged %s" : "Schlagwort %s hinzugefügt", "Collaborative tags" : "Kollaborative Tags", "Collaborative tagging functionality which shares tags among people." : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt.", - "Collaborative tagging functionality which shares tags among people. 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.)" : "Schlagwort-Funktionalität für Zusammenarbeit, die das Teilen von Schlagworten unter Benutzern ermöglicht. Sehr gut für Gruppen geeignet.\n\t(Wenn du eine Mehrkundeninstallation betreibst, so sollte diese App deaktiviert werden, da sonst die Schlagworte mit allen Kunden geteilt werden.)", + "Collaborative tagging functionality which shares tags among people. 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.)" : "Schlagwort-Funktionalität für die Zusammenarbeit, die das Teilen von Schlagworten unter Benutzern ermöglicht. Sehr gut für Gruppen geeignet.\n\t(In eine Mehrkundeninstallation sollte diese App deaktiviert werden, da sonst die Schlagworte mit allen Kunden geteilt werden.)", "Public" : "Öffentlich", "Restricted" : "Eingeschränkt", "Invisible" : "Nicht sichtbar", @@ -86,10 +86,10 @@ "Failed to load tags" : "Schlagworte konnten nicht geladen werden", "Failed to load selected tags" : "Ausgewählte Schlagworte konnten nicht geladen werden", "Failed to select tag" : "Schlagwort konnte nicht ausgewählt werden", - "System admin disabled tag creation. You can only use existing ones." : "Die Systemadministration hat die Erstellung von Schlagworten deaktiviert. Du kannst nur vorhandene Schlagworte verwenden.", - "Loading collaborative tags …" : "Lade kollaborative Schlagworte …", + "System admin disabled tag creation. You can only use existing ones." : "Die Systemadministration hat die Erstellung von Schlagworten deaktiviert. Es können nur vorhandene Schlagworte verwendet werden.", + "Loading collaborative tags …" : "Kollaborative Schlagworte laden …", "Search or create collaborative tags" : "Suchen oder erstellen von kollaborativen Schlagworten", - "No tags to select, type to create a new tag" : "Keine Schlagworte zur Auswahl, gib ein, um ein neues Schlagwort zu erstellen", + "No tags to select, type to create a new tag" : "Keine Schlagworte zur Auswahl, Eingabe beginnen, um ein neues Schlagwort zu erstellen", "Unable to update setting" : "Einstellung konnte nicht aktualisiert werden", "System tag creation is now restricted to administrators" : "Die Erstellung von System-Schlagworten ist jetzt auf die Administration beschränkt", "System tag creation is now allowed for everybody" : "Die Erstellung von System-Schlagworten ist jetzt für alle erlaubt", diff --git a/apps/systemtags/l10n/pt_BR.js b/apps/systemtags/l10n/pt_BR.js index 11059684510..eda40e709b4 100644 --- a/apps/systemtags/l10n/pt_BR.js +++ b/apps/systemtags/l10n/pt_BR.js @@ -65,28 +65,39 @@ OC.L10N.register( "Delete" : "Excluir", "Reset" : "Redefinir", "Loading …" : "Carregando …", + "_{tag1} will be set and {tag2} will be removed from 1 file._::_{tag1} will be set and {tag2} will be removed from {count} files._" : ["{tag1} será definido e {tag2} será removido de 1 arquivo","{tag1} será definido e {tag2} será removido de {count} arquivos","{tag1} será definido e {tag2} será removido de {count} arquivos"], + "_{tag} will be set to 1 file._::_{tag} will be set to {count} files._" : ["{tag} será definido em 1 arquivo","{tag} será definido em {count} arquivos","{tag} será definido em {count} arquivos"], + "_{tag} will be removed from 1 file._::_{tag} will be removed from {count} files._" : ["{tag} será removido de 1 arquivo.","{tag} será removido de {count} arquivos.","{tag} será removido de {count} arquivos."], + "_{tags} and {lastTag} will be set to 1 file._::_{tags} and {lastTag} will be set to {count} files._" : ["{tags} e {lastTag} serão definidos em 1 arquivo.","{tags} e {lastTag} serão definidos em {count} arquivos.","{tags} e {lastTag} serão definidos em {count} arquivos."], + "_{tags} and {lastTag} will be removed from 1 file._::_{tags} and {lastTag} will be removed from {count} files._" : ["{tags} e {lastTag} serão removidos de 1 arquivo.","{tags} e {lastTag} serão removidos de {count} arquivos.","{tags} e {lastTag} serão removidos de {count} arquivos."], "{displayName} (hidden)" : "{displayName} (escondida)", "{displayName} (restricted)" : "{displayName} (restrita)", + "Only admins can create new tags" : "Somente os administradores podem criar novas etiquetas", "Failed to apply tags changes" : "Falha ao aplicar alterações de etiquetas", "File tags modification canceled" : "Modificação de etiquetas de arquivo cancelada", "Manage tags" : "Gerenciar etiquetas", "Applying tags changes…" : "Aplicando mudanças de etiquetas…", "Search or create tag" : "Pesquisar ou criar etiqueta", - "Change tag color" : "Alterar cor da tag", + "Search tag" : "Pesquisar etiqueta", + "Change tag color" : "Alterar cor da etiqueta", "Create new tag" : "Crie uma etiqueta nova", "Select or create tags to apply to all selected files" : "Selecione ou crie etiquetas para aplicar a todos os arquivos selecionados", + "Select tags to apply to all selected files" : "Selecione etiquetas para aplicar a todos os arquivos selecionados", "Cancel" : "Cancelar", "Apply changes" : "Aplicar alterações", "Failed to load tags" : "Erro ao carregar rótulos", "Failed to load selected tags" : "Falha ao carregar as etiquetas selecionadas", "Failed to select tag" : "Falha ao selecionar etiqueta", - "System admin disabled tag creation. You can only use existing ones." : "O administrador do sistema desativou a criação de tags. Você só pode usar as que já existem.", + "System admin disabled tag creation. You can only use existing ones." : "O administrador do sistema desativou a criação de etiquetas. Você só pode usar as que já existem.", "Loading collaborative tags …" : "Carregando etiquetas,s colaborativas…", "Search or create collaborative tags" : "Pesquise ou crie etiquetas colaborativas", "No tags to select, type to create a new tag" : "Nenhuma etiqueta para selecionar, digite para criar uma nova etiqueta", "Unable to update setting" : "Não foi possível atualizar a configuração", - "System tag creation is now restricted to administrators" : "A criação de tags do sistema agora está restrita aos administradores", - "System tag creation is now allowed for everybody" : "A criação de tags do sistema agora está liberada para todos", + "System tag creation is now restricted to administrators" : "A criação de etiquetas do sistema agora está restrita aos administradores", + "System tag creation is now allowed for everybody" : "A criação de etiquetas do sistema agora está liberada para todos", + "System tag management" : "Gerenciamento de etiquetas do sistema", + "If enabled, only administrators can create and edit tags. Accounts can still assign and remove them from files." : "Se ativado, somente os administradores poderão criar e editar etiquetas. As contas ainda podem atribuí-las e removê-las dos arquivos.", + "Restrict tag creation and editing to administrators" : "Restringir a criação e a edição de atiquetas aos administradores", "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Etiquetas colaborativas estão disponíveis para todos os usuários. As etiquetas restritas são visíveis para os usuários, mas não podem ser atribuídas por eles. Etiquetas invisíveis são para uso interno, já que os usuários não podem vê-las ou atribuí-las.", "Assigned collaborative tags" : "Etiquetas colaborativas atribuídas", "Open in Files" : "Abrir em arquivos", @@ -100,7 +111,7 @@ OC.L10N.register( "Failed to load tags for file" : "Falha ao carregar etiquetas para arquivo", "Failed to set tag for file" : "Falha ao definir etiqueta para arquivo", "Failed to delete tag for file" : "Falha ao excluir etiqueta do arquivo", - "This file has the tag {tag}" : "Este arquivo tem a tag {tag}", + "This file has the tag {tag}" : "Este arquivo tem a etiqueta {tag}", "This file has the tags {firstTags} and {lastTag}" : "Este arquivo tem as etiquetas {firstTags} e {lastTag}" }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/systemtags/l10n/pt_BR.json b/apps/systemtags/l10n/pt_BR.json index 1aa506b5271..062e07f69ae 100644 --- a/apps/systemtags/l10n/pt_BR.json +++ b/apps/systemtags/l10n/pt_BR.json @@ -63,28 +63,39 @@ "Delete" : "Excluir", "Reset" : "Redefinir", "Loading …" : "Carregando …", + "_{tag1} will be set and {tag2} will be removed from 1 file._::_{tag1} will be set and {tag2} will be removed from {count} files._" : ["{tag1} será definido e {tag2} será removido de 1 arquivo","{tag1} será definido e {tag2} será removido de {count} arquivos","{tag1} será definido e {tag2} será removido de {count} arquivos"], + "_{tag} will be set to 1 file._::_{tag} will be set to {count} files._" : ["{tag} será definido em 1 arquivo","{tag} será definido em {count} arquivos","{tag} será definido em {count} arquivos"], + "_{tag} will be removed from 1 file._::_{tag} will be removed from {count} files._" : ["{tag} será removido de 1 arquivo.","{tag} será removido de {count} arquivos.","{tag} será removido de {count} arquivos."], + "_{tags} and {lastTag} will be set to 1 file._::_{tags} and {lastTag} will be set to {count} files._" : ["{tags} e {lastTag} serão definidos em 1 arquivo.","{tags} e {lastTag} serão definidos em {count} arquivos.","{tags} e {lastTag} serão definidos em {count} arquivos."], + "_{tags} and {lastTag} will be removed from 1 file._::_{tags} and {lastTag} will be removed from {count} files._" : ["{tags} e {lastTag} serão removidos de 1 arquivo.","{tags} e {lastTag} serão removidos de {count} arquivos.","{tags} e {lastTag} serão removidos de {count} arquivos."], "{displayName} (hidden)" : "{displayName} (escondida)", "{displayName} (restricted)" : "{displayName} (restrita)", + "Only admins can create new tags" : "Somente os administradores podem criar novas etiquetas", "Failed to apply tags changes" : "Falha ao aplicar alterações de etiquetas", "File tags modification canceled" : "Modificação de etiquetas de arquivo cancelada", "Manage tags" : "Gerenciar etiquetas", "Applying tags changes…" : "Aplicando mudanças de etiquetas…", "Search or create tag" : "Pesquisar ou criar etiqueta", - "Change tag color" : "Alterar cor da tag", + "Search tag" : "Pesquisar etiqueta", + "Change tag color" : "Alterar cor da etiqueta", "Create new tag" : "Crie uma etiqueta nova", "Select or create tags to apply to all selected files" : "Selecione ou crie etiquetas para aplicar a todos os arquivos selecionados", + "Select tags to apply to all selected files" : "Selecione etiquetas para aplicar a todos os arquivos selecionados", "Cancel" : "Cancelar", "Apply changes" : "Aplicar alterações", "Failed to load tags" : "Erro ao carregar rótulos", "Failed to load selected tags" : "Falha ao carregar as etiquetas selecionadas", "Failed to select tag" : "Falha ao selecionar etiqueta", - "System admin disabled tag creation. You can only use existing ones." : "O administrador do sistema desativou a criação de tags. Você só pode usar as que já existem.", + "System admin disabled tag creation. You can only use existing ones." : "O administrador do sistema desativou a criação de etiquetas. Você só pode usar as que já existem.", "Loading collaborative tags …" : "Carregando etiquetas,s colaborativas…", "Search or create collaborative tags" : "Pesquise ou crie etiquetas colaborativas", "No tags to select, type to create a new tag" : "Nenhuma etiqueta para selecionar, digite para criar uma nova etiqueta", "Unable to update setting" : "Não foi possível atualizar a configuração", - "System tag creation is now restricted to administrators" : "A criação de tags do sistema agora está restrita aos administradores", - "System tag creation is now allowed for everybody" : "A criação de tags do sistema agora está liberada para todos", + "System tag creation is now restricted to administrators" : "A criação de etiquetas do sistema agora está restrita aos administradores", + "System tag creation is now allowed for everybody" : "A criação de etiquetas do sistema agora está liberada para todos", + "System tag management" : "Gerenciamento de etiquetas do sistema", + "If enabled, only administrators can create and edit tags. Accounts can still assign and remove them from files." : "Se ativado, somente os administradores poderão criar e editar etiquetas. As contas ainda podem atribuí-las e removê-las dos arquivos.", + "Restrict tag creation and editing to administrators" : "Restringir a criação e a edição de atiquetas aos administradores", "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Etiquetas colaborativas estão disponíveis para todos os usuários. As etiquetas restritas são visíveis para os usuários, mas não podem ser atribuídas por eles. Etiquetas invisíveis são para uso interno, já que os usuários não podem vê-las ou atribuí-las.", "Assigned collaborative tags" : "Etiquetas colaborativas atribuídas", "Open in Files" : "Abrir em arquivos", @@ -98,7 +109,7 @@ "Failed to load tags for file" : "Falha ao carregar etiquetas para arquivo", "Failed to set tag for file" : "Falha ao definir etiqueta para arquivo", "Failed to delete tag for file" : "Falha ao excluir etiqueta do arquivo", - "This file has the tag {tag}" : "Este arquivo tem a tag {tag}", + "This file has the tag {tag}" : "Este arquivo tem a etiqueta {tag}", "This file has the tags {firstTags} and {lastTag}" : "Este arquivo tem as etiquetas {firstTags} e {lastTag}" },"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/theming/l10n/sk.js b/apps/theming/l10n/sk.js index 8e54b77e727..8740effb3c4 100644 --- a/apps/theming/l10n/sk.js +++ b/apps/theming/l10n/sk.js @@ -75,7 +75,9 @@ OC.L10N.register( "Background and login image" : "Obrázok pozadia a prihlasovacej obrazovky", "Advanced options" : "Pokročilé možnosti", "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Nainštalujte si rozšírenie ImageMagick PHP s podporou obrázkov SVG pre automatické generovanie favicon na základe nahraného loga a farby.", + "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 {linkstart}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 {linkstart}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}!", + "Unable to apply the setting." : "Nepodarilo sa použiť nastavenia.", "Appearance and accessibility settings" : "Nastavenia vzhľadu a dostupnosti", "Misc accessibility options" : "Rôzne možnosti dostupnosti", "Enable blur background filter (may increase GPU load)" : "Povoliť filter rozmazania pozadia (môže zvýšiť zaťaženie GPU)", @@ -119,6 +121,7 @@ OC.L10N.register( "Remove background image" : "Odstrániť obrázok pozadia", "Color" : "Farba", "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.", + ". Unable to apply the setting." : ". Nepodarilo sa použiť nastavenia.", "Background" : "Pozadie", "Set a custom background" : "Nastaviť vlastné pozadie", "Change color" : "Zmeniť farbu", diff --git a/apps/theming/l10n/sk.json b/apps/theming/l10n/sk.json index d521829c91f..817d62381d2 100644 --- a/apps/theming/l10n/sk.json +++ b/apps/theming/l10n/sk.json @@ -73,7 +73,9 @@ "Background and login image" : "Obrázok pozadia a prihlasovacej obrazovky", "Advanced options" : "Pokročilé možnosti", "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Nainštalujte si rozšírenie ImageMagick PHP s podporou obrázkov SVG pre automatické generovanie favicon na základe nahraného loga a farby.", + "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 {linkstart}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 {linkstart}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}!", + "Unable to apply the setting." : "Nepodarilo sa použiť nastavenia.", "Appearance and accessibility settings" : "Nastavenia vzhľadu a dostupnosti", "Misc accessibility options" : "Rôzne možnosti dostupnosti", "Enable blur background filter (may increase GPU load)" : "Povoliť filter rozmazania pozadia (môže zvýšiť zaťaženie GPU)", @@ -117,6 +119,7 @@ "Remove background image" : "Odstrániť obrázok pozadia", "Color" : "Farba", "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.", + ". Unable to apply the setting." : ". Nepodarilo sa použiť nastavenia.", "Background" : "Pozadie", "Set a custom background" : "Nastaviť vlastné pozadie", "Change color" : "Zmeniť farbu", diff --git a/apps/updatenotification/l10n/de.js b/apps/updatenotification/l10n/de.js index 07b6fee8ff2..50ac9a9b277 100644 --- a/apps/updatenotification/l10n/de.js +++ b/apps/updatenotification/l10n/de.js @@ -4,7 +4,7 @@ OC.L10N.register( "Channel updated" : "Kanal aktualisiert", "Web updater is disabled" : "Der Web-Updater ist deaktiviert", "App updated" : "App aktualisiert", - "See what's new" : "Sieh dir die Neuigkeiten an", + "See what's new" : "Neuigkeiten ansehen", "{app} updated to version {version}" : "{app} wurde auf Version {version} aktualisiert", "Update notifications" : "Update-Benachrichtigungen", "The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden, um auf verfügbare Aktualisierungen zu prüfen.", @@ -14,15 +14,15 @@ OC.L10N.register( "Update notification" : "Aktualisierungs-Benachrichtigung", "Displays update notifications for Nextcloud, app updates, and provides the SSO for the updater." : "Zeigt Update-Benachrichtigungen für Nextcloud und App-Updates an und stellt SSO für den Updater bereit.", "Give feedback" : "Feedback geben", - "Get started" : "Leg los", + "Get started" : "Loslegen", "No changelog available" : "Keine Änderungsübersicht verfügbar", "What's new in {app} {version}" : "Neuigkeiten in {app} {version}", "A new version is available: <strong>{newVersionString}</strong>" : "Eine neue Version ist verfügbar: <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 and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}" : "Beachte, dass die Aktualisierung für eine neue Version erst nach der ersten Unterversion (minor release) oder später angezeigt wird. Wir stellen im Laufe der Zeit neue Versionen zur Verfügung und überspringen manchmal eine Version, wenn Probleme auftreten. Weitere Informationen zu Update- und Release-Kanälen findest du unter {link}", "Checked on {lastCheckedDate} - Open changelog" : "Geprüft am {lastCheckedDate} - Änderungsübersicht öffnen", "Checking apps for compatible versions" : "Es werden alle Apps auf kompatible Versionen geprüft", - "Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Bitte stelle sicher, dass in der \"config.php\"-Datei die Variable <samp>appstoreenabled</samp> nicht auf \"false\" steht.", - "Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store." : "Die Verbindung zum App-Store konnte nicht aufgebaut werden oder der App-Store hat keine Apps zurück geliefert. Suche selbst nach Updates oder stelle sicher, dass dein Server Zugriff auf das Internet hat und eine Verbindung zum App-Store aufbauen kann. ", + "Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Bitte sicherstellen, dass in der \"config.php\"-Datei die Variable <samp>appstoreenabled</samp> nicht auf \"false\" steht.", + "Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store." : "Die Verbindung zum App-Store konnte nicht aufgebaut werden oder der App-Store hat keine Apps zurück geliefert. Selbst nach Updates suchen oder sicherstellen, dass der Server Zugriff auf das Internet hat und eine Verbindung zum App-Store aufbauen kann.", "<strong>All</strong> apps have a compatible version for this Nextcloud version available." : "Für <strong>alle</strong> Apps steht eine kompatible Version zur Verfügung.", "_<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._" : ["Für <strong>%n</strong> App steht keine kompatible Version zur Verfügung.","Für <strong>%n</strong> Apps stehen keine kompatible Versionen zur Verfügung."], "Enterprise" : "Version für Unternehmen", @@ -32,16 +32,16 @@ OC.L10N.register( "Beta" : "Beta", "A pre-release version only for testing new features, not for production environments." : "Eine Vorabversion die einzig zum Testen neuer Funktionen dient, nicht aber für den Einsatz in Produktivumgebungen geeignet ist.", "Update" : "Aktualisieren", - "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Deine installierte Version wird nicht mehr unterstützt. Bitte aktualisiere baldmöglichst auf eine unterstützte Version.", + "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Die installierte Version wird nicht mehr unterstützt. Bitte baldmöglichst auf eine unterstützte Version aktualisieren.", "Apps missing compatible version" : "Für diese Apps fehlen kompatible Versionen", "View in store" : "Im Store anzeigen", "Apps with compatible version" : "Für diese Apps gibt es kompatible Versionen", - "Please note that the web updater is not recommended with more than 100 accounts! Please use the command line updater instead!" : "Bitte beachte, dass der Web Updater bei mehr als 100 Konten nicht empfohlen wird! Bitte verwende stattdessen den Befehlszeilen-Updater!", + "Please note that the web updater is not recommended with more than 100 accounts! Please use the command line updater instead!" : "Bitte beachten, dass der Web Updater bei mehr als 100 Konten nicht empfohlen wird! Bitte stattdessen den Befehlszeilen-Updater verwenden!", "Open updater" : "Updater öffnen", "Download now" : "Jetzt herunterladen", - "Web updater is disabled. Please use the command line updater or the appropriate update mechanism for your installation method (e.g. Docker pull) to update." : "Der Web-Updater ist deaktiviert. Bitte verwende zum Aktualisieren den Befehlszeilen-Updater oder den entsprechenden Update-Mechanismus für deine Installationsmethode (z. B. Docker pull).", + "Web updater is disabled. Please use the command line updater or the appropriate update mechanism for your installation method (e.g. Docker pull) to update." : "Der Web-Updater ist deaktiviert. Bitte zum Aktualisieren den Befehlszeilen-Updater verwenden oder den entsprechenden Update-Mechanismus für deine Installationsmethode (z. B. Docker pull).", "What's new?" : "Was ist neu?", - "View changelog" : "Liste der Änderungen anschauen", + "View changelog" : "Liste der Änderungen ansehen", "The update check is not yet finished. Please refresh the page." : "Die Aktualisierungsprüfung ist noch nicht abgeschlossen. Bitte die Seite neu laden.", "Your version is up to date." : "Deine Version ist aktuell.", "A non-default update server is in use to be checked for updates:" : "Es wird ein Nicht-Standard-Aktualisierungsserver zum Prüfen auf Aktualisierungen verwendet:", diff --git a/apps/updatenotification/l10n/de.json b/apps/updatenotification/l10n/de.json index 4e7226e73fb..c1f338b7ec3 100644 --- a/apps/updatenotification/l10n/de.json +++ b/apps/updatenotification/l10n/de.json @@ -2,7 +2,7 @@ "Channel updated" : "Kanal aktualisiert", "Web updater is disabled" : "Der Web-Updater ist deaktiviert", "App updated" : "App aktualisiert", - "See what's new" : "Sieh dir die Neuigkeiten an", + "See what's new" : "Neuigkeiten ansehen", "{app} updated to version {version}" : "{app} wurde auf Version {version} aktualisiert", "Update notifications" : "Update-Benachrichtigungen", "The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden, um auf verfügbare Aktualisierungen zu prüfen.", @@ -12,15 +12,15 @@ "Update notification" : "Aktualisierungs-Benachrichtigung", "Displays update notifications for Nextcloud, app updates, and provides the SSO for the updater." : "Zeigt Update-Benachrichtigungen für Nextcloud und App-Updates an und stellt SSO für den Updater bereit.", "Give feedback" : "Feedback geben", - "Get started" : "Leg los", + "Get started" : "Loslegen", "No changelog available" : "Keine Änderungsübersicht verfügbar", "What's new in {app} {version}" : "Neuigkeiten in {app} {version}", "A new version is available: <strong>{newVersionString}</strong>" : "Eine neue Version ist verfügbar: <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 and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}" : "Beachte, dass die Aktualisierung für eine neue Version erst nach der ersten Unterversion (minor release) oder später angezeigt wird. Wir stellen im Laufe der Zeit neue Versionen zur Verfügung und überspringen manchmal eine Version, wenn Probleme auftreten. Weitere Informationen zu Update- und Release-Kanälen findest du unter {link}", "Checked on {lastCheckedDate} - Open changelog" : "Geprüft am {lastCheckedDate} - Änderungsübersicht öffnen", "Checking apps for compatible versions" : "Es werden alle Apps auf kompatible Versionen geprüft", - "Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Bitte stelle sicher, dass in der \"config.php\"-Datei die Variable <samp>appstoreenabled</samp> nicht auf \"false\" steht.", - "Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store." : "Die Verbindung zum App-Store konnte nicht aufgebaut werden oder der App-Store hat keine Apps zurück geliefert. Suche selbst nach Updates oder stelle sicher, dass dein Server Zugriff auf das Internet hat und eine Verbindung zum App-Store aufbauen kann. ", + "Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Bitte sicherstellen, dass in der \"config.php\"-Datei die Variable <samp>appstoreenabled</samp> nicht auf \"false\" steht.", + "Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store." : "Die Verbindung zum App-Store konnte nicht aufgebaut werden oder der App-Store hat keine Apps zurück geliefert. Selbst nach Updates suchen oder sicherstellen, dass der Server Zugriff auf das Internet hat und eine Verbindung zum App-Store aufbauen kann.", "<strong>All</strong> apps have a compatible version for this Nextcloud version available." : "Für <strong>alle</strong> Apps steht eine kompatible Version zur Verfügung.", "_<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._" : ["Für <strong>%n</strong> App steht keine kompatible Version zur Verfügung.","Für <strong>%n</strong> Apps stehen keine kompatible Versionen zur Verfügung."], "Enterprise" : "Version für Unternehmen", @@ -30,16 +30,16 @@ "Beta" : "Beta", "A pre-release version only for testing new features, not for production environments." : "Eine Vorabversion die einzig zum Testen neuer Funktionen dient, nicht aber für den Einsatz in Produktivumgebungen geeignet ist.", "Update" : "Aktualisieren", - "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Deine installierte Version wird nicht mehr unterstützt. Bitte aktualisiere baldmöglichst auf eine unterstützte Version.", + "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Die installierte Version wird nicht mehr unterstützt. Bitte baldmöglichst auf eine unterstützte Version aktualisieren.", "Apps missing compatible version" : "Für diese Apps fehlen kompatible Versionen", "View in store" : "Im Store anzeigen", "Apps with compatible version" : "Für diese Apps gibt es kompatible Versionen", - "Please note that the web updater is not recommended with more than 100 accounts! Please use the command line updater instead!" : "Bitte beachte, dass der Web Updater bei mehr als 100 Konten nicht empfohlen wird! Bitte verwende stattdessen den Befehlszeilen-Updater!", + "Please note that the web updater is not recommended with more than 100 accounts! Please use the command line updater instead!" : "Bitte beachten, dass der Web Updater bei mehr als 100 Konten nicht empfohlen wird! Bitte stattdessen den Befehlszeilen-Updater verwenden!", "Open updater" : "Updater öffnen", "Download now" : "Jetzt herunterladen", - "Web updater is disabled. Please use the command line updater or the appropriate update mechanism for your installation method (e.g. Docker pull) to update." : "Der Web-Updater ist deaktiviert. Bitte verwende zum Aktualisieren den Befehlszeilen-Updater oder den entsprechenden Update-Mechanismus für deine Installationsmethode (z. B. Docker pull).", + "Web updater is disabled. Please use the command line updater or the appropriate update mechanism for your installation method (e.g. Docker pull) to update." : "Der Web-Updater ist deaktiviert. Bitte zum Aktualisieren den Befehlszeilen-Updater verwenden oder den entsprechenden Update-Mechanismus für deine Installationsmethode (z. B. Docker pull).", "What's new?" : "Was ist neu?", - "View changelog" : "Liste der Änderungen anschauen", + "View changelog" : "Liste der Änderungen ansehen", "The update check is not yet finished. Please refresh the page." : "Die Aktualisierungsprüfung ist noch nicht abgeschlossen. Bitte die Seite neu laden.", "Your version is up to date." : "Deine Version ist aktuell.", "A non-default update server is in use to be checked for updates:" : "Es wird ein Nicht-Standard-Aktualisierungsserver zum Prüfen auf Aktualisierungen verwendet:", diff --git a/apps/updatenotification/l10n/et_EE.js b/apps/updatenotification/l10n/et_EE.js index f3dfa5433d8..09ff9d145df 100644 --- a/apps/updatenotification/l10n/et_EE.js +++ b/apps/updatenotification/l10n/et_EE.js @@ -17,16 +17,21 @@ OC.L10N.register( "Get started" : "Alusta", "No changelog available" : "Muudatuste logi pole saadaval", "What's new in {app} {version}" : "Mida uut {app} {version} sisaldab", + "A new version is available: <strong>{newVersionString}</strong>" : "Saadaval on uus versioon: <strong>{newVersionString}</strong>", + "Checked on {lastCheckedDate} - Open changelog" : "Kontrollitud {lastCheckedDate} - Ava muudatuste logi", "Update" : "Uuenda", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Versiooni, mida kasutad, ei uuendata enam. Palun uuenda toetatud versioonile võimalikult kiiresti.", "Apps missing compatible version" : "Rakendustel puuduvad toetatud versioonid", "View in store" : "Vaata poes", "Apps with compatible version" : "Rakendused toetatud versiooniga", "Open updater" : "Ava uuendaja", - "Download now" : "Lae kohe alla", + "Download now" : "Laadi kohe alla", "What's new?" : "Mida on uut?", + "View changelog" : "Vaata muudatuste logi", "The update check is not yet finished. Please refresh the page." : "Uuenduste kontrollimine pole veel lõppenud. Palun värskendage lehte.", "Your version is up to date." : "Su versioon on ajakohane.", + "Update channel" : "Uuenduste kanal", + "Current update channel:" : "Praegune uuenduste kanal:", "Notify members of the following groups about available updates:" : "Teavita jägmiste gruppide liikmeid saadaval olevatest uuendustest:", "{version} is available. Get more information on how to update." : "{version} on saadaval. Vaata lisainfot uuendamise kohta." }, diff --git a/apps/updatenotification/l10n/et_EE.json b/apps/updatenotification/l10n/et_EE.json index 988b880738b..c90d20ec341 100644 --- a/apps/updatenotification/l10n/et_EE.json +++ b/apps/updatenotification/l10n/et_EE.json @@ -15,16 +15,21 @@ "Get started" : "Alusta", "No changelog available" : "Muudatuste logi pole saadaval", "What's new in {app} {version}" : "Mida uut {app} {version} sisaldab", + "A new version is available: <strong>{newVersionString}</strong>" : "Saadaval on uus versioon: <strong>{newVersionString}</strong>", + "Checked on {lastCheckedDate} - Open changelog" : "Kontrollitud {lastCheckedDate} - Ava muudatuste logi", "Update" : "Uuenda", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Versiooni, mida kasutad, ei uuendata enam. Palun uuenda toetatud versioonile võimalikult kiiresti.", "Apps missing compatible version" : "Rakendustel puuduvad toetatud versioonid", "View in store" : "Vaata poes", "Apps with compatible version" : "Rakendused toetatud versiooniga", "Open updater" : "Ava uuendaja", - "Download now" : "Lae kohe alla", + "Download now" : "Laadi kohe alla", "What's new?" : "Mida on uut?", + "View changelog" : "Vaata muudatuste logi", "The update check is not yet finished. Please refresh the page." : "Uuenduste kontrollimine pole veel lõppenud. Palun värskendage lehte.", "Your version is up to date." : "Su versioon on ajakohane.", + "Update channel" : "Uuenduste kanal", + "Current update channel:" : "Praegune uuenduste kanal:", "Notify members of the following groups about available updates:" : "Teavita jägmiste gruppide liikmeid saadaval olevatest uuendustest:", "{version} is available. Get more information on how to update." : "{version} on saadaval. Vaata lisainfot uuendamise kohta." },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js index 464a2ec651f..6d4a00f3dcc 100644 --- a/apps/user_ldap/l10n/de.js +++ b/apps/user_ldap/l10n/de.js @@ -159,7 +159,7 @@ OC.L10N.register( "Only connect to the replica server." : "Nur zum Replikat-Server verbinden.", "Turn off SSL certificate validation." : "Schalte die SSL-Zertifikatsprüfung aus.", "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Nur für Testzwecke geeignet, sollte Standardmäßig nicht verwendet werden. Falls die Verbindung nur mit dieser Option funktioniert, das SSL-Zertifikat des LDAP-Servers in deinen %s Server importieren.", - "Cache Time-To-Live" : "Speichere Time-To-Live zwischen", + "Cache Time-To-Live" : "Time-To-Live zwischenspeichern", "in seconds. A change empties the cache." : "in Sekunden. Eine Änderung leert den Cache.", "Directory Settings" : "Ordnereinstellungen", "User Display Name Field" : "Feld für den Anzeigenamen des Benutzers", @@ -171,7 +171,7 @@ OC.L10N.register( "User Search Attributes" : "Benutzersucheigenschaften", "Optional; one attribute per line" : "Optional; ein Attribut pro Zeile", "Disable users missing from LDAP" : "Benutzer deaktivieren, die in LDAP fehlen", - "When switched on, users imported from LDAP which are then missing will be disabled" : "Beim Einschalten werden aus LDAP importierte und dann hier fehlende Benutzer deaktiviert", + "When switched on, users imported from LDAP which are then missing will be disabled" : "Wenn aktiviert, werden aus LDAP importierte und dann hier fehlende Benutzer deaktiviert", "Group Display Name Field" : "Feld für den Anzeigenamen der Gruppe", "The LDAP attribute to use to generate the groups's display name." : "Das LDAP-Attribut zur Erzeugung des Anzeigenamens der Gruppen.", "Base Group Tree" : "Basis-Gruppenbaum", @@ -182,11 +182,11 @@ OC.L10N.register( "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Ein LDAP-Attribut von Gruppenobjekten, das eine LDAP Such-URL enthält die festlegt welche Objekte zu der Gruppe gehören. (Ein leeres Feld deaktiviert die Funktion \"Dynamisch Gruppenzugehörigkeit\")", "Nested Groups" : "Verschachtelte Gruppen", "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Wenn aktiviert, werden Gruppen, die Gruppen enthalten, unterstützt. (Funktioniert nur, wenn das Merkmal des Gruppenmitgliedes den Domain-Namen enthält.)", - "Paging chunksize" : "Seitenstücke (Paging chunksize)", - "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Abschnittslänge von seitenweise angezeigten LDAP-Suchen, die bei Suchen wie etwa Benutzer- und Gruppen-Auflistungen ausufernd viele Ergebnisse liefern können (die Einstellung \"0\" deaktiviert seitenweise angezeigte LDAP-Suchen in diesen Situationen).", + "Paging chunksize" : "Paging Chunksize", + "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Die Blockgröße für seitenweise LDAP-Suchen, die umfangreiche Ergebnisse wie Benutzer- oder Gruppenaufzählungen zurückgeben können. (Wenn Sie den Wert auf 0 setzen, werden seitenweise LDAP-Suchen in diesen Situationen deaktiviert.)", "Enable LDAP password changes per user" : "LDAP-Passwortänderungen pro Benutzer aktivieren", "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "LDAP-Nutzern die Änderung ihrer Passwörter erlauben und Super-Administratoren sowie Gruppen-Administratoren die Passwortänderung ihrer LDAP-Nutzer erlauben. Dies funktioniert nur, wenn die Zugriffsrichtlinien auf dem LDAP-Server entsprechend konfiguriert sind. Da Passwörter im Klartext an den LDAP-Server gesendet werden, muss die Transportverschlüsselung verwendet werden und das Passwort-Hashing auf dem LDAP-Server sollte konfiguriert werden.", - "(New password is sent as plain text to LDAP)" : "(Das neue Passwort wurde als einfacher Text an LDAP gesendet)", + "(New password is sent as plain text to LDAP)" : "(Das neue Passwort wird als Klartext an LDAP gesendet)", "Default password policy DN" : "Standard Passwort-Regeln DN", "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Die DN einer Standard-Passwort-Policy, welche für den Umgang mit ablaufenden Passwörtern verwendet wird. Dies funktioniert nur wenn Passwort-Änderungen pro Benutzer via LDAP und OpenLDAP aktiviert sind. Leer lassen, um die Passwortablaufbehandlung zu deaktivieren.", "Special Attributes" : "Spezielle Eigenschaften", @@ -195,7 +195,7 @@ OC.L10N.register( "Quota Default" : "Standardkontingent", "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Standardkontingent ignorieren für Benutzer von LDAP, die kein Kontingent festgelegt haben.", "Email Field" : "E-Mail-Feld", - "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "E-Mail-Adresse des Benutzers aus seinem LDAP-Attribut generieren. Für Standard-Verhalten leer lassen.", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : " E-Mail-Adresse des Benutzers über sein LDAP-Attribut festlegen. Für das Standardverhalten, Feld leer lassen.", "User Home Folder Naming Rule" : "Benennungsregel für das Home-Verzeichnis des Benutzers", "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Ohne Eingabe wird der Benutzername (Standard) verwendet. Anderenfalls trage ein LDAP/AD-Attribut ein.", "\"$home\" Placeholder Field" : "\"$home\" Platzhalter-Feld", @@ -206,7 +206,7 @@ OC.L10N.register( "Website Field" : "Webseiten-Feld", "User profile Website will be set from the specified attribute" : "Benutzerprofil Webseite wird aus dem angegebenen Attribut festgelegt", "Address Field" : "Adressfeld", - "User profile Address will be set from the specified attribute" : "Benutzerprofil Adresse wird aus dem angegebenen Attribut festgelegt", + "User profile Address will be set from the specified attribute" : "Benutzerprofil-Adresse wird aus dem angegebenen Attribut festgelegt", "Twitter Field" : "X-Feld", "User profile Twitter will be set from the specified attribute" : "Benutzerprofil X wird aus dem angegebenen Attribut festgelegt", "Fediverse Field" : "Fediverse-Feld", diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json index fecee6b5853..cb8df4270da 100644 --- a/apps/user_ldap/l10n/de.json +++ b/apps/user_ldap/l10n/de.json @@ -157,7 +157,7 @@ "Only connect to the replica server." : "Nur zum Replikat-Server verbinden.", "Turn off SSL certificate validation." : "Schalte die SSL-Zertifikatsprüfung aus.", "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Nur für Testzwecke geeignet, sollte Standardmäßig nicht verwendet werden. Falls die Verbindung nur mit dieser Option funktioniert, das SSL-Zertifikat des LDAP-Servers in deinen %s Server importieren.", - "Cache Time-To-Live" : "Speichere Time-To-Live zwischen", + "Cache Time-To-Live" : "Time-To-Live zwischenspeichern", "in seconds. A change empties the cache." : "in Sekunden. Eine Änderung leert den Cache.", "Directory Settings" : "Ordnereinstellungen", "User Display Name Field" : "Feld für den Anzeigenamen des Benutzers", @@ -169,7 +169,7 @@ "User Search Attributes" : "Benutzersucheigenschaften", "Optional; one attribute per line" : "Optional; ein Attribut pro Zeile", "Disable users missing from LDAP" : "Benutzer deaktivieren, die in LDAP fehlen", - "When switched on, users imported from LDAP which are then missing will be disabled" : "Beim Einschalten werden aus LDAP importierte und dann hier fehlende Benutzer deaktiviert", + "When switched on, users imported from LDAP which are then missing will be disabled" : "Wenn aktiviert, werden aus LDAP importierte und dann hier fehlende Benutzer deaktiviert", "Group Display Name Field" : "Feld für den Anzeigenamen der Gruppe", "The LDAP attribute to use to generate the groups's display name." : "Das LDAP-Attribut zur Erzeugung des Anzeigenamens der Gruppen.", "Base Group Tree" : "Basis-Gruppenbaum", @@ -180,11 +180,11 @@ "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Ein LDAP-Attribut von Gruppenobjekten, das eine LDAP Such-URL enthält die festlegt welche Objekte zu der Gruppe gehören. (Ein leeres Feld deaktiviert die Funktion \"Dynamisch Gruppenzugehörigkeit\")", "Nested Groups" : "Verschachtelte Gruppen", "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Wenn aktiviert, werden Gruppen, die Gruppen enthalten, unterstützt. (Funktioniert nur, wenn das Merkmal des Gruppenmitgliedes den Domain-Namen enthält.)", - "Paging chunksize" : "Seitenstücke (Paging chunksize)", - "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Abschnittslänge von seitenweise angezeigten LDAP-Suchen, die bei Suchen wie etwa Benutzer- und Gruppen-Auflistungen ausufernd viele Ergebnisse liefern können (die Einstellung \"0\" deaktiviert seitenweise angezeigte LDAP-Suchen in diesen Situationen).", + "Paging chunksize" : "Paging Chunksize", + "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Die Blockgröße für seitenweise LDAP-Suchen, die umfangreiche Ergebnisse wie Benutzer- oder Gruppenaufzählungen zurückgeben können. (Wenn Sie den Wert auf 0 setzen, werden seitenweise LDAP-Suchen in diesen Situationen deaktiviert.)", "Enable LDAP password changes per user" : "LDAP-Passwortänderungen pro Benutzer aktivieren", "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "LDAP-Nutzern die Änderung ihrer Passwörter erlauben und Super-Administratoren sowie Gruppen-Administratoren die Passwortänderung ihrer LDAP-Nutzer erlauben. Dies funktioniert nur, wenn die Zugriffsrichtlinien auf dem LDAP-Server entsprechend konfiguriert sind. Da Passwörter im Klartext an den LDAP-Server gesendet werden, muss die Transportverschlüsselung verwendet werden und das Passwort-Hashing auf dem LDAP-Server sollte konfiguriert werden.", - "(New password is sent as plain text to LDAP)" : "(Das neue Passwort wurde als einfacher Text an LDAP gesendet)", + "(New password is sent as plain text to LDAP)" : "(Das neue Passwort wird als Klartext an LDAP gesendet)", "Default password policy DN" : "Standard Passwort-Regeln DN", "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Die DN einer Standard-Passwort-Policy, welche für den Umgang mit ablaufenden Passwörtern verwendet wird. Dies funktioniert nur wenn Passwort-Änderungen pro Benutzer via LDAP und OpenLDAP aktiviert sind. Leer lassen, um die Passwortablaufbehandlung zu deaktivieren.", "Special Attributes" : "Spezielle Eigenschaften", @@ -193,7 +193,7 @@ "Quota Default" : "Standardkontingent", "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Standardkontingent ignorieren für Benutzer von LDAP, die kein Kontingent festgelegt haben.", "Email Field" : "E-Mail-Feld", - "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "E-Mail-Adresse des Benutzers aus seinem LDAP-Attribut generieren. Für Standard-Verhalten leer lassen.", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : " E-Mail-Adresse des Benutzers über sein LDAP-Attribut festlegen. Für das Standardverhalten, Feld leer lassen.", "User Home Folder Naming Rule" : "Benennungsregel für das Home-Verzeichnis des Benutzers", "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Ohne Eingabe wird der Benutzername (Standard) verwendet. Anderenfalls trage ein LDAP/AD-Attribut ein.", "\"$home\" Placeholder Field" : "\"$home\" Platzhalter-Feld", @@ -204,7 +204,7 @@ "Website Field" : "Webseiten-Feld", "User profile Website will be set from the specified attribute" : "Benutzerprofil Webseite wird aus dem angegebenen Attribut festgelegt", "Address Field" : "Adressfeld", - "User profile Address will be set from the specified attribute" : "Benutzerprofil Adresse wird aus dem angegebenen Attribut festgelegt", + "User profile Address will be set from the specified attribute" : "Benutzerprofil-Adresse wird aus dem angegebenen Attribut festgelegt", "Twitter Field" : "X-Feld", "User profile Twitter will be set from the specified attribute" : "Benutzerprofil X wird aus dem angegebenen Attribut festgelegt", "Fediverse Field" : "Fediverse-Feld", diff --git a/apps/user_ldap/l10n/et_EE.js b/apps/user_ldap/l10n/et_EE.js index e8523228cd3..34641df1f17 100644 --- a/apps/user_ldap/l10n/et_EE.js +++ b/apps/user_ldap/l10n/et_EE.js @@ -33,7 +33,7 @@ OC.L10N.register( "Do you really want to delete the current Server Configuration?" : "Oled kindel, et tahad kustutada praegust serveri seadistust?", "Confirm Deletion" : "Kinnita kustutamine", "Mappings cleared successfully!" : "Vastandused on eemaldatud!", - "Error while clearing the mappings." : "Tõrgeseose eemaldamisel.", + "Error while clearing the mappings." : "Viga vastanduse/seose eemaldamisel.", "Mode switch" : "Režiimi lüliti", "Select attributes" : "Vali atribuudid", "User found and settings verified." : "Kasutaja leiti ja seaded on kontrollitud.", diff --git a/apps/user_ldap/l10n/et_EE.json b/apps/user_ldap/l10n/et_EE.json index 08dae6e77a1..5a5c0e08022 100644 --- a/apps/user_ldap/l10n/et_EE.json +++ b/apps/user_ldap/l10n/et_EE.json @@ -31,7 +31,7 @@ "Do you really want to delete the current Server Configuration?" : "Oled kindel, et tahad kustutada praegust serveri seadistust?", "Confirm Deletion" : "Kinnita kustutamine", "Mappings cleared successfully!" : "Vastandused on eemaldatud!", - "Error while clearing the mappings." : "Tõrgeseose eemaldamisel.", + "Error while clearing the mappings." : "Viga vastanduse/seose eemaldamisel.", "Mode switch" : "Režiimi lüliti", "Select attributes" : "Vali atribuudid", "User found and settings verified." : "Kasutaja leiti ja seaded on kontrollitud.", diff --git a/apps/user_ldap/l10n/pt_BR.js b/apps/user_ldap/l10n/pt_BR.js index 9434b64d3b5..d67160ae69d 100644 --- a/apps/user_ldap/l10n/pt_BR.js +++ b/apps/user_ldap/l10n/pt_BR.js @@ -6,10 +6,12 @@ OC.L10N.register( "Invalid configuration: Anonymous binding is not allowed." : "Configuração inválida: A ligação anônima não é permitida.", "Valid configuration, connection established!" : "Configuração válida, conexão estabelecida!", "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuração válida, mas a ligação falhou. Verifique as configurações e as credenciais do servidor.", + "Invalid configuration: %s" : "Configuração inválida: %s", "No action specified" : "Nenhuma ação especificada", "No configuration specified" : "Nenhuma configuração especificada", "No data specified" : "Nenhum dado especificado", "Invalid data specified" : "Dados inválidos especificados", + "Could not set configuration %1$s to %2$s" : "Não foi possível definir a configuração %1$s como %2$s", "Action does not exist" : "A ação não existe", "Renewing …" : "Renovando...", "Very weak password" : "Senha muito fraca", @@ -52,6 +54,14 @@ OC.L10N.register( "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "O \"%uid\" está faltando o marcador de posição. Ele será substituído pelo nome de login ao consultar o LDAP/AD.", "Please provide a login name to test against" : "Por favor, forneça um nome de login para testar", "The group box was disabled, because the LDAP/AD server does not support memberOf." : "A caixa de grupo foi desabilitada porque o servidor LDAP/AD não oferece suporte a memberOf.", + "Password change rejected. Hint: %s" : "Alteração de senha rejeitada. Dica: %s", + "Mandatory field \"%s\" left empty" : "Campo obrigatório \"%s\" deixado vazio", + "A password is given, but not an LDAP agent" : "É fornecida uma senha, mas não um agente LDAP", + "No password is given for the user agent" : "Nenhuma senha é fornecida para o agente do usuário", + "No LDAP base DN was given" : "Nenhum DN de base LDAP foi fornecido", + "User base DN is not a subnode of global base DN" : "O DN de base do usuário não é um subnó do DN de base global", + "Group base DN is not a subnode of global base DN" : "O DN de base do grupo não é um subnó do DN de base global", + "Login filter does not contain %uid place holder" : "O filtro de login não contém o espaço reservado %uid", "Please login with the new password" : "Logue-se com a nova senha", "LDAP User backend" : "Estrutura do Usuário LDAP", "Your password will expire tomorrow." : "Sua senha vai expirar amanhã.", diff --git a/apps/user_ldap/l10n/pt_BR.json b/apps/user_ldap/l10n/pt_BR.json index 7a16c5dc6ae..4c0005d7803 100644 --- a/apps/user_ldap/l10n/pt_BR.json +++ b/apps/user_ldap/l10n/pt_BR.json @@ -4,10 +4,12 @@ "Invalid configuration: Anonymous binding is not allowed." : "Configuração inválida: A ligação anônima não é permitida.", "Valid configuration, connection established!" : "Configuração válida, conexão estabelecida!", "Valid configuration, but binding failed. Please check the server settings and credentials." : "Configuração válida, mas a ligação falhou. Verifique as configurações e as credenciais do servidor.", + "Invalid configuration: %s" : "Configuração inválida: %s", "No action specified" : "Nenhuma ação especificada", "No configuration specified" : "Nenhuma configuração especificada", "No data specified" : "Nenhum dado especificado", "Invalid data specified" : "Dados inválidos especificados", + "Could not set configuration %1$s to %2$s" : "Não foi possível definir a configuração %1$s como %2$s", "Action does not exist" : "A ação não existe", "Renewing …" : "Renovando...", "Very weak password" : "Senha muito fraca", @@ -50,6 +52,14 @@ "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "O \"%uid\" está faltando o marcador de posição. Ele será substituído pelo nome de login ao consultar o LDAP/AD.", "Please provide a login name to test against" : "Por favor, forneça um nome de login para testar", "The group box was disabled, because the LDAP/AD server does not support memberOf." : "A caixa de grupo foi desabilitada porque o servidor LDAP/AD não oferece suporte a memberOf.", + "Password change rejected. Hint: %s" : "Alteração de senha rejeitada. Dica: %s", + "Mandatory field \"%s\" left empty" : "Campo obrigatório \"%s\" deixado vazio", + "A password is given, but not an LDAP agent" : "É fornecida uma senha, mas não um agente LDAP", + "No password is given for the user agent" : "Nenhuma senha é fornecida para o agente do usuário", + "No LDAP base DN was given" : "Nenhum DN de base LDAP foi fornecido", + "User base DN is not a subnode of global base DN" : "O DN de base do usuário não é um subnó do DN de base global", + "Group base DN is not a subnode of global base DN" : "O DN de base do grupo não é um subnó do DN de base global", + "Login filter does not contain %uid place holder" : "O filtro de login não contém o espaço reservado %uid", "Please login with the new password" : "Logue-se com a nova senha", "LDAP User backend" : "Estrutura do Usuário LDAP", "Your password will expire tomorrow." : "Sua senha vai expirar amanhã.", diff --git a/apps/user_status/l10n/et_EE.js b/apps/user_status/l10n/et_EE.js index cea6ff446f4..a8d21a7c389 100644 --- a/apps/user_status/l10n/et_EE.js +++ b/apps/user_status/l10n/et_EE.js @@ -1,8 +1,8 @@ OC.L10N.register( "user_status", { - "Recent statuses" : "Hiljutised staatused", - "No recent status changes" : "Pole hiljutisi staatuse muudatusi", + "Recent statuses" : "Hiljutised olekud", + "No recent status changes" : "Pole hiljutisi olekumuudatusi", "In a meeting" : "Koosolekul", "Commuting" : "Sõidus", "Out sick" : "Haige", @@ -10,40 +10,40 @@ OC.L10N.register( "Out of office" : "Kontorist väljas", "Working remotely" : "Kaugtööl", "In a call" : "Kõnes", - "User status" : "Kasutaja staatus", - "Clear status after" : "Tühjenda staatus pärast", - "Emoji for your status message" : "Staatuse teate emoji", - "What is your status?" : "Mis on su staatus?", - "Predefined statuses" : "Eeldefineeritud staatused", + "User status" : "Kasutaja olek", + "Clear status after" : "Eemalda olekuteade peale", + "Emoji for your status message" : "Sinu olekuteate emoji", + "What is your status?" : "Mis on su olek?", + "Predefined statuses" : "Eeldefineeritud olekud", "Previously set" : "Varasemalt seatud", - "Reset status" : "Lähesta staatus", - "Reset status to \"{icon} {message}\"" : "Lähesta staatus \"{icon} {message}\"-ks", - "Reset status to \"{message}\"" : "Lähesta staatus \"{message}\"-ks", - "Reset status to \"{icon}\"" : "Lähesta staatus \"{icon}\"-ks", - "There was an error saving the status" : "Staatuse salvestamisel esines viga", - "There was an error clearing the status" : "Staatuse puhastamisel esines viga", - "There was an error reverting the status" : "Staatuse taastamisel esines viga", - "Set status" : "Määra staatus", - "Online status" : "Võrgus staatus", - "Status message" : "Staatuse teade", + "Reset status" : "Lähesta olek", + "Reset status to \"{icon} {message}\"" : "Lähesta olek „{icon} {message}“-ks", + "Reset status to \"{message}\"" : "Lähesta olek „{message}“-ks", + "Reset status to \"{icon}\"" : "Lähesta olek „{icon}“-ks", + "There was an error saving the status" : "Oleku salvestamisel tekkis viga", + "There was an error clearing the status" : "Oleku eemaldamisel tekkis viga", + "There was an error reverting the status" : "Oleku taastamisel tekkis viga", + "Set status" : "Määra olek", + "Online status" : "Olek võrgus", + "Status message" : "Olekuteade", "Set absence period" : "Määra eemaloleku periood", "Set absence period and replacement" : "Määra eemaloleku periood ja asendaja", - "Your status was set automatically" : "Su staatus määrati automaatselt", - "Clear status message" : "Tühjenda staatuseteade", - "Set status message" : "Sea staatuse sõnum", + "Your status was set automatically" : "Su olek määrati automaatselt", + "Clear status message" : "Eemalda olekuteade", + "Set status message" : "Lisa olekusõnum", "Don't clear" : "Ära tühjenda", "Today" : "Täna", "This week" : "Käesolev nädal", - "Online" : "Online", + "Online" : "Võrgus", "Away" : "Eemal", - "Do not disturb" : "Mitte segada", + "Do not disturb" : "Ära sega", "Invisible" : "Nähtamatu", - "Offline" : "Offline", - "There was an error saving the new status" : "Uue staatuse salvestamisel esines viga", + "Offline" : "Pole võrgus", + "There was an error saving the new status" : "Uue oleku salvestamisel esines viga", "30 minutes" : "30 minutit", "1 hour" : "1 tund", "4 hours" : "4 tundi", - "Mute all notifications" : "Vaigista kõik teavituse", - "Appear offline" : "Ilmu kui võrgust väljas" + "Mute all notifications" : "Sellega summutad teavitused", + "Appear offline" : "Sellega paistad olema võrgust väljas" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_status/l10n/et_EE.json b/apps/user_status/l10n/et_EE.json index dcfcbc7e181..a70b6aa9c48 100644 --- a/apps/user_status/l10n/et_EE.json +++ b/apps/user_status/l10n/et_EE.json @@ -1,6 +1,6 @@ { "translations": { - "Recent statuses" : "Hiljutised staatused", - "No recent status changes" : "Pole hiljutisi staatuse muudatusi", + "Recent statuses" : "Hiljutised olekud", + "No recent status changes" : "Pole hiljutisi olekumuudatusi", "In a meeting" : "Koosolekul", "Commuting" : "Sõidus", "Out sick" : "Haige", @@ -8,40 +8,40 @@ "Out of office" : "Kontorist väljas", "Working remotely" : "Kaugtööl", "In a call" : "Kõnes", - "User status" : "Kasutaja staatus", - "Clear status after" : "Tühjenda staatus pärast", - "Emoji for your status message" : "Staatuse teate emoji", - "What is your status?" : "Mis on su staatus?", - "Predefined statuses" : "Eeldefineeritud staatused", + "User status" : "Kasutaja olek", + "Clear status after" : "Eemalda olekuteade peale", + "Emoji for your status message" : "Sinu olekuteate emoji", + "What is your status?" : "Mis on su olek?", + "Predefined statuses" : "Eeldefineeritud olekud", "Previously set" : "Varasemalt seatud", - "Reset status" : "Lähesta staatus", - "Reset status to \"{icon} {message}\"" : "Lähesta staatus \"{icon} {message}\"-ks", - "Reset status to \"{message}\"" : "Lähesta staatus \"{message}\"-ks", - "Reset status to \"{icon}\"" : "Lähesta staatus \"{icon}\"-ks", - "There was an error saving the status" : "Staatuse salvestamisel esines viga", - "There was an error clearing the status" : "Staatuse puhastamisel esines viga", - "There was an error reverting the status" : "Staatuse taastamisel esines viga", - "Set status" : "Määra staatus", - "Online status" : "Võrgus staatus", - "Status message" : "Staatuse teade", + "Reset status" : "Lähesta olek", + "Reset status to \"{icon} {message}\"" : "Lähesta olek „{icon} {message}“-ks", + "Reset status to \"{message}\"" : "Lähesta olek „{message}“-ks", + "Reset status to \"{icon}\"" : "Lähesta olek „{icon}“-ks", + "There was an error saving the status" : "Oleku salvestamisel tekkis viga", + "There was an error clearing the status" : "Oleku eemaldamisel tekkis viga", + "There was an error reverting the status" : "Oleku taastamisel tekkis viga", + "Set status" : "Määra olek", + "Online status" : "Olek võrgus", + "Status message" : "Olekuteade", "Set absence period" : "Määra eemaloleku periood", "Set absence period and replacement" : "Määra eemaloleku periood ja asendaja", - "Your status was set automatically" : "Su staatus määrati automaatselt", - "Clear status message" : "Tühjenda staatuseteade", - "Set status message" : "Sea staatuse sõnum", + "Your status was set automatically" : "Su olek määrati automaatselt", + "Clear status message" : "Eemalda olekuteade", + "Set status message" : "Lisa olekusõnum", "Don't clear" : "Ära tühjenda", "Today" : "Täna", "This week" : "Käesolev nädal", - "Online" : "Online", + "Online" : "Võrgus", "Away" : "Eemal", - "Do not disturb" : "Mitte segada", + "Do not disturb" : "Ära sega", "Invisible" : "Nähtamatu", - "Offline" : "Offline", - "There was an error saving the new status" : "Uue staatuse salvestamisel esines viga", + "Offline" : "Pole võrgus", + "There was an error saving the new status" : "Uue oleku salvestamisel esines viga", "30 minutes" : "30 minutit", "1 hour" : "1 tund", "4 hours" : "4 tundi", - "Mute all notifications" : "Vaigista kõik teavituse", - "Appear offline" : "Ilmu kui võrgust väljas" + "Mute all notifications" : "Sellega summutad teavitused", + "Appear offline" : "Sellega paistad olema võrgust väljas" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/webhook_listeners/lib/Controller/WebhooksController.php b/apps/webhook_listeners/lib/Controller/WebhooksController.php index ef8e2e1e244..cf541487951 100644 --- a/apps/webhook_listeners/lib/Controller/WebhooksController.php +++ b/apps/webhook_listeners/lib/Controller/WebhooksController.php @@ -110,7 +110,7 @@ class WebhooksController extends OCSController { * @param ?array<string,mixed> $eventFilter Mongo filter to apply to the serialized data to decide if firing * @param ?string $userIdFilter User id to filter on. The webhook will only be called by requests from this user. Empty or null means no filtering. * @param ?array<string,string> $headers Array of headers to send - * @param "none"|"headers"|null $authMethod Authentication method to use + * @param "none"|"header"|null $authMethod Authentication method to use * @param ?array<string,mixed> $authData Array of data for authentication * * @return DataResponse<Http::STATUS_OK, WebhookListenersWebhookInfo, array{}> @@ -178,7 +178,7 @@ class WebhooksController extends OCSController { * @param ?array<string,mixed> $eventFilter Mongo filter to apply to the serialized data to decide if firing * @param ?string $userIdFilter User id to filter on. The webhook will only be called by requests from this user. Empty or null means no filtering. * @param ?array<string,string> $headers Array of headers to send - * @param "none"|"headers"|null $authMethod Authentication method to use + * @param "none"|"header"|null $authMethod Authentication method to use * @param ?array<string,mixed> $authData Array of data for authentication * * @return DataResponse<Http::STATUS_OK, WebhookListenersWebhookInfo, array{}> diff --git a/apps/webhook_listeners/openapi.json b/apps/webhook_listeners/openapi.json index fcd26efdf6d..9e7acc5c6f8 100644 --- a/apps/webhook_listeners/openapi.json +++ b/apps/webhook_listeners/openapi.json @@ -236,7 +236,7 @@ "nullable": true, "enum": [ "none", - "headers" + "header" ], "description": "Authentication method to use" }, @@ -519,7 +519,7 @@ "nullable": true, "enum": [ "none", - "headers" + "header" ], "description": "Authentication method to use" }, |