diff options
Diffstat (limited to 'apps')
707 files changed, 5223 insertions, 10805 deletions
diff --git a/apps/admin_audit/l10n/be.js b/apps/admin_audit/l10n/be.js new file mode 100644 index 00000000000..bb52accdf5c --- /dev/null +++ b/apps/admin_audit/l10n/be.js @@ -0,0 +1,7 @@ +OC.L10N.register( + "admin_audit", + { + "Auditing / Logging" : "Аўдыт / Журнал", + "Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Прадастаўляе магчымасці вядзення журнала дзенняў для Nextcloud, такіх як доступ да файлаў або іншых канфідэнцыйных дзеянняў." +}, +"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/apps/admin_audit/l10n/be.json b/apps/admin_audit/l10n/be.json new file mode 100644 index 00000000000..6b36dae579b --- /dev/null +++ b/apps/admin_audit/l10n/be.json @@ -0,0 +1,5 @@ +{ "translations": { + "Auditing / Logging" : "Аўдыт / Журнал", + "Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Прадастаўляе магчымасці вядзення журнала дзенняў для Nextcloud, такіх як доступ да файлаў або іншых канфідэнцыйных дзеянняў." +},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 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/comments/l10n/es_CO.js b/apps/comments/l10n/es_CO.js new file mode 100644 index 00000000000..b8516c1449b --- /dev/null +++ b/apps/comments/l10n/es_CO.js @@ -0,0 +1,35 @@ +OC.L10N.register( + "comments", + { + "Comments" : "Comentarios", + "You commented" : "Comentaste", + "{author} commented" : "{author} comentó", + "You commented on %1$s" : "Usted comentó en %1$s", + "You commented on {file}" : "Hiciste un comentario de {file}", + "%1$s commented on %2$s" : "%1$s comentó en %2$s", + "{author} commented on {file}" : "{author} comentó en {file}", + "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", + "Files" : "Archivo", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Fue mencionado en \"{file}\", en un comentario realizado por un usuario que ha sido eliminado", + "{user} mentioned you in a comment on \"{file}\"" : "{user} le mencionó en un comentario en “{file}”", + "Files app plugin to add comments to files" : "Plugin de la aplicación de archivos para agregar comentarios a los archivos", + "Edit comment" : "Editar comentario", + "Delete comment" : "Borrar comentario", + "Cancel edit" : "Cancelar edición", + "New comment" : "Nuevo comentario", + "Write a comment …" : "Escribir un comentario …", + "Post comment" : "Publicar comentario", + "@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoticonos, / para selector inteligente", + "Could not reload comments" : "No se pudieron recargar los comentarios", + "Failed to mark comments as read" : "No se pudieron marcar los comentarios como leídos", + "Unable to load the comments list" : "No se puede cargar la lista de comentarios", + "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", + "No more messages" : "No hay más mensajes", + "Retry" : "Reintentar", + "Comment" : "Comentario", + "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario", + "Comment deleted" : "Comentario borrado", + "An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario", + "An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario" +}, +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_CO.json b/apps/comments/l10n/es_CO.json new file mode 100644 index 00000000000..c212111b999 --- /dev/null +++ b/apps/comments/l10n/es_CO.json @@ -0,0 +1,33 @@ +{ "translations": { + "Comments" : "Comentarios", + "You commented" : "Comentaste", + "{author} commented" : "{author} comentó", + "You commented on %1$s" : "Usted comentó en %1$s", + "You commented on {file}" : "Hiciste un comentario de {file}", + "%1$s commented on %2$s" : "%1$s comentó en %2$s", + "{author} commented on {file}" : "{author} comentó en {file}", + "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", + "Files" : "Archivo", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Fue mencionado en \"{file}\", en un comentario realizado por un usuario que ha sido eliminado", + "{user} mentioned you in a comment on \"{file}\"" : "{user} le mencionó en un comentario en “{file}”", + "Files app plugin to add comments to files" : "Plugin de la aplicación de archivos para agregar comentarios a los archivos", + "Edit comment" : "Editar comentario", + "Delete comment" : "Borrar comentario", + "Cancel edit" : "Cancelar edición", + "New comment" : "Nuevo comentario", + "Write a comment …" : "Escribir un comentario …", + "Post comment" : "Publicar comentario", + "@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoticonos, / para selector inteligente", + "Could not reload comments" : "No se pudieron recargar los comentarios", + "Failed to mark comments as read" : "No se pudieron marcar los comentarios como leídos", + "Unable to load the comments list" : "No se puede cargar la lista de comentarios", + "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", + "No more messages" : "No hay más mensajes", + "Retry" : "Reintentar", + "Comment" : "Comentario", + "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario", + "Comment deleted" : "Comentario borrado", + "An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario", + "An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +}
\ No newline at end of file diff --git a/apps/dashboard/l10n/es.js b/apps/dashboard/l10n/es.js index e8c266813f6..06a26af9975 100644 --- a/apps/dashboard/l10n/es.js +++ b/apps/dashboard/l10n/es.js @@ -19,8 +19,8 @@ OC.L10N.register( "Customize" : "Personalizar", "Edit widgets" : "Editar widgets", "Get more widgets from the App Store" : "Conseguir más widgets desde la tienda de Apps", - "Weather service" : "Servicio metereológico", - "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Por privacidad, los datos meteorológicos son solicitados por tu servidor Nextcloud en tu nombre de tal forma que el servicio no recibe información personal.", + "Weather service" : "Servicio meteorológico", + "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Para su privacidad, los datos meteorológicos son solicitados por su servidor Nextcloud en su nombre, de tal forma que el servicio no reciba información personal.", "Weather data from Met.no" : "Datos meteorológicos de Met.no", "geocoding with Nominatim" : "geocoding con Nominatim", "elevation data from OpenTopoData" : "datos de elevación de OpenTopoData" diff --git a/apps/dashboard/l10n/es.json b/apps/dashboard/l10n/es.json index 07776366228..3629d632d0e 100644 --- a/apps/dashboard/l10n/es.json +++ b/apps/dashboard/l10n/es.json @@ -17,8 +17,8 @@ "Customize" : "Personalizar", "Edit widgets" : "Editar widgets", "Get more widgets from the App Store" : "Conseguir más widgets desde la tienda de Apps", - "Weather service" : "Servicio metereológico", - "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Por privacidad, los datos meteorológicos son solicitados por tu servidor Nextcloud en tu nombre de tal forma que el servicio no recibe información personal.", + "Weather service" : "Servicio meteorológico", + "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Para su privacidad, los datos meteorológicos son solicitados por su servidor Nextcloud en su nombre, de tal forma que el servicio no reciba información personal.", "Weather data from Met.no" : "Datos meteorológicos de Met.no", "geocoding with Nominatim" : "geocoding con Nominatim", "elevation data from OpenTopoData" : "datos de elevación de OpenTopoData" diff --git a/apps/dashboard/l10n/fr.js b/apps/dashboard/l10n/fr.js index 1d4000fb4da..342a2d26df4 100644 --- a/apps/dashboard/l10n/fr.js +++ b/apps/dashboard/l10n/fr.js @@ -15,7 +15,7 @@ OC.L10N.register( "Hello" : "Bonjour", "Hello, {name}" : "Bonjour {name}", "Happy birthday 🥳🤩🎂🎉" : "Joyeux anniversaire ! 🥳🤩🎂🎉", - "Happy birthday, {name} 🥳🤩🎂🎉" : "Joyeux anniversaire, {name}! 🥳🤩🎂🎉", + "Happy birthday, {name} 🥳🤩🎂🎉" : "Joyeux anniversaire, {name} ! 🥳🤩🎂🎉", "Customize" : "Personnaliser", "Edit widgets" : "Modifier les widgets", "Get more widgets from the App Store" : "Obtenez plus de widgets depuis le magasin d’applications", diff --git a/apps/dashboard/l10n/fr.json b/apps/dashboard/l10n/fr.json index d8a3a6c2a3d..8dea9005139 100644 --- a/apps/dashboard/l10n/fr.json +++ b/apps/dashboard/l10n/fr.json @@ -13,7 +13,7 @@ "Hello" : "Bonjour", "Hello, {name}" : "Bonjour {name}", "Happy birthday 🥳🤩🎂🎉" : "Joyeux anniversaire ! 🥳🤩🎂🎉", - "Happy birthday, {name} 🥳🤩🎂🎉" : "Joyeux anniversaire, {name}! 🥳🤩🎂🎉", + "Happy birthday, {name} 🥳🤩🎂🎉" : "Joyeux anniversaire, {name} ! 🥳🤩🎂🎉", "Customize" : "Personnaliser", "Edit widgets" : "Modifier les widgets", "Get more widgets from the App Store" : "Obtenez plus de widgets depuis le magasin d’applications", diff --git a/apps/dashboard/l10n/uk.js b/apps/dashboard/l10n/uk.js index c611c807349..3310f78cbc6 100644 --- a/apps/dashboard/l10n/uk.js +++ b/apps/dashboard/l10n/uk.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Dashboard" : "Майстерня", "Dashboard app" : "Застосунок з панеллю віджетів ", + "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Почніть свій день з інформацією\n\nПанель управління Nextcloud — це ваша відправна точка на початку дня, яка надає огляд ваших майбутніх зустрічей, термінових електронних листів, повідомлень у чаті, вхідних квитків, останніх твітів та багато іншого! Користувачі можуть додавати вподобані віджети та змінювати фон на свій смак.", "Weather" : "Погода", "Status" : "Статус", "Good morning" : "Доброго ранку", diff --git a/apps/dashboard/l10n/uk.json b/apps/dashboard/l10n/uk.json index d3f3c712dc3..8e69d9b812b 100644 --- a/apps/dashboard/l10n/uk.json +++ b/apps/dashboard/l10n/uk.json @@ -1,6 +1,7 @@ { "translations": { "Dashboard" : "Майстерня", "Dashboard app" : "Застосунок з панеллю віджетів ", + "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Почніть свій день з інформацією\n\nПанель управління Nextcloud — це ваша відправна точка на початку дня, яка надає огляд ваших майбутніх зустрічей, термінових електронних листів, повідомлень у чаті, вхідних квитків, останніх твітів та багато іншого! Користувачі можуть додавати вподобані віджети та змінювати фон на свій смак.", "Weather" : "Погода", "Status" : "Статус", "Good morning" : "Доброго ранку", diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml index a4ce51fd89c..9021ba98a0f 100644 --- a/apps/dav/appinfo/info.xml +++ b/apps/dav/appinfo/info.xml @@ -65,6 +65,7 @@ <command>OCA\DAV\Command\DeleteSubscription</command> <command>OCA\DAV\Command\ExportCalendar</command> <command>OCA\DAV\Command\FixCalendarSyncCommand</command> + <command>OCA\DAV\Command\GetAbsenceCommand</command> <command>OCA\DAV\Command\ListAddressbooks</command> <command>OCA\DAV\Command\ListCalendarShares</command> <command>OCA\DAV\Command\ListCalendars</command> @@ -73,6 +74,7 @@ <command>OCA\DAV\Command\RemoveInvalidShares</command> <command>OCA\DAV\Command\RetentionCleanupCommand</command> <command>OCA\DAV\Command\SendEventReminders</command> + <command>OCA\DAV\Command\SetAbsenceCommand</command> <command>OCA\DAV\Command\SyncBirthdayCalendar</command> <command>OCA\DAV\Command\SyncSystemAddressBook</command> </commands> diff --git a/apps/dav/composer/composer/autoload_classmap.php b/apps/dav/composer/composer/autoload_classmap.php index 28dfeaed498..764f94ef665 100644 --- a/apps/dav/composer/composer/autoload_classmap.php +++ b/apps/dav/composer/composer/autoload_classmap.php @@ -60,6 +60,7 @@ return array( 'OCA\\DAV\\CalDAV\\CalendarProvider' => $baseDir . '/../lib/CalDAV/CalendarProvider.php', 'OCA\\DAV\\CalDAV\\CalendarRoot' => $baseDir . '/../lib/CalDAV/CalendarRoot.php', 'OCA\\DAV\\CalDAV\\DefaultCalendarValidator' => $baseDir . '/../lib/CalDAV/DefaultCalendarValidator.php', + 'OCA\\DAV\\CalDAV\\EmbeddedCalDavServer' => $baseDir . '/../lib/CalDAV/EmbeddedCalDavServer.php', 'OCA\\DAV\\CalDAV\\EventComparisonService' => $baseDir . '/../lib/CalDAV/EventComparisonService.php', 'OCA\\DAV\\CalDAV\\EventReader' => $baseDir . '/../lib/CalDAV/EventReader.php', 'OCA\\DAV\\CalDAV\\EventReaderRDate' => $baseDir . '/../lib/CalDAV/EventReaderRDate.php', @@ -164,6 +165,7 @@ return array( 'OCA\\DAV\\Command\\DeleteSubscription' => $baseDir . '/../lib/Command/DeleteSubscription.php', 'OCA\\DAV\\Command\\ExportCalendar' => $baseDir . '/../lib/Command/ExportCalendar.php', 'OCA\\DAV\\Command\\FixCalendarSyncCommand' => $baseDir . '/../lib/Command/FixCalendarSyncCommand.php', + 'OCA\\DAV\\Command\\GetAbsenceCommand' => $baseDir . '/../lib/Command/GetAbsenceCommand.php', 'OCA\\DAV\\Command\\ListAddressbooks' => $baseDir . '/../lib/Command/ListAddressbooks.php', 'OCA\\DAV\\Command\\ListCalendarShares' => $baseDir . '/../lib/Command/ListCalendarShares.php', 'OCA\\DAV\\Command\\ListCalendars' => $baseDir . '/../lib/Command/ListCalendars.php', @@ -172,6 +174,7 @@ return array( 'OCA\\DAV\\Command\\RemoveInvalidShares' => $baseDir . '/../lib/Command/RemoveInvalidShares.php', 'OCA\\DAV\\Command\\RetentionCleanupCommand' => $baseDir . '/../lib/Command/RetentionCleanupCommand.php', 'OCA\\DAV\\Command\\SendEventReminders' => $baseDir . '/../lib/Command/SendEventReminders.php', + 'OCA\\DAV\\Command\\SetAbsenceCommand' => $baseDir . '/../lib/Command/SetAbsenceCommand.php', 'OCA\\DAV\\Command\\SyncBirthdayCalendar' => $baseDir . '/../lib/Command/SyncBirthdayCalendar.php', 'OCA\\DAV\\Command\\SyncSystemAddressBook' => $baseDir . '/../lib/Command/SyncSystemAddressBook.php', 'OCA\\DAV\\Comments\\CommentNode' => $baseDir . '/../lib/Comments/CommentNode.php', diff --git a/apps/dav/composer/composer/autoload_static.php b/apps/dav/composer/composer/autoload_static.php index 83661b73a30..f3d1eacfcd0 100644 --- a/apps/dav/composer/composer/autoload_static.php +++ b/apps/dav/composer/composer/autoload_static.php @@ -75,6 +75,7 @@ class ComposerStaticInitDAV 'OCA\\DAV\\CalDAV\\CalendarProvider' => __DIR__ . '/..' . '/../lib/CalDAV/CalendarProvider.php', 'OCA\\DAV\\CalDAV\\CalendarRoot' => __DIR__ . '/..' . '/../lib/CalDAV/CalendarRoot.php', 'OCA\\DAV\\CalDAV\\DefaultCalendarValidator' => __DIR__ . '/..' . '/../lib/CalDAV/DefaultCalendarValidator.php', + 'OCA\\DAV\\CalDAV\\EmbeddedCalDavServer' => __DIR__ . '/..' . '/../lib/CalDAV/EmbeddedCalDavServer.php', 'OCA\\DAV\\CalDAV\\EventComparisonService' => __DIR__ . '/..' . '/../lib/CalDAV/EventComparisonService.php', 'OCA\\DAV\\CalDAV\\EventReader' => __DIR__ . '/..' . '/../lib/CalDAV/EventReader.php', 'OCA\\DAV\\CalDAV\\EventReaderRDate' => __DIR__ . '/..' . '/../lib/CalDAV/EventReaderRDate.php', @@ -179,6 +180,7 @@ class ComposerStaticInitDAV 'OCA\\DAV\\Command\\DeleteSubscription' => __DIR__ . '/..' . '/../lib/Command/DeleteSubscription.php', 'OCA\\DAV\\Command\\ExportCalendar' => __DIR__ . '/..' . '/../lib/Command/ExportCalendar.php', 'OCA\\DAV\\Command\\FixCalendarSyncCommand' => __DIR__ . '/..' . '/../lib/Command/FixCalendarSyncCommand.php', + 'OCA\\DAV\\Command\\GetAbsenceCommand' => __DIR__ . '/..' . '/../lib/Command/GetAbsenceCommand.php', 'OCA\\DAV\\Command\\ListAddressbooks' => __DIR__ . '/..' . '/../lib/Command/ListAddressbooks.php', 'OCA\\DAV\\Command\\ListCalendarShares' => __DIR__ . '/..' . '/../lib/Command/ListCalendarShares.php', 'OCA\\DAV\\Command\\ListCalendars' => __DIR__ . '/..' . '/../lib/Command/ListCalendars.php', @@ -187,6 +189,7 @@ class ComposerStaticInitDAV 'OCA\\DAV\\Command\\RemoveInvalidShares' => __DIR__ . '/..' . '/../lib/Command/RemoveInvalidShares.php', 'OCA\\DAV\\Command\\RetentionCleanupCommand' => __DIR__ . '/..' . '/../lib/Command/RetentionCleanupCommand.php', 'OCA\\DAV\\Command\\SendEventReminders' => __DIR__ . '/..' . '/../lib/Command/SendEventReminders.php', + 'OCA\\DAV\\Command\\SetAbsenceCommand' => __DIR__ . '/..' . '/../lib/Command/SetAbsenceCommand.php', 'OCA\\DAV\\Command\\SyncBirthdayCalendar' => __DIR__ . '/..' . '/../lib/Command/SyncBirthdayCalendar.php', 'OCA\\DAV\\Command\\SyncSystemAddressBook' => __DIR__ . '/..' . '/../lib/Command/SyncSystemAddressBook.php', 'OCA\\DAV\\Comments\\CommentNode' => __DIR__ . '/..' . '/../lib/Comments/CommentNode.php', diff --git a/apps/dav/l10n/da.js b/apps/dav/l10n/da.js index 782f0a3b21b..c99b8d10b6e 100644 --- a/apps/dav/l10n/da.js +++ b/apps/dav/l10n/da.js @@ -73,19 +73,19 @@ OC.L10N.register( "Where: %s" : "Hvor: %s", "%1$s via %2$s" : "%1$s via %2$s", "In the past on %1$s for the entire day" : "Tidligere den %1$s for hele dagen", - "_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["Om et minut på%1$s for hele dagen","Om %n minutter den %1$s for hele dagen"], + "_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["Om et minut på %1$s for hele dagen","Om %n minutter den %1$s for hele dagen"], "_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["Om en time på %1$s for hele dagen","Om %n timer den %1$s for hele dagen"], - "_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["I en dag på% 1 $s for hele dagen","Om %n dage den %1$s for hele dagen"], - "_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["I en uge på% 1 $s for hele dagen","Om %n uger den %1$s for hele dagen"], - "_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["I en måned på% 1 $s for hele dagen","Om %n måneder den %1$s for hele dagen"], - "_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["I et år på% 1 $s for hele dagen","Om %n år den %1$s for hele dagen"], + "_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["I en dag på %1$s for hele dagen","Om %n dage den %1$s for hele dagen"], + "_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["I en uge på %1$s for hele dagen","Om %n uger den %1$s for hele dagen"], + "_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["I en måned på %1$s for hele dagen","Om %n måneder den %1$s for hele dagen"], + "_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["I et år på %1$s for hele dagen","Om %n år den %1$s for hele dagen"], "In the past on %1$s between %2$s - %3$s" : "Tidligere den %1$s mellem %2$s - %3$s", - "_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["I et minut på% 1 $s mellem% 2 $s -% 3 $s","Om %n minutter den %1$s mellem %2$s - %3$s"], - "_In a hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["I en time på% 1 $s mellem% 2 $s -% 3 $s","Om %n timer den %1$s mellem %2$s - %3$s"], - "_In a day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["I en dag på% 1 $s mellem% 2 $s -% 3 $s","Om %n dage den %1$s mellem %2$s - %3$s"], - "_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["I en uge på% 1 $s mellem% 2 $s -% 3 $s","Om %n uger den %1$s mellem %2$s - %3$s"], - "_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["I en måned på% 1 $s mellem% 2 $s -% 3 $s","Om %n måneder den %1$s mellem %2$s - %3$s"], - "_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["I et år på% 1 $s mellem% 2 $s -% 3 $s","Om %n år den %1$s mellem %2$s - %3$s"], + "_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["I et minut på %1$s mellem% %2$s - %3$s","Om %n minutter den %1$s mellem %2$s - %3$s"], + "_In a hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["I en time på %1$s mellem %2$s - %3$s","Om %n timer den %1$s mellem %2$s - %3$s"], + "_In a day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["I en dag på %1$s mellem %2$s - %3$s","Om %n dage den %1$s mellem %2$s - %3$s"], + "_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["I en uge på %1$s mellem %2$s - %3$s","Om %n uger den %1$s mellem %2$s - %3$s"], + "_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["I en måned på %1$s mellem %2$s - %3$s","Om %n måneder den %1$s mellem %2$s - %3$s"], + "_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["I et år på %1$s mellem %2$s - %3$s","Om %n år den %1$s mellem %2$s - %3$s"], "Could not generate when statement" : "Kunne ikke generere when sætning", "Every Day for the entire day" : "Hver dag hele dagen", "Every Day for the entire day until %1$s" : "Hver dag hele dagen indtil %1$s", @@ -123,26 +123,26 @@ OC.L10N.register( "On specific dates for the entire day until %1$s" : "På specifikke datoer for hele dagen indtil %1$s", "On specific dates between %1$s - %2$s until %3$s" : "På specifikke datoer mellem %1$s - %2$s indtil %3$s", "In the past on %1$s" : "Tidligere den %1$s", - "_In a minute on %1$s_::_In %n minutes on %1$s_" : ["I et minut på% 1 $s","Om %n minutter den %1$s"], - "_In a hour on %1$s_::_In %n hours on %1$s_" : ["I en time på% 1 $s","Om %n timer den %1$s"], - "_In a day on %1$s_::_In %n days on %1$s_" : ["I en dag på% 1 $s","Om %n dage den %1$s"], - "_In a week on %1$s_::_In %n weeks on %1$s_" : ["I en uge på% 1 $s","Om %n uger den %1$s"], - "_In a month on %1$s_::_In %n months on %1$s_" : ["I en måned på% 1 $s","Om %n måneder den %1$s"], - "_In a year on %1$s_::_In %n years on %1$s_" : ["I et år på% 1 $s","Om %n år den %1$s"], + "_In a minute on %1$s_::_In %n minutes on %1$s_" : ["I et minut på %1$s","Om %n minutter den %1$s"], + "_In a hour on %1$s_::_In %n hours on %1$s_" : ["I en time på %1$s","Om %n timer den %1$s"], + "_In a day on %1$s_::_In %n days on %1$s_" : ["I en dag på %1$s","Om %n dage den %1$s"], + "_In a week on %1$s_::_In %n weeks on %1$s_" : ["I en uge på %1$s","Om %n uger den %1$s"], + "_In a month on %1$s_::_In %n months on %1$s_" : ["I en måned på %1$s","Om %n måneder den %1$s"], + "_In a year on %1$s_::_In %n years on %1$s_" : ["I et år på %1$s","Om %n år den %1$s"], "In the past on %1$s then on %2$s" : "Tidligere på %1$s derefter den %2$s", - "_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["I et minut på% 1 $s så på% 2 $s","Om %n minutter den %1$s derefter den %2$s"], - "_In a hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["I en time på% 1 $s så på% 2 $s","Om %n timer den %1$s derefter den %2$s"], - "_In a day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["I en dag på% 1 $s så på% 2 $s","Om %n dage den %1$s derefter den %2$s"], - "_In a week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["I en uge på% 1 $s så på% 2 $s","Om %n uger den %1$s derefter den %2$s"], - "_In a month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["I en måned på% 1 $s så på% 2 $s","Om %n måneder den %1$s derefter den %2$s"], - "_In a year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["I et år på% 1 $s så på% 2 $s","Om %n år den %1$s derefter den %2$s"], + "_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["I et minut på %1$s så på %2$s","Om %n minutter den %1$s derefter den %2$s"], + "_In a hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["I en time på %1$s så på %2$s","Om %n timer den %1$s derefter den %2$s"], + "_In a day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["I en dag på %1$s så på %2$s","Om %n dage den %1$s derefter den %2$s"], + "_In a week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["I en uge på %1$s så på %2$s","Om %n uger den %1$s derefter den %2$s"], + "_In a month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["I en måned på %1$s så på %2$s","Om %n måneder den %1$s derefter den %2$s"], + "_In a year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["I et år på %1$s så på %2$s","Om %n år den %1$s derefter den %2$s"], "In the past on %1$s then on %2$s and %3$s" : "Tidligere den %1$s derefter den %2$s og %3$s", - "_In a minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["I et minut på% 1 $s så på% 2 $s og% 3 $s","Om %n minutter den %1$s derefter den %2$s og %3$s"], - "_In a hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["I en time på% 1 $s så på% 2 $s og% 3 $s","Om %n timer den %1$s derefter den %2$s og %3$s"], - "_In a day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["I en dag på% 1 $s så på% 2 $s og% 3 $s","Om %n dage den %1$s derefter den %2$s og %3$s"], - "_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["I en uge på% 1 $s så på% 2 $s og% 3 $s","Om %n uger den %1$s derefter den %2$s og %3$s"], - "_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["I en måned på% 1 $s så på% 2 $s og% 3 $s","Om %n måneder den %1$s derefter den %2$s og %3$s"], - "_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["I et år på% 1 $s så på% 2 $s og% 3 $s","Om %n år den %1$s derefter den %2$s og %3$s"], + "_In a minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["I et minut på %1$s så på %2$s og %3$s","Om %n minutter den %1$s derefter den %2$s og %3$s"], + "_In a hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["I en time på %1$s så på %2$s og %3$s","Om %n timer den %1$s derefter den %2$s og %3$s"], + "_In a day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["I en dag på %1$s så på %2$s og %3$s","Om %n dage den %1$s derefter den %2$s og %3$s"], + "_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["I en uge på %1$s så på %2$s og %3$s","Om %n uger den %1$s derefter den %2$s og %3$s"], + "_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["I en måned på %1$s så på %2$s og %3$s","Om %n måneder den %1$s derefter den %2$s og %3$s"], + "_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["I et år på %1$s så på %2$s og %3$s","Om %n år den %1$s derefter den %2$s og %3$s"], "Could not generate next recurrence statement" : "Kunne ikke generere næste gentagelseserklæring", "Cancelled: %1$s" : "Annullerede: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" er blevet annulleret", diff --git a/apps/dav/l10n/da.json b/apps/dav/l10n/da.json index 1007a84bb10..fa934db0daa 100644 --- a/apps/dav/l10n/da.json +++ b/apps/dav/l10n/da.json @@ -71,19 +71,19 @@ "Where: %s" : "Hvor: %s", "%1$s via %2$s" : "%1$s via %2$s", "In the past on %1$s for the entire day" : "Tidligere den %1$s for hele dagen", - "_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["Om et minut på%1$s for hele dagen","Om %n minutter den %1$s for hele dagen"], + "_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["Om et minut på %1$s for hele dagen","Om %n minutter den %1$s for hele dagen"], "_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["Om en time på %1$s for hele dagen","Om %n timer den %1$s for hele dagen"], - "_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["I en dag på% 1 $s for hele dagen","Om %n dage den %1$s for hele dagen"], - "_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["I en uge på% 1 $s for hele dagen","Om %n uger den %1$s for hele dagen"], - "_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["I en måned på% 1 $s for hele dagen","Om %n måneder den %1$s for hele dagen"], - "_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["I et år på% 1 $s for hele dagen","Om %n år den %1$s for hele dagen"], + "_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["I en dag på %1$s for hele dagen","Om %n dage den %1$s for hele dagen"], + "_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["I en uge på %1$s for hele dagen","Om %n uger den %1$s for hele dagen"], + "_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["I en måned på %1$s for hele dagen","Om %n måneder den %1$s for hele dagen"], + "_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["I et år på %1$s for hele dagen","Om %n år den %1$s for hele dagen"], "In the past on %1$s between %2$s - %3$s" : "Tidligere den %1$s mellem %2$s - %3$s", - "_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["I et minut på% 1 $s mellem% 2 $s -% 3 $s","Om %n minutter den %1$s mellem %2$s - %3$s"], - "_In a hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["I en time på% 1 $s mellem% 2 $s -% 3 $s","Om %n timer den %1$s mellem %2$s - %3$s"], - "_In a day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["I en dag på% 1 $s mellem% 2 $s -% 3 $s","Om %n dage den %1$s mellem %2$s - %3$s"], - "_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["I en uge på% 1 $s mellem% 2 $s -% 3 $s","Om %n uger den %1$s mellem %2$s - %3$s"], - "_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["I en måned på% 1 $s mellem% 2 $s -% 3 $s","Om %n måneder den %1$s mellem %2$s - %3$s"], - "_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["I et år på% 1 $s mellem% 2 $s -% 3 $s","Om %n år den %1$s mellem %2$s - %3$s"], + "_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["I et minut på %1$s mellem% %2$s - %3$s","Om %n minutter den %1$s mellem %2$s - %3$s"], + "_In a hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["I en time på %1$s mellem %2$s - %3$s","Om %n timer den %1$s mellem %2$s - %3$s"], + "_In a day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["I en dag på %1$s mellem %2$s - %3$s","Om %n dage den %1$s mellem %2$s - %3$s"], + "_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["I en uge på %1$s mellem %2$s - %3$s","Om %n uger den %1$s mellem %2$s - %3$s"], + "_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["I en måned på %1$s mellem %2$s - %3$s","Om %n måneder den %1$s mellem %2$s - %3$s"], + "_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["I et år på %1$s mellem %2$s - %3$s","Om %n år den %1$s mellem %2$s - %3$s"], "Could not generate when statement" : "Kunne ikke generere when sætning", "Every Day for the entire day" : "Hver dag hele dagen", "Every Day for the entire day until %1$s" : "Hver dag hele dagen indtil %1$s", @@ -121,26 +121,26 @@ "On specific dates for the entire day until %1$s" : "På specifikke datoer for hele dagen indtil %1$s", "On specific dates between %1$s - %2$s until %3$s" : "På specifikke datoer mellem %1$s - %2$s indtil %3$s", "In the past on %1$s" : "Tidligere den %1$s", - "_In a minute on %1$s_::_In %n minutes on %1$s_" : ["I et minut på% 1 $s","Om %n minutter den %1$s"], - "_In a hour on %1$s_::_In %n hours on %1$s_" : ["I en time på% 1 $s","Om %n timer den %1$s"], - "_In a day on %1$s_::_In %n days on %1$s_" : ["I en dag på% 1 $s","Om %n dage den %1$s"], - "_In a week on %1$s_::_In %n weeks on %1$s_" : ["I en uge på% 1 $s","Om %n uger den %1$s"], - "_In a month on %1$s_::_In %n months on %1$s_" : ["I en måned på% 1 $s","Om %n måneder den %1$s"], - "_In a year on %1$s_::_In %n years on %1$s_" : ["I et år på% 1 $s","Om %n år den %1$s"], + "_In a minute on %1$s_::_In %n minutes on %1$s_" : ["I et minut på %1$s","Om %n minutter den %1$s"], + "_In a hour on %1$s_::_In %n hours on %1$s_" : ["I en time på %1$s","Om %n timer den %1$s"], + "_In a day on %1$s_::_In %n days on %1$s_" : ["I en dag på %1$s","Om %n dage den %1$s"], + "_In a week on %1$s_::_In %n weeks on %1$s_" : ["I en uge på %1$s","Om %n uger den %1$s"], + "_In a month on %1$s_::_In %n months on %1$s_" : ["I en måned på %1$s","Om %n måneder den %1$s"], + "_In a year on %1$s_::_In %n years on %1$s_" : ["I et år på %1$s","Om %n år den %1$s"], "In the past on %1$s then on %2$s" : "Tidligere på %1$s derefter den %2$s", - "_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["I et minut på% 1 $s så på% 2 $s","Om %n minutter den %1$s derefter den %2$s"], - "_In a hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["I en time på% 1 $s så på% 2 $s","Om %n timer den %1$s derefter den %2$s"], - "_In a day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["I en dag på% 1 $s så på% 2 $s","Om %n dage den %1$s derefter den %2$s"], - "_In a week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["I en uge på% 1 $s så på% 2 $s","Om %n uger den %1$s derefter den %2$s"], - "_In a month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["I en måned på% 1 $s så på% 2 $s","Om %n måneder den %1$s derefter den %2$s"], - "_In a year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["I et år på% 1 $s så på% 2 $s","Om %n år den %1$s derefter den %2$s"], + "_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["I et minut på %1$s så på %2$s","Om %n minutter den %1$s derefter den %2$s"], + "_In a hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["I en time på %1$s så på %2$s","Om %n timer den %1$s derefter den %2$s"], + "_In a day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["I en dag på %1$s så på %2$s","Om %n dage den %1$s derefter den %2$s"], + "_In a week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["I en uge på %1$s så på %2$s","Om %n uger den %1$s derefter den %2$s"], + "_In a month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["I en måned på %1$s så på %2$s","Om %n måneder den %1$s derefter den %2$s"], + "_In a year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["I et år på %1$s så på %2$s","Om %n år den %1$s derefter den %2$s"], "In the past on %1$s then on %2$s and %3$s" : "Tidligere den %1$s derefter den %2$s og %3$s", - "_In a minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["I et minut på% 1 $s så på% 2 $s og% 3 $s","Om %n minutter den %1$s derefter den %2$s og %3$s"], - "_In a hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["I en time på% 1 $s så på% 2 $s og% 3 $s","Om %n timer den %1$s derefter den %2$s og %3$s"], - "_In a day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["I en dag på% 1 $s så på% 2 $s og% 3 $s","Om %n dage den %1$s derefter den %2$s og %3$s"], - "_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["I en uge på% 1 $s så på% 2 $s og% 3 $s","Om %n uger den %1$s derefter den %2$s og %3$s"], - "_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["I en måned på% 1 $s så på% 2 $s og% 3 $s","Om %n måneder den %1$s derefter den %2$s og %3$s"], - "_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["I et år på% 1 $s så på% 2 $s og% 3 $s","Om %n år den %1$s derefter den %2$s og %3$s"], + "_In a minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["I et minut på %1$s så på %2$s og %3$s","Om %n minutter den %1$s derefter den %2$s og %3$s"], + "_In a hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["I en time på %1$s så på %2$s og %3$s","Om %n timer den %1$s derefter den %2$s og %3$s"], + "_In a day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["I en dag på %1$s så på %2$s og %3$s","Om %n dage den %1$s derefter den %2$s og %3$s"], + "_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["I en uge på %1$s så på %2$s og %3$s","Om %n uger den %1$s derefter den %2$s og %3$s"], + "_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["I en måned på %1$s så på %2$s og %3$s","Om %n måneder den %1$s derefter den %2$s og %3$s"], + "_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["I et år på %1$s så på %2$s og %3$s","Om %n år den %1$s derefter den %2$s og %3$s"], "Could not generate next recurrence statement" : "Kunne ikke generere næste gentagelseserklæring", "Cancelled: %1$s" : "Annullerede: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" er blevet annulleret", diff --git a/apps/dav/l10n/es.js b/apps/dav/l10n/es.js index 22365efe29b..610c2f03dc2 100644 --- a/apps/dav/l10n/es.js +++ b/apps/dav/l10n/es.js @@ -10,8 +10,8 @@ OC.L10N.register( "You deleted calendar {calendar}" : "Usted eliminó el calendario {calendar}", "{actor} updated calendar {calendar}" : "{actor} actualizó el calendario {calendar}", "You updated calendar {calendar}" : "Usted actualizó el calendario {calendar}", - "{actor} restored calendar {calendar}" : "{actor} ha restablecido el calendario {calendar}", - "You restored calendar {calendar}" : "Has restablecido el calendario {calendar}", + "{actor} restored calendar {calendar}" : "{actor} ha restaurado el calendario {calendar}", + "You restored calendar {calendar}" : "Ud. ha restaurado el calendario {calendar}", "You shared calendar {calendar} as public link" : "Has compartido el calendario {calendar} con un enlace público", "You removed public link for calendar {calendar}" : "Has eliminado el enlace público al calendario {calendar}", "{actor} shared calendar {calendar} with you" : "{actor} compartió el calendario {calendar} con usted", @@ -33,22 +33,22 @@ OC.L10N.register( "{actor} updated event {event} in calendar {calendar}" : "{actor} actualizó el evento {event} en el calendario {calendar}", "You updated event {event} in calendar {calendar}" : "Usted actualizó el evento {event} en el calendario {calendar}", "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} ha movido el evento {event} del calendario {sourceCalendar} al calendario {targetCalendar}", - "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Has movido el evento {event} del calendario {sourceCalendar} al calendario {targetCalendar}", - "{actor} restored event {event} of calendar {calendar}" : "{actor} ha restablecido el evento {event} del calendario {calendar}", - "You restored event {event} of calendar {calendar}" : "Has reestablecido el evento {event} del calendario {calendar}", + "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Ud. ha movido el evento {event} del calendario {sourceCalendar} al calendario {targetCalendar}", + "{actor} restored event {event} of calendar {calendar}" : "{actor} ha restaurado el evento {event} del calendario {calendar}", + "You restored event {event} of calendar {calendar}" : "Ud. ha restaurado el evento {event} del calendario {calendar}", "Busy" : "Ocupado", "{actor} created to-do {todo} in list {calendar}" : "{actor} ha creado la tarea {todo} en la lista {calendar}", - "You created to-do {todo} in list {calendar}" : "Has creado la tarea {todo} en la lista {calendar}", + "You created to-do {todo} in list {calendar}" : "Ud. ha creado la tarea {todo} en la lista {calendar}", "{actor} deleted to-do {todo} from list {calendar}" : "{actor} ha eliminado la tarea{todo} de la lista {calendar}", - "You deleted to-do {todo} from list {calendar}" : "Has eliminado la tarea {todo} de la lista {calendar}", + "You deleted to-do {todo} from list {calendar}" : "Ud. ha eliminado la tarea {todo} de la lista {calendar}", "{actor} updated to-do {todo} in list {calendar}" : "{actor} ha actualizado la tarea {todo} en la lista {calendar}", - "You updated to-do {todo} in list {calendar}" : "Has actualizado la tarea {todo} en la lista {calendar}", + "You updated to-do {todo} in list {calendar}" : "Ud. ha actualizado la tarea {todo} en la lista {calendar}", "{actor} solved to-do {todo} in list {calendar}" : "{actor} ha resuelto la tarea {todo} de la lista {calendar}", - "You solved to-do {todo} in list {calendar}" : "Has resuelto la tarea {todo} de la lista {calendar}", + "You solved to-do {todo} in list {calendar}" : "Ud. ha resuelto la tarea {todo} de la lista {calendar}", "{actor} reopened to-do {todo} in list {calendar}" : "{actor} ha reabierto la tarea {todo} en la lista {calendar}", - "You reopened to-do {todo} in list {calendar}" : "Has reabierto la tarea {todo} en la lista {calendar}", + "You reopened to-do {todo} in list {calendar}" : "Ud. ha reabierto la tarea {todo} en la lista {calendar}", "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} ha movido la tarea {todo} de la lista {sourceCalendar} a la lista{targetCalendar}", - "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Has movido la tarea {todo} de la lista {sourceCalendar} a la lista {targetCalendar}", + "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Ud. ha movido la tarea {todo} de la lista {sourceCalendar} a la lista {targetCalendar}", "Calendar, contacts and tasks" : "Calendario, contactos y tareas", "A <strong>calendar</strong> was modified" : "Un <strong>calendario</strong> fue modificado.", "A calendar <strong>event</strong> was modified" : "Un <strong>evento</strong> del calendario fue modificado.", @@ -72,7 +72,7 @@ OC.L10N.register( "Description: %s" : "Descripción: %s", "Where: %s" : "Lugar: %s", "%1$s via %2$s" : "%1$s vía %2$s", - "In the past on %1$s for the entire day" : "En el pasado el %1$sdurante todo el día", + "In the past on %1$s for the entire day" : "En el pasado el %1$s durante todo el día", "_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["En un minuto el %1$s durante todo el día","En %n minutos el %1$s durante todo el día","En %n minutos el %1$s durante todo el día"], "_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["En una hora el %1$s durante todo el día","En %n horas el %1$s durante todo el día","En %n horas el %1$s durante todo el día"], "_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["En un día el %1$s durante todo el día","En %n días el %1$s durante todo el día","En %n días el %1$s durante todo el día"], @@ -86,42 +86,42 @@ OC.L10N.register( "_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["En una semana el %1$s entre %2$s - %3$s","En %n semanas el %1$s entre %2$s - %3$s","En %n semanas el %1$s entre %2$s - %3$s"], "_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["En un mes el %1$s entre %2$s - %3$s","En %n meses el l%1$s entre %2$s - %3$s ","En %n meses el %1$s entre %2$s - %3$s"], "_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["En un año el %1$s entre %2$s - %3$s","En %n años el %1$s entre %2$s - %3$s","En %n años el %1$s entre %2$s - %3$s"], - "Could not generate when statement" : "No se ha podido general la declaración de cuándo", - "Every Day for the entire day" : "Todos los días durante todo el día", - "Every Day for the entire day until %1$s" : "Cada day todo el día hasta el %1$s", + "Could not generate when statement" : "No se pudo generar la declaración de cuándo", + "Every Day for the entire day" : "Todos los días, durante todo el día", + "Every Day for the entire day until %1$s" : "Cada día, todo el día hasta el %1$s", "Every Day between %1$s - %2$s" : "Todos los días entre %1$s - %2$s", "Every Day between %1$s - %2$s until %3$s" : "Todos los días entre %1$s - %2$s hasta %3$s", - "Every %1$d Days for the entire day" : "Cada %1$d días todo el día", - "Every %1$d Days for the entire day until %2$s" : "Cada %1$d días todo el día hasta el %2$s", - "Every %1$d Days between %2$s - %3$s" : "Cada %1$d días entre las %2$s y %3$s", - "Every %1$d Days between %2$s - %3$s until %4$s" : "Cada %1$d días entre las %2$s y %3$s hasta el %4$s", - "Could not generate event recurrence statement" : "No se ha podido generar la declaración de recurrencia", - "Every Week on %1$s for the entire day" : "Cada semana el %1$s todo el día", - "Every Week on %1$s for the entire day until %2$s" : "Cada %1$s días todo el día hasta el %2$s", + "Every %1$d Days for the entire day" : "Cada %1$d días, durante todo el día", + "Every %1$d Days for the entire day until %2$s" : "Cada %1$d días, durante todo el día, hasta el %2$s", + "Every %1$d Days between %2$s - %3$s" : "Cada %1$d días, entre las %2$s y %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Cada %1$d días, entre las %2$s y %3$s hasta el %4$s", + "Could not generate event recurrence statement" : "No se ha podido generar la declaración de recurrencia del evento", + "Every Week on %1$s for the entire day" : "Cada semana el %1$s, durante todo el día", + "Every Week on %1$s for the entire day until %2$s" : "Cada %1$s días, durante todo el día, hasta el %2$s", "Every Week on %1$s between %2$s - %3$s" : "Cada semana el %1$s entre %2$s y %3$s", "Every Week on %1$s between %2$s - %3$s until %4$s" : "Cada semana el %1$s entre %2$s y %3$s hasta el %4$s", "Every %1$d Weeks on %2$s for the entire day" : "Cada %1$d semanas el %2$s todo el día", "Every %1$d Weeks on %2$s for the entire day until %3$s" : "Cada %1$d semanas el %2$s durante todo el día hasta %3$s", "Every %1$d Weeks on %2$s between %3$s - %4$s" : "Cada %1$d semanas el %2$s entre %3$s - %4$s", "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Cada %1$d semanas el %2$s entre %3$s - %4$s hasta %5$s", - "Every Month on the %1$s for the entire day" : "Cada mes el día %1$s durante todo el día", + "Every Month on the %1$s for the entire day" : "Cada mes el día %1$s, durante todo el día", "Every Month on the %1$s for the entire day until %2$s" : "Cada mes el día %1$s durante todo el día hasta %2$s", "Every Month on the %1$s between %2$s - %3$s" : "Cada mes el día %1$s entre %2$s - %3$s", "Every Month on the %1$s between %2$s - %3$s until %4$s" : "Cada mes el día %1$s entre %2$s - %3$s hasta %4$s", - "Every %1$d Months on the %2$s for the entire day" : "Cada %1$d meses el día %2$s durante todo el día", - "Every %1$d Months on the %2$s for the entire day until %3$s" : "Cada %1$d meses el día %2$s durante todo el día hasta %3$s", + "Every %1$d Months on the %2$s for the entire day" : "Cada %1$d meses el día %2$s, durante todo el día", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "Cada %1$d meses el día %2$s, durante todo el día hasta %3$s", "Every %1$d Months on the %2$s between %3$s - %4$s" : "Cada %1$d meses el día %2$s entre %3$s - %4$s", "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Cada %1$d meses el día %2$s entre %3$s - %4$s hasta %5$s", - "Every Year in %1$s on the %2$s for the entire day" : "Cada año en %1$s el día %2$s durante todo el día", - "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Cada año en %1$s el día %2$s durante todo el día hasta %3$s", + "Every Year in %1$s on the %2$s for the entire day" : "Cada año en %1$s el día %2$s, durante todo el día", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Cada año en %1$s el día %2$s, durante todo el día, hasta %3$s", "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Cada año en %1$s el día %2$s entre %3$s - %4$s.", "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Cada año en %1$s el día %2$s entre %3$s - %4$s hasta %5$s", - "Every %1$d Years in %2$s on the %3$s for the entire day" : "Cada %1$d años en %2$s el día %3$s durante todo el día", - "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Cada %1$d años en %2$s el día %3$s durante todo el día hasta %4$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "Cada %1$d años en %2$s el día %3$s, durante todo el día", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Cada %1$d años en %2$s el día %3$s, durante todo el día, hasta %4$s", "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Cada %1$d años en %2$s el día %3$s entre %4$s - %5$s", "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Cada %1$d años en %2$s el día %3$s entre %4$s - %5$s hasta %6$s", - "On specific dates for the entire day until %1$s" : "En fechas concretas durante todo el día hasta %1$s", - "On specific dates between %1$s - %2$s until %3$s" : "En fechas concretas entre %1$s - %2$s hasta %3$s", + "On specific dates for the entire day until %1$s" : "En fechas específicas, durante todo el día, hasta %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "En fechas específicas entre %1$s - %2$s hasta %3$s", "In the past on %1$s" : "En el pasado el %1$s", "_In a minute on %1$s_::_In %n minutes on %1$s_" : ["En un minuto el %1$s","En %n minutos el %1$s","En %n minutos el %1$s"], "_In a hour on %1$s_::_In %n hours on %1$s_" : ["En una hora el %1$s","En %n horas el %1$s","En %n horas el %1$s"], @@ -143,7 +143,7 @@ OC.L10N.register( "_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["En una semana el %1$s y luego el %2$s y %3$s","En %n semanas el %1$s y luego el %2$s y %3$s","En %n semanas el %1$s y luego el %2$s y %3$s"], "_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["En un mes el %1$s y luego el %2$s y %3$s","En %n meses el %1$s y luego el %2$s y %3$s","En %n meses el %1$s y luego el %2$s y %3$s"], "_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["En un año el %1$s y luego el %2$s y %3$s","En %n años el %1$s y luego el %2$s y %3$s","En %n años el %1$s y luego el %2$s y %3$s"], - "Could not generate next recurrence statement" : "No se ha podido generar la descripción de la siguiente repetición", + "Could not generate next recurrence statement" : "No se ha podido generar la declaración de la siguiente recurrencia", "Cancelled: %1$s" : "Cancelado: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" ha sido cancelada", "Re: %1$s" : "Re: %1$s", @@ -185,49 +185,51 @@ OC.L10N.register( "October" : "Octubre", "November" : "Noviembre", "December" : "Diciembre", - "First" : "Primera", + "First" : "Primero", "Second" : "Segundo", "Third" : "Tercero", "Fourth" : "Cuarto", - "Last" : "Última", + "Fifth" : "Quinto", + "Last" : "Último", "Second Last" : "Penúltima", "Third Last" : "Antepenúltima", - "Fourth Last" : "Cuarta última", + "Fourth Last" : "Ante antepenúltimo", + "Fifth Last" : "Quinto último", "Contacts" : "Contactos", "{actor} created address book {addressbook}" : "{actor} ha creado la libreta de direcciones {addressbook}", - "You created address book {addressbook}" : "Has creado la libreta de direcciones {addressbook}", + "You created address book {addressbook}" : "Ud. ha creado la libreta de direcciones {addressbook}", "{actor} deleted address book {addressbook}" : "{actor} ha eliminado la libreta de direcciones {addressbook}", - "You deleted address book {addressbook}" : "Has eliminado la libreta de direcciones {addressbook}", + "You deleted address book {addressbook}" : "Ud. ha eliminado la libreta de direcciones {addressbook}", "{actor} updated address book {addressbook}" : "{actor} ha actualizado la libreta de direcciones {addressbook}", - "You updated address book {addressbook}" : "Has actualizado la libreta de direcciones {addressbook}", + "You updated address book {addressbook}" : "Ud. ha actualizado la libreta de direcciones {addressbook}", "{actor} shared address book {addressbook} with you" : "{actor} ha compartido la libreta de direcciones {addressbook} contigo", - "You shared address book {addressbook} with {user}" : "Has compartido la libreta de direcciones {addressbook} con {user}", + "You shared address book {addressbook} with {user}" : "Ud. ha compartido la libreta de direcciones {addressbook} con {user}", "{actor} shared address book {addressbook} with {user}" : "{actor} ha compartido la libreta de direcciones {addressbook} con {user}", - "{actor} unshared address book {addressbook} from you" : "{actor} ha descompartido la libreta de direcciones {addressbook} contigo", - "You unshared address book {addressbook} from {user}" : "Has descompartido la libreta de direcciones {addressbook} con {user}", - "{actor} unshared address book {addressbook} from {user}" : "{actor} ha descompartido la libreta de direcciones {addressbook} con {user}", - "{actor} unshared address book {addressbook} from themselves" : "{actor} ha descompartido la libreta de direcciones {addressbook} con ellos mismos", - "You shared address book {addressbook} with group {group}" : "Has compartido la libreta de direcciones {addressbook} con el grupo {group}", + "{actor} unshared address book {addressbook} from you" : "{actor} ha dejado de compartir la libreta de direcciones {addressbook} con Ud.", + "You unshared address book {addressbook} from {user}" : "Ud. ha dejado de compartir la libreta de direcciones {addressbook} con {user}", + "{actor} unshared address book {addressbook} from {user}" : "{actor} ha dejado de compartir la libreta de direcciones {addressbook} con {user}", + "{actor} unshared address book {addressbook} from themselves" : "{actor} dejó de compartir su propia libreta de direcciones {addressbook}", + "You shared address book {addressbook} with group {group}" : "Ud. ha compartido la libreta de direcciones {addressbook} con el grupo {group}", "{actor} shared address book {addressbook} with group {group}" : "{actor} ha compartido la libreta de direcciones {addressbook} con el grupo {group}", - "You unshared address book {addressbook} from group {group}" : "Has descompartido la libreta de direcciones {addressbook} con el grupo {group}", - "{actor} unshared address book {addressbook} from group {group}" : "{actor} ha descompartido la libreta de direcciones {addressbook} con el grupo {group}", - "{actor} created contact {card} in address book {addressbook}" : "{actor} ha creado el contacto {card} en la libreta de direcciones {addressbook}", - "You created contact {card} in address book {addressbook}" : "Has creado un contacto {card} en la libreta de direcciones {addressbook}", + "You unshared address book {addressbook} from group {group}" : "Ud. ha dejado de compartir la libreta de direcciones {addressbook} con el grupo {group}", + "{actor} unshared address book {addressbook} from group {group}" : "{actor} ha dejado de compartir la libreta de direcciones {addressbook} con el grupo {group}", + "{actor} created contact {card} in address book {addressbook}" : "{actor} ha creado el contacto {card} en la libreta de direcciones {addressbook}", + "You created contact {card} in address book {addressbook}" : "Ud. ha creado un contacto {card} en la libreta de direcciones {addressbook}", "{actor} deleted contact {card} from address book {addressbook}" : "{actor} ha eliminado el contacto {card} de la libreta de direcciones {addressbook}", - "You deleted contact {card} from address book {addressbook}" : "Has eliminado el contacto {card} de la libreta de direcciones {addressbook}", + "You deleted contact {card} from address book {addressbook}" : "Ud. ha eliminado el contacto {card} de la libreta de direcciones {addressbook}", "{actor} updated contact {card} in address book {addressbook}" : "{actor} ha actualizado el contacto {card} en la libreta de direcciones {addressbook}", - "You updated contact {card} in address book {addressbook}" : "Has actualizado el contacto {card} en la libreta de direcciones {addressbook}", - "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Se ha modificado un <strong>contacto</strong> o una <strong>libreta de direcciones</strong> ", + "You updated contact {card} in address book {addressbook}" : "Ud. ha actualizado el contacto {card} en la libreta de direcciones {addressbook}", + "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Se ha modificado un <strong>contacto</strong> o una <strong>libreta de direcciones</strong>", "Accounts" : "Cuentas", - "System address book which holds all accounts" : "Libretas de direcciones del sistema que contienen todas las cuentas", + "System address book which holds all accounts" : "Libreta de direcciones del sistema que contiene todas las cuentas", "File is not updatable: %1$s" : "El archivo no se puede actualizar: %1$s", - "Failed to get storage for file" : "Error al obtener almacenamiento para el archivo", - "Could not write to final file, canceled by hook" : "No se pudo escribir en el archivo final, cancelado por el sistema.", + "Failed to get storage for file" : "Error al obtener datos de almacenamiento para el archivo", + "Could not write to final file, canceled by hook" : "No se pudo escribir en el archivo final, cancelado por el sistema", "Could not write file contents" : "No se han podido escribir los contenidos del archivo", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes","%n bytes"], "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Error al copiar el archivo al destino (copiado: %1$s, tamaño esperado: %2$s)", "Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Se esperaba un tamaño de archivo de %1$s pero se leyó (desde el cliente Nextcloud) y se escribió (en el almacenamiento Nextcloud) %2$s. Podría ser un problema de red en el lado del envío o un problema de escritura en el almacenamiento en el lado del servidor.", - "Could not rename part file to final file, canceled by hook" : "No se pudo escribir en el archivo final, cancelado por el sistema.", + "Could not rename part file to final file, canceled by hook" : "No se pudo renombrar del archivo parcial como el archivo final, cancelado por el sistema.", "Could not rename part file to final file" : "No se ha podido renombrar el archivo parcial como el archivo final", "Failed to check file size: %1$s" : "Fallo al comprobar el tamaño del archivo: %1$s", "Could not open file: %1$s, file does seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo existe", @@ -248,29 +250,34 @@ OC.L10N.register( "Completed on %s" : "Completado el %s", "Due on %s by %s" : "Finaliza el %s por %s", "Due on %s" : "Finaliza el %s", + "Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "¡Bienvenido a Nextcloud Calendar!\n\nEste es un evento de ejemplo - ¡explore la flexibilidad de planear con Nextcloud Calendar editando cuantas veces quiera!\n\nCon Nextcloud Calendar, podrá:\n- Crear, editar, y administrar eventos fácilmente.\n- Crear múltiples calendarios y compartirlos con su equipo de trabajo, amigos, o su familia.\n- Verificar la disponibilidad y mostrar sus tiempos de ocupado a otros.\n- Se integra de manera transparente con otras apps y dispositivos via CalDAV.\n- Personalice su experiencia: Programe eventos recurrentes, ajuste las notificaciones, así como otros ajustes.", + "Example event - open me!" : "Evento de ejemplo - ¡ábralo!", + "System Address Book" : "Libreta de Direcciones del Sistema", + "The system address book contains contact information for all users in your instance." : "La libreta de direcciones del sistema contiene la información de contacto de todos los usuarios de su instancia.", + "Enable System Address Book" : "Habilitar la Libreta de Direcciones del Sistema", "DAV system address book" : "Libreta de direcciónes DAV del sistema", "No outstanding DAV system address book sync." : "No hay una sincronización pendiente en la libreta de direcciones DAV del sistema.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "La sincronización DAV de la libreta de direcciones del sistema no se ha ejecutado ya que su instancia tiene más de 1000 usuarios o por que ha ocurrido un error. Por favor, ejecútela manualmente llamando al comando: \"occ dav:sync-system-addressbook\".", "WebDAV endpoint" : "Endpoint WebDAV", "Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "No se pudo verificar si su servidor web está adecuadamente configurado para permitir la sincronización de archivos a través de WebDAV. Por favor, verifique manualmente.", - "Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Tu servidor web todavía no está configurado correctamente para permitir la sincronización de archivos, porque la interfaz WebDAV parece estar rota.", + "Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Su servidor web todavía no está configurado correctamente para permitir la sincronización de archivos, porque la interfaz WebDAV parece estar rota.", "Your web server is properly set up to allow file synchronization over WebDAV." : "Su servidor web está adecuadamente configurado para permitir la sincronización de archivos a través de WebDAV.", - "Migrated calendar (%1$s)" : "Calendario migrado (%1$s)", + "Migrated calendar (%1$s)" : "Se migró el calendario (%1$s)", "Calendars including events, details and attendees" : "Calendarios que incluyen eventos, detalles y asistentes", "Contacts and groups" : "Contactos y grupos", "WebDAV" : "WebDAV", "Absence saved" : "Ausencia guardada", - "Failed to save your absence settings" : "Error al guardar tus ajustes de ausencia", + "Failed to save your absence settings" : "Error al guardar sus ajustes de ausencia", "Absence cleared" : "Ausencia limpiada", - "Failed to clear your absence settings" : "Error al borrar tus ajustes de ausencia", + "Failed to clear your absence settings" : "Error al borrar sus ajustes de ausencia", "First day" : "Primer día", "Last day (inclusive)" : "Último día (incluido)", "Out of office replacement (optional)" : "Sustituto durante vacaciones/ausencia (opcional)", "Name of the replacement" : "Nombre del sustituto", "No results." : "Sin resultados.", - "Start typing." : "Empieza a escribir.", + "Start typing." : "Empiece a escribir.", "Short absence status" : "Estado de ausencia corta", - "Long absence Message" : "Mensaje en ausencia larga", + "Long absence Message" : "Mensaje de ausencia larga", "Save" : "Guardar", "Disable absence" : "Deshabilitar ausencia", "Failed to load availability" : "No se ha podido cargar la disponibilidad", @@ -278,21 +285,36 @@ OC.L10N.register( "Failed to save availability" : "No se ha podido guardar la disponibilidad", "Time zone:" : "Zona horaria:", "to" : "para", - "Delete slot" : "Eliminar espacio", - "No working hours set" : "No se han establecido horas de funcionamiento", - "Add slot" : "Añadir espacio", + "Delete slot" : "Eliminar franja de tiempo", + "No working hours set" : "No se han establecido horas laborales", + "Add slot" : "Añadir franja horaria", "Weekdays" : "Días de semana", "Pick a start time for {dayName}" : "Elija una hora de inicio para {dayName}", "Pick a end time for {dayName}" : "Elija una hora fin para {dayName}", - "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Cambiar automáticamente el estado del usuario a \"No molestar\" cuando no esté disponible para silenciar todas las notificaciones.", + "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Cambiar automáticamente el estado del usuario a \"No molestar\" fuera de las horas de disponibilidad para silenciar todas las notificaciones.", "Cancel" : "Cancelar", "Import" : "Importar", "Error while saving settings" : "Error al guardar los ajustes", - "Reset to default" : "Reestablecer a predeterminado", + "Contact reset successfully" : "El contacto fue restablecido exitosamente", + "Error while resetting contact" : "Error al restablecer el contacto", + "Contact imported successfully" : "El contacto se importó exitosamente", + "Error while importing contact" : "Error al importar el contacto", + "Import contact" : "Importar contacto", + "Reset to default" : "Restablecer a predeterminado", + "Import contacts" : "Importar contactos", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Importar un nuevo archivo .vcf eliminará el contacto predeterminado existente y lo reemplazará con el nuevo. ¿Desea continuar?", + "Failed to save example event creation setting" : "Fallo al guardar el ajuste de creación de evento de ejemplo", + "Failed to upload the example event" : "Fallo al cargar el evento de ejemplo", + "Custom example event was saved successfully" : "El evento de ejemplo personalizado se guardó exitosamente", + "Failed to delete the custom example event" : "Fallo al guardar el evento de ejemplo personalizado", + "Custom example event was deleted successfully" : "El evento de ejemplo personalizado se eliminó exitosamente", + "Import calendar event" : "Importar evento del calendario", + "Uploading a new event will overwrite the existing one." : "Cargar un evento nuevo sobrescribirá el existente. ", + "Upload event" : "Cargar evento", "Availability" : "Disponibilidad", "If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configura sus horas laborales, otras personas verán cuando está fuera de la oficina cuando agenden una reunión.", "Absence" : "Ausencia", - "Configure your next absence period." : "Configura el siguiente periodo en que estarás ausente", + "Configure your next absence period." : "Configure el siguiente periodo en que estará ausente", "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instale también la {calendarappstoreopen}app de Calendario{linkclose} o {calendardocopen}conecte su escritorio y móvil para sincronizar ↗{linkclose}.", "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Por favor, asegúrese de configurar correctamente {emailopen}el servidor web{linkclose}", "Calendar server" : "Servidor de calendario", @@ -305,6 +327,8 @@ 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", + "Example content" : "Contenido de ejemplo", + "Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "El contenido de ejemplo sirve para mostrar las características de Nextcloud. Se proporciona un contenido predeterminado con Nextcloud, y puede ser reemplazado por un contenido personalizado.", "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 bed92b5fd76..ba95b4a0296 100644 --- a/apps/dav/l10n/es.json +++ b/apps/dav/l10n/es.json @@ -8,8 +8,8 @@ "You deleted calendar {calendar}" : "Usted eliminó el calendario {calendar}", "{actor} updated calendar {calendar}" : "{actor} actualizó el calendario {calendar}", "You updated calendar {calendar}" : "Usted actualizó el calendario {calendar}", - "{actor} restored calendar {calendar}" : "{actor} ha restablecido el calendario {calendar}", - "You restored calendar {calendar}" : "Has restablecido el calendario {calendar}", + "{actor} restored calendar {calendar}" : "{actor} ha restaurado el calendario {calendar}", + "You restored calendar {calendar}" : "Ud. ha restaurado el calendario {calendar}", "You shared calendar {calendar} as public link" : "Has compartido el calendario {calendar} con un enlace público", "You removed public link for calendar {calendar}" : "Has eliminado el enlace público al calendario {calendar}", "{actor} shared calendar {calendar} with you" : "{actor} compartió el calendario {calendar} con usted", @@ -31,22 +31,22 @@ "{actor} updated event {event} in calendar {calendar}" : "{actor} actualizó el evento {event} en el calendario {calendar}", "You updated event {event} in calendar {calendar}" : "Usted actualizó el evento {event} en el calendario {calendar}", "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} ha movido el evento {event} del calendario {sourceCalendar} al calendario {targetCalendar}", - "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Has movido el evento {event} del calendario {sourceCalendar} al calendario {targetCalendar}", - "{actor} restored event {event} of calendar {calendar}" : "{actor} ha restablecido el evento {event} del calendario {calendar}", - "You restored event {event} of calendar {calendar}" : "Has reestablecido el evento {event} del calendario {calendar}", + "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Ud. ha movido el evento {event} del calendario {sourceCalendar} al calendario {targetCalendar}", + "{actor} restored event {event} of calendar {calendar}" : "{actor} ha restaurado el evento {event} del calendario {calendar}", + "You restored event {event} of calendar {calendar}" : "Ud. ha restaurado el evento {event} del calendario {calendar}", "Busy" : "Ocupado", "{actor} created to-do {todo} in list {calendar}" : "{actor} ha creado la tarea {todo} en la lista {calendar}", - "You created to-do {todo} in list {calendar}" : "Has creado la tarea {todo} en la lista {calendar}", + "You created to-do {todo} in list {calendar}" : "Ud. ha creado la tarea {todo} en la lista {calendar}", "{actor} deleted to-do {todo} from list {calendar}" : "{actor} ha eliminado la tarea{todo} de la lista {calendar}", - "You deleted to-do {todo} from list {calendar}" : "Has eliminado la tarea {todo} de la lista {calendar}", + "You deleted to-do {todo} from list {calendar}" : "Ud. ha eliminado la tarea {todo} de la lista {calendar}", "{actor} updated to-do {todo} in list {calendar}" : "{actor} ha actualizado la tarea {todo} en la lista {calendar}", - "You updated to-do {todo} in list {calendar}" : "Has actualizado la tarea {todo} en la lista {calendar}", + "You updated to-do {todo} in list {calendar}" : "Ud. ha actualizado la tarea {todo} en la lista {calendar}", "{actor} solved to-do {todo} in list {calendar}" : "{actor} ha resuelto la tarea {todo} de la lista {calendar}", - "You solved to-do {todo} in list {calendar}" : "Has resuelto la tarea {todo} de la lista {calendar}", + "You solved to-do {todo} in list {calendar}" : "Ud. ha resuelto la tarea {todo} de la lista {calendar}", "{actor} reopened to-do {todo} in list {calendar}" : "{actor} ha reabierto la tarea {todo} en la lista {calendar}", - "You reopened to-do {todo} in list {calendar}" : "Has reabierto la tarea {todo} en la lista {calendar}", + "You reopened to-do {todo} in list {calendar}" : "Ud. ha reabierto la tarea {todo} en la lista {calendar}", "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} ha movido la tarea {todo} de la lista {sourceCalendar} a la lista{targetCalendar}", - "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Has movido la tarea {todo} de la lista {sourceCalendar} a la lista {targetCalendar}", + "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Ud. ha movido la tarea {todo} de la lista {sourceCalendar} a la lista {targetCalendar}", "Calendar, contacts and tasks" : "Calendario, contactos y tareas", "A <strong>calendar</strong> was modified" : "Un <strong>calendario</strong> fue modificado.", "A calendar <strong>event</strong> was modified" : "Un <strong>evento</strong> del calendario fue modificado.", @@ -70,7 +70,7 @@ "Description: %s" : "Descripción: %s", "Where: %s" : "Lugar: %s", "%1$s via %2$s" : "%1$s vía %2$s", - "In the past on %1$s for the entire day" : "En el pasado el %1$sdurante todo el día", + "In the past on %1$s for the entire day" : "En el pasado el %1$s durante todo el día", "_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["En un minuto el %1$s durante todo el día","En %n minutos el %1$s durante todo el día","En %n minutos el %1$s durante todo el día"], "_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["En una hora el %1$s durante todo el día","En %n horas el %1$s durante todo el día","En %n horas el %1$s durante todo el día"], "_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["En un día el %1$s durante todo el día","En %n días el %1$s durante todo el día","En %n días el %1$s durante todo el día"], @@ -84,42 +84,42 @@ "_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["En una semana el %1$s entre %2$s - %3$s","En %n semanas el %1$s entre %2$s - %3$s","En %n semanas el %1$s entre %2$s - %3$s"], "_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["En un mes el %1$s entre %2$s - %3$s","En %n meses el l%1$s entre %2$s - %3$s ","En %n meses el %1$s entre %2$s - %3$s"], "_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["En un año el %1$s entre %2$s - %3$s","En %n años el %1$s entre %2$s - %3$s","En %n años el %1$s entre %2$s - %3$s"], - "Could not generate when statement" : "No se ha podido general la declaración de cuándo", - "Every Day for the entire day" : "Todos los días durante todo el día", - "Every Day for the entire day until %1$s" : "Cada day todo el día hasta el %1$s", + "Could not generate when statement" : "No se pudo generar la declaración de cuándo", + "Every Day for the entire day" : "Todos los días, durante todo el día", + "Every Day for the entire day until %1$s" : "Cada día, todo el día hasta el %1$s", "Every Day between %1$s - %2$s" : "Todos los días entre %1$s - %2$s", "Every Day between %1$s - %2$s until %3$s" : "Todos los días entre %1$s - %2$s hasta %3$s", - "Every %1$d Days for the entire day" : "Cada %1$d días todo el día", - "Every %1$d Days for the entire day until %2$s" : "Cada %1$d días todo el día hasta el %2$s", - "Every %1$d Days between %2$s - %3$s" : "Cada %1$d días entre las %2$s y %3$s", - "Every %1$d Days between %2$s - %3$s until %4$s" : "Cada %1$d días entre las %2$s y %3$s hasta el %4$s", - "Could not generate event recurrence statement" : "No se ha podido generar la declaración de recurrencia", - "Every Week on %1$s for the entire day" : "Cada semana el %1$s todo el día", - "Every Week on %1$s for the entire day until %2$s" : "Cada %1$s días todo el día hasta el %2$s", + "Every %1$d Days for the entire day" : "Cada %1$d días, durante todo el día", + "Every %1$d Days for the entire day until %2$s" : "Cada %1$d días, durante todo el día, hasta el %2$s", + "Every %1$d Days between %2$s - %3$s" : "Cada %1$d días, entre las %2$s y %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Cada %1$d días, entre las %2$s y %3$s hasta el %4$s", + "Could not generate event recurrence statement" : "No se ha podido generar la declaración de recurrencia del evento", + "Every Week on %1$s for the entire day" : "Cada semana el %1$s, durante todo el día", + "Every Week on %1$s for the entire day until %2$s" : "Cada %1$s días, durante todo el día, hasta el %2$s", "Every Week on %1$s between %2$s - %3$s" : "Cada semana el %1$s entre %2$s y %3$s", "Every Week on %1$s between %2$s - %3$s until %4$s" : "Cada semana el %1$s entre %2$s y %3$s hasta el %4$s", "Every %1$d Weeks on %2$s for the entire day" : "Cada %1$d semanas el %2$s todo el día", "Every %1$d Weeks on %2$s for the entire day until %3$s" : "Cada %1$d semanas el %2$s durante todo el día hasta %3$s", "Every %1$d Weeks on %2$s between %3$s - %4$s" : "Cada %1$d semanas el %2$s entre %3$s - %4$s", "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Cada %1$d semanas el %2$s entre %3$s - %4$s hasta %5$s", - "Every Month on the %1$s for the entire day" : "Cada mes el día %1$s durante todo el día", + "Every Month on the %1$s for the entire day" : "Cada mes el día %1$s, durante todo el día", "Every Month on the %1$s for the entire day until %2$s" : "Cada mes el día %1$s durante todo el día hasta %2$s", "Every Month on the %1$s between %2$s - %3$s" : "Cada mes el día %1$s entre %2$s - %3$s", "Every Month on the %1$s between %2$s - %3$s until %4$s" : "Cada mes el día %1$s entre %2$s - %3$s hasta %4$s", - "Every %1$d Months on the %2$s for the entire day" : "Cada %1$d meses el día %2$s durante todo el día", - "Every %1$d Months on the %2$s for the entire day until %3$s" : "Cada %1$d meses el día %2$s durante todo el día hasta %3$s", + "Every %1$d Months on the %2$s for the entire day" : "Cada %1$d meses el día %2$s, durante todo el día", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "Cada %1$d meses el día %2$s, durante todo el día hasta %3$s", "Every %1$d Months on the %2$s between %3$s - %4$s" : "Cada %1$d meses el día %2$s entre %3$s - %4$s", "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Cada %1$d meses el día %2$s entre %3$s - %4$s hasta %5$s", - "Every Year in %1$s on the %2$s for the entire day" : "Cada año en %1$s el día %2$s durante todo el día", - "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Cada año en %1$s el día %2$s durante todo el día hasta %3$s", + "Every Year in %1$s on the %2$s for the entire day" : "Cada año en %1$s el día %2$s, durante todo el día", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Cada año en %1$s el día %2$s, durante todo el día, hasta %3$s", "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Cada año en %1$s el día %2$s entre %3$s - %4$s.", "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Cada año en %1$s el día %2$s entre %3$s - %4$s hasta %5$s", - "Every %1$d Years in %2$s on the %3$s for the entire day" : "Cada %1$d años en %2$s el día %3$s durante todo el día", - "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Cada %1$d años en %2$s el día %3$s durante todo el día hasta %4$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "Cada %1$d años en %2$s el día %3$s, durante todo el día", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Cada %1$d años en %2$s el día %3$s, durante todo el día, hasta %4$s", "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Cada %1$d años en %2$s el día %3$s entre %4$s - %5$s", "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Cada %1$d años en %2$s el día %3$s entre %4$s - %5$s hasta %6$s", - "On specific dates for the entire day until %1$s" : "En fechas concretas durante todo el día hasta %1$s", - "On specific dates between %1$s - %2$s until %3$s" : "En fechas concretas entre %1$s - %2$s hasta %3$s", + "On specific dates for the entire day until %1$s" : "En fechas específicas, durante todo el día, hasta %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "En fechas específicas entre %1$s - %2$s hasta %3$s", "In the past on %1$s" : "En el pasado el %1$s", "_In a minute on %1$s_::_In %n minutes on %1$s_" : ["En un minuto el %1$s","En %n minutos el %1$s","En %n minutos el %1$s"], "_In a hour on %1$s_::_In %n hours on %1$s_" : ["En una hora el %1$s","En %n horas el %1$s","En %n horas el %1$s"], @@ -141,7 +141,7 @@ "_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["En una semana el %1$s y luego el %2$s y %3$s","En %n semanas el %1$s y luego el %2$s y %3$s","En %n semanas el %1$s y luego el %2$s y %3$s"], "_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["En un mes el %1$s y luego el %2$s y %3$s","En %n meses el %1$s y luego el %2$s y %3$s","En %n meses el %1$s y luego el %2$s y %3$s"], "_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["En un año el %1$s y luego el %2$s y %3$s","En %n años el %1$s y luego el %2$s y %3$s","En %n años el %1$s y luego el %2$s y %3$s"], - "Could not generate next recurrence statement" : "No se ha podido generar la descripción de la siguiente repetición", + "Could not generate next recurrence statement" : "No se ha podido generar la declaración de la siguiente recurrencia", "Cancelled: %1$s" : "Cancelado: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" ha sido cancelada", "Re: %1$s" : "Re: %1$s", @@ -183,49 +183,51 @@ "October" : "Octubre", "November" : "Noviembre", "December" : "Diciembre", - "First" : "Primera", + "First" : "Primero", "Second" : "Segundo", "Third" : "Tercero", "Fourth" : "Cuarto", - "Last" : "Última", + "Fifth" : "Quinto", + "Last" : "Último", "Second Last" : "Penúltima", "Third Last" : "Antepenúltima", - "Fourth Last" : "Cuarta última", + "Fourth Last" : "Ante antepenúltimo", + "Fifth Last" : "Quinto último", "Contacts" : "Contactos", "{actor} created address book {addressbook}" : "{actor} ha creado la libreta de direcciones {addressbook}", - "You created address book {addressbook}" : "Has creado la libreta de direcciones {addressbook}", + "You created address book {addressbook}" : "Ud. ha creado la libreta de direcciones {addressbook}", "{actor} deleted address book {addressbook}" : "{actor} ha eliminado la libreta de direcciones {addressbook}", - "You deleted address book {addressbook}" : "Has eliminado la libreta de direcciones {addressbook}", + "You deleted address book {addressbook}" : "Ud. ha eliminado la libreta de direcciones {addressbook}", "{actor} updated address book {addressbook}" : "{actor} ha actualizado la libreta de direcciones {addressbook}", - "You updated address book {addressbook}" : "Has actualizado la libreta de direcciones {addressbook}", + "You updated address book {addressbook}" : "Ud. ha actualizado la libreta de direcciones {addressbook}", "{actor} shared address book {addressbook} with you" : "{actor} ha compartido la libreta de direcciones {addressbook} contigo", - "You shared address book {addressbook} with {user}" : "Has compartido la libreta de direcciones {addressbook} con {user}", + "You shared address book {addressbook} with {user}" : "Ud. ha compartido la libreta de direcciones {addressbook} con {user}", "{actor} shared address book {addressbook} with {user}" : "{actor} ha compartido la libreta de direcciones {addressbook} con {user}", - "{actor} unshared address book {addressbook} from you" : "{actor} ha descompartido la libreta de direcciones {addressbook} contigo", - "You unshared address book {addressbook} from {user}" : "Has descompartido la libreta de direcciones {addressbook} con {user}", - "{actor} unshared address book {addressbook} from {user}" : "{actor} ha descompartido la libreta de direcciones {addressbook} con {user}", - "{actor} unshared address book {addressbook} from themselves" : "{actor} ha descompartido la libreta de direcciones {addressbook} con ellos mismos", - "You shared address book {addressbook} with group {group}" : "Has compartido la libreta de direcciones {addressbook} con el grupo {group}", + "{actor} unshared address book {addressbook} from you" : "{actor} ha dejado de compartir la libreta de direcciones {addressbook} con Ud.", + "You unshared address book {addressbook} from {user}" : "Ud. ha dejado de compartir la libreta de direcciones {addressbook} con {user}", + "{actor} unshared address book {addressbook} from {user}" : "{actor} ha dejado de compartir la libreta de direcciones {addressbook} con {user}", + "{actor} unshared address book {addressbook} from themselves" : "{actor} dejó de compartir su propia libreta de direcciones {addressbook}", + "You shared address book {addressbook} with group {group}" : "Ud. ha compartido la libreta de direcciones {addressbook} con el grupo {group}", "{actor} shared address book {addressbook} with group {group}" : "{actor} ha compartido la libreta de direcciones {addressbook} con el grupo {group}", - "You unshared address book {addressbook} from group {group}" : "Has descompartido la libreta de direcciones {addressbook} con el grupo {group}", - "{actor} unshared address book {addressbook} from group {group}" : "{actor} ha descompartido la libreta de direcciones {addressbook} con el grupo {group}", - "{actor} created contact {card} in address book {addressbook}" : "{actor} ha creado el contacto {card} en la libreta de direcciones {addressbook}", - "You created contact {card} in address book {addressbook}" : "Has creado un contacto {card} en la libreta de direcciones {addressbook}", + "You unshared address book {addressbook} from group {group}" : "Ud. ha dejado de compartir la libreta de direcciones {addressbook} con el grupo {group}", + "{actor} unshared address book {addressbook} from group {group}" : "{actor} ha dejado de compartir la libreta de direcciones {addressbook} con el grupo {group}", + "{actor} created contact {card} in address book {addressbook}" : "{actor} ha creado el contacto {card} en la libreta de direcciones {addressbook}", + "You created contact {card} in address book {addressbook}" : "Ud. ha creado un contacto {card} en la libreta de direcciones {addressbook}", "{actor} deleted contact {card} from address book {addressbook}" : "{actor} ha eliminado el contacto {card} de la libreta de direcciones {addressbook}", - "You deleted contact {card} from address book {addressbook}" : "Has eliminado el contacto {card} de la libreta de direcciones {addressbook}", + "You deleted contact {card} from address book {addressbook}" : "Ud. ha eliminado el contacto {card} de la libreta de direcciones {addressbook}", "{actor} updated contact {card} in address book {addressbook}" : "{actor} ha actualizado el contacto {card} en la libreta de direcciones {addressbook}", - "You updated contact {card} in address book {addressbook}" : "Has actualizado el contacto {card} en la libreta de direcciones {addressbook}", - "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Se ha modificado un <strong>contacto</strong> o una <strong>libreta de direcciones</strong> ", + "You updated contact {card} in address book {addressbook}" : "Ud. ha actualizado el contacto {card} en la libreta de direcciones {addressbook}", + "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Se ha modificado un <strong>contacto</strong> o una <strong>libreta de direcciones</strong>", "Accounts" : "Cuentas", - "System address book which holds all accounts" : "Libretas de direcciones del sistema que contienen todas las cuentas", + "System address book which holds all accounts" : "Libreta de direcciones del sistema que contiene todas las cuentas", "File is not updatable: %1$s" : "El archivo no se puede actualizar: %1$s", - "Failed to get storage for file" : "Error al obtener almacenamiento para el archivo", - "Could not write to final file, canceled by hook" : "No se pudo escribir en el archivo final, cancelado por el sistema.", + "Failed to get storage for file" : "Error al obtener datos de almacenamiento para el archivo", + "Could not write to final file, canceled by hook" : "No se pudo escribir en el archivo final, cancelado por el sistema", "Could not write file contents" : "No se han podido escribir los contenidos del archivo", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes","%n bytes"], "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Error al copiar el archivo al destino (copiado: %1$s, tamaño esperado: %2$s)", "Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Se esperaba un tamaño de archivo de %1$s pero se leyó (desde el cliente Nextcloud) y se escribió (en el almacenamiento Nextcloud) %2$s. Podría ser un problema de red en el lado del envío o un problema de escritura en el almacenamiento en el lado del servidor.", - "Could not rename part file to final file, canceled by hook" : "No se pudo escribir en el archivo final, cancelado por el sistema.", + "Could not rename part file to final file, canceled by hook" : "No se pudo renombrar del archivo parcial como el archivo final, cancelado por el sistema.", "Could not rename part file to final file" : "No se ha podido renombrar el archivo parcial como el archivo final", "Failed to check file size: %1$s" : "Fallo al comprobar el tamaño del archivo: %1$s", "Could not open file: %1$s, file does seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo existe", @@ -246,29 +248,34 @@ "Completed on %s" : "Completado el %s", "Due on %s by %s" : "Finaliza el %s por %s", "Due on %s" : "Finaliza el %s", + "Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "¡Bienvenido a Nextcloud Calendar!\n\nEste es un evento de ejemplo - ¡explore la flexibilidad de planear con Nextcloud Calendar editando cuantas veces quiera!\n\nCon Nextcloud Calendar, podrá:\n- Crear, editar, y administrar eventos fácilmente.\n- Crear múltiples calendarios y compartirlos con su equipo de trabajo, amigos, o su familia.\n- Verificar la disponibilidad y mostrar sus tiempos de ocupado a otros.\n- Se integra de manera transparente con otras apps y dispositivos via CalDAV.\n- Personalice su experiencia: Programe eventos recurrentes, ajuste las notificaciones, así como otros ajustes.", + "Example event - open me!" : "Evento de ejemplo - ¡ábralo!", + "System Address Book" : "Libreta de Direcciones del Sistema", + "The system address book contains contact information for all users in your instance." : "La libreta de direcciones del sistema contiene la información de contacto de todos los usuarios de su instancia.", + "Enable System Address Book" : "Habilitar la Libreta de Direcciones del Sistema", "DAV system address book" : "Libreta de direcciónes DAV del sistema", "No outstanding DAV system address book sync." : "No hay una sincronización pendiente en la libreta de direcciones DAV del sistema.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "La sincronización DAV de la libreta de direcciones del sistema no se ha ejecutado ya que su instancia tiene más de 1000 usuarios o por que ha ocurrido un error. Por favor, ejecútela manualmente llamando al comando: \"occ dav:sync-system-addressbook\".", "WebDAV endpoint" : "Endpoint WebDAV", "Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "No se pudo verificar si su servidor web está adecuadamente configurado para permitir la sincronización de archivos a través de WebDAV. Por favor, verifique manualmente.", - "Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Tu servidor web todavía no está configurado correctamente para permitir la sincronización de archivos, porque la interfaz WebDAV parece estar rota.", + "Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Su servidor web todavía no está configurado correctamente para permitir la sincronización de archivos, porque la interfaz WebDAV parece estar rota.", "Your web server is properly set up to allow file synchronization over WebDAV." : "Su servidor web está adecuadamente configurado para permitir la sincronización de archivos a través de WebDAV.", - "Migrated calendar (%1$s)" : "Calendario migrado (%1$s)", + "Migrated calendar (%1$s)" : "Se migró el calendario (%1$s)", "Calendars including events, details and attendees" : "Calendarios que incluyen eventos, detalles y asistentes", "Contacts and groups" : "Contactos y grupos", "WebDAV" : "WebDAV", "Absence saved" : "Ausencia guardada", - "Failed to save your absence settings" : "Error al guardar tus ajustes de ausencia", + "Failed to save your absence settings" : "Error al guardar sus ajustes de ausencia", "Absence cleared" : "Ausencia limpiada", - "Failed to clear your absence settings" : "Error al borrar tus ajustes de ausencia", + "Failed to clear your absence settings" : "Error al borrar sus ajustes de ausencia", "First day" : "Primer día", "Last day (inclusive)" : "Último día (incluido)", "Out of office replacement (optional)" : "Sustituto durante vacaciones/ausencia (opcional)", "Name of the replacement" : "Nombre del sustituto", "No results." : "Sin resultados.", - "Start typing." : "Empieza a escribir.", + "Start typing." : "Empiece a escribir.", "Short absence status" : "Estado de ausencia corta", - "Long absence Message" : "Mensaje en ausencia larga", + "Long absence Message" : "Mensaje de ausencia larga", "Save" : "Guardar", "Disable absence" : "Deshabilitar ausencia", "Failed to load availability" : "No se ha podido cargar la disponibilidad", @@ -276,21 +283,36 @@ "Failed to save availability" : "No se ha podido guardar la disponibilidad", "Time zone:" : "Zona horaria:", "to" : "para", - "Delete slot" : "Eliminar espacio", - "No working hours set" : "No se han establecido horas de funcionamiento", - "Add slot" : "Añadir espacio", + "Delete slot" : "Eliminar franja de tiempo", + "No working hours set" : "No se han establecido horas laborales", + "Add slot" : "Añadir franja horaria", "Weekdays" : "Días de semana", "Pick a start time for {dayName}" : "Elija una hora de inicio para {dayName}", "Pick a end time for {dayName}" : "Elija una hora fin para {dayName}", - "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Cambiar automáticamente el estado del usuario a \"No molestar\" cuando no esté disponible para silenciar todas las notificaciones.", + "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Cambiar automáticamente el estado del usuario a \"No molestar\" fuera de las horas de disponibilidad para silenciar todas las notificaciones.", "Cancel" : "Cancelar", "Import" : "Importar", "Error while saving settings" : "Error al guardar los ajustes", - "Reset to default" : "Reestablecer a predeterminado", + "Contact reset successfully" : "El contacto fue restablecido exitosamente", + "Error while resetting contact" : "Error al restablecer el contacto", + "Contact imported successfully" : "El contacto se importó exitosamente", + "Error while importing contact" : "Error al importar el contacto", + "Import contact" : "Importar contacto", + "Reset to default" : "Restablecer a predeterminado", + "Import contacts" : "Importar contactos", + "Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Importar un nuevo archivo .vcf eliminará el contacto predeterminado existente y lo reemplazará con el nuevo. ¿Desea continuar?", + "Failed to save example event creation setting" : "Fallo al guardar el ajuste de creación de evento de ejemplo", + "Failed to upload the example event" : "Fallo al cargar el evento de ejemplo", + "Custom example event was saved successfully" : "El evento de ejemplo personalizado se guardó exitosamente", + "Failed to delete the custom example event" : "Fallo al guardar el evento de ejemplo personalizado", + "Custom example event was deleted successfully" : "El evento de ejemplo personalizado se eliminó exitosamente", + "Import calendar event" : "Importar evento del calendario", + "Uploading a new event will overwrite the existing one." : "Cargar un evento nuevo sobrescribirá el existente. ", + "Upload event" : "Cargar evento", "Availability" : "Disponibilidad", "If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configura sus horas laborales, otras personas verán cuando está fuera de la oficina cuando agenden una reunión.", "Absence" : "Ausencia", - "Configure your next absence period." : "Configura el siguiente periodo en que estarás ausente", + "Configure your next absence period." : "Configure el siguiente periodo en que estará ausente", "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instale también la {calendarappstoreopen}app de Calendario{linkclose} o {calendardocopen}conecte su escritorio y móvil para sincronizar ↗{linkclose}.", "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Por favor, asegúrese de configurar correctamente {emailopen}el servidor web{linkclose}", "Calendar server" : "Servidor de calendario", @@ -303,6 +325,8 @@ "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", + "Example content" : "Contenido de ejemplo", + "Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "El contenido de ejemplo sirve para mostrar las características de Nextcloud. Se proporciona un contenido predeterminado con Nextcloud, y puede ser reemplazado por un contenido personalizado.", "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/pl.js b/apps/dav/l10n/pl.js index 3edcbb7447f..3c9929cc943 100644 --- a/apps/dav/l10n/pl.js +++ b/apps/dav/l10n/pl.js @@ -78,6 +78,11 @@ OC.L10N.register( "_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["Za jeden dzień, dnia %1$s, przez cały dzień","Za %n dni, dnia %1$s, przez cały dzień","Za %n dni, dnia %1$s, przez cały dzień","Za %n dni, dnia %1$s, przez cały dzień"], "_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["Za tydzień, dnia %1$s, przez cały dzień","Za %n tygodnie, dnia %1$s, przez cały dzień","Za %n tygodni, dnia %1$s, przez cały dzień","Za %n tygodni, dnia %1$s, przez cały dzień"], "_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["W ciągu miesiąca, dnia %1$s przez cały dzień","W ciągu %n miesięcy, dnia %1$s przez cały dzień","W ciągu %n miesięcy, dnia %1$s przez cały dzień","W ciągu %n miesięcy, dnia %1$s przez cały dzień"], + "_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["Za rok dnia %1$s przez cały dzień","Za %n lata dnia %1$s przez cały dzień","Za %n lat dnia %1$s przez cały dzień","Za %n lat dnia %1$s przez cały dzień"], + "_In a day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["Za dzień, dnia %1$s między %2$s - %3$s","Za %n dni dnia %1$s między %2$s - %3$s","Za %n dni dnia %1$s między %2$s - %3$s","Za %n dni dnia %1$s między %2$s - %3$s"], + "_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["Za tydzień dnia %1$s między %2$s - %3$s","Za %n tygodnie dnia %1$s między %2$s - %3$s","Za %n tygodni dnia %1$s między %2$s - %3$s","Za %n tygodni dnia %1$s między %2$s - %3$s"], + "_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["Za miesiąc dnia %1$s między %2$s - %3$s","Za %n miesięcy dnia %1$s między %2$s - %3$s","Za %n miesięcy dnia %1$s między %2$s - %3$s","Za %n miesięcy dnia %1$s między %2$s - %3$s"], + "_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["Za rok dnia %1$s między %2$s - %3$s","Za %n lata dnia %1$s między %2$s - %3$s","Za %n lat dnia %1$s między %2$s - %3$s","Za %n lat dnia %1$s między %2$s - %3$s"], "Could not generate when statement" : "Nie można wygenerować instrukcji when", "Every Day for the entire day" : "Codziennie przez cały dzień", "Every Day for the entire day until %1$s" : "Codziennie przez cały dzień do %1$s", @@ -88,15 +93,21 @@ OC.L10N.register( "Every %1$d Days between %2$s - %3$s until %4$s" : "Co %1$d dni, pomiędzy %2$s - %3$s aż do %4$s", "Could not generate event recurrence statement" : "Nie można wygenerować zestawienia powtórzeń zdarzenia", "Every Week on %1$s for the entire day" : "Każdego tygodnia w %1$s przez cały dzień", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Każdego %1$d miesiąca dnia %2$s między %3$s - %4$s do %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "Co rok w %1$s dnia %2$s przez cały dzień", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Co rok w %1$s dnia %2$s przez cały dzień do %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Co roku za %1$s dnia %2$s między %3$s - %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Co roku za %1$s dnia %2$s między %3$s - %4$s do %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "Co %1$d lat dnia %2$s o %3$s przez cały dzień", "In the past on %1$s" : "W przeszłości dnia %1$s", - "_In a minute on %1$s_::_In %n minutes on %1$s_" : ["Za minutę dnia %2$s","Za %1$n minuty dnia %2$s","Za %1$n minut dnia %2$s","Za %1$n minut dnia %2$s"], - "_In a hour on %1$s_::_In %n hours on %1$s_" : ["Za godzinę dnia %2$s","Za %1$n godziny dnia %2$s","Za %1$n godzin dnia %2$s","Za %1$n godzin dnia %2$s"], - "_In a day on %1$s_::_In %n days on %1$s_" : ["Za dzień, dnia %2$s","Za %1$n dni dnia %2$s","Za %1$n dni dnia %2$s","Za %1$n dni dnia %2$s"], - "_In a week on %1$s_::_In %n weeks on %1$s_" : ["Za tydzień dnia %2$s","Za %1$n tygodnie dnia %2$s","Za %1$n tygodni dnia %2$s","Za %1$n tygodni dnia %2$s"], - "_In a month on %1$s_::_In %n months on %1$s_" : ["Za miesiąc dnia %2$s","W ciągu %1$n miesięcy dnia %2$s","W ciągu %1$n miesięcy dnia %2$s","W ciągu %1$n miesięcy dnia %2$s"], - "_In a year on %1$s_::_In %n years on %1$s_" : ["Za rok dnia %2$s","Za %1$n lata dnia %2$s","Za %1$n lat dnia %2$s","Za %1$n lat dnia %2$s"], + "_In a minute on %1$s_::_In %n minutes on %1$s_" : ["Za minutę dnia %1$s","Za %n minut dnia %1$s","Za %n minut dnia %1$s","Za %n minut dnia %1$s"], + "_In a hour on %1$s_::_In %n hours on %1$s_" : ["Za godzinę dnia %1$s","Za %n godziny dnia %1$s","Za %n godzin dnia %1$s","Za %n godzin dnia %1$s"], + "_In a day on %1$s_::_In %n days on %1$s_" : ["Za dzień, dnia %1$s","Za %n dni dnia %1$s","Za %n dni dnia %1$s","Za %n dni dnia %1$s"], + "_In a week on %1$s_::_In %n weeks on %1$s_" : ["Za tydzień dnia %1$s","Za %n tygodnie dnia %1$s","Za %n tygodni dnia %1$s","Za %n tygodni dnia %1$s"], + "_In a month on %1$s_::_In %n months on %1$s_" : ["Za miesiąc dnia %1$s","W ciągu %n miesięcy dnia %1$s","W ciągu %n miesięcy dnia %1$s","W ciągu %n miesięcy dnia %1$s"], + "_In a year on %1$s_::_In %n years on %1$s_" : ["Za rok dnia %1$s","Za %n lat dnia %1$s","Za %n lat dnia %1$s","Za %n lat dnia %1$s"], "In the past on %1$s then on %2$s" : "W przeszłości dnia %1$s, a następnie %2$s", - "_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["Za minutę dnia %2$s, a następnie %3$s","Za %1$n minuty dnia %2$s, a następnie %3$s","Za %1$n minut dnia %2$s, a następnie %3$s","Za %1$n minut dnia %2$s, a następnie %3$s"], + "_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["Za minutę dnia %1$s, a następnie %2$s","Za %n minuty dnia %1$s, a następnie %2$s","Za %n minut dnia %1$s, a następnie %2$s","Za %n minut dnia %1$s, a następnie %2$s"], "Could not generate next recurrence statement" : "Nie można wygenerować następnej instrukcji powtarzania", "Cancelled: %1$s" : "Anulowane: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" zostało anulowane", diff --git a/apps/dav/l10n/pl.json b/apps/dav/l10n/pl.json index 8a35719cf92..4b2ffc40dc0 100644 --- a/apps/dav/l10n/pl.json +++ b/apps/dav/l10n/pl.json @@ -76,6 +76,11 @@ "_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["Za jeden dzień, dnia %1$s, przez cały dzień","Za %n dni, dnia %1$s, przez cały dzień","Za %n dni, dnia %1$s, przez cały dzień","Za %n dni, dnia %1$s, przez cały dzień"], "_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["Za tydzień, dnia %1$s, przez cały dzień","Za %n tygodnie, dnia %1$s, przez cały dzień","Za %n tygodni, dnia %1$s, przez cały dzień","Za %n tygodni, dnia %1$s, przez cały dzień"], "_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["W ciągu miesiąca, dnia %1$s przez cały dzień","W ciągu %n miesięcy, dnia %1$s przez cały dzień","W ciągu %n miesięcy, dnia %1$s przez cały dzień","W ciągu %n miesięcy, dnia %1$s przez cały dzień"], + "_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["Za rok dnia %1$s przez cały dzień","Za %n lata dnia %1$s przez cały dzień","Za %n lat dnia %1$s przez cały dzień","Za %n lat dnia %1$s przez cały dzień"], + "_In a day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["Za dzień, dnia %1$s między %2$s - %3$s","Za %n dni dnia %1$s między %2$s - %3$s","Za %n dni dnia %1$s między %2$s - %3$s","Za %n dni dnia %1$s między %2$s - %3$s"], + "_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["Za tydzień dnia %1$s między %2$s - %3$s","Za %n tygodnie dnia %1$s między %2$s - %3$s","Za %n tygodni dnia %1$s między %2$s - %3$s","Za %n tygodni dnia %1$s między %2$s - %3$s"], + "_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["Za miesiąc dnia %1$s między %2$s - %3$s","Za %n miesięcy dnia %1$s między %2$s - %3$s","Za %n miesięcy dnia %1$s między %2$s - %3$s","Za %n miesięcy dnia %1$s między %2$s - %3$s"], + "_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["Za rok dnia %1$s między %2$s - %3$s","Za %n lata dnia %1$s między %2$s - %3$s","Za %n lat dnia %1$s między %2$s - %3$s","Za %n lat dnia %1$s między %2$s - %3$s"], "Could not generate when statement" : "Nie można wygenerować instrukcji when", "Every Day for the entire day" : "Codziennie przez cały dzień", "Every Day for the entire day until %1$s" : "Codziennie przez cały dzień do %1$s", @@ -86,15 +91,21 @@ "Every %1$d Days between %2$s - %3$s until %4$s" : "Co %1$d dni, pomiędzy %2$s - %3$s aż do %4$s", "Could not generate event recurrence statement" : "Nie można wygenerować zestawienia powtórzeń zdarzenia", "Every Week on %1$s for the entire day" : "Każdego tygodnia w %1$s przez cały dzień", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Każdego %1$d miesiąca dnia %2$s między %3$s - %4$s do %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "Co rok w %1$s dnia %2$s przez cały dzień", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Co rok w %1$s dnia %2$s przez cały dzień do %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Co roku za %1$s dnia %2$s między %3$s - %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Co roku za %1$s dnia %2$s między %3$s - %4$s do %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "Co %1$d lat dnia %2$s o %3$s przez cały dzień", "In the past on %1$s" : "W przeszłości dnia %1$s", - "_In a minute on %1$s_::_In %n minutes on %1$s_" : ["Za minutę dnia %2$s","Za %1$n minuty dnia %2$s","Za %1$n minut dnia %2$s","Za %1$n minut dnia %2$s"], - "_In a hour on %1$s_::_In %n hours on %1$s_" : ["Za godzinę dnia %2$s","Za %1$n godziny dnia %2$s","Za %1$n godzin dnia %2$s","Za %1$n godzin dnia %2$s"], - "_In a day on %1$s_::_In %n days on %1$s_" : ["Za dzień, dnia %2$s","Za %1$n dni dnia %2$s","Za %1$n dni dnia %2$s","Za %1$n dni dnia %2$s"], - "_In a week on %1$s_::_In %n weeks on %1$s_" : ["Za tydzień dnia %2$s","Za %1$n tygodnie dnia %2$s","Za %1$n tygodni dnia %2$s","Za %1$n tygodni dnia %2$s"], - "_In a month on %1$s_::_In %n months on %1$s_" : ["Za miesiąc dnia %2$s","W ciągu %1$n miesięcy dnia %2$s","W ciągu %1$n miesięcy dnia %2$s","W ciągu %1$n miesięcy dnia %2$s"], - "_In a year on %1$s_::_In %n years on %1$s_" : ["Za rok dnia %2$s","Za %1$n lata dnia %2$s","Za %1$n lat dnia %2$s","Za %1$n lat dnia %2$s"], + "_In a minute on %1$s_::_In %n minutes on %1$s_" : ["Za minutę dnia %1$s","Za %n minut dnia %1$s","Za %n minut dnia %1$s","Za %n minut dnia %1$s"], + "_In a hour on %1$s_::_In %n hours on %1$s_" : ["Za godzinę dnia %1$s","Za %n godziny dnia %1$s","Za %n godzin dnia %1$s","Za %n godzin dnia %1$s"], + "_In a day on %1$s_::_In %n days on %1$s_" : ["Za dzień, dnia %1$s","Za %n dni dnia %1$s","Za %n dni dnia %1$s","Za %n dni dnia %1$s"], + "_In a week on %1$s_::_In %n weeks on %1$s_" : ["Za tydzień dnia %1$s","Za %n tygodnie dnia %1$s","Za %n tygodni dnia %1$s","Za %n tygodni dnia %1$s"], + "_In a month on %1$s_::_In %n months on %1$s_" : ["Za miesiąc dnia %1$s","W ciągu %n miesięcy dnia %1$s","W ciągu %n miesięcy dnia %1$s","W ciągu %n miesięcy dnia %1$s"], + "_In a year on %1$s_::_In %n years on %1$s_" : ["Za rok dnia %1$s","Za %n lat dnia %1$s","Za %n lat dnia %1$s","Za %n lat dnia %1$s"], "In the past on %1$s then on %2$s" : "W przeszłości dnia %1$s, a następnie %2$s", - "_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["Za minutę dnia %2$s, a następnie %3$s","Za %1$n minuty dnia %2$s, a następnie %3$s","Za %1$n minut dnia %2$s, a następnie %3$s","Za %1$n minut dnia %2$s, a następnie %3$s"], + "_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["Za minutę dnia %1$s, a następnie %2$s","Za %n minuty dnia %1$s, a następnie %2$s","Za %n minut dnia %1$s, a następnie %2$s","Za %n minut dnia %1$s, a następnie %2$s"], "Could not generate next recurrence statement" : "Nie można wygenerować następnej instrukcji powtarzania", "Cancelled: %1$s" : "Anulowane: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" zostało anulowane", diff --git a/apps/dav/l10n/uk.js b/apps/dav/l10n/uk.js index c8beb750ce2..3cc1b76d603 100644 --- a/apps/dav/l10n/uk.js +++ b/apps/dav/l10n/uk.js @@ -73,6 +73,19 @@ OC.L10N.register( "Where: %s" : "Місце: %s", "%1$s via %2$s" : "%1$s через %2$s", "In the past on %1$s for the entire day" : "Раніше у %1$s протягом цілого дня", + "_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["За хвилину на %1$s протягом усього дня","За %n хвилини на %1$s протягом усього дня","За %n хвилин на %1$s протягом усього дня","За %n хвилин на %1$s протягом усього дня"], + "_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["За годину на %1$s протягом усього дня","За %n години на %1$s протягом усього дня","За %n годин на %1$s протягом усього дня","За %n годин на %1$s протягом усього дня"], + "_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["За день на %1$s протягом усього дня","За %n дня на %1$s протягом усього дня","За %n днів на %1$s протягом усього дня","За %n днів на %1$s протягом усього дня"], + "_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["Через тиждень на %1$ за весь день","Через %n тижнів на %1$ на весь день","Через %n тижнів на %1$ на весь день","Через %n тижнів на %1$ на весь день"], + "_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["Через місяць на %1$ за весь день","За %n місяців на %1$ за весь день","За %n місяців на %1$ за весь день","За %n місяців на %1$ за весь день"], + "_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["Через рік на %1$ за весь день","За %n років на %1$ за весь день","За %n років на %1$ за весь день","За %n років на %1$ за весь день"], + "In the past on %1$s between %2$s - %3$s" : "У минулому на %1$ між %2$ - %3$", + "_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["За хвилину на %1$s між %2$s - %3$s","За %n хвилин на %1$s між %2$s - %3$s","За %n хвилин на %1$s між %2$s - %3$s","За %n хвилин на %1$s між %2$s - %3$s"], + "_In a hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["За годину з %1$s між %2$s - %3$s","За %n годин на %1$s між %2$s - %3$s","За %n годин на %1$s між %2$s - %3$s","За %n годин на %1$s між %2$s - %3$s"], + "_In a day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["За день на %1$s між %2$s - %3$s","За %n днів на %1$s між %2$s - %3$s","За %n днів на %1$s між %2$s - %3$s","За %n днів на %1$s між %2$s - %3$s"], + "_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["За тиждень на %1$ між %2$ - %3$","За %n тижнів на %1$s між %2$s - %3$s","За %n тижнів на %1$s між %2$s - %3$s","За %n тижнів на %1$s між %2$s - %3$s"], + "_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["За місяць на %1$ між %2$ - %3$","За %n місяців на %1$s між %2$s - %3$s","За %n місяців на %1$s між %2$s - %3$s","За %n місяців на %1$s між %2$s - %3$s"], + "_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["За рік на %1$s між %2$s - %3$s","У %n років на %1$s між %2$s - %3$s","У %n років на %1$s між %2$s - %3$s","У %n років на %1$s між %2$s - %3$s"], "Could not generate when statement" : "Не вдалося створити оператор \"коли\"", "Every Day for the entire day" : "Щодня впродовж усього дня", "Every Day for the entire day until %1$s" : "Щодня впродовж усього дня до %1$s", @@ -110,7 +123,26 @@ OC.L10N.register( "On specific dates for the entire day until %1$s" : "У визначені дати впродовж усього дня до %1$s", "On specific dates between %1$s - %2$s until %3$s" : "У визначені дати між %1$s - %2$s до %3$s", "In the past on %1$s" : "Раніше у %1$s", + "_In a minute on %1$s_::_In %n minutes on %1$s_" : ["За хвилину на %1$s","Через %n хвилин на %1$s","Через %n хвилин на %1$s","Через %n хвилин на %1$s"], + "_In a hour on %1$s_::_In %n hours on %1$s_" : ["Через годину на %1$s","Через %n годин на %1$s","Через %n годин на %1$s","Через %n годин на %1$s"], + "_In a day on %1$s_::_In %n days on %1$s_" : ["За день на %1$s","Через %n днів на %1$s","Через %n днів на %1$s","Через %n днів на %1$s"], + "_In a week on %1$s_::_In %n weeks on %1$s_" : ["Через тиждень на %1$s","Через %n тижнів на %1$s","Через %n тижнів на %1$s","Через %n тижнів на %1$s"], + "_In a month on %1$s_::_In %n months on %1$s_" : ["Через місяць на %1$s","За %n місяців на %1$s","За %n місяців на %1$s","За %n місяців на %1$s"], + "_In a year on %1$s_::_In %n years on %1$s_" : ["Через рік на %1$s","Через %n років на %1$s","Через %n років на %1$s","Через %n років на %1$s"], "In the past on %1$s then on %2$s" : "Раніше у %1$s, потім у %2$s", + "_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["Через хвилину на %1$, потім на %2$","Через %n хвилин на %1$s, потім на %2$s","Через %n хвилин на %1$s, потім на %2$s","Через %n хвилин на %1$s, потім на %2$s"], + "_In a hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["Через годину на %1$s, потім на %2$s","Через %n годин на %1$s, потім на %2$s","Через %n годин на %1$s, потім на %2$s","Через %n годин на %1$s, потім на %2$s"], + "_In a day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["Через день на %1$, потім на %2$","Через %n днів на %1$s, потім на %2$s","Через %n днів на %1$s, потім на %2$s","Через %n днів на %1$s, потім на %2$s"], + "_In a week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["Через тиждень на %1$, потім на %2$","Через %n тижнів на %1$, потім на %2$","Через %n тижнів на %1$, потім на %2$","Через %n тижнів на %1$, потім на %2$"], + "_In a month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["Через місяць на %1$, потім на %2$","Через %n місяців на %1$, потім на %2$","Через %n місяців на %1$, потім на %2$","Через %n місяців на %1$, потім на %2$"], + "_In a year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["Через рік на %1$, потім на %2$","Через %n років на %1$, потім на %2$","Через %n років на %1$, потім на %2$","Через %n років на %1$, потім на %2$"], + "In the past on %1$s then on %2$s and %3$s" : "У минулому на %1$, потім на %2$ і %3$", + "_In a minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["За хвилину на %1$, потім на %2$ і %3$","Через %n хвилин на %1$s, потім на %2$s і %3$s","Через %n хвилин на %1$s, потім на %2$s і %3$s","Через %n хвилин на %1$s, потім на %2$s і %3$s"], + "_In a hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["Через годину на %1$, потім на %2$ і %3$","Через %n годин на %1$, потім на %2$ і %3$","Через %n годин на %1$, потім на %2$ і %3$","Через %n годин на %1$, потім на %2$ і %3$"], + "_In a day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["Через день на %1$, потім на %2$ і %3$","Через %n днів на %1$, потім на %2$ і %3$","Через %n днів на %1$, потім на %2$ і %3$","Через %n днів на %1$, потім на %2$ і %3$"], + "_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Через тиждень на %1$, потім на %2$ і %3$","Через %n тижнів на %1$, потім на %2$ і %3$","Через %n тижнів на %1$, потім на %2$ і %3$","Через %n тижнів на %1$, потім на %2$ і %3$"], + "_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Через місяць на %1$, потім на %2$ і %3$","Через %n місяців на %1$, потім на %2$ і %3$","Через %n місяців на %1$, потім на %2$ і %3$","Через %n місяців на %1$, потім на %2$ і %3$"], + "_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Через рік на %1$, потім на %2$ і %3$","Через %n років на %1$, потім на %2$ і %3$","Через %n років на %1$, потім на %2$ і %3$","Через %n років на %1$, потім на %2$ і %3$"], "Could not generate next recurrence statement" : "Не вдалося створити оператор наступного повторення", "Cancelled: %1$s" : "Скасовано: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" скасовано", @@ -218,6 +250,8 @@ OC.L10N.register( "Completed on %s" : "Завершено %s", "Due on %s by %s" : "До %s з боку %s", "Due on %s" : "До %s", + "Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Ласкаво просимо до календаря Nextcloud!\n\nЦе зразок події — ознайомтеся з гнучкістю планування за допомогою календаря Nextcloud, вносячи будь-які зміни, які вам заманеться!\n\nЗа допомогою календаря Nextcloud ви можете:\n- Легко створювати, редагувати та керувати подіями.\n- Створювати кілька календарів і ділитися ними з колегами, друзями або родиною.\n- Перевіряти доступність і показувати іншим, коли ви зайняті.\n- Безперешкодно інтегруватися з додатками та пристроями через CalDAV.\n- Налаштовувати свій досвід: планувати повторювані події, налаштовувати сповіщення та інші параметри.", + "Example event - open me!" : "Приклад події - відкрий мене!", "System Address Book" : "Системна адресна книга", "The system address book contains contact information for all users in your instance." : "Системна адресна книга містить контактну інформацію для всіх користувачів вашого примірника хмари.", "Enable System Address Book" : "Увімкнути системну адресну книгу", @@ -261,9 +295,22 @@ OC.L10N.register( "Cancel" : "Скасувати", "Import" : "Імпорт", "Error while saving settings" : "Помилка під час збереження налаштувань", + "Contact reset successfully" : "Контакт успішно скинуто", + "Error while resetting contact" : "Помилка під час скидання контакту", + "Contact imported successfully" : "Контакт імпортовано успішно", + "Error while importing contact" : "Помилка під час імпортування контакту", "Import contact" : "Імпортувати контакт", "Reset to default" : "Скинути до типового", "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 призведе до видалення наявного контакту за замовчуванням і заміни його новим. Чи хочете ви продовжити?", + "Failed to save example event creation setting" : "Не вдалося зберегти приклад налаштування створення події", + "Failed to upload the example event" : "Не вдалося завантажити приклад події", + "Custom example event was saved successfully" : "Приклад користувацької події було успішно збережено", + "Failed to delete the custom example event" : "Не вдалося видалити приклад користувацького події", + "Custom example event was deleted successfully" : "Приклад користувацької події було успішно видалено", + "Import calendar event" : "Імпортувати подію календаря", + "Uploading a new event will overwrite the existing one." : "Завантаження нового заходу призведе до заміни наявного.", + "Upload event" : "Завантажити подію", "Availability" : "Доступність", "If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Будь ласка, налаштуйте ваші робочі години, щоб інші користувачі могли бачити, коли ви відсутні під час створення зустрічей.", "Absence" : "Відсутність", @@ -280,6 +327,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-сповіщення для подій", + "Example content" : "Приклад вмісту", + "Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Приклад вмісту служить для демонстрації функцій Nextcloud. Стандартний вміст постачається разом із Nextcloud і може бути замінений на власний вміст.", "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 8ac5f933cf6..ae2f2b370ec 100644 --- a/apps/dav/l10n/uk.json +++ b/apps/dav/l10n/uk.json @@ -71,6 +71,19 @@ "Where: %s" : "Місце: %s", "%1$s via %2$s" : "%1$s через %2$s", "In the past on %1$s for the entire day" : "Раніше у %1$s протягом цілого дня", + "_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["За хвилину на %1$s протягом усього дня","За %n хвилини на %1$s протягом усього дня","За %n хвилин на %1$s протягом усього дня","За %n хвилин на %1$s протягом усього дня"], + "_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["За годину на %1$s протягом усього дня","За %n години на %1$s протягом усього дня","За %n годин на %1$s протягом усього дня","За %n годин на %1$s протягом усього дня"], + "_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["За день на %1$s протягом усього дня","За %n дня на %1$s протягом усього дня","За %n днів на %1$s протягом усього дня","За %n днів на %1$s протягом усього дня"], + "_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["Через тиждень на %1$ за весь день","Через %n тижнів на %1$ на весь день","Через %n тижнів на %1$ на весь день","Через %n тижнів на %1$ на весь день"], + "_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["Через місяць на %1$ за весь день","За %n місяців на %1$ за весь день","За %n місяців на %1$ за весь день","За %n місяців на %1$ за весь день"], + "_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["Через рік на %1$ за весь день","За %n років на %1$ за весь день","За %n років на %1$ за весь день","За %n років на %1$ за весь день"], + "In the past on %1$s between %2$s - %3$s" : "У минулому на %1$ між %2$ - %3$", + "_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["За хвилину на %1$s між %2$s - %3$s","За %n хвилин на %1$s між %2$s - %3$s","За %n хвилин на %1$s між %2$s - %3$s","За %n хвилин на %1$s між %2$s - %3$s"], + "_In a hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["За годину з %1$s між %2$s - %3$s","За %n годин на %1$s між %2$s - %3$s","За %n годин на %1$s між %2$s - %3$s","За %n годин на %1$s між %2$s - %3$s"], + "_In a day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["За день на %1$s між %2$s - %3$s","За %n днів на %1$s між %2$s - %3$s","За %n днів на %1$s між %2$s - %3$s","За %n днів на %1$s між %2$s - %3$s"], + "_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["За тиждень на %1$ між %2$ - %3$","За %n тижнів на %1$s між %2$s - %3$s","За %n тижнів на %1$s між %2$s - %3$s","За %n тижнів на %1$s між %2$s - %3$s"], + "_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["За місяць на %1$ між %2$ - %3$","За %n місяців на %1$s між %2$s - %3$s","За %n місяців на %1$s між %2$s - %3$s","За %n місяців на %1$s між %2$s - %3$s"], + "_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["За рік на %1$s між %2$s - %3$s","У %n років на %1$s між %2$s - %3$s","У %n років на %1$s між %2$s - %3$s","У %n років на %1$s між %2$s - %3$s"], "Could not generate when statement" : "Не вдалося створити оператор \"коли\"", "Every Day for the entire day" : "Щодня впродовж усього дня", "Every Day for the entire day until %1$s" : "Щодня впродовж усього дня до %1$s", @@ -108,7 +121,26 @@ "On specific dates for the entire day until %1$s" : "У визначені дати впродовж усього дня до %1$s", "On specific dates between %1$s - %2$s until %3$s" : "У визначені дати між %1$s - %2$s до %3$s", "In the past on %1$s" : "Раніше у %1$s", + "_In a minute on %1$s_::_In %n minutes on %1$s_" : ["За хвилину на %1$s","Через %n хвилин на %1$s","Через %n хвилин на %1$s","Через %n хвилин на %1$s"], + "_In a hour on %1$s_::_In %n hours on %1$s_" : ["Через годину на %1$s","Через %n годин на %1$s","Через %n годин на %1$s","Через %n годин на %1$s"], + "_In a day on %1$s_::_In %n days on %1$s_" : ["За день на %1$s","Через %n днів на %1$s","Через %n днів на %1$s","Через %n днів на %1$s"], + "_In a week on %1$s_::_In %n weeks on %1$s_" : ["Через тиждень на %1$s","Через %n тижнів на %1$s","Через %n тижнів на %1$s","Через %n тижнів на %1$s"], + "_In a month on %1$s_::_In %n months on %1$s_" : ["Через місяць на %1$s","За %n місяців на %1$s","За %n місяців на %1$s","За %n місяців на %1$s"], + "_In a year on %1$s_::_In %n years on %1$s_" : ["Через рік на %1$s","Через %n років на %1$s","Через %n років на %1$s","Через %n років на %1$s"], "In the past on %1$s then on %2$s" : "Раніше у %1$s, потім у %2$s", + "_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["Через хвилину на %1$, потім на %2$","Через %n хвилин на %1$s, потім на %2$s","Через %n хвилин на %1$s, потім на %2$s","Через %n хвилин на %1$s, потім на %2$s"], + "_In a hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["Через годину на %1$s, потім на %2$s","Через %n годин на %1$s, потім на %2$s","Через %n годин на %1$s, потім на %2$s","Через %n годин на %1$s, потім на %2$s"], + "_In a day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["Через день на %1$, потім на %2$","Через %n днів на %1$s, потім на %2$s","Через %n днів на %1$s, потім на %2$s","Через %n днів на %1$s, потім на %2$s"], + "_In a week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["Через тиждень на %1$, потім на %2$","Через %n тижнів на %1$, потім на %2$","Через %n тижнів на %1$, потім на %2$","Через %n тижнів на %1$, потім на %2$"], + "_In a month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["Через місяць на %1$, потім на %2$","Через %n місяців на %1$, потім на %2$","Через %n місяців на %1$, потім на %2$","Через %n місяців на %1$, потім на %2$"], + "_In a year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["Через рік на %1$, потім на %2$","Через %n років на %1$, потім на %2$","Через %n років на %1$, потім на %2$","Через %n років на %1$, потім на %2$"], + "In the past on %1$s then on %2$s and %3$s" : "У минулому на %1$, потім на %2$ і %3$", + "_In a minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["За хвилину на %1$, потім на %2$ і %3$","Через %n хвилин на %1$s, потім на %2$s і %3$s","Через %n хвилин на %1$s, потім на %2$s і %3$s","Через %n хвилин на %1$s, потім на %2$s і %3$s"], + "_In a hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["Через годину на %1$, потім на %2$ і %3$","Через %n годин на %1$, потім на %2$ і %3$","Через %n годин на %1$, потім на %2$ і %3$","Через %n годин на %1$, потім на %2$ і %3$"], + "_In a day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["Через день на %1$, потім на %2$ і %3$","Через %n днів на %1$, потім на %2$ і %3$","Через %n днів на %1$, потім на %2$ і %3$","Через %n днів на %1$, потім на %2$ і %3$"], + "_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Через тиждень на %1$, потім на %2$ і %3$","Через %n тижнів на %1$, потім на %2$ і %3$","Через %n тижнів на %1$, потім на %2$ і %3$","Через %n тижнів на %1$, потім на %2$ і %3$"], + "_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Через місяць на %1$, потім на %2$ і %3$","Через %n місяців на %1$, потім на %2$ і %3$","Через %n місяців на %1$, потім на %2$ і %3$","Через %n місяців на %1$, потім на %2$ і %3$"], + "_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Через рік на %1$, потім на %2$ і %3$","Через %n років на %1$, потім на %2$ і %3$","Через %n років на %1$, потім на %2$ і %3$","Через %n років на %1$, потім на %2$ і %3$"], "Could not generate next recurrence statement" : "Не вдалося створити оператор наступного повторення", "Cancelled: %1$s" : "Скасовано: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" скасовано", @@ -216,6 +248,8 @@ "Completed on %s" : "Завершено %s", "Due on %s by %s" : "До %s з боку %s", "Due on %s" : "До %s", + "Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Ласкаво просимо до календаря Nextcloud!\n\nЦе зразок події — ознайомтеся з гнучкістю планування за допомогою календаря Nextcloud, вносячи будь-які зміни, які вам заманеться!\n\nЗа допомогою календаря Nextcloud ви можете:\n- Легко створювати, редагувати та керувати подіями.\n- Створювати кілька календарів і ділитися ними з колегами, друзями або родиною.\n- Перевіряти доступність і показувати іншим, коли ви зайняті.\n- Безперешкодно інтегруватися з додатками та пристроями через CalDAV.\n- Налаштовувати свій досвід: планувати повторювані події, налаштовувати сповіщення та інші параметри.", + "Example event - open me!" : "Приклад події - відкрий мене!", "System Address Book" : "Системна адресна книга", "The system address book contains contact information for all users in your instance." : "Системна адресна книга містить контактну інформацію для всіх користувачів вашого примірника хмари.", "Enable System Address Book" : "Увімкнути системну адресну книгу", @@ -259,9 +293,22 @@ "Cancel" : "Скасувати", "Import" : "Імпорт", "Error while saving settings" : "Помилка під час збереження налаштувань", + "Contact reset successfully" : "Контакт успішно скинуто", + "Error while resetting contact" : "Помилка під час скидання контакту", + "Contact imported successfully" : "Контакт імпортовано успішно", + "Error while importing contact" : "Помилка під час імпортування контакту", "Import contact" : "Імпортувати контакт", "Reset to default" : "Скинути до типового", "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 призведе до видалення наявного контакту за замовчуванням і заміни його новим. Чи хочете ви продовжити?", + "Failed to save example event creation setting" : "Не вдалося зберегти приклад налаштування створення події", + "Failed to upload the example event" : "Не вдалося завантажити приклад події", + "Custom example event was saved successfully" : "Приклад користувацької події було успішно збережено", + "Failed to delete the custom example event" : "Не вдалося видалити приклад користувацького події", + "Custom example event was deleted successfully" : "Приклад користувацької події було успішно видалено", + "Import calendar event" : "Імпортувати подію календаря", + "Uploading a new event will overwrite the existing one." : "Завантаження нового заходу призведе до заміни наявного.", + "Upload event" : "Завантажити подію", "Availability" : "Доступність", "If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Будь ласка, налаштуйте ваші робочі години, щоб інші користувачі могли бачити, коли ви відсутні під час створення зустрічей.", "Absence" : "Відсутність", @@ -278,6 +325,8 @@ "Send reminder notifications to calendar sharees as well" : "Також надсилайте нагадування користувачам вашого спільного календаря", "Reminders are always sent to organizers and attendees." : "Нагадування завжди надсилаються організаторам і учасникам.", "Enable notifications for events via push" : "Увімкнути push-сповіщення для подій", + "Example content" : "Приклад вмісту", + "Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Приклад вмісту служить для демонстрації функцій Nextcloud. Стандартний вміст постачається разом із Nextcloud і може бути замінений на власний вміст.", "There was an error updating your attendance status." : "Виникла помилка при оновленні вашого статусу учасника.", "Please contact the organizer directly." : "Будь-ласка повідомте організатора.", "Are you accepting the invitation?" : "Чи приймаєте ви запрошення?", diff --git a/apps/dav/lib/CalDAV/CalendarImpl.php b/apps/dav/lib/CalDAV/CalendarImpl.php index b79bf7ea2d0..5f912da732e 100644 --- a/apps/dav/lib/CalDAV/CalendarImpl.php +++ b/apps/dav/lib/CalDAV/CalendarImpl.php @@ -156,19 +156,15 @@ class CalendarImpl implements ICreateFromString, IHandleImipMessage, ICalendarIs } /** - * Create a new calendar event for this calendar - * by way of an ICS string - * - * @param string $name the file name - needs to contain the .ics ending - * @param string $calendarData a string containing a valid VEVENT ics - * * @throws CalendarException */ - public function createFromString(string $name, string $calendarData): void { - $server = new InvitationResponseServer(false); - + private function createFromStringInServer( + string $name, + string $calendarData, + \OCA\DAV\Connector\Sabre\Server $server, + ): void { /** @var CustomPrincipalPlugin $plugin */ - $plugin = $server->getServer()->getPlugin('auth'); + $plugin = $server->getPlugin('auth'); // we're working around the previous implementation // that only allowed the public system principal to be used // so set the custom principal here @@ -184,14 +180,14 @@ class CalendarImpl implements ICreateFromString, IHandleImipMessage, ICalendarIs // Force calendar change URI /** @var Schedule\Plugin $schedulingPlugin */ - $schedulingPlugin = $server->getServer()->getPlugin('caldav-schedule'); + $schedulingPlugin = $server->getPlugin('caldav-schedule'); $schedulingPlugin->setPathOfCalendarObjectChange($fullCalendarFilename); $stream = fopen('php://memory', 'rb+'); fwrite($stream, $calendarData); rewind($stream); try { - $server->getServer()->createFile($fullCalendarFilename, $stream); + $server->createFile($fullCalendarFilename, $stream); } catch (Conflict $e) { throw new CalendarException('Could not create new calendar event: ' . $e->getMessage(), 0, $e); } finally { @@ -199,6 +195,16 @@ class CalendarImpl implements ICreateFromString, IHandleImipMessage, ICalendarIs } } + public function createFromString(string $name, string $calendarData): void { + $server = new EmbeddedCalDavServer(false); + $this->createFromStringInServer($name, $calendarData, $server->getServer()); + } + + public function createFromStringMinimal(string $name, string $calendarData): void { + $server = new InvitationResponseServer(false); + $this->createFromStringInServer($name, $calendarData, $server->getServer()); + } + /** * @throws CalendarException */ diff --git a/apps/dav/lib/CalDAV/EmbeddedCalDavServer.php b/apps/dav/lib/CalDAV/EmbeddedCalDavServer.php new file mode 100644 index 00000000000..21d8c06fa99 --- /dev/null +++ b/apps/dav/lib/CalDAV/EmbeddedCalDavServer.php @@ -0,0 +1,118 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OCA\DAV\CalDAV; + +use OCA\DAV\AppInfo\PluginManager; +use OCA\DAV\CalDAV\Auth\CustomPrincipalPlugin; +use OCA\DAV\CalDAV\Auth\PublicPrincipalPlugin; +use OCA\DAV\CalDAV\Publishing\PublishPlugin; +use OCA\DAV\Connector\Sabre\AnonymousOptionsPlugin; +use OCA\DAV\Connector\Sabre\BlockLegacyClientPlugin; +use OCA\DAV\Connector\Sabre\CachingTree; +use OCA\DAV\Connector\Sabre\DavAclPlugin; +use OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin; +use OCA\DAV\Connector\Sabre\LockPlugin; +use OCA\DAV\Connector\Sabre\MaintenancePlugin; +use OCA\DAV\Events\SabrePluginAuthInitEvent; +use OCA\DAV\RootCollection; +use OCA\Theming\ThemingDefaults; +use OCP\App\IAppManager; +use OCP\EventDispatcher\IEventDispatcher; +use OCP\IAppConfig; +use OCP\IConfig; +use OCP\IURLGenerator; +use OCP\L10N\IFactory as IL10NFactory; +use OCP\Server; +use Psr\Log\LoggerInterface; + +class EmbeddedCalDavServer { + private readonly \OCA\DAV\Connector\Sabre\Server $server; + + public function __construct(bool $public = true) { + $baseUri = \OC::$WEBROOT . '/remote.php/dav/'; + $logger = Server::get(LoggerInterface::class); + $dispatcher = Server::get(IEventDispatcher::class); + $appConfig = Server::get(IAppConfig::class); + $l10nFactory = Server::get(IL10NFactory::class); + $l10n = $l10nFactory->get('dav'); + + $root = new RootCollection(); + $this->server = new \OCA\DAV\Connector\Sabre\Server(new CachingTree($root)); + + // Add maintenance plugin + $this->server->addPlugin(new MaintenancePlugin(Server::get(IConfig::class), $l10n)); + + // Set URL explicitly due to reverse-proxy situations + $this->server->httpRequest->setUrl($baseUri); + $this->server->setBaseUri($baseUri); + + $this->server->addPlugin(new BlockLegacyClientPlugin( + Server::get(IConfig::class), + Server::get(ThemingDefaults::class), + )); + $this->server->addPlugin(new AnonymousOptionsPlugin()); + + // allow custom principal uri option + if ($public) { + $this->server->addPlugin(new PublicPrincipalPlugin()); + } else { + $this->server->addPlugin(new CustomPrincipalPlugin()); + } + + // allow setup of additional auth backends + $event = new SabrePluginAuthInitEvent($this->server); + $dispatcher->dispatchTyped($event); + + $this->server->addPlugin(new ExceptionLoggerPlugin('webdav', $logger)); + $this->server->addPlugin(new LockPlugin()); + $this->server->addPlugin(new \Sabre\DAV\Sync\Plugin()); + + // acl + $acl = new DavAclPlugin(); + $acl->principalCollectionSet = [ + 'principals/users', 'principals/groups' + ]; + $this->server->addPlugin($acl); + + // calendar plugins + $this->server->addPlugin(new \OCA\DAV\CalDAV\Plugin()); + $this->server->addPlugin(new \Sabre\CalDAV\ICSExportPlugin()); + $this->server->addPlugin(new \OCA\DAV\CalDAV\Schedule\Plugin(Server::get(IConfig::class), Server::get(LoggerInterface::class), Server::get(DefaultCalendarValidator::class))); + $this->server->addPlugin(new \Sabre\CalDAV\Subscriptions\Plugin()); + $this->server->addPlugin(new \Sabre\CalDAV\Notifications\Plugin()); + //$this->server->addPlugin(new \OCA\DAV\DAV\Sharing\Plugin($authBackend, \OC::$server->getRequest())); + $this->server->addPlugin(new PublishPlugin( + Server::get(IConfig::class), + Server::get(IURLGenerator::class) + )); + if ($appConfig->getValueString('dav', 'sendInvitations', 'yes') === 'yes') { + $this->server->addPlugin(Server::get(\OCA\DAV\CalDAV\Schedule\IMipPlugin::class)); + } + + // wait with registering these until auth is handled and the filesystem is setup + $this->server->on('beforeMethod:*', function () use ($root): void { + // register plugins from apps + $pluginManager = new PluginManager( + \OC::$server, + Server::get(IAppManager::class) + ); + foreach ($pluginManager->getAppPlugins() as $appPlugin) { + $this->server->addPlugin($appPlugin); + } + foreach ($pluginManager->getAppCollections() as $appCollection) { + $root->addChild($appCollection); + } + }); + } + + public function getServer(): \OCA\DAV\Connector\Sabre\Server { + return $this->server; + } +} diff --git a/apps/dav/lib/CalDAV/EventReader.php b/apps/dav/lib/CalDAV/EventReader.php index b7dd2889956..ee2b8f33f9a 100644 --- a/apps/dav/lib/CalDAV/EventReader.php +++ b/apps/dav/lib/CalDAV/EventReader.php @@ -46,8 +46,8 @@ class EventReader { 7 => 'July', 8 => 'August', 9 => 'September', 10 => 'October', 11 => 'November', 12 => 'December' ]; protected array $relativePositionNamesMap = [ - 1 => 'First', 2 => 'Second', 3 => 'Third', 4 => 'Fourth', 5 => 'Fifty', - -1 => 'Last', -2 => 'Second Last', -3 => 'Third Last', -4 => 'Fourth Last', -5 => 'Fifty Last' + 1 => 'First', 2 => 'Second', 3 => 'Third', 4 => 'Fourth', 5 => 'Fifth', + -1 => 'Last', -2 => 'Second Last', -3 => 'Third Last', -4 => 'Fourth Last', -5 => 'Fifth Last' ]; /** diff --git a/apps/dav/lib/CalDAV/Status/StatusService.php b/apps/dav/lib/CalDAV/Status/StatusService.php index de19174de58..9ee0e9bf356 100644 --- a/apps/dav/lib/CalDAV/Status/StatusService.php +++ b/apps/dav/lib/CalDAV/Status/StatusService.php @@ -141,7 +141,7 @@ class StatusService { $this->logger->debug("Found $count applicable event(s), changing user status", ['user' => $userId]); $this->userStatusService->setUserStatus( $userId, - IUserStatus::AWAY, + IUserStatus::BUSY, IUserStatus::MESSAGE_CALENDAR_BUSY, true ); diff --git a/apps/dav/lib/CalDAV/UpcomingEventsService.php b/apps/dav/lib/CalDAV/UpcomingEventsService.php index 6614d937ff7..1a8aed5bd71 100644 --- a/apps/dav/lib/CalDAV/UpcomingEventsService.php +++ b/apps/dav/lib/CalDAV/UpcomingEventsService.php @@ -47,7 +47,7 @@ class UpcomingEventsService { $this->userManager->get($userId), ); - return array_map(function (array $event) use ($userId, $calendarAppEnabled) { + return array_filter(array_map(function (array $event) use ($userId, $calendarAppEnabled) { $calendarAppUrl = null; if ($calendarAppEnabled) { @@ -67,6 +67,10 @@ class UpcomingEventsService { $calendarAppUrl = $this->urlGenerator->linkToRouteAbsolute('calendar.view.indexdirect.edit', $arguments); } + if (isset($event['objects'][0]['STATUS']) && $event['objects'][0]['STATUS'][0] === 'CANCELLED') { + return false; + } + return new UpcomingEvent( $event['uri'], ($event['objects'][0]['RECURRENCE-ID'][0] ?? null)?->getTimeStamp(), @@ -76,7 +80,7 @@ class UpcomingEventsService { $event['objects'][0]['LOCATION'][0] ?? null, $calendarAppUrl, ); - }, $events); + }, $events)); } } diff --git a/apps/dav/lib/CardDAV/AddressBook.php b/apps/dav/lib/CardDAV/AddressBook.php index 67c0b7167fa..d2391880585 100644 --- a/apps/dav/lib/CardDAV/AddressBook.php +++ b/apps/dav/lib/CardDAV/AddressBook.php @@ -250,7 +250,12 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable, IMov } try { - return $this->carddavBackend->moveCard($sourceNode->getAddressbookId(), (int)$this->addressBookInfo['id'], $sourceNode->getUri(), $sourceNode->getOwner()); + return $this->carddavBackend->moveCard( + $sourceNode->getAddressbookId(), + $sourceNode->getUri(), + $this->getResourceId(), + $targetName, + ); } catch (Exception $e) { // Avoid injecting LoggerInterface everywhere Server::get(LoggerInterface::class)->error('Could not move calendar object: ' . $e->getMessage(), ['exception' => $e]); diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php index d1631bb762c..06bd8d8ee2c 100644 --- a/apps/dav/lib/CardDAV/CardDavBackend.php +++ b/apps/dav/lib/CardDAV/CardDavBackend.php @@ -473,7 +473,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { */ public function getCards($addressbookId) { $query = $this->db->getQueryBuilder(); - $query->select(['id', 'uri', 'lastmodified', 'etag', 'size', 'carddata', 'uid']) + $query->select(['id', 'addressbookid', 'uri', 'lastmodified', 'etag', 'size', 'carddata', 'uid']) ->from($this->dbCardsTable) ->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressbookId))); @@ -510,7 +510,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { */ public function getCard($addressBookId, $cardUri) { $query = $this->db->getQueryBuilder(); - $query->select(['id', 'uri', 'lastmodified', 'etag', 'size', 'carddata', 'uid']) + $query->select(['id', 'addressbookid', 'uri', 'lastmodified', 'etag', 'size', 'carddata', 'uid']) ->from($this->dbCardsTable) ->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId))) ->andWhere($query->expr()->eq('uri', $query->createNamedParameter($cardUri))) @@ -553,7 +553,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { $cards = []; $query = $this->db->getQueryBuilder(); - $query->select(['id', 'uri', 'lastmodified', 'etag', 'size', 'carddata', 'uid']) + $query->select(['id', 'addressbookid', 'uri', 'lastmodified', 'etag', 'size', 'carddata', 'uid']) ->from($this->dbCardsTable) ->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId))) ->andWhere($query->expr()->in('uri', $query->createParameter('uri'))); @@ -715,32 +715,33 @@ class CardDavBackend implements BackendInterface, SyncSupport { /** * @throws Exception */ - public function moveCard(int $sourceAddressBookId, int $targetAddressBookId, string $cardUri, string $oldPrincipalUri): bool { - return $this->atomic(function () use ($sourceAddressBookId, $targetAddressBookId, $cardUri, $oldPrincipalUri) { - $card = $this->getCard($sourceAddressBookId, $cardUri); + public function moveCard(int $sourceAddressBookId, string $sourceObjectUri, int $targetAddressBookId, string $tragetObjectUri): bool { + return $this->atomic(function () use ($sourceAddressBookId, $sourceObjectUri, $targetAddressBookId, $tragetObjectUri) { + $card = $this->getCard($sourceAddressBookId, $sourceObjectUri); if (empty($card)) { return false; } + $sourceObjectId = (int)$card['id']; $query = $this->db->getQueryBuilder(); $query->update('cards') ->set('addressbookid', $query->createNamedParameter($targetAddressBookId, IQueryBuilder::PARAM_INT)) - ->where($query->expr()->eq('uri', $query->createNamedParameter($cardUri, IQueryBuilder::PARAM_STR), IQueryBuilder::PARAM_STR)) + ->set('uri', $query->createNamedParameter($tragetObjectUri, IQueryBuilder::PARAM_STR)) + ->where($query->expr()->eq('uri', $query->createNamedParameter($sourceObjectUri, IQueryBuilder::PARAM_STR), IQueryBuilder::PARAM_STR)) ->andWhere($query->expr()->eq('addressbookid', $query->createNamedParameter($sourceAddressBookId, IQueryBuilder::PARAM_INT), IQueryBuilder::PARAM_INT)) ->executeStatement(); - $this->purgeProperties($sourceAddressBookId, (int)$card['id']); - $this->updateProperties($sourceAddressBookId, $card['uri'], $card['carddata']); + $this->purgeProperties($sourceAddressBookId, $sourceObjectId); + $this->updateProperties($targetAddressBookId, $tragetObjectUri, $card['carddata']); - $this->addChange($sourceAddressBookId, $card['uri'], 3); - $this->addChange($targetAddressBookId, $card['uri'], 1); + $this->addChange($sourceAddressBookId, $sourceObjectUri, 3); + $this->addChange($targetAddressBookId, $tragetObjectUri, 1); - $card = $this->getCard($targetAddressBookId, $cardUri); + $card = $this->getCard($targetAddressBookId, $tragetObjectUri); // Card wasn't found - possibly because it was deleted in the meantime by a different client if (empty($card)) { return false; } - $targetAddressBookRow = $this->getAddressBookById($targetAddressBookId); // the address book this card is being moved to does not exist any longer if (empty($targetAddressBookRow)) { diff --git a/apps/dav/lib/Command/GetAbsenceCommand.php b/apps/dav/lib/Command/GetAbsenceCommand.php new file mode 100644 index 00000000000..50d8df4ab38 --- /dev/null +++ b/apps/dav/lib/Command/GetAbsenceCommand.php @@ -0,0 +1,62 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ + +namespace OCA\DAV\Command; + +use OCA\DAV\Service\AbsenceService; +use OCP\IUserManager; +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class GetAbsenceCommand extends Command { + + public function __construct( + private IUserManager $userManager, + private AbsenceService $absenceService, + ) { + parent::__construct(); + } + + protected function configure(): void { + $this->setName('dav:absence:get'); + $this->addArgument( + 'user-id', + InputArgument::REQUIRED, + 'User ID of the affected account' + ); + } + + public function execute(InputInterface $input, OutputInterface $output): int { + $userId = $input->getArgument('user-id'); + + $user = $this->userManager->get($userId); + if ($user === null) { + $output->writeln('<error>User not found</error>'); + return 1; + } + + $absence = $this->absenceService->getAbsence($userId); + if ($absence === null) { + $output->writeln('<info>No absence set</info>'); + return 0; + } + + $output->writeln('<info>Start day:</info> ' . $absence->getFirstDay()); + $output->writeln('<info>End day:</info> ' . $absence->getLastDay()); + $output->writeln('<info>Short message:</info> ' . $absence->getStatus()); + $output->writeln('<info>Message:</info> ' . $absence->getMessage()); + $output->writeln('<info>Replacement user:</info> ' . ($absence->getReplacementUserId() ?? 'none')); + $output->writeln('<info>Replacement display name:</info> ' . ($absence->getReplacementUserDisplayName() ?? 'none')); + + return 0; + } + +} diff --git a/apps/dav/lib/Command/SetAbsenceCommand.php b/apps/dav/lib/Command/SetAbsenceCommand.php new file mode 100644 index 00000000000..bf91a163f95 --- /dev/null +++ b/apps/dav/lib/Command/SetAbsenceCommand.php @@ -0,0 +1,95 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ + +namespace OCA\DAV\Command; + +use OCA\DAV\Service\AbsenceService; +use OCP\IUserManager; +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class SetAbsenceCommand extends Command { + + public function __construct( + private IUserManager $userManager, + private AbsenceService $absenceService, + ) { + parent::__construct(); + } + + protected function configure(): void { + $this->setName('dav:absence:set'); + $this->addArgument( + 'user-id', + InputArgument::REQUIRED, + 'User ID of the affected account' + ); + $this->addArgument( + 'first-day', + InputArgument::REQUIRED, + 'Inclusive start day formatted as YYYY-MM-DD' + ); + $this->addArgument( + 'last-day', + InputArgument::REQUIRED, + 'Inclusive end day formatted as YYYY-MM-DD' + ); + $this->addArgument( + 'short-message', + InputArgument::REQUIRED, + 'Short message' + ); + $this->addArgument( + 'message', + InputArgument::REQUIRED, + 'Message' + ); + $this->addArgument( + 'replacement-user-id', + InputArgument::OPTIONAL, + 'Replacement user id' + ); + } + + public function execute(InputInterface $input, OutputInterface $output): int { + $userId = $input->getArgument('user-id'); + + $user = $this->userManager->get($userId); + if ($user === null) { + $output->writeln('<error>User not found</error>'); + return 1; + } + + $replacementUserId = $input->getArgument('replacement-user-id'); + if ($replacementUserId === null) { + $replacementUser = null; + } else { + $replacementUser = $this->userManager->get($replacementUserId); + if ($replacementUser === null) { + $output->writeln('<error>Replacement user not found</error>'); + return 2; + } + } + + $this->absenceService->createOrUpdateAbsence( + $user, + $input->getArgument('first-day'), + $input->getArgument('last-day'), + $input->getArgument('short-message'), + $input->getArgument('message'), + $replacementUser?->getUID(), + $replacementUser?->getDisplayName(), + ); + + return 0; + } + +} diff --git a/apps/dav/lib/Connector/Sabre/FilesReportPlugin.php b/apps/dav/lib/Connector/Sabre/FilesReportPlugin.php index 9e625ce3184..b59d1373af5 100644 --- a/apps/dav/lib/Connector/Sabre/FilesReportPlugin.php +++ b/apps/dav/lib/Connector/Sabre/FilesReportPlugin.php @@ -156,7 +156,7 @@ class FilesReportPlugin extends ServerPlugin { // to user backends. I.e. the final result may return more results than requested. $resultNodes = $this->processFilterRulesForFileNodes($filterRules, $limit ?? null, $offset ?? null); } catch (TagNotFoundException $e) { - throw new PreconditionFailed('Cannot filter by non-existing tag', 0, $e); + throw new PreconditionFailed('Cannot filter by non-existing tag'); } $results = []; diff --git a/apps/dav/lib/Connector/Sabre/Principal.php b/apps/dav/lib/Connector/Sabre/Principal.php index b61cabedf5f..d6ea9fd887d 100644 --- a/apps/dav/lib/Connector/Sabre/Principal.php +++ b/apps/dav/lib/Connector/Sabre/Principal.php @@ -186,6 +186,9 @@ class Principal implements BackendInterface { if ($this->hasGroups || $needGroups) { $userGroups = $this->groupManager->getUserGroups($user); foreach ($userGroups as $userGroup) { + if ($userGroup->hideFromCollaboration()) { + continue; + } $groups[] = 'principals/groups/' . urlencode($userGroup->getGID()); } } diff --git a/apps/dav/lib/Connector/Sabre/ServerFactory.php b/apps/dav/lib/Connector/Sabre/ServerFactory.php index 214412e1744..3749b506d16 100644 --- a/apps/dav/lib/Connector/Sabre/ServerFactory.php +++ b/apps/dav/lib/Connector/Sabre/ServerFactory.php @@ -184,7 +184,7 @@ class ServerFactory { !$this->config->getSystemValue('debug', false) ) ); - $server->addPlugin(new QuotaPlugin($view, true)); + $server->addPlugin(new QuotaPlugin($view)); $server->addPlugin(new ChecksumUpdatePlugin()); // Allow view-only plugin for webdav requests diff --git a/apps/dav/src/components/AbsenceForm.vue b/apps/dav/src/components/AbsenceForm.vue index 18c60ba4dd4..5350c04a565 100644 --- a/apps/dav/src/components/AbsenceForm.vue +++ b/apps/dav/src/components/AbsenceForm.vue @@ -219,7 +219,7 @@ export default { lastDay: formatDateAsYMD(this.lastDay), status: this.status, message: this.message, - replacementUserId: this.replacementUser?.user ?? null + replacementUserId: this.replacementUser?.user ?? null, }) showSuccess(this.$t('dav', 'Absence saved')) } catch (error) { diff --git a/apps/dav/src/components/ExampleContentDownloadButton.vue b/apps/dav/src/components/ExampleContentDownloadButton.vue index d3ee793eddc..6ee13e057bd 100644 --- a/apps/dav/src/components/ExampleContentDownloadButton.vue +++ b/apps/dav/src/components/ExampleContentDownloadButton.vue @@ -26,13 +26,13 @@ export default { name: 'ExampleContentDownloadButton', components: { NcButton, - IconDownload + IconDownload, }, props: { href: { type: String, required: true, - } + }, }, } </script> diff --git a/apps/dav/src/components/ExampleEventSettings.vue b/apps/dav/src/components/ExampleEventSettings.vue index c7a90b71a4a..5d2053def50 100644 --- a/apps/dav/src/components/ExampleEventSettings.vue +++ b/apps/dav/src/components/ExampleEventSettings.vue @@ -47,7 +47,7 @@ type="file" accept=".ics,text/calendar" class="import-event-modal__file-picker" - @change="selectFile" /> + @change="selectFile"> <div class="import-event-modal__buttons"> <NcButton :disabled="uploading || !selectedFile" type="primary" diff --git a/apps/dav/src/settings-example-content.js b/apps/dav/src/settings-example-content.js index ca0291ace4f..fdeba642a67 100644 --- a/apps/dav/src/settings-example-content.js +++ b/apps/dav/src/settings-example-content.js @@ -10,7 +10,7 @@ Vue.mixin({ methods: { t: translate, $t: translate, - } + }, }) const View = Vue.extend(ExampleContentSettingsSection); diff --git a/apps/dav/src/views/ExampleContentSettingsSection.vue b/apps/dav/src/views/ExampleContentSettingsSection.vue index 5e65a1ba3b4..3ee2d9e8648 100644 --- a/apps/dav/src/views/ExampleContentSettingsSection.vue +++ b/apps/dav/src/views/ExampleContentSettingsSection.vue @@ -33,6 +33,6 @@ export default { hasCalendarApp() { return loadState('dav', 'calendarEnabled') }, - } + }, } </script> diff --git a/apps/dav/tests/unit/CardDAV/AddressBookTest.php b/apps/dav/tests/unit/CardDAV/AddressBookTest.php index 85ccb016946..cf28b7b8a8e 100644 --- a/apps/dav/tests/unit/CardDAV/AddressBookTest.php +++ b/apps/dav/tests/unit/CardDAV/AddressBookTest.php @@ -34,7 +34,7 @@ class AddressBookTest extends TestCase { $card = new Card($backend, $addressBookInfo, ['id' => 5, 'carddata' => 'RANDOM VCF DATA', 'uri' => 'something', 'addressbookid' => 23]); $backend->expects($this->once())->method('moveCard') - ->with(23, 666, 'something', 'user1') + ->with(23, 'something', 666, 'new') ->willReturn(true); $addressBook->moveInto('new', 'old', $card); diff --git a/apps/encryption/lib/Session.php b/apps/encryption/lib/Session.php index e2731d9611d..df1e5d664ad 100644 --- a/apps/encryption/lib/Session.php +++ b/apps/encryption/lib/Session.php @@ -66,7 +66,7 @@ class Session { public function getPrivateKey() { $key = $this->session->get('privateKey'); if (is_null($key)) { - throw new PrivateKeyMissingException('please try to log-out and log-in again', 0); + throw new PrivateKeyMissingException('please try to log-out and log-in again'); } return $key; } diff --git a/apps/federatedfilesharing/l10n/et_EE.js b/apps/federatedfilesharing/l10n/et_EE.js index 62653174240..90b4749057a 100644 --- a/apps/federatedfilesharing/l10n/et_EE.js +++ b/apps/federatedfilesharing/l10n/et_EE.js @@ -33,7 +33,7 @@ OC.L10N.register( "Moreover, email addresses of users might be sent to that system in order to verify them." : "Lisaks võidakse sellesse serverisse saata verifitseerimise jaoks kasutajate e-posti aadresse.", "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", + "Unable to update federated files sharing config" : "Failide liitpilves jagamise seadistusi 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", @@ -44,16 +44,16 @@ OC.L10N.register( "Allow people to publish their data to a global and public address book" : "Luba inimestel avaldada oma andmeid globaalses ja avalikus aadressiraamatus", "Trusted federation" : "Usaldatud liitjagamine", "Automatically accept shares from trusted federated accounts and groups by default" : "Aktsepteeri vaikimisi usaldusväärsete liitkontode ja rühmade jagamisi automaatselt", - "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Jaga minuga läbi mu #Nextcloudi Liitjagamise Pilve ID, vaata {url}", - "Share with me through my #Nextcloud Federated Cloud ID" : "Jaga minuga läbi minu #Nextcloudi liitpilve ID", - "Share with me via Nextcloud" : "Jaga minuga läbi Nextcloudi", - "Cloud ID copied to the clipboard" : "Pilve ID kopeeriti lõikelauale", - "Copy to clipboard" : "Kopeeri lõikepuhvrisse", - "Clipboard not available. Please copy the cloud ID manually." : "Lõikelaud pole saadaval. Palun kopeeri pilve ID manuaalselt.", + "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Jaga minuga minu #Nextcloudi kasutajatunnuse abil liitpilves, vaata {url}", + "Share with me through my #Nextcloud Federated Cloud ID" : "Jaga minuga minu #Nextcloudi kasutajatunnuse abil liitpilves", + "Share with me via Nextcloud" : "Jaga minuga Nextcloudi vahendusel", + "Cloud ID copied to the clipboard" : "Kasutajatunnus liitpilves on kopeeritud lõikelauale", + "Copy to clipboard" : "Kopeeri lõikelauale", + "Clipboard not available. Please copy the cloud ID manually." : "Lõikelaud pole saadaval. Palun kopeeri kasutajatunnus liitpilves käsitsi.", "Copied!" : "Kopeeritud!", "Federated Cloud" : "Liitpilv", - "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" : "Saad jagada kõigiga, kes kasutavad Nextcloudi serverit või muid Open Cloud Meshi (OCM) ühilduvaid servereid ja teenuseid! Lihtsalt sisesta nende Liitjagamise Pilve ID jagamise dialoogi. See näeb välja nagu isiksus@cloud.example.com", - "Your Federated Cloud ID" : "Su Liitjagamise Pilve ID", + "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" : "Saad jagada kõigiga, kes kasutavad Nextcloudi serverit või muid Open Cloud Meshi (OCM) ühilduvaid servereid ja teenuseid! Lihtsalt sisesta nende kasutajatunnus liitpilves jagamise vaates. See näeb välja nagu isiksus@pilv.toreserver.com", + "Your Federated Cloud ID" : "Sinu kasutajatunnus liitpilves", "Share it so your friends can share files with you:" : "Jaga seda, et su sõbrad saaksid sinuga faile jagada:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (varasemalt Twitter)", diff --git a/apps/federatedfilesharing/l10n/et_EE.json b/apps/federatedfilesharing/l10n/et_EE.json index a253e5a4e05..1a5f218e018 100644 --- a/apps/federatedfilesharing/l10n/et_EE.json +++ b/apps/federatedfilesharing/l10n/et_EE.json @@ -31,7 +31,7 @@ "Moreover, email addresses of users might be sent to that system in order to verify them." : "Lisaks võidakse sellesse serverisse saata verifitseerimise jaoks kasutajate e-posti aadresse.", "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", + "Unable to update federated files sharing config" : "Failide liitpilves jagamise seadistusi 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", @@ -42,16 +42,16 @@ "Allow people to publish their data to a global and public address book" : "Luba inimestel avaldada oma andmeid globaalses ja avalikus aadressiraamatus", "Trusted federation" : "Usaldatud liitjagamine", "Automatically accept shares from trusted federated accounts and groups by default" : "Aktsepteeri vaikimisi usaldusväärsete liitkontode ja rühmade jagamisi automaatselt", - "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Jaga minuga läbi mu #Nextcloudi Liitjagamise Pilve ID, vaata {url}", - "Share with me through my #Nextcloud Federated Cloud ID" : "Jaga minuga läbi minu #Nextcloudi liitpilve ID", - "Share with me via Nextcloud" : "Jaga minuga läbi Nextcloudi", - "Cloud ID copied to the clipboard" : "Pilve ID kopeeriti lõikelauale", - "Copy to clipboard" : "Kopeeri lõikepuhvrisse", - "Clipboard not available. Please copy the cloud ID manually." : "Lõikelaud pole saadaval. Palun kopeeri pilve ID manuaalselt.", + "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Jaga minuga minu #Nextcloudi kasutajatunnuse abil liitpilves, vaata {url}", + "Share with me through my #Nextcloud Federated Cloud ID" : "Jaga minuga minu #Nextcloudi kasutajatunnuse abil liitpilves", + "Share with me via Nextcloud" : "Jaga minuga Nextcloudi vahendusel", + "Cloud ID copied to the clipboard" : "Kasutajatunnus liitpilves on kopeeritud lõikelauale", + "Copy to clipboard" : "Kopeeri lõikelauale", + "Clipboard not available. Please copy the cloud ID manually." : "Lõikelaud pole saadaval. Palun kopeeri kasutajatunnus liitpilves käsitsi.", "Copied!" : "Kopeeritud!", "Federated Cloud" : "Liitpilv", - "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" : "Saad jagada kõigiga, kes kasutavad Nextcloudi serverit või muid Open Cloud Meshi (OCM) ühilduvaid servereid ja teenuseid! Lihtsalt sisesta nende Liitjagamise Pilve ID jagamise dialoogi. See näeb välja nagu isiksus@cloud.example.com", - "Your Federated Cloud ID" : "Su Liitjagamise Pilve ID", + "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" : "Saad jagada kõigiga, kes kasutavad Nextcloudi serverit või muid Open Cloud Meshi (OCM) ühilduvaid servereid ja teenuseid! Lihtsalt sisesta nende kasutajatunnus liitpilves jagamise vaates. See näeb välja nagu isiksus@pilv.toreserver.com", + "Your Federated Cloud ID" : "Sinu kasutajatunnus liitpilves", "Share it so your friends can share files with you:" : "Jaga seda, et su sõbrad saaksid sinuga faile jagada:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (varasemalt Twitter)", diff --git a/apps/federatedfilesharing/l10n/uk.js b/apps/federatedfilesharing/l10n/uk.js index c3eaf2a63a4..8f5b708faaf 100644 --- a/apps/federatedfilesharing/l10n/uk.js +++ b/apps/federatedfilesharing/l10n/uk.js @@ -23,31 +23,49 @@ 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." : "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 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 до публічних спільних ресурсів)", "Allow people on this server to receive shares from other servers" : "Дозволити користувачам цієї хмари отримувати доступ до спільних ресурсів користувачів з інших серверів хмар", "Allow people on this server to send shares to groups on other servers" : "Дозволити користувачам цієї хмари надавати у спільний доступ ресурси групам користувачів інших хмарних серверів", "Allow people on this server to receive group shares from other servers" : "Дозволити користувачам цієї хмари отримувати доступ до спільних ресурсів груп користувачів інших хмарних серверів", + "The lookup server is only available for global scale." : "Сервер пошуку доступний тільки для глобального масштабу.", "Search global and public address book for people" : "Шукати користувачів у глобальній та публічній адресних книгах", "Allow people to publish their data to a global and public address book" : "Дозволити користувачам розміщувати власні дані у глобальній публічній адресній книзі", + "Trusted federation" : "Довірена федерація", + "Automatically accept shares from trusted federated accounts and groups by default" : "Автоматично приймати акції від надійних федеративних облікових записів та груп за замовчуванням", "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Поділіться зі мною через мій #Nextcloud Federated Cloud ID, див. {url}", "Share with me through my #Nextcloud Federated Cloud ID" : "Поділіться зі мною через мій #Nextcloud Federated Cloud ID", "Share with me via Nextcloud" : "Поділися зі мною через Nextcloud", "Cloud ID copied to the clipboard" : "Cloud ID скопійовано в буфер обміну", "Copy to clipboard" : "Копіювати до буферу обміну", + "Clipboard not available. Please copy the cloud ID manually." : "Буфер обміну недоступний. Будь ласка, скопіюйте ідентифікатор хмари вручну.", "Copied!" : "Скопійовано!", "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" : "Ви можете поділитися з будь-ким, хто використовує сервер Nextcloud або інші сервери та служби, сумісні з Open Cloud Mesh (OCM). Просто введіть їхній Federated Cloud ID у діалоговому вікні спільного доступу. Це виглядає як person@cloud.example.com", + "Your Federated Cloud ID" : "Ваш ідентифікатор Federated Cloud", "Share it so your friends can share files with you:" : "Поділіться ним, щоб ваші друзі могли ділитися з вами файлами:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (раніше відома як Twitter)", + "formerly Twitter" : "раніше відома як Twitter", + "Mastodon" : "Мастодонт", "Add to your website" : "Додати на ваш вебсайт", "HTML Code:" : "Код HTML:", "Cancel" : "Скасувати", "Add remote share" : "Додати віддалений каталог", "Remote share" : "Віддалений каталог", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Додати віддалений каталог {name} з {owner}@{remote}?", - "Remote share password" : "Пароль для віддаленого каталогу" + "Remote share password" : "Пароль для віддаленого каталогу", + "Incoming share could not be processed" : "Неможливо обробити вхідну частку" }, "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/federatedfilesharing/l10n/uk.json b/apps/federatedfilesharing/l10n/uk.json index ddbca33da82..8aa902eac07 100644 --- a/apps/federatedfilesharing/l10n/uk.json +++ b/apps/federatedfilesharing/l10n/uk.json @@ -21,31 +21,49 @@ "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." : "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 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 до публічних спільних ресурсів)", "Allow people on this server to receive shares from other servers" : "Дозволити користувачам цієї хмари отримувати доступ до спільних ресурсів користувачів з інших серверів хмар", "Allow people on this server to send shares to groups on other servers" : "Дозволити користувачам цієї хмари надавати у спільний доступ ресурси групам користувачів інших хмарних серверів", "Allow people on this server to receive group shares from other servers" : "Дозволити користувачам цієї хмари отримувати доступ до спільних ресурсів груп користувачів інших хмарних серверів", + "The lookup server is only available for global scale." : "Сервер пошуку доступний тільки для глобального масштабу.", "Search global and public address book for people" : "Шукати користувачів у глобальній та публічній адресних книгах", "Allow people to publish their data to a global and public address book" : "Дозволити користувачам розміщувати власні дані у глобальній публічній адресній книзі", + "Trusted federation" : "Довірена федерація", + "Automatically accept shares from trusted federated accounts and groups by default" : "Автоматично приймати акції від надійних федеративних облікових записів та груп за замовчуванням", "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Поділіться зі мною через мій #Nextcloud Federated Cloud ID, див. {url}", "Share with me through my #Nextcloud Federated Cloud ID" : "Поділіться зі мною через мій #Nextcloud Federated Cloud ID", "Share with me via Nextcloud" : "Поділися зі мною через Nextcloud", "Cloud ID copied to the clipboard" : "Cloud ID скопійовано в буфер обміну", "Copy to clipboard" : "Копіювати до буферу обміну", + "Clipboard not available. Please copy the cloud ID manually." : "Буфер обміну недоступний. Будь ласка, скопіюйте ідентифікатор хмари вручну.", "Copied!" : "Скопійовано!", "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" : "Ви можете поділитися з будь-ким, хто використовує сервер Nextcloud або інші сервери та служби, сумісні з Open Cloud Mesh (OCM). Просто введіть їхній Federated Cloud ID у діалоговому вікні спільного доступу. Це виглядає як person@cloud.example.com", + "Your Federated Cloud ID" : "Ваш ідентифікатор Federated Cloud", "Share it so your friends can share files with you:" : "Поділіться ним, щоб ваші друзі могли ділитися з вами файлами:", "Facebook" : "Facebook", "X (formerly Twitter)" : "X (раніше відома як Twitter)", + "formerly Twitter" : "раніше відома як Twitter", + "Mastodon" : "Мастодонт", "Add to your website" : "Додати на ваш вебсайт", "HTML Code:" : "Код HTML:", "Cancel" : "Скасувати", "Add remote share" : "Додати віддалений каталог", "Remote share" : "Віддалений каталог", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Додати віддалений каталог {name} з {owner}@{remote}?", - "Remote share password" : "Пароль для віддаленого каталогу" + "Remote share password" : "Пароль для віддаленого каталогу", + "Incoming share could not be processed" : "Неможливо обробити вхідну частку" },"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/federatedfilesharing/lib/FederatedShareProvider.php b/apps/federatedfilesharing/lib/FederatedShareProvider.php index e3731ac3ecf..8a2c12e0ac8 100644 --- a/apps/federatedfilesharing/lib/FederatedShareProvider.php +++ b/apps/federatedfilesharing/lib/FederatedShareProvider.php @@ -431,13 +431,7 @@ class FederatedShareProvider implements IShareProvider, IShareProviderSupportsAl return $share; } - /** - * Get all children of this share - * - * @param IShare $parent - * @return IShare[] - */ - public function getChildren(IShare $parent) { + public function getChildren(IShare $parent): array { $children = []; $qb = $this->dbConnection->getQueryBuilder(); diff --git a/apps/federatedfilesharing/src/external.js b/apps/federatedfilesharing/src/external.js index 68cc958b7b5..3581a24e95a 100644 --- a/apps/federatedfilesharing/src/external.js +++ b/apps/federatedfilesharing/src/external.js @@ -35,7 +35,8 @@ window.OCA.Sharing.showAddExternalDialog = function(share, passwordProtected, ca .replace(/\/$/, '') // remove trailing slash showRemoteShareDialog(name, owner, remote, passwordProtected) - .then((result, password) => callback(result, { ...share, password })) + // eslint-disable-next-line n/no-callback-literal + .then((password) => callback(true, { ...share, password })) // eslint-disable-next-line n/no-callback-literal .catch(() => callback(false, share)) } diff --git a/apps/federatedfilesharing/tests/AddressHandlerTest.php b/apps/federatedfilesharing/tests/AddressHandlerTest.php index 9b67e3e1848..279bf485145 100644 --- a/apps/federatedfilesharing/tests/AddressHandlerTest.php +++ b/apps/federatedfilesharing/tests/AddressHandlerTest.php @@ -34,11 +34,11 @@ class AddressHandlerTest extends \Test\TestCase { $this->contactsManager = $this->createMock(IManager::class); $this->cloudIdManager = new CloudIdManager( + $this->createMock(ICacheFactory::class), + $this->createMock(IEventDispatcher::class), $this->contactsManager, $this->urlGenerator, $this->createMock(IUserManager::class), - $this->createMock(ICacheFactory::class), - $this->createMock(IEventDispatcher::class) ); $this->addressHandler = new AddressHandler($this->urlGenerator, $this->il10n, $this->cloudIdManager); diff --git a/apps/federatedfilesharing/tests/Controller/MountPublicLinkControllerTest.php b/apps/federatedfilesharing/tests/Controller/MountPublicLinkControllerTest.php index cb890417d0b..e99b59e82b8 100644 --- a/apps/federatedfilesharing/tests/Controller/MountPublicLinkControllerTest.php +++ b/apps/federatedfilesharing/tests/Controller/MountPublicLinkControllerTest.php @@ -64,11 +64,11 @@ class MountPublicLinkControllerTest extends \Test\TestCase { $this->clientService = $this->createMock(IClientService::class); $this->contactsManager = $this->createMock(IContactsManager::class); $this->cloudIdManager = new CloudIdManager( + $this->createMock(ICacheFactory::class), + $this->createMock(IEventDispatcher::class), $this->contactsManager, $this->createMock(IURLGenerator::class), $this->userManager, - $this->createMock(ICacheFactory::class), - $this->createMock(IEventDispatcher::class) ); $this->controller = new MountPublicLinkController( diff --git a/apps/federatedfilesharing/tests/FederatedShareProviderTest.php b/apps/federatedfilesharing/tests/FederatedShareProviderTest.php index 4d6add962fe..7e97510af22 100644 --- a/apps/federatedfilesharing/tests/FederatedShareProviderTest.php +++ b/apps/federatedfilesharing/tests/FederatedShareProviderTest.php @@ -74,11 +74,11 @@ class FederatedShareProviderTest extends \Test\TestCase { $this->addressHandler = $this->createMock(AddressHandler::class); $this->contactsManager = $this->createMock(IContactsManager::class); $this->cloudIdManager = new CloudIdManager( + $this->createMock(ICacheFactory::class), + $this->createMock(IEventDispatcher::class), $this->contactsManager, $this->createMock(IURLGenerator::class), $this->userManager, - $this->createMock(ICacheFactory::class), - $this->createMock(IEventDispatcher::class) ); $this->gsConfig = $this->createMock(\OCP\GlobalScale\IConfig::class); diff --git a/apps/federation/l10n/es.js b/apps/federation/l10n/es.js index 35faca370f3..83e1acb38f8 100644 --- a/apps/federation/l10n/es.js +++ b/apps/federation/l10n/es.js @@ -11,9 +11,9 @@ OC.L10N.register( "Federation" : "Federación", "Federation allows you to connect with other trusted servers to exchange the account directory." : "La federación le permite conectarse con otros servidores de confianza para intercambiar el directorio de usuarios.", "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." : "La Federación le permite conectarse con otros servidores de confianza para intercambiar el directorio de usuarios. Por ejemplo, esto se utilizará para auto-completar a los usuarios externos para el intercambio federado.", - "External documentation for Federated Cloud Sharing" : "Documentación externa sobre Compartir con Nube Federada", + "External documentation for Federated Cloud Sharing" : "Documentación externa para Compartir con Nube Federada", "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." : "La Federación le permite conectarse con otros servidores de confianza para intercambiar el directorio de usuarios. Por ejemplo, esto se utilizará para auto-completar a los usuarios externos para el intercambio federado. No es necesario añadir un servidor como servidor de confianza para crear una recurso compartido federado.", - "Each server must validate the other. This process may require a few cron cycles." : "Cada servidor debe validar al otro. Este proceso puede necesitar varios ciclos de cron.", + "Each server must validate the other. This process may require a few cron cycles." : "Cada servidor debe validar al otro. Este proceso puede necesitar algunos ciclos de cron.", "+ Add trusted server" : "+ Añadir servidor de confianza", "Trusted server" : "Servidor de confianza", "Add" : "Añadir" diff --git a/apps/federation/l10n/es.json b/apps/federation/l10n/es.json index f5aea9ed58b..3c07677f806 100644 --- a/apps/federation/l10n/es.json +++ b/apps/federation/l10n/es.json @@ -9,9 +9,9 @@ "Federation" : "Federación", "Federation allows you to connect with other trusted servers to exchange the account directory." : "La federación le permite conectarse con otros servidores de confianza para intercambiar el directorio de usuarios.", "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." : "La Federación le permite conectarse con otros servidores de confianza para intercambiar el directorio de usuarios. Por ejemplo, esto se utilizará para auto-completar a los usuarios externos para el intercambio federado.", - "External documentation for Federated Cloud Sharing" : "Documentación externa sobre Compartir con Nube Federada", + "External documentation for Federated Cloud Sharing" : "Documentación externa para Compartir con Nube Federada", "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." : "La Federación le permite conectarse con otros servidores de confianza para intercambiar el directorio de usuarios. Por ejemplo, esto se utilizará para auto-completar a los usuarios externos para el intercambio federado. No es necesario añadir un servidor como servidor de confianza para crear una recurso compartido federado.", - "Each server must validate the other. This process may require a few cron cycles." : "Cada servidor debe validar al otro. Este proceso puede necesitar varios ciclos de cron.", + "Each server must validate the other. This process may require a few cron cycles." : "Cada servidor debe validar al otro. Este proceso puede necesitar algunos ciclos de cron.", "+ Add trusted server" : "+ Añadir servidor de confianza", "Trusted server" : "Servidor de confianza", "Add" : "Añadir" diff --git a/apps/federation/l10n/uk.js b/apps/federation/l10n/uk.js index 0804dc97a15..adcd2ee732b 100644 --- a/apps/federation/l10n/uk.js +++ b/apps/federation/l10n/uk.js @@ -2,6 +2,8 @@ OC.L10N.register( "federation", { "Added to the list of trusted servers" : "Сервер додано до списку довірених серверів", + "No server found with ID: %s" : "Не знайдено сервер з ідентифікатором: %s", + "Could not remove server" : "Не вдалося видалити сервер", "Server is already in the list of trusted servers." : "Сервер вже знаходиться в переліку довірених серверів", "No server to federate with found" : "Не знайдено жодного сервера для об'єднання", "Could not add server" : "Не вдалося додати сервер", diff --git a/apps/federation/l10n/uk.json b/apps/federation/l10n/uk.json index 56b17097d4b..97e4915bdf7 100644 --- a/apps/federation/l10n/uk.json +++ b/apps/federation/l10n/uk.json @@ -1,5 +1,7 @@ { "translations": { "Added to the list of trusted servers" : "Сервер додано до списку довірених серверів", + "No server found with ID: %s" : "Не знайдено сервер з ідентифікатором: %s", + "Could not remove server" : "Не вдалося видалити сервер", "Server is already in the list of trusted servers." : "Сервер вже знаходиться в переліку довірених серверів", "No server to federate with found" : "Не знайдено жодного сервера для об'єднання", "Could not add server" : "Не вдалося додати сервер", diff --git a/apps/files/l10n/ar.js b/apps/files/l10n/ar.js index 6d2710cef33..ff9d5abcee4 100644 --- a/apps/files/l10n/ar.js +++ b/apps/files/l10n/ar.js @@ -189,16 +189,14 @@ OC.L10N.register( "Personal files" : "ملفات شخصية", "Sort favorites first" : "فرز المفضلة أولا", "Sort folders before files" : "فرز المجلدات قبل الملفات", + "Enable folder tree" : "تمكين شجرة المجلدات", "Show hidden files" : "عرض الملفات المخفية", "Show file type column" : "عرض عمود نوع الملف", "Crop image previews" : "اقتصاص صورة العروض", - "Enable folder tree" : "تمكين شجرة المجلدات", "Additional settings" : "الإعدادات المتقدمة", "WebDAV" : "WebDAV", "WebDAV URL" : "عنوان URL لـ WebDAV", "Copy to clipboard" : "نسخ الرابط", - "Use this address to access your Files via WebDAV" : "استخدم هذا العنوان للوصول للملفات عبر WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "إذا كنت قد فعّلت خاصية \"التحقق ثنائي العوامل من الهوية 2FA\"، يجب عليك تجديد كلمة مرور التطبيق بالضغط هنا.", "Warnings" : "تحذيرات", "Prevent warning dialogs from open or reenable them." : "منع نوافذ التحذير من الفتح أو إعادة تمكينها.", "Show a warning dialog when changing a file extension." : "أظهِر نافذة التحذير عندما يتم تغيير امتداد الملف.", @@ -351,7 +349,6 @@ OC.L10N.register( "No favorites yet" : "ليس لديك ملفات مفضلة", "Files and folders you mark as favorite will show up here" : "الملفات والمجلدات التي حددتها كمفضلة سوف تظهر هنا ", "List of your files and folders." : "قائمة بملفاتك و مجلداتك", - "All folders" : "كل المجلدات", "List of your files and folders that are not shared." : "قائمة بالملفات و المجلدات التي لم تتم مشاركتها.", "No personal files found" : "لا توجد أي ملفات شخصية", "Files that are not shared will show up here." : "الملفات التي لم تتم مشاركتها يتم عرضها هنا", @@ -445,11 +442,14 @@ OC.L10N.register( "Submitting fields…" : "إرسال الحقول...", "Filter filenames…" : "تصفية باسم الملف...", "Enable the grid view" : "تمكين العرض الشبكي", + "Use this address to access your Files via WebDAV" : "استخدم هذا العنوان للوصول للملفات عبر WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "إذا كنت قد فعّلت خاصية \"التحقق ثنائي العوامل من الهوية 2FA\"، يجب عليك تجديد كلمة مرور التطبيق بالضغط هنا.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} مجلد","{folderCount} مجلد","{folderCount} مجلد","{folderCount} مجلدات","{folderCount} مجلد","{folderCount} مجلد"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} ملف","{fileCount} ملف","{fileCount} ملف","{fileCount} ملفات","{fileCount} ملف","{fileCount} ملف"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 ملف و {folderCount} مجلد","1 ملف و {folderCount} مجلد","1 ملف و {folderCount} مجلد","1 ملف و{folderCount} مجلدات","1 ملف و {folderCount} مجلد","1 ملف و {folderCount} مجلد"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} ملف و 1 مجلد","{fileCount} ملف و 1 مجلد","{fileCount} ملف و 1 مجلد","{fileCount} ملفات و 1 مجلد ","{fileCount} ملف و 1 مجلد","{fileCount} ملف و 1 مجلد"], "{fileCount} files and {folderCount} folders" : "{fileCount} ملف و {folderCount} مجلد", + "All folders" : "كل المجلدات", "Personal Files" : "ملفات شخصية", "Text file" : "ملف نصي", "New text file.txt" : "ملف نصي جديد fille.txt", diff --git a/apps/files/l10n/ar.json b/apps/files/l10n/ar.json index 98a56a6c276..b4dbfca1d3d 100644 --- a/apps/files/l10n/ar.json +++ b/apps/files/l10n/ar.json @@ -187,16 +187,14 @@ "Personal files" : "ملفات شخصية", "Sort favorites first" : "فرز المفضلة أولا", "Sort folders before files" : "فرز المجلدات قبل الملفات", + "Enable folder tree" : "تمكين شجرة المجلدات", "Show hidden files" : "عرض الملفات المخفية", "Show file type column" : "عرض عمود نوع الملف", "Crop image previews" : "اقتصاص صورة العروض", - "Enable folder tree" : "تمكين شجرة المجلدات", "Additional settings" : "الإعدادات المتقدمة", "WebDAV" : "WebDAV", "WebDAV URL" : "عنوان URL لـ WebDAV", "Copy to clipboard" : "نسخ الرابط", - "Use this address to access your Files via WebDAV" : "استخدم هذا العنوان للوصول للملفات عبر WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "إذا كنت قد فعّلت خاصية \"التحقق ثنائي العوامل من الهوية 2FA\"، يجب عليك تجديد كلمة مرور التطبيق بالضغط هنا.", "Warnings" : "تحذيرات", "Prevent warning dialogs from open or reenable them." : "منع نوافذ التحذير من الفتح أو إعادة تمكينها.", "Show a warning dialog when changing a file extension." : "أظهِر نافذة التحذير عندما يتم تغيير امتداد الملف.", @@ -349,7 +347,6 @@ "No favorites yet" : "ليس لديك ملفات مفضلة", "Files and folders you mark as favorite will show up here" : "الملفات والمجلدات التي حددتها كمفضلة سوف تظهر هنا ", "List of your files and folders." : "قائمة بملفاتك و مجلداتك", - "All folders" : "كل المجلدات", "List of your files and folders that are not shared." : "قائمة بالملفات و المجلدات التي لم تتم مشاركتها.", "No personal files found" : "لا توجد أي ملفات شخصية", "Files that are not shared will show up here." : "الملفات التي لم تتم مشاركتها يتم عرضها هنا", @@ -443,11 +440,14 @@ "Submitting fields…" : "إرسال الحقول...", "Filter filenames…" : "تصفية باسم الملف...", "Enable the grid view" : "تمكين العرض الشبكي", + "Use this address to access your Files via WebDAV" : "استخدم هذا العنوان للوصول للملفات عبر WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "إذا كنت قد فعّلت خاصية \"التحقق ثنائي العوامل من الهوية 2FA\"، يجب عليك تجديد كلمة مرور التطبيق بالضغط هنا.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} مجلد","{folderCount} مجلد","{folderCount} مجلد","{folderCount} مجلدات","{folderCount} مجلد","{folderCount} مجلد"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} ملف","{fileCount} ملف","{fileCount} ملف","{fileCount} ملفات","{fileCount} ملف","{fileCount} ملف"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 ملف و {folderCount} مجلد","1 ملف و {folderCount} مجلد","1 ملف و {folderCount} مجلد","1 ملف و{folderCount} مجلدات","1 ملف و {folderCount} مجلد","1 ملف و {folderCount} مجلد"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} ملف و 1 مجلد","{fileCount} ملف و 1 مجلد","{fileCount} ملف و 1 مجلد","{fileCount} ملفات و 1 مجلد ","{fileCount} ملف و 1 مجلد","{fileCount} ملف و 1 مجلد"], "{fileCount} files and {folderCount} folders" : "{fileCount} ملف و {folderCount} مجلد", + "All folders" : "كل المجلدات", "Personal Files" : "ملفات شخصية", "Text file" : "ملف نصي", "New text file.txt" : "ملف نصي جديد fille.txt", diff --git a/apps/files/l10n/ast.js b/apps/files/l10n/ast.js index 1fb48af6eb2..ec1d5efcb4b 100644 --- a/apps/files/l10n/ast.js +++ b/apps/files/l10n/ast.js @@ -148,8 +148,6 @@ OC.L10N.register( "WebDAV" : "WebDAV", "WebDAV URL" : "URL de WebDAV", "Copy to clipboard" : "Copiar nel cartafueyu", - "Use this address to access your Files via WebDAV" : "Usa esta direición p'acceder a los ficheros per WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si tienes activada l'autenticación en dos pasos, tienes de crear y usar una contraseña p'aplicaciones nueva calcando equí.", "Keyboard shortcuts" : "Atayos del tecláu", "Selection" : "Seleición", "Navigation" : "Navegación", @@ -242,7 +240,6 @@ OC.L10N.register( "No favorites yet" : "Entá nun hai nengún elementu favoritu", "Files and folders you mark as favorite will show up here" : "Equí apaecen los ficheros y carpetes que metas en Favoritos", "List of your files and folders." : "Una llista de los ficheros y les carpetes de to.", - "All folders" : "Toles carpetes", "List of your files and folders that are not shared." : "Una llista de ficheros y carpetes que nun se compartieron.", "No personal files found" : "Nun s'atopó nengún ficheru personal", "Files that are not shared will show up here." : "Equí apaecen los ficheros que nun se compartan.", @@ -331,11 +328,14 @@ OC.L10N.register( "An error occurred while trying to update the tags" : "Prodúxose un error al tentar d'anovar les etiquetes", "Upload (max. %s)" : "Xubir (%s como máximu)", "Enable the grid view" : "Activar la vista de rexáu", + "Use this address to access your Files via WebDAV" : "Usa esta direición p'acceder a los ficheros per WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si tienes activada l'autenticación en dos pasos, tienes de crear y usar una contraseña p'aplicaciones nueva calcando equí.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} carpeta","{folderCount} carpetes"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} ficheru","{fileCount} ficheros"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 ficheru y {folderCount} carpeta","1 ficheru y {folderCount} carpetes"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} ficheru y 1 carpeta","{fileCount} ficheros y 1 carpeta"], "{fileCount} files and {folderCount} folders" : "{fileCount} ficheros y {folderCount} carpetes", + "All folders" : "Toles carpetes", "Personal Files" : "Ficheros personales", "Text file" : "Ficheru de testu", "New text file.txt" : "ficheru_nuevu.txt" diff --git a/apps/files/l10n/ast.json b/apps/files/l10n/ast.json index 92f4678e29e..26e52e6dabb 100644 --- a/apps/files/l10n/ast.json +++ b/apps/files/l10n/ast.json @@ -146,8 +146,6 @@ "WebDAV" : "WebDAV", "WebDAV URL" : "URL de WebDAV", "Copy to clipboard" : "Copiar nel cartafueyu", - "Use this address to access your Files via WebDAV" : "Usa esta direición p'acceder a los ficheros per WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si tienes activada l'autenticación en dos pasos, tienes de crear y usar una contraseña p'aplicaciones nueva calcando equí.", "Keyboard shortcuts" : "Atayos del tecláu", "Selection" : "Seleición", "Navigation" : "Navegación", @@ -240,7 +238,6 @@ "No favorites yet" : "Entá nun hai nengún elementu favoritu", "Files and folders you mark as favorite will show up here" : "Equí apaecen los ficheros y carpetes que metas en Favoritos", "List of your files and folders." : "Una llista de los ficheros y les carpetes de to.", - "All folders" : "Toles carpetes", "List of your files and folders that are not shared." : "Una llista de ficheros y carpetes que nun se compartieron.", "No personal files found" : "Nun s'atopó nengún ficheru personal", "Files that are not shared will show up here." : "Equí apaecen los ficheros que nun se compartan.", @@ -329,11 +326,14 @@ "An error occurred while trying to update the tags" : "Prodúxose un error al tentar d'anovar les etiquetes", "Upload (max. %s)" : "Xubir (%s como máximu)", "Enable the grid view" : "Activar la vista de rexáu", + "Use this address to access your Files via WebDAV" : "Usa esta direición p'acceder a los ficheros per WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si tienes activada l'autenticación en dos pasos, tienes de crear y usar una contraseña p'aplicaciones nueva calcando equí.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} carpeta","{folderCount} carpetes"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} ficheru","{fileCount} ficheros"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 ficheru y {folderCount} carpeta","1 ficheru y {folderCount} carpetes"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} ficheru y 1 carpeta","{fileCount} ficheros y 1 carpeta"], "{fileCount} files and {folderCount} folders" : "{fileCount} ficheros y {folderCount} carpetes", + "All folders" : "Toles carpetes", "Personal Files" : "Ficheros personales", "Text file" : "Ficheru de testu", "New text file.txt" : "ficheru_nuevu.txt" diff --git a/apps/files/l10n/be.js b/apps/files/l10n/be.js new file mode 100644 index 00000000000..95faaefc29b --- /dev/null +++ b/apps/files/l10n/be.js @@ -0,0 +1,245 @@ +OC.L10N.register( + "files", + { + "Added to favorites" : "Дададзены ў абранае", + "Removed from favorites" : "Выдалены з абранага", + "You added {file} to your favorites" : "Вы дадалі {file} у абранае", + "You removed {file} from your favorites" : "Вы выдалілі {file} з абранага", + "Favorites" : "Абранае", + "File changes" : "Змены ў файлах", + "Created by {user}" : "Створаны карыстальнікам {user}", + "Changed by {user}" : "Зменены карыстальнікам {user}", + "Deleted by {user}" : "Выдалены карыстальнікам {user}", + "Restored by {user}" : "Адноўлены карыстальнікам {user}", + "Renamed by {user}" : "Перайменаваны карыстальнікам {user}", + "Moved by {user}" : "Перамешчаны карыстальнікам {user}", + "\"remote account\"" : "\"аддалены ўліковы запіс\"", + "You created {file}" : "Вы стварылі {file}", + "You created an encrypted file in {file}" : "Вы стварылі зашыфраваны файл у {file}", + "{user} created {file}" : "{user} стварыў(-ла) {file}", + "{user} created an encrypted file in {file}" : "{user} стварыў(-ла) зашыфраваны файл у {file}", + "You changed {file}" : "Вы змянілі {file}", + "You changed an encrypted file in {file}" : "Вы змянілі зашыфраваны файл у {file}", + "{user} changed {file}" : "{user} змяніў(-ла) {file}", + "{user} changed an encrypted file in {file}" : "{user} змяніў(-ла) зашыфраваны файл у {file}", + "You deleted {file}" : "Вы выдалілі {file}", + "You deleted an encrypted file in {file}" : "Вы выдалілі зашыфраваны файл у {file}", + "{user} deleted {file}" : "{user} выдаліў(-ла) {file}", + "{user} deleted an encrypted file in {file}" : "{user} выдаліў(-ла) зашыфраваны файл у {file}", + "You restored {file}" : "Вы аднавілі {file}", + "{user} restored {file}" : "{user} аднавіў(-ла) {file}", + "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "Вы перайменавалі {oldfile} (схаваны) у {newfile} (схаваны)", + "You renamed {oldfile} (hidden) to {newfile}" : "Вы перайменавалі {oldfile} (схаваны) у {newfile}", + "You renamed {oldfile} to {newfile} (hidden)" : "Вы перайменавалі {oldfile} у {newfile} (схаваны)", + "You renamed {oldfile} to {newfile}" : "Вы перайменавалі {oldfile} у {newfile}", + "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user} перайменаваў(-ла) {oldfile} (схаваны) у {newfile} (схаваны)", + "{user} renamed {oldfile} (hidden) to {newfile}" : "{user} перайменаваў(-ла) {oldfile} (схаваны) ў {newfile}", + "{user} renamed {oldfile} to {newfile} (hidden)" : "{user} перайменаваў(-ла) {oldfile} у {newfile} (схаваны)", + "{user} renamed {oldfile} to {newfile}" : "{user} перайменаваў(-ла) {oldfile} у {newfile}", + "You moved {oldfile} to {newfile}" : "Вы перамясцілі {oldfile} у {newfile}", + "{user} moved {oldfile} to {newfile}" : "{user} перамясціў(-ла) {oldfile} у {newfile}", + "A file has been added to or removed from your <strong>favorites</strong>" : "Файл быў дададзены або выдалены з <strong>абраных</strong>", + "Files" : "Файлы", + "Folder not found" : "Папка не знойдзена", + "The file cannot be found" : "Файл не знойдзены", + "The destination path does not exist: %1$s" : "Шлях прызначэння не існуе: %1$s", + "Favorite files" : "Абраныя файлы", + "No favorites" : "Няма абраных", + "More favorites" : "Больш абраных", + "Accept" : "Прыняць", + "Reject" : "Адхіліць", + "in %s" : "у %s", + "Files compatibility" : "Сумяшчальнасць файлаў", + "File Management" : "Кіраванне файламі", + "Home" : "Дадому", + "Reload current directory" : "Перазагрузіць бягучы каталог", + "Go to the \"{dir}\" directory" : "Перайсці да каталога \"{dir}\"", + "Drag and drop files here to upload" : "Перацягніце файлы сюды, каб запампаваць іх", + "Favorite" : "Абранае", + "Back" : "Назад", + "File is loading" : "Файл загружаецца", + "Folder is loading" : "Папка загружаецца", + "Filename" : "Назва файла", + "Folder name" : "Назва папкі", + "Rename file" : "Перайменаваць файл", + "Folder" : "Папка", + "Unknown file type" : "Невядомы тып файла", + "Pending" : "У чаканні", + "Unknown date" : "Невядомая дата", + "Clear filter" : "Ачысціць фільтр", + "Modified" : "Зменены", + "Type" : "Тып", + "Active filters" : "Актыўныя фільтры", + "Remove filter" : "Выдаліць фільтр", + "Name" : "Назва", + "File type" : "Тып файла", + "Size" : "Памер", + "Actions" : "Дзеянні", + "List of files and folders." : "Спіс файлаў і папак.", + "File not found" : "Файл не знойдзены", + "{usedQuotaByte} used" : "Выкарыстана {usedQuotaByte}", + "{used} of {quota} used" : "Выкарыстана {used} з {quota}", + "{relative}% used" : "Выкарыстана {relative}%", + "New folder" : "Новая папка", + "Create new folder" : "Стварыць новую папку", + "This name is already in use." : "Гэта назва ўжо выкарыстоўваецца.", + "Create" : "Стварыць", + "Fill template fields" : "Запоўніце палі шаблону", + "Unknown error" : "Невядомая памылка", + "Change" : "Змяніць", + "New owner" : "Новы ўладальнік", + "Share" : "Абагуліць", + "Upload was cancelled by user" : "Карыстальнік скасаваў запампоўванне", + "Go back" : "Назад", + "Your files" : "Вашы файлы", + "File cannot be accessed" : "Немагчыма атрымаць доступ да файла", + "The file could not be found or you do not have permissions to view it. Ask the sender to share it." : "Файл не знойдзены, або ў вас няма правоў на яго прагляд. Папрасіце адпраўніка абагуліць яго.", + "No search results for “{query}”" : "Няма вынікаў пошуку па запыце \"{query}\"", + "Search for files" : "Пошук файлаў", + "Clipboard is not available" : "Буфер абмену недаступны", + "WebDAV URL copied to clipboard" : "URL-адрас WebDAV скапіяваны ў буфер абмену", + "All files" : "Усе файлы", + "Personal files" : "Асабістыя файлы", + "Show files extensions" : "Паказваць пашырэнні файлаў", + "WebDAV" : "WebDAV", + "WebDAV URL" : "URL-адрас WebDAV", + "Copy to clipboard" : "Капіяваць у буфер абмену", + "Warnings" : "Папярэджанні", + "Keyboard shortcuts" : "Спалучэнні клавіш", + "Rename a file" : "Перайменаваць файл", + "Delete a file" : "Выдаліць файл", + "Select all files" : "Выбраць усе файлы", + "Deselect all files" : "Скасаваць выбар усіх файлаў", + "Select a range of files" : "Выберыце дыяпазон файлаў", + "Navigation" : "Навігацыя", + "You" : "Вы", + "Error while loading the file data" : "Памылка пры загрузцы даных файла", + "Owner" : "Уладальнік", + "Remove from favorites" : "Выдаліць з абранага", + "Add to favorites" : "У абранае", + "Tags" : "Тэгі", + "Unable to create new file from template" : "Немагчыма стварыць новы файл з шаблона", + "Pick a template for {name}" : "Выберыце шаблон для {name}", + "Create a new file with the selected template" : "Стварыць файл на падставе выбранага шаблона", + "Creating file" : "Стварэнне файла", + "Save as {displayName}" : "Захаваць як {displayName}", + "Save as …" : "Захаваць як …", + "Converting files …" : "Канвертацыя файлаў …", + "Converting file …" : "Канвертацыя файла …", + "File successfully converted" : "Файл паспяхова сканвертаваны", + "Deletion cancelled" : "Выдаленне скасавана", + "Delete permanently" : "Выдаліць назаўжды", + "Delete file" : "Выдаліць файл", + "Delete files" : "Выдаліць файлы", + "Delete folder" : "Выдаліць папку", + "Delete folders" : "Выдаліць папкі", + "Delete" : "Выдаліць", + "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["Вы збіраецеся назаўжды выдаліць {count} элемент","Вы збіраецеся назаўжды выдаліць {count} элементы","Вы збіраецеся назаўжды выдаліць {count} элементаў","Вы збіраецеся назаўжды выдаліць {count} элементаў"], + "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Вы збіраецеся выдаліць {count} элемент","Вы збіраецеся выдаліць {count} элементы","Вы збіраецеся выдаліць {count} элементаў","Вы збіраецеся выдаліць {count} элементаў"], + "Confirm deletion" : "Пацвердзіць выдаленне", + "Cancel" : "Скасаваць", + "Download" : "Спампаваць", + "Moving \"{source}\" to \"{destination}\" …" : "Перамяшчэнне \"{source}\" у \"{destination}\" …", + "Copying \"{source}\" to \"{destination}\" …" : "Капіяванне \"{source}\" у \"{destination}\" …", + "This file/folder is already in that directory" : "Гэты файл/папка ўжо знаходзіцца ў гэтым каталогу", + "(copy)" : "(копія)", + "(copy %n)" : "(копія %n)", + "Move cancelled" : "Перамяшчэнне скасавана", + "A file or folder with that name already exists in this folder" : "Файл або папка з такой назвай ужо існуе ў гэтай папцы", + "The files are locked" : "Файлы заблакіраваны", + "The file does not exist anymore" : "Файл больш не існуе", + "Choose destination" : "Выберыце прызначэнне", + "Copy to {target}" : "Капіяваць у {target}", + "Copy" : "Капіяваць", + "Move to {target}" : "Перамясціць у {target}", + "Move" : "Перамясціць", + "Move or copy" : "Перамясціць або капіяваць", + "Open folder {displayName}" : "Адкрыць папку {displayName}", + "Open locally" : "Адкрыць лакальна", + "Open file locally" : "Адкрыць файл лакальна", + "Rename" : "Перайменаваць", + "Today" : "Сёння", + "Last 7 days" : "Апошнія 7 дзён", + "Last 30 days" : "Апошнія 30 дзён", + "This year ({year})" : "Гэты год ({year})", + "Last year ({year})" : "Мінулы год ({year})", + "Documents" : "Дакументы", + "Spreadsheets" : "Табліцы", + "Presentations" : "Прэзентацыі", + "PDFs" : "PDF-файлы", + "Folders" : "Папкі", + "Audio" : "Аўдыя", + "Photos and images" : "Фота і відарысы", + "Videos" : "Відэа", + "New folder creation cancelled" : "Стварэнне новай папкі скасавана", + "Created new folder \"{name}\"" : "Створана новая папка \"{name}\"", + "Unable to initialize the templates directory" : "Немагчыма ініцыялізаваць каталог шаблонаў", + "Create templates folder" : "Стварыць папку шаблонаў", + "Templates" : "Шаблоны", + "New template folder" : "Новая папка шаблонаў", + "In folder" : "У папцы", + "One of the dropped files could not be processed" : "Адзін з перацягнутых файлаў не ўдалося апрацаваць", + "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Ваш браўзер не падтрымлівае Filesystem API. Каталогі не будуць запампаваныя", + "No files to upload" : "Няма файлаў для запампоўвання", + "Unable to create the directory {directory}" : "Немагчыма стварыць папку {directory}", + "Some files could not be uploaded" : "Некаторыя файлы не ўдалося запампаваць", + "Files uploaded successfully" : "Файлы паспяхова запампаваныя", + "No files to process" : "Няма файлаў для апрацоўкі", + "Some files could not be copied" : "Некаторыя файлы не ўдалося скапіяваць", + "Some files could not be moved" : "Некаторыя файлы не ўдалося перамясціць", + "Files copied successfully" : "Файлы паспяхова скапіяваны", + "Files moved successfully" : "Файлы паспяхова перамешчаны", + "Conflicts resolution skipped" : "Рашэнне канфліктаў прапушчана", + "Upload cancelled" : "Запампоўванне скасавана", + "Could not rename \"{oldName}\"" : "Не атрымалася перайменаваць \"{oldName}\"", + "Unexpected error: {error}" : "Нечаканая памылка: {error}", + "_%n file_::_%n files_" : ["%n файл","%n файлы","%n файлаў","%n файлаў"], + "_%n folder_::_%n folders_" : ["%n папка","%n папкі","%n папак","%n папак"], + "_%n hidden_::_%n hidden_" : ["%n схаваны","%n схаваныя","%n схаваных","%n схаваных"], + "Filename must not be empty." : "Назва файла не можа быць пустой.", + "No favorites yet" : "Пакуль няма абраных", + "List of your files and folders." : "Спіс вашых файлаў і папак.", + "List of your files and folders that are not shared." : "Спіс вашых неабагуленых файлаў і папак.", + "No personal files found" : "Асабістых файлаў не знойдзена", + "Files that are not shared will show up here." : "Тут будуць адлюстроўвацца неабагуленыя файлы.", + "Recent" : "Нядаўнія", + "List of recently modified files and folders." : "Спіс нядаўна змененых файлаў і папак.", + "No recently modified files" : "Няма нядаўна змененых файлаў", + "Files and folders you recently modified will show up here." : "Тут будуць адлюстроўвацца нядаўна змененыя вамі файлы і папкі.", + "Search" : "Пошук", + "File could not be found" : "Файл не знойдзены", + "Close" : "Закрыць", + "Could not create folder \"{dir}\"" : "Не ўдалося стварыць папку \"{dir}\"", + "This will stop your current uploads." : "Гэта спыніць вашы бягучыя запампоўкі.", + "Upload cancelled." : "Запампоўванне скасавана.", + "Processing files …" : "Апрацоўка файлаў …", + "…" : "…", + "Unable to upload {filename} as it is a directory or has 0 bytes" : "Немагчыма запампаваць {filename}, бо гэта каталог або ён мае памер 0 байтаў", + "An unknown error has occurred" : "Узнікла невядомая памылка", + "File could not be uploaded" : "Не ўдалося запампаваць файл", + "Uploading …" : "Запампоўванне …", + "{remainingTime} ({currentNumber}/{total})" : "{remainingTime} ({currentNumber}/{total})", + "Uploading … ({currentNumber}/{total})" : "Запампоўванне … ({currentNumber}/{total})", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} з {totalSize} ({bitrate})", + "Set reminder" : "Задаць напамін", + "Edit locally" : "Рэдагаваць лакальна", + "Open" : "Адкрыць", + "Unable to determine date" : "Немагчыма вызначыць дату", + "copy" : "копія", + "{newName} already exists" : "{newName} ужо існуе", + "{dirs} and {files}" : "{dirs} і {files}", + "_Uploading %n file_::_Uploading %n files_" : ["Запампоўванне %n файла","Запампоўванне %n файлаў","Запампоўванне %n файлаў","Запампоўванне %n файлаў"], + "New" : "Новы", + "{used}%" : "{used}%", + "{used} used" : "Выкарыстана {used}", + "Path" : "Шлях", + "Upload file" : "Запампаваць файл", + "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} папка","{folderCount} папкі","{folderCount} папак","{folderCount} папак"], + "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} файл","{fileCount} файлы","{fileCount} файлаў","{fileCount} файлаў"], + "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 файл і {folderCount} папка","1 файл і {folderCount} папкі","1 файл і {folderCount} папак","1 файл і {folderCount} папак"], + "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} файл і 1 папка","{fileCount} файлы і 1 папка","{fileCount} файлаў і 1 папка","{fileCount} файлаў і 1 папка"], + "All folders" : "Усе папкі", + "Personal Files" : "Асабістыя файлы", + "Text file" : "Тэкставы файл" +}, +"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/apps/files/l10n/be.json b/apps/files/l10n/be.json new file mode 100644 index 00000000000..4ab7c807963 --- /dev/null +++ b/apps/files/l10n/be.json @@ -0,0 +1,243 @@ +{ "translations": { + "Added to favorites" : "Дададзены ў абранае", + "Removed from favorites" : "Выдалены з абранага", + "You added {file} to your favorites" : "Вы дадалі {file} у абранае", + "You removed {file} from your favorites" : "Вы выдалілі {file} з абранага", + "Favorites" : "Абранае", + "File changes" : "Змены ў файлах", + "Created by {user}" : "Створаны карыстальнікам {user}", + "Changed by {user}" : "Зменены карыстальнікам {user}", + "Deleted by {user}" : "Выдалены карыстальнікам {user}", + "Restored by {user}" : "Адноўлены карыстальнікам {user}", + "Renamed by {user}" : "Перайменаваны карыстальнікам {user}", + "Moved by {user}" : "Перамешчаны карыстальнікам {user}", + "\"remote account\"" : "\"аддалены ўліковы запіс\"", + "You created {file}" : "Вы стварылі {file}", + "You created an encrypted file in {file}" : "Вы стварылі зашыфраваны файл у {file}", + "{user} created {file}" : "{user} стварыў(-ла) {file}", + "{user} created an encrypted file in {file}" : "{user} стварыў(-ла) зашыфраваны файл у {file}", + "You changed {file}" : "Вы змянілі {file}", + "You changed an encrypted file in {file}" : "Вы змянілі зашыфраваны файл у {file}", + "{user} changed {file}" : "{user} змяніў(-ла) {file}", + "{user} changed an encrypted file in {file}" : "{user} змяніў(-ла) зашыфраваны файл у {file}", + "You deleted {file}" : "Вы выдалілі {file}", + "You deleted an encrypted file in {file}" : "Вы выдалілі зашыфраваны файл у {file}", + "{user} deleted {file}" : "{user} выдаліў(-ла) {file}", + "{user} deleted an encrypted file in {file}" : "{user} выдаліў(-ла) зашыфраваны файл у {file}", + "You restored {file}" : "Вы аднавілі {file}", + "{user} restored {file}" : "{user} аднавіў(-ла) {file}", + "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "Вы перайменавалі {oldfile} (схаваны) у {newfile} (схаваны)", + "You renamed {oldfile} (hidden) to {newfile}" : "Вы перайменавалі {oldfile} (схаваны) у {newfile}", + "You renamed {oldfile} to {newfile} (hidden)" : "Вы перайменавалі {oldfile} у {newfile} (схаваны)", + "You renamed {oldfile} to {newfile}" : "Вы перайменавалі {oldfile} у {newfile}", + "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user} перайменаваў(-ла) {oldfile} (схаваны) у {newfile} (схаваны)", + "{user} renamed {oldfile} (hidden) to {newfile}" : "{user} перайменаваў(-ла) {oldfile} (схаваны) ў {newfile}", + "{user} renamed {oldfile} to {newfile} (hidden)" : "{user} перайменаваў(-ла) {oldfile} у {newfile} (схаваны)", + "{user} renamed {oldfile} to {newfile}" : "{user} перайменаваў(-ла) {oldfile} у {newfile}", + "You moved {oldfile} to {newfile}" : "Вы перамясцілі {oldfile} у {newfile}", + "{user} moved {oldfile} to {newfile}" : "{user} перамясціў(-ла) {oldfile} у {newfile}", + "A file has been added to or removed from your <strong>favorites</strong>" : "Файл быў дададзены або выдалены з <strong>абраных</strong>", + "Files" : "Файлы", + "Folder not found" : "Папка не знойдзена", + "The file cannot be found" : "Файл не знойдзены", + "The destination path does not exist: %1$s" : "Шлях прызначэння не існуе: %1$s", + "Favorite files" : "Абраныя файлы", + "No favorites" : "Няма абраных", + "More favorites" : "Больш абраных", + "Accept" : "Прыняць", + "Reject" : "Адхіліць", + "in %s" : "у %s", + "Files compatibility" : "Сумяшчальнасць файлаў", + "File Management" : "Кіраванне файламі", + "Home" : "Дадому", + "Reload current directory" : "Перазагрузіць бягучы каталог", + "Go to the \"{dir}\" directory" : "Перайсці да каталога \"{dir}\"", + "Drag and drop files here to upload" : "Перацягніце файлы сюды, каб запампаваць іх", + "Favorite" : "Абранае", + "Back" : "Назад", + "File is loading" : "Файл загружаецца", + "Folder is loading" : "Папка загружаецца", + "Filename" : "Назва файла", + "Folder name" : "Назва папкі", + "Rename file" : "Перайменаваць файл", + "Folder" : "Папка", + "Unknown file type" : "Невядомы тып файла", + "Pending" : "У чаканні", + "Unknown date" : "Невядомая дата", + "Clear filter" : "Ачысціць фільтр", + "Modified" : "Зменены", + "Type" : "Тып", + "Active filters" : "Актыўныя фільтры", + "Remove filter" : "Выдаліць фільтр", + "Name" : "Назва", + "File type" : "Тып файла", + "Size" : "Памер", + "Actions" : "Дзеянні", + "List of files and folders." : "Спіс файлаў і папак.", + "File not found" : "Файл не знойдзены", + "{usedQuotaByte} used" : "Выкарыстана {usedQuotaByte}", + "{used} of {quota} used" : "Выкарыстана {used} з {quota}", + "{relative}% used" : "Выкарыстана {relative}%", + "New folder" : "Новая папка", + "Create new folder" : "Стварыць новую папку", + "This name is already in use." : "Гэта назва ўжо выкарыстоўваецца.", + "Create" : "Стварыць", + "Fill template fields" : "Запоўніце палі шаблону", + "Unknown error" : "Невядомая памылка", + "Change" : "Змяніць", + "New owner" : "Новы ўладальнік", + "Share" : "Абагуліць", + "Upload was cancelled by user" : "Карыстальнік скасаваў запампоўванне", + "Go back" : "Назад", + "Your files" : "Вашы файлы", + "File cannot be accessed" : "Немагчыма атрымаць доступ да файла", + "The file could not be found or you do not have permissions to view it. Ask the sender to share it." : "Файл не знойдзены, або ў вас няма правоў на яго прагляд. Папрасіце адпраўніка абагуліць яго.", + "No search results for “{query}”" : "Няма вынікаў пошуку па запыце \"{query}\"", + "Search for files" : "Пошук файлаў", + "Clipboard is not available" : "Буфер абмену недаступны", + "WebDAV URL copied to clipboard" : "URL-адрас WebDAV скапіяваны ў буфер абмену", + "All files" : "Усе файлы", + "Personal files" : "Асабістыя файлы", + "Show files extensions" : "Паказваць пашырэнні файлаў", + "WebDAV" : "WebDAV", + "WebDAV URL" : "URL-адрас WebDAV", + "Copy to clipboard" : "Капіяваць у буфер абмену", + "Warnings" : "Папярэджанні", + "Keyboard shortcuts" : "Спалучэнні клавіш", + "Rename a file" : "Перайменаваць файл", + "Delete a file" : "Выдаліць файл", + "Select all files" : "Выбраць усе файлы", + "Deselect all files" : "Скасаваць выбар усіх файлаў", + "Select a range of files" : "Выберыце дыяпазон файлаў", + "Navigation" : "Навігацыя", + "You" : "Вы", + "Error while loading the file data" : "Памылка пры загрузцы даных файла", + "Owner" : "Уладальнік", + "Remove from favorites" : "Выдаліць з абранага", + "Add to favorites" : "У абранае", + "Tags" : "Тэгі", + "Unable to create new file from template" : "Немагчыма стварыць новы файл з шаблона", + "Pick a template for {name}" : "Выберыце шаблон для {name}", + "Create a new file with the selected template" : "Стварыць файл на падставе выбранага шаблона", + "Creating file" : "Стварэнне файла", + "Save as {displayName}" : "Захаваць як {displayName}", + "Save as …" : "Захаваць як …", + "Converting files …" : "Канвертацыя файлаў …", + "Converting file …" : "Канвертацыя файла …", + "File successfully converted" : "Файл паспяхова сканвертаваны", + "Deletion cancelled" : "Выдаленне скасавана", + "Delete permanently" : "Выдаліць назаўжды", + "Delete file" : "Выдаліць файл", + "Delete files" : "Выдаліць файлы", + "Delete folder" : "Выдаліць папку", + "Delete folders" : "Выдаліць папкі", + "Delete" : "Выдаліць", + "_You are about to permanently delete {count} item_::_You are about to permanently delete {count} items_" : ["Вы збіраецеся назаўжды выдаліць {count} элемент","Вы збіраецеся назаўжды выдаліць {count} элементы","Вы збіраецеся назаўжды выдаліць {count} элементаў","Вы збіраецеся назаўжды выдаліць {count} элементаў"], + "_You are about to delete {count} item_::_You are about to delete {count} items_" : ["Вы збіраецеся выдаліць {count} элемент","Вы збіраецеся выдаліць {count} элементы","Вы збіраецеся выдаліць {count} элементаў","Вы збіраецеся выдаліць {count} элементаў"], + "Confirm deletion" : "Пацвердзіць выдаленне", + "Cancel" : "Скасаваць", + "Download" : "Спампаваць", + "Moving \"{source}\" to \"{destination}\" …" : "Перамяшчэнне \"{source}\" у \"{destination}\" …", + "Copying \"{source}\" to \"{destination}\" …" : "Капіяванне \"{source}\" у \"{destination}\" …", + "This file/folder is already in that directory" : "Гэты файл/папка ўжо знаходзіцца ў гэтым каталогу", + "(copy)" : "(копія)", + "(copy %n)" : "(копія %n)", + "Move cancelled" : "Перамяшчэнне скасавана", + "A file or folder with that name already exists in this folder" : "Файл або папка з такой назвай ужо існуе ў гэтай папцы", + "The files are locked" : "Файлы заблакіраваны", + "The file does not exist anymore" : "Файл больш не існуе", + "Choose destination" : "Выберыце прызначэнне", + "Copy to {target}" : "Капіяваць у {target}", + "Copy" : "Капіяваць", + "Move to {target}" : "Перамясціць у {target}", + "Move" : "Перамясціць", + "Move or copy" : "Перамясціць або капіяваць", + "Open folder {displayName}" : "Адкрыць папку {displayName}", + "Open locally" : "Адкрыць лакальна", + "Open file locally" : "Адкрыць файл лакальна", + "Rename" : "Перайменаваць", + "Today" : "Сёння", + "Last 7 days" : "Апошнія 7 дзён", + "Last 30 days" : "Апошнія 30 дзён", + "This year ({year})" : "Гэты год ({year})", + "Last year ({year})" : "Мінулы год ({year})", + "Documents" : "Дакументы", + "Spreadsheets" : "Табліцы", + "Presentations" : "Прэзентацыі", + "PDFs" : "PDF-файлы", + "Folders" : "Папкі", + "Audio" : "Аўдыя", + "Photos and images" : "Фота і відарысы", + "Videos" : "Відэа", + "New folder creation cancelled" : "Стварэнне новай папкі скасавана", + "Created new folder \"{name}\"" : "Створана новая папка \"{name}\"", + "Unable to initialize the templates directory" : "Немагчыма ініцыялізаваць каталог шаблонаў", + "Create templates folder" : "Стварыць папку шаблонаў", + "Templates" : "Шаблоны", + "New template folder" : "Новая папка шаблонаў", + "In folder" : "У папцы", + "One of the dropped files could not be processed" : "Адзін з перацягнутых файлаў не ўдалося апрацаваць", + "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Ваш браўзер не падтрымлівае Filesystem API. Каталогі не будуць запампаваныя", + "No files to upload" : "Няма файлаў для запампоўвання", + "Unable to create the directory {directory}" : "Немагчыма стварыць папку {directory}", + "Some files could not be uploaded" : "Некаторыя файлы не ўдалося запампаваць", + "Files uploaded successfully" : "Файлы паспяхова запампаваныя", + "No files to process" : "Няма файлаў для апрацоўкі", + "Some files could not be copied" : "Некаторыя файлы не ўдалося скапіяваць", + "Some files could not be moved" : "Некаторыя файлы не ўдалося перамясціць", + "Files copied successfully" : "Файлы паспяхова скапіяваны", + "Files moved successfully" : "Файлы паспяхова перамешчаны", + "Conflicts resolution skipped" : "Рашэнне канфліктаў прапушчана", + "Upload cancelled" : "Запампоўванне скасавана", + "Could not rename \"{oldName}\"" : "Не атрымалася перайменаваць \"{oldName}\"", + "Unexpected error: {error}" : "Нечаканая памылка: {error}", + "_%n file_::_%n files_" : ["%n файл","%n файлы","%n файлаў","%n файлаў"], + "_%n folder_::_%n folders_" : ["%n папка","%n папкі","%n папак","%n папак"], + "_%n hidden_::_%n hidden_" : ["%n схаваны","%n схаваныя","%n схаваных","%n схаваных"], + "Filename must not be empty." : "Назва файла не можа быць пустой.", + "No favorites yet" : "Пакуль няма абраных", + "List of your files and folders." : "Спіс вашых файлаў і папак.", + "List of your files and folders that are not shared." : "Спіс вашых неабагуленых файлаў і папак.", + "No personal files found" : "Асабістых файлаў не знойдзена", + "Files that are not shared will show up here." : "Тут будуць адлюстроўвацца неабагуленыя файлы.", + "Recent" : "Нядаўнія", + "List of recently modified files and folders." : "Спіс нядаўна змененых файлаў і папак.", + "No recently modified files" : "Няма нядаўна змененых файлаў", + "Files and folders you recently modified will show up here." : "Тут будуць адлюстроўвацца нядаўна змененыя вамі файлы і папкі.", + "Search" : "Пошук", + "File could not be found" : "Файл не знойдзены", + "Close" : "Закрыць", + "Could not create folder \"{dir}\"" : "Не ўдалося стварыць папку \"{dir}\"", + "This will stop your current uploads." : "Гэта спыніць вашы бягучыя запампоўкі.", + "Upload cancelled." : "Запампоўванне скасавана.", + "Processing files …" : "Апрацоўка файлаў …", + "…" : "…", + "Unable to upload {filename} as it is a directory or has 0 bytes" : "Немагчыма запампаваць {filename}, бо гэта каталог або ён мае памер 0 байтаў", + "An unknown error has occurred" : "Узнікла невядомая памылка", + "File could not be uploaded" : "Не ўдалося запампаваць файл", + "Uploading …" : "Запампоўванне …", + "{remainingTime} ({currentNumber}/{total})" : "{remainingTime} ({currentNumber}/{total})", + "Uploading … ({currentNumber}/{total})" : "Запампоўванне … ({currentNumber}/{total})", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} з {totalSize} ({bitrate})", + "Set reminder" : "Задаць напамін", + "Edit locally" : "Рэдагаваць лакальна", + "Open" : "Адкрыць", + "Unable to determine date" : "Немагчыма вызначыць дату", + "copy" : "копія", + "{newName} already exists" : "{newName} ужо існуе", + "{dirs} and {files}" : "{dirs} і {files}", + "_Uploading %n file_::_Uploading %n files_" : ["Запампоўванне %n файла","Запампоўванне %n файлаў","Запампоўванне %n файлаў","Запампоўванне %n файлаў"], + "New" : "Новы", + "{used}%" : "{used}%", + "{used} used" : "Выкарыстана {used}", + "Path" : "Шлях", + "Upload file" : "Запампаваць файл", + "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} папка","{folderCount} папкі","{folderCount} папак","{folderCount} папак"], + "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} файл","{fileCount} файлы","{fileCount} файлаў","{fileCount} файлаў"], + "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 файл і {folderCount} папка","1 файл і {folderCount} папкі","1 файл і {folderCount} папак","1 файл і {folderCount} папак"], + "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} файл і 1 папка","{fileCount} файлы і 1 папка","{fileCount} файлаў і 1 папка","{fileCount} файлаў і 1 папка"], + "All folders" : "Усе папкі", + "Personal Files" : "Асабістыя файлы", + "Text file" : "Тэкставы файл" +},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 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/l10n/bg.js b/apps/files/l10n/bg.js index cc551b51909..73f349082a9 100644 --- a/apps/files/l10n/bg.js +++ b/apps/files/l10n/bg.js @@ -126,8 +126,6 @@ OC.L10N.register( "Additional settings" : "Допълнителни настройки", "WebDAV" : "WebDAV", "Copy to clipboard" : "Копиране в клипборда", - "Use this address to access your Files via WebDAV" : "Ползвайте този адрес за достъп до файловете си чрез WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ако сте активирали 2FA, трябва да създадете и използвате нова парола за приложението, като кликнете тук.", "Keyboard shortcuts" : "Бързи клавиши", "Selection" : "Избор", "Navigation" : "Навигация", @@ -266,6 +264,8 @@ OC.L10N.register( "Upload file" : "Качи файл", "An error occurred while trying to update the tags" : "Възникна грешка при опита за промяна на етикети", "Upload (max. %s)" : "Качи (макс. %s)", + "Use this address to access your Files via WebDAV" : "Ползвайте този адрес за достъп до файловете си чрез WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ако сте активирали 2FA, трябва да създадете и използвате нова парола за приложението, като кликнете тук.", "Personal Files" : "Лични файлове", "Text file" : "Текстов файл", "New text file.txt" : "Текстов файл.txt" diff --git a/apps/files/l10n/bg.json b/apps/files/l10n/bg.json index 7df72584461..ff0191c8f13 100644 --- a/apps/files/l10n/bg.json +++ b/apps/files/l10n/bg.json @@ -124,8 +124,6 @@ "Additional settings" : "Допълнителни настройки", "WebDAV" : "WebDAV", "Copy to clipboard" : "Копиране в клипборда", - "Use this address to access your Files via WebDAV" : "Ползвайте този адрес за достъп до файловете си чрез WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ако сте активирали 2FA, трябва да създадете и използвате нова парола за приложението, като кликнете тук.", "Keyboard shortcuts" : "Бързи клавиши", "Selection" : "Избор", "Navigation" : "Навигация", @@ -264,6 +262,8 @@ "Upload file" : "Качи файл", "An error occurred while trying to update the tags" : "Възникна грешка при опита за промяна на етикети", "Upload (max. %s)" : "Качи (макс. %s)", + "Use this address to access your Files via WebDAV" : "Ползвайте този адрес за достъп до файловете си чрез WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ако сте активирали 2FA, трябва да създадете и използвате нова парола за приложението, като кликнете тук.", "Personal Files" : "Лични файлове", "Text file" : "Текстов файл", "New text file.txt" : "Текстов файл.txt" diff --git a/apps/files/l10n/ca.js b/apps/files/l10n/ca.js index 3e2df7e84fa..399996efc61 100644 --- a/apps/files/l10n/ca.js +++ b/apps/files/l10n/ca.js @@ -184,15 +184,13 @@ OC.L10N.register( "Personal files" : "Fitxers personals", "Sort favorites first" : "Ordena primer els preferits", "Sort folders before files" : "Ordena les carpetes abans dels fitxers", + "Enable folder tree" : "Habilita l'arbre de carpetes", "Show hidden files" : "Mostra els fitxers ocults", "Crop image previews" : "Retalla les previsualitzacions de les imatges", - "Enable folder tree" : "Habilita l'arbre de carpetes", "Additional settings" : "Paràmetres addicionals", "WebDAV" : "WebDAV", "WebDAV URL" : "URL de WebDAV", "Copy to clipboard" : "Copia-ho al porta-retalls", - "Use this address to access your Files via WebDAV" : "Utilitzeu aquesta adreça per a accedir als vostres fitxers mitjançant WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si heu habilitat l'autenticació de doble factor, podeu crear i utilitzar una nova contrasenya d'aplicació fent clic aquí.", "Warnings" : "Advertiments", "Prevent warning dialogs from open or reenable them." : "Eviteu que s'obrin els diàlegs d'advertència o torneu-los a habilitar.", "Show a warning dialog when changing a file extension." : "Mostra un diàleg d'avís quan es canvia una extensió de fitxer.", @@ -345,7 +343,6 @@ OC.L10N.register( "No favorites yet" : "Encara no teniu preferits", "Files and folders you mark as favorite will show up here" : "Els fitxers i les carpetes que marqueu com a preferits es mostraran aquí", "List of your files and folders." : "Llista dels vostres fitxers i carpetes.", - "All folders" : "Totes les carpetes", "List of your files and folders that are not shared." : "Llista dels vostres fitxers i carpetes que no compartiu.", "No personal files found" : "No s'ha trobat cap fitxer personal", "Files that are not shared will show up here." : "Els fitxers que no compartiu es mostraran aquí.", @@ -439,11 +436,14 @@ OC.L10N.register( "Submitting fields…" : "S'estan enviant camps…", "Filter filenames…" : "Filtra els noms de fitxer…", "Enable the grid view" : "Habilita la visualització de quadrícula", + "Use this address to access your Files via WebDAV" : "Utilitzeu aquesta adreça per a accedir als vostres fitxers mitjançant WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si heu habilitat l'autenticació de doble factor, podeu crear i utilitzar una nova contrasenya d'aplicació fent clic aquí.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} carpeta","{folderCount} carpetes"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fitxer","{fileCount} fitxers"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fitxer i {folderCount} carpeta","1 fitxer i {folderCount} carpetes"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fitxer i 1 carpeta","{fileCount} fitxers i 1 carpeta"], "{fileCount} files and {folderCount} folders" : "{fileCount} fitxers i {folderCount} carpetes", + "All folders" : "Totes les carpetes", "Personal Files" : "FItxers personals", "Text file" : "Fitxer de text", "New text file.txt" : "Fitxer de text nou.txt", diff --git a/apps/files/l10n/ca.json b/apps/files/l10n/ca.json index a9456a5d7e5..2aaa496b884 100644 --- a/apps/files/l10n/ca.json +++ b/apps/files/l10n/ca.json @@ -182,15 +182,13 @@ "Personal files" : "Fitxers personals", "Sort favorites first" : "Ordena primer els preferits", "Sort folders before files" : "Ordena les carpetes abans dels fitxers", + "Enable folder tree" : "Habilita l'arbre de carpetes", "Show hidden files" : "Mostra els fitxers ocults", "Crop image previews" : "Retalla les previsualitzacions de les imatges", - "Enable folder tree" : "Habilita l'arbre de carpetes", "Additional settings" : "Paràmetres addicionals", "WebDAV" : "WebDAV", "WebDAV URL" : "URL de WebDAV", "Copy to clipboard" : "Copia-ho al porta-retalls", - "Use this address to access your Files via WebDAV" : "Utilitzeu aquesta adreça per a accedir als vostres fitxers mitjançant WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si heu habilitat l'autenticació de doble factor, podeu crear i utilitzar una nova contrasenya d'aplicació fent clic aquí.", "Warnings" : "Advertiments", "Prevent warning dialogs from open or reenable them." : "Eviteu que s'obrin els diàlegs d'advertència o torneu-los a habilitar.", "Show a warning dialog when changing a file extension." : "Mostra un diàleg d'avís quan es canvia una extensió de fitxer.", @@ -343,7 +341,6 @@ "No favorites yet" : "Encara no teniu preferits", "Files and folders you mark as favorite will show up here" : "Els fitxers i les carpetes que marqueu com a preferits es mostraran aquí", "List of your files and folders." : "Llista dels vostres fitxers i carpetes.", - "All folders" : "Totes les carpetes", "List of your files and folders that are not shared." : "Llista dels vostres fitxers i carpetes que no compartiu.", "No personal files found" : "No s'ha trobat cap fitxer personal", "Files that are not shared will show up here." : "Els fitxers que no compartiu es mostraran aquí.", @@ -437,11 +434,14 @@ "Submitting fields…" : "S'estan enviant camps…", "Filter filenames…" : "Filtra els noms de fitxer…", "Enable the grid view" : "Habilita la visualització de quadrícula", + "Use this address to access your Files via WebDAV" : "Utilitzeu aquesta adreça per a accedir als vostres fitxers mitjançant WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si heu habilitat l'autenticació de doble factor, podeu crear i utilitzar una nova contrasenya d'aplicació fent clic aquí.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} carpeta","{folderCount} carpetes"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fitxer","{fileCount} fitxers"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fitxer i {folderCount} carpeta","1 fitxer i {folderCount} carpetes"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fitxer i 1 carpeta","{fileCount} fitxers i 1 carpeta"], "{fileCount} files and {folderCount} folders" : "{fileCount} fitxers i {folderCount} carpetes", + "All folders" : "Totes les carpetes", "Personal Files" : "FItxers personals", "Text file" : "Fitxer de text", "New text file.txt" : "Fitxer de text nou.txt", diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js index 2f593d271c4..1d41d9d28ce 100644 --- a/apps/files/l10n/cs.js +++ b/apps/files/l10n/cs.js @@ -142,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Vytvořit novou složku", "This name is already in use." : "Tento název už je využíván.", "Create" : "Vytvořit", + "Files starting with a dot are hidden by default" : "Soubory, kterých názvy začínají tečkou, jsou ve výchozím stavu skryté", "Fill template fields" : "Vyplňte kolonky šablony", "Submitting fields …" : "Odesílání kolonek…", "Submit" : "Odeslat", @@ -200,19 +201,22 @@ OC.L10N.register( "Personal files" : "Osobní soubory", "Sort favorites first" : "Seřadit od oblíbených", "Sort folders before files" : "Při řazení zobrazovat složky a pak až soubory", + "Enable folder tree" : "Zapnout strom složek", + "Visual settings" : "Vizuální nastavení", "Show hidden files" : "Zobrazit skryté soubory", "Show file type column" : "Zobrazovat sloupec Typ souboru", "Crop image previews" : "Oříznout náhledy obrázků", - "Enable folder tree" : "Zapnout strom složek", + "Show files extensions" : "Zobrazovat přípony souborů", "Additional settings" : "Další nastavení", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Zkopírovat do schránky", - "Use this address to access your Files via WebDAV" : "Tuto adresu použijte pro přístup k vašim souborům prostřednictvím protokolu WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Pokud jste zapnuli 2FA (dvoufaktorovou autentizaci), je třeba kliknutím sem vytvořit a použít nové heslo pro aplikaci.", + "Use this address to access your Files via WebDAV." : "Tuto adresu použijte pro přístup k vašim souborům prostřednictvím protokolu WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "U vašeho účtu je zapnuté dvoufázové ověřování a proto pro připojení externího WebDAV klienta bude třeba použít heslo pro konkrétní aplikaci.", "Warnings" : "Varování", "Prevent warning dialogs from open or reenable them." : "Zabránit dialogům s varováními v otevírání nebo znovupovolení.", "Show a warning dialog when changing a file extension." : "Při měnění přípony souboru zobrazit varovný dialog.", + "Show a warning dialog when deleting files." : "Před smazáním souborů zobrazit varovný dialog.", "Keyboard shortcuts" : "Klávesové zkratky", "Speed up your Files experience with these quick shortcuts." : "Zrychlete svůj dojem ze Souborů pomocí těchto rychlých zkratek.", "Open the actions menu for a file" : "Otevřít nabídku akcí pro soubor", @@ -330,6 +334,7 @@ OC.L10N.register( "Templates" : "Šablony", "New template folder" : "Nová složka šablon", "In folder" : "Ve složce", + "Search in all files" : "Hledat ve všech souborech", "Search in folder: {folder}" : "Hledat ve složce: {folder}", "One of the dropped files could not be processed" : "Jeden z přetažených souborů se nepodařilo zpracovat", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Vámi využívaný prohlížeč nepodporuje aplikační program. rozhraní pro přístup k souborovému systému (Filesytem API). Složky nebudou nahrány", @@ -363,7 +368,6 @@ OC.L10N.register( "No favorites yet" : "Zatím nic oblíbeného", "Files and folders you mark as favorite will show up here" : "Zde budou zobrazeny soubory a složky, které označíte jako oblíbené", "List of your files and folders." : "Seznam vašich souborů a složek.", - "All folders" : "Všechny složky", "List of your files and folders that are not shared." : "Seznam vašich souborů a složek, které nejsou sdíleny.", "No personal files found" : "Nenalezeny žádné osobní soubory", "Files that are not shared will show up here." : "Soubory, které nejsou nikomu sdíleny se zobrazí zde.", @@ -458,11 +462,14 @@ OC.L10N.register( "Submitting fields…" : "Odesílání kolonek…", "Filter filenames…" : "Filtrovat názvy souborů…", "Enable the grid view" : "Zapnout zobrazení v mřížce", + "Use this address to access your Files via WebDAV" : "Tuto adresu použijte pro přístup k vašim souborům prostřednictvím protokolu WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Pokud jste zapnuli 2FA (dvoufaktorovou autentizaci), je třeba kliknutím sem vytvořit a použít nové heslo pro aplikaci.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} složka","{folderCount} složky","{folderCount} složek","{folderCount} složky"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} soubor","{fileCount} soubory","{fileCount} souborů","{fileCount} soubory"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 soubor a {folderCount} složka","1 soubor a {folderCount} složky","1 soubor a {folderCount} složek","1 soubor a {folderCount} složky"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} soubor a 1 složka","{fileCount} soubory a 1 složka","{fileCount} souborů a 1 složka","{fileCount} soubory a 1 složka"], "{fileCount} files and {folderCount} folders" : "{fileCount} souborů a {folderCount} složek", + "All folders" : "Všechny složky", "Personal Files" : "Osobní soubory", "Text file" : "Textový soubor", "New text file.txt" : "Nový textový soubor.txt", diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json index b565488a6e2..ddeb4dbf460 100644 --- a/apps/files/l10n/cs.json +++ b/apps/files/l10n/cs.json @@ -140,6 +140,7 @@ "Create new folder" : "Vytvořit novou složku", "This name is already in use." : "Tento název už je využíván.", "Create" : "Vytvořit", + "Files starting with a dot are hidden by default" : "Soubory, kterých názvy začínají tečkou, jsou ve výchozím stavu skryté", "Fill template fields" : "Vyplňte kolonky šablony", "Submitting fields …" : "Odesílání kolonek…", "Submit" : "Odeslat", @@ -198,19 +199,22 @@ "Personal files" : "Osobní soubory", "Sort favorites first" : "Seřadit od oblíbených", "Sort folders before files" : "Při řazení zobrazovat složky a pak až soubory", + "Enable folder tree" : "Zapnout strom složek", + "Visual settings" : "Vizuální nastavení", "Show hidden files" : "Zobrazit skryté soubory", "Show file type column" : "Zobrazovat sloupec Typ souboru", "Crop image previews" : "Oříznout náhledy obrázků", - "Enable folder tree" : "Zapnout strom složek", + "Show files extensions" : "Zobrazovat přípony souborů", "Additional settings" : "Další nastavení", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Zkopírovat do schránky", - "Use this address to access your Files via WebDAV" : "Tuto adresu použijte pro přístup k vašim souborům prostřednictvím protokolu WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Pokud jste zapnuli 2FA (dvoufaktorovou autentizaci), je třeba kliknutím sem vytvořit a použít nové heslo pro aplikaci.", + "Use this address to access your Files via WebDAV." : "Tuto adresu použijte pro přístup k vašim souborům prostřednictvím protokolu WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "U vašeho účtu je zapnuté dvoufázové ověřování a proto pro připojení externího WebDAV klienta bude třeba použít heslo pro konkrétní aplikaci.", "Warnings" : "Varování", "Prevent warning dialogs from open or reenable them." : "Zabránit dialogům s varováními v otevírání nebo znovupovolení.", "Show a warning dialog when changing a file extension." : "Při měnění přípony souboru zobrazit varovný dialog.", + "Show a warning dialog when deleting files." : "Před smazáním souborů zobrazit varovný dialog.", "Keyboard shortcuts" : "Klávesové zkratky", "Speed up your Files experience with these quick shortcuts." : "Zrychlete svůj dojem ze Souborů pomocí těchto rychlých zkratek.", "Open the actions menu for a file" : "Otevřít nabídku akcí pro soubor", @@ -328,6 +332,7 @@ "Templates" : "Šablony", "New template folder" : "Nová složka šablon", "In folder" : "Ve složce", + "Search in all files" : "Hledat ve všech souborech", "Search in folder: {folder}" : "Hledat ve složce: {folder}", "One of the dropped files could not be processed" : "Jeden z přetažených souborů se nepodařilo zpracovat", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Vámi využívaný prohlížeč nepodporuje aplikační program. rozhraní pro přístup k souborovému systému (Filesytem API). Složky nebudou nahrány", @@ -361,7 +366,6 @@ "No favorites yet" : "Zatím nic oblíbeného", "Files and folders you mark as favorite will show up here" : "Zde budou zobrazeny soubory a složky, které označíte jako oblíbené", "List of your files and folders." : "Seznam vašich souborů a složek.", - "All folders" : "Všechny složky", "List of your files and folders that are not shared." : "Seznam vašich souborů a složek, které nejsou sdíleny.", "No personal files found" : "Nenalezeny žádné osobní soubory", "Files that are not shared will show up here." : "Soubory, které nejsou nikomu sdíleny se zobrazí zde.", @@ -456,11 +460,14 @@ "Submitting fields…" : "Odesílání kolonek…", "Filter filenames…" : "Filtrovat názvy souborů…", "Enable the grid view" : "Zapnout zobrazení v mřížce", + "Use this address to access your Files via WebDAV" : "Tuto adresu použijte pro přístup k vašim souborům prostřednictvím protokolu WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Pokud jste zapnuli 2FA (dvoufaktorovou autentizaci), je třeba kliknutím sem vytvořit a použít nové heslo pro aplikaci.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} složka","{folderCount} složky","{folderCount} složek","{folderCount} složky"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} soubor","{fileCount} soubory","{fileCount} souborů","{fileCount} soubory"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 soubor a {folderCount} složka","1 soubor a {folderCount} složky","1 soubor a {folderCount} složek","1 soubor a {folderCount} složky"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} soubor a 1 složka","{fileCount} soubory a 1 složka","{fileCount} souborů a 1 složka","{fileCount} soubory a 1 složka"], "{fileCount} files and {folderCount} folders" : "{fileCount} souborů a {folderCount} složek", + "All folders" : "Všechny složky", "Personal Files" : "Osobní soubory", "Text file" : "Textový soubor", "New text file.txt" : "Nový textový soubor.txt", diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js index a50d0670245..21c9537d7bc 100644 --- a/apps/files/l10n/da.js +++ b/apps/files/l10n/da.js @@ -184,15 +184,13 @@ OC.L10N.register( "Personal files" : "Personlige filer", "Sort favorites first" : "Vis favoritter først", "Sort folders before files" : "Sorter mapper før filer", + "Enable folder tree" : "Aktiver mappetræ", "Show hidden files" : "Vis skjulte filer", "Crop image previews" : "Beskær forhåndsvisninger af billeder", - "Enable folder tree" : "Aktiver mappetræ", "Additional settings" : "Yderligere indstillinger", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Kopier til udklipsholder", - "Use this address to access your Files via WebDAV" : "Brug denne adresse til at få adgang til dine filer via WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Hvis du har aktiveret 2-faktor godkendelse, skal du oprette en app-token, ved at følge dette link.", "Warnings" : "Advarsler", "Prevent warning dialogs from open or reenable them." : "Forhindr advarselsdialoger i at åbner, eller genaktiver dem.", "Show a warning dialog when changing a file extension." : "Vis en advarselsdialog når en filendelse ændres.", @@ -345,7 +343,6 @@ OC.L10N.register( "No favorites yet" : "Ingen foretrukne endnu", "Files and folders you mark as favorite will show up here" : "Filer og mapper som du har markeret som foretrukne, vil blive vist her", "List of your files and folders." : "Liste med dine filer og mapper.", - "All folders" : "Alle mapper", "List of your files and folders that are not shared." : "Liste med dine filer og mapper, der ikke er delt.", "No personal files found" : "Ingen personlige filer fundet", "Files that are not shared will show up here." : "Filer der ikke er delt vil blive vist her.", @@ -439,11 +436,14 @@ OC.L10N.register( "Submitting fields…" : "Sender felter...", "Filter filenames…" : "Filtrer filnavne...", "Enable the grid view" : "Aktiver gittervisning", + "Use this address to access your Files via WebDAV" : "Brug denne adresse til at få adgang til dine filer via WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Hvis du har aktiveret 2-faktor godkendelse, skal du oprette en app-token, ved at følge dette link.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} mappe","{folderCount} mapper"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fil","{fileCount} filer"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fil og {folderCount} mapper","1 fil og {folderCount} mapper"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fil og 1 mapper","{fileCount} filer og 1 mapper"], "{fileCount} files and {folderCount} folders" : "{fileCount} filer og {folderCount} mapper", + "All folders" : "Alle mapper", "Personal Files" : "Personlige filer", "Text file" : "Tekstfil", "New text file.txt" : "Ny tekstfil.txt", diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json index 850e58505d1..edc6d3b6a73 100644 --- a/apps/files/l10n/da.json +++ b/apps/files/l10n/da.json @@ -182,15 +182,13 @@ "Personal files" : "Personlige filer", "Sort favorites first" : "Vis favoritter først", "Sort folders before files" : "Sorter mapper før filer", + "Enable folder tree" : "Aktiver mappetræ", "Show hidden files" : "Vis skjulte filer", "Crop image previews" : "Beskær forhåndsvisninger af billeder", - "Enable folder tree" : "Aktiver mappetræ", "Additional settings" : "Yderligere indstillinger", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Kopier til udklipsholder", - "Use this address to access your Files via WebDAV" : "Brug denne adresse til at få adgang til dine filer via WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Hvis du har aktiveret 2-faktor godkendelse, skal du oprette en app-token, ved at følge dette link.", "Warnings" : "Advarsler", "Prevent warning dialogs from open or reenable them." : "Forhindr advarselsdialoger i at åbner, eller genaktiver dem.", "Show a warning dialog when changing a file extension." : "Vis en advarselsdialog når en filendelse ændres.", @@ -343,7 +341,6 @@ "No favorites yet" : "Ingen foretrukne endnu", "Files and folders you mark as favorite will show up here" : "Filer og mapper som du har markeret som foretrukne, vil blive vist her", "List of your files and folders." : "Liste med dine filer og mapper.", - "All folders" : "Alle mapper", "List of your files and folders that are not shared." : "Liste med dine filer og mapper, der ikke er delt.", "No personal files found" : "Ingen personlige filer fundet", "Files that are not shared will show up here." : "Filer der ikke er delt vil blive vist her.", @@ -437,11 +434,14 @@ "Submitting fields…" : "Sender felter...", "Filter filenames…" : "Filtrer filnavne...", "Enable the grid view" : "Aktiver gittervisning", + "Use this address to access your Files via WebDAV" : "Brug denne adresse til at få adgang til dine filer via WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Hvis du har aktiveret 2-faktor godkendelse, skal du oprette en app-token, ved at følge dette link.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} mappe","{folderCount} mapper"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fil","{fileCount} filer"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fil og {folderCount} mapper","1 fil og {folderCount} mapper"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fil og 1 mapper","{fileCount} filer og 1 mapper"], "{fileCount} files and {folderCount} folders" : "{fileCount} filer og {folderCount} mapper", + "All folders" : "Alle mapper", "Personal Files" : "Personlige filer", "Text file" : "Tekstfil", "New text file.txt" : "Ny tekstfil.txt", diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js index eb75a924205..f56761cfd63 100644 --- a/apps/files/l10n/de.js +++ b/apps/files/l10n/de.js @@ -201,16 +201,18 @@ OC.L10N.register( "Personal files" : "Persönliche Dateien", "Sort favorites first" : "Favoriten zuerst sortieren", "Sort folders before files" : "Ordner vor Dateien sortieren", + "Enable folder tree" : "Ordnerstruktur aktivieren", + "Visual settings" : "Anzeigeeinstellungen", "Show hidden files" : "Versteckte Dateien anzeigen", "Show file type column" : "Dateityp-Spalte anzeigen", "Crop image previews" : "Bildvorschauen zuschneiden", - "Enable folder tree" : "Ordnerstruktur aktivieren", + "Show files extensions" : "Dateierweiterungen anzeigen", "Additional settings" : "Zusätzliche Einstellungen", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV-URL", "Copy to clipboard" : "In die Zwischenablage kopieren", - "Use this address to access your Files via WebDAV" : "Diese Adresse benutzen, um über WebDAV auf deine Dateien zuzugreifen.", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Wenn du 2FA aktiviert hast, musst du ein neues App-Passwort erstellen und verwenden, indem du hier klickst.", + "Use this address to access your Files via WebDAV." : "Diese Adresse verwenden, um über WebDAV auf deine Dateien zuzugreifen.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Für dein Konto ist die Zwei-Faktor-Authentifizierung aktiviert. Zur Verbindung eines externen WebDAV-Clients ist daher die Verwendung eines App-Passwortes erforderlich.", "Warnings" : "Warnungen", "Prevent warning dialogs from open or reenable them." : "Öffnen von Warndialogen verhindern oder diese erneut aktivieren.", "Show a warning dialog when changing a file extension." : "Beim Ändern einer Dateierweiterung einen Warndialog anzeigen.", @@ -332,6 +334,7 @@ OC.L10N.register( "Templates" : "Vorlagen", "New template folder" : "Neuer Vorlagenordner", "In folder" : "Im Ordner", + "Search in all files" : "In allen Dateien suchen", "Search in folder: {folder}" : "Im Ordner suchen: {folder}", "One of the dropped files could not be processed" : "Eine der abgelegten Dateien konnte nicht verarbeitet werden", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Dein Browser unterstützt die Dateisystem-API nicht. Verzeichnisse werden nicht hochgeladen.", @@ -365,7 +368,7 @@ OC.L10N.register( "No favorites yet" : "Noch keine Favoriten vorhanden", "Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die als Favoriten markiert werden, erscheinen hier", "List of your files and folders." : "Liste deiner Dateien und Ordner", - "All folders" : "Alle Ordner", + "Folder tree" : "Ordnerbaum", "List of your files and folders that are not shared." : "Liste deiner Dateien und Ordner, die nicht geteilt wurden.", "No personal files found" : "Keine persönlichen Dateien gefunden", "Files that are not shared will show up here." : "Dateien, die nicht geteilt wurden, werden hier angezeigt.", @@ -460,11 +463,14 @@ OC.L10N.register( "Submitting fields…" : "Felder werden übermittelt…", "Filter filenames…" : "Dateinamen filtern…", "Enable the grid view" : "Kachelansicht aktivieren", + "Use this address to access your Files via WebDAV" : "Diese Adresse benutzen, um über WebDAV auf deine Dateien zuzugreifen.", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Wenn du 2FA aktiviert hast, musst du ein neues App-Passwort erstellen und verwenden, indem du hier klickst.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} Ordner","{folderCount} Ordner"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} Datei","{fileCount} Dateien"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 Datei und {folderCount} Ordner","1 Datei und {folderCount} Ordner"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} Datei und 1 Ordner","{fileCount} Dateien und 1 Ordner"], "{fileCount} files and {folderCount} folders" : "{fileCount} Dateien und {folderCount} Ordner", + "All folders" : "Alle Ordner", "Personal Files" : "Persönliche Dateien", "Text file" : "Textdatei", "New text file.txt" : "Neue Textdatei file.txt", diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json index e2367ca2679..dae7eba49c0 100644 --- a/apps/files/l10n/de.json +++ b/apps/files/l10n/de.json @@ -199,16 +199,18 @@ "Personal files" : "Persönliche Dateien", "Sort favorites first" : "Favoriten zuerst sortieren", "Sort folders before files" : "Ordner vor Dateien sortieren", + "Enable folder tree" : "Ordnerstruktur aktivieren", + "Visual settings" : "Anzeigeeinstellungen", "Show hidden files" : "Versteckte Dateien anzeigen", "Show file type column" : "Dateityp-Spalte anzeigen", "Crop image previews" : "Bildvorschauen zuschneiden", - "Enable folder tree" : "Ordnerstruktur aktivieren", + "Show files extensions" : "Dateierweiterungen anzeigen", "Additional settings" : "Zusätzliche Einstellungen", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV-URL", "Copy to clipboard" : "In die Zwischenablage kopieren", - "Use this address to access your Files via WebDAV" : "Diese Adresse benutzen, um über WebDAV auf deine Dateien zuzugreifen.", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Wenn du 2FA aktiviert hast, musst du ein neues App-Passwort erstellen und verwenden, indem du hier klickst.", + "Use this address to access your Files via WebDAV." : "Diese Adresse verwenden, um über WebDAV auf deine Dateien zuzugreifen.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Für dein Konto ist die Zwei-Faktor-Authentifizierung aktiviert. Zur Verbindung eines externen WebDAV-Clients ist daher die Verwendung eines App-Passwortes erforderlich.", "Warnings" : "Warnungen", "Prevent warning dialogs from open or reenable them." : "Öffnen von Warndialogen verhindern oder diese erneut aktivieren.", "Show a warning dialog when changing a file extension." : "Beim Ändern einer Dateierweiterung einen Warndialog anzeigen.", @@ -330,6 +332,7 @@ "Templates" : "Vorlagen", "New template folder" : "Neuer Vorlagenordner", "In folder" : "Im Ordner", + "Search in all files" : "In allen Dateien suchen", "Search in folder: {folder}" : "Im Ordner suchen: {folder}", "One of the dropped files could not be processed" : "Eine der abgelegten Dateien konnte nicht verarbeitet werden", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Dein Browser unterstützt die Dateisystem-API nicht. Verzeichnisse werden nicht hochgeladen.", @@ -363,7 +366,7 @@ "No favorites yet" : "Noch keine Favoriten vorhanden", "Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die als Favoriten markiert werden, erscheinen hier", "List of your files and folders." : "Liste deiner Dateien und Ordner", - "All folders" : "Alle Ordner", + "Folder tree" : "Ordnerbaum", "List of your files and folders that are not shared." : "Liste deiner Dateien und Ordner, die nicht geteilt wurden.", "No personal files found" : "Keine persönlichen Dateien gefunden", "Files that are not shared will show up here." : "Dateien, die nicht geteilt wurden, werden hier angezeigt.", @@ -458,11 +461,14 @@ "Submitting fields…" : "Felder werden übermittelt…", "Filter filenames…" : "Dateinamen filtern…", "Enable the grid view" : "Kachelansicht aktivieren", + "Use this address to access your Files via WebDAV" : "Diese Adresse benutzen, um über WebDAV auf deine Dateien zuzugreifen.", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Wenn du 2FA aktiviert hast, musst du ein neues App-Passwort erstellen und verwenden, indem du hier klickst.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} Ordner","{folderCount} Ordner"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} Datei","{fileCount} Dateien"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 Datei und {folderCount} Ordner","1 Datei und {folderCount} Ordner"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} Datei und 1 Ordner","{fileCount} Dateien und 1 Ordner"], "{fileCount} files and {folderCount} folders" : "{fileCount} Dateien und {folderCount} Ordner", + "All folders" : "Alle Ordner", "Personal Files" : "Persönliche Dateien", "Text file" : "Textdatei", "New text file.txt" : "Neue Textdatei file.txt", diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js index 930a89c3fc2..6d4bd8a245b 100644 --- a/apps/files/l10n/de_DE.js +++ b/apps/files/l10n/de_DE.js @@ -201,16 +201,18 @@ OC.L10N.register( "Personal files" : "Persönliche Dateien", "Sort favorites first" : "Favoriten zuerst sortieren", "Sort folders before files" : "Ordner vor Dateien sortieren", + "Enable folder tree" : "Ordnerstruktur aktivieren", + "Visual settings" : "Anzeigeeinstellungen", "Show hidden files" : "Versteckte Dateien anzeigen", "Show file type column" : "Dateityp-Spalte anzeigen", "Crop image previews" : "Bildvorschauen zuschneiden", - "Enable folder tree" : "Ordnerstruktur aktivieren", + "Show files extensions" : "Dateierweiterungen anzeigen", "Additional settings" : "Zusätzliche Einstellungen", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV-URL", "Copy to clipboard" : "In die Zwischenablage kopieren", - "Use this address to access your Files via WebDAV" : "Benutzen Sie diese Adresse, um via WebDAV auf Ihre Dateien zuzugreifen.", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Wenn Sie 2FA aktiviert haben, müssen Sie ein neues App-Passwort erstellen und verwenden, indem Sie hier klicken.", + "Use this address to access your Files via WebDAV." : "Diese Adresse verwenden, um über WebDAV auf Ihre Dateien zuzugreifen.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Für Ihr Konto ist die Zwei-Faktor-Authentifizierung aktiviert. Zur Verbindung eines externen WebDAV-Clients ist daher die Verwendung eines App-Passwortes erforderlich.", "Warnings" : "Warnungen", "Prevent warning dialogs from open or reenable them." : "Öffnen von Warndialogen verhindern oder diese erneut aktivieren.", "Show a warning dialog when changing a file extension." : "Beim Ändern einer Dateierweiterung einen Warndialog anzeigen.", @@ -332,6 +334,7 @@ OC.L10N.register( "Templates" : "Vorlagen", "New template folder" : "Neuer Vorlagenordner", "In folder" : "Im Ordner", + "Search in all files" : "In allen Dateien suchen", "Search in folder: {folder}" : "Im Ordner suchen: {folder}", "One of the dropped files could not be processed" : "Eine der abgelegten Dateien konnte nicht verarbeitet werden", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Ihr Browser unterstützt die Dateisystem-API nicht. Verzeichnisse werden nicht hochgeladen", @@ -365,7 +368,7 @@ OC.L10N.register( "No favorites yet" : "Noch keine Favoriten vorhanden", "Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die Sie als Favoriten kennzeichnen, werden hier erscheinen", "List of your files and folders." : "Liste Ihrer Dateien und Ordner.", - "All folders" : "Alle Ordner", + "Folder tree" : "Ordnerbaum", "List of your files and folders that are not shared." : "Liste Ihrer Dateien und Ordner, die nicht geteilt wurden.", "No personal files found" : "Keine persönlichen Dateien gefunden", "Files that are not shared will show up here." : "Dateien, die nicht geteilt wurden, werden hier angezeigt.", @@ -460,11 +463,14 @@ OC.L10N.register( "Submitting fields…" : "Felder werden übermittelt…", "Filter filenames…" : "Dateinamen filtern…", "Enable the grid view" : "Kachelansicht aktivieren", + "Use this address to access your Files via WebDAV" : "Benutzen Sie diese Adresse, um via WebDAV auf Ihre Dateien zuzugreifen.", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Wenn Sie 2FA aktiviert haben, müssen Sie ein neues App-Passwort erstellen und verwenden, indem Sie hier klicken.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} Ordner","{folderCount} Ordner"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} Datei","{fileCount} Dateien"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 Datei und {folderCount} Ordner","1 Datei und {folderCount} Ordner"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} Datei und 1 Ordner","{fileCount} Dateien und 1 Ordner"], "{fileCount} files and {folderCount} folders" : "{fileCount} Dateien und {folderCount} Ordner", + "All folders" : "Alle Ordner", "Personal Files" : "Persönliche Dateien", "Text file" : "Textdatei", "New text file.txt" : "Neue Textdatei file.txt", diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json index 1be8cac0495..b79bee65de7 100644 --- a/apps/files/l10n/de_DE.json +++ b/apps/files/l10n/de_DE.json @@ -199,16 +199,18 @@ "Personal files" : "Persönliche Dateien", "Sort favorites first" : "Favoriten zuerst sortieren", "Sort folders before files" : "Ordner vor Dateien sortieren", + "Enable folder tree" : "Ordnerstruktur aktivieren", + "Visual settings" : "Anzeigeeinstellungen", "Show hidden files" : "Versteckte Dateien anzeigen", "Show file type column" : "Dateityp-Spalte anzeigen", "Crop image previews" : "Bildvorschauen zuschneiden", - "Enable folder tree" : "Ordnerstruktur aktivieren", + "Show files extensions" : "Dateierweiterungen anzeigen", "Additional settings" : "Zusätzliche Einstellungen", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV-URL", "Copy to clipboard" : "In die Zwischenablage kopieren", - "Use this address to access your Files via WebDAV" : "Benutzen Sie diese Adresse, um via WebDAV auf Ihre Dateien zuzugreifen.", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Wenn Sie 2FA aktiviert haben, müssen Sie ein neues App-Passwort erstellen und verwenden, indem Sie hier klicken.", + "Use this address to access your Files via WebDAV." : "Diese Adresse verwenden, um über WebDAV auf Ihre Dateien zuzugreifen.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Für Ihr Konto ist die Zwei-Faktor-Authentifizierung aktiviert. Zur Verbindung eines externen WebDAV-Clients ist daher die Verwendung eines App-Passwortes erforderlich.", "Warnings" : "Warnungen", "Prevent warning dialogs from open or reenable them." : "Öffnen von Warndialogen verhindern oder diese erneut aktivieren.", "Show a warning dialog when changing a file extension." : "Beim Ändern einer Dateierweiterung einen Warndialog anzeigen.", @@ -330,6 +332,7 @@ "Templates" : "Vorlagen", "New template folder" : "Neuer Vorlagenordner", "In folder" : "Im Ordner", + "Search in all files" : "In allen Dateien suchen", "Search in folder: {folder}" : "Im Ordner suchen: {folder}", "One of the dropped files could not be processed" : "Eine der abgelegten Dateien konnte nicht verarbeitet werden", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Ihr Browser unterstützt die Dateisystem-API nicht. Verzeichnisse werden nicht hochgeladen", @@ -363,7 +366,7 @@ "No favorites yet" : "Noch keine Favoriten vorhanden", "Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die Sie als Favoriten kennzeichnen, werden hier erscheinen", "List of your files and folders." : "Liste Ihrer Dateien und Ordner.", - "All folders" : "Alle Ordner", + "Folder tree" : "Ordnerbaum", "List of your files and folders that are not shared." : "Liste Ihrer Dateien und Ordner, die nicht geteilt wurden.", "No personal files found" : "Keine persönlichen Dateien gefunden", "Files that are not shared will show up here." : "Dateien, die nicht geteilt wurden, werden hier angezeigt.", @@ -458,11 +461,14 @@ "Submitting fields…" : "Felder werden übermittelt…", "Filter filenames…" : "Dateinamen filtern…", "Enable the grid view" : "Kachelansicht aktivieren", + "Use this address to access your Files via WebDAV" : "Benutzen Sie diese Adresse, um via WebDAV auf Ihre Dateien zuzugreifen.", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Wenn Sie 2FA aktiviert haben, müssen Sie ein neues App-Passwort erstellen und verwenden, indem Sie hier klicken.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} Ordner","{folderCount} Ordner"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} Datei","{fileCount} Dateien"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 Datei und {folderCount} Ordner","1 Datei und {folderCount} Ordner"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} Datei und 1 Ordner","{fileCount} Dateien und 1 Ordner"], "{fileCount} files and {folderCount} folders" : "{fileCount} Dateien und {folderCount} Ordner", + "All folders" : "Alle Ordner", "Personal Files" : "Persönliche Dateien", "Text file" : "Textdatei", "New text file.txt" : "Neue Textdatei file.txt", diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js index 4e506a4d0b0..c5009fc79a6 100644 --- a/apps/files/l10n/el.js +++ b/apps/files/l10n/el.js @@ -156,8 +156,6 @@ OC.L10N.register( "Additional settings" : "Επιπρόσθετες ρυθμίσεις", "WebDAV" : "WebDAV", "Copy to clipboard" : "Αντιγραφή στο πρόχειρο", - "Use this address to access your Files via WebDAV" : "Χρήση αυτής της διεύθυνση για πρόσβαση στα Αρχεία σας μέσω WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Εάν έχετε ενεργοποιήσει το 2FA, πρέπει να δημιουργήσετε και να χρησιμοποιήσετε έναν νέο κωδικό πρόσβασης εφαρμογής κάνοντας κλικ εδώ.", "Keyboard shortcuts" : "Συντομεύσεις πληκτρολογίου", "Selection" : "Επιλογή", "Navigation" : "Πλοήγηση", @@ -339,6 +337,8 @@ OC.L10N.register( "Upload (max. %s)" : "Μεταφόρτωση (max. %s)", "Filter filenames…" : "Φιλτράρετε τα ονόματα αρχείων...", "Enable the grid view" : "Ενεργοποίηση της προβολής πλέγματος", + "Use this address to access your Files via WebDAV" : "Χρήση αυτής της διεύθυνση για πρόσβαση στα Αρχεία σας μέσω WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Εάν έχετε ενεργοποιήσει το 2FA, πρέπει να δημιουργήσετε και να χρησιμοποιήσετε έναν νέο κωδικό πρόσβασης εφαρμογής κάνοντας κλικ εδώ.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} φάκελος","{folderCount} φακέλοι"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} αρχείο","{fileCount} αρχεία"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 αρχείο και {folderCount} φάκελος","1 αρχείο και {folderCount} φακέλοι"], diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json index c0a46a52758..0f3b86970ab 100644 --- a/apps/files/l10n/el.json +++ b/apps/files/l10n/el.json @@ -154,8 +154,6 @@ "Additional settings" : "Επιπρόσθετες ρυθμίσεις", "WebDAV" : "WebDAV", "Copy to clipboard" : "Αντιγραφή στο πρόχειρο", - "Use this address to access your Files via WebDAV" : "Χρήση αυτής της διεύθυνση για πρόσβαση στα Αρχεία σας μέσω WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Εάν έχετε ενεργοποιήσει το 2FA, πρέπει να δημιουργήσετε και να χρησιμοποιήσετε έναν νέο κωδικό πρόσβασης εφαρμογής κάνοντας κλικ εδώ.", "Keyboard shortcuts" : "Συντομεύσεις πληκτρολογίου", "Selection" : "Επιλογή", "Navigation" : "Πλοήγηση", @@ -337,6 +335,8 @@ "Upload (max. %s)" : "Μεταφόρτωση (max. %s)", "Filter filenames…" : "Φιλτράρετε τα ονόματα αρχείων...", "Enable the grid view" : "Ενεργοποίηση της προβολής πλέγματος", + "Use this address to access your Files via WebDAV" : "Χρήση αυτής της διεύθυνση για πρόσβαση στα Αρχεία σας μέσω WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Εάν έχετε ενεργοποιήσει το 2FA, πρέπει να δημιουργήσετε και να χρησιμοποιήσετε έναν νέο κωδικό πρόσβασης εφαρμογής κάνοντας κλικ εδώ.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} φάκελος","{folderCount} φακέλοι"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} αρχείο","{fileCount} αρχεία"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 αρχείο και {folderCount} φάκελος","1 αρχείο και {folderCount} φακέλοι"], diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js index 086e763f4ab..c15ce6e37cb 100644 --- a/apps/files/l10n/en_GB.js +++ b/apps/files/l10n/en_GB.js @@ -142,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Create new folder", "This name is already in use." : "This name is already in use.", "Create" : "Create", + "Files starting with a dot are hidden by default" : "Files starting with a dot are hidden by default", "Fill template fields" : "Fill template fields", "Submitting fields …" : "Submitting fields …", "Submit" : "Submit", @@ -200,16 +201,18 @@ OC.L10N.register( "Personal files" : "Personal files", "Sort favorites first" : "Sort favourites first", "Sort folders before files" : "Sort folders before files", + "Enable folder tree" : "Enable folder tree", + "Visual settings" : "Visual settings", "Show hidden files" : "Show hidden files", "Show file type column" : "Show file type column", "Crop image previews" : "Crop image previews", - "Enable folder tree" : "Enable folder tree", + "Show files extensions" : "Show files extensions", "Additional settings" : "Additional settings", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Copy to clipboard", - "Use this address to access your Files via WebDAV" : "Use this address to access your Files via WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "If you have enabled 2FA, you must create and use a new app password by clicking here.", + "Use this address to access your Files via WebDAV." : "Use this address to access your Files via WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client.", "Warnings" : "Warnings", "Prevent warning dialogs from open or reenable them." : "Prevent warning dialogues from opening or reenable them.", "Show a warning dialog when changing a file extension." : "Show a warning dialog when changing a file extension.", @@ -331,6 +334,7 @@ OC.L10N.register( "Templates" : "Templates", "New template folder" : "New template folder", "In folder" : "In folder", + "Search in all files" : "Search in all files", "Search in folder: {folder}" : "Search in folder: {folder}", "One of the dropped files could not be processed" : "One of the dropped files could not be processed", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Your browser does not support the Filesystem API. Directories will not be uploaded", @@ -364,7 +368,7 @@ OC.L10N.register( "No favorites yet" : "No favourites yet", "Files and folders you mark as favorite will show up here" : "Files and folders you mark as favourite will show up here", "List of your files and folders." : "List of your files and folders.", - "All folders" : "All folders", + "Folder tree" : "Folder tree", "List of your files and folders that are not shared." : "List of your files and folders that are not shared.", "No personal files found" : "No personal files found", "Files that are not shared will show up here." : "Files that are not shared will show up here.", @@ -459,11 +463,14 @@ OC.L10N.register( "Submitting fields…" : "Submitting fields…", "Filter filenames…" : "Filter filenames…", "Enable the grid view" : "Enable the grid view", + "Use this address to access your Files via WebDAV" : "Use this address to access your Files via WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "If you have enabled 2FA, you must create and use a new app password by clicking here.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} folder","{folderCount} folders"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} file","{fileCount} files"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 file and {folderCount} folder","1 file and {folderCount} folders"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} file and 1 folder","{fileCount} files and 1 folder"], "{fileCount} files and {folderCount} folders" : "{fileCount} files and {folderCount} folders", + "All folders" : "All folders", "Personal Files" : "Personal Files", "Text file" : "Text file", "New text file.txt" : "New text file.txt", diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json index 33d8c73111f..4e63e55f90a 100644 --- a/apps/files/l10n/en_GB.json +++ b/apps/files/l10n/en_GB.json @@ -140,6 +140,7 @@ "Create new folder" : "Create new folder", "This name is already in use." : "This name is already in use.", "Create" : "Create", + "Files starting with a dot are hidden by default" : "Files starting with a dot are hidden by default", "Fill template fields" : "Fill template fields", "Submitting fields …" : "Submitting fields …", "Submit" : "Submit", @@ -198,16 +199,18 @@ "Personal files" : "Personal files", "Sort favorites first" : "Sort favourites first", "Sort folders before files" : "Sort folders before files", + "Enable folder tree" : "Enable folder tree", + "Visual settings" : "Visual settings", "Show hidden files" : "Show hidden files", "Show file type column" : "Show file type column", "Crop image previews" : "Crop image previews", - "Enable folder tree" : "Enable folder tree", + "Show files extensions" : "Show files extensions", "Additional settings" : "Additional settings", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Copy to clipboard", - "Use this address to access your Files via WebDAV" : "Use this address to access your Files via WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "If you have enabled 2FA, you must create and use a new app password by clicking here.", + "Use this address to access your Files via WebDAV." : "Use this address to access your Files via WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client.", "Warnings" : "Warnings", "Prevent warning dialogs from open or reenable them." : "Prevent warning dialogues from opening or reenable them.", "Show a warning dialog when changing a file extension." : "Show a warning dialog when changing a file extension.", @@ -329,6 +332,7 @@ "Templates" : "Templates", "New template folder" : "New template folder", "In folder" : "In folder", + "Search in all files" : "Search in all files", "Search in folder: {folder}" : "Search in folder: {folder}", "One of the dropped files could not be processed" : "One of the dropped files could not be processed", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Your browser does not support the Filesystem API. Directories will not be uploaded", @@ -362,7 +366,7 @@ "No favorites yet" : "No favourites yet", "Files and folders you mark as favorite will show up here" : "Files and folders you mark as favourite will show up here", "List of your files and folders." : "List of your files and folders.", - "All folders" : "All folders", + "Folder tree" : "Folder tree", "List of your files and folders that are not shared." : "List of your files and folders that are not shared.", "No personal files found" : "No personal files found", "Files that are not shared will show up here." : "Files that are not shared will show up here.", @@ -457,11 +461,14 @@ "Submitting fields…" : "Submitting fields…", "Filter filenames…" : "Filter filenames…", "Enable the grid view" : "Enable the grid view", + "Use this address to access your Files via WebDAV" : "Use this address to access your Files via WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "If you have enabled 2FA, you must create and use a new app password by clicking here.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} folder","{folderCount} folders"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} file","{fileCount} files"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 file and {folderCount} folder","1 file and {folderCount} folders"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} file and 1 folder","{fileCount} files and 1 folder"], "{fileCount} files and {folderCount} folders" : "{fileCount} files and {folderCount} folders", + "All folders" : "All folders", "Personal Files" : "Personal Files", "Text file" : "Text file", "New text file.txt" : "New text file.txt", diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js index 391bbf5b859..6e32740a677 100644 --- a/apps/files/l10n/es.js +++ b/apps/files/l10n/es.js @@ -199,16 +199,14 @@ OC.L10N.register( "Personal files" : "Archivos personales", "Sort favorites first" : "Ordenar los favoritos primero", "Sort folders before files" : "Ordenar carpetas antes que archivos", + "Enable folder tree" : "Habilitar el árbol de carpetas", "Show hidden files" : "Mostrar archivos ocultos", "Show file type column" : "Mostrar la columna de tipo de archivo", "Crop image previews" : "Recortar la previsualización de las imágenes", - "Enable folder tree" : "Habilitar el árbol de carpetas", "Additional settings" : "Ajustes adicionales", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Copiar al portapapeles", - "Use this address to access your Files via WebDAV" : "Use esta dirección para acceder a tus archivos vía WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si ha habilitado 2FA, debe crear y utilizar una nueva contraseña de aplicación haciendo clic aquí.", "Warnings" : "Advertencias", "Prevent warning dialogs from open or reenable them." : "Evitar que se abran los diálogos de advertencia o volver a habilitarlos.", "Show a warning dialog when changing a file extension." : "Mostrar un diálogo de advertencia cuando se cambia la extensión de un archivo.", @@ -362,7 +360,6 @@ OC.L10N.register( "No favorites yet" : "Aún no hay favoritos", "Files and folders you mark as favorite will show up here" : "Aquí aparecerán los archivos y carpetas que has marcado como favoritos", "List of your files and folders." : "Lista de sus archivos y carpetas.", - "All folders" : "Todas las carpetas", "List of your files and folders that are not shared." : "Lista de sus archivos y carpetas que no están compartidos.", "No personal files found" : "No se encontraron archivos personales", "Files that are not shared will show up here." : "Los archivos y carpetas que no ha compartido aparecerán aquí.", @@ -457,11 +454,14 @@ OC.L10N.register( "Submitting fields…" : "Enviando campos…", "Filter filenames…" : "Filtrar nombres de archivo…", "Enable the grid view" : "Habilitar vista de cuadrícula", + "Use this address to access your Files via WebDAV" : "Use esta dirección para acceder a tus archivos vía WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si ha habilitado 2FA, debe crear y utilizar una nueva contraseña de aplicación haciendo clic aquí.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} carpeta","{folderCount} carpetas","{folderCount} carpetas"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} archivo","{fileCount} archivos","{fileCount} archivos"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 archivo y {folderCount} carpeta","1 archivo y {folderCount} carpetas","1 archivo y {folderCount} carpetas"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} archivo y 1 carpeta","{fileCount} archivos y 1 carpeta","{fileCount} archivos y 1 carpeta"], "{fileCount} files and {folderCount} folders" : "{fileCount} archivos y {folderCount} carpetas", + "All folders" : "Todas las carpetas", "Personal Files" : "Archivos Personales", "Text file" : "Archivo de texto", "New text file.txt" : "Nuevo archivo.txt", diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json index 1498a2fc8b9..c13b8161666 100644 --- a/apps/files/l10n/es.json +++ b/apps/files/l10n/es.json @@ -197,16 +197,14 @@ "Personal files" : "Archivos personales", "Sort favorites first" : "Ordenar los favoritos primero", "Sort folders before files" : "Ordenar carpetas antes que archivos", + "Enable folder tree" : "Habilitar el árbol de carpetas", "Show hidden files" : "Mostrar archivos ocultos", "Show file type column" : "Mostrar la columna de tipo de archivo", "Crop image previews" : "Recortar la previsualización de las imágenes", - "Enable folder tree" : "Habilitar el árbol de carpetas", "Additional settings" : "Ajustes adicionales", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Copiar al portapapeles", - "Use this address to access your Files via WebDAV" : "Use esta dirección para acceder a tus archivos vía WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si ha habilitado 2FA, debe crear y utilizar una nueva contraseña de aplicación haciendo clic aquí.", "Warnings" : "Advertencias", "Prevent warning dialogs from open or reenable them." : "Evitar que se abran los diálogos de advertencia o volver a habilitarlos.", "Show a warning dialog when changing a file extension." : "Mostrar un diálogo de advertencia cuando se cambia la extensión de un archivo.", @@ -360,7 +358,6 @@ "No favorites yet" : "Aún no hay favoritos", "Files and folders you mark as favorite will show up here" : "Aquí aparecerán los archivos y carpetas que has marcado como favoritos", "List of your files and folders." : "Lista de sus archivos y carpetas.", - "All folders" : "Todas las carpetas", "List of your files and folders that are not shared." : "Lista de sus archivos y carpetas que no están compartidos.", "No personal files found" : "No se encontraron archivos personales", "Files that are not shared will show up here." : "Los archivos y carpetas que no ha compartido aparecerán aquí.", @@ -455,11 +452,14 @@ "Submitting fields…" : "Enviando campos…", "Filter filenames…" : "Filtrar nombres de archivo…", "Enable the grid view" : "Habilitar vista de cuadrícula", + "Use this address to access your Files via WebDAV" : "Use esta dirección para acceder a tus archivos vía WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si ha habilitado 2FA, debe crear y utilizar una nueva contraseña de aplicación haciendo clic aquí.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} carpeta","{folderCount} carpetas","{folderCount} carpetas"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} archivo","{fileCount} archivos","{fileCount} archivos"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 archivo y {folderCount} carpeta","1 archivo y {folderCount} carpetas","1 archivo y {folderCount} carpetas"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} archivo y 1 carpeta","{fileCount} archivos y 1 carpeta","{fileCount} archivos y 1 carpeta"], "{fileCount} files and {folderCount} folders" : "{fileCount} archivos y {folderCount} carpetas", + "All folders" : "Todas las carpetas", "Personal Files" : "Archivos Personales", "Text file" : "Archivo de texto", "New text file.txt" : "Nuevo archivo.txt", diff --git a/apps/files/l10n/es_EC.js b/apps/files/l10n/es_EC.js index 37412a96b67..4308a1c4b61 100644 --- a/apps/files/l10n/es_EC.js +++ b/apps/files/l10n/es_EC.js @@ -125,8 +125,6 @@ OC.L10N.register( "Additional settings" : "Configuraciones adicionales", "WebDAV" : "WebDAV", "Copy to clipboard" : "Copiar al portapapeles", - "Use this address to access your Files via WebDAV" : "Usa esta dirección para acceder a tus archivos a través de WebDAV.", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si has habilitado la autenticación de dos factores (2FA), debes crear y usar una nueva contraseña de aplicación haciendo clic aquí.", "Keyboard shortcuts" : "Atajos del teclado", "Selection" : "Selección", "Navigation" : "Navegación", @@ -252,6 +250,8 @@ OC.L10N.register( "Upload file" : "Cargar archivo", "An error occurred while trying to update the tags" : "Se presentó un error al intentar actualizar la etiqueta", "Upload (max. %s)" : "Cargar (max. %s)", + "Use this address to access your Files via WebDAV" : "Usa esta dirección para acceder a tus archivos a través de WebDAV.", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si has habilitado la autenticación de dos factores (2FA), debes crear y usar una nueva contraseña de aplicación haciendo clic aquí.", "Text file" : "Archivo de texto", "New text file.txt" : "Nuevo ArchivoDeTexto.txt" }, diff --git a/apps/files/l10n/es_EC.json b/apps/files/l10n/es_EC.json index 1aab3813846..ef081f469df 100644 --- a/apps/files/l10n/es_EC.json +++ b/apps/files/l10n/es_EC.json @@ -123,8 +123,6 @@ "Additional settings" : "Configuraciones adicionales", "WebDAV" : "WebDAV", "Copy to clipboard" : "Copiar al portapapeles", - "Use this address to access your Files via WebDAV" : "Usa esta dirección para acceder a tus archivos a través de WebDAV.", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si has habilitado la autenticación de dos factores (2FA), debes crear y usar una nueva contraseña de aplicación haciendo clic aquí.", "Keyboard shortcuts" : "Atajos del teclado", "Selection" : "Selección", "Navigation" : "Navegación", @@ -250,6 +248,8 @@ "Upload file" : "Cargar archivo", "An error occurred while trying to update the tags" : "Se presentó un error al intentar actualizar la etiqueta", "Upload (max. %s)" : "Cargar (max. %s)", + "Use this address to access your Files via WebDAV" : "Usa esta dirección para acceder a tus archivos a través de WebDAV.", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si has habilitado la autenticación de dos factores (2FA), debes crear y usar una nueva contraseña de aplicación haciendo clic aquí.", "Text file" : "Archivo de texto", "New text file.txt" : "Nuevo ArchivoDeTexto.txt" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" diff --git a/apps/files/l10n/es_MX.js b/apps/files/l10n/es_MX.js index a1536fc579d..aed43af2bfb 100644 --- a/apps/files/l10n/es_MX.js +++ b/apps/files/l10n/es_MX.js @@ -168,15 +168,13 @@ OC.L10N.register( "Personal files" : "Archivos personales", "Sort favorites first" : "Ordenar los favoritos primero", "Sort folders before files" : "Ordenar carpetas antes que archivos", + "Enable folder tree" : "Habilitar el árbol de carpetas", "Show hidden files" : "Mostrar archivos ocultos", "Crop image previews" : "Recortar la previsualización de las imágenes", - "Enable folder tree" : "Habilitar el árbol de carpetas", "Additional settings" : "Configuraciones adicionales", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Copiar al portapapeles", - "Use this address to access your Files via WebDAV" : "Use esta dirección para acceder a tus archivos vía WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si ha habilitado 2FA, debe crear y utilizar una nueva contraseña de aplicación haciendo clic aquí.", "Keyboard shortcuts" : "Atajos del teclado", "Selection" : "Selección", "Navigation" : "Navegación", @@ -290,7 +288,6 @@ OC.L10N.register( "No favorites yet" : "Aún no hay favoritos", "Files and folders you mark as favorite will show up here" : "Los archivos y carpetas que marques como favoritos se mostrarán aquí. ", "List of your files and folders." : "Lista de sus archivos y carpetas.", - "All folders" : "Todas las carpetas", "List of your files and folders that are not shared." : "Lista de sus archivos y carpetas que no están compartidos.", "No personal files found" : "No se encontraron archivos personales", "Files that are not shared will show up here." : "Aquí aparecerán los archivos y carpetas que no ha compartido.", @@ -384,11 +381,14 @@ OC.L10N.register( "Submitting fields…" : "Enviando campos...", "Filter filenames…" : "Filtrar nombres de archivos...", "Enable the grid view" : "Habilitar la vista de cuadrícula", + "Use this address to access your Files via WebDAV" : "Use esta dirección para acceder a tus archivos vía WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si ha habilitado 2FA, debe crear y utilizar una nueva contraseña de aplicación haciendo clic aquí.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} carpeta","{folderCount} carpetas","{folderCount} carpetas"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} archivo","{fileCount} archivos","{fileCount} archivos"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 archivo y {folderCount} carpeta","1 archivo y {folderCount} carpetas","1 archivo y {folderCount} carpetas"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} archivo y 1 carpeta","{fileCount} archivos y 1 carpeta","{fileCount} archivos y 1 carpeta"], "{fileCount} files and {folderCount} folders" : "{fileCount} archivos y {folderCount} carpetas", + "All folders" : "Todas las carpetas", "Personal Files" : "Archivos personales", "Text file" : "Archivo de texto", "New text file.txt" : "Nuevo ArchivoDeTexto.txt" diff --git a/apps/files/l10n/es_MX.json b/apps/files/l10n/es_MX.json index 88da99c2174..dfcfd098653 100644 --- a/apps/files/l10n/es_MX.json +++ b/apps/files/l10n/es_MX.json @@ -166,15 +166,13 @@ "Personal files" : "Archivos personales", "Sort favorites first" : "Ordenar los favoritos primero", "Sort folders before files" : "Ordenar carpetas antes que archivos", + "Enable folder tree" : "Habilitar el árbol de carpetas", "Show hidden files" : "Mostrar archivos ocultos", "Crop image previews" : "Recortar la previsualización de las imágenes", - "Enable folder tree" : "Habilitar el árbol de carpetas", "Additional settings" : "Configuraciones adicionales", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Copiar al portapapeles", - "Use this address to access your Files via WebDAV" : "Use esta dirección para acceder a tus archivos vía WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si ha habilitado 2FA, debe crear y utilizar una nueva contraseña de aplicación haciendo clic aquí.", "Keyboard shortcuts" : "Atajos del teclado", "Selection" : "Selección", "Navigation" : "Navegación", @@ -288,7 +286,6 @@ "No favorites yet" : "Aún no hay favoritos", "Files and folders you mark as favorite will show up here" : "Los archivos y carpetas que marques como favoritos se mostrarán aquí. ", "List of your files and folders." : "Lista de sus archivos y carpetas.", - "All folders" : "Todas las carpetas", "List of your files and folders that are not shared." : "Lista de sus archivos y carpetas que no están compartidos.", "No personal files found" : "No se encontraron archivos personales", "Files that are not shared will show up here." : "Aquí aparecerán los archivos y carpetas que no ha compartido.", @@ -382,11 +379,14 @@ "Submitting fields…" : "Enviando campos...", "Filter filenames…" : "Filtrar nombres de archivos...", "Enable the grid view" : "Habilitar la vista de cuadrícula", + "Use this address to access your Files via WebDAV" : "Use esta dirección para acceder a tus archivos vía WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si ha habilitado 2FA, debe crear y utilizar una nueva contraseña de aplicación haciendo clic aquí.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} carpeta","{folderCount} carpetas","{folderCount} carpetas"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} archivo","{fileCount} archivos","{fileCount} archivos"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 archivo y {folderCount} carpeta","1 archivo y {folderCount} carpetas","1 archivo y {folderCount} carpetas"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} archivo y 1 carpeta","{fileCount} archivos y 1 carpeta","{fileCount} archivos y 1 carpeta"], "{fileCount} files and {folderCount} folders" : "{fileCount} archivos y {folderCount} carpetas", + "All folders" : "Todas las carpetas", "Personal Files" : "Archivos personales", "Text file" : "Archivo de texto", "New text file.txt" : "Nuevo ArchivoDeTexto.txt" diff --git a/apps/files/l10n/et_EE.js b/apps/files/l10n/et_EE.js index 5187d27f3a7..468585be827 100644 --- a/apps/files/l10n/et_EE.js +++ b/apps/files/l10n/et_EE.js @@ -201,16 +201,18 @@ OC.L10N.register( "Personal files" : "Isiklikud failid", "Sort favorites first" : "Järjesta lemmikud esimesena", "Sort folders before files" : "Järjesta kaustad enne faile", + "Enable folder tree" : "Võta kasutusele kaustapuu", + "Visual settings" : "Visuaalsed seadistused", "Show hidden files" : "Näita peidetud faile", "Show file type column" : "Näita failitüübi veergu", "Crop image previews" : "Kadreeri piltide eelvaated", - "Enable folder tree" : "Võta kasutusele kaustapuu", + "Show files extensions" : "Näita failide laiendusi", "Additional settings" : "Lisaseadistused", "WebDAV" : "WebDAV", "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 pead looma ja kasutama rakenduse uut salasõna klikates siia.", + "Use this address to access your Files via WebDAV." : "Oma failidele WebDAV-i kaudu ligipääsemiseks kasuta seda aadressi.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Kaheastmeline autentimine on sellel kontol kasutusel ja seega pead välise WebDAV-i kliendi jaoks kasutama rakenduse salasõna.", "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.", @@ -332,6 +334,7 @@ OC.L10N.register( "Templates" : "Mallid", "New template folder" : "Uus kaustamall", "In folder" : "Kaustas", + "Search in all files" : "Otsi kõikide failide seast", "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", @@ -365,7 +368,7 @@ OC.L10N.register( "No favorites yet" : "Lemmikuid veel pole", "Files and folders you mark as favorite will show up here" : "Siin kuvatakse faile ja kaustasid, mille oled märkinud lemmikuteks", "List of your files and folders." : "Sinu failide ja kaustade loend.", - "All folders" : "Kõik kaustad", + "Folder tree" : "Kaustapuu", "List of your files and folders that are not shared." : "Sinu mittejagatud failide ja kaustade loend", "No personal files found" : "Isiklikke faile ei leitud", "Files that are not shared will show up here." : "Siin kuvatakse faile ja kaustu, mida sa pole teistega jaganud.", @@ -460,11 +463,14 @@ OC.L10N.register( "Submitting fields…" : "Saadan välju…", "Filter filenames…" : "Otsi failinimesid…", "Enable the grid view" : "Võta kasutusele ruudustikuvaade", + "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 pead looma ja kasutama rakenduse uut salasõna klikates siia.", "_{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"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fail ja 1 kaust","{fileCount} faili ja 1 kaust"], "{fileCount} files and {folderCount} folders" : "{fileCount} faili ja {folderCount} kausta", + "All folders" : "Kõik kaustad", "Personal Files" : "Isiklikud Failid", "Text file" : "Tekstifail", "New text file.txt" : "Uus tekstifail.txt", diff --git a/apps/files/l10n/et_EE.json b/apps/files/l10n/et_EE.json index abb90455109..269ca142327 100644 --- a/apps/files/l10n/et_EE.json +++ b/apps/files/l10n/et_EE.json @@ -199,16 +199,18 @@ "Personal files" : "Isiklikud failid", "Sort favorites first" : "Järjesta lemmikud esimesena", "Sort folders before files" : "Järjesta kaustad enne faile", + "Enable folder tree" : "Võta kasutusele kaustapuu", + "Visual settings" : "Visuaalsed seadistused", "Show hidden files" : "Näita peidetud faile", "Show file type column" : "Näita failitüübi veergu", "Crop image previews" : "Kadreeri piltide eelvaated", - "Enable folder tree" : "Võta kasutusele kaustapuu", + "Show files extensions" : "Näita failide laiendusi", "Additional settings" : "Lisaseadistused", "WebDAV" : "WebDAV", "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 pead looma ja kasutama rakenduse uut salasõna klikates siia.", + "Use this address to access your Files via WebDAV." : "Oma failidele WebDAV-i kaudu ligipääsemiseks kasuta seda aadressi.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Kaheastmeline autentimine on sellel kontol kasutusel ja seega pead välise WebDAV-i kliendi jaoks kasutama rakenduse salasõna.", "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.", @@ -330,6 +332,7 @@ "Templates" : "Mallid", "New template folder" : "Uus kaustamall", "In folder" : "Kaustas", + "Search in all files" : "Otsi kõikide failide seast", "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", @@ -363,7 +366,7 @@ "No favorites yet" : "Lemmikuid veel pole", "Files and folders you mark as favorite will show up here" : "Siin kuvatakse faile ja kaustasid, mille oled märkinud lemmikuteks", "List of your files and folders." : "Sinu failide ja kaustade loend.", - "All folders" : "Kõik kaustad", + "Folder tree" : "Kaustapuu", "List of your files and folders that are not shared." : "Sinu mittejagatud failide ja kaustade loend", "No personal files found" : "Isiklikke faile ei leitud", "Files that are not shared will show up here." : "Siin kuvatakse faile ja kaustu, mida sa pole teistega jaganud.", @@ -458,11 +461,14 @@ "Submitting fields…" : "Saadan välju…", "Filter filenames…" : "Otsi failinimesid…", "Enable the grid view" : "Võta kasutusele ruudustikuvaade", + "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 pead looma ja kasutama rakenduse uut salasõna klikates siia.", "_{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"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fail ja 1 kaust","{fileCount} faili ja 1 kaust"], "{fileCount} files and {folderCount} folders" : "{fileCount} faili ja {folderCount} kausta", + "All folders" : "Kõik kaustad", "Personal Files" : "Isiklikud Failid", "Text file" : "Tekstifail", "New text file.txt" : "Uus tekstifail.txt", diff --git a/apps/files/l10n/eu.js b/apps/files/l10n/eu.js index 7ddbb25d5d4..bed4647b6a8 100644 --- a/apps/files/l10n/eu.js +++ b/apps/files/l10n/eu.js @@ -175,15 +175,13 @@ OC.L10N.register( "Personal files" : "Fitxategi pertsonalak", "Sort favorites first" : "Ordenatu gogokoak lehenengo", "Sort folders before files" : "Ordenatu karpetak fitxategien aurretik", + "Enable folder tree" : "Gaitu karpeta-zuhaitza", "Show hidden files" : "Erakutsi ezkutuko fitxategiak", "Crop image previews" : "Moztu irudien aurrebistak", - "Enable folder tree" : "Gaitu karpeta-zuhaitza", "Additional settings" : "Ezarpen gehiago", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URLa", "Copy to clipboard" : "Kopiatu arbelera", - "Use this address to access your Files via WebDAV" : "Erabili helbide hau WebDAV bidez zure fitxategietara sartzeko", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "2FA gaitu baduzu, aplikazioaren pasahitz berria sortu eta erabili behar duzu hemen klik eginez.", "Keyboard shortcuts" : "Teklatuaren lasterbideak", "Speed up your Files experience with these quick shortcuts." : "Azkartu zure Fitxategi esperientzia lasterbide bizkor hauekin", "Open the actions menu for a file" : "Ireki ekintza menua fitxategi baterako", @@ -317,7 +315,6 @@ OC.L10N.register( "No favorites yet" : "Gogokorik ez oraindik", "Files and folders you mark as favorite will show up here" : "Gogokotzat markatutako fitxategi eta karpetak hemen agertuko dira", "List of your files and folders." : "Zure fitxategi eta karpeten zerrenda.", - "All folders" : "Karpeta guztiak", "List of your files and folders that are not shared." : "Partekatu ez diren zure fitxategi eta karpeten zerrenda.", "No personal files found" : "Ez dago fitxategi pertsonalik", "Files that are not shared will show up here." : "Partekatu ez dituzun fitxategiak hemen agertuko dira", @@ -411,11 +408,14 @@ OC.L10N.register( "Submitting fields…" : "Eremuak bidaltzen…", "Filter filenames…" : "Iragazi fitxategi-izenak...", "Enable the grid view" : "Gaitu sareta ikuspegira", + "Use this address to access your Files via WebDAV" : "Erabili helbide hau WebDAV bidez zure fitxategietara sartzeko", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "2FA gaitu baduzu, aplikazioaren pasahitz berria sortu eta erabili behar duzu hemen klik eginez.", "_{folderCount} folder_::_{folderCount} folders_" : ["Karpeta {folderCount}","{folderCount} karpeta"], "_{fileCount} file_::_{fileCount} files_" : ["Fitxategi {fileCount}","{fileCount} fitxategi"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["Fitxategi 1 eta karpeta {folderCount}","Fitxategi 1 eta {folderCount} karpeta"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["Fitxategi {fileCount} eta karpeta 1","{fileCount} fitxategi eta karpeta 1"], "{fileCount} files and {folderCount} folders" : "{fileCount} fitxategi eta {folderCount} fitxategi", + "All folders" : "Karpeta guztiak", "Personal Files" : "Fitxategi pertsonalak", "Text file" : "Testu-fitxategia", "New text file.txt" : "Testu-fitxategi berria.txt" diff --git a/apps/files/l10n/eu.json b/apps/files/l10n/eu.json index 744fd082680..b8c6e24e337 100644 --- a/apps/files/l10n/eu.json +++ b/apps/files/l10n/eu.json @@ -173,15 +173,13 @@ "Personal files" : "Fitxategi pertsonalak", "Sort favorites first" : "Ordenatu gogokoak lehenengo", "Sort folders before files" : "Ordenatu karpetak fitxategien aurretik", + "Enable folder tree" : "Gaitu karpeta-zuhaitza", "Show hidden files" : "Erakutsi ezkutuko fitxategiak", "Crop image previews" : "Moztu irudien aurrebistak", - "Enable folder tree" : "Gaitu karpeta-zuhaitza", "Additional settings" : "Ezarpen gehiago", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URLa", "Copy to clipboard" : "Kopiatu arbelera", - "Use this address to access your Files via WebDAV" : "Erabili helbide hau WebDAV bidez zure fitxategietara sartzeko", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "2FA gaitu baduzu, aplikazioaren pasahitz berria sortu eta erabili behar duzu hemen klik eginez.", "Keyboard shortcuts" : "Teklatuaren lasterbideak", "Speed up your Files experience with these quick shortcuts." : "Azkartu zure Fitxategi esperientzia lasterbide bizkor hauekin", "Open the actions menu for a file" : "Ireki ekintza menua fitxategi baterako", @@ -315,7 +313,6 @@ "No favorites yet" : "Gogokorik ez oraindik", "Files and folders you mark as favorite will show up here" : "Gogokotzat markatutako fitxategi eta karpetak hemen agertuko dira", "List of your files and folders." : "Zure fitxategi eta karpeten zerrenda.", - "All folders" : "Karpeta guztiak", "List of your files and folders that are not shared." : "Partekatu ez diren zure fitxategi eta karpeten zerrenda.", "No personal files found" : "Ez dago fitxategi pertsonalik", "Files that are not shared will show up here." : "Partekatu ez dituzun fitxategiak hemen agertuko dira", @@ -409,11 +406,14 @@ "Submitting fields…" : "Eremuak bidaltzen…", "Filter filenames…" : "Iragazi fitxategi-izenak...", "Enable the grid view" : "Gaitu sareta ikuspegira", + "Use this address to access your Files via WebDAV" : "Erabili helbide hau WebDAV bidez zure fitxategietara sartzeko", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "2FA gaitu baduzu, aplikazioaren pasahitz berria sortu eta erabili behar duzu hemen klik eginez.", "_{folderCount} folder_::_{folderCount} folders_" : ["Karpeta {folderCount}","{folderCount} karpeta"], "_{fileCount} file_::_{fileCount} files_" : ["Fitxategi {fileCount}","{fileCount} fitxategi"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["Fitxategi 1 eta karpeta {folderCount}","Fitxategi 1 eta {folderCount} karpeta"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["Fitxategi {fileCount} eta karpeta 1","{fileCount} fitxategi eta karpeta 1"], "{fileCount} files and {folderCount} folders" : "{fileCount} fitxategi eta {folderCount} fitxategi", + "All folders" : "Karpeta guztiak", "Personal Files" : "Fitxategi pertsonalak", "Text file" : "Testu-fitxategia", "New text file.txt" : "Testu-fitxategi berria.txt" diff --git a/apps/files/l10n/fa.js b/apps/files/l10n/fa.js index 50a5c76fd91..b9bdbdd8108 100644 --- a/apps/files/l10n/fa.js +++ b/apps/files/l10n/fa.js @@ -192,16 +192,14 @@ OC.L10N.register( "Personal files" : "فایلهای شخصی", "Sort favorites first" : "ابتدا موارد دلخواه را مرتب کنید", "Sort folders before files" : "Sort folders before files", + "Enable folder tree" : "Enable folder tree", "Show hidden files" : "نمایش پروندههای مخفی", "Show file type column" : "Show file type column", "Crop image previews" : "پیش نمایش تصویر برش", - "Enable folder tree" : "Enable folder tree", "Additional settings" : "تنظیمات اضافی", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "کپی به کلیپ بورد", - "Use this address to access your Files via WebDAV" : "از این آدرس برای دسترسی به فایل های خود از طریق WebDAV استفاده کنید", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "اگر 2FA را فعال کرده اید، باید با کلیک کردن در اینجا یک رمز عبور برنامه جدید ایجاد و استفاده کنید.", "Warnings" : "Warnings", "Prevent warning dialogs from open or reenable them." : "Prevent warning dialogs from open or reenable them.", "Show a warning dialog when changing a file extension." : "Show a warning dialog when changing a file extension.", @@ -352,7 +350,6 @@ OC.L10N.register( "No favorites yet" : "هنوز مورد دلخواه وجود ندارد", "Files and folders you mark as favorite will show up here" : "فایلها و پوشههای انتخاب شده به عنوان برگزیده توسط شما، در اینجا نمایش داده میشود", "List of your files and folders." : "List of your files and folders.", - "All folders" : "All folders", "List of your files and folders that are not shared." : "List of your files and folders that are not shared.", "No personal files found" : "No personal files found", "Files that are not shared will show up here." : "Files that are not shared will show up here.", @@ -446,11 +443,14 @@ OC.L10N.register( "Submitting fields…" : "Submitting fields…", "Filter filenames…" : "Filter filenames…", "Enable the grid view" : "Enable the grid view", + "Use this address to access your Files via WebDAV" : "از این آدرس برای دسترسی به فایل های خود از طریق WebDAV استفاده کنید", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "اگر 2FA را فعال کرده اید، باید با کلیک کردن در اینجا یک رمز عبور برنامه جدید ایجاد و استفاده کنید.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} پوشه","{folderCount} پوشه"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} پرونده","{fileCount} پرونده"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 file and {folderCount} folder","1 file and {folderCount} folders"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} file and 1 folder","{fileCount} files and 1 folder"], "{fileCount} files and {folderCount} folders" : "{fileCount} files and {folderCount} folders", + "All folders" : "All folders", "Personal Files" : "Personal Files", "Text file" : "فایل متنی", "New text file.txt" : "پروندهٔ متنی جدید با پسوند txt", diff --git a/apps/files/l10n/fa.json b/apps/files/l10n/fa.json index b29437755f4..020ba5797da 100644 --- a/apps/files/l10n/fa.json +++ b/apps/files/l10n/fa.json @@ -190,16 +190,14 @@ "Personal files" : "فایلهای شخصی", "Sort favorites first" : "ابتدا موارد دلخواه را مرتب کنید", "Sort folders before files" : "Sort folders before files", + "Enable folder tree" : "Enable folder tree", "Show hidden files" : "نمایش پروندههای مخفی", "Show file type column" : "Show file type column", "Crop image previews" : "پیش نمایش تصویر برش", - "Enable folder tree" : "Enable folder tree", "Additional settings" : "تنظیمات اضافی", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "کپی به کلیپ بورد", - "Use this address to access your Files via WebDAV" : "از این آدرس برای دسترسی به فایل های خود از طریق WebDAV استفاده کنید", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "اگر 2FA را فعال کرده اید، باید با کلیک کردن در اینجا یک رمز عبور برنامه جدید ایجاد و استفاده کنید.", "Warnings" : "Warnings", "Prevent warning dialogs from open or reenable them." : "Prevent warning dialogs from open or reenable them.", "Show a warning dialog when changing a file extension." : "Show a warning dialog when changing a file extension.", @@ -350,7 +348,6 @@ "No favorites yet" : "هنوز مورد دلخواه وجود ندارد", "Files and folders you mark as favorite will show up here" : "فایلها و پوشههای انتخاب شده به عنوان برگزیده توسط شما، در اینجا نمایش داده میشود", "List of your files and folders." : "List of your files and folders.", - "All folders" : "All folders", "List of your files and folders that are not shared." : "List of your files and folders that are not shared.", "No personal files found" : "No personal files found", "Files that are not shared will show up here." : "Files that are not shared will show up here.", @@ -444,11 +441,14 @@ "Submitting fields…" : "Submitting fields…", "Filter filenames…" : "Filter filenames…", "Enable the grid view" : "Enable the grid view", + "Use this address to access your Files via WebDAV" : "از این آدرس برای دسترسی به فایل های خود از طریق WebDAV استفاده کنید", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "اگر 2FA را فعال کرده اید، باید با کلیک کردن در اینجا یک رمز عبور برنامه جدید ایجاد و استفاده کنید.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} پوشه","{folderCount} پوشه"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} پرونده","{fileCount} پرونده"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 file and {folderCount} folder","1 file and {folderCount} folders"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} file and 1 folder","{fileCount} files and 1 folder"], "{fileCount} files and {folderCount} folders" : "{fileCount} files and {folderCount} folders", + "All folders" : "All folders", "Personal Files" : "Personal Files", "Text file" : "فایل متنی", "New text file.txt" : "پروندهٔ متنی جدید با پسوند txt", diff --git a/apps/files/l10n/fi.js b/apps/files/l10n/fi.js index 603e354950c..f8843f2e7f5 100644 --- a/apps/files/l10n/fi.js +++ b/apps/files/l10n/fi.js @@ -56,7 +56,7 @@ OC.L10N.register( "More favorites" : "Lisää suosikeja", "Accept" : "Hyväksy", "Reject" : "Hylkää", - "Incoming ownership transfer from {user}" : "Saapuva omistajuussiirto käyttäjältä {user}", + "Incoming ownership transfer from {user}" : "Saapuva omistajuuden siirto käyttäjältä {user}", "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Hyväksytkö kohteen {path}?\n\nHuomio: Siirtotoimenpiteet hyväksynnän jälkeen saattavat kestää tunnin.", "Ownership transfer denied" : "Omistajuuden siirto kielletty", "Ownership transfer failed" : "Omistajuuden siirto epäonnistui", @@ -171,16 +171,14 @@ OC.L10N.register( "Personal files" : "Henkilökohtaiset tiedostot", "Sort favorites first" : "Järjestä suosikit ensiksi", "Sort folders before files" : "Järjestä kansiot ennen tiedostoja", + "Enable folder tree" : "Ota kansiopuu käyttöön", "Show hidden files" : "Näytä piilotetut tiedostot", "Show file type column" : "Näytä tiedostotyypin sarake", "Crop image previews" : "Rajaa kuvien esikatseluja", - "Enable folder tree" : "Ota kansiopuu käyttöön", "Additional settings" : "Lisäasetukset", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV:in URL-osoite", "Copy to clipboard" : "Kopioi leikepöydälle", - "Use this address to access your Files via WebDAV" : "Käytä tätä osoitetta yhdistääksesi tiedostosi WebDAV:in kautta", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Jos sinulla on kaksivaiheinen todennus käytössä, sinun täytyy luoda uusi sovellussalasana ja käyttää sitä napsauttamalla tästä.", "Warnings" : "Varoitukset", "Keyboard shortcuts" : "Pikanäppäimet", "Speed up your Files experience with these quick shortcuts." : "Nopeuta tiedostonhallinnan kokemusta näillä pikanäppäimillä.", @@ -313,7 +311,6 @@ OC.L10N.register( "No favorites yet" : "Ei vielä suosikkeja", "Files and folders you mark as favorite will show up here" : "Suosikeiksi merkitsemäsi tiedostot ja kansiot näkyvät täällä", "List of your files and folders." : "Luettelo tiedostoistasi ja kansioistasi.", - "All folders" : "Kaikki kansiot", "List of your files and folders that are not shared." : "Luettelo tiedostoistasi ja kansioistasi, joita ei ole jaettu.", "No personal files found" : "Henkilökohtaisia tiedostoja ei löytynyt", "Files that are not shared will show up here." : "Tiedostot, joita ei ole jasettu, näkyvät täällä.", @@ -404,11 +401,14 @@ OC.L10N.register( "Submitting fields…" : "Lähetetään tietoja...", "Filter filenames…" : "Suodata tiedostonimiä...", "Enable the grid view" : "Käytä ruudukkonäkymää", + "Use this address to access your Files via WebDAV" : "Käytä tätä osoitetta yhdistääksesi tiedostosi WebDAV:in kautta", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Jos sinulla on kaksivaiheinen todennus käytössä, sinun täytyy luoda uusi sovellussalasana ja käyttää sitä napsauttamalla tästä.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} kansio","{folderCount} kansiota"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} tiedosto","{fileCount} tiedostoa"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 tiedosto ja {folderCount} kansio","1 tiedosto ja {folderCount} kansiota"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} tiedosto ja 1 kansio","{fileCount} tiedostoa ja 1 kansio"], "{fileCount} files and {folderCount} folders" : "{fileCount} tiedostoa ja {folderCount} kansiota", + "All folders" : "Kaikki kansiot", "Personal Files" : "Henkilökohtaiset tiedostot", "Text file" : "Tekstitiedosto", "New text file.txt" : "Uusi tekstitiedosto.txt", diff --git a/apps/files/l10n/fi.json b/apps/files/l10n/fi.json index d0876aac932..f78821ec478 100644 --- a/apps/files/l10n/fi.json +++ b/apps/files/l10n/fi.json @@ -54,7 +54,7 @@ "More favorites" : "Lisää suosikeja", "Accept" : "Hyväksy", "Reject" : "Hylkää", - "Incoming ownership transfer from {user}" : "Saapuva omistajuussiirto käyttäjältä {user}", + "Incoming ownership transfer from {user}" : "Saapuva omistajuuden siirto käyttäjältä {user}", "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Hyväksytkö kohteen {path}?\n\nHuomio: Siirtotoimenpiteet hyväksynnän jälkeen saattavat kestää tunnin.", "Ownership transfer denied" : "Omistajuuden siirto kielletty", "Ownership transfer failed" : "Omistajuuden siirto epäonnistui", @@ -169,16 +169,14 @@ "Personal files" : "Henkilökohtaiset tiedostot", "Sort favorites first" : "Järjestä suosikit ensiksi", "Sort folders before files" : "Järjestä kansiot ennen tiedostoja", + "Enable folder tree" : "Ota kansiopuu käyttöön", "Show hidden files" : "Näytä piilotetut tiedostot", "Show file type column" : "Näytä tiedostotyypin sarake", "Crop image previews" : "Rajaa kuvien esikatseluja", - "Enable folder tree" : "Ota kansiopuu käyttöön", "Additional settings" : "Lisäasetukset", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV:in URL-osoite", "Copy to clipboard" : "Kopioi leikepöydälle", - "Use this address to access your Files via WebDAV" : "Käytä tätä osoitetta yhdistääksesi tiedostosi WebDAV:in kautta", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Jos sinulla on kaksivaiheinen todennus käytössä, sinun täytyy luoda uusi sovellussalasana ja käyttää sitä napsauttamalla tästä.", "Warnings" : "Varoitukset", "Keyboard shortcuts" : "Pikanäppäimet", "Speed up your Files experience with these quick shortcuts." : "Nopeuta tiedostonhallinnan kokemusta näillä pikanäppäimillä.", @@ -311,7 +309,6 @@ "No favorites yet" : "Ei vielä suosikkeja", "Files and folders you mark as favorite will show up here" : "Suosikeiksi merkitsemäsi tiedostot ja kansiot näkyvät täällä", "List of your files and folders." : "Luettelo tiedostoistasi ja kansioistasi.", - "All folders" : "Kaikki kansiot", "List of your files and folders that are not shared." : "Luettelo tiedostoistasi ja kansioistasi, joita ei ole jaettu.", "No personal files found" : "Henkilökohtaisia tiedostoja ei löytynyt", "Files that are not shared will show up here." : "Tiedostot, joita ei ole jasettu, näkyvät täällä.", @@ -402,11 +399,14 @@ "Submitting fields…" : "Lähetetään tietoja...", "Filter filenames…" : "Suodata tiedostonimiä...", "Enable the grid view" : "Käytä ruudukkonäkymää", + "Use this address to access your Files via WebDAV" : "Käytä tätä osoitetta yhdistääksesi tiedostosi WebDAV:in kautta", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Jos sinulla on kaksivaiheinen todennus käytössä, sinun täytyy luoda uusi sovellussalasana ja käyttää sitä napsauttamalla tästä.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} kansio","{folderCount} kansiota"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} tiedosto","{fileCount} tiedostoa"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 tiedosto ja {folderCount} kansio","1 tiedosto ja {folderCount} kansiota"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} tiedosto ja 1 kansio","{fileCount} tiedostoa ja 1 kansio"], "{fileCount} files and {folderCount} folders" : "{fileCount} tiedostoa ja {folderCount} kansiota", + "All folders" : "Kaikki kansiot", "Personal Files" : "Henkilökohtaiset tiedostot", "Text file" : "Tekstitiedosto", "New text file.txt" : "Uusi tekstitiedosto.txt", diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js index b5384fd1687..730c2fd7040 100644 --- a/apps/files/l10n/fr.js +++ b/apps/files/l10n/fr.js @@ -197,16 +197,14 @@ OC.L10N.register( "Personal files" : "Fichiers personnels", "Sort favorites first" : "Trier les favoris en premier", "Sort folders before files" : "Trier les dossiers avant les fichiers", + "Enable folder tree" : "Activer l'arborescence des dossiers", "Show hidden files" : "Montrer les fichiers masqués", "Show file type column" : "Afficher la colonne du type de fichier", "Crop image previews" : "Afficher en miniatures carrées", - "Enable folder tree" : "Activer l'arborescence des dossiers", "Additional settings" : "Paramètres supplémentaires", "WebDAV" : "WebDAV", "WebDAV URL" : "URL WebDAV", "Copy to clipboard" : "Copier dans le presse-papiers", - "Use this address to access your Files via WebDAV" : "Utilisez cette adresse pour accéder à vos fichiers via WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si vous avez activé le 2FA, vous devez créer et utiliser un nouveau mot de passe d'application en cliquant ici.", "Warnings" : "Avertissements", "Prevent warning dialogs from open or reenable them." : "Empêchez l'ouverture des boîtes de dialogue d'avertissement ou réactivez-les.", "Show a warning dialog when changing a file extension." : "Afficher un avertissement quand l'extension du fichier est modifiée.", @@ -234,7 +232,7 @@ OC.L10N.register( "Show those shortcuts" : "Montrer ces raccourcis", "You" : "Vous", "Shared multiple times with different people" : "Partagé plusieurs fois avec plusieurs personnes", - "Unable to change the favorite state of the file" : "Impossible de modifier l'état favori du fichier", + "Unable to change the favorite state of the file" : "Impossible de modifier l'état de mise en favori du fichier", "Error while loading the file data" : "Erreur lors du chargement du fichier de données", "Owner" : "Propriétaire", "Remove from favorites" : "Retirer des favoris", @@ -360,7 +358,6 @@ OC.L10N.register( "No favorites yet" : "Aucun favori pour l'instant", "Files and folders you mark as favorite will show up here" : "Les fichiers et dossiers ajoutés à vos favoris apparaîtront ici", "List of your files and folders." : "Liste de vos fichiers et dossiers.", - "All folders" : "Tous les dossiers", "List of your files and folders that are not shared." : "Liste de vos fichiers et dossiers non partagés.", "No personal files found" : "Aucun fichier personnel trouvé", "Files that are not shared will show up here." : "Les fichiers qui ne sont pas partagés apparaîtront ici.", @@ -455,11 +452,14 @@ OC.L10N.register( "Submitting fields…" : "Validation des champs...", "Filter filenames…" : "Filtrer par nom de fichier…", "Enable the grid view" : "Activer la vue en grille", + "Use this address to access your Files via WebDAV" : "Utilisez cette adresse pour accéder à vos fichiers via WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si vous avez activé le 2FA, vous devez créer et utiliser un nouveau mot de passe d'application en cliquant ici.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} dossier","{folderCount} dossiers","{folderCount} dossiers"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fichier","{fileCount} fichiers","{fileCount} fichiers"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fichier et {folderCount} dossier","1 fichier et {folderCount} dossiers","1 fichier et {folderCount} dossiers"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fichier et 1 dossier","{fileCount} fichiers et 1 dossier","{fileCount} fichiers et 1 dossier"], "{fileCount} files and {folderCount} folders" : "{fileCount} fichiers et {folderCount} dossiers", + "All folders" : "Tous les dossiers", "Personal Files" : "Fichiers personnels", "Text file" : "Fichier texte", "New text file.txt" : "Nouveau fichier texte.txt", diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json index 10ef7c45cae..6e13b6f0153 100644 --- a/apps/files/l10n/fr.json +++ b/apps/files/l10n/fr.json @@ -195,16 +195,14 @@ "Personal files" : "Fichiers personnels", "Sort favorites first" : "Trier les favoris en premier", "Sort folders before files" : "Trier les dossiers avant les fichiers", + "Enable folder tree" : "Activer l'arborescence des dossiers", "Show hidden files" : "Montrer les fichiers masqués", "Show file type column" : "Afficher la colonne du type de fichier", "Crop image previews" : "Afficher en miniatures carrées", - "Enable folder tree" : "Activer l'arborescence des dossiers", "Additional settings" : "Paramètres supplémentaires", "WebDAV" : "WebDAV", "WebDAV URL" : "URL WebDAV", "Copy to clipboard" : "Copier dans le presse-papiers", - "Use this address to access your Files via WebDAV" : "Utilisez cette adresse pour accéder à vos fichiers via WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si vous avez activé le 2FA, vous devez créer et utiliser un nouveau mot de passe d'application en cliquant ici.", "Warnings" : "Avertissements", "Prevent warning dialogs from open or reenable them." : "Empêchez l'ouverture des boîtes de dialogue d'avertissement ou réactivez-les.", "Show a warning dialog when changing a file extension." : "Afficher un avertissement quand l'extension du fichier est modifiée.", @@ -232,7 +230,7 @@ "Show those shortcuts" : "Montrer ces raccourcis", "You" : "Vous", "Shared multiple times with different people" : "Partagé plusieurs fois avec plusieurs personnes", - "Unable to change the favorite state of the file" : "Impossible de modifier l'état favori du fichier", + "Unable to change the favorite state of the file" : "Impossible de modifier l'état de mise en favori du fichier", "Error while loading the file data" : "Erreur lors du chargement du fichier de données", "Owner" : "Propriétaire", "Remove from favorites" : "Retirer des favoris", @@ -358,7 +356,6 @@ "No favorites yet" : "Aucun favori pour l'instant", "Files and folders you mark as favorite will show up here" : "Les fichiers et dossiers ajoutés à vos favoris apparaîtront ici", "List of your files and folders." : "Liste de vos fichiers et dossiers.", - "All folders" : "Tous les dossiers", "List of your files and folders that are not shared." : "Liste de vos fichiers et dossiers non partagés.", "No personal files found" : "Aucun fichier personnel trouvé", "Files that are not shared will show up here." : "Les fichiers qui ne sont pas partagés apparaîtront ici.", @@ -453,11 +450,14 @@ "Submitting fields…" : "Validation des champs...", "Filter filenames…" : "Filtrer par nom de fichier…", "Enable the grid view" : "Activer la vue en grille", + "Use this address to access your Files via WebDAV" : "Utilisez cette adresse pour accéder à vos fichiers via WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si vous avez activé le 2FA, vous devez créer et utiliser un nouveau mot de passe d'application en cliquant ici.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} dossier","{folderCount} dossiers","{folderCount} dossiers"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fichier","{fileCount} fichiers","{fileCount} fichiers"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fichier et {folderCount} dossier","1 fichier et {folderCount} dossiers","1 fichier et {folderCount} dossiers"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fichier et 1 dossier","{fileCount} fichiers et 1 dossier","{fileCount} fichiers et 1 dossier"], "{fileCount} files and {folderCount} folders" : "{fileCount} fichiers et {folderCount} dossiers", + "All folders" : "Tous les dossiers", "Personal Files" : "Fichiers personnels", "Text file" : "Fichier texte", "New text file.txt" : "Nouveau fichier texte.txt", diff --git a/apps/files/l10n/ga.js b/apps/files/l10n/ga.js index b872f9b4c48..82bb33b20ef 100644 --- a/apps/files/l10n/ga.js +++ b/apps/files/l10n/ga.js @@ -129,6 +129,7 @@ OC.L10N.register( "Search globally by filename …" : "Cuardaigh go domhanda de réir ainm comhaid …", "Search here by filename …" : "Cuardaigh anseo de réir ainm comhaid …", "Search scope options" : "Roghanna raon feidhme cuardaigh", + "Filter and search from this location" : "Scag agus déan cuardach ón suíomh seo", "Search globally" : "Cuardaigh go domhanda", "{usedQuotaByte} used" : "{usedQuotaByte} úsáidte", "{used} of {quota} used" : "{used} de {quota} in úsáid", @@ -141,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Cruthaigh fillteán nua", "This name is already in use." : "Tá an t-ainm seo in úsáid cheana féin.", "Create" : "Cruthaigh", + "Files starting with a dot are hidden by default" : "Bíonn comhaid a thosaíonn le ponc i bhfolach de réir réamhshocraithe", "Fill template fields" : "Líon réimsí teimpléid", "Submitting fields …" : "Réimsí á gcur isteach…", "Submit" : "Cuir isteach", @@ -199,19 +201,22 @@ OC.L10N.register( "Personal files" : "Comhaid phearsanta", "Sort favorites first" : "Sórtáil na cinn is ansa leat ar dtús", "Sort folders before files" : "Sórtáil fillteáin roimh chomhaid", + "Enable folder tree" : "Cumasaigh crann fillteáin", + "Visual settings" : "Socruithe amhairc", "Show hidden files" : "Taispeáin comhaid i bhfolach", "Show file type column" : "Taispeáin colún cineál comhaid", "Crop image previews" : "Réamhamhairc íomhá barr", - "Enable folder tree" : "Cumasaigh crann fillteáin", + "Show files extensions" : "Taispeáin síntí comhad", "Additional settings" : "Socruithe breise", "WebDAV" : "WebDAV", "WebDAV URL" : "URL WebDAV", "Copy to clipboard" : "Cóipeáil chuig an ngearrthaisce", - "Use this address to access your Files via WebDAV" : "Úsáid an seoladh seo chun do Chomhaid a rochtain trí WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Má tá 2FA cumasaithe agat, ní mór duit pasfhocal aip nua a chruthú agus a úsáid trí chliceáil anseo.", + "Use this address to access your Files via WebDAV." : "Úsáid an seoladh seo chun rochtain a fháil ar do Chomhaid trí WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Tá Fíordheimhniú Dhá Fhachtóir cumasaithe do do chuntas, agus dá bhrí sin ní mór duit pasfhocal aipe a úsáid chun cliant seachtrach WebDAV a nascadh.", "Warnings" : "Rabhaidh", "Prevent warning dialogs from open or reenable them." : "Cosc a chur ar dialóga rabhaidh ó iad a oscailt nó iad a athchumasú.", "Show a warning dialog when changing a file extension." : "Taispeáin dialóg rabhaidh nuair a athraítear síneadh comhad.", + "Show a warning dialog when deleting files." : "Taispeáin comhrá rabhaidh agus comhaid á scriosadh.", "Keyboard shortcuts" : "Aicearraí méarchláir", "Speed up your Files experience with these quick shortcuts." : "Déan do thaithí Comhaid a bhrostú leis na haicearraí tapa seo.", "Open the actions menu for a file" : "Oscail an roghchlár gníomhartha le haghaidh comhad", @@ -329,6 +334,7 @@ OC.L10N.register( "Templates" : "Teimpléid", "New template folder" : "Fillteán teimpléid nua", "In folder" : "I bhfillteán", + "Search in all files" : "Cuardaigh i ngach comhad", "Search in folder: {folder}" : "Cuardaigh i bhfillteán: {folder}", "One of the dropped files could not be processed" : "Níorbh fhéidir ceann de na comhaid a thit a phróiseáil", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Ní thacaíonn do bhrabhsálaí leis an API System File. Ní dhéanfar eolaire a uaslódáil", @@ -362,7 +368,7 @@ OC.L10N.register( "No favorites yet" : "Níl aon cheanáin go fóill", "Files and folders you mark as favorite will show up here" : "Taispeánfar comhaid agus fillteáin a mharcálann tú mar is fearr leat anseo", "List of your files and folders." : "Liosta de do chuid comhad agus fillteáin.", - "All folders" : "Gach fillteáin", + "Folder tree" : "Crann fillteán", "List of your files and folders that are not shared." : "Liosta de do chuid comhad agus fillteáin nach bhfuil roinnte.", "No personal files found" : "Níor aimsíodh aon chomhaid phearsanta", "Files that are not shared will show up here." : "Taispeánfar comhaid nach bhfuil roinnte anseo.", @@ -457,11 +463,14 @@ OC.L10N.register( "Submitting fields…" : "Réimsí á gcur isteach…", "Filter filenames…" : "Scag ainmneacha comhaid…", "Enable the grid view" : "Cumasaigh an radharc greille", + "Use this address to access your Files via WebDAV" : "Úsáid an seoladh seo chun do Chomhaid a rochtain trí WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Má tá 2FA cumasaithe agat, ní mór duit pasfhocal aip nua a chruthú agus a úsáid trí chliceáil anseo.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} fillteán","{folderCount} fillteáin","{folderCount} fillteáin","{folderCount} fillteáin","{folderCount} fillteáin"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} comhad","{fileCount} comhaid","{fileCount} comhaid","{fileCount} comhaid","{fileCount} comhaid"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 chomhad agus {folderCount} fillteán","1 chomhad agus {folderCount} fillteáin","1 chomhad agus {folderCount} fillteáin","1 chomhad agus {folderCount} fillteáin","1 chomhad agus {folderCount} fillteáin"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} comhad agus 1 fillteán","{fileCount} comhaid agus 1 fillteán","{fileCount} comhaid agus 1 fillteán","{fileCount} comhaid agus 1 fillteán","{fileCount} comhaid agus 1 fillteán"], "{fileCount} files and {folderCount} folders" : "comhaid {fileCount} agus fillteáin {folderCount}", + "All folders" : "Gach fillteáin", "Personal Files" : "Comhaid Phearsanta", "Text file" : "Comhad téacs", "New text file.txt" : "Comhad téacs nua.txt", diff --git a/apps/files/l10n/ga.json b/apps/files/l10n/ga.json index c71888d8c2b..ca318d2ab22 100644 --- a/apps/files/l10n/ga.json +++ b/apps/files/l10n/ga.json @@ -127,6 +127,7 @@ "Search globally by filename …" : "Cuardaigh go domhanda de réir ainm comhaid …", "Search here by filename …" : "Cuardaigh anseo de réir ainm comhaid …", "Search scope options" : "Roghanna raon feidhme cuardaigh", + "Filter and search from this location" : "Scag agus déan cuardach ón suíomh seo", "Search globally" : "Cuardaigh go domhanda", "{usedQuotaByte} used" : "{usedQuotaByte} úsáidte", "{used} of {quota} used" : "{used} de {quota} in úsáid", @@ -139,6 +140,7 @@ "Create new folder" : "Cruthaigh fillteán nua", "This name is already in use." : "Tá an t-ainm seo in úsáid cheana féin.", "Create" : "Cruthaigh", + "Files starting with a dot are hidden by default" : "Bíonn comhaid a thosaíonn le ponc i bhfolach de réir réamhshocraithe", "Fill template fields" : "Líon réimsí teimpléid", "Submitting fields …" : "Réimsí á gcur isteach…", "Submit" : "Cuir isteach", @@ -197,19 +199,22 @@ "Personal files" : "Comhaid phearsanta", "Sort favorites first" : "Sórtáil na cinn is ansa leat ar dtús", "Sort folders before files" : "Sórtáil fillteáin roimh chomhaid", + "Enable folder tree" : "Cumasaigh crann fillteáin", + "Visual settings" : "Socruithe amhairc", "Show hidden files" : "Taispeáin comhaid i bhfolach", "Show file type column" : "Taispeáin colún cineál comhaid", "Crop image previews" : "Réamhamhairc íomhá barr", - "Enable folder tree" : "Cumasaigh crann fillteáin", + "Show files extensions" : "Taispeáin síntí comhad", "Additional settings" : "Socruithe breise", "WebDAV" : "WebDAV", "WebDAV URL" : "URL WebDAV", "Copy to clipboard" : "Cóipeáil chuig an ngearrthaisce", - "Use this address to access your Files via WebDAV" : "Úsáid an seoladh seo chun do Chomhaid a rochtain trí WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Má tá 2FA cumasaithe agat, ní mór duit pasfhocal aip nua a chruthú agus a úsáid trí chliceáil anseo.", + "Use this address to access your Files via WebDAV." : "Úsáid an seoladh seo chun rochtain a fháil ar do Chomhaid trí WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Tá Fíordheimhniú Dhá Fhachtóir cumasaithe do do chuntas, agus dá bhrí sin ní mór duit pasfhocal aipe a úsáid chun cliant seachtrach WebDAV a nascadh.", "Warnings" : "Rabhaidh", "Prevent warning dialogs from open or reenable them." : "Cosc a chur ar dialóga rabhaidh ó iad a oscailt nó iad a athchumasú.", "Show a warning dialog when changing a file extension." : "Taispeáin dialóg rabhaidh nuair a athraítear síneadh comhad.", + "Show a warning dialog when deleting files." : "Taispeáin comhrá rabhaidh agus comhaid á scriosadh.", "Keyboard shortcuts" : "Aicearraí méarchláir", "Speed up your Files experience with these quick shortcuts." : "Déan do thaithí Comhaid a bhrostú leis na haicearraí tapa seo.", "Open the actions menu for a file" : "Oscail an roghchlár gníomhartha le haghaidh comhad", @@ -327,6 +332,7 @@ "Templates" : "Teimpléid", "New template folder" : "Fillteán teimpléid nua", "In folder" : "I bhfillteán", + "Search in all files" : "Cuardaigh i ngach comhad", "Search in folder: {folder}" : "Cuardaigh i bhfillteán: {folder}", "One of the dropped files could not be processed" : "Níorbh fhéidir ceann de na comhaid a thit a phróiseáil", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Ní thacaíonn do bhrabhsálaí leis an API System File. Ní dhéanfar eolaire a uaslódáil", @@ -360,7 +366,7 @@ "No favorites yet" : "Níl aon cheanáin go fóill", "Files and folders you mark as favorite will show up here" : "Taispeánfar comhaid agus fillteáin a mharcálann tú mar is fearr leat anseo", "List of your files and folders." : "Liosta de do chuid comhad agus fillteáin.", - "All folders" : "Gach fillteáin", + "Folder tree" : "Crann fillteán", "List of your files and folders that are not shared." : "Liosta de do chuid comhad agus fillteáin nach bhfuil roinnte.", "No personal files found" : "Níor aimsíodh aon chomhaid phearsanta", "Files that are not shared will show up here." : "Taispeánfar comhaid nach bhfuil roinnte anseo.", @@ -455,11 +461,14 @@ "Submitting fields…" : "Réimsí á gcur isteach…", "Filter filenames…" : "Scag ainmneacha comhaid…", "Enable the grid view" : "Cumasaigh an radharc greille", + "Use this address to access your Files via WebDAV" : "Úsáid an seoladh seo chun do Chomhaid a rochtain trí WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Má tá 2FA cumasaithe agat, ní mór duit pasfhocal aip nua a chruthú agus a úsáid trí chliceáil anseo.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} fillteán","{folderCount} fillteáin","{folderCount} fillteáin","{folderCount} fillteáin","{folderCount} fillteáin"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} comhad","{fileCount} comhaid","{fileCount} comhaid","{fileCount} comhaid","{fileCount} comhaid"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 chomhad agus {folderCount} fillteán","1 chomhad agus {folderCount} fillteáin","1 chomhad agus {folderCount} fillteáin","1 chomhad agus {folderCount} fillteáin","1 chomhad agus {folderCount} fillteáin"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} comhad agus 1 fillteán","{fileCount} comhaid agus 1 fillteán","{fileCount} comhaid agus 1 fillteán","{fileCount} comhaid agus 1 fillteán","{fileCount} comhaid agus 1 fillteán"], "{fileCount} files and {folderCount} folders" : "comhaid {fileCount} agus fillteáin {folderCount}", + "All folders" : "Gach fillteáin", "Personal Files" : "Comhaid Phearsanta", "Text file" : "Comhad téacs", "New text file.txt" : "Comhad téacs nua.txt", diff --git a/apps/files/l10n/gl.js b/apps/files/l10n/gl.js index 9311626fb89..0ea51f11370 100644 --- a/apps/files/l10n/gl.js +++ b/apps/files/l10n/gl.js @@ -185,15 +185,13 @@ OC.L10N.register( "Personal files" : "Ficheiros persoais", "Sort favorites first" : "Ordene antes os favoritos", "Sort folders before files" : "Ordenar os cartafoles diante dos ficheiros", + "Enable folder tree" : "Activar a árbore de cartafoles", "Show hidden files" : "Amosar os ficheiros agochados", "Crop image previews" : "Recortar a vista previa das imaxes", - "Enable folder tree" : "Activar a árbore de cartafoles", "Additional settings" : "Axustes adicionais", "WebDAV" : "WebDAV", "WebDAV URL" : "URL de WebDAV", "Copy to clipboard" : "Copiar no portapapeis.", - "Use this address to access your Files via WebDAV" : "Empregue este enderezo para acceder ao seu Ficheiros mediante WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Se activou 2FA, cree e utilice un novo contrasinal de aplicación premendo aquí.", "Warnings" : "Advertencias", "Prevent warning dialogs from open or reenable them." : "Impedir abrir ou reactivar os diálogos de advertencia", "Show a warning dialog when changing a file extension." : "Amosar un diálogo de advertencia ao cambiar unha extensión de ficheiro.", @@ -344,7 +342,6 @@ OC.L10N.register( "No favorites yet" : "Aínda non hai favoritos", "Files and folders you mark as favorite will show up here" : "Os ficheiros e cartafoles que marque como favoritos amosaranse aquí", "List of your files and folders." : "Lista dos seus ficheiros e cartafoles", - "All folders" : "Todos os cartafoles", "List of your files and folders that are not shared." : "Lista dos seus ficheiros e cartafoles que non están a seren compartidos.", "No personal files found" : "Non se atopou ningún ficheiro persoal", "Files that are not shared will show up here." : "Os ficheiros que non se comparten amosaranse aquí.", @@ -438,11 +435,14 @@ OC.L10N.register( "Submitting fields…" : "Enviando os campos...", "Filter filenames…" : "Filtrar os nomes de ficheiro…", "Enable the grid view" : "Activar á vista de grade", + "Use this address to access your Files via WebDAV" : "Empregue este enderezo para acceder ao seu Ficheiros mediante WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Se activou 2FA, cree e utilice un novo contrasinal de aplicación premendo aquí.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} cartafol","{folderCount} cartafoles"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} ficheiro","{fileCount} ficheiros"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 ficheiro e {folderCount} cartafol","1 ficheiro e {folderCount} cartafoles"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} ficheiro e 1 cartafol","{fileCount} ficheiros e 1 cartafol"], "{fileCount} files and {folderCount} folders" : "{fileCount} ficheiros e {folderCount} cartafoles", + "All folders" : "Todos os cartafoles", "Personal Files" : "Ficheiros persoais", "Text file" : "Ficheiro de texto", "New text file.txt" : "Novo ficheiro de texto.txt", diff --git a/apps/files/l10n/gl.json b/apps/files/l10n/gl.json index a39f32c834d..cc048cc2145 100644 --- a/apps/files/l10n/gl.json +++ b/apps/files/l10n/gl.json @@ -183,15 +183,13 @@ "Personal files" : "Ficheiros persoais", "Sort favorites first" : "Ordene antes os favoritos", "Sort folders before files" : "Ordenar os cartafoles diante dos ficheiros", + "Enable folder tree" : "Activar a árbore de cartafoles", "Show hidden files" : "Amosar os ficheiros agochados", "Crop image previews" : "Recortar a vista previa das imaxes", - "Enable folder tree" : "Activar a árbore de cartafoles", "Additional settings" : "Axustes adicionais", "WebDAV" : "WebDAV", "WebDAV URL" : "URL de WebDAV", "Copy to clipboard" : "Copiar no portapapeis.", - "Use this address to access your Files via WebDAV" : "Empregue este enderezo para acceder ao seu Ficheiros mediante WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Se activou 2FA, cree e utilice un novo contrasinal de aplicación premendo aquí.", "Warnings" : "Advertencias", "Prevent warning dialogs from open or reenable them." : "Impedir abrir ou reactivar os diálogos de advertencia", "Show a warning dialog when changing a file extension." : "Amosar un diálogo de advertencia ao cambiar unha extensión de ficheiro.", @@ -342,7 +340,6 @@ "No favorites yet" : "Aínda non hai favoritos", "Files and folders you mark as favorite will show up here" : "Os ficheiros e cartafoles que marque como favoritos amosaranse aquí", "List of your files and folders." : "Lista dos seus ficheiros e cartafoles", - "All folders" : "Todos os cartafoles", "List of your files and folders that are not shared." : "Lista dos seus ficheiros e cartafoles que non están a seren compartidos.", "No personal files found" : "Non se atopou ningún ficheiro persoal", "Files that are not shared will show up here." : "Os ficheiros que non se comparten amosaranse aquí.", @@ -436,11 +433,14 @@ "Submitting fields…" : "Enviando os campos...", "Filter filenames…" : "Filtrar os nomes de ficheiro…", "Enable the grid view" : "Activar á vista de grade", + "Use this address to access your Files via WebDAV" : "Empregue este enderezo para acceder ao seu Ficheiros mediante WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Se activou 2FA, cree e utilice un novo contrasinal de aplicación premendo aquí.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} cartafol","{folderCount} cartafoles"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} ficheiro","{fileCount} ficheiros"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 ficheiro e {folderCount} cartafol","1 ficheiro e {folderCount} cartafoles"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} ficheiro e 1 cartafol","{fileCount} ficheiros e 1 cartafol"], "{fileCount} files and {folderCount} folders" : "{fileCount} ficheiros e {folderCount} cartafoles", + "All folders" : "Todos os cartafoles", "Personal Files" : "Ficheiros persoais", "Text file" : "Ficheiro de texto", "New text file.txt" : "Novo ficheiro de texto.txt", diff --git a/apps/files/l10n/hu.js b/apps/files/l10n/hu.js index bb8ba7e08e6..145d4060b98 100644 --- a/apps/files/l10n/hu.js +++ b/apps/files/l10n/hu.js @@ -193,16 +193,14 @@ OC.L10N.register( "Personal files" : "Személyes fájlok", "Sort favorites first" : "Kedvencek előre rendezése", "Sort folders before files" : "Mappák fájlok elé rendezése", + "Enable folder tree" : "Mappafa engedélyezése", "Show hidden files" : "Rejtett fájlok megjelenítése", "Show file type column" : "Fájltípus oszlop megjelenítése", "Crop image previews" : "Kép előnézetek vágása", - "Enable folder tree" : "Mappafa engedélyezése", "Additional settings" : "További beállítások", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV-webcím", "Copy to clipboard" : "Másolás a vágólapra", - "Use this address to access your Files via WebDAV" : "Ezzel a címmel férhet hozzá a Fájlokhoz a WebDAV-on keresztül", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ha engedélyezte a kétfaktoros hitelesítést, akkor kattintson ide, hogy létrehozzon egy új alkalmazásjelszót, és azt használja.", "Warnings" : "Figyelmeztetések", "Prevent warning dialogs from open or reenable them." : "Figyelmeztető párbeszédablakok megnyitásának megakadályozása vagy engedélyezése.", "Show a warning dialog when changing a file extension." : "Figyelmeztető párbeszédablakok megnyitása a fájlkiterjesztés módosításakor.", @@ -356,7 +354,6 @@ OC.L10N.register( "No favorites yet" : "Még nincsenek kedvencek", "Files and folders you mark as favorite will show up here" : "A kedvencnek jelölt fájlokat és mappákat itt találja meg", "List of your files and folders." : "Saját fájlok és mappák felsorolása.", - "All folders" : "Összes mappa", "List of your files and folders that are not shared." : "Meg nem osztott fájlok és mappák felsorolása.", "No personal files found" : "Nem találhatóak személyes fájlok", "Files that are not shared will show up here." : "A meg nem osztott fájlok itt fognak megjelenni.", @@ -450,11 +447,14 @@ OC.L10N.register( "Submitting fields…" : "Mezők beküldése…", "Filter filenames…" : "Fájlnevek szűrése…", "Enable the grid view" : "Rácsnézet engedélyezése", + "Use this address to access your Files via WebDAV" : "Ezzel a címmel férhet hozzá a Fájlokhoz a WebDAV-on keresztül", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ha engedélyezte a kétfaktoros hitelesítést, akkor kattintson ide, hogy létrehozzon egy új alkalmazásjelszót, és azt használja.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} mappa","{folderCount} mappa"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fájl","{fileCount} fájl"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fájl és {folderCount} mappa","1 fájl és {folderCount} mappa"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fájl és 1 mappa","{fileCount} fájl és 1 mappa"], "{fileCount} files and {folderCount} folders" : "{fileCount} fájl és {folderCount} mappa", + "All folders" : "Összes mappa", "Personal Files" : "Személyes fájlok", "Text file" : "Szövegfájl", "New text file.txt" : "Új szövegfájl.txt", diff --git a/apps/files/l10n/hu.json b/apps/files/l10n/hu.json index 3f4fbe4ce97..ad732cb959c 100644 --- a/apps/files/l10n/hu.json +++ b/apps/files/l10n/hu.json @@ -191,16 +191,14 @@ "Personal files" : "Személyes fájlok", "Sort favorites first" : "Kedvencek előre rendezése", "Sort folders before files" : "Mappák fájlok elé rendezése", + "Enable folder tree" : "Mappafa engedélyezése", "Show hidden files" : "Rejtett fájlok megjelenítése", "Show file type column" : "Fájltípus oszlop megjelenítése", "Crop image previews" : "Kép előnézetek vágása", - "Enable folder tree" : "Mappafa engedélyezése", "Additional settings" : "További beállítások", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV-webcím", "Copy to clipboard" : "Másolás a vágólapra", - "Use this address to access your Files via WebDAV" : "Ezzel a címmel férhet hozzá a Fájlokhoz a WebDAV-on keresztül", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ha engedélyezte a kétfaktoros hitelesítést, akkor kattintson ide, hogy létrehozzon egy új alkalmazásjelszót, és azt használja.", "Warnings" : "Figyelmeztetések", "Prevent warning dialogs from open or reenable them." : "Figyelmeztető párbeszédablakok megnyitásának megakadályozása vagy engedélyezése.", "Show a warning dialog when changing a file extension." : "Figyelmeztető párbeszédablakok megnyitása a fájlkiterjesztés módosításakor.", @@ -354,7 +352,6 @@ "No favorites yet" : "Még nincsenek kedvencek", "Files and folders you mark as favorite will show up here" : "A kedvencnek jelölt fájlokat és mappákat itt találja meg", "List of your files and folders." : "Saját fájlok és mappák felsorolása.", - "All folders" : "Összes mappa", "List of your files and folders that are not shared." : "Meg nem osztott fájlok és mappák felsorolása.", "No personal files found" : "Nem találhatóak személyes fájlok", "Files that are not shared will show up here." : "A meg nem osztott fájlok itt fognak megjelenni.", @@ -448,11 +445,14 @@ "Submitting fields…" : "Mezők beküldése…", "Filter filenames…" : "Fájlnevek szűrése…", "Enable the grid view" : "Rácsnézet engedélyezése", + "Use this address to access your Files via WebDAV" : "Ezzel a címmel férhet hozzá a Fájlokhoz a WebDAV-on keresztül", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ha engedélyezte a kétfaktoros hitelesítést, akkor kattintson ide, hogy létrehozzon egy új alkalmazásjelszót, és azt használja.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} mappa","{folderCount} mappa"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fájl","{fileCount} fájl"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fájl és {folderCount} mappa","1 fájl és {folderCount} mappa"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fájl és 1 mappa","{fileCount} fájl és 1 mappa"], "{fileCount} files and {folderCount} folders" : "{fileCount} fájl és {folderCount} mappa", + "All folders" : "Összes mappa", "Personal Files" : "Személyes fájlok", "Text file" : "Szövegfájl", "New text file.txt" : "Új szövegfájl.txt", diff --git a/apps/files/l10n/is.js b/apps/files/l10n/is.js index 6640156031c..247a71b082b 100644 --- a/apps/files/l10n/is.js +++ b/apps/files/l10n/is.js @@ -176,15 +176,13 @@ OC.L10N.register( "Personal files" : "Einkaskrár", "Sort favorites first" : "Raða eftirlætum fremst", "Sort folders before files" : "Raða möppum á undan skrám", + "Enable folder tree" : "Virkja möppugreinar", "Show hidden files" : "Sýna faldar skrár", "Crop image previews" : "Skera utan af forskoðun mynda", - "Enable folder tree" : "Virkja möppugreinar", "Additional settings" : "Valfrjálsar stillingar", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV-slóð", "Copy to clipboard" : "Afrita á klippispjald", - "Use this address to access your Files via WebDAV" : "Notaðu þetta vistfang til að nálgast skráaforritið þitt með WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ef þú hefur virkjað 2FA tveggja-þrepa-auðkenningu, þarftu að útbúa nýtt lykilorð forrits og nota það með því að smella hér.", "Keyboard shortcuts" : "Flýtileiðir á lyklaborði", "Speed up your Files experience with these quick shortcuts." : "Flýttu fyrir vinnu þinni með skrár með þessum flýtilyklum.", "Open the actions menu for a file" : "Opna aðgerðavalmynd fyrir skrá", @@ -327,7 +325,6 @@ OC.L10N.register( "No favorites yet" : "Engin eftirlæti ennþá", "Files and folders you mark as favorite will show up here" : "Skrár og möppur sem þú merkir sem eftirlæti birtast hér", "List of your files and folders." : "Listi yfir skrárnar þínar og möppur.", - "All folders" : "Allar möppur", "List of your files and folders that are not shared." : "Listi yfir skrárnar þínar og möppur sem ekki er deilt.", "No personal files found" : "Engar einkaskrár fundust", "Files that are not shared will show up here." : "Skrár sem ekki er deilt birtast hér.", @@ -421,11 +418,14 @@ OC.L10N.register( "Submitting fields…" : "Sendi inn gögn úr reitum…", "Filter filenames…" : "Sía skráaheiti…", "Enable the grid view" : "Virkja reitasýnina", + "Use this address to access your Files via WebDAV" : "Notaðu þetta vistfang til að nálgast skráaforritið þitt með WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ef þú hefur virkjað 2FA tveggja-þrepa-auðkenningu, þarftu að útbúa nýtt lykilorð forrits og nota það með því að smella hér.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} mappa","{folderCount} möppur"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} skrá","{fileCount} skrár"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 skrá og {folderCount} mappa","1 skrá og {folderCount} möppur"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} skrá og 1 mappa","{fileCount} skrár og 1 mappa"], "{fileCount} files and {folderCount} folders" : "{fileCount} skrár og {folderCount} möppur", + "All folders" : "Allar möppur", "Personal Files" : "Einkaskrár", "Text file" : "Textaskrá", "New text file.txt" : "Ný textaskrá.txt" diff --git a/apps/files/l10n/is.json b/apps/files/l10n/is.json index aa0dcfe4af5..23115e9f13a 100644 --- a/apps/files/l10n/is.json +++ b/apps/files/l10n/is.json @@ -174,15 +174,13 @@ "Personal files" : "Einkaskrár", "Sort favorites first" : "Raða eftirlætum fremst", "Sort folders before files" : "Raða möppum á undan skrám", + "Enable folder tree" : "Virkja möppugreinar", "Show hidden files" : "Sýna faldar skrár", "Crop image previews" : "Skera utan af forskoðun mynda", - "Enable folder tree" : "Virkja möppugreinar", "Additional settings" : "Valfrjálsar stillingar", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV-slóð", "Copy to clipboard" : "Afrita á klippispjald", - "Use this address to access your Files via WebDAV" : "Notaðu þetta vistfang til að nálgast skráaforritið þitt með WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ef þú hefur virkjað 2FA tveggja-þrepa-auðkenningu, þarftu að útbúa nýtt lykilorð forrits og nota það með því að smella hér.", "Keyboard shortcuts" : "Flýtileiðir á lyklaborði", "Speed up your Files experience with these quick shortcuts." : "Flýttu fyrir vinnu þinni með skrár með þessum flýtilyklum.", "Open the actions menu for a file" : "Opna aðgerðavalmynd fyrir skrá", @@ -325,7 +323,6 @@ "No favorites yet" : "Engin eftirlæti ennþá", "Files and folders you mark as favorite will show up here" : "Skrár og möppur sem þú merkir sem eftirlæti birtast hér", "List of your files and folders." : "Listi yfir skrárnar þínar og möppur.", - "All folders" : "Allar möppur", "List of your files and folders that are not shared." : "Listi yfir skrárnar þínar og möppur sem ekki er deilt.", "No personal files found" : "Engar einkaskrár fundust", "Files that are not shared will show up here." : "Skrár sem ekki er deilt birtast hér.", @@ -419,11 +416,14 @@ "Submitting fields…" : "Sendi inn gögn úr reitum…", "Filter filenames…" : "Sía skráaheiti…", "Enable the grid view" : "Virkja reitasýnina", + "Use this address to access your Files via WebDAV" : "Notaðu þetta vistfang til að nálgast skráaforritið þitt með WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ef þú hefur virkjað 2FA tveggja-þrepa-auðkenningu, þarftu að útbúa nýtt lykilorð forrits og nota það með því að smella hér.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} mappa","{folderCount} möppur"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} skrá","{fileCount} skrár"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 skrá og {folderCount} mappa","1 skrá og {folderCount} möppur"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} skrá og 1 mappa","{fileCount} skrár og 1 mappa"], "{fileCount} files and {folderCount} folders" : "{fileCount} skrár og {folderCount} möppur", + "All folders" : "Allar möppur", "Personal Files" : "Einkaskrár", "Text file" : "Textaskrá", "New text file.txt" : "Ný textaskrá.txt" diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js index 39787e39664..2d877e16663 100644 --- a/apps/files/l10n/it.js +++ b/apps/files/l10n/it.js @@ -82,7 +82,7 @@ OC.L10N.register( "Current directory path" : "Percorso della cartella corrente", "Your have used your space quota and cannot upload files anymore" : "Hai esaurito la tua quota di spazio e non puoi più caricare file", "You do not have permission to upload or create files here." : "Non hai l'autorizzazione per caricare o creare file qui.", - "Drag and drop files here to upload" : "Trascina i file qui per caricarli", + "Drag and drop files here to upload" : "Trascina e rilascia i file qui per caricarli", "Favorite" : "Preferito", "Back" : "Indietro", "Toggle selection for file \"{displayName}\"" : "Attiva/disattiva la selezione per il file \"{displayName}\"", @@ -129,6 +129,7 @@ OC.L10N.register( "Search globally by filename …" : "Cerca globalmente per nome file…", "Search here by filename …" : "Cerca qui per nome file…", "Search scope options" : "Opzioni nell'ambito di ricerca", + "Filter and search from this location" : "Filtra e cerca da questa posizione", "Search globally" : "Cerca globalmente", "{usedQuotaByte} used" : "{usedQuotaByte} usato", "{used} of {quota} used" : "{used} di {quota} utilizzati", @@ -141,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Crea una nuova cartella", "This name is already in use." : "Questo nome è già utilizzato.", "Create" : "Crea", + "Files starting with a dot are hidden by default" : "I file che iniziano con un punto sono nascosti per impostazione predefinita", "Fill template fields" : "Compila i campi del modello", "Submitting fields …" : "Invio dei campi …", "Submit" : "Invia", @@ -199,19 +201,20 @@ OC.L10N.register( "Personal files" : "File personali", "Sort favorites first" : "Ordina prima i preferiti", "Sort folders before files" : "Ordina cartelle prima dei files", + "Enable folder tree" : "Abilita l'albero delle cartelle", "Show hidden files" : "Mostra i file nascosti", "Show file type column" : "Mostra colonna tipo di file", "Crop image previews" : "Ritaglia le anteprime delle immagini", - "Enable folder tree" : "Abilita l'albero delle cartelle", "Additional settings" : "Impostazioni aggiuntive", "WebDAV" : "WebDAV", "WebDAV URL" : "URL WebDAV", "Copy to clipboard" : "Copia negli appunti", - "Use this address to access your Files via WebDAV" : "Usa questo indirizzo per accedere ai tuoi file con WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Se hai abilitato il 2FA, devi creare ed usare una nuova password per l'applicazione facendo clic qui.", + "Use this address to access your Files via WebDAV." : "Utilizza questo indirizzo per accedere ai tuoi file tramite WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Per il tuo account è abilitata l'autenticazione a due fattori, pertanto devi utilizzare una password dell'app per connetterti a un client WebDAV esterno.", "Warnings" : "Avvertenze", "Prevent warning dialogs from open or reenable them." : "Impedire l'apertura delle finestre di dialogo di avviso o riattivarle.", "Show a warning dialog when changing a file extension." : "Mostra una finestra di dialogo di avviso quando si modifica l'estensione di un file.", + "Show a warning dialog when deleting files." : "Mostra un dialogo di avviso quando si cancellano dei file.", "Keyboard shortcuts" : "Scorciatoie da tastiera", "Speed up your Files experience with these quick shortcuts." : "Velocizza la tua esperienza con i File con queste rapide scorciatoie.", "Open the actions menu for a file" : "Aprire il menu delle azioni per un file", @@ -330,7 +333,7 @@ OC.L10N.register( "New template folder" : "Nuova cartella dei modelli", "In folder" : "Nella cartella", "Search in folder: {folder}" : "Cerca nella cartella: {folder}", - "One of the dropped files could not be processed" : "Impossibile elaborare uno dei file eliminati", + "One of the dropped files could not be processed" : "Impossibile elaborare uno dei file depositati", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Il tuo browser non supporta l'API del file system. Le directory non verranno caricate", "No files to upload" : "Nessun file da caricare", "Unable to create the directory {directory}" : "Impossibile creare la directory {directory}", @@ -362,7 +365,6 @@ OC.L10N.register( "No favorites yet" : "Nessun preferito ancora", "Files and folders you mark as favorite will show up here" : "I file e le cartelle che marchi come preferiti saranno mostrati qui", "List of your files and folders." : "Lista dei tuoi file e cartelle.", - "All folders" : "Tutte le cartelle", "List of your files and folders that are not shared." : "Elenco dei file e delle cartelle che non sono condivisi.", "No personal files found" : "Nessun file personale trovato", "Files that are not shared will show up here." : "I file che non vengono condivisi verranno visualizzati qui.", @@ -457,11 +459,14 @@ OC.L10N.register( "Submitting fields…" : "Invio dei campi…", "Filter filenames…" : "Filtra nomi di file…", "Enable the grid view" : "Attiva visuale a griglia", + "Use this address to access your Files via WebDAV" : "Usa questo indirizzo per accedere ai tuoi file con WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Se hai abilitato il 2FA, devi creare ed usare una nuova password per l'applicazione facendo clic qui.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} cartella","{folderCount} cartelle","{folderCount} cartelle"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} file","{fileCount} file","{fileCount} file"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 file e {folderCount} cartella","1 file e {folderCount} cartelle","1 file e {folderCount} cartelle"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} file e 1 cartella","{fileCount} file e 1 cartella","{fileCount} file e 1 cartella"], "{fileCount} files and {folderCount} folders" : "{fileCount} file e {folderCount} cartelle", + "All folders" : "Tutte le cartelle", "Personal Files" : "File personali", "Text file" : "File di testo", "New text file.txt" : "Nuovo file di testo.txt", diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json index 40edb4b3f9a..75edb54fe3d 100644 --- a/apps/files/l10n/it.json +++ b/apps/files/l10n/it.json @@ -80,7 +80,7 @@ "Current directory path" : "Percorso della cartella corrente", "Your have used your space quota and cannot upload files anymore" : "Hai esaurito la tua quota di spazio e non puoi più caricare file", "You do not have permission to upload or create files here." : "Non hai l'autorizzazione per caricare o creare file qui.", - "Drag and drop files here to upload" : "Trascina i file qui per caricarli", + "Drag and drop files here to upload" : "Trascina e rilascia i file qui per caricarli", "Favorite" : "Preferito", "Back" : "Indietro", "Toggle selection for file \"{displayName}\"" : "Attiva/disattiva la selezione per il file \"{displayName}\"", @@ -127,6 +127,7 @@ "Search globally by filename …" : "Cerca globalmente per nome file…", "Search here by filename …" : "Cerca qui per nome file…", "Search scope options" : "Opzioni nell'ambito di ricerca", + "Filter and search from this location" : "Filtra e cerca da questa posizione", "Search globally" : "Cerca globalmente", "{usedQuotaByte} used" : "{usedQuotaByte} usato", "{used} of {quota} used" : "{used} di {quota} utilizzati", @@ -139,6 +140,7 @@ "Create new folder" : "Crea una nuova cartella", "This name is already in use." : "Questo nome è già utilizzato.", "Create" : "Crea", + "Files starting with a dot are hidden by default" : "I file che iniziano con un punto sono nascosti per impostazione predefinita", "Fill template fields" : "Compila i campi del modello", "Submitting fields …" : "Invio dei campi …", "Submit" : "Invia", @@ -197,19 +199,20 @@ "Personal files" : "File personali", "Sort favorites first" : "Ordina prima i preferiti", "Sort folders before files" : "Ordina cartelle prima dei files", + "Enable folder tree" : "Abilita l'albero delle cartelle", "Show hidden files" : "Mostra i file nascosti", "Show file type column" : "Mostra colonna tipo di file", "Crop image previews" : "Ritaglia le anteprime delle immagini", - "Enable folder tree" : "Abilita l'albero delle cartelle", "Additional settings" : "Impostazioni aggiuntive", "WebDAV" : "WebDAV", "WebDAV URL" : "URL WebDAV", "Copy to clipboard" : "Copia negli appunti", - "Use this address to access your Files via WebDAV" : "Usa questo indirizzo per accedere ai tuoi file con WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Se hai abilitato il 2FA, devi creare ed usare una nuova password per l'applicazione facendo clic qui.", + "Use this address to access your Files via WebDAV." : "Utilizza questo indirizzo per accedere ai tuoi file tramite WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Per il tuo account è abilitata l'autenticazione a due fattori, pertanto devi utilizzare una password dell'app per connetterti a un client WebDAV esterno.", "Warnings" : "Avvertenze", "Prevent warning dialogs from open or reenable them." : "Impedire l'apertura delle finestre di dialogo di avviso o riattivarle.", "Show a warning dialog when changing a file extension." : "Mostra una finestra di dialogo di avviso quando si modifica l'estensione di un file.", + "Show a warning dialog when deleting files." : "Mostra un dialogo di avviso quando si cancellano dei file.", "Keyboard shortcuts" : "Scorciatoie da tastiera", "Speed up your Files experience with these quick shortcuts." : "Velocizza la tua esperienza con i File con queste rapide scorciatoie.", "Open the actions menu for a file" : "Aprire il menu delle azioni per un file", @@ -328,7 +331,7 @@ "New template folder" : "Nuova cartella dei modelli", "In folder" : "Nella cartella", "Search in folder: {folder}" : "Cerca nella cartella: {folder}", - "One of the dropped files could not be processed" : "Impossibile elaborare uno dei file eliminati", + "One of the dropped files could not be processed" : "Impossibile elaborare uno dei file depositati", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Il tuo browser non supporta l'API del file system. Le directory non verranno caricate", "No files to upload" : "Nessun file da caricare", "Unable to create the directory {directory}" : "Impossibile creare la directory {directory}", @@ -360,7 +363,6 @@ "No favorites yet" : "Nessun preferito ancora", "Files and folders you mark as favorite will show up here" : "I file e le cartelle che marchi come preferiti saranno mostrati qui", "List of your files and folders." : "Lista dei tuoi file e cartelle.", - "All folders" : "Tutte le cartelle", "List of your files and folders that are not shared." : "Elenco dei file e delle cartelle che non sono condivisi.", "No personal files found" : "Nessun file personale trovato", "Files that are not shared will show up here." : "I file che non vengono condivisi verranno visualizzati qui.", @@ -455,11 +457,14 @@ "Submitting fields…" : "Invio dei campi…", "Filter filenames…" : "Filtra nomi di file…", "Enable the grid view" : "Attiva visuale a griglia", + "Use this address to access your Files via WebDAV" : "Usa questo indirizzo per accedere ai tuoi file con WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Se hai abilitato il 2FA, devi creare ed usare una nuova password per l'applicazione facendo clic qui.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} cartella","{folderCount} cartelle","{folderCount} cartelle"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} file","{fileCount} file","{fileCount} file"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 file e {folderCount} cartella","1 file e {folderCount} cartelle","1 file e {folderCount} cartelle"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} file e 1 cartella","{fileCount} file e 1 cartella","{fileCount} file e 1 cartella"], "{fileCount} files and {folderCount} folders" : "{fileCount} file e {folderCount} cartelle", + "All folders" : "Tutte le cartelle", "Personal Files" : "File personali", "Text file" : "File di testo", "New text file.txt" : "Nuovo file di testo.txt", diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js index 86accfd0959..5d3dacb8ebf 100644 --- a/apps/files/l10n/ja.js +++ b/apps/files/l10n/ja.js @@ -129,6 +129,7 @@ OC.L10N.register( "Search globally by filename …" : "ファイル名でグローバルに検索 …", "Search here by filename …" : "ファイル名でここを検索 …", "Search scope options" : "検索範囲オプション", + "Filter and search from this location" : "この場所からフィルターをかけて検索", "Search globally" : "グローバルに検索", "{usedQuotaByte} used" : "{usedQuotaByte} 使用されています", "{used} of {quota} used" : "{used} / {quota} 使用中", @@ -141,6 +142,7 @@ OC.L10N.register( "Create new folder" : "新しいフォルダーを作成", "This name is already in use." : "この名前は既に使用されています。", "Create" : "作成", + "Files starting with a dot are hidden by default" : "ドットで始まるファイルはデフォルトで非表示になっています", "Fill template fields" : "テンプレートフィールドへの入力", "Submitting fields …" : "フィールドを送信中…", "Submit" : "提出する", @@ -194,23 +196,25 @@ OC.L10N.register( "Search for files" : "ファイルを検索", "Clipboard is not available" : "クリップボードは利用できません", "WebDAV URL copied to clipboard" : "WebDAVのURLがクリップボードにコピーされました", + "Default view" : "デフォルト表示", "All files" : "すべてのファイル", "Personal files" : "個人ファイル", "Sort favorites first" : "お気に入りを最初に並べる", "Sort folders before files" : "ファイルよりもフォルダを先に並べ替えます", + "Enable folder tree" : "フォルダーツリーを有効にする", "Show hidden files" : "隠しファイルを表示", "Show file type column" : "ファイルの種類のカラムを表示する", "Crop image previews" : "プレビュー画像を切り抜く", - "Enable folder tree" : "フォルダーツリーを有効にする", "Additional settings" : "追加設定", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "クリップボードにコピー", - "Use this address to access your Files via WebDAV" : "このアドレスを使用すれば、WebDAV経由でファイルにアクセスできます", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "2FAを有効にしている場合は、ここをクリックして新しいアプリのパスワードを作成し、使用する必要があります。", + "Use this address to access your Files via WebDAV." : "このアドレスを使用すれば、WebDAV経由でファイルにアクセスできます。", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "2要素認証がアカウントに有効化されています。そのため、外部WebDAVクライアントを接続するにはアプリパスワードを使用する必要があります。", "Warnings" : "警告", "Prevent warning dialogs from open or reenable them." : "警告ダイアログが開かないようにするか、再度有効にする。", "Show a warning dialog when changing a file extension." : "ファイルの拡張子を変更する際に、警告ダイアログを表示する。", + "Show a warning dialog when deleting files." : "ファイルを削除する際に警告ダイアログを表示します。", "Keyboard shortcuts" : "キーボードショートカット", "Speed up your Files experience with these quick shortcuts." : "これらのショートカットでファイルの取り扱いを高速化します", "Open the actions menu for a file" : "ファイルのアクションメニューを開く", @@ -361,7 +365,6 @@ OC.L10N.register( "No favorites yet" : "まだお気に入りはありません", "Files and folders you mark as favorite will show up here" : "お気に入りに登録されたファイルやフォルダーは、ここに表示されます。", "List of your files and folders." : "ファイルやフォルダーの一覧", - "All folders" : "全てのフォルダー", "List of your files and folders that are not shared." : "共有されていないファイルやフォルダの一覧。", "No personal files found" : "個人ファイルは見つかりませんでした", "Files that are not shared will show up here." : "共有されていないファイルは、ここに表示されます。", @@ -456,11 +459,14 @@ OC.L10N.register( "Submitting fields…" : "フィールドを送信中…", "Filter filenames…" : "ファイルネームフィルター…", "Enable the grid view" : "グリッド表示を有効にする", + "Use this address to access your Files via WebDAV" : "このアドレスを使用すれば、WebDAV経由でファイルにアクセスできます", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "2FAを有効にしている場合は、ここをクリックして新しいアプリのパスワードを作成し、使用する必要があります。", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} フォルダ"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} ファイル"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 ファイルと {folderCount} フォルダ"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} ファイルと 1 フォルダ"], "{fileCount} files and {folderCount} folders" : "{fileCount} ファイルと {folderCount} フォルダ", + "All folders" : "全てのフォルダー", "Personal Files" : "個人ファイル", "Text file" : "テキストファイル", "New text file.txt" : "新規のテキストファイル作成", diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json index 0764c1dafa8..37674f11084 100644 --- a/apps/files/l10n/ja.json +++ b/apps/files/l10n/ja.json @@ -127,6 +127,7 @@ "Search globally by filename …" : "ファイル名でグローバルに検索 …", "Search here by filename …" : "ファイル名でここを検索 …", "Search scope options" : "検索範囲オプション", + "Filter and search from this location" : "この場所からフィルターをかけて検索", "Search globally" : "グローバルに検索", "{usedQuotaByte} used" : "{usedQuotaByte} 使用されています", "{used} of {quota} used" : "{used} / {quota} 使用中", @@ -139,6 +140,7 @@ "Create new folder" : "新しいフォルダーを作成", "This name is already in use." : "この名前は既に使用されています。", "Create" : "作成", + "Files starting with a dot are hidden by default" : "ドットで始まるファイルはデフォルトで非表示になっています", "Fill template fields" : "テンプレートフィールドへの入力", "Submitting fields …" : "フィールドを送信中…", "Submit" : "提出する", @@ -192,23 +194,25 @@ "Search for files" : "ファイルを検索", "Clipboard is not available" : "クリップボードは利用できません", "WebDAV URL copied to clipboard" : "WebDAVのURLがクリップボードにコピーされました", + "Default view" : "デフォルト表示", "All files" : "すべてのファイル", "Personal files" : "個人ファイル", "Sort favorites first" : "お気に入りを最初に並べる", "Sort folders before files" : "ファイルよりもフォルダを先に並べ替えます", + "Enable folder tree" : "フォルダーツリーを有効にする", "Show hidden files" : "隠しファイルを表示", "Show file type column" : "ファイルの種類のカラムを表示する", "Crop image previews" : "プレビュー画像を切り抜く", - "Enable folder tree" : "フォルダーツリーを有効にする", "Additional settings" : "追加設定", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "クリップボードにコピー", - "Use this address to access your Files via WebDAV" : "このアドレスを使用すれば、WebDAV経由でファイルにアクセスできます", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "2FAを有効にしている場合は、ここをクリックして新しいアプリのパスワードを作成し、使用する必要があります。", + "Use this address to access your Files via WebDAV." : "このアドレスを使用すれば、WebDAV経由でファイルにアクセスできます。", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "2要素認証がアカウントに有効化されています。そのため、外部WebDAVクライアントを接続するにはアプリパスワードを使用する必要があります。", "Warnings" : "警告", "Prevent warning dialogs from open or reenable them." : "警告ダイアログが開かないようにするか、再度有効にする。", "Show a warning dialog when changing a file extension." : "ファイルの拡張子を変更する際に、警告ダイアログを表示する。", + "Show a warning dialog when deleting files." : "ファイルを削除する際に警告ダイアログを表示します。", "Keyboard shortcuts" : "キーボードショートカット", "Speed up your Files experience with these quick shortcuts." : "これらのショートカットでファイルの取り扱いを高速化します", "Open the actions menu for a file" : "ファイルのアクションメニューを開く", @@ -359,7 +363,6 @@ "No favorites yet" : "まだお気に入りはありません", "Files and folders you mark as favorite will show up here" : "お気に入りに登録されたファイルやフォルダーは、ここに表示されます。", "List of your files and folders." : "ファイルやフォルダーの一覧", - "All folders" : "全てのフォルダー", "List of your files and folders that are not shared." : "共有されていないファイルやフォルダの一覧。", "No personal files found" : "個人ファイルは見つかりませんでした", "Files that are not shared will show up here." : "共有されていないファイルは、ここに表示されます。", @@ -454,11 +457,14 @@ "Submitting fields…" : "フィールドを送信中…", "Filter filenames…" : "ファイルネームフィルター…", "Enable the grid view" : "グリッド表示を有効にする", + "Use this address to access your Files via WebDAV" : "このアドレスを使用すれば、WebDAV経由でファイルにアクセスできます", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "2FAを有効にしている場合は、ここをクリックして新しいアプリのパスワードを作成し、使用する必要があります。", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} フォルダ"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} ファイル"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 ファイルと {folderCount} フォルダ"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} ファイルと 1 フォルダ"], "{fileCount} files and {folderCount} folders" : "{fileCount} ファイルと {folderCount} フォルダ", + "All folders" : "全てのフォルダー", "Personal Files" : "個人ファイル", "Text file" : "テキストファイル", "New text file.txt" : "新規のテキストファイル作成", diff --git a/apps/files/l10n/ka.js b/apps/files/l10n/ka.js index 555841ae491..e2bba4852a0 100644 --- a/apps/files/l10n/ka.js +++ b/apps/files/l10n/ka.js @@ -138,8 +138,6 @@ OC.L10N.register( "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Copy to clipboard", - "Use this address to access your Files via WebDAV" : "Use this address to access your Files via WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "If you have enabled 2FA, you must create and use a new app password by clicking here.", "Keyboard shortcuts" : "Keyboard shortcuts", "Navigation" : "Navigation", "View" : "View", @@ -287,6 +285,8 @@ OC.L10N.register( "An error occurred while trying to update the tags" : "An error occurred while trying to update the tags", "Upload (max. %s)" : "Upload (max. %s)", "Enable the grid view" : "Enable the grid view", + "Use this address to access your Files via WebDAV" : "Use this address to access your Files via WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "If you have enabled 2FA, you must create and use a new app password by clicking here.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} folder","{folderCount} folders"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} file","{fileCount} files"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 file and {folderCount} folder","1 file and {folderCount} folders"], diff --git a/apps/files/l10n/ka.json b/apps/files/l10n/ka.json index 311c45c7a87..1647fd0d042 100644 --- a/apps/files/l10n/ka.json +++ b/apps/files/l10n/ka.json @@ -136,8 +136,6 @@ "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Copy to clipboard", - "Use this address to access your Files via WebDAV" : "Use this address to access your Files via WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "If you have enabled 2FA, you must create and use a new app password by clicking here.", "Keyboard shortcuts" : "Keyboard shortcuts", "Navigation" : "Navigation", "View" : "View", @@ -285,6 +283,8 @@ "An error occurred while trying to update the tags" : "An error occurred while trying to update the tags", "Upload (max. %s)" : "Upload (max. %s)", "Enable the grid view" : "Enable the grid view", + "Use this address to access your Files via WebDAV" : "Use this address to access your Files via WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "If you have enabled 2FA, you must create and use a new app password by clicking here.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} folder","{folderCount} folders"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} file","{fileCount} files"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 file and {folderCount} folder","1 file and {folderCount} folders"], diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js index 0bd515f67a0..9dc161d0342 100644 --- a/apps/files/l10n/ko.js +++ b/apps/files/l10n/ko.js @@ -184,15 +184,13 @@ OC.L10N.register( "Personal files" : "개인 파일", "Sort favorites first" : "즐겨찾기를 처음에 나열", "Sort folders before files" : "폴더를 파일보다 먼저 정렬", + "Enable folder tree" : "폴더 트리 활성화", "Show hidden files" : "숨김 파일 보이기", "Crop image previews" : "이미지 미리보기 확대", - "Enable folder tree" : "폴더 트리 활성화", "Additional settings" : "고급 설정", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "클립보드로 복사", - "Use this address to access your Files via WebDAV" : "이 주소를 사용하여 WebDAV를 통해 내 파일에 접근하세요.", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "2단계 인증을 활성화했다면, 이곳을 클릭해 새로운 앱 암호를 만들어 사용해야 합니다.", "Keyboard shortcuts" : "키보드 단축키", "Speed up your Files experience with these quick shortcuts." : "이 빠른 단축키를 사용하여 파일 사용 속도를 높이세요.", "Open the actions menu for a file" : "파일 작업 메뉴 열기", @@ -332,7 +330,6 @@ OC.L10N.register( "No favorites yet" : "즐겨찾는 항목 없음", "Files and folders you mark as favorite will show up here" : "즐겨찾기에 추가한 파일과 폴더가 여기에 나타납니다", "List of your files and folders." : "내 폴더와 파일의 목록", - "All folders" : "모든 폴더", "List of your files and folders that are not shared." : "공유되지 않는 파일과 폴더의 목록", "No personal files found" : "개인 파일을 찾을 수 없음", "Files that are not shared will show up here." : "공유되지 않는 파일이 이곳에 나타납니다.", @@ -426,11 +423,14 @@ OC.L10N.register( "Submitting fields…" : "입력란 제출중...", "Filter filenames…" : "파일 이름 필터...", "Enable the grid view" : "바둑판식 보기 활성화", + "Use this address to access your Files via WebDAV" : "이 주소를 사용하여 WebDAV를 통해 내 파일에 접근하세요.", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "2단계 인증을 활성화했다면, 이곳을 클릭해 새로운 앱 암호를 만들어 사용해야 합니다.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount}개 폴더"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount}개 파일"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1개 파일과 {folderCount}개 폴더"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount}개 파일과 1개 폴더"], "{fileCount} files and {folderCount} folders" : "{fileCount}개 파일과 {folderCount}개 폴더", + "All folders" : "모든 폴더", "Personal Files" : "개인 파일", "Text file" : "텍스트 파일", "New text file.txt" : "새 텍스트 파일.txt" diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json index 13a6a4e0375..10f92ef906b 100644 --- a/apps/files/l10n/ko.json +++ b/apps/files/l10n/ko.json @@ -182,15 +182,13 @@ "Personal files" : "개인 파일", "Sort favorites first" : "즐겨찾기를 처음에 나열", "Sort folders before files" : "폴더를 파일보다 먼저 정렬", + "Enable folder tree" : "폴더 트리 활성화", "Show hidden files" : "숨김 파일 보이기", "Crop image previews" : "이미지 미리보기 확대", - "Enable folder tree" : "폴더 트리 활성화", "Additional settings" : "고급 설정", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "클립보드로 복사", - "Use this address to access your Files via WebDAV" : "이 주소를 사용하여 WebDAV를 통해 내 파일에 접근하세요.", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "2단계 인증을 활성화했다면, 이곳을 클릭해 새로운 앱 암호를 만들어 사용해야 합니다.", "Keyboard shortcuts" : "키보드 단축키", "Speed up your Files experience with these quick shortcuts." : "이 빠른 단축키를 사용하여 파일 사용 속도를 높이세요.", "Open the actions menu for a file" : "파일 작업 메뉴 열기", @@ -330,7 +328,6 @@ "No favorites yet" : "즐겨찾는 항목 없음", "Files and folders you mark as favorite will show up here" : "즐겨찾기에 추가한 파일과 폴더가 여기에 나타납니다", "List of your files and folders." : "내 폴더와 파일의 목록", - "All folders" : "모든 폴더", "List of your files and folders that are not shared." : "공유되지 않는 파일과 폴더의 목록", "No personal files found" : "개인 파일을 찾을 수 없음", "Files that are not shared will show up here." : "공유되지 않는 파일이 이곳에 나타납니다.", @@ -424,11 +421,14 @@ "Submitting fields…" : "입력란 제출중...", "Filter filenames…" : "파일 이름 필터...", "Enable the grid view" : "바둑판식 보기 활성화", + "Use this address to access your Files via WebDAV" : "이 주소를 사용하여 WebDAV를 통해 내 파일에 접근하세요.", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "2단계 인증을 활성화했다면, 이곳을 클릭해 새로운 앱 암호를 만들어 사용해야 합니다.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount}개 폴더"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount}개 파일"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1개 파일과 {folderCount}개 폴더"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount}개 파일과 1개 폴더"], "{fileCount} files and {folderCount} folders" : "{fileCount}개 파일과 {folderCount}개 폴더", + "All folders" : "모든 폴더", "Personal Files" : "개인 파일", "Text file" : "텍스트 파일", "New text file.txt" : "새 텍스트 파일.txt" diff --git a/apps/files/l10n/lt_LT.js b/apps/files/l10n/lt_LT.js index 9a2e3004b28..027c30bd63a 100644 --- a/apps/files/l10n/lt_LT.js +++ b/apps/files/l10n/lt_LT.js @@ -135,13 +135,12 @@ OC.L10N.register( "WebDAV URL copied to clipboard" : "WebDAV URL nukopijuotas į iškarpinę", "All files" : "Visi failai", "Personal files" : "Asmeniniai failai", + "Enable folder tree" : "Įjungti direktorijų medį", "Show hidden files" : "Rodyti paslėptus failus", "Crop image previews" : "Apkirpti paveikslėlių peržiūras", - "Enable folder tree" : "Įjungti direktorijų medį", "Additional settings" : "Papildomi nustatymai", "WebDAV" : "WebDAV", "Copy to clipboard" : "Kopijuoti į iškarpinę", - "Use this address to access your Files via WebDAV" : "Naudokite šį adresą norėdami pasiekti failus per WebDAV", "Warnings" : "Įspėjimai", "Keyboard shortcuts" : "Spartieji klavišai", "Rename a file" : "Pervadinti failą", @@ -229,7 +228,6 @@ OC.L10N.register( "No favorites yet" : "Kol kas nėra mėgstamų", "Files and folders you mark as favorite will show up here" : "Čia bus rodomi failai ir aplankai, kuriuos pažymėsite kaip mėgstamus", "List of your files and folders." : "Jūsų failų ir aplankų sąrašas.", - "All folders" : "Visi aplankai", "No personal files found" : "Nerasta jokių asmeninių failų", "Recent" : "Paskiausiai naudoti", "List of recently modified files and folders." : "Paskiausiai modifikuotų failų ir aplankų sąrašas.", @@ -309,10 +307,12 @@ OC.L10N.register( "Upload (max. %s)" : "Įkelti (maks. %s)", "Filter filenames…" : "Filtruoti failų pavadinimus…", "Enable the grid view" : "Įjungti grid peržiūrą", + "Use this address to access your Files via WebDAV" : "Naudokite šį adresą norėdami pasiekti failus per WebDAV", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} aplankas","{folderCount} aplankai","{folderCount} aplankų","{folderCount} aplankas"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} failas","{fileCount} failai","{fileCount} failų","{fileCount} failas"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 failas ir {folderCount} aplankas","1 failas ir {folderCount} aplankai","1 failas ir {folderCount} aplankų","1 failas ir {folderCount} aplankas"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} failas ir 1 aplankas","{fileCount} failai ir 1 aplankas","{fileCount} failų ir 1 aplankas","{fileCount} failas ir 1 aplankas"], + "All folders" : "Visi aplankai", "Personal Files" : "Asmeniniai failai", "Text file" : "Tekstinis failas", "New text file.txt" : "Naujas tekstinis failas.txt" diff --git a/apps/files/l10n/lt_LT.json b/apps/files/l10n/lt_LT.json index 9b0253a3f82..d6c957349db 100644 --- a/apps/files/l10n/lt_LT.json +++ b/apps/files/l10n/lt_LT.json @@ -133,13 +133,12 @@ "WebDAV URL copied to clipboard" : "WebDAV URL nukopijuotas į iškarpinę", "All files" : "Visi failai", "Personal files" : "Asmeniniai failai", + "Enable folder tree" : "Įjungti direktorijų medį", "Show hidden files" : "Rodyti paslėptus failus", "Crop image previews" : "Apkirpti paveikslėlių peržiūras", - "Enable folder tree" : "Įjungti direktorijų medį", "Additional settings" : "Papildomi nustatymai", "WebDAV" : "WebDAV", "Copy to clipboard" : "Kopijuoti į iškarpinę", - "Use this address to access your Files via WebDAV" : "Naudokite šį adresą norėdami pasiekti failus per WebDAV", "Warnings" : "Įspėjimai", "Keyboard shortcuts" : "Spartieji klavišai", "Rename a file" : "Pervadinti failą", @@ -227,7 +226,6 @@ "No favorites yet" : "Kol kas nėra mėgstamų", "Files and folders you mark as favorite will show up here" : "Čia bus rodomi failai ir aplankai, kuriuos pažymėsite kaip mėgstamus", "List of your files and folders." : "Jūsų failų ir aplankų sąrašas.", - "All folders" : "Visi aplankai", "No personal files found" : "Nerasta jokių asmeninių failų", "Recent" : "Paskiausiai naudoti", "List of recently modified files and folders." : "Paskiausiai modifikuotų failų ir aplankų sąrašas.", @@ -307,10 +305,12 @@ "Upload (max. %s)" : "Įkelti (maks. %s)", "Filter filenames…" : "Filtruoti failų pavadinimus…", "Enable the grid view" : "Įjungti grid peržiūrą", + "Use this address to access your Files via WebDAV" : "Naudokite šį adresą norėdami pasiekti failus per WebDAV", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} aplankas","{folderCount} aplankai","{folderCount} aplankų","{folderCount} aplankas"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} failas","{fileCount} failai","{fileCount} failų","{fileCount} failas"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 failas ir {folderCount} aplankas","1 failas ir {folderCount} aplankai","1 failas ir {folderCount} aplankų","1 failas ir {folderCount} aplankas"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} failas ir 1 aplankas","{fileCount} failai ir 1 aplankas","{fileCount} failų ir 1 aplankas","{fileCount} failas ir 1 aplankas"], + "All folders" : "Visi aplankai", "Personal Files" : "Asmeniniai failai", "Text file" : "Tekstinis failas", "New text file.txt" : "Naujas tekstinis failas.txt" diff --git a/apps/files/l10n/mk.js b/apps/files/l10n/mk.js index 50725de8aad..8d9883c4dd5 100644 --- a/apps/files/l10n/mk.js +++ b/apps/files/l10n/mk.js @@ -183,16 +183,14 @@ OC.L10N.register( "Personal files" : "Лични датотеки", "Sort favorites first" : "Прво омилените", "Sort folders before files" : "Подреди ги папките пред датотеките", + "Enable folder tree" : "Овозможи поглед на дрво", "Show hidden files" : "Прикажи сокриени датотеки", "Show file type column" : "Прикажи колона за тип на датотека", "Crop image previews" : "Исечи ја сликата за преглед", - "Enable folder tree" : "Овозможи поглед на дрво", "Additional settings" : "Дополнителни параметри", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV адреса", "Copy to clipboard" : "Копирај во клипборд", - "Use this address to access your Files via WebDAV" : "Користи ја оваа адреса за пристап до вашите датотеки преку WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ако имате овозможено 2FA, мора да креирате и користите нова лозинка за апликација со кликнување овде.", "Warnings" : "Предупредувања", "Prevent warning dialogs from open or reenable them." : "Спречете ги дијалозите за предупредување да се отвораат или повторно овозможете ги.", "Show a warning dialog when changing a file extension." : "Прикажи дијалог за предупредување при промена на екстензија на датотека.", @@ -301,7 +299,6 @@ OC.L10N.register( "No favorites yet" : "Сеуште нема фаворити", "Files and folders you mark as favorite will show up here" : "Датотеките и папките кои ќе ги означите како чести, ќе се појават тука", "List of your files and folders." : "Листа на вашите датотеки и папки.", - "All folders" : "Сите папки", "No personal files found" : "Не се пронајдени лични датотеки ", "Recent" : "Неодамнешни", "List of recently modified files and folders." : "Листа на скоро изменети датотеки и папки.", @@ -389,11 +386,14 @@ OC.L10N.register( "Upload (max. %s)" : "Префрлање (макс. %s)", "Filter filenames…" : "Филтрирај имиња на датотеки ...", "Enable the grid view" : "Овозможи поглед во мрежа", + "Use this address to access your Files via WebDAV" : "Користи ја оваа адреса за пристап до вашите датотеки преку WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ако имате овозможено 2FA, мора да креирате и користите нова лозинка за апликација со кликнување овде.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} папка","{folderCount} папки"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} датотека","{fileCount} датотеки"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 датотека и {folderCount} папки","1 датотека и {folderCount} папки"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} датотека и 1 папка","{fileCount} датотеки и 1 папка"], "{fileCount} files and {folderCount} folders" : "{fileCount} датотеки и {folderCount} папки", + "All folders" : "Сите папки", "Personal Files" : "Лични датотеки", "Text file" : "Текстуална датотека", "New text file.txt" : "Нова текстуална датотека file.txt", diff --git a/apps/files/l10n/mk.json b/apps/files/l10n/mk.json index 1494bfaae99..fca2b8d3b5c 100644 --- a/apps/files/l10n/mk.json +++ b/apps/files/l10n/mk.json @@ -181,16 +181,14 @@ "Personal files" : "Лични датотеки", "Sort favorites first" : "Прво омилените", "Sort folders before files" : "Подреди ги папките пред датотеките", + "Enable folder tree" : "Овозможи поглед на дрво", "Show hidden files" : "Прикажи сокриени датотеки", "Show file type column" : "Прикажи колона за тип на датотека", "Crop image previews" : "Исечи ја сликата за преглед", - "Enable folder tree" : "Овозможи поглед на дрво", "Additional settings" : "Дополнителни параметри", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV адреса", "Copy to clipboard" : "Копирај во клипборд", - "Use this address to access your Files via WebDAV" : "Користи ја оваа адреса за пристап до вашите датотеки преку WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ако имате овозможено 2FA, мора да креирате и користите нова лозинка за апликација со кликнување овде.", "Warnings" : "Предупредувања", "Prevent warning dialogs from open or reenable them." : "Спречете ги дијалозите за предупредување да се отвораат или повторно овозможете ги.", "Show a warning dialog when changing a file extension." : "Прикажи дијалог за предупредување при промена на екстензија на датотека.", @@ -299,7 +297,6 @@ "No favorites yet" : "Сеуште нема фаворити", "Files and folders you mark as favorite will show up here" : "Датотеките и папките кои ќе ги означите како чести, ќе се појават тука", "List of your files and folders." : "Листа на вашите датотеки и папки.", - "All folders" : "Сите папки", "No personal files found" : "Не се пронајдени лични датотеки ", "Recent" : "Неодамнешни", "List of recently modified files and folders." : "Листа на скоро изменети датотеки и папки.", @@ -387,11 +384,14 @@ "Upload (max. %s)" : "Префрлање (макс. %s)", "Filter filenames…" : "Филтрирај имиња на датотеки ...", "Enable the grid view" : "Овозможи поглед во мрежа", + "Use this address to access your Files via WebDAV" : "Користи ја оваа адреса за пристап до вашите датотеки преку WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ако имате овозможено 2FA, мора да креирате и користите нова лозинка за апликација со кликнување овде.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} папка","{folderCount} папки"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} датотека","{fileCount} датотеки"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 датотека и {folderCount} папки","1 датотека и {folderCount} папки"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} датотека и 1 папка","{fileCount} датотеки и 1 папка"], "{fileCount} files and {folderCount} folders" : "{fileCount} датотеки и {folderCount} папки", + "All folders" : "Сите папки", "Personal Files" : "Лични датотеки", "Text file" : "Текстуална датотека", "New text file.txt" : "Нова текстуална датотека file.txt", diff --git a/apps/files/l10n/nb.js b/apps/files/l10n/nb.js index cd928970711..401ed587b87 100644 --- a/apps/files/l10n/nb.js +++ b/apps/files/l10n/nb.js @@ -174,15 +174,13 @@ OC.L10N.register( "Personal files" : "Personlige filer", "Sort favorites first" : "Sorter favoritter først", "Sort folders before files" : "Sorter mapper før filer", + "Enable folder tree" : "Aktiver mappetre", "Show hidden files" : "Vis skjulte filer", "Crop image previews" : "Beskjær forhåndsvisninger av bilder", - "Enable folder tree" : "Aktiver mappetre", "Additional settings" : "Flere innstillinger", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Kopiert til utklippstavlen", - "Use this address to access your Files via WebDAV" : "Bruk denne adressen for tilgang til filene dine via WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Hvis du har aktivert 2FA, må du opprette og bruke et nytt app-passord ved å klikke her.", "Keyboard shortcuts" : "Tastatursnarveier", "Speed up your Files experience with these quick shortcuts." : "Jobb raskere med filer ved å bruke disse hurtigtastene.", "Open the actions menu for a file" : "Åpner handlingsmenyen for en fil", @@ -313,7 +311,6 @@ OC.L10N.register( "No favorites yet" : "Ingen favoritter enda", "Files and folders you mark as favorite will show up here" : "Filer og mapper som du gjør til favoritter vises her", "List of your files and folders." : "Liste over dine filer og mapper.", - "All folders" : "Alle mapper", "List of your files and folders that are not shared." : "Liste over dine filer og mapper som ikke er delt.", "No personal files found" : "Ingen personlige filer funnet", "Files that are not shared will show up here." : "Filer som ikke er delt vil vises her.", @@ -407,11 +404,14 @@ OC.L10N.register( "Submitting fields…" : "Sender inn felt...", "Filter filenames…" : "Filtrer filnavn...", "Enable the grid view" : "Aktiver rutenettvisningen", + "Use this address to access your Files via WebDAV" : "Bruk denne adressen for tilgang til filene dine via WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Hvis du har aktivert 2FA, må du opprette og bruke et nytt app-passord ved å klikke her.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} mappe","{folderCount} mapper"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fil","{fileCount} filer"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fil og {folderCount} mappe","1 fil og {folderCount} mapper"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fil og 1 mappe","{fileCount} filer og 1 mappe"], "{fileCount} files and {folderCount} folders" : "{fileCount} filer og {folderCount} mapper", + "All folders" : "Alle mapper", "Personal Files" : "Personlige filer", "Text file" : "Tekstfil", "New text file.txt" : "Ny tekstfil.txt" diff --git a/apps/files/l10n/nb.json b/apps/files/l10n/nb.json index c036a20f9a1..f08be791e8f 100644 --- a/apps/files/l10n/nb.json +++ b/apps/files/l10n/nb.json @@ -172,15 +172,13 @@ "Personal files" : "Personlige filer", "Sort favorites first" : "Sorter favoritter først", "Sort folders before files" : "Sorter mapper før filer", + "Enable folder tree" : "Aktiver mappetre", "Show hidden files" : "Vis skjulte filer", "Crop image previews" : "Beskjær forhåndsvisninger av bilder", - "Enable folder tree" : "Aktiver mappetre", "Additional settings" : "Flere innstillinger", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Kopiert til utklippstavlen", - "Use this address to access your Files via WebDAV" : "Bruk denne adressen for tilgang til filene dine via WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Hvis du har aktivert 2FA, må du opprette og bruke et nytt app-passord ved å klikke her.", "Keyboard shortcuts" : "Tastatursnarveier", "Speed up your Files experience with these quick shortcuts." : "Jobb raskere med filer ved å bruke disse hurtigtastene.", "Open the actions menu for a file" : "Åpner handlingsmenyen for en fil", @@ -311,7 +309,6 @@ "No favorites yet" : "Ingen favoritter enda", "Files and folders you mark as favorite will show up here" : "Filer og mapper som du gjør til favoritter vises her", "List of your files and folders." : "Liste over dine filer og mapper.", - "All folders" : "Alle mapper", "List of your files and folders that are not shared." : "Liste over dine filer og mapper som ikke er delt.", "No personal files found" : "Ingen personlige filer funnet", "Files that are not shared will show up here." : "Filer som ikke er delt vil vises her.", @@ -405,11 +402,14 @@ "Submitting fields…" : "Sender inn felt...", "Filter filenames…" : "Filtrer filnavn...", "Enable the grid view" : "Aktiver rutenettvisningen", + "Use this address to access your Files via WebDAV" : "Bruk denne adressen for tilgang til filene dine via WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Hvis du har aktivert 2FA, må du opprette og bruke et nytt app-passord ved å klikke her.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} mappe","{folderCount} mapper"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fil","{fileCount} filer"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fil og {folderCount} mappe","1 fil og {folderCount} mapper"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fil og 1 mappe","{fileCount} filer og 1 mappe"], "{fileCount} files and {folderCount} folders" : "{fileCount} filer og {folderCount} mapper", + "All folders" : "Alle mapper", "Personal Files" : "Personlige filer", "Text file" : "Tekstfil", "New text file.txt" : "Ny tekstfil.txt" diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js index 2fdd0911225..f47f58c3e5b 100644 --- a/apps/files/l10n/nl.js +++ b/apps/files/l10n/nl.js @@ -29,7 +29,7 @@ OC.L10N.register( "{user} deleted an encrypted file in {file}" : "{user} heeft een versleuteld bestand gewist in {file}", "You restored {file}" : "Je herstelde {file}", "{user} restored {file}" : "{user} herstelde {file}", - "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "Je hernoemde {oldfile} (verborgen) naar {newfile}", + "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "Je hernoemde {oldfile} (verborgen) naar {newfile}(verborgen)", "You renamed {oldfile} (hidden) to {newfile}" : "Je hernoemde {oldfile} (verborgen) naar {newfile}", "You renamed {oldfile} to {newfile} (hidden)" : "Je hernoemde {oldfile} naar {newfile} (verborgen)", "You renamed {oldfile} to {newfile}" : "Je hernoemde {oldfile} naar {newfile}", @@ -200,16 +200,14 @@ OC.L10N.register( "Personal files" : "Persoonlijke bestanden", "Sort favorites first" : "Sorteer eerst favorieten", "Sort folders before files" : "Sorteer mappen voor bestanden", + "Enable folder tree" : "Mappenboom inschakelen", "Show hidden files" : "Toon verborgen bestanden", "Show file type column" : "Toon bestandstypekolom", "Crop image previews" : "Snij afbeeldingvoorbeelden bij", - "Enable folder tree" : "Mappenboom inschakelen", "Additional settings" : "Aanvullende instellingen", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Kopiëren naar het klembord", - "Use this address to access your Files via WebDAV" : "Gebruik dit adres om je bestanden via WebDAV te benaderen", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Als je 2FA hebt ingeschakeld moet je een app wachtwoord maken en gebruiken door hier te klikken.", "Warnings" : "Waarschuwingen", "Prevent warning dialogs from open or reenable them." : "Voorkom dat waarschuwingsvensters worden geopend of schakel ze opnieuw in.", "Show a warning dialog when changing a file extension." : "Een waarschuwingsvenster tonen bij het wijzigen van een bestandsextensie.", @@ -360,7 +358,6 @@ OC.L10N.register( "No favorites yet" : "Nog geen favorieten", "Files and folders you mark as favorite will show up here" : "Bestanden en mappen die je als favoriet aanmerkt, worden hier getoond", "List of your files and folders." : "Lijst van je bestanden en mappen.", - "All folders" : "Alle mappen", "List of your files and folders that are not shared." : "Lijst van je bestanden en mappen die niet gedeeld zijn.", "No personal files found" : "Geen persoonlijke bestanden gevonden", "Files that are not shared will show up here." : "Niet-gedeelde bestanden worden hier getoond.", @@ -454,11 +451,14 @@ OC.L10N.register( "Submitting fields…" : "Verzenden velden ...", "Filter filenames…" : "Filter bestandsnamen...", "Enable the grid view" : "Roosterweergave inschakelen", + "Use this address to access your Files via WebDAV" : "Gebruik dit adres om je bestanden via WebDAV te benaderen", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Als je 2FA hebt ingeschakeld moet je een app wachtwoord maken en gebruiken door hier te klikken.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} map","{folderCount} mappen"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} bestand","{fileCount} bestanden"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 bestand en {folderCount} map","1 bestand en {folderCount} mappen"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} bestand en 1 map","{fileCount} bestanden en 1 map"], "{fileCount} files and {folderCount} folders" : "{fileCount} bestanden en {folderCount} mappen", + "All folders" : "Alle mappen", "Personal Files" : "Persoonlijke bestanden", "Text file" : "Tekstbestand", "New text file.txt" : "Nieuw tekstbestand.txt", diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json index 987a89398f3..86453ae1f00 100644 --- a/apps/files/l10n/nl.json +++ b/apps/files/l10n/nl.json @@ -27,7 +27,7 @@ "{user} deleted an encrypted file in {file}" : "{user} heeft een versleuteld bestand gewist in {file}", "You restored {file}" : "Je herstelde {file}", "{user} restored {file}" : "{user} herstelde {file}", - "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "Je hernoemde {oldfile} (verborgen) naar {newfile}", + "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "Je hernoemde {oldfile} (verborgen) naar {newfile}(verborgen)", "You renamed {oldfile} (hidden) to {newfile}" : "Je hernoemde {oldfile} (verborgen) naar {newfile}", "You renamed {oldfile} to {newfile} (hidden)" : "Je hernoemde {oldfile} naar {newfile} (verborgen)", "You renamed {oldfile} to {newfile}" : "Je hernoemde {oldfile} naar {newfile}", @@ -198,16 +198,14 @@ "Personal files" : "Persoonlijke bestanden", "Sort favorites first" : "Sorteer eerst favorieten", "Sort folders before files" : "Sorteer mappen voor bestanden", + "Enable folder tree" : "Mappenboom inschakelen", "Show hidden files" : "Toon verborgen bestanden", "Show file type column" : "Toon bestandstypekolom", "Crop image previews" : "Snij afbeeldingvoorbeelden bij", - "Enable folder tree" : "Mappenboom inschakelen", "Additional settings" : "Aanvullende instellingen", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Kopiëren naar het klembord", - "Use this address to access your Files via WebDAV" : "Gebruik dit adres om je bestanden via WebDAV te benaderen", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Als je 2FA hebt ingeschakeld moet je een app wachtwoord maken en gebruiken door hier te klikken.", "Warnings" : "Waarschuwingen", "Prevent warning dialogs from open or reenable them." : "Voorkom dat waarschuwingsvensters worden geopend of schakel ze opnieuw in.", "Show a warning dialog when changing a file extension." : "Een waarschuwingsvenster tonen bij het wijzigen van een bestandsextensie.", @@ -358,7 +356,6 @@ "No favorites yet" : "Nog geen favorieten", "Files and folders you mark as favorite will show up here" : "Bestanden en mappen die je als favoriet aanmerkt, worden hier getoond", "List of your files and folders." : "Lijst van je bestanden en mappen.", - "All folders" : "Alle mappen", "List of your files and folders that are not shared." : "Lijst van je bestanden en mappen die niet gedeeld zijn.", "No personal files found" : "Geen persoonlijke bestanden gevonden", "Files that are not shared will show up here." : "Niet-gedeelde bestanden worden hier getoond.", @@ -452,11 +449,14 @@ "Submitting fields…" : "Verzenden velden ...", "Filter filenames…" : "Filter bestandsnamen...", "Enable the grid view" : "Roosterweergave inschakelen", + "Use this address to access your Files via WebDAV" : "Gebruik dit adres om je bestanden via WebDAV te benaderen", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Als je 2FA hebt ingeschakeld moet je een app wachtwoord maken en gebruiken door hier te klikken.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} map","{folderCount} mappen"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} bestand","{fileCount} bestanden"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 bestand en {folderCount} map","1 bestand en {folderCount} mappen"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} bestand en 1 map","{fileCount} bestanden en 1 map"], "{fileCount} files and {folderCount} folders" : "{fileCount} bestanden en {folderCount} mappen", + "All folders" : "Alle mappen", "Personal Files" : "Persoonlijke bestanden", "Text file" : "Tekstbestand", "New text file.txt" : "Nieuw tekstbestand.txt", diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js index 3da5bfecf09..899d5c0e32d 100644 --- a/apps/files/l10n/pl.js +++ b/apps/files/l10n/pl.js @@ -129,6 +129,7 @@ OC.L10N.register( "Search globally by filename …" : "Szukaj globalnie według nazwy pliku...", "Search here by filename …" : "Szukaj tutaj według nazwy pliku...", "Search scope options" : "Opcje zakresu wyszukiwania", + "Filter and search from this location" : "Filtruj i szukaj z tej lokalizacji", "Search globally" : "Szukaj globalnie", "{usedQuotaByte} used" : "Wykorzystano {usedQuotaByte}", "{used} of {quota} used" : "Wykorzystane {used} z {quota}", @@ -141,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Utwórz nowy katalog", "This name is already in use." : "Ta nazwa jest już używana.", "Create" : "Utwórz", + "Files starting with a dot are hidden by default" : "Pliki zaczynające się od kropki są domyślnie ukryte", "Fill template fields" : "Wypełnij pola szablonu", "Submitting fields …" : "Wysyłanie pól…", "Submit" : "Wyślij", @@ -194,23 +196,23 @@ OC.L10N.register( "Search for files" : "Szukaj plików", "Clipboard is not available" : "Schowek jest niedostępny", "WebDAV URL copied to clipboard" : "Adres URL WebDAV skopiowany do schowka", + "Default view" : "Widok domyślny", "All files" : "Wszystkie pliki", "Personal files" : "Pliki osobiste", "Sort favorites first" : "Najpierw sortuj ulubione", "Sort folders before files" : "Sortuj katalogi przed plikami", + "Enable folder tree" : "Włącz drzewo katalogów", "Show hidden files" : "Pokaż ukryte pliki", "Show file type column" : "Pokaż kolumnę typu pliku", "Crop image previews" : "Przytnij podglądy obrazów", - "Enable folder tree" : "Włącz drzewo katalogów", "Additional settings" : "Ustawienia dodatkowe", "WebDAV" : "WebDAV", "WebDAV URL" : "URL WebDAV", "Copy to clipboard" : "Kopiuj do schowka", - "Use this address to access your Files via WebDAV" : "Użyj tego adresu, aby uzyskać dostęp do plików poprzez WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Jeśli włączyłeś 2FA, musisz utworzyć i używać nowego hasła do aplikacji, klikając tutaj.", "Warnings" : "Ostrzeżenie", "Prevent warning dialogs from open or reenable them." : "Zapobiegaj otwieraniu okien dialogowych z ostrzeżeniami lub włącz je ponownie.", "Show a warning dialog when changing a file extension." : "Pokaż okno dialogowe z ostrzeżeniem przy zmianie rozszerzenia pliku.", + "Show a warning dialog when deleting files." : "Pokaż ostrzeżenie przy usuwaniu plików.", "Keyboard shortcuts" : "Skróty klawiaturowe", "Speed up your Files experience with these quick shortcuts." : "Przyspiesz korzystanie z Plików dzięki tym szybkim skrótom.", "Open the actions menu for a file" : "Otwórz menu akcji dla pliku", @@ -361,7 +363,6 @@ OC.L10N.register( "No favorites yet" : "Brak ulubionych", "Files and folders you mark as favorite will show up here" : "Pliki i katalogi, które oznaczysz jako ulubione wyświetlą się tutaj", "List of your files and folders." : "Lista Twoich plików i katalogów.", - "All folders" : "Wszystkie katalogi", "List of your files and folders that are not shared." : "Lista twoich plików i katalogów, które nie są udostępniane", "No personal files found" : "Nie znaleziono plików osobistych", "Files that are not shared will show up here." : "Tutaj pojawią się pliki, które nie są udostępniane.", @@ -456,11 +457,14 @@ OC.L10N.register( "Submitting fields…" : "Przesyłanie pól…", "Filter filenames…" : "Filtruj nazwy plików…", "Enable the grid view" : "Włącz widok siatki", + "Use this address to access your Files via WebDAV" : "Użyj tego adresu, aby uzyskać dostęp do plików poprzez WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Jeśli włączyłeś 2FA, musisz utworzyć i używać nowego hasła do aplikacji, klikając tutaj.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} katalog","{folderCount} katalogi","{folderCount} katalogów","{folderCount} katalogów"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} plik","{fileCount} pliki","{fileCount} plików","{fileCount} plików"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 plik i {folderCount} katalog","1 plik i {folderCount} katalogi","1 plik i {folderCount} katalogów","1 plik i {folderCount} katalogów"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} plik i 1 katalog","{fileCount} pliki i 1 katalog","{fileCount} plików i 1 katalog","{fileCount} plików i 1 katalog"], "{fileCount} files and {folderCount} folders" : "{fileCount} plików i {folderCount} katalogów", + "All folders" : "Wszystkie katalogi", "Personal Files" : "Pliki osobiste", "Text file" : "Plik tekstowy", "New text file.txt" : "Nowy plik tekstowy.txt", diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json index 317d56d6744..12bc17b3dc6 100644 --- a/apps/files/l10n/pl.json +++ b/apps/files/l10n/pl.json @@ -127,6 +127,7 @@ "Search globally by filename …" : "Szukaj globalnie według nazwy pliku...", "Search here by filename …" : "Szukaj tutaj według nazwy pliku...", "Search scope options" : "Opcje zakresu wyszukiwania", + "Filter and search from this location" : "Filtruj i szukaj z tej lokalizacji", "Search globally" : "Szukaj globalnie", "{usedQuotaByte} used" : "Wykorzystano {usedQuotaByte}", "{used} of {quota} used" : "Wykorzystane {used} z {quota}", @@ -139,6 +140,7 @@ "Create new folder" : "Utwórz nowy katalog", "This name is already in use." : "Ta nazwa jest już używana.", "Create" : "Utwórz", + "Files starting with a dot are hidden by default" : "Pliki zaczynające się od kropki są domyślnie ukryte", "Fill template fields" : "Wypełnij pola szablonu", "Submitting fields …" : "Wysyłanie pól…", "Submit" : "Wyślij", @@ -192,23 +194,23 @@ "Search for files" : "Szukaj plików", "Clipboard is not available" : "Schowek jest niedostępny", "WebDAV URL copied to clipboard" : "Adres URL WebDAV skopiowany do schowka", + "Default view" : "Widok domyślny", "All files" : "Wszystkie pliki", "Personal files" : "Pliki osobiste", "Sort favorites first" : "Najpierw sortuj ulubione", "Sort folders before files" : "Sortuj katalogi przed plikami", + "Enable folder tree" : "Włącz drzewo katalogów", "Show hidden files" : "Pokaż ukryte pliki", "Show file type column" : "Pokaż kolumnę typu pliku", "Crop image previews" : "Przytnij podglądy obrazów", - "Enable folder tree" : "Włącz drzewo katalogów", "Additional settings" : "Ustawienia dodatkowe", "WebDAV" : "WebDAV", "WebDAV URL" : "URL WebDAV", "Copy to clipboard" : "Kopiuj do schowka", - "Use this address to access your Files via WebDAV" : "Użyj tego adresu, aby uzyskać dostęp do plików poprzez WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Jeśli włączyłeś 2FA, musisz utworzyć i używać nowego hasła do aplikacji, klikając tutaj.", "Warnings" : "Ostrzeżenie", "Prevent warning dialogs from open or reenable them." : "Zapobiegaj otwieraniu okien dialogowych z ostrzeżeniami lub włącz je ponownie.", "Show a warning dialog when changing a file extension." : "Pokaż okno dialogowe z ostrzeżeniem przy zmianie rozszerzenia pliku.", + "Show a warning dialog when deleting files." : "Pokaż ostrzeżenie przy usuwaniu plików.", "Keyboard shortcuts" : "Skróty klawiaturowe", "Speed up your Files experience with these quick shortcuts." : "Przyspiesz korzystanie z Plików dzięki tym szybkim skrótom.", "Open the actions menu for a file" : "Otwórz menu akcji dla pliku", @@ -359,7 +361,6 @@ "No favorites yet" : "Brak ulubionych", "Files and folders you mark as favorite will show up here" : "Pliki i katalogi, które oznaczysz jako ulubione wyświetlą się tutaj", "List of your files and folders." : "Lista Twoich plików i katalogów.", - "All folders" : "Wszystkie katalogi", "List of your files and folders that are not shared." : "Lista twoich plików i katalogów, które nie są udostępniane", "No personal files found" : "Nie znaleziono plików osobistych", "Files that are not shared will show up here." : "Tutaj pojawią się pliki, które nie są udostępniane.", @@ -454,11 +455,14 @@ "Submitting fields…" : "Przesyłanie pól…", "Filter filenames…" : "Filtruj nazwy plików…", "Enable the grid view" : "Włącz widok siatki", + "Use this address to access your Files via WebDAV" : "Użyj tego adresu, aby uzyskać dostęp do plików poprzez WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Jeśli włączyłeś 2FA, musisz utworzyć i używać nowego hasła do aplikacji, klikając tutaj.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} katalog","{folderCount} katalogi","{folderCount} katalogów","{folderCount} katalogów"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} plik","{fileCount} pliki","{fileCount} plików","{fileCount} plików"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 plik i {folderCount} katalog","1 plik i {folderCount} katalogi","1 plik i {folderCount} katalogów","1 plik i {folderCount} katalogów"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} plik i 1 katalog","{fileCount} pliki i 1 katalog","{fileCount} plików i 1 katalog","{fileCount} plików i 1 katalog"], "{fileCount} files and {folderCount} folders" : "{fileCount} plików i {folderCount} katalogów", + "All folders" : "Wszystkie katalogi", "Personal Files" : "Pliki osobiste", "Text file" : "Plik tekstowy", "New text file.txt" : "Nowy plik tekstowy.txt", diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js index 74a6f6da7b6..3a5c0b5af31 100644 --- a/apps/files/l10n/pt_BR.js +++ b/apps/files/l10n/pt_BR.js @@ -201,16 +201,18 @@ OC.L10N.register( "Personal files" : "Arquivos pessoais", "Sort favorites first" : "Ordenar favoritos primeiro", "Sort folders before files" : "Ordenar pastas antes de arquivos", + "Enable folder tree" : "Ativar árvore de pastas", + "Visual settings" : "Configurações visuais", "Show hidden files" : "Mostrar arquivos ocultos", "Show file type column" : "Mostrar coluna de tipo de arquivo", "Crop image previews" : "Cortar visualizações de imagem", - "Enable folder tree" : "Ativar árvore de pastas", + "Show files extensions" : "Mostrar extensões de arquivos", "Additional settings" : "Configurações adicionais", "WebDAV" : "WebDAV", "WebDAV URL" : "URL WebDAV", "Copy to clipboard" : "Copiar para área de transferência", - "Use this address to access your Files via WebDAV" : "Use este endereço para acessar seus Arquivos via WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Se tiver ativado a 2FA, você deverá criar e usar uma nova senha do aplicativo clicando aqui.", + "Use this address to access your Files via WebDAV." : "Use este endereço para acessar seus arquivos via WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "A Autenticação de Dois Fatores está ativada para sua conta e, portanto, você precisa usar uma senha de aplicativo para conectar um cliente WebDAV externo.", "Warnings" : "Avisos", "Prevent warning dialogs from open or reenable them." : "Impedir que as caixas de diálogo de aviso sejam abertas ou reativá-las.", "Show a warning dialog when changing a file extension." : "Mostrar uma caixa de diálogo de aviso ao alterar uma extensão de arquivo.", @@ -332,6 +334,7 @@ OC.L10N.register( "Templates" : "Modelos", "New template folder" : "Nova pasta de modelo", "In folder" : "Na pasta", + "Search in all files" : "Pesquisar em todos os arquivos", "Search in folder: {folder}" : "Pesquisar na pasta: {folder}", "One of the dropped files could not be processed" : "Um dos arquivos depositados não pôde ser processado", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Seu navegador não oferece suporte à API Filesystem. Os diretórios não serão carregados", @@ -365,7 +368,7 @@ OC.L10N.register( "No favorites yet" : "Você não possui favoritos!", "Files and folders you mark as favorite will show up here" : "Suas pastas e arquivos favoritos serão exibidos aqui.", "List of your files and folders." : "Lista de seus arquivos e pastas.", - "All folders" : "Todas as pastas", + "Folder tree" : "Árvore de pastas", "List of your files and folders that are not shared." : "Lista dos seus arquivos e pastas que não estão compartilhados.", "No personal files found" : "Nenhum arquivo pessoal encontrado", "Files that are not shared will show up here." : "Arquivos que não estão compartilhados aparecerão aqui.", @@ -460,11 +463,14 @@ OC.L10N.register( "Submitting fields…" : "Enviando campos…", "Filter filenames…" : "Filtrar nomes de arquivos…", "Enable the grid view" : "Ativar a visualização em grade", + "Use this address to access your Files via WebDAV" : "Use este endereço para acessar seus Arquivos via WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Se tiver ativado a 2FA, você deverá criar e usar uma nova senha do aplicativo clicando aqui.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} pasta","{folderCount} de pastas","{folderCount} pastas"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} arquivo","{fileCount} de arquivos","{fileCount} arquivos"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 arquivo e {folderCount} pasta","1 arquivo e {folderCount} de pastas","1 arquivo e {folderCount} pastas"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} arquivo e 1 pasta","{fileCount} de arquivos e 1 pasta","{fileCount} arquivos e 1 pasta"], "{fileCount} files and {folderCount} folders" : "{fileCount} arquivos e {folderCount} pastas", + "All folders" : "Todas as pastas", "Personal Files" : "Arquivos pessoais", "Text file" : "Arquivo texto", "New text file.txt" : "Novo arquivo de texto.txt", diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json index 78de8f01be9..03418e32744 100644 --- a/apps/files/l10n/pt_BR.json +++ b/apps/files/l10n/pt_BR.json @@ -199,16 +199,18 @@ "Personal files" : "Arquivos pessoais", "Sort favorites first" : "Ordenar favoritos primeiro", "Sort folders before files" : "Ordenar pastas antes de arquivos", + "Enable folder tree" : "Ativar árvore de pastas", + "Visual settings" : "Configurações visuais", "Show hidden files" : "Mostrar arquivos ocultos", "Show file type column" : "Mostrar coluna de tipo de arquivo", "Crop image previews" : "Cortar visualizações de imagem", - "Enable folder tree" : "Ativar árvore de pastas", + "Show files extensions" : "Mostrar extensões de arquivos", "Additional settings" : "Configurações adicionais", "WebDAV" : "WebDAV", "WebDAV URL" : "URL WebDAV", "Copy to clipboard" : "Copiar para área de transferência", - "Use this address to access your Files via WebDAV" : "Use este endereço para acessar seus Arquivos via WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Se tiver ativado a 2FA, você deverá criar e usar uma nova senha do aplicativo clicando aqui.", + "Use this address to access your Files via WebDAV." : "Use este endereço para acessar seus arquivos via WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "A Autenticação de Dois Fatores está ativada para sua conta e, portanto, você precisa usar uma senha de aplicativo para conectar um cliente WebDAV externo.", "Warnings" : "Avisos", "Prevent warning dialogs from open or reenable them." : "Impedir que as caixas de diálogo de aviso sejam abertas ou reativá-las.", "Show a warning dialog when changing a file extension." : "Mostrar uma caixa de diálogo de aviso ao alterar uma extensão de arquivo.", @@ -330,6 +332,7 @@ "Templates" : "Modelos", "New template folder" : "Nova pasta de modelo", "In folder" : "Na pasta", + "Search in all files" : "Pesquisar em todos os arquivos", "Search in folder: {folder}" : "Pesquisar na pasta: {folder}", "One of the dropped files could not be processed" : "Um dos arquivos depositados não pôde ser processado", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Seu navegador não oferece suporte à API Filesystem. Os diretórios não serão carregados", @@ -363,7 +366,7 @@ "No favorites yet" : "Você não possui favoritos!", "Files and folders you mark as favorite will show up here" : "Suas pastas e arquivos favoritos serão exibidos aqui.", "List of your files and folders." : "Lista de seus arquivos e pastas.", - "All folders" : "Todas as pastas", + "Folder tree" : "Árvore de pastas", "List of your files and folders that are not shared." : "Lista dos seus arquivos e pastas que não estão compartilhados.", "No personal files found" : "Nenhum arquivo pessoal encontrado", "Files that are not shared will show up here." : "Arquivos que não estão compartilhados aparecerão aqui.", @@ -458,11 +461,14 @@ "Submitting fields…" : "Enviando campos…", "Filter filenames…" : "Filtrar nomes de arquivos…", "Enable the grid view" : "Ativar a visualização em grade", + "Use this address to access your Files via WebDAV" : "Use este endereço para acessar seus Arquivos via WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Se tiver ativado a 2FA, você deverá criar e usar uma nova senha do aplicativo clicando aqui.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} pasta","{folderCount} de pastas","{folderCount} pastas"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} arquivo","{fileCount} de arquivos","{fileCount} arquivos"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 arquivo e {folderCount} pasta","1 arquivo e {folderCount} de pastas","1 arquivo e {folderCount} pastas"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} arquivo e 1 pasta","{fileCount} de arquivos e 1 pasta","{fileCount} arquivos e 1 pasta"], "{fileCount} files and {folderCount} folders" : "{fileCount} arquivos e {folderCount} pastas", + "All folders" : "Todas as pastas", "Personal Files" : "Arquivos pessoais", "Text file" : "Arquivo texto", "New text file.txt" : "Novo arquivo de texto.txt", diff --git a/apps/files/l10n/ro.js b/apps/files/l10n/ro.js index 29655d9be9b..77059059f79 100644 --- a/apps/files/l10n/ro.js +++ b/apps/files/l10n/ro.js @@ -133,8 +133,6 @@ OC.L10N.register( "Additional settings" : "Setări adiționale", "WebDAV" : "WebDAV", "Copy to clipboard" : "Copiază în clipboard", - "Use this address to access your Files via WebDAV" : "Folosiți această adresă pentru a accesa fișierele dumneavoastră folosind WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Dacă ați activat 2FA, trebuie să creați și să folosiți o nouă parolă de aplicație, dând click aici.", "Keyboard shortcuts" : "Scurtături din tastatură", "Navigation" : "Navigare", "View" : "Vizualizare", @@ -273,6 +271,8 @@ OC.L10N.register( "An error occurred while trying to update the tags" : "A apărut o eroare în timpul actualizării etichetelor", "Upload (max. %s)" : "Încarcă (max. %s)", "Enable the grid view" : "Activați organizarea tip grilă", + "Use this address to access your Files via WebDAV" : "Folosiți această adresă pentru a accesa fișierele dumneavoastră folosind WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Dacă ați activat 2FA, trebuie să creați și să folosiți o nouă parolă de aplicație, dând click aici.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} folder","{folderCount} foldere","{folderCount} foldere"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fișier","{fileCount} fișiere","{fileCount} fișiere"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fișier și {folderCount} folder","1 fișier și {folderCount} foldere","1 fișier și {folderCount} foldere"], diff --git a/apps/files/l10n/ro.json b/apps/files/l10n/ro.json index b36afb204f3..d635b50078b 100644 --- a/apps/files/l10n/ro.json +++ b/apps/files/l10n/ro.json @@ -131,8 +131,6 @@ "Additional settings" : "Setări adiționale", "WebDAV" : "WebDAV", "Copy to clipboard" : "Copiază în clipboard", - "Use this address to access your Files via WebDAV" : "Folosiți această adresă pentru a accesa fișierele dumneavoastră folosind WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Dacă ați activat 2FA, trebuie să creați și să folosiți o nouă parolă de aplicație, dând click aici.", "Keyboard shortcuts" : "Scurtături din tastatură", "Navigation" : "Navigare", "View" : "Vizualizare", @@ -271,6 +269,8 @@ "An error occurred while trying to update the tags" : "A apărut o eroare în timpul actualizării etichetelor", "Upload (max. %s)" : "Încarcă (max. %s)", "Enable the grid view" : "Activați organizarea tip grilă", + "Use this address to access your Files via WebDAV" : "Folosiți această adresă pentru a accesa fișierele dumneavoastră folosind WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Dacă ați activat 2FA, trebuie să creați și să folosiți o nouă parolă de aplicație, dând click aici.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} folder","{folderCount} foldere","{folderCount} foldere"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fișier","{fileCount} fișiere","{fileCount} fișiere"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fișier și {folderCount} folder","1 fișier și {folderCount} foldere","1 fișier și {folderCount} foldere"], diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js index 33498f0ad41..dfb00ab299c 100644 --- a/apps/files/l10n/ru.js +++ b/apps/files/l10n/ru.js @@ -142,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Создать папку", "This name is already in use." : "Это название уже используется.", "Create" : "Создать", + "Files starting with a dot are hidden by default" : "Файлы, начинающиеся с точки, скрыты по умолчанию", "Fill template fields" : "Заполните поля шаблона", "Submitting fields …" : "Отправка полей…", "Submit" : "Отправить ответ", @@ -200,16 +201,18 @@ OC.L10N.register( "Personal files" : "Личные файлы", "Sort favorites first" : "Сначала избранное", "Sort folders before files" : "Начинать список с папок", + "Enable folder tree" : "Включить дерево папок", + "Visual settings" : "Настройки отображения", "Show hidden files" : "Показывать скрытые файлы", "Show file type column" : "Показать колонку с типом файла", "Crop image previews" : "Обрезать пред. просмотр", - "Enable folder tree" : "Включить дерево папок", + "Show files extensions" : "Показывать расширения файлов", "Additional settings" : "Дополнительные параметры", "WebDAV" : "WebDAV", "WebDAV URL" : "Ссылка WebDAV", "Copy to clipboard" : "Копировать в буфер", - "Use this address to access your Files via WebDAV" : "Используйте этот адрес для подключения WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Если вы включили двухфакторную аутентификацию, то нажмите здесь, чтобы создать пароль приложения.", + "Use this address to access your Files via WebDAV." : "Используйте этот адрес для доступа к вашим файлам по WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Для вашего аккаунта включена двухфакторная аутентификация, поэтому вам необходимо использовать пароль приложения чтобы подключить внешний WebDAV клиент.", "Warnings" : "Предупреждения", "Prevent warning dialogs from open or reenable them." : "Предотвратить открытие диалоговых окон с предупреждениями или включить их повторно.", "Show a warning dialog when changing a file extension." : "Показать диалоговое окно предупреждения при изменении расширения файла.", @@ -331,16 +334,17 @@ OC.L10N.register( "Templates" : "Шаблоны", "New template folder" : "Новая папка шаблонов", "In folder" : "В папке", + "Search in all files" : "Поиск во всех файлах", "Search in folder: {folder}" : "Поиск в папке: «{folder}»", "One of the dropped files could not be processed" : "Один из перетащенных файлов не может быть обработан", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Папки не будут загружены, так как используемый браузер не поддерживает работу с файловой системой.", "No files to upload" : "Не выбрано ни одного файла для передачи на сервер", "Unable to create the directory {directory}" : "Не удалось создать папку «{directory}»", - "Some files could not be uploaded" : "Некоторые файлы не могут быть загружены", + "Some files could not be uploaded" : "Не удалось загрузить некоторые файлы", "Files uploaded successfully" : "Файлы успешно обновлены", - "No files to process" : "Не ни одного файла для обработки", - "Some files could not be copied" : "Некоторые файлы не могут быть скопированы", - "Some files could not be moved" : "Некоторые файлы не могут быть перемещены", + "No files to process" : "Нет файлов для обработки", + "Some files could not be copied" : "Не удалось скопировать некоторые файлы", + "Some files could not be moved" : "Не удалось переместить некоторые файлы", "Files copied successfully" : "Файлы успешно скопированы", "Files moved successfully" : "Файлы успешно перемещены", "Conflicts resolution skipped" : "Разрешение конфликтов пропущено", @@ -364,7 +368,6 @@ OC.L10N.register( "No favorites yet" : "В избранное ещё ничего не добавлено ", "Files and folders you mark as favorite will show up here" : "Здесь будут показаны файлы и каталоги, отмеченные как избранные", "List of your files and folders." : "Список ваших файлов и каталогов.", - "All folders" : "Все папки", "List of your files and folders that are not shared." : "Список ваших неопубликованных файлов и папок.", "No personal files found" : "Личные файлы не найдены", "Files that are not shared will show up here." : "Файлы, которые не опубликованы, показаны здесь.", @@ -459,11 +462,14 @@ OC.L10N.register( "Submitting fields…" : "Отправка полей…", "Filter filenames…" : "Фильтровать имена файлов…", "Enable the grid view" : "Включить режим просмотра сеткой", + "Use this address to access your Files via WebDAV" : "Используйте этот адрес для подключения WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Если вы включили двухфакторную аутентификацию, то нажмите здесь, чтобы создать пароль приложения.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} папка","{folderCount} папки","{folderCount} папок","{folderCount} папки"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} файл","{fileCount} файла","{fileCount} файлов","{fileCount} файла"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["один файл и {folderCount} папка","один файл и {folderCount} папки","один файл и {folderCount} папок","один файл и {folderCount} папки"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} файл и одна папка","{fileCount} файла и одна папка","{fileCount} файлов и одна папка","{fileCount} файла и одна папка"], "{fileCount} files and {folderCount} folders" : "файлов: {fileCount}, папок: {folderCount}", + "All folders" : "Все папки", "Personal Files" : "Личные файлы", "Text file" : "Текстовый файл", "New text file.txt" : "Новый текстовый файл.txt", diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json index 1331913eeb9..6b654cf6293 100644 --- a/apps/files/l10n/ru.json +++ b/apps/files/l10n/ru.json @@ -140,6 +140,7 @@ "Create new folder" : "Создать папку", "This name is already in use." : "Это название уже используется.", "Create" : "Создать", + "Files starting with a dot are hidden by default" : "Файлы, начинающиеся с точки, скрыты по умолчанию", "Fill template fields" : "Заполните поля шаблона", "Submitting fields …" : "Отправка полей…", "Submit" : "Отправить ответ", @@ -198,16 +199,18 @@ "Personal files" : "Личные файлы", "Sort favorites first" : "Сначала избранное", "Sort folders before files" : "Начинать список с папок", + "Enable folder tree" : "Включить дерево папок", + "Visual settings" : "Настройки отображения", "Show hidden files" : "Показывать скрытые файлы", "Show file type column" : "Показать колонку с типом файла", "Crop image previews" : "Обрезать пред. просмотр", - "Enable folder tree" : "Включить дерево папок", + "Show files extensions" : "Показывать расширения файлов", "Additional settings" : "Дополнительные параметры", "WebDAV" : "WebDAV", "WebDAV URL" : "Ссылка WebDAV", "Copy to clipboard" : "Копировать в буфер", - "Use this address to access your Files via WebDAV" : "Используйте этот адрес для подключения WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Если вы включили двухфакторную аутентификацию, то нажмите здесь, чтобы создать пароль приложения.", + "Use this address to access your Files via WebDAV." : "Используйте этот адрес для доступа к вашим файлам по WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Для вашего аккаунта включена двухфакторная аутентификация, поэтому вам необходимо использовать пароль приложения чтобы подключить внешний WebDAV клиент.", "Warnings" : "Предупреждения", "Prevent warning dialogs from open or reenable them." : "Предотвратить открытие диалоговых окон с предупреждениями или включить их повторно.", "Show a warning dialog when changing a file extension." : "Показать диалоговое окно предупреждения при изменении расширения файла.", @@ -329,16 +332,17 @@ "Templates" : "Шаблоны", "New template folder" : "Новая папка шаблонов", "In folder" : "В папке", + "Search in all files" : "Поиск во всех файлах", "Search in folder: {folder}" : "Поиск в папке: «{folder}»", "One of the dropped files could not be processed" : "Один из перетащенных файлов не может быть обработан", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Папки не будут загружены, так как используемый браузер не поддерживает работу с файловой системой.", "No files to upload" : "Не выбрано ни одного файла для передачи на сервер", "Unable to create the directory {directory}" : "Не удалось создать папку «{directory}»", - "Some files could not be uploaded" : "Некоторые файлы не могут быть загружены", + "Some files could not be uploaded" : "Не удалось загрузить некоторые файлы", "Files uploaded successfully" : "Файлы успешно обновлены", - "No files to process" : "Не ни одного файла для обработки", - "Some files could not be copied" : "Некоторые файлы не могут быть скопированы", - "Some files could not be moved" : "Некоторые файлы не могут быть перемещены", + "No files to process" : "Нет файлов для обработки", + "Some files could not be copied" : "Не удалось скопировать некоторые файлы", + "Some files could not be moved" : "Не удалось переместить некоторые файлы", "Files copied successfully" : "Файлы успешно скопированы", "Files moved successfully" : "Файлы успешно перемещены", "Conflicts resolution skipped" : "Разрешение конфликтов пропущено", @@ -362,7 +366,6 @@ "No favorites yet" : "В избранное ещё ничего не добавлено ", "Files and folders you mark as favorite will show up here" : "Здесь будут показаны файлы и каталоги, отмеченные как избранные", "List of your files and folders." : "Список ваших файлов и каталогов.", - "All folders" : "Все папки", "List of your files and folders that are not shared." : "Список ваших неопубликованных файлов и папок.", "No personal files found" : "Личные файлы не найдены", "Files that are not shared will show up here." : "Файлы, которые не опубликованы, показаны здесь.", @@ -457,11 +460,14 @@ "Submitting fields…" : "Отправка полей…", "Filter filenames…" : "Фильтровать имена файлов…", "Enable the grid view" : "Включить режим просмотра сеткой", + "Use this address to access your Files via WebDAV" : "Используйте этот адрес для подключения WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Если вы включили двухфакторную аутентификацию, то нажмите здесь, чтобы создать пароль приложения.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} папка","{folderCount} папки","{folderCount} папок","{folderCount} папки"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} файл","{fileCount} файла","{fileCount} файлов","{fileCount} файла"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["один файл и {folderCount} папка","один файл и {folderCount} папки","один файл и {folderCount} папок","один файл и {folderCount} папки"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} файл и одна папка","{fileCount} файла и одна папка","{fileCount} файлов и одна папка","{fileCount} файла и одна папка"], "{fileCount} files and {folderCount} folders" : "файлов: {fileCount}, папок: {folderCount}", + "All folders" : "Все папки", "Personal Files" : "Личные файлы", "Text file" : "Текстовый файл", "New text file.txt" : "Новый текстовый файл.txt", diff --git a/apps/files/l10n/sc.js b/apps/files/l10n/sc.js index a0033763251..6e5bd0ba904 100644 --- a/apps/files/l10n/sc.js +++ b/apps/files/l10n/sc.js @@ -126,8 +126,6 @@ OC.L10N.register( "WebDAV" : "WebDAV", "WebDAV URL" : "URL WebDAV", "Copy to clipboard" : "Còpia in is punta de billete", - "Use this address to access your Files via WebDAV" : "Imprea custu indiritzu pro intrare in archìvios tràmite WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si as ativadu 2FA, depes creare e impreare una crae de s'aplicatzione noa incarchende inoghe.", "Keyboard shortcuts" : "Curtziadòrgios de tecladu", "Selection" : "Seletzione", "Navigation" : "Navigatzione", @@ -194,7 +192,6 @@ OC.L10N.register( "No favorites yet" : "Ancora perunu preferidu", "Files and folders you mark as favorite will show up here" : "Is archìvios e is cartellas chi marcas comente preferidos ant a aparèssere inoghe", "List of your files and folders." : "Lista de is cartellas e is archìvios tuos.", - "All folders" : "Totu is cartellas", "No personal files found" : "Perunu archìviu personale agatadu", "Recent" : "Reghente", "List of recently modified files and folders." : "Lista de cartellas e archìvios modificados de reghente.", @@ -282,11 +279,14 @@ OC.L10N.register( "Upload (max. %s)" : "Càrriga (max. %s)", "Filter filenames…" : "Filtra nùmenes de archìviu...", "Enable the grid view" : "Ativa sa visualizatzione de mosàicu", + "Use this address to access your Files via WebDAV" : "Imprea custu indiritzu pro intrare in archìvios tràmite WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si as ativadu 2FA, depes creare e impreare una crae de s'aplicatzione noa incarchende inoghe.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} cartella","{folderCount} cartellas"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} archìviu","{fileCount} archìvios"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 archìviu e {folderCount} cartella","1 archìviu e {folderCount} cartellas"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} archìviu e 1 cartella","{fileCount} archìvios e 1 cartella"], "{fileCount} files and {folderCount} folders" : "{fileCount} archìvios e {folderCount} cartellas", + "All folders" : "Totu is cartellas", "Personal Files" : "Archìvios personales", "Text file" : "Archìviu de testu", "New text file.txt" : "Archìviu de testu .txt nou" diff --git a/apps/files/l10n/sc.json b/apps/files/l10n/sc.json index 468d8b34fcb..11213befcf9 100644 --- a/apps/files/l10n/sc.json +++ b/apps/files/l10n/sc.json @@ -124,8 +124,6 @@ "WebDAV" : "WebDAV", "WebDAV URL" : "URL WebDAV", "Copy to clipboard" : "Còpia in is punta de billete", - "Use this address to access your Files via WebDAV" : "Imprea custu indiritzu pro intrare in archìvios tràmite WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si as ativadu 2FA, depes creare e impreare una crae de s'aplicatzione noa incarchende inoghe.", "Keyboard shortcuts" : "Curtziadòrgios de tecladu", "Selection" : "Seletzione", "Navigation" : "Navigatzione", @@ -192,7 +190,6 @@ "No favorites yet" : "Ancora perunu preferidu", "Files and folders you mark as favorite will show up here" : "Is archìvios e is cartellas chi marcas comente preferidos ant a aparèssere inoghe", "List of your files and folders." : "Lista de is cartellas e is archìvios tuos.", - "All folders" : "Totu is cartellas", "No personal files found" : "Perunu archìviu personale agatadu", "Recent" : "Reghente", "List of recently modified files and folders." : "Lista de cartellas e archìvios modificados de reghente.", @@ -280,11 +277,14 @@ "Upload (max. %s)" : "Càrriga (max. %s)", "Filter filenames…" : "Filtra nùmenes de archìviu...", "Enable the grid view" : "Ativa sa visualizatzione de mosàicu", + "Use this address to access your Files via WebDAV" : "Imprea custu indiritzu pro intrare in archìvios tràmite WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Si as ativadu 2FA, depes creare e impreare una crae de s'aplicatzione noa incarchende inoghe.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} cartella","{folderCount} cartellas"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} archìviu","{fileCount} archìvios"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 archìviu e {folderCount} cartella","1 archìviu e {folderCount} cartellas"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} archìviu e 1 cartella","{fileCount} archìvios e 1 cartella"], "{fileCount} files and {folderCount} folders" : "{fileCount} archìvios e {folderCount} cartellas", + "All folders" : "Totu is cartellas", "Personal Files" : "Archìvios personales", "Text file" : "Archìviu de testu", "New text file.txt" : "Archìviu de testu .txt nou" diff --git a/apps/files/l10n/sk.js b/apps/files/l10n/sk.js index 0483a5b142a..e146a19bbfa 100644 --- a/apps/files/l10n/sk.js +++ b/apps/files/l10n/sk.js @@ -185,15 +185,13 @@ OC.L10N.register( "Personal files" : "Osobné súbory", "Sort favorites first" : "Zoradiť od najobľúbenejších", "Sort folders before files" : "Zoradiť adresáre pred súbormi", + "Enable folder tree" : "Povoliť adresárový strom", "Show hidden files" : "Zobraziť skryté súbory", "Crop image previews" : "Orezať náhľady obrázkov", - "Enable folder tree" : "Povoliť adresárový strom", "Additional settings" : "Ďalšie nastavenia", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Skopírovať do schránky", - "Use this address to access your Files via WebDAV" : "Táto adresa sa používa na prístup k vašim súborom prostredníctvom WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ak ste povolili 2FA, musíte kliknutím sem vytvoriť a použiť nové heslo pre aplikáciu.", "Warnings" : "Upozornenia", "Prevent warning dialogs from open or reenable them." : "Zabrániť otváraniu varovných dialógov alebo ich znova povoliť.", "Show a warning dialog when changing a file extension." : "Pri zmene prípony súboru zobraziť dialógové okno s upozornením.", @@ -346,7 +344,6 @@ OC.L10N.register( "No favorites yet" : "Zatiaľ žiadne obľúbené", "Files and folders you mark as favorite will show up here" : "Súbory a priečinky označené ako obľúbené budú zobrazené tu", "List of your files and folders." : "Zoznam vašich súborov a priečinkov.", - "All folders" : "Všetky adresáre", "List of your files and folders that are not shared." : "Zoznam vašich súborov a priečinkov, ktoré nie sú zdieľané.", "No personal files found" : "Žiadne osobné súbory nenájdené", "Files that are not shared will show up here." : "Súbory, ktoré nie sú zdieľané, sa tu nezobrazia.", @@ -440,11 +437,14 @@ OC.L10N.register( "Submitting fields…" : "Položky sa odosielajú ...", "Filter filenames…" : "Filtrovať názvy súborov...", "Enable the grid view" : "Povoliť zobrazenie v mriežke", + "Use this address to access your Files via WebDAV" : "Táto adresa sa používa na prístup k vašim súborom prostredníctvom WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ak ste povolili 2FA, musíte kliknutím sem vytvoriť a použiť nové heslo pre aplikáciu.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} priečinok","{folderCount} priečinky","{folderCount} priečinkov","{folderCount} priečinkov"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} súbor","{fileCount} súbory","{fileCount} súborov","{fileCount} súborov"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 súbor a {folderCount} priečinok","1 súbor a {folderCount} priečinky","1 súbor a {folderCount} priečinky","1 súbor a {folderCount} priečinky"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} súbor a 1 priečinok","{fileCount} súborov a 1 priečinok","{fileCount} súborov a 1 priečinok","{fileCount} súborov a 1 priečinok"], "{fileCount} files and {folderCount} folders" : "{fileCount} súborov a {folderCount} priečinkov", + "All folders" : "Všetky adresáre", "Personal Files" : "Osobné Súbory", "Text file" : "Textový súbor", "New text file.txt" : "Nový text file.txt", diff --git a/apps/files/l10n/sk.json b/apps/files/l10n/sk.json index caa39defeaa..597a2acddcc 100644 --- a/apps/files/l10n/sk.json +++ b/apps/files/l10n/sk.json @@ -183,15 +183,13 @@ "Personal files" : "Osobné súbory", "Sort favorites first" : "Zoradiť od najobľúbenejších", "Sort folders before files" : "Zoradiť adresáre pred súbormi", + "Enable folder tree" : "Povoliť adresárový strom", "Show hidden files" : "Zobraziť skryté súbory", "Crop image previews" : "Orezať náhľady obrázkov", - "Enable folder tree" : "Povoliť adresárový strom", "Additional settings" : "Ďalšie nastavenia", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Skopírovať do schránky", - "Use this address to access your Files via WebDAV" : "Táto adresa sa používa na prístup k vašim súborom prostredníctvom WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ak ste povolili 2FA, musíte kliknutím sem vytvoriť a použiť nové heslo pre aplikáciu.", "Warnings" : "Upozornenia", "Prevent warning dialogs from open or reenable them." : "Zabrániť otváraniu varovných dialógov alebo ich znova povoliť.", "Show a warning dialog when changing a file extension." : "Pri zmene prípony súboru zobraziť dialógové okno s upozornením.", @@ -344,7 +342,6 @@ "No favorites yet" : "Zatiaľ žiadne obľúbené", "Files and folders you mark as favorite will show up here" : "Súbory a priečinky označené ako obľúbené budú zobrazené tu", "List of your files and folders." : "Zoznam vašich súborov a priečinkov.", - "All folders" : "Všetky adresáre", "List of your files and folders that are not shared." : "Zoznam vašich súborov a priečinkov, ktoré nie sú zdieľané.", "No personal files found" : "Žiadne osobné súbory nenájdené", "Files that are not shared will show up here." : "Súbory, ktoré nie sú zdieľané, sa tu nezobrazia.", @@ -438,11 +435,14 @@ "Submitting fields…" : "Položky sa odosielajú ...", "Filter filenames…" : "Filtrovať názvy súborov...", "Enable the grid view" : "Povoliť zobrazenie v mriežke", + "Use this address to access your Files via WebDAV" : "Táto adresa sa používa na prístup k vašim súborom prostredníctvom WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ak ste povolili 2FA, musíte kliknutím sem vytvoriť a použiť nové heslo pre aplikáciu.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} priečinok","{folderCount} priečinky","{folderCount} priečinkov","{folderCount} priečinkov"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} súbor","{fileCount} súbory","{fileCount} súborov","{fileCount} súborov"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 súbor a {folderCount} priečinok","1 súbor a {folderCount} priečinky","1 súbor a {folderCount} priečinky","1 súbor a {folderCount} priečinky"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} súbor a 1 priečinok","{fileCount} súborov a 1 priečinok","{fileCount} súborov a 1 priečinok","{fileCount} súborov a 1 priečinok"], "{fileCount} files and {folderCount} folders" : "{fileCount} súborov a {folderCount} priečinkov", + "All folders" : "Všetky adresáre", "Personal Files" : "Osobné Súbory", "Text file" : "Textový súbor", "New text file.txt" : "Nový text file.txt", diff --git a/apps/files/l10n/sl.js b/apps/files/l10n/sl.js index e80e779ffb0..175529f4a2d 100644 --- a/apps/files/l10n/sl.js +++ b/apps/files/l10n/sl.js @@ -186,15 +186,13 @@ OC.L10N.register( "Personal files" : "Osebne datoteke", "Sort favorites first" : "Razvrsti najprej priljubljene", "Sort folders before files" : "Razvrsti mape pred datotekami", + "Enable folder tree" : "Omogoči drevesno strukturo map", "Show hidden files" : "Pokaži skrite datoteke", "Crop image previews" : "Obreži slike predogleda", - "Enable folder tree" : "Omogoči drevesno strukturo map", "Additional settings" : "Dodatne nastavitve", "WebDAV" : "WebDAV", "WebDAV URL" : "Naslov URL WebDAV", "Copy to clipboard" : "Kopiraj v odložišče", - "Use this address to access your Files via WebDAV" : "Uporabite ta naslov za dostop do datotek z uporabo WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Če je omogočen sistem dvostopenjskega overjanja 2FA, je treba ustvariti in uporabiti novo geslo programa s klikom na to mesto.", "Warnings" : "Opozorila", "Prevent warning dialogs from open or reenable them." : "Preprečite odpiranje dialogov z opozorili ali jih ponovno omogočite.", "Show a warning dialog when changing a file extension." : "Prikaži opozorilo ob spreminjanju končnice datoteke.", @@ -347,7 +345,6 @@ OC.L10N.register( "No favorites yet" : "Ni še dodanih priljubljenih predmetov", "Files and folders you mark as favorite will show up here" : "Datoteke ali mape, ki so označene kot priljubljene, bodo zbrane na tem mestu.", "List of your files and folders." : "Seznam datotek in map.", - "All folders" : "Vse mape", "List of your files and folders that are not shared." : "Seznam datotek in map, ki niso v skupni rabi.", "No personal files found" : "Ni najdenih zasebnih datotek", "Files that are not shared will show up here." : "Datoteke, ki niso v skupni rabi, bodo prikazane tukaj.", @@ -439,11 +436,14 @@ OC.L10N.register( "Submitting fields…" : "Poteka objavljanje vsebine polj ...", "Filter filenames…" : "Filtriraj imena datotek ...", "Enable the grid view" : "Omogoči mrežni pogled", + "Use this address to access your Files via WebDAV" : "Uporabite ta naslov za dostop do datotek z uporabo WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Če je omogočen sistem dvostopenjskega overjanja 2FA, je treba ustvariti in uporabiti novo geslo programa s klikom na to mesto.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} mapa","{folderCount} mapi","{folderCount} mape","{folderCount} map"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} datoteka","{fileCount} datoteki","{fileCount} datoteke","{fileCount} datotek"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 datoteka in {folderCount} mapa","1 datoteka in {folderCount} mapi","1 datoteka in {folderCount} mape","1 datoteka in {folderCount} map"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} datoteka in 1 mapa","{fileCount} datoteki in 1 mapa","{fileCount} datoteke in 1 mapa","{fileCount} datotek in 1 mapa"], "{fileCount} files and {folderCount} folders" : "{fileCount} datotek in {folderCount} map", + "All folders" : "Vse mape", "Personal Files" : "Osebne datoteke", "Text file" : "Besedilna datoteka", "New text file.txt" : "nova_datoteka.txt", diff --git a/apps/files/l10n/sl.json b/apps/files/l10n/sl.json index 80ee3a57508..faa41052027 100644 --- a/apps/files/l10n/sl.json +++ b/apps/files/l10n/sl.json @@ -184,15 +184,13 @@ "Personal files" : "Osebne datoteke", "Sort favorites first" : "Razvrsti najprej priljubljene", "Sort folders before files" : "Razvrsti mape pred datotekami", + "Enable folder tree" : "Omogoči drevesno strukturo map", "Show hidden files" : "Pokaži skrite datoteke", "Crop image previews" : "Obreži slike predogleda", - "Enable folder tree" : "Omogoči drevesno strukturo map", "Additional settings" : "Dodatne nastavitve", "WebDAV" : "WebDAV", "WebDAV URL" : "Naslov URL WebDAV", "Copy to clipboard" : "Kopiraj v odložišče", - "Use this address to access your Files via WebDAV" : "Uporabite ta naslov za dostop do datotek z uporabo WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Če je omogočen sistem dvostopenjskega overjanja 2FA, je treba ustvariti in uporabiti novo geslo programa s klikom na to mesto.", "Warnings" : "Opozorila", "Prevent warning dialogs from open or reenable them." : "Preprečite odpiranje dialogov z opozorili ali jih ponovno omogočite.", "Show a warning dialog when changing a file extension." : "Prikaži opozorilo ob spreminjanju končnice datoteke.", @@ -345,7 +343,6 @@ "No favorites yet" : "Ni še dodanih priljubljenih predmetov", "Files and folders you mark as favorite will show up here" : "Datoteke ali mape, ki so označene kot priljubljene, bodo zbrane na tem mestu.", "List of your files and folders." : "Seznam datotek in map.", - "All folders" : "Vse mape", "List of your files and folders that are not shared." : "Seznam datotek in map, ki niso v skupni rabi.", "No personal files found" : "Ni najdenih zasebnih datotek", "Files that are not shared will show up here." : "Datoteke, ki niso v skupni rabi, bodo prikazane tukaj.", @@ -437,11 +434,14 @@ "Submitting fields…" : "Poteka objavljanje vsebine polj ...", "Filter filenames…" : "Filtriraj imena datotek ...", "Enable the grid view" : "Omogoči mrežni pogled", + "Use this address to access your Files via WebDAV" : "Uporabite ta naslov za dostop do datotek z uporabo WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Če je omogočen sistem dvostopenjskega overjanja 2FA, je treba ustvariti in uporabiti novo geslo programa s klikom na to mesto.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} mapa","{folderCount} mapi","{folderCount} mape","{folderCount} map"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} datoteka","{fileCount} datoteki","{fileCount} datoteke","{fileCount} datotek"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 datoteka in {folderCount} mapa","1 datoteka in {folderCount} mapi","1 datoteka in {folderCount} mape","1 datoteka in {folderCount} map"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} datoteka in 1 mapa","{fileCount} datoteki in 1 mapa","{fileCount} datoteke in 1 mapa","{fileCount} datotek in 1 mapa"], "{fileCount} files and {folderCount} folders" : "{fileCount} datotek in {folderCount} map", + "All folders" : "Vse mape", "Personal Files" : "Osebne datoteke", "Text file" : "Besedilna datoteka", "New text file.txt" : "nova_datoteka.txt", diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js index 79cf3a8e266..6e29a7c546b 100644 --- a/apps/files/l10n/sr.js +++ b/apps/files/l10n/sr.js @@ -200,16 +200,14 @@ OC.L10N.register( "Personal files" : "Лични фајлови", "Sort favorites first" : "Сортирај прво омиљене", "Sort folders before files" : "Поређај фолдере испред фајлова", + "Enable folder tree" : "Укључи стабло фолдера", "Show hidden files" : "Прикажи скривене фајлове", "Show file type column" : "Прикажи колону са типом фајла", "Crop image previews" : "Опсецање прегледа слика", - "Enable folder tree" : "Укључи стабло фолдера", "Additional settings" : "Додатне поставке", "WebDAV" : "ВебДАВ", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Копирај у оставу", - "Use this address to access your Files via WebDAV" : "Користи ову адресу да приступате Вашим фајловима преко ВебДАВа", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ако сте укључили 2FA, морате кликом овде да крерате нову лозинку апликације.", "Warnings" : "Упозорења", "Prevent warning dialogs from open or reenable them." : "Спречава да се дијалози упозорења отворе или да се поново укључе.", "Show a warning dialog when changing a file extension." : "Прикажи дијалог упозорења када се мења екстензија фајла.", @@ -364,7 +362,6 @@ OC.L10N.register( "No favorites yet" : "Још нема омиљених", "Files and folders you mark as favorite will show up here" : "Фајлови и фасцикле које обележите као омиљене појавиће се овде", "List of your files and folders." : "Листа ваших фајлова и фолдера.", - "All folders" : "Сви фолдери", "List of your files and folders that are not shared." : "Листа ваших фајлова и фолдера који се не деле.", "No personal files found" : "Није пронађен ниједан лични фајл", "Files that are not shared will show up here." : "Овде ће се појавити фајлови који се не деле.", @@ -459,11 +456,14 @@ OC.L10N.register( "Submitting fields…" : "Поља се подносе…", "Filter filenames…" : "Филтрирање имена фајлова…", "Enable the grid view" : "Укључи приказ мреже", + "Use this address to access your Files via WebDAV" : "Користи ову адресу да приступате Вашим фајловима преко ВебДАВа", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ако сте укључили 2FA, морате кликом овде да крерате нову лозинку апликације.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} фолдер","{folderCount} фолдера","{folderCount} фолдера"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} фајл","{fileCount} фајла","{fileCount} фајлова"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 фајл и {folderCount} фолдер","1 фајл и {folderCount} фолдера","1 фајл и {folderCount} фолдера"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} фајл и 1 фолдер","{fileCount} фајла и 1 фолдер","{fileCount} фајлова и 1 фолдер"], "{fileCount} files and {folderCount} folders" : "{fileCount} фајлова и {folderCount} фолдера", + "All folders" : "Сви фолдери", "Personal Files" : "Лични фајлови", "Text file" : "Tекстуални фајл", "New text file.txt" : "Нов текстуални фајл.txt", diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json index 0062c1cd828..067ec0914db 100644 --- a/apps/files/l10n/sr.json +++ b/apps/files/l10n/sr.json @@ -198,16 +198,14 @@ "Personal files" : "Лични фајлови", "Sort favorites first" : "Сортирај прво омиљене", "Sort folders before files" : "Поређај фолдере испред фајлова", + "Enable folder tree" : "Укључи стабло фолдера", "Show hidden files" : "Прикажи скривене фајлове", "Show file type column" : "Прикажи колону са типом фајла", "Crop image previews" : "Опсецање прегледа слика", - "Enable folder tree" : "Укључи стабло фолдера", "Additional settings" : "Додатне поставке", "WebDAV" : "ВебДАВ", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Копирај у оставу", - "Use this address to access your Files via WebDAV" : "Користи ову адресу да приступате Вашим фајловима преко ВебДАВа", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ако сте укључили 2FA, морате кликом овде да крерате нову лозинку апликације.", "Warnings" : "Упозорења", "Prevent warning dialogs from open or reenable them." : "Спречава да се дијалози упозорења отворе или да се поново укључе.", "Show a warning dialog when changing a file extension." : "Прикажи дијалог упозорења када се мења екстензија фајла.", @@ -362,7 +360,6 @@ "No favorites yet" : "Још нема омиљених", "Files and folders you mark as favorite will show up here" : "Фајлови и фасцикле које обележите као омиљене појавиће се овде", "List of your files and folders." : "Листа ваших фајлова и фолдера.", - "All folders" : "Сви фолдери", "List of your files and folders that are not shared." : "Листа ваших фајлова и фолдера који се не деле.", "No personal files found" : "Није пронађен ниједан лични фајл", "Files that are not shared will show up here." : "Овде ће се појавити фајлови који се не деле.", @@ -457,11 +454,14 @@ "Submitting fields…" : "Поља се подносе…", "Filter filenames…" : "Филтрирање имена фајлова…", "Enable the grid view" : "Укључи приказ мреже", + "Use this address to access your Files via WebDAV" : "Користи ову адресу да приступате Вашим фајловима преко ВебДАВа", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ако сте укључили 2FA, морате кликом овде да крерате нову лозинку апликације.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} фолдер","{folderCount} фолдера","{folderCount} фолдера"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} фајл","{fileCount} фајла","{fileCount} фајлова"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 фајл и {folderCount} фолдер","1 фајл и {folderCount} фолдера","1 фајл и {folderCount} фолдера"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} фајл и 1 фолдер","{fileCount} фајла и 1 фолдер","{fileCount} фајлова и 1 фолдер"], "{fileCount} files and {folderCount} folders" : "{fileCount} фајлова и {folderCount} фолдера", + "All folders" : "Сви фолдери", "Personal Files" : "Лични фајлови", "Text file" : "Tекстуални фајл", "New text file.txt" : "Нов текстуални фајл.txt", diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js index 99e837cb1cb..7ae8a549e5d 100644 --- a/apps/files/l10n/sv.js +++ b/apps/files/l10n/sv.js @@ -142,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Skapa ny mapp", "This name is already in use." : "Namnet används redan.", "Create" : "Skapa", + "Files starting with a dot are hidden by default" : "Filer som börjar med en punkt är dolda som standard", "Fill template fields" : "Fyll mallfält", "Submitting fields …" : "Skickar fält ...", "Submit" : "Skicka", @@ -200,16 +201,18 @@ OC.L10N.register( "Personal files" : "Personliga filer", "Sort favorites first" : "Sortera favoriter först", "Sort folders before files" : "Sortera mappar före filer", + "Enable folder tree" : "Aktivera mappträd", + "Visual settings" : "Visuella inställningar", "Show hidden files" : "Visa dolda filer", "Show file type column" : "Visa kolumn för filtyp", "Crop image previews" : "Beskär förhandsgranskningar för bilder", - "Enable folder tree" : "Aktivera mappträd", + "Show files extensions" : "Visa filändelser", "Additional settings" : "Övriga inställningar", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Kopiera till urklipp", - "Use this address to access your Files via WebDAV" : "Använd denna adress för att komma åt dina filer med WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Om du har aktiverat 2FA måste du skapa och använda ett nytt applösenord genom att klicka här.", + "Use this address to access your Files via WebDAV." : "Använd denna adress för att komma åt dina filer med WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Tvåfaktorsautentisering är aktiverad för ditt konto och därför måste du använda ett applösenord för att ansluta en extern WebDAV-klient.", "Warnings" : "Varningar", "Prevent warning dialogs from open or reenable them." : "Förhindra varningsdialoger från att öppnas eller aktivera dem igen.", "Show a warning dialog when changing a file extension." : "Visa en varningsdialog vid ändring av filändelse.", @@ -331,6 +334,7 @@ OC.L10N.register( "Templates" : "Mallar", "New template folder" : "Ny mallmapp", "In folder" : "I mapp", + "Search in all files" : "Sök i alla filer", "Search in folder: {folder}" : "Sök i mapp: {folder}", "One of the dropped files could not be processed" : "En av de släppta filerna kunde inte bearbetas", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Din webbläsare stöder inte Filesystem API. Mappar kommer inte att laddas upp", @@ -364,7 +368,7 @@ OC.L10N.register( "No favorites yet" : "Inga favoriter ännu", "Files and folders you mark as favorite will show up here" : "Filer och mappar markerade som favoriter kommer att visas här", "List of your files and folders." : "Lista över dina filer och mappar.", - "All folders" : "Alla mappar", + "Folder tree" : "Mappträd", "List of your files and folders that are not shared." : "Lista över dina filer och mappar som inte delas.", "No personal files found" : "Inga personliga filer hittades", "Files that are not shared will show up here." : "Filer som inte delas kommer att visas här.", @@ -459,11 +463,14 @@ OC.L10N.register( "Submitting fields…" : "Skickar fält...", "Filter filenames…" : "Filtrera filnamn...", "Enable the grid view" : "Aktivera rutnätsvy", + "Use this address to access your Files via WebDAV" : "Använd denna adress för att komma åt dina filer med WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Om du har aktiverat 2FA måste du skapa och använda ett nytt applösenord genom att klicka här.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} mapp","{folderCount} mappar"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fil","{fileCount} filer"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fil och {folderCount} mapp","1 fil och {folderCount} mappar"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fil och 1 mapp","{fileCount} filer och 1 mapp"], "{fileCount} files and {folderCount} folders" : "{fileCount} filer och {folderCount} mappar", + "All folders" : "Alla mappar", "Personal Files" : "Personliga filer", "Text file" : "Textfil", "New text file.txt" : "Ny textfil.txt", diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json index 016467d97d6..72012bbf23a 100644 --- a/apps/files/l10n/sv.json +++ b/apps/files/l10n/sv.json @@ -140,6 +140,7 @@ "Create new folder" : "Skapa ny mapp", "This name is already in use." : "Namnet används redan.", "Create" : "Skapa", + "Files starting with a dot are hidden by default" : "Filer som börjar med en punkt är dolda som standard", "Fill template fields" : "Fyll mallfält", "Submitting fields …" : "Skickar fält ...", "Submit" : "Skicka", @@ -198,16 +199,18 @@ "Personal files" : "Personliga filer", "Sort favorites first" : "Sortera favoriter först", "Sort folders before files" : "Sortera mappar före filer", + "Enable folder tree" : "Aktivera mappträd", + "Visual settings" : "Visuella inställningar", "Show hidden files" : "Visa dolda filer", "Show file type column" : "Visa kolumn för filtyp", "Crop image previews" : "Beskär förhandsgranskningar för bilder", - "Enable folder tree" : "Aktivera mappträd", + "Show files extensions" : "Visa filändelser", "Additional settings" : "Övriga inställningar", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "Kopiera till urklipp", - "Use this address to access your Files via WebDAV" : "Använd denna adress för att komma åt dina filer med WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Om du har aktiverat 2FA måste du skapa och använda ett nytt applösenord genom att klicka här.", + "Use this address to access your Files via WebDAV." : "Använd denna adress för att komma åt dina filer med WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Tvåfaktorsautentisering är aktiverad för ditt konto och därför måste du använda ett applösenord för att ansluta en extern WebDAV-klient.", "Warnings" : "Varningar", "Prevent warning dialogs from open or reenable them." : "Förhindra varningsdialoger från att öppnas eller aktivera dem igen.", "Show a warning dialog when changing a file extension." : "Visa en varningsdialog vid ändring av filändelse.", @@ -329,6 +332,7 @@ "Templates" : "Mallar", "New template folder" : "Ny mallmapp", "In folder" : "I mapp", + "Search in all files" : "Sök i alla filer", "Search in folder: {folder}" : "Sök i mapp: {folder}", "One of the dropped files could not be processed" : "En av de släppta filerna kunde inte bearbetas", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Din webbläsare stöder inte Filesystem API. Mappar kommer inte att laddas upp", @@ -362,7 +366,7 @@ "No favorites yet" : "Inga favoriter ännu", "Files and folders you mark as favorite will show up here" : "Filer och mappar markerade som favoriter kommer att visas här", "List of your files and folders." : "Lista över dina filer och mappar.", - "All folders" : "Alla mappar", + "Folder tree" : "Mappträd", "List of your files and folders that are not shared." : "Lista över dina filer och mappar som inte delas.", "No personal files found" : "Inga personliga filer hittades", "Files that are not shared will show up here." : "Filer som inte delas kommer att visas här.", @@ -457,11 +461,14 @@ "Submitting fields…" : "Skickar fält...", "Filter filenames…" : "Filtrera filnamn...", "Enable the grid view" : "Aktivera rutnätsvy", + "Use this address to access your Files via WebDAV" : "Använd denna adress för att komma åt dina filer med WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Om du har aktiverat 2FA måste du skapa och använda ett nytt applösenord genom att klicka här.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} mapp","{folderCount} mappar"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fil","{fileCount} filer"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fil och {folderCount} mapp","1 fil och {folderCount} mappar"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fil och 1 mapp","{fileCount} filer och 1 mapp"], "{fileCount} files and {folderCount} folders" : "{fileCount} filer och {folderCount} mappar", + "All folders" : "Alla mappar", "Personal Files" : "Personliga filer", "Text file" : "Textfil", "New text file.txt" : "Ny textfil.txt", diff --git a/apps/files/l10n/sw.js b/apps/files/l10n/sw.js index a142df5ddc6..5c17b63bf8c 100644 --- a/apps/files/l10n/sw.js +++ b/apps/files/l10n/sw.js @@ -142,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Tengeneza kisanduku kipya", "This name is already in use." : "Jina hili liko katika matumizi tayari", "Create" : "Tengeneza", + "Files starting with a dot are hidden by default" : "Faili zinazoanza na nukta zimefichwa kwa chaguo-msingi", "Fill template fields" : "Jaza sehemu za violezo", "Submitting fields …" : "Inawasilisha violezo", "Submit" : "Wasilisha", @@ -200,16 +201,18 @@ OC.L10N.register( "Personal files" : "Faili binafsi", "Sort favorites first" : "Chagua za upendeleo kwanza", "Sort folders before files" : "Chagua vikasha kabla ya mafaili", + "Enable folder tree" : "Wezesha faili la tatu", + "Visual settings" : "Mipangilio ya kuona", "Show hidden files" : "Onesha mafaili yaliyofichwa", "Show file type column" : "Onyesha safu wima ya aina ya faili", "Crop image previews" : "Punguza onyesho la kukagua picha", - "Enable folder tree" : "Wezesha faili la tatu", + "Show files extensions" : "Onyesha viendelezi vya faili", "Additional settings" : "Mipangilio ya nyongeza", "WebDAV" : "WavutiDAV", "WebDAV URL" : "WavutiDAV URL", "Copy to clipboard" : "Nakili kwenye ubao wa kunakili", - "Use this address to access your Files via WebDAV" : "Tumia anwani hii kufikia Faili zako kupitia WavutiDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ikiwa umewasha 2FA, lazima uunde na utumie nenosiri jipya la programu kwa kubofya hapa", + "Use this address to access your Files via WebDAV." : "Tumia anwani hii kufikia Faili zako kupitia WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Uthibitishaji wa Mambo Mbili umewashwa kwa akaunti yako, na kwa hivyo unahitaji kutumia nenosiri la programu kuunganisha mteja wa nje wa WebDAV.", "Warnings" : "Maonyo", "Prevent warning dialogs from open or reenable them." : "Zuia mazungumzo ya onyo yasifunguliwe au uwashe upya.", "Show a warning dialog when changing a file extension." : "Onyesha mazungumzo ya onyo unapobadilisha kiendelezi cha faili.", @@ -237,7 +240,7 @@ OC.L10N.register( "Open the sidebar for a file" : "Fungua utepe kwa faili", "Show those shortcuts" : "Onesha mikato hiyo", "You" : "Wewe", - "Shared multiple times with different people" : "Shared multiple times with different people", + "Shared multiple times with different people" : "Imeshirikiwa mara nyingi na watu tofauti", "Unable to change the favorite state of the file" : "Haiwezi kubadilisha hali ya faili inayopendwa", "Error while loading the file data" : "Hitilafu wakati wa kupakia data za faili", "Owner" : "Mmiliki", @@ -331,6 +334,7 @@ OC.L10N.register( "Templates" : "Violezo", "New template folder" : "Kisanduku kipya cha violezo", "In folder" : "Ndani ya kisanduku", + "Search in all files" : "Tafuta katika faili zote", "Search in folder: {folder}" : "Tafuta katika kisanduku {folder}", "One of the dropped files could not be processed" : "Moja ya faili zilizodondoshwa isingeweza kuchakatwa", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Kivinjari chako hakitumii API ya mfumo wa faili. Orodha hazitapakiwa", @@ -364,7 +368,6 @@ OC.L10N.register( "No favorites yet" : "Bado hakuna vinavyopendwa", "Files and folders you mark as favorite will show up here" : "Faili na visunduku ulivyoweka alama kama vipendwa vitaonekana hapa", "List of your files and folders." : "Orodha ya faili na vikasha vyako", - "All folders" : "Vikasha vyote", "List of your files and folders that are not shared." : "Orodha ya faili na vikasha ambavyo havijashirikishwa", "No personal files found" : "Hakuna faili binafsi zilizopatikana", "Files that are not shared will show up here." : "Faili ambazo hazija shirikishwa zitaonekana hapa", @@ -459,11 +462,14 @@ OC.L10N.register( "Submitting fields…" : "Inawasilisha migunda", "Filter filenames…" : "Chuja majina ya faili", "Enable the grid view" : "Wezesha mwonekano wa gridi", + "Use this address to access your Files via WebDAV" : "Tumia anwani hii kufikia Faili zako kupitia WavutiDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ikiwa umewasha 2FA, lazima uunde na utumie nenosiri jipya la programu kwa kubofya hapa", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} folder","Visandiku {folderCount} "], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} file","Faili {fileCount} "], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 file and {folderCount} folder","Faili 1 na {folderCount} makasha"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} file and 1 folder","{fileCount} faili na kasha 1"], "{fileCount} files and {folderCount} folders" : "{fileCount} faili na {folderCount}makasha", + "All folders" : "Vikasha vyote", "Personal Files" : "Faili binafsi", "Text file" : "Faili ya maandishi", "New text file.txt" : "Faili mpya ya maandishi.txt", diff --git a/apps/files/l10n/sw.json b/apps/files/l10n/sw.json index 0808e457152..d87cd053623 100644 --- a/apps/files/l10n/sw.json +++ b/apps/files/l10n/sw.json @@ -140,6 +140,7 @@ "Create new folder" : "Tengeneza kisanduku kipya", "This name is already in use." : "Jina hili liko katika matumizi tayari", "Create" : "Tengeneza", + "Files starting with a dot are hidden by default" : "Faili zinazoanza na nukta zimefichwa kwa chaguo-msingi", "Fill template fields" : "Jaza sehemu za violezo", "Submitting fields …" : "Inawasilisha violezo", "Submit" : "Wasilisha", @@ -198,16 +199,18 @@ "Personal files" : "Faili binafsi", "Sort favorites first" : "Chagua za upendeleo kwanza", "Sort folders before files" : "Chagua vikasha kabla ya mafaili", + "Enable folder tree" : "Wezesha faili la tatu", + "Visual settings" : "Mipangilio ya kuona", "Show hidden files" : "Onesha mafaili yaliyofichwa", "Show file type column" : "Onyesha safu wima ya aina ya faili", "Crop image previews" : "Punguza onyesho la kukagua picha", - "Enable folder tree" : "Wezesha faili la tatu", + "Show files extensions" : "Onyesha viendelezi vya faili", "Additional settings" : "Mipangilio ya nyongeza", "WebDAV" : "WavutiDAV", "WebDAV URL" : "WavutiDAV URL", "Copy to clipboard" : "Nakili kwenye ubao wa kunakili", - "Use this address to access your Files via WebDAV" : "Tumia anwani hii kufikia Faili zako kupitia WavutiDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ikiwa umewasha 2FA, lazima uunde na utumie nenosiri jipya la programu kwa kubofya hapa", + "Use this address to access your Files via WebDAV." : "Tumia anwani hii kufikia Faili zako kupitia WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Uthibitishaji wa Mambo Mbili umewashwa kwa akaunti yako, na kwa hivyo unahitaji kutumia nenosiri la programu kuunganisha mteja wa nje wa WebDAV.", "Warnings" : "Maonyo", "Prevent warning dialogs from open or reenable them." : "Zuia mazungumzo ya onyo yasifunguliwe au uwashe upya.", "Show a warning dialog when changing a file extension." : "Onyesha mazungumzo ya onyo unapobadilisha kiendelezi cha faili.", @@ -235,7 +238,7 @@ "Open the sidebar for a file" : "Fungua utepe kwa faili", "Show those shortcuts" : "Onesha mikato hiyo", "You" : "Wewe", - "Shared multiple times with different people" : "Shared multiple times with different people", + "Shared multiple times with different people" : "Imeshirikiwa mara nyingi na watu tofauti", "Unable to change the favorite state of the file" : "Haiwezi kubadilisha hali ya faili inayopendwa", "Error while loading the file data" : "Hitilafu wakati wa kupakia data za faili", "Owner" : "Mmiliki", @@ -329,6 +332,7 @@ "Templates" : "Violezo", "New template folder" : "Kisanduku kipya cha violezo", "In folder" : "Ndani ya kisanduku", + "Search in all files" : "Tafuta katika faili zote", "Search in folder: {folder}" : "Tafuta katika kisanduku {folder}", "One of the dropped files could not be processed" : "Moja ya faili zilizodondoshwa isingeweza kuchakatwa", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Kivinjari chako hakitumii API ya mfumo wa faili. Orodha hazitapakiwa", @@ -362,7 +366,6 @@ "No favorites yet" : "Bado hakuna vinavyopendwa", "Files and folders you mark as favorite will show up here" : "Faili na visunduku ulivyoweka alama kama vipendwa vitaonekana hapa", "List of your files and folders." : "Orodha ya faili na vikasha vyako", - "All folders" : "Vikasha vyote", "List of your files and folders that are not shared." : "Orodha ya faili na vikasha ambavyo havijashirikishwa", "No personal files found" : "Hakuna faili binafsi zilizopatikana", "Files that are not shared will show up here." : "Faili ambazo hazija shirikishwa zitaonekana hapa", @@ -457,11 +460,14 @@ "Submitting fields…" : "Inawasilisha migunda", "Filter filenames…" : "Chuja majina ya faili", "Enable the grid view" : "Wezesha mwonekano wa gridi", + "Use this address to access your Files via WebDAV" : "Tumia anwani hii kufikia Faili zako kupitia WavutiDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Ikiwa umewasha 2FA, lazima uunde na utumie nenosiri jipya la programu kwa kubofya hapa", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} folder","Visandiku {folderCount} "], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} file","Faili {fileCount} "], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 file and {folderCount} folder","Faili 1 na {folderCount} makasha"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} file and 1 folder","{fileCount} faili na kasha 1"], "{fileCount} files and {folderCount} folders" : "{fileCount} faili na {folderCount}makasha", + "All folders" : "Vikasha vyote", "Personal Files" : "Faili binafsi", "Text file" : "Faili ya maandishi", "New text file.txt" : "Faili mpya ya maandishi.txt", diff --git a/apps/files/l10n/th.js b/apps/files/l10n/th.js index 2dfedd93723..07a3c22fb01 100644 --- a/apps/files/l10n/th.js +++ b/apps/files/l10n/th.js @@ -108,7 +108,6 @@ OC.L10N.register( "Additional settings" : "การตั้งค่าเพิ่มเติม", "WebDAV" : "WebDAV", "Copy to clipboard" : "คัดลอกไปยังคลิปบอร์ด", - "Use this address to access your Files via WebDAV" : "ใช้ที่อยู่นี้เพื่อเข้าถึงไฟล์ของคุณผ่าน WebDAV", "Keyboard shortcuts" : "แป้นพิมพ์ลัด", "View" : "มุมมอง", "Error while loading the file data" : "ข้อผิดพลาดขณะโหลดข้อมูลไฟล์", @@ -239,6 +238,7 @@ OC.L10N.register( "Upload file" : "อัปโหลดไฟล์", "An error occurred while trying to update the tags" : "เกิดข้อผิดพลาดขณะกำลังพยายามอัปเดตแท็ก", "Upload (max. %s)" : "อัปโหลด (สูงสุด %s)", + "Use this address to access your Files via WebDAV" : "ใช้ที่อยู่นี้เพื่อเข้าถึงไฟล์ของคุณผ่าน WebDAV", "Text file" : "ไฟล์ข้อความ", "New text file.txt" : "ไฟล์ข้อความใหม่.txt" }, diff --git a/apps/files/l10n/th.json b/apps/files/l10n/th.json index 91f139413cc..a1e92ecddf6 100644 --- a/apps/files/l10n/th.json +++ b/apps/files/l10n/th.json @@ -106,7 +106,6 @@ "Additional settings" : "การตั้งค่าเพิ่มเติม", "WebDAV" : "WebDAV", "Copy to clipboard" : "คัดลอกไปยังคลิปบอร์ด", - "Use this address to access your Files via WebDAV" : "ใช้ที่อยู่นี้เพื่อเข้าถึงไฟล์ของคุณผ่าน WebDAV", "Keyboard shortcuts" : "แป้นพิมพ์ลัด", "View" : "มุมมอง", "Error while loading the file data" : "ข้อผิดพลาดขณะโหลดข้อมูลไฟล์", @@ -237,6 +236,7 @@ "Upload file" : "อัปโหลดไฟล์", "An error occurred while trying to update the tags" : "เกิดข้อผิดพลาดขณะกำลังพยายามอัปเดตแท็ก", "Upload (max. %s)" : "อัปโหลด (สูงสุด %s)", + "Use this address to access your Files via WebDAV" : "ใช้ที่อยู่นี้เพื่อเข้าถึงไฟล์ของคุณผ่าน WebDAV", "Text file" : "ไฟล์ข้อความ", "New text file.txt" : "ไฟล์ข้อความใหม่.txt" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js index 06851221df4..19621432ff8 100644 --- a/apps/files/l10n/tr.js +++ b/apps/files/l10n/tr.js @@ -129,6 +129,7 @@ OC.L10N.register( "Search globally by filename …" : "Dosya adına göre genel ara…", "Search here by filename …" : "Dosya adına göre burada ara…", "Search scope options" : "Arama kapsamı seçenekleri", + "Filter and search from this location" : "Süz ve bu konumdan ara", "Search globally" : "Genel arama", "{usedQuotaByte} used" : "{usedQuotaByte} kullanılmış", "{used} of {quota} used" : "{used} / {quota} kullanılmış", @@ -141,6 +142,7 @@ OC.L10N.register( "Create new folder" : "Klasör ekle", "This name is already in use." : "Bu ad zaten kullanılıyor.", "Create" : "Ekle", + "Files starting with a dot are hidden by default" : "Bir nokta ile başlayan dosyalar varsayılan olarak gizlidir", "Fill template fields" : "Kalıp alanlarını doldur", "Submitting fields …" : "Alanlar gönderiliyor…", "Submit" : "Gönder", @@ -194,23 +196,23 @@ OC.L10N.register( "Search for files" : "Dosya ara", "Clipboard is not available" : "Pano kullanılamıyor", "WebDAV URL copied to clipboard" : "WebDAV adresi panoya kopyalandı", + "Default view" : "Varsayılan görünüm", "All files" : "Tüm dosyalar", "Personal files" : "Kişisel dosyalar", "Sort favorites first" : "Sık kullanılanlar üstte sıralansın", "Sort folders before files" : "Klasörler dosyaların üzerinde sıralansın", + "Enable folder tree" : "Klasör ağacını aç", "Show hidden files" : "Gizli dosyaları görüntüle", "Show file type column" : "Dosya türü sütunu görüntülensin", "Crop image previews" : "Görsel ön izlemeleri kırpılsın", - "Enable folder tree" : "Klasör ağacını aç", "Additional settings" : "Ek ayarlar", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV adresi", "Copy to clipboard" : "Panoya kopyala", - "Use this address to access your Files via WebDAV" : "Dosyalarınıza WebDAV üzerinden erişmek için bu adresi kullanın", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "İki adımlı doğrulamayı açtıysanız buraya tıklayarak yeni bir uygulama parolası oluşturmalısınız.", "Warnings" : "Uyarılar", "Prevent warning dialogs from open or reenable them." : "Uyarı pencerelerinin görüntülenmesini açın ya da kapatın.", "Show a warning dialog when changing a file extension." : "Dosya uzantısı değiştirilirken uyarı penceresi görüntülensin.", + "Show a warning dialog when deleting files." : "Dosyalar silinirken uyarı penceresi görüntülensin.", "Keyboard shortcuts" : "Kısayol tuşları", "Speed up your Files experience with these quick shortcuts." : "Şu kısayol tuşlarını kullanarak Dosyalar deneyiminizi hızlandırabilirsiniz.", "Open the actions menu for a file" : "Bir dosyanın işlemler menüsünü açar", @@ -361,7 +363,6 @@ OC.L10N.register( "No favorites yet" : "Henüz sık kullanılan bir öge yok", "Files and folders you mark as favorite will show up here" : "Sık kullanılanlara eklediğiniz dosya ve klasörler burada görüntülenir", "List of your files and folders." : "Dosya ve klasörlerinizin listesi", - "All folders" : "Tüm klasörler", "List of your files and folders that are not shared." : "Paylaşılmayan dosya ve klasörlerinizin listesi.", "No personal files found" : "Herhangi bir kişisel dosya bulunamadı", "Files that are not shared will show up here." : "Paylaşımayan dosyalar burada görüntülenir.", @@ -456,11 +457,14 @@ OC.L10N.register( "Submitting fields…" : "Alanlar gönderiliyor…", "Filter filenames…" : "Dosya adlarını süz…", "Enable the grid view" : "Tablo görünümü kullanılsın", + "Use this address to access your Files via WebDAV" : "Dosyalarınıza WebDAV üzerinden erişmek için bu adresi kullanın", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "İki adımlı doğrulamayı açtıysanız buraya tıklayarak yeni bir uygulama parolası oluşturmalısınız.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} klasör","{folderCount} klasör"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} dosya","{fileCount} dosya"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 dosya ve {folderCount} klasör","1 dosya ve {folderCount} klasör"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} dosya ve 1 klasör","{fileCount} dosya ve 1 klasör"], "{fileCount} files and {folderCount} folders" : "{fileCount} dosya ve {folderCount} klasör", + "All folders" : "Tüm klasörler", "Personal Files" : "Kişisel dosyalar", "Text file" : "Metin dosyası", "New text file.txt" : "Yeni metin dosyası.txt", diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json index 4114ac386c4..b74788c9239 100644 --- a/apps/files/l10n/tr.json +++ b/apps/files/l10n/tr.json @@ -127,6 +127,7 @@ "Search globally by filename …" : "Dosya adına göre genel ara…", "Search here by filename …" : "Dosya adına göre burada ara…", "Search scope options" : "Arama kapsamı seçenekleri", + "Filter and search from this location" : "Süz ve bu konumdan ara", "Search globally" : "Genel arama", "{usedQuotaByte} used" : "{usedQuotaByte} kullanılmış", "{used} of {quota} used" : "{used} / {quota} kullanılmış", @@ -139,6 +140,7 @@ "Create new folder" : "Klasör ekle", "This name is already in use." : "Bu ad zaten kullanılıyor.", "Create" : "Ekle", + "Files starting with a dot are hidden by default" : "Bir nokta ile başlayan dosyalar varsayılan olarak gizlidir", "Fill template fields" : "Kalıp alanlarını doldur", "Submitting fields …" : "Alanlar gönderiliyor…", "Submit" : "Gönder", @@ -192,23 +194,23 @@ "Search for files" : "Dosya ara", "Clipboard is not available" : "Pano kullanılamıyor", "WebDAV URL copied to clipboard" : "WebDAV adresi panoya kopyalandı", + "Default view" : "Varsayılan görünüm", "All files" : "Tüm dosyalar", "Personal files" : "Kişisel dosyalar", "Sort favorites first" : "Sık kullanılanlar üstte sıralansın", "Sort folders before files" : "Klasörler dosyaların üzerinde sıralansın", + "Enable folder tree" : "Klasör ağacını aç", "Show hidden files" : "Gizli dosyaları görüntüle", "Show file type column" : "Dosya türü sütunu görüntülensin", "Crop image previews" : "Görsel ön izlemeleri kırpılsın", - "Enable folder tree" : "Klasör ağacını aç", "Additional settings" : "Ek ayarlar", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV adresi", "Copy to clipboard" : "Panoya kopyala", - "Use this address to access your Files via WebDAV" : "Dosyalarınıza WebDAV üzerinden erişmek için bu adresi kullanın", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "İki adımlı doğrulamayı açtıysanız buraya tıklayarak yeni bir uygulama parolası oluşturmalısınız.", "Warnings" : "Uyarılar", "Prevent warning dialogs from open or reenable them." : "Uyarı pencerelerinin görüntülenmesini açın ya da kapatın.", "Show a warning dialog when changing a file extension." : "Dosya uzantısı değiştirilirken uyarı penceresi görüntülensin.", + "Show a warning dialog when deleting files." : "Dosyalar silinirken uyarı penceresi görüntülensin.", "Keyboard shortcuts" : "Kısayol tuşları", "Speed up your Files experience with these quick shortcuts." : "Şu kısayol tuşlarını kullanarak Dosyalar deneyiminizi hızlandırabilirsiniz.", "Open the actions menu for a file" : "Bir dosyanın işlemler menüsünü açar", @@ -359,7 +361,6 @@ "No favorites yet" : "Henüz sık kullanılan bir öge yok", "Files and folders you mark as favorite will show up here" : "Sık kullanılanlara eklediğiniz dosya ve klasörler burada görüntülenir", "List of your files and folders." : "Dosya ve klasörlerinizin listesi", - "All folders" : "Tüm klasörler", "List of your files and folders that are not shared." : "Paylaşılmayan dosya ve klasörlerinizin listesi.", "No personal files found" : "Herhangi bir kişisel dosya bulunamadı", "Files that are not shared will show up here." : "Paylaşımayan dosyalar burada görüntülenir.", @@ -454,11 +455,14 @@ "Submitting fields…" : "Alanlar gönderiliyor…", "Filter filenames…" : "Dosya adlarını süz…", "Enable the grid view" : "Tablo görünümü kullanılsın", + "Use this address to access your Files via WebDAV" : "Dosyalarınıza WebDAV üzerinden erişmek için bu adresi kullanın", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "İki adımlı doğrulamayı açtıysanız buraya tıklayarak yeni bir uygulama parolası oluşturmalısınız.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} klasör","{folderCount} klasör"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} dosya","{fileCount} dosya"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 dosya ve {folderCount} klasör","1 dosya ve {folderCount} klasör"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} dosya ve 1 klasör","{fileCount} dosya ve 1 klasör"], "{fileCount} files and {folderCount} folders" : "{fileCount} dosya ve {folderCount} klasör", + "All folders" : "Tüm klasörler", "Personal Files" : "Kişisel dosyalar", "Text file" : "Metin dosyası", "New text file.txt" : "Yeni metin dosyası.txt", diff --git a/apps/files/l10n/ug.js b/apps/files/l10n/ug.js index 20f8dd1f1bc..d2066c8aab4 100644 --- a/apps/files/l10n/ug.js +++ b/apps/files/l10n/ug.js @@ -161,15 +161,13 @@ OC.L10N.register( "Personal files" : "شەخسىي ھۆججەتلەر", "Sort favorites first" : "ياقتۇرىدىغانلارنى رەتلەڭ", "Sort folders before files" : "ھۆججەتلەرنى ھۆججەتتىن بۇرۇن تەرتىپلەڭ", + "Enable folder tree" : "ھۆججەت قىسقۇچنى قوزغىتىڭ", "Show hidden files" : "يوشۇرۇن ھۆججەتلەرنى كۆرسەت", "Crop image previews" : "رەسىمنى ئالدىن كۆرۈش", - "Enable folder tree" : "ھۆججەت قىسقۇچنى قوزغىتىڭ", "Additional settings" : "قوشۇمچە تەڭشەكلەر", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "چاپلاش تاختىسىغا كۆچۈرۈڭ", - "Use this address to access your Files via WebDAV" : "بۇ ئادرېسنى ئىشلىتىپ WebDAV ئارقىلىق ھۆججەتلىرىڭىزنى زىيارەت قىلىڭ", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "ئەگەر سىز 2FA نى قوزغىتىپ قويغان بولسىڭىز ، بۇ يەرنى چېكىپ چوقۇم يېڭى ئەپ پارولى قۇرالايسىز ۋە ئىشلىتىڭ.", "Keyboard shortcuts" : "كۇنۇپكا تاختىسى تېزلەتمىسى", "Selection" : "تاللاش", "Navigation" : "يول باشلاش", @@ -277,7 +275,6 @@ OC.L10N.register( "No favorites yet" : "ياقتۇرىدىغانلار تېخى يوق", "Files and folders you mark as favorite will show up here" : "سىز ياقتۇرىدىغان ھۆججەت ۋە ھۆججەت قىسقۇچلار بۇ يەردە كۆرۈنىدۇ", "List of your files and folders." : "ھۆججەت ۋە ھۆججەت قىسقۇچلىرىڭىزنىڭ تىزىملىكى.", - "All folders" : "بارلىق ھۆججەت قىسقۇچلار", "List of your files and folders that are not shared." : "ئورتاقلاشمىغان ھۆججەت ۋە ھۆججەت قىسقۇچلىرىڭىزنىڭ تىزىملىكى.", "No personal files found" : "شەخسىي ھۆججەت تېپىلمىدى", "Files that are not shared will show up here." : "ئورتاقلاشمىغان ھۆججەتلەر بۇ يەردە كۆرۈنىدۇ.", @@ -367,7 +364,10 @@ OC.L10N.register( "Submitting fields…" : "يول يوللاش…", "Filter filenames…" : "ھۆججەت نامىنى سۈزۈڭ…", "Enable the grid view" : "كاتەكچە كۆرۈنۈشىنى قوزغىتىڭ", + "Use this address to access your Files via WebDAV" : "بۇ ئادرېسنى ئىشلىتىپ WebDAV ئارقىلىق ھۆججەتلىرىڭىزنى زىيارەت قىلىڭ", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "ئەگەر سىز 2FA نى قوزغىتىپ قويغان بولسىڭىز ، بۇ يەرنى چېكىپ چوقۇم يېڭى ئەپ پارولى قۇرالايسىز ۋە ئىشلىتىڭ.", "{fileCount} files and {folderCount} folders" : "{fileCount} ھۆججەتلىرى ۋە {folderCount} ھۆججەت قىسقۇچلىرى", + "All folders" : "بارلىق ھۆججەت قىسقۇچلار", "Personal Files" : "شەخسىي ھۆججەتلەر", "Text file" : "تېكىست ھۆججەت", "New text file.txt" : "يېڭى تېكىست ھۆججىتى. Txt" diff --git a/apps/files/l10n/ug.json b/apps/files/l10n/ug.json index 754d1873cff..99bb5b6d0b7 100644 --- a/apps/files/l10n/ug.json +++ b/apps/files/l10n/ug.json @@ -159,15 +159,13 @@ "Personal files" : "شەخسىي ھۆججەتلەر", "Sort favorites first" : "ياقتۇرىدىغانلارنى رەتلەڭ", "Sort folders before files" : "ھۆججەتلەرنى ھۆججەتتىن بۇرۇن تەرتىپلەڭ", + "Enable folder tree" : "ھۆججەت قىسقۇچنى قوزغىتىڭ", "Show hidden files" : "يوشۇرۇن ھۆججەتلەرنى كۆرسەت", "Crop image previews" : "رەسىمنى ئالدىن كۆرۈش", - "Enable folder tree" : "ھۆججەت قىسقۇچنى قوزغىتىڭ", "Additional settings" : "قوشۇمچە تەڭشەكلەر", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "چاپلاش تاختىسىغا كۆچۈرۈڭ", - "Use this address to access your Files via WebDAV" : "بۇ ئادرېسنى ئىشلىتىپ WebDAV ئارقىلىق ھۆججەتلىرىڭىزنى زىيارەت قىلىڭ", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "ئەگەر سىز 2FA نى قوزغىتىپ قويغان بولسىڭىز ، بۇ يەرنى چېكىپ چوقۇم يېڭى ئەپ پارولى قۇرالايسىز ۋە ئىشلىتىڭ.", "Keyboard shortcuts" : "كۇنۇپكا تاختىسى تېزلەتمىسى", "Selection" : "تاللاش", "Navigation" : "يول باشلاش", @@ -275,7 +273,6 @@ "No favorites yet" : "ياقتۇرىدىغانلار تېخى يوق", "Files and folders you mark as favorite will show up here" : "سىز ياقتۇرىدىغان ھۆججەت ۋە ھۆججەت قىسقۇچلار بۇ يەردە كۆرۈنىدۇ", "List of your files and folders." : "ھۆججەت ۋە ھۆججەت قىسقۇچلىرىڭىزنىڭ تىزىملىكى.", - "All folders" : "بارلىق ھۆججەت قىسقۇچلار", "List of your files and folders that are not shared." : "ئورتاقلاشمىغان ھۆججەت ۋە ھۆججەت قىسقۇچلىرىڭىزنىڭ تىزىملىكى.", "No personal files found" : "شەخسىي ھۆججەت تېپىلمىدى", "Files that are not shared will show up here." : "ئورتاقلاشمىغان ھۆججەتلەر بۇ يەردە كۆرۈنىدۇ.", @@ -365,7 +362,10 @@ "Submitting fields…" : "يول يوللاش…", "Filter filenames…" : "ھۆججەت نامىنى سۈزۈڭ…", "Enable the grid view" : "كاتەكچە كۆرۈنۈشىنى قوزغىتىڭ", + "Use this address to access your Files via WebDAV" : "بۇ ئادرېسنى ئىشلىتىپ WebDAV ئارقىلىق ھۆججەتلىرىڭىزنى زىيارەت قىلىڭ", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "ئەگەر سىز 2FA نى قوزغىتىپ قويغان بولسىڭىز ، بۇ يەرنى چېكىپ چوقۇم يېڭى ئەپ پارولى قۇرالايسىز ۋە ئىشلىتىڭ.", "{fileCount} files and {folderCount} folders" : "{fileCount} ھۆججەتلىرى ۋە {folderCount} ھۆججەت قىسقۇچلىرى", + "All folders" : "بارلىق ھۆججەت قىسقۇچلار", "Personal Files" : "شەخسىي ھۆججەتلەر", "Text file" : "تېكىست ھۆججەت", "New text file.txt" : "يېڭى تېكىست ھۆججىتى. Txt" diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js index e33c4e6b18b..038ac1e870b 100644 --- a/apps/files/l10n/uk.js +++ b/apps/files/l10n/uk.js @@ -201,16 +201,18 @@ OC.L10N.register( "Personal files" : "Мої документи", "Sort favorites first" : "Спочатку показувати із зірочкою", "Sort folders before files" : "Показувати каталоги перед файлами", + "Enable folder tree" : "Увімкнути дерево каталогів", + "Visual settings" : "Візуальні налаштування", "Show hidden files" : "Показувати приховані файли", "Show file type column" : "Показувати стовпець з типом файлу", "Crop image previews" : "Попередній перегляд перед кадруванням", - "Enable folder tree" : "Увімкнути дерево каталогів", + "Show files extensions" : "Показати розширення файлів", "Additional settings" : "Додатково", "WebDAV" : "WebDAV", "WebDAV URL" : "URL-адреса WebDAV", "Copy to clipboard" : "Копіювати до буферу обміну", - "Use this address to access your Files via WebDAV" : "Адреса для доступу до файлів за допомогою протоколу WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Якщо увімкнено двофакторної авторизацію, вам потрібно створити та використовувати окремий пароль на застосунок. Для цього клацніть тут.", + "Use this address to access your Files via WebDAV." : "Використовуйте цю адресу для доступу до ваших файлів за допомогою WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Для вашого облікового запису увімкнено двофакторну авторизацію, таким чином вам потрібно буде використовувати пароль для застосунку для з'єднання із зовнішнім клієнтом WebDAV.", "Warnings" : "Застереження", "Prevent warning dialogs from open or reenable them." : "Не дозволяти показувати діялоги застережень або повторно увімкнути їх.", "Show a warning dialog when changing a file extension." : "Показувати діялог застереження у разі зміни розширення файлу.", @@ -332,6 +334,7 @@ OC.L10N.register( "Templates" : "Шаблони", "New template folder" : "Новий каталог шаблонів", "In folder" : "У каталозі", + "Search in all files" : "Пошук у всіх файлах", "Search in folder: {folder}" : "Шукати у каталозі: {folder}", "One of the dropped files could not be processed" : "Один із завантажених файлів не вдалося обробити", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Ваш бравзер не підтримує Filesystem API. Каталоги не буде завантажено", @@ -365,7 +368,7 @@ OC.L10N.register( "No favorites yet" : "Поки немає нічого, позначеного зірочкою", "Files and folders you mark as favorite will show up here" : "Файли та каталоги із зірочкою з’являться тут", "List of your files and folders." : "Список ваших файлів та каталогів.", - "All folders" : "Усі каталоги", + "Folder tree" : "Дерево каталогів", "List of your files and folders that are not shared." : "Перелік ваших файлів та каталогів, які не є у спільному доступі.", "No personal files found" : "Мої документи не знайдено", "Files that are not shared will show up here." : "Тут показуватимуться файли, які не є у спільному доступі.", @@ -460,11 +463,14 @@ OC.L10N.register( "Submitting fields…" : "Поля для надсилання...", "Filter filenames…" : "Вибрати файли за ім'ям ...", "Enable the grid view" : "Увімкнути подання сіткою", + "Use this address to access your Files via WebDAV" : "Адреса для доступу до файлів за допомогою протоколу WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Якщо увімкнено двофакторної авторизацію, вам потрібно створити та використовувати окремий пароль на застосунок. Для цього клацніть тут.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} каталог","{folderCount} каталоги","{folderCount} каталогів","{folderCount} каталогів"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} файл","{fileCount} файли","{fileCount} файлів","{fileCount} файлів"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 файл та {folderCount} каталог","1 файл та {folderCount} каталоги","1 файл та {folderCount} каталогів","1 файл та {folderCount} каталогів"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} файл та 1 каталог","{fileCount} файли та 1 каталог","{fileCount} файлів та 1 каталог","{fileCount} файлів та 1 каталог"], "{fileCount} files and {folderCount} folders" : "{fileCount} файлів та {folderCount} каталогів", + "All folders" : "Усі каталоги", "Personal Files" : "Мої документи", "Text file" : "Текстовий файл", "New text file.txt" : "Новий текстовий файл.txt", diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json index 92df28c918d..10185d9f848 100644 --- a/apps/files/l10n/uk.json +++ b/apps/files/l10n/uk.json @@ -199,16 +199,18 @@ "Personal files" : "Мої документи", "Sort favorites first" : "Спочатку показувати із зірочкою", "Sort folders before files" : "Показувати каталоги перед файлами", + "Enable folder tree" : "Увімкнути дерево каталогів", + "Visual settings" : "Візуальні налаштування", "Show hidden files" : "Показувати приховані файли", "Show file type column" : "Показувати стовпець з типом файлу", "Crop image previews" : "Попередній перегляд перед кадруванням", - "Enable folder tree" : "Увімкнути дерево каталогів", + "Show files extensions" : "Показати розширення файлів", "Additional settings" : "Додатково", "WebDAV" : "WebDAV", "WebDAV URL" : "URL-адреса WebDAV", "Copy to clipboard" : "Копіювати до буферу обміну", - "Use this address to access your Files via WebDAV" : "Адреса для доступу до файлів за допомогою протоколу WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Якщо увімкнено двофакторної авторизацію, вам потрібно створити та використовувати окремий пароль на застосунок. Для цього клацніть тут.", + "Use this address to access your Files via WebDAV." : "Використовуйте цю адресу для доступу до ваших файлів за допомогою WebDAV.", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "Для вашого облікового запису увімкнено двофакторну авторизацію, таким чином вам потрібно буде використовувати пароль для застосунку для з'єднання із зовнішнім клієнтом WebDAV.", "Warnings" : "Застереження", "Prevent warning dialogs from open or reenable them." : "Не дозволяти показувати діялоги застережень або повторно увімкнути їх.", "Show a warning dialog when changing a file extension." : "Показувати діялог застереження у разі зміни розширення файлу.", @@ -330,6 +332,7 @@ "Templates" : "Шаблони", "New template folder" : "Новий каталог шаблонів", "In folder" : "У каталозі", + "Search in all files" : "Пошук у всіх файлах", "Search in folder: {folder}" : "Шукати у каталозі: {folder}", "One of the dropped files could not be processed" : "Один із завантажених файлів не вдалося обробити", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "Ваш бравзер не підтримує Filesystem API. Каталоги не буде завантажено", @@ -363,7 +366,7 @@ "No favorites yet" : "Поки немає нічого, позначеного зірочкою", "Files and folders you mark as favorite will show up here" : "Файли та каталоги із зірочкою з’являться тут", "List of your files and folders." : "Список ваших файлів та каталогів.", - "All folders" : "Усі каталоги", + "Folder tree" : "Дерево каталогів", "List of your files and folders that are not shared." : "Перелік ваших файлів та каталогів, які не є у спільному доступі.", "No personal files found" : "Мої документи не знайдено", "Files that are not shared will show up here." : "Тут показуватимуться файли, які не є у спільному доступі.", @@ -458,11 +461,14 @@ "Submitting fields…" : "Поля для надсилання...", "Filter filenames…" : "Вибрати файли за ім'ям ...", "Enable the grid view" : "Увімкнути подання сіткою", + "Use this address to access your Files via WebDAV" : "Адреса для доступу до файлів за допомогою протоколу WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Якщо увімкнено двофакторної авторизацію, вам потрібно створити та використовувати окремий пароль на застосунок. Для цього клацніть тут.", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} каталог","{folderCount} каталоги","{folderCount} каталогів","{folderCount} каталогів"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} файл","{fileCount} файли","{fileCount} файлів","{fileCount} файлів"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 файл та {folderCount} каталог","1 файл та {folderCount} каталоги","1 файл та {folderCount} каталогів","1 файл та {folderCount} каталогів"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} файл та 1 каталог","{fileCount} файли та 1 каталог","{fileCount} файлів та 1 каталог","{fileCount} файлів та 1 каталог"], "{fileCount} files and {folderCount} folders" : "{fileCount} файлів та {folderCount} каталогів", + "All folders" : "Усі каталоги", "Personal Files" : "Мої документи", "Text file" : "Текстовий файл", "New text file.txt" : "Новий текстовий файл.txt", diff --git a/apps/files/l10n/vi.js b/apps/files/l10n/vi.js index 875e668a622..d2992d1c257 100644 --- a/apps/files/l10n/vi.js +++ b/apps/files/l10n/vi.js @@ -161,13 +161,11 @@ OC.L10N.register( "All files" : "Tất cả tệp tin", "Sort favorites first" : "Sắp xếp mục yêu thích trước", "Sort folders before files" : "Sắp xếp thư mục trước tập tin", + "Enable folder tree" : "Bật cây thư mục", "Show hidden files" : "Hiển thị các tệp ẩn", "Crop image previews" : "Xén ảnh xem trước", - "Enable folder tree" : "Bật cây thư mục", "Additional settings" : "Cài đặt bổ sung", "Copy to clipboard" : "Sao chép vào bộ nhớ tạm", - "Use this address to access your Files via WebDAV" : "Sử dụng địa chỉ này để truy cập Tệp của bạn qua WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Nếu bạn đã bật 2FA, bạn phải tạo và sử dụng mật khẩu ứng dụng mới bằng cách nhấp vào đây.", "Keyboard shortcuts" : "Phím tắt", "Selection" : "Lựa chọn", "Navigation" : "Điều hướng", @@ -275,7 +273,6 @@ OC.L10N.register( "No favorites yet" : "Chưa có yêu thích nào", "Files and folders you mark as favorite will show up here" : "Các tệp và thư mục mà bạn đánh dấu là yêu thích sẽ hiển thị ở đây", "List of your files and folders." : "Danh sách các tập tin và thư mục của bạn.", - "All folders" : "Tất cả tệp tin", "List of your files and folders that are not shared." : "Danh sách tệp tin và thư mục không được chia sẻ của bạn.", "No personal files found" : "Không có tệp cá nhân nào được tìm thấy", "Files that are not shared will show up here." : "Các tệp và thư mục bạn đã không chia sẻ sẽ hiện thị ở đây.", @@ -366,11 +363,14 @@ OC.L10N.register( "Upload (max. %s)" : "Tải lên (tối đa %s)", "Filter filenames…" : "Lọc tên tệp…", "Enable the grid view" : "Bật chế độ xem lưới", + "Use this address to access your Files via WebDAV" : "Sử dụng địa chỉ này để truy cập Tệp của bạn qua WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Nếu bạn đã bật 2FA, bạn phải tạo và sử dụng mật khẩu ứng dụng mới bằng cách nhấp vào đây.", "_{folderCount} folder_::_{folderCount} folders_" : ["thư mục {folderCount}"], "_{fileCount} file_::_{fileCount} files_" : ["tệp {fileCount}"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 tệp và thư mục {folderCount}"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["tệp {fileCount} và 1 thư mục"], "{fileCount} files and {folderCount} folders" : "Tệp {fileCount} và thư mục {folderCount}", + "All folders" : "Tất cả tệp tin", "Personal Files" : "Tệp tin cá nhân", "Text file" : "Tập tin văn bản", "New text file.txt" : "Tệp văn bản mới.txt" diff --git a/apps/files/l10n/vi.json b/apps/files/l10n/vi.json index 85b46410eef..22dfafd0cff 100644 --- a/apps/files/l10n/vi.json +++ b/apps/files/l10n/vi.json @@ -159,13 +159,11 @@ "All files" : "Tất cả tệp tin", "Sort favorites first" : "Sắp xếp mục yêu thích trước", "Sort folders before files" : "Sắp xếp thư mục trước tập tin", + "Enable folder tree" : "Bật cây thư mục", "Show hidden files" : "Hiển thị các tệp ẩn", "Crop image previews" : "Xén ảnh xem trước", - "Enable folder tree" : "Bật cây thư mục", "Additional settings" : "Cài đặt bổ sung", "Copy to clipboard" : "Sao chép vào bộ nhớ tạm", - "Use this address to access your Files via WebDAV" : "Sử dụng địa chỉ này để truy cập Tệp của bạn qua WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Nếu bạn đã bật 2FA, bạn phải tạo và sử dụng mật khẩu ứng dụng mới bằng cách nhấp vào đây.", "Keyboard shortcuts" : "Phím tắt", "Selection" : "Lựa chọn", "Navigation" : "Điều hướng", @@ -273,7 +271,6 @@ "No favorites yet" : "Chưa có yêu thích nào", "Files and folders you mark as favorite will show up here" : "Các tệp và thư mục mà bạn đánh dấu là yêu thích sẽ hiển thị ở đây", "List of your files and folders." : "Danh sách các tập tin và thư mục của bạn.", - "All folders" : "Tất cả tệp tin", "List of your files and folders that are not shared." : "Danh sách tệp tin và thư mục không được chia sẻ của bạn.", "No personal files found" : "Không có tệp cá nhân nào được tìm thấy", "Files that are not shared will show up here." : "Các tệp và thư mục bạn đã không chia sẻ sẽ hiện thị ở đây.", @@ -364,11 +361,14 @@ "Upload (max. %s)" : "Tải lên (tối đa %s)", "Filter filenames…" : "Lọc tên tệp…", "Enable the grid view" : "Bật chế độ xem lưới", + "Use this address to access your Files via WebDAV" : "Sử dụng địa chỉ này để truy cập Tệp của bạn qua WebDAV", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Nếu bạn đã bật 2FA, bạn phải tạo và sử dụng mật khẩu ứng dụng mới bằng cách nhấp vào đây.", "_{folderCount} folder_::_{folderCount} folders_" : ["thư mục {folderCount}"], "_{fileCount} file_::_{fileCount} files_" : ["tệp {fileCount}"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 tệp và thư mục {folderCount}"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["tệp {fileCount} và 1 thư mục"], "{fileCount} files and {folderCount} folders" : "Tệp {fileCount} và thư mục {folderCount}", + "All folders" : "Tất cả tệp tin", "Personal Files" : "Tệp tin cá nhân", "Text file" : "Tập tin văn bản", "New text file.txt" : "Tệp văn bản mới.txt" diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js index 76d9628dd35..2644bffadf7 100644 --- a/apps/files/l10n/zh_CN.js +++ b/apps/files/l10n/zh_CN.js @@ -200,16 +200,14 @@ OC.L10N.register( "Personal files" : "个人文件", "Sort favorites first" : "收藏排序优先", "Sort folders before files" : "将文件夹排在文件前面", + "Enable folder tree" : "启用文件夹树", "Show hidden files" : "显示隐藏文件", "Show file type column" : "显示文件类型列", "Crop image previews" : "裁剪图片预览", - "Enable folder tree" : "启用文件夹树", "Additional settings" : "其他设置", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "复制到剪贴板", - "Use this address to access your Files via WebDAV" : "使用此地址通过 WebDAV 访问您的文件", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "如果启用两步验证,您必须点击此处来创建和使用一个新的应用程序密码。", "Warnings" : "警告", "Prevent warning dialogs from open or reenable them." : "防止打开或重新启用警告对话框。", "Show a warning dialog when changing a file extension." : "更改文件扩展名时显示警告对话框。", @@ -363,7 +361,6 @@ OC.L10N.register( "No favorites yet" : "暂无收藏", "Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示", "List of your files and folders." : "您的文件与文件件列表。", - "All folders" : "所有文件夹", "List of your files and folders that are not shared." : "尚未分享的文件与文件夹", "No personal files found" : "找不到个人文件", "Files that are not shared will show up here." : "尚未分享的文件会显示在此处", @@ -458,11 +455,14 @@ OC.L10N.register( "Submitting fields…" : "提交字段...", "Filter filenames…" : "过滤文件名...", "Enable the grid view" : "启用网格视图", + "Use this address to access your Files via WebDAV" : "使用此地址通过 WebDAV 访问您的文件", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "如果启用两步验证,您必须点击此处来创建和使用一个新的应用程序密码。", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} 个文件夹"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} 个文件"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 个文件夹及 {folderCount} 个文件夹"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} 个文件及 1 个文件夹"], "{fileCount} files and {folderCount} folders" : "{fileCount} 个文件及 {folderCount} 个文件夹", + "All folders" : "所有文件夹", "Personal Files" : "个人文件", "Text file" : "文本文件", "New text file.txt" : "新建文本文件.txt", diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json index a626974fef3..e519c6853c0 100644 --- a/apps/files/l10n/zh_CN.json +++ b/apps/files/l10n/zh_CN.json @@ -198,16 +198,14 @@ "Personal files" : "个人文件", "Sort favorites first" : "收藏排序优先", "Sort folders before files" : "将文件夹排在文件前面", + "Enable folder tree" : "启用文件夹树", "Show hidden files" : "显示隐藏文件", "Show file type column" : "显示文件类型列", "Crop image previews" : "裁剪图片预览", - "Enable folder tree" : "启用文件夹树", "Additional settings" : "其他设置", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "复制到剪贴板", - "Use this address to access your Files via WebDAV" : "使用此地址通过 WebDAV 访问您的文件", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "如果启用两步验证,您必须点击此处来创建和使用一个新的应用程序密码。", "Warnings" : "警告", "Prevent warning dialogs from open or reenable them." : "防止打开或重新启用警告对话框。", "Show a warning dialog when changing a file extension." : "更改文件扩展名时显示警告对话框。", @@ -361,7 +359,6 @@ "No favorites yet" : "暂无收藏", "Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示", "List of your files and folders." : "您的文件与文件件列表。", - "All folders" : "所有文件夹", "List of your files and folders that are not shared." : "尚未分享的文件与文件夹", "No personal files found" : "找不到个人文件", "Files that are not shared will show up here." : "尚未分享的文件会显示在此处", @@ -456,11 +453,14 @@ "Submitting fields…" : "提交字段...", "Filter filenames…" : "过滤文件名...", "Enable the grid view" : "启用网格视图", + "Use this address to access your Files via WebDAV" : "使用此地址通过 WebDAV 访问您的文件", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "如果启用两步验证,您必须点击此处来创建和使用一个新的应用程序密码。", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} 个文件夹"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} 个文件"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 个文件夹及 {folderCount} 个文件夹"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} 个文件及 1 个文件夹"], "{fileCount} files and {folderCount} folders" : "{fileCount} 个文件及 {folderCount} 个文件夹", + "All folders" : "所有文件夹", "Personal Files" : "个人文件", "Text file" : "文本文件", "New text file.txt" : "新建文本文件.txt", diff --git a/apps/files/l10n/zh_HK.js b/apps/files/l10n/zh_HK.js index b8a096abf15..f52260d6293 100644 --- a/apps/files/l10n/zh_HK.js +++ b/apps/files/l10n/zh_HK.js @@ -142,7 +142,7 @@ OC.L10N.register( "Create new folder" : "新增資料夾", "This name is already in use." : "這個用戶名稱已經有人使用了。", "Create" : "創建", - "Files starting with a dot are hidden by default" : "檔案名稱以點開頭的檔案預設隱藏", + "Files starting with a dot are hidden by default" : "以點開頭的檔案默認為隱藏檔案", "Fill template fields" : "填寫模板欄位", "Submitting fields …" : "正在遞交欄位 …", "Submit" : "遞交", @@ -201,16 +201,18 @@ OC.L10N.register( "Personal files" : "個人檔案", "Sort favorites first" : "先排序最愛", "Sort folders before files" : "將資料夾在檔案之前排序", + "Enable folder tree" : "啟用資料夾樹狀結構", + "Visual settings" : "視覺設定", "Show hidden files" : "顯示隱藏檔案", "Show file type column" : "顯示檔案類型縱列", "Crop image previews" : "圖片裁剪預覽", - "Enable folder tree" : "啟用資料夾樹狀結構", + "Show files extensions" : "顯示副檔案名", "Additional settings" : "其他設定", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "複製到剪貼板", - "Use this address to access your Files via WebDAV" : "用這位址使用 WebDAV 存取你的檔案。", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "如果您啟用了 2FA,則必須通過單擊此處創建和使用新的應用程式密碼。", + "Use this address to access your Files via WebDAV." : "使用此位置透過 WebDAV 存取您的檔案。", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "您的帳號已啟用兩階段驗證,因此您必須使用應用程式密碼才能連結外部 WebDAV 帳號。", "Warnings" : "警告", "Prevent warning dialogs from open or reenable them." : "避免開啟警告對話框或重新啟用它們。", "Show a warning dialog when changing a file extension." : "在變更副檔名時顯示警告對話框。", @@ -332,6 +334,7 @@ OC.L10N.register( "Templates" : "模板", "New template folder" : "新範本資料夾", "In folder" : "在資料夾中", + "Search in all files" : "在所有檔案中搜尋", "Search in folder: {folder}" : "搜尋資料夾: {folder}", "One of the dropped files could not be processed" : "無法處理其中一個投放的檔案", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "您的瀏覽器不支援檔案系統 API。將不會上傳目錄", @@ -365,7 +368,6 @@ OC.L10N.register( "No favorites yet" : "尚無最愛", "Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡", "List of your files and folders." : "您的檔案與資料夾清單。", - "All folders" : "所有資料夾", "List of your files and folders that are not shared." : "未分享的檔案與資料夾清單。", "No personal files found" : "找不到個人檔案", "Files that are not shared will show up here." : "尚未分享的檔案將會顯示在此處。", @@ -460,11 +462,14 @@ OC.L10N.register( "Submitting fields…" : "正在遞交欄位 …", "Filter filenames…" : "過濾檔案名 ...", "Enable the grid view" : "啟用網格檢視", + "Use this address to access your Files via WebDAV" : "用這位址使用 WebDAV 存取你的檔案。", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "如果您啟用了 2FA,則必須通過單擊此處創建和使用新的應用程式密碼。", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} 個資料夾"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} 個檔案"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 個檔案與 {folderCount} 個資料夾"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} 個檔案與 1 個資料夾"], "{fileCount} files and {folderCount} folders" : "{fileCount} 個檔案與 {folderCount} 個資料夾", + "All folders" : "所有資料夾", "Personal Files" : "個人檔案", "Text file" : "文字檔", "New text file.txt" : "新文字檔.txt", diff --git a/apps/files/l10n/zh_HK.json b/apps/files/l10n/zh_HK.json index c423b29cece..a89b647ba40 100644 --- a/apps/files/l10n/zh_HK.json +++ b/apps/files/l10n/zh_HK.json @@ -140,7 +140,7 @@ "Create new folder" : "新增資料夾", "This name is already in use." : "這個用戶名稱已經有人使用了。", "Create" : "創建", - "Files starting with a dot are hidden by default" : "檔案名稱以點開頭的檔案預設隱藏", + "Files starting with a dot are hidden by default" : "以點開頭的檔案默認為隱藏檔案", "Fill template fields" : "填寫模板欄位", "Submitting fields …" : "正在遞交欄位 …", "Submit" : "遞交", @@ -199,16 +199,18 @@ "Personal files" : "個人檔案", "Sort favorites first" : "先排序最愛", "Sort folders before files" : "將資料夾在檔案之前排序", + "Enable folder tree" : "啟用資料夾樹狀結構", + "Visual settings" : "視覺設定", "Show hidden files" : "顯示隱藏檔案", "Show file type column" : "顯示檔案類型縱列", "Crop image previews" : "圖片裁剪預覽", - "Enable folder tree" : "啟用資料夾樹狀結構", + "Show files extensions" : "顯示副檔案名", "Additional settings" : "其他設定", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "複製到剪貼板", - "Use this address to access your Files via WebDAV" : "用這位址使用 WebDAV 存取你的檔案。", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "如果您啟用了 2FA,則必須通過單擊此處創建和使用新的應用程式密碼。", + "Use this address to access your Files via WebDAV." : "使用此位置透過 WebDAV 存取您的檔案。", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "您的帳號已啟用兩階段驗證,因此您必須使用應用程式密碼才能連結外部 WebDAV 帳號。", "Warnings" : "警告", "Prevent warning dialogs from open or reenable them." : "避免開啟警告對話框或重新啟用它們。", "Show a warning dialog when changing a file extension." : "在變更副檔名時顯示警告對話框。", @@ -330,6 +332,7 @@ "Templates" : "模板", "New template folder" : "新範本資料夾", "In folder" : "在資料夾中", + "Search in all files" : "在所有檔案中搜尋", "Search in folder: {folder}" : "搜尋資料夾: {folder}", "One of the dropped files could not be processed" : "無法處理其中一個投放的檔案", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "您的瀏覽器不支援檔案系統 API。將不會上傳目錄", @@ -363,7 +366,6 @@ "No favorites yet" : "尚無最愛", "Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡", "List of your files and folders." : "您的檔案與資料夾清單。", - "All folders" : "所有資料夾", "List of your files and folders that are not shared." : "未分享的檔案與資料夾清單。", "No personal files found" : "找不到個人檔案", "Files that are not shared will show up here." : "尚未分享的檔案將會顯示在此處。", @@ -458,11 +460,14 @@ "Submitting fields…" : "正在遞交欄位 …", "Filter filenames…" : "過濾檔案名 ...", "Enable the grid view" : "啟用網格檢視", + "Use this address to access your Files via WebDAV" : "用這位址使用 WebDAV 存取你的檔案。", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "如果您啟用了 2FA,則必須通過單擊此處創建和使用新的應用程式密碼。", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} 個資料夾"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} 個檔案"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 個檔案與 {folderCount} 個資料夾"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} 個檔案與 1 個資料夾"], "{fileCount} files and {folderCount} folders" : "{fileCount} 個檔案與 {folderCount} 個資料夾", + "All folders" : "所有資料夾", "Personal Files" : "個人檔案", "Text file" : "文字檔", "New text file.txt" : "新文字檔.txt", diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js index 52c48337c11..ec4b699d2c4 100644 --- a/apps/files/l10n/zh_TW.js +++ b/apps/files/l10n/zh_TW.js @@ -201,16 +201,18 @@ OC.L10N.register( "Personal files" : "個人檔案", "Sort favorites first" : "先排序喜愛", "Sort folders before files" : "將資料夾排序在檔案前", + "Enable folder tree" : "啟用資料夾樹", + "Visual settings" : "視覺設定", "Show hidden files" : "顯示隱藏檔", "Show file type column" : "顯示檔案類型欄位", "Crop image previews" : "圖片裁剪預覽", - "Enable folder tree" : "啟用資料夾樹", + "Show files extensions" : "顯示副檔名", "Additional settings" : "其他設定", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "複製到剪貼簿", - "Use this address to access your Files via WebDAV" : "使用此位置透過 WebDAV 存取您的檔案", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "若您啟用了雙因子認證,您必須點擊此處建立並使用新的應用程式密碼。", + "Use this address to access your Files via WebDAV." : "使用此位置透過 WebDAV 存取您的檔案。", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "您的帳號已啟用兩階段驗證,因此您必須使用應用程式密碼才能連結外部 WebDAV 帳號。", "Warnings" : "警告", "Prevent warning dialogs from open or reenable them." : "避免開啟警告對話方塊或重新啟用它們。", "Show a warning dialog when changing a file extension." : "在變更副檔名時顯示警告對話方塊。", @@ -332,6 +334,7 @@ OC.L10N.register( "Templates" : "範本", "New template folder" : "新範本資料夾", "In folder" : "在資料夾中", + "Search in all files" : "在所有檔案中搜尋", "Search in folder: {folder}" : "在資料夾中搜尋:{folder}", "One of the dropped files could not be processed" : "無法處理其中一個投遞的檔案", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "您的瀏覽器不支援檔案系統 API。將不會上傳目錄", @@ -365,7 +368,7 @@ OC.L10N.register( "No favorites yet" : "尚無喜愛", "Files and folders you mark as favorite will show up here" : "您標記為喜愛的檔案與資料夾將會顯示在這裡", "List of your files and folders." : "您的檔案與資料夾清單。", - "All folders" : "所有資料夾", + "Folder tree" : "資料夾樹", "List of your files and folders that are not shared." : "未分享的檔案與資料夾清單。", "No personal files found" : "找不到個人檔案", "Files that are not shared will show up here." : "尚未分享的檔案將會顯示在此處。", @@ -460,11 +463,14 @@ OC.L10N.register( "Submitting fields…" : "正在遞交欄位……", "Filter filenames…" : "篩選檔案名稱……", "Enable the grid view" : "啟用格狀檢視", + "Use this address to access your Files via WebDAV" : "使用此位置透過 WebDAV 存取您的檔案", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "若您啟用了雙因子認證,您必須點擊此處建立並使用新的應用程式密碼。", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} 個資料夾"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} 個檔案"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 個檔案與 {folderCount} 個資料夾"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} 個檔案與 1 個資料夾"], "{fileCount} files and {folderCount} folders" : "{fileCount} 個檔案與 {folderCount} 個資料夾", + "All folders" : "所有資料夾", "Personal Files" : "個人檔案", "Text file" : "文字檔案", "New text file.txt" : "新文字檔案.txt", diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json index 88f7b8132ec..30958af0536 100644 --- a/apps/files/l10n/zh_TW.json +++ b/apps/files/l10n/zh_TW.json @@ -199,16 +199,18 @@ "Personal files" : "個人檔案", "Sort favorites first" : "先排序喜愛", "Sort folders before files" : "將資料夾排序在檔案前", + "Enable folder tree" : "啟用資料夾樹", + "Visual settings" : "視覺設定", "Show hidden files" : "顯示隱藏檔", "Show file type column" : "顯示檔案類型欄位", "Crop image previews" : "圖片裁剪預覽", - "Enable folder tree" : "啟用資料夾樹", + "Show files extensions" : "顯示副檔名", "Additional settings" : "其他設定", "WebDAV" : "WebDAV", "WebDAV URL" : "WebDAV URL", "Copy to clipboard" : "複製到剪貼簿", - "Use this address to access your Files via WebDAV" : "使用此位置透過 WebDAV 存取您的檔案", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "若您啟用了雙因子認證,您必須點擊此處建立並使用新的應用程式密碼。", + "Use this address to access your Files via WebDAV." : "使用此位置透過 WebDAV 存取您的檔案。", + "Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client." : "您的帳號已啟用兩階段驗證,因此您必須使用應用程式密碼才能連結外部 WebDAV 帳號。", "Warnings" : "警告", "Prevent warning dialogs from open or reenable them." : "避免開啟警告對話方塊或重新啟用它們。", "Show a warning dialog when changing a file extension." : "在變更副檔名時顯示警告對話方塊。", @@ -330,6 +332,7 @@ "Templates" : "範本", "New template folder" : "新範本資料夾", "In folder" : "在資料夾中", + "Search in all files" : "在所有檔案中搜尋", "Search in folder: {folder}" : "在資料夾中搜尋:{folder}", "One of the dropped files could not be processed" : "無法處理其中一個投遞的檔案", "Your browser does not support the Filesystem API. Directories will not be uploaded" : "您的瀏覽器不支援檔案系統 API。將不會上傳目錄", @@ -363,7 +366,7 @@ "No favorites yet" : "尚無喜愛", "Files and folders you mark as favorite will show up here" : "您標記為喜愛的檔案與資料夾將會顯示在這裡", "List of your files and folders." : "您的檔案與資料夾清單。", - "All folders" : "所有資料夾", + "Folder tree" : "資料夾樹", "List of your files and folders that are not shared." : "未分享的檔案與資料夾清單。", "No personal files found" : "找不到個人檔案", "Files that are not shared will show up here." : "尚未分享的檔案將會顯示在此處。", @@ -458,11 +461,14 @@ "Submitting fields…" : "正在遞交欄位……", "Filter filenames…" : "篩選檔案名稱……", "Enable the grid view" : "啟用格狀檢視", + "Use this address to access your Files via WebDAV" : "使用此位置透過 WebDAV 存取您的檔案", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "若您啟用了雙因子認證,您必須點擊此處建立並使用新的應用程式密碼。", "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} 個資料夾"], "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} 個檔案"], "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 個檔案與 {folderCount} 個資料夾"], "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} 個檔案與 1 個資料夾"], "{fileCount} files and {folderCount} folders" : "{fileCount} 個檔案與 {folderCount} 個資料夾", + "All folders" : "所有資料夾", "Personal Files" : "個人檔案", "Text file" : "文字檔案", "New text file.txt" : "新文字檔案.txt", diff --git a/apps/files/lib/Controller/ViewController.php b/apps/files/lib/Controller/ViewController.php index 50b0ae558aa..ecf21cef313 100644 --- a/apps/files/lib/Controller/ViewController.php +++ b/apps/files/lib/Controller/ViewController.php @@ -26,6 +26,7 @@ use OCP\AppFramework\Http\RedirectResponse; use OCP\AppFramework\Http\Response; use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Services\IInitialState; +use OCP\Authentication\TwoFactorAuth\IRegistry; use OCP\Collaboration\Resources\LoadAdditionalScriptsEvent as ResourcesLoadAdditionalScriptsEvent; use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\Folder; @@ -60,6 +61,7 @@ class ViewController extends Controller { private UserConfig $userConfig, private ViewConfig $viewConfig, private FilenameValidator $filenameValidator, + private IRegistry $twoFactorRegistry, ) { parent::__construct($appName, $request); } @@ -142,7 +144,8 @@ class ViewController extends Controller { Util::addInitScript('files', 'init'); Util::addScript('files', 'main'); - $userId = $this->userSession->getUser()->getUID(); + $user = $this->userSession->getUser(); + $userId = $user->getUID(); // If the file doesn't exists in the folder and // exists in only one occurrence, redirect to that file @@ -195,6 +198,15 @@ class ViewController extends Controller { $this->initialState->provideInitialState('templates_path', $this->templateManager->hasTemplateDirectory() ? $this->templateManager->getTemplatePath() : false); $this->initialState->provideInitialState('templates', $this->templateManager->listCreators()); + $isTwoFactorEnabled = false; + foreach ($this->twoFactorRegistry->getProviderStates($user) as $providerId => $providerState) { + if ($providerId !== 'backup_codes' && $providerState === true) { + $isTwoFactorEnabled = true; + } + } + + $this->initialState->provideInitialState('isTwoFactorEnabled', $isTwoFactorEnabled); + $response = new TemplateResponse( Application::APP_ID, 'index', diff --git a/apps/files/lib/Service/UserConfig.php b/apps/files/lib/Service/UserConfig.php index 4dae198ee55..dcf30b7796d 100644 --- a/apps/files/lib/Service/UserConfig.php +++ b/apps/files/lib/Service/UserConfig.php @@ -50,6 +50,12 @@ class UserConfig { 'allowed' => [true, false], ], [ + // Whether to show the files extensions in the files list or not + 'key' => 'show_files_extensions', + 'default' => true, + 'allowed' => [true, false], + ], + [ // Whether to show the hidden files or not in the files list 'key' => 'show_hidden', 'default' => false, diff --git a/apps/files/src/actions/deleteAction.ts b/apps/files/src/actions/deleteAction.ts index 63f7fd442c5..3e9e441a63c 100644 --- a/apps/files/src/actions/deleteAction.ts +++ b/apps/files/src/actions/deleteAction.ts @@ -10,7 +10,7 @@ import PQueue from 'p-queue' import CloseSvg from '@mdi/svg/svg/close.svg?raw' import NetworkOffSvg from '@mdi/svg/svg/network-off.svg?raw' -import TrashCanSvg from '@mdi/svg/svg/trash-can.svg?raw' +import TrashCanSvg from '@mdi/svg/svg/trash-can-outline.svg?raw' import { TRASHBIN_VIEW_ID } from '../../../files_trashbin/src/files_views/trashbinView.ts' import { askConfirmation, canDisconnectOnly, canUnshareOnly, deleteNode, displayName, shouldAskForConfirmation } from './deleteUtils.ts' diff --git a/apps/files/src/actions/moveOrCopyAction.ts b/apps/files/src/actions/moveOrCopyAction.ts index 724b65fa515..af68120bb1b 100644 --- a/apps/files/src/actions/moveOrCopyAction.ts +++ b/apps/files/src/actions/moveOrCopyAction.ts @@ -16,8 +16,8 @@ import { openConflictPicker, hasConflict } from '@nextcloud/upload' import { basename, join } from 'path' import Vue from 'vue' -import CopyIconSvg from '@mdi/svg/svg/folder-multiple.svg?raw' -import FolderMoveSvg from '@mdi/svg/svg/folder-move.svg?raw' +import CopyIconSvg from '@mdi/svg/svg/folder-multiple-outline.svg?raw' +import FolderMoveSvg from '@mdi/svg/svg/folder-move-outline.svg?raw' import { MoveCopyAction, canCopy, canMove, getQueue } from './moveOrCopyActionUtils' import { getContents } from '../services/Files' diff --git a/apps/files/src/actions/renameAction.ts b/apps/files/src/actions/renameAction.ts index d421d18c473..715ecb7563e 100644 --- a/apps/files/src/actions/renameAction.ts +++ b/apps/files/src/actions/renameAction.ts @@ -5,7 +5,7 @@ import { emit } from '@nextcloud/event-bus' import { Permission, type Node, FileAction, View } from '@nextcloud/files' import { translate as t } from '@nextcloud/l10n' -import PencilSvg from '@mdi/svg/svg/pencil.svg?raw' +import PencilSvg from '@mdi/svg/svg/pencil-outline.svg?raw' import { getPinia } from '../store' import { useFilesStore } from '../store/files' import { dirname } from 'path' diff --git a/apps/files/src/actions/viewInFolderAction.ts b/apps/files/src/actions/viewInFolderAction.ts index eb145dc409f..b22393c1152 100644 --- a/apps/files/src/actions/viewInFolderAction.ts +++ b/apps/files/src/actions/viewInFolderAction.ts @@ -2,10 +2,13 @@ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ -import { Node, FileType, Permission, View, FileAction } from '@nextcloud/files' -import { translate as t } from '@nextcloud/l10n' -import FolderMoveSvg from '@mdi/svg/svg/folder-move.svg?raw' +import type { Node, View } from '@nextcloud/files' + import { isPublicShare } from '@nextcloud/sharing/public' +import { FileAction, FileType, Permission } from '@nextcloud/files' +import { t } from '@nextcloud/l10n' + +import FolderMoveSvg from '@mdi/svg/svg/folder-move-outline.svg?raw' export const action = new FileAction({ id: 'view-in-folder', diff --git a/apps/files/src/components/FileEntry/FileEntryName.vue b/apps/files/src/components/FileEntry/FileEntryName.vue index 2fec9e5d556..418f9581eb6 100644 --- a/apps/files/src/components/FileEntry/FileEntryName.vue +++ b/apps/files/src/components/FileEntry/FileEntryName.vue @@ -30,7 +30,7 @@ <span class="files-list__row-name-text" dir="auto"> <!-- Keep the filename stuck to the extension to avoid whitespace rendering issues--> <span class="files-list__row-name-" v-text="basename" /> - <span class="files-list__row-name-ext" v-text="extension" /> + <span v-if="userConfigStore.userConfig.show_files_extensions" class="files-list__row-name-ext" v-text="extension" /> </span> </component> </template> @@ -46,11 +46,12 @@ import { defineComponent, inject } from 'vue' import NcTextField from '@nextcloud/vue/components/NcTextField' -import { useNavigation } from '../../composables/useNavigation' +import { getFilenameValidity } from '../../utils/filenameValidity.ts' import { useFileListWidth } from '../../composables/useFileListWidth.ts' -import { useRouteParameters } from '../../composables/useRouteParameters.ts' +import { useNavigation } from '../../composables/useNavigation.ts' import { useRenamingStore } from '../../store/renaming.ts' -import { getFilenameValidity } from '../../utils/filenameValidity.ts' +import { useRouteParameters } from '../../composables/useRouteParameters.ts' +import { useUserConfigStore } from '../../store/userconfig.ts' import logger from '../../logger.ts' export default defineComponent({ @@ -95,6 +96,7 @@ export default defineComponent({ const { directory } = useRouteParameters() const filesListWidth = useFileListWidth() const renamingStore = useRenamingStore() + const userConfigStore = useUserConfigStore() const defaultFileAction = inject<FileAction | undefined>('defaultFileAction') @@ -105,6 +107,7 @@ export default defineComponent({ filesListWidth, renamingStore, + userConfigStore, } }, diff --git a/apps/files/src/components/FileEntry/FileEntryPreview.vue b/apps/files/src/components/FileEntry/FileEntryPreview.vue index 506677b49af..3d0fffe7584 100644 --- a/apps/files/src/components/FileEntry/FileEntryPreview.vue +++ b/apps/files/src/components/FileEntry/FileEntryPreview.vue @@ -64,7 +64,7 @@ import FolderIcon from 'vue-material-design-icons/Folder.vue' import FolderOpenIcon from 'vue-material-design-icons/FolderOpen.vue' import KeyIcon from 'vue-material-design-icons/Key.vue' import LinkIcon from 'vue-material-design-icons/Link.vue' -import NetworkIcon from 'vue-material-design-icons/Network.vue' +import NetworkIcon from 'vue-material-design-icons/NetworkOutline.vue' import TagIcon from 'vue-material-design-icons/Tag.vue' import PlayCircleIcon from 'vue-material-design-icons/PlayCircle.vue' diff --git a/apps/files/src/components/FileListFilter/FileListFilterModified.vue b/apps/files/src/components/FileListFilter/FileListFilterModified.vue index f3a968dd56e..3a843b2bc3e 100644 --- a/apps/files/src/components/FileListFilter/FileListFilterModified.vue +++ b/apps/files/src/components/FileListFilter/FileListFilterModified.vue @@ -7,7 +7,7 @@ :filter-name="t('files', 'Modified')" @reset-filter="resetFilter"> <template #icon> - <NcIconSvgWrapper :path="mdiCalendarRange" /> + <NcIconSvgWrapper :path="mdiCalendarRangeOutline" /> </template> <NcActionButton v-for="preset of timePresets" :key="preset.id" @@ -25,7 +25,7 @@ import type { PropType } from 'vue' import type { ITimePreset } from '../../filters/ModifiedFilter.ts' -import { mdiCalendarRange } from '@mdi/js' +import { mdiCalendarRangeOutline } from '@mdi/js' import { translate as t } from '@nextcloud/l10n' import { defineComponent } from 'vue' @@ -50,7 +50,7 @@ export default defineComponent({ setup() { return { // icons used in template - mdiCalendarRange, + mdiCalendarRangeOutline, } }, diff --git a/apps/files/src/components/FileListFilter/FileListFilterType.vue b/apps/files/src/components/FileListFilter/FileListFilterType.vue index 53e46b48f8c..d3ad791513f 100644 --- a/apps/files/src/components/FileListFilter/FileListFilterType.vue +++ b/apps/files/src/components/FileListFilter/FileListFilterType.vue @@ -8,7 +8,7 @@ :filter-name="t('files', 'Type')" @reset-filter="resetFilter"> <template #icon> - <NcIconSvgWrapper :path="mdiFile" /> + <NcIconSvgWrapper :path="mdiFileOutline" /> </template> <NcActionButton v-for="fileType of typePresets" :key="fileType.id" @@ -27,7 +27,7 @@ import type { PropType } from 'vue' import type { ITypePreset } from '../../filters/TypeFilter.ts' -import { mdiFile } from '@mdi/js' +import { mdiFileOutline } from '@mdi/js' import { translate as t } from '@nextcloud/l10n' import { defineComponent } from 'vue' @@ -57,7 +57,7 @@ export default defineComponent({ setup() { return { - mdiFile, + mdiFileOutline, t, } }, diff --git a/apps/files/src/components/FilesListVirtual.vue b/apps/files/src/components/FilesListVirtual.vue index fbf614caede..47b8ef19b19 100644 --- a/apps/files/src/components/FilesListVirtual.vue +++ b/apps/files/src/components/FilesListVirtual.vue @@ -888,7 +888,7 @@ export default defineComponent({ } .files-list__row-size { - width: calc(var(--row-height) * 1.5); + width: calc(var(--row-height) * 2); // Right align content/text justify-content: flex-end; } @@ -898,11 +898,11 @@ export default defineComponent({ } .files-list__row-mime { - width: calc(var(--row-height) * 2.5); + width: calc(var(--row-height) * 3.5); } .files-list__row-column-custom { - width: calc(var(--row-height) * 2); + width: calc(var(--row-height) * 2.5); } } } diff --git a/apps/files/src/components/NavigationQuota.vue b/apps/files/src/components/NavigationQuota.vue index fd10af1c495..46c8e5c9af4 100644 --- a/apps/files/src/components/NavigationQuota.vue +++ b/apps/files/src/components/NavigationQuota.vue @@ -33,7 +33,7 @@ import { subscribe } from '@nextcloud/event-bus' import { translate } from '@nextcloud/l10n' import axios from '@nextcloud/axios' -import ChartPie from 'vue-material-design-icons/ChartPie.vue' +import ChartPie from 'vue-material-design-icons/ChartPieOutline.vue' import NcAppNavigationItem from '@nextcloud/vue/components/NcAppNavigationItem' import NcProgressBar from '@nextcloud/vue/components/NcProgressBar' diff --git a/apps/files/src/composables/useNavigation.spec.ts b/apps/files/src/composables/useNavigation.spec.ts index 569e61825e1..b9eb671a181 100644 --- a/apps/files/src/composables/useNavigation.spec.ts +++ b/apps/files/src/composables/useNavigation.spec.ts @@ -29,6 +29,7 @@ describe('Composables: useNavigation', () => { describe('currentView', () => { beforeEach(() => { + // eslint-disable-next-line import/namespace navigation = new nextcloudFiles.Navigation() spy.mockImplementation(() => navigation) }) @@ -39,6 +40,7 @@ describe('Composables: useNavigation', () => { }) it('should return already active navigation', async () => { + // eslint-disable-next-line import/namespace const view = new nextcloudFiles.View({ getContents: () => Promise.reject(new Error()), icon: '<svg></svg>', id: 'view-1', name: 'My View 1', order: 0 }) navigation.register(view) navigation.setActive(view) @@ -48,6 +50,7 @@ describe('Composables: useNavigation', () => { }) it('should be reactive on updating active navigation', async () => { + // eslint-disable-next-line import/namespace const view = new nextcloudFiles.View({ getContents: () => Promise.reject(new Error()), icon: '<svg></svg>', id: 'view-1', name: 'My View 1', order: 0 }) navigation.register(view) const wrapper = mount(TestComponent) @@ -63,6 +66,7 @@ describe('Composables: useNavigation', () => { describe('views', () => { beforeEach(() => { + // eslint-disable-next-line import/namespace navigation = new nextcloudFiles.Navigation() spy.mockImplementation(() => navigation) }) @@ -73,6 +77,7 @@ describe('Composables: useNavigation', () => { }) it('should return already registered views', () => { + // eslint-disable-next-line import/namespace const view = new nextcloudFiles.View({ getContents: () => Promise.reject(new Error()), icon: '<svg></svg>', id: 'view-1', name: 'My View 1', order: 0 }) // register before mount navigation.register(view) @@ -82,7 +87,9 @@ describe('Composables: useNavigation', () => { }) it('should be reactive on registering new views', () => { + // eslint-disable-next-line import/namespace const view = new nextcloudFiles.View({ getContents: () => Promise.reject(new Error()), icon: '<svg></svg>', id: 'view-1', name: 'My View 1', order: 0 }) + // eslint-disable-next-line import/namespace const view2 = new nextcloudFiles.View({ getContents: () => Promise.reject(new Error()), icon: '<svg></svg>', id: 'view-2', name: 'My View 2', order: 1 }) // register before mount diff --git a/apps/files/src/newMenu/newFolder.ts b/apps/files/src/newMenu/newFolder.ts index 9a8badb4eb7..bc82d389e54 100644 --- a/apps/files/src/newMenu/newFolder.ts +++ b/apps/files/src/newMenu/newFolder.ts @@ -12,7 +12,7 @@ import { showError, showInfo, showSuccess } from '@nextcloud/dialogs' import { translate as t } from '@nextcloud/l10n' import axios from '@nextcloud/axios' -import FolderPlusSvg from '@mdi/svg/svg/folder-plus.svg?raw' +import FolderPlusSvg from '@mdi/svg/svg/folder-plus-outline.svg?raw' import { newNodeName } from '../utils/newNodeDialog' import logger from '../logger' @@ -43,8 +43,11 @@ export const entry = { id: 'newFolder', displayName: t('files', 'New folder'), enabled: (context: Folder) => Boolean(context.permissions & Permission.CREATE) && Boolean(context.permissions & Permission.READ), - iconSvgInline: FolderPlusSvg, + + // Make the svg icon color match the primary element color + iconSvgInline: FolderPlusSvg.replace(/viewBox/gi, 'style="color: var(--color-primary-element)" viewBox'), order: 0, + async handler(context: Folder, content: Node[]) { const name = await newNodeName(t('files', 'New folder'), content) if (name === null) { diff --git a/apps/files/src/plugins/search/folderSearch.ts b/apps/files/src/plugins/search/folderSearch.ts index 626b1daa72b..6aabefbfc9d 100644 --- a/apps/files/src/plugins/search/folderSearch.ts +++ b/apps/files/src/plugins/search/folderSearch.ts @@ -36,12 +36,15 @@ function init() { callback: (nodes: Node[]) => { logger.info('Folder picked', { folder: nodes[0] }) const folder = nodes[0] + const filterUpdateText = (folder.root === '/files/' + folder.basename) + ? t('files', 'Search in all files') + : t('files', 'Search in folder: {folder}', { folder: folder.basename }) emit('nextcloud:unified-search:add-filter', { id: 'in-folder', appId: 'files', searchFrom: 'files', payload: folder, - filterUpdateText: t('files', 'Search in folder: {folder}', { folder: folder.basename }), + filterUpdateText, filterParams: { path: folder.path }, }) }, diff --git a/apps/files/src/store/userconfig.ts b/apps/files/src/store/userconfig.ts index 54e9a75eb8b..48fe01d5134 100644 --- a/apps/files/src/store/userconfig.ts +++ b/apps/files/src/store/userconfig.ts @@ -15,6 +15,7 @@ const initialUserConfig = loadState<UserConfig>('files', 'config', { crop_image_previews: true, default_view: 'files', grid_view: false, + show_files_extensions: true, show_hidden: false, show_mime_column: true, sort_favorites_first: true, diff --git a/apps/files/src/types.ts b/apps/files/src/types.ts index 6757b7f1f45..0096ecc0fdb 100644 --- a/apps/files/src/types.ts +++ b/apps/files/src/types.ts @@ -55,6 +55,7 @@ export interface UserConfig { crop_image_previews: boolean default_view: 'files' | 'personal' grid_view: boolean + show_files_extensions: boolean show_hidden: boolean show_mime_column: boolean sort_favorites_first: boolean diff --git a/apps/files/src/views/FilesList.vue b/apps/files/src/views/FilesList.vue index 15a7f93ddf0..3f993e24958 100644 --- a/apps/files/src/views/FilesList.vue +++ b/apps/files/src/views/FilesList.vue @@ -176,12 +176,12 @@ import NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent' import NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper' import NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon' -import AccountPlusIcon from 'vue-material-design-icons/AccountPlus.vue' +import AccountPlusIcon from 'vue-material-design-icons/AccountPlusOutline.vue' import IconAlertCircleOutline from 'vue-material-design-icons/AlertCircleOutline.vue' import IconReload from 'vue-material-design-icons/Reload.vue' import LinkIcon from 'vue-material-design-icons/Link.vue' import ListViewIcon from 'vue-material-design-icons/FormatListBulletedSquare.vue' -import ViewGridIcon from 'vue-material-design-icons/ViewGrid.vue' +import ViewGridIcon from 'vue-material-design-icons/ViewGridOutline.vue' import { action as sidebarAction } from '../actions/sidebarAction.ts' import { useFileListWidth } from '../composables/useFileListWidth.ts' diff --git a/apps/files/src/views/Navigation.vue b/apps/files/src/views/Navigation.vue index c424a0d74b8..0f3c3647c6e 100644 --- a/apps/files/src/views/Navigation.vue +++ b/apps/files/src/views/Navigation.vue @@ -47,7 +47,7 @@ import { getNavigation } from '@nextcloud/files' import { t, getCanonicalLocale, getLanguage } from '@nextcloud/l10n' import { defineComponent } from 'vue' -import IconCog from 'vue-material-design-icons/Cog.vue' +import IconCog from 'vue-material-design-icons/CogOutline.vue' import NcAppNavigation from '@nextcloud/vue/components/NcAppNavigation' import NcAppNavigationItem from '@nextcloud/vue/components/NcAppNavigationItem' import NcAppNavigationList from '@nextcloud/vue/components/NcAppNavigationList' diff --git a/apps/files/src/views/Settings.vue b/apps/files/src/views/Settings.vue index 49a348eabc3..0838d308af9 100644 --- a/apps/files/src/views/Settings.vue +++ b/apps/files/src/views/Settings.vue @@ -29,7 +29,6 @@ {{ t('files', 'Personal files') }} </NcCheckboxRadioSwitch> </fieldset> - <NcCheckboxRadioSwitch data-cy-files-settings-setting="sort_favorites_first" :checked="userConfig.sort_favorites_first" @update:checked="setConfig('sort_favorites_first', $event)"> @@ -40,6 +39,15 @@ @update:checked="setConfig('sort_folders_first', $event)"> {{ t('files', 'Sort folders before files') }} </NcCheckboxRadioSwitch> + <NcCheckboxRadioSwitch data-cy-files-settings-setting="folder_tree" + :checked="userConfig.folder_tree" + @update:checked="setConfig('folder_tree', $event)"> + {{ t('files', 'Enable folder tree') }} + </NcCheckboxRadioSwitch> + </NcAppSettingsSection> + + <!-- Visual settings --> + <NcAppSettingsSection id="settings" :name="t('files', 'Visual settings')"> <NcCheckboxRadioSwitch data-cy-files-settings-setting="show_hidden" :checked="userConfig.show_hidden" @update:checked="setConfig('show_hidden', $event)"> @@ -55,10 +63,10 @@ @update:checked="setConfig('crop_image_previews', $event)"> {{ t('files', 'Crop image previews') }} </NcCheckboxRadioSwitch> - <NcCheckboxRadioSwitch data-cy-files-settings-setting="folder_tree" - :checked="userConfig.folder_tree" - @update:checked="setConfig('folder_tree', $event)"> - {{ t('files', 'Enable folder tree') }} + <NcCheckboxRadioSwitch data-cy-files-settings-setting="show_files_extensions" + :checked="userConfig.show_files_extensions" + @update:checked="setConfig('show_files_extensions', $event)"> + {{ t('files', 'Show files extensions') }} </NcCheckboxRadioSwitch> </NcAppSettingsSection> @@ -79,6 +87,7 @@ :success="webdavUrlCopied" :trailing-button-label="t('files', 'Copy to clipboard')" :value="webdavUrl" + class="webdav-url-input" readonly="readonly" type="url" @focus="$event.target.select()" @@ -92,13 +101,13 @@ :href="webdavDocs" target="_blank" rel="noreferrer noopener"> - {{ t('files', 'Use this address to access your Files via WebDAV') }} ↗ + {{ t('files', 'Use this address to access your Files via WebDAV.') }} ↗ </a> </em> <br> - <em> + <em v-if="isTwoFactorEnabled"> <a class="setting-link" :href="appPasswordUrl"> - {{ t('files', 'If you have enabled 2FA, you must create and use a new app password by clicking here.') }} ↗ + {{ t('files', 'Two-Factor Authentication is enabled for your account, and therefore you need to use an app password to connect an external WebDAV client.') }} ↗ </a> </em> </NcAppSettingsSection> @@ -333,6 +342,7 @@ export default { appPasswordUrl: generateUrl('/settings/user/security#generate-app-token-section'), webdavUrlCopied: false, enableGridView: (loadState('core', 'config', [])['enable_non-accessible_features'] ?? true), + isTwoFactorEnabled: (loadState('files', 'isTwoFactorEnabled', false)), } }, @@ -429,4 +439,8 @@ export default { white-space: nowrap; } } + +.webdav-url-input { + margin-block-end: 0.5rem; +} </style> diff --git a/apps/files/src/views/favorites.spec.ts b/apps/files/src/views/favorites.spec.ts index 64c3df0500a..f793eb9f54c 100644 --- a/apps/files/src/views/favorites.spec.ts +++ b/apps/files/src/views/favorites.spec.ts @@ -7,6 +7,7 @@ import type { Folder as CFolder, Navigation } from '@nextcloud/files' import * as filesUtils from '@nextcloud/files' +import * as filesDavUtils from '@nextcloud/files/dav' import { CancelablePromise } from 'cancelable-promise' import { basename } from 'path' import { beforeEach, describe, expect, test, vi } from 'vitest' @@ -16,6 +17,7 @@ import { action } from '../actions/favoriteAction' import * as favoritesService from '../services/Favorites' import { registerFavoritesView } from './favorites' +// eslint-disable-next-line import/namespace const { Folder, getNavigation } = filesUtils vi.mock('@nextcloud/axios') @@ -43,7 +45,7 @@ describe('Favorites view definition', () => { test('Default empty favorite view', async () => { vi.spyOn(eventBus, 'subscribe') - vi.spyOn(filesUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([])) + vi.spyOn(filesDavUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([])) vi.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as CFolder, contents: [] })) await registerFavoritesView() @@ -89,8 +91,14 @@ describe('Favorites view definition', () => { source: 'http://nextcloud.local/remote.php/dav/files/admin/foo/bar', owner: 'admin', }), + new Folder({ + id: 4, + root: '/files/admin', + source: 'http://nextcloud.local/remote.php/dav/files/admin/foo/bar/yabadaba', + owner: 'admin', + }), ] - vi.spyOn(filesUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve(favoriteFolders)) + vi.spyOn(filesDavUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve(favoriteFolders)) vi.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as CFolder, contents: [] })) await registerFavoritesView() @@ -98,9 +106,12 @@ describe('Favorites view definition', () => { const favoriteFoldersViews = Navigation.views.filter(view => view.parent === 'favorites') // one main view and 3 children - expect(Navigation.views.length).toBe(4) + expect(Navigation.views.length).toBe(5) expect(favoritesView).toBeDefined() - expect(favoriteFoldersViews.length).toBe(3) + expect(favoriteFoldersViews.length).toBe(4) + + // Sorted by basename: bar, bar, foo + const expectedOrder = [2, 0, 1, 3] favoriteFolders.forEach((folder, index) => { const favoriteView = favoriteFoldersViews[index] @@ -108,7 +119,7 @@ describe('Favorites view definition', () => { expect(favoriteView?.id).toBeDefined() expect(favoriteView?.name).toBe(basename(folder.path)) expect(favoriteView?.icon).toMatch(/<svg.+<\/svg>/) - expect(favoriteView?.order).toBe(index) + expect(favoriteView?.order).toBe(expectedOrder[index]) expect(favoriteView?.params).toStrictEqual({ dir: folder.path, fileid: String(folder.fileid), @@ -132,7 +143,7 @@ describe('Dynamic update of favorite folders', () => { test('Add a favorite folder creates a new entry in the navigation', async () => { vi.spyOn(eventBus, 'emit') - vi.spyOn(filesUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([])) + vi.spyOn(filesDavUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([])) vi.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as CFolder, contents: [] })) await registerFavoritesView() @@ -160,7 +171,7 @@ describe('Dynamic update of favorite folders', () => { test('Remove a favorite folder remove the entry from the navigation column', async () => { vi.spyOn(eventBus, 'emit') - vi.spyOn(filesUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([ + vi.spyOn(filesDavUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([ new Folder({ id: 42, root: '/files/admin', @@ -211,7 +222,7 @@ describe('Dynamic update of favorite folders', () => { test('Renaming a favorite folder updates the navigation', async () => { vi.spyOn(eventBus, 'emit') - vi.spyOn(filesUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([])) + vi.spyOn(filesDavUtils, 'getFavoriteNodes').mockReturnValue(CancelablePromise.resolve([])) vi.spyOn(favoritesService, 'getContents').mockReturnValue(CancelablePromise.resolve({ folder: {} as CFolder, contents: [] })) await registerFavoritesView() diff --git a/apps/files/src/views/favorites.ts b/apps/files/src/views/favorites.ts index cadc7704e14..cac776507ef 100644 --- a/apps/files/src/views/favorites.ts +++ b/apps/files/src/views/favorites.ts @@ -4,13 +4,15 @@ */ import type { Folder, Node } from '@nextcloud/files' +import { FileType, View, getNavigation } from '@nextcloud/files' +import { getCanonicalLocale, getLanguage, t } from '@nextcloud/l10n' +import { getFavoriteNodes } from '@nextcloud/files/dav' import { subscribe } from '@nextcloud/event-bus' -import { FileType, View, getFavoriteNodes, getNavigation } from '@nextcloud/files' -import { getLanguage, translate as t } from '@nextcloud/l10n' -import { client } from '../services/WebdavClient.ts' + import FolderSvg from '@mdi/svg/svg/folder.svg?raw' -import StarSvg from '@mdi/svg/svg/star.svg?raw' +import StarSvg from '@mdi/svg/svg/star-outline.svg?raw' +import { client } from '../services/WebdavClient.ts' import { getContents } from '../services/Favorites' import { hashCode } from '../utils/hashUtils' import logger from '../logger' @@ -118,7 +120,7 @@ export const registerFavoritesView = async () => { * update the order property of the existing views */ const updateAndSortViews = function() { - favoriteFolders.sort((a, b) => a.path.localeCompare(b.path, getLanguage(), { ignorePunctuation: true })) + favoriteFolders.sort((a, b) => a.basename.localeCompare(b.basename, [getLanguage(), getCanonicalLocale()], { ignorePunctuation: true, numeric: true, usage: 'sort' })) favoriteFolders.forEach((folder, index) => { const view = favoriteFoldersViews.find((view) => view.id === generateIdFromPath(folder.path)) if (view) { @@ -176,4 +178,6 @@ export const registerFavoritesView = async () => { removePathFromFavorites(favoriteFolder.path) addToFavorites(node) } + + updateAndSortViews() } diff --git a/apps/files/src/views/files.ts b/apps/files/src/views/files.ts index 95450f0d71a..a94aab0f14b 100644 --- a/apps/files/src/views/files.ts +++ b/apps/files/src/views/files.ts @@ -10,7 +10,7 @@ import { getContents } from '../services/Files.ts' import { useActiveStore } from '../store/active.ts' import { defaultView } from '../utils/filesViews.ts' -import FolderSvg from '@mdi/svg/svg/folder.svg?raw' +import FolderSvg from '@mdi/svg/svg/folder-outline.svg?raw' export const VIEW_ID = 'files' diff --git a/apps/files/src/views/folderTree.ts b/apps/files/src/views/folderTree.ts index c38e4721316..2ce4e501e6f 100644 --- a/apps/files/src/views/folderTree.ts +++ b/apps/files/src/views/folderTree.ts @@ -13,7 +13,7 @@ import { isSamePath } from '@nextcloud/paths' import { loadState } from '@nextcloud/initial-state' import FolderSvg from '@mdi/svg/svg/folder.svg?raw' -import FolderMultipleSvg from '@mdi/svg/svg/folder-multiple.svg?raw' +import FolderMultipleSvg from '@mdi/svg/svg/folder-multiple-outline.svg?raw' import { folderTreeId, @@ -151,7 +151,7 @@ const registerTreeRoot = () => { Navigation.register(new View({ id: folderTreeId, - name: t('files', 'All folders'), + name: t('files', 'Folder tree'), caption: t('files', 'List of your files and folders.'), icon: FolderMultipleSvg, diff --git a/apps/files/src/views/personal-files.ts b/apps/files/src/views/personal-files.ts index 36888eb7ee0..241582057d1 100644 --- a/apps/files/src/views/personal-files.ts +++ b/apps/files/src/views/personal-files.ts @@ -8,7 +8,7 @@ import { View, getNavigation } from '@nextcloud/files' import { getContents } from '../services/PersonalFiles.ts' import { defaultView, hasPersonalFilesView } from '../utils/filesViews.ts' -import AccountIcon from '@mdi/svg/svg/account.svg?raw' +import AccountIcon from '@mdi/svg/svg/account-outline.svg?raw' export const VIEW_ID = 'personal' diff --git a/apps/files/tests/Controller/ViewControllerTest.php b/apps/files/tests/Controller/ViewControllerTest.php index a9a80fc6f35..01aa955a13e 100644 --- a/apps/files/tests/Controller/ViewControllerTest.php +++ b/apps/files/tests/Controller/ViewControllerTest.php @@ -19,6 +19,7 @@ use OCP\AppFramework\Http\ContentSecurityPolicy; use OCP\AppFramework\Http\RedirectResponse; use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Services\IInitialState; +use OCP\Authentication\TwoFactorAuth\IRegistry; use OCP\Diagnostics\IEventLogger; use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\File; @@ -63,6 +64,7 @@ class ViewControllerTest extends TestCase { private UserConfig&MockObject $userConfig; private ViewConfig&MockObject $viewConfig; private Router $router; + private IRegistry&MockObject $twoFactorRegistry; private ViewController&MockObject $viewController; @@ -79,6 +81,7 @@ class ViewControllerTest extends TestCase { $this->userConfig = $this->createMock(UserConfig::class); $this->userSession = $this->createMock(IUserSession::class); $this->viewConfig = $this->createMock(ViewConfig::class); + $this->twoFactorRegistry = $this->createMock(IRegistry::class); $this->user = $this->getMockBuilder(IUser::class)->getMock(); $this->user->expects($this->any()) @@ -138,6 +141,7 @@ class ViewControllerTest extends TestCase { $this->userConfig, $this->viewConfig, $filenameValidator, + $this->twoFactorRegistry, ]) ->onlyMethods([ 'getStorageInfo', @@ -286,4 +290,24 @@ class ViewControllerTest extends TestCase { $expected = new RedirectResponse('/index.php/apps/files/trashbin/123?dir=/test.d1462861890/sub'); $this->assertEquals($expected, $this->viewController->index('', '', '123')); } + + public function testTwoFactorAuthEnabled(): void { + $this->twoFactorRegistry->method('getProviderStates') + ->willReturn([ + 'totp' => true, + 'backup_codes' => true, + ]); + + $invokedCountProvideInitialState = $this->exactly(9); + $this->initialState->expects($invokedCountProvideInitialState) + ->method('provideInitialState') + ->willReturnCallback(function ($key, $data) use ($invokedCountProvideInitialState) { + if ($invokedCountProvideInitialState->numberOfInvocations() === 9) { + $this->assertEquals('isTwoFactorEnabled', $key); + $this->assertTrue($data); + } + }); + + $this->viewController->index('', '', null); + } } diff --git a/apps/files_external/3rdparty/.gitignore b/apps/files_external/3rdparty/.gitignore deleted file mode 100644 index d086196dec2..00000000000 --- a/apps/files_external/3rdparty/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -# SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors -# SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. -# SPDX-License-Identifier: AGPL-3.0-only -example.php -.editorconfig -icewind/smb/tests -icewind/smb/install_libsmbclient.sh -icewind/smb/Makefile -icewind/smb/.travis.yml -icewind/smb/.scrutinizer.yml -icewind/smb/example-apache-kerberos.php -icewind/smb/codecov.yml -icewind/streams/tests -icewind/**/example*.php -.github -.php_cs* -psalm.xml diff --git a/apps/files_external/3rdparty/autoload.php b/apps/files_external/3rdparty/autoload.php deleted file mode 100644 index d3359ad45d9..00000000000 --- a/apps/files_external/3rdparty/autoload.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php - -// autoload.php @generated by Composer - -if (PHP_VERSION_ID < 50600) { - if (!headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - } - $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL; - if (!ini_get('display_errors')) { - if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { - fwrite(STDERR, $err); - } elseif (!headers_sent()) { - echo $err; - } - } - trigger_error( - $err, - E_USER_ERROR - ); -} - -require_once __DIR__ . '/composer/autoload_real.php'; - -return ComposerAutoloaderInit98fe9b281934250b3a93f69a5ce843b3::getLoader(); diff --git a/apps/files_external/3rdparty/composer.json b/apps/files_external/3rdparty/composer.json deleted file mode 100644 index 6af1429aa7f..00000000000 --- a/apps/files_external/3rdparty/composer.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "files_external/3rdparty", - "description": "3rdparty components for files_external", - "license": "MIT", - "config": { - "vendor-dir": ".", - "optimize-autoloader": true, - "classmap-authoritative": true - }, - "require": { - "icewind/smb": "3.7.0", - "icewind/streams": "0.7.7" - } -} diff --git a/apps/files_external/3rdparty/composer.json.license b/apps/files_external/3rdparty/composer.json.license deleted file mode 100644 index 849ed02ad4b..00000000000 --- a/apps/files_external/3rdparty/composer.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors -SPDX-FileCopyrightText: 2014-2016 ownCloud, Inc. -SPDX-License-Identifier: AGPL-3.0-only
\ No newline at end of file diff --git a/apps/files_external/3rdparty/composer.lock b/apps/files_external/3rdparty/composer.lock deleted file mode 100644 index b0cf919de9c..00000000000 --- a/apps/files_external/3rdparty/composer.lock +++ /dev/null @@ -1,111 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "1b75bb2715ed2dae7d090ae40b9843a2", - "packages": [ - { - "name": "icewind/smb", - "version": "v3.7.0", - "source": { - "type": "git", - "url": "https://github.com/icewind1991/SMB.git", - "reference": "e6904cbe75f678335092f4861c60c656b1a99e84" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/icewind1991/SMB/zipball/e6904cbe75f678335092f4861c60c656b1a99e84", - "reference": "e6904cbe75f678335092f4861c60c656b1a99e84", - "shasum": "" - }, - "require": { - "icewind/streams": ">=0.7.3", - "php": ">=7.2" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.16", - "phpstan/phpstan": "^0.12.57", - "phpunit/phpunit": "^8.5|^9.3.8", - "psalm/phar": "^4.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Icewind\\SMB\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Robin Appelman", - "email": "icewind@owncloud.com" - } - ], - "description": "php wrapper for smbclient and libsmbclient-php", - "support": { - "issues": "https://github.com/icewind1991/SMB/issues", - "source": "https://github.com/icewind1991/SMB/tree/v3.7.0" - }, - "time": "2024-11-11T14:08:34+00:00" - }, - { - "name": "icewind/streams", - "version": "v0.7.7", - "source": { - "type": "git", - "url": "https://github.com/icewind1991/Streams.git", - "reference": "64200fd7cfcc7f550c3c695c48d8fd8bba97fecb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/icewind1991/Streams/zipball/64200fd7cfcc7f550c3c695c48d8fd8bba97fecb", - "reference": "64200fd7cfcc7f550c3c695c48d8fd8bba97fecb", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^9" - }, - "type": "library", - "autoload": { - "psr-4": { - "Icewind\\Streams\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Robin Appelman", - "email": "icewind@owncloud.com" - } - ], - "description": "A set of generic stream wrappers", - "support": { - "issues": "https://github.com/icewind1991/Streams/issues", - "source": "https://github.com/icewind1991/Streams/tree/v0.7.7" - }, - "time": "2023-03-16T14:52:25+00:00" - } - ], - "packages-dev": [], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": {}, - "prefer-stable": false, - "prefer-lowest": false, - "platform": {}, - "platform-dev": {}, - "plugin-api-version": "2.6.0" -} diff --git a/apps/files_external/3rdparty/composer.lock.license b/apps/files_external/3rdparty/composer.lock.license deleted file mode 100644 index 849ed02ad4b..00000000000 --- a/apps/files_external/3rdparty/composer.lock.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors -SPDX-FileCopyrightText: 2014-2016 ownCloud, Inc. -SPDX-License-Identifier: AGPL-3.0-only
\ No newline at end of file diff --git a/apps/files_external/3rdparty/composer/ClassLoader.php b/apps/files_external/3rdparty/composer/ClassLoader.php deleted file mode 100644 index 7824d8f7eaf..00000000000 --- a/apps/files_external/3rdparty/composer/ClassLoader.php +++ /dev/null @@ -1,579 +0,0 @@ -<?php - -/* - * This file is part of Composer. - * - * (c) Nils Adermann <naderman@naderman.de> - * Jordi Boggiano <j.boggiano@seld.be> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier <fabien@symfony.com> - * @author Jordi Boggiano <j.boggiano@seld.be> - * @see https://www.php-fig.org/psr/psr-0/ - * @see https://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - /** @var \Closure(string):void */ - private static $includeFile; - - /** @var string|null */ - private $vendorDir; - - // PSR-4 - /** - * @var array<string, array<string, int>> - */ - private $prefixLengthsPsr4 = array(); - /** - * @var array<string, list<string>> - */ - private $prefixDirsPsr4 = array(); - /** - * @var list<string> - */ - private $fallbackDirsPsr4 = array(); - - // PSR-0 - /** - * List of PSR-0 prefixes - * - * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) - * - * @var array<string, array<string, list<string>>> - */ - private $prefixesPsr0 = array(); - /** - * @var list<string> - */ - private $fallbackDirsPsr0 = array(); - - /** @var bool */ - private $useIncludePath = false; - - /** - * @var array<string, string> - */ - private $classMap = array(); - - /** @var bool */ - private $classMapAuthoritative = false; - - /** - * @var array<string, bool> - */ - private $missingClasses = array(); - - /** @var string|null */ - private $apcuPrefix; - - /** - * @var array<string, self> - */ - private static $registeredLoaders = array(); - - /** - * @param string|null $vendorDir - */ - public function __construct($vendorDir = null) - { - $this->vendorDir = $vendorDir; - self::initializeIncludeClosure(); - } - - /** - * @return array<string, list<string>> - */ - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); - } - - return array(); - } - - /** - * @return array<string, list<string>> - */ - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - /** - * @return list<string> - */ - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - /** - * @return list<string> - */ - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - /** - * @return array<string, string> Array of classname => path - */ - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param array<string, string> $classMap Class to filename map - * - * @return void - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param list<string>|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - * - * @return void - */ - public function add($prefix, $paths, $prepend = false) - { - $paths = (array) $paths; - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param list<string>|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - $paths = (array) $paths; - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param list<string>|string $paths The PSR-0 base directories - * - * @return void - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param list<string>|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - * - * @return void - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - * - * @return void - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - * - * @return void - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - * - * @return void - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - - if (null === $this->vendorDir) { - return; - } - - if ($prepend) { - self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; - } else { - unset(self::$registeredLoaders[$this->vendorDir]); - self::$registeredLoaders[$this->vendorDir] = $this; - } - } - - /** - * Unregisters this instance as an autoloader. - * - * @return void - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - - if (null !== $this->vendorDir) { - unset(self::$registeredLoaders[$this->vendorDir]); - } - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return true|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - $includeFile = self::$includeFile; - $includeFile($file); - - return true; - } - - return null; - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - /** - * Returns the currently registered loaders keyed by their corresponding vendor directories. - * - * @return array<string, self> - */ - public static function getRegisteredLoaders() - { - return self::$registeredLoaders; - } - - /** - * @param string $class - * @param string $ext - * @return string|false - */ - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath . '\\'; - if (isset($this->prefixDirsPsr4[$search])) { - $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); - foreach ($this->prefixDirsPsr4[$search] as $dir) { - if (file_exists($file = $dir . $pathEnd)) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } - - /** - * @return void - */ - private static function initializeIncludeClosure() - { - if (self::$includeFile !== null) { - return; - } - - /** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - */ - self::$includeFile = \Closure::bind(static function($file) { - include $file; - }, null, null); - } -} diff --git a/apps/files_external/3rdparty/composer/InstalledVersions.php b/apps/files_external/3rdparty/composer/InstalledVersions.php deleted file mode 100644 index 51e734a774b..00000000000 --- a/apps/files_external/3rdparty/composer/InstalledVersions.php +++ /dev/null @@ -1,359 +0,0 @@ -<?php - -/* - * This file is part of Composer. - * - * (c) Nils Adermann <naderman@naderman.de> - * Jordi Boggiano <j.boggiano@seld.be> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer; - -use Composer\Autoload\ClassLoader; -use Composer\Semver\VersionParser; - -/** - * This class is copied in every Composer installed project and available to all - * - * See also https://getcomposer.org/doc/07-runtime.md#installed-versions - * - * To require its presence, you can require `composer-runtime-api ^2.0` - * - * @final - */ -class InstalledVersions -{ - /** - * @var mixed[]|null - * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null - */ - private static $installed; - - /** - * @var bool|null - */ - private static $canGetVendors; - - /** - * @var array[] - * @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}> - */ - private static $installedByVendor = array(); - - /** - * Returns a list of all package names which are present, either by being installed, replaced or provided - * - * @return string[] - * @psalm-return list<string> - */ - public static function getInstalledPackages() - { - $packages = array(); - foreach (self::getInstalled() as $installed) { - $packages[] = array_keys($installed['versions']); - } - - if (1 === \count($packages)) { - return $packages[0]; - } - - return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); - } - - /** - * Returns a list of all package names with a specific type e.g. 'library' - * - * @param string $type - * @return string[] - * @psalm-return list<string> - */ - public static function getInstalledPackagesByType($type) - { - $packagesByType = array(); - - foreach (self::getInstalled() as $installed) { - foreach ($installed['versions'] as $name => $package) { - if (isset($package['type']) && $package['type'] === $type) { - $packagesByType[] = $name; - } - } - } - - return $packagesByType; - } - - /** - * Checks whether the given package is installed - * - * This also returns true if the package name is provided or replaced by another package - * - * @param string $packageName - * @param bool $includeDevRequirements - * @return bool - */ - public static function isInstalled($packageName, $includeDevRequirements = true) - { - foreach (self::getInstalled() as $installed) { - if (isset($installed['versions'][$packageName])) { - return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false; - } - } - - return false; - } - - /** - * Checks whether the given package satisfies a version constraint - * - * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: - * - * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') - * - * @param VersionParser $parser Install composer/semver to have access to this class and functionality - * @param string $packageName - * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package - * @return bool - */ - public static function satisfies(VersionParser $parser, $packageName, $constraint) - { - $constraint = $parser->parseConstraints((string) $constraint); - $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); - - return $provided->matches($constraint); - } - - /** - * Returns a version constraint representing all the range(s) which are installed for a given package - * - * It is easier to use this via isInstalled() with the $constraint argument if you need to check - * whether a given version of a package is installed, and not just whether it exists - * - * @param string $packageName - * @return string Version constraint usable with composer/semver - */ - public static function getVersionRanges($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - $ranges = array(); - if (isset($installed['versions'][$packageName]['pretty_version'])) { - $ranges[] = $installed['versions'][$packageName]['pretty_version']; - } - if (array_key_exists('aliases', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); - } - if (array_key_exists('replaced', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); - } - if (array_key_exists('provided', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); - } - - return implode(' || ', $ranges); - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['version'])) { - return null; - } - - return $installed['versions'][$packageName]['version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getPrettyVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['pretty_version'])) { - return null; - } - - return $installed['versions'][$packageName]['pretty_version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference - */ - public static function getReference($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['reference'])) { - return null; - } - - return $installed['versions'][$packageName]['reference']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. - */ - public static function getInstallPath($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @return array - * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} - */ - public static function getRootPackage() - { - $installed = self::getInstalled(); - - return $installed[0]['root']; - } - - /** - * Returns the raw installed.php data for custom implementations - * - * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. - * @return array[] - * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} - */ - public static function getRawData() - { - @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - self::$installed = include __DIR__ . '/installed.php'; - } else { - self::$installed = array(); - } - } - - return self::$installed; - } - - /** - * Returns the raw data of all installed.php which are currently loaded for custom implementations - * - * @return array[] - * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}> - */ - public static function getAllRawData() - { - return self::getInstalled(); - } - - /** - * Lets you reload the static array from another file - * - * This is only useful for complex integrations in which a project needs to use - * this class but then also needs to execute another project's autoloader in process, - * and wants to ensure both projects have access to their version of installed.php. - * - * A typical case would be PHPUnit, where it would need to make sure it reads all - * the data it needs from this class, then call reload() with - * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure - * the project in which it runs can then also use this class safely, without - * interference between PHPUnit's dependencies and the project's dependencies. - * - * @param array[] $data A vendor/composer/installed.php data set - * @return void - * - * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data - */ - public static function reload($data) - { - self::$installed = $data; - self::$installedByVendor = array(); - } - - /** - * @return array[] - * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}> - */ - private static function getInstalled() - { - if (null === self::$canGetVendors) { - self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); - } - - $installed = array(); - - if (self::$canGetVendors) { - foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { - if (isset(self::$installedByVendor[$vendorDir])) { - $installed[] = self::$installedByVendor[$vendorDir]; - } elseif (is_file($vendorDir.'/composer/installed.php')) { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */ - $required = require $vendorDir.'/composer/installed.php'; - $installed[] = self::$installedByVendor[$vendorDir] = $required; - if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { - self::$installed = $installed[count($installed) - 1]; - } - } - } - } - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */ - $required = require __DIR__ . '/installed.php'; - self::$installed = $required; - } else { - self::$installed = array(); - } - } - - if (self::$installed !== array()) { - $installed[] = self::$installed; - } - - return $installed; - } -} diff --git a/apps/files_external/3rdparty/composer/LICENSE b/apps/files_external/3rdparty/composer/LICENSE deleted file mode 100644 index 62ecfd8d004..00000000000 --- a/apps/files_external/3rdparty/composer/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) Nils Adermann, Jordi Boggiano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/apps/files_external/3rdparty/composer/autoload_classmap.php b/apps/files_external/3rdparty/composer/autoload_classmap.php deleted file mode 100644 index 8ed82b84023..00000000000 --- a/apps/files_external/3rdparty/composer/autoload_classmap.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php - -// autoload_classmap.php @generated by Composer - -$vendorDir = dirname(__DIR__); -$baseDir = $vendorDir; - -return array( - 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', - 'Icewind\\SMB\\ACL' => $vendorDir . '/icewind/smb/src/ACL.php', - 'Icewind\\SMB\\AbstractServer' => $vendorDir . '/icewind/smb/src/AbstractServer.php', - 'Icewind\\SMB\\AbstractShare' => $vendorDir . '/icewind/smb/src/AbstractShare.php', - 'Icewind\\SMB\\AnonymousAuth' => $vendorDir . '/icewind/smb/src/AnonymousAuth.php', - 'Icewind\\SMB\\BasicAuth' => $vendorDir . '/icewind/smb/src/BasicAuth.php', - 'Icewind\\SMB\\Change' => $vendorDir . '/icewind/smb/src/Change.php', - 'Icewind\\SMB\\Exception\\AccessDeniedException' => $vendorDir . '/icewind/smb/src/Exception/AccessDeniedException.php', - 'Icewind\\SMB\\Exception\\AlreadyExistsException' => $vendorDir . '/icewind/smb/src/Exception/AlreadyExistsException.php', - 'Icewind\\SMB\\Exception\\AuthenticationException' => $vendorDir . '/icewind/smb/src/Exception/AuthenticationException.php', - 'Icewind\\SMB\\Exception\\ConnectException' => $vendorDir . '/icewind/smb/src/Exception/ConnectException.php', - 'Icewind\\SMB\\Exception\\ConnectionAbortedException' => $vendorDir . '/icewind/smb/src/Exception/ConnectionAbortedException.php', - 'Icewind\\SMB\\Exception\\ConnectionException' => $vendorDir . '/icewind/smb/src/Exception/ConnectionException.php', - 'Icewind\\SMB\\Exception\\ConnectionRefusedException' => $vendorDir . '/icewind/smb/src/Exception/ConnectionRefusedException.php', - 'Icewind\\SMB\\Exception\\ConnectionResetException' => $vendorDir . '/icewind/smb/src/Exception/ConnectionResetException.php', - 'Icewind\\SMB\\Exception\\DependencyException' => $vendorDir . '/icewind/smb/src/Exception/DependencyException.php', - 'Icewind\\SMB\\Exception\\Exception' => $vendorDir . '/icewind/smb/src/Exception/Exception.php', - 'Icewind\\SMB\\Exception\\FileInUseException' => $vendorDir . '/icewind/smb/src/Exception/FileInUseException.php', - 'Icewind\\SMB\\Exception\\ForbiddenException' => $vendorDir . '/icewind/smb/src/Exception/ForbiddenException.php', - 'Icewind\\SMB\\Exception\\HostDownException' => $vendorDir . '/icewind/smb/src/Exception/HostDownException.php', - 'Icewind\\SMB\\Exception\\InvalidArgumentException' => $vendorDir . '/icewind/smb/src/Exception/InvalidArgumentException.php', - 'Icewind\\SMB\\Exception\\InvalidHostException' => $vendorDir . '/icewind/smb/src/Exception/InvalidHostException.php', - 'Icewind\\SMB\\Exception\\InvalidParameterException' => $vendorDir . '/icewind/smb/src/Exception/InvalidParameterException.php', - 'Icewind\\SMB\\Exception\\InvalidPathException' => $vendorDir . '/icewind/smb/src/Exception/InvalidPathException.php', - 'Icewind\\SMB\\Exception\\InvalidRequestException' => $vendorDir . '/icewind/smb/src/Exception/InvalidRequestException.php', - 'Icewind\\SMB\\Exception\\InvalidResourceException' => $vendorDir . '/icewind/smb/src/Exception/InvalidResourceException.php', - 'Icewind\\SMB\\Exception\\InvalidTicket' => $vendorDir . '/icewind/smb/src/Exception/InvalidTicket.php', - 'Icewind\\SMB\\Exception\\InvalidTypeException' => $vendorDir . '/icewind/smb/src/Exception/InvalidTypeException.php', - 'Icewind\\SMB\\Exception\\NoLoginServerException' => $vendorDir . '/icewind/smb/src/Exception/NoLoginServerException.php', - 'Icewind\\SMB\\Exception\\NoRouteToHostException' => $vendorDir . '/icewind/smb/src/Exception/NoRouteToHostException.php', - 'Icewind\\SMB\\Exception\\NotEmptyException' => $vendorDir . '/icewind/smb/src/Exception/NotEmptyException.php', - 'Icewind\\SMB\\Exception\\NotFoundException' => $vendorDir . '/icewind/smb/src/Exception/NotFoundException.php', - 'Icewind\\SMB\\Exception\\OutOfSpaceException' => $vendorDir . '/icewind/smb/src/Exception/OutOfSpaceException.php', - 'Icewind\\SMB\\Exception\\RevisionMismatchException' => $vendorDir . '/icewind/smb/src/Exception/RevisionMismatchException.php', - 'Icewind\\SMB\\Exception\\TimedOutException' => $vendorDir . '/icewind/smb/src/Exception/TimedOutException.php', - 'Icewind\\SMB\\IAuth' => $vendorDir . '/icewind/smb/src/IAuth.php', - 'Icewind\\SMB\\IFileInfo' => $vendorDir . '/icewind/smb/src/IFileInfo.php', - 'Icewind\\SMB\\INotifyHandler' => $vendorDir . '/icewind/smb/src/INotifyHandler.php', - 'Icewind\\SMB\\IOptions' => $vendorDir . '/icewind/smb/src/IOptions.php', - 'Icewind\\SMB\\IServer' => $vendorDir . '/icewind/smb/src/IServer.php', - 'Icewind\\SMB\\IShare' => $vendorDir . '/icewind/smb/src/IShare.php', - 'Icewind\\SMB\\ISystem' => $vendorDir . '/icewind/smb/src/ISystem.php', - 'Icewind\\SMB\\ITimeZoneProvider' => $vendorDir . '/icewind/smb/src/ITimeZoneProvider.php', - 'Icewind\\SMB\\KerberosApacheAuth' => $vendorDir . '/icewind/smb/src/KerberosApacheAuth.php', - 'Icewind\\SMB\\KerberosAuth' => $vendorDir . '/icewind/smb/src/KerberosAuth.php', - 'Icewind\\SMB\\KerberosTicket' => $vendorDir . '/icewind/smb/src/KerberosTicket.php', - 'Icewind\\SMB\\Native\\NativeFileInfo' => $vendorDir . '/icewind/smb/src/Native/NativeFileInfo.php', - 'Icewind\\SMB\\Native\\NativeReadStream' => $vendorDir . '/icewind/smb/src/Native/NativeReadStream.php', - 'Icewind\\SMB\\Native\\NativeServer' => $vendorDir . '/icewind/smb/src/Native/NativeServer.php', - 'Icewind\\SMB\\Native\\NativeShare' => $vendorDir . '/icewind/smb/src/Native/NativeShare.php', - 'Icewind\\SMB\\Native\\NativeState' => $vendorDir . '/icewind/smb/src/Native/NativeState.php', - 'Icewind\\SMB\\Native\\NativeStream' => $vendorDir . '/icewind/smb/src/Native/NativeStream.php', - 'Icewind\\SMB\\Native\\NativeWriteStream' => $vendorDir . '/icewind/smb/src/Native/NativeWriteStream.php', - 'Icewind\\SMB\\Options' => $vendorDir . '/icewind/smb/src/Options.php', - 'Icewind\\SMB\\ServerFactory' => $vendorDir . '/icewind/smb/src/ServerFactory.php', - 'Icewind\\SMB\\StringBuffer' => $vendorDir . '/icewind/smb/src/StringBuffer.php', - 'Icewind\\SMB\\System' => $vendorDir . '/icewind/smb/src/System.php', - 'Icewind\\SMB\\TimeZoneProvider' => $vendorDir . '/icewind/smb/src/TimeZoneProvider.php', - 'Icewind\\SMB\\Wrapped\\Connection' => $vendorDir . '/icewind/smb/src/Wrapped/Connection.php', - 'Icewind\\SMB\\Wrapped\\ErrorCodes' => $vendorDir . '/icewind/smb/src/Wrapped/ErrorCodes.php', - 'Icewind\\SMB\\Wrapped\\FileInfo' => $vendorDir . '/icewind/smb/src/Wrapped/FileInfo.php', - 'Icewind\\SMB\\Wrapped\\NotifyHandler' => $vendorDir . '/icewind/smb/src/Wrapped/NotifyHandler.php', - 'Icewind\\SMB\\Wrapped\\Parser' => $vendorDir . '/icewind/smb/src/Wrapped/Parser.php', - 'Icewind\\SMB\\Wrapped\\RawConnection' => $vendorDir . '/icewind/smb/src/Wrapped/RawConnection.php', - 'Icewind\\SMB\\Wrapped\\Server' => $vendorDir . '/icewind/smb/src/Wrapped/Server.php', - 'Icewind\\SMB\\Wrapped\\Share' => $vendorDir . '/icewind/smb/src/Wrapped/Share.php', - 'Icewind\\Streams\\CallbackWrapper' => $vendorDir . '/icewind/streams/src/CallbackWrapper.php', - 'Icewind\\Streams\\CountWrapper' => $vendorDir . '/icewind/streams/src/CountWrapper.php', - 'Icewind\\Streams\\Directory' => $vendorDir . '/icewind/streams/src/Directory.php', - 'Icewind\\Streams\\DirectoryFilter' => $vendorDir . '/icewind/streams/src/DirectoryFilter.php', - 'Icewind\\Streams\\DirectoryWrapper' => $vendorDir . '/icewind/streams/src/DirectoryWrapper.php', - 'Icewind\\Streams\\File' => $vendorDir . '/icewind/streams/src/File.php', - 'Icewind\\Streams\\HashWrapper' => $vendorDir . '/icewind/streams/src/HashWrapper.php', - 'Icewind\\Streams\\IteratorDirectory' => $vendorDir . '/icewind/streams/src/IteratorDirectory.php', - 'Icewind\\Streams\\NullWrapper' => $vendorDir . '/icewind/streams/src/NullWrapper.php', - 'Icewind\\Streams\\Path' => $vendorDir . '/icewind/streams/src/Path.php', - 'Icewind\\Streams\\PathWrapper' => $vendorDir . '/icewind/streams/src/PathWrapper.php', - 'Icewind\\Streams\\ReadHashWrapper' => $vendorDir . '/icewind/streams/src/ReadHashWrapper.php', - 'Icewind\\Streams\\RetryWrapper' => $vendorDir . '/icewind/streams/src/RetryWrapper.php', - 'Icewind\\Streams\\SeekableWrapper' => $vendorDir . '/icewind/streams/src/SeekableWrapper.php', - 'Icewind\\Streams\\Url' => $vendorDir . '/icewind/streams/src/Url.php', - 'Icewind\\Streams\\UrlCallback' => $vendorDir . '/icewind/streams/src/UrlCallback.php', - 'Icewind\\Streams\\Wrapper' => $vendorDir . '/icewind/streams/src/Wrapper.php', - 'Icewind\\Streams\\WrapperHandler' => $vendorDir . '/icewind/streams/src/WrapperHandler.php', - 'Icewind\\Streams\\WriteHashWrapper' => $vendorDir . '/icewind/streams/src/WriteHashWrapper.php', -); diff --git a/apps/files_external/3rdparty/composer/autoload_namespaces.php b/apps/files_external/3rdparty/composer/autoload_namespaces.php deleted file mode 100644 index 3f5c9296251..00000000000 --- a/apps/files_external/3rdparty/composer/autoload_namespaces.php +++ /dev/null @@ -1,9 +0,0 @@ -<?php - -// autoload_namespaces.php @generated by Composer - -$vendorDir = dirname(__DIR__); -$baseDir = $vendorDir; - -return array( -); diff --git a/apps/files_external/3rdparty/composer/autoload_psr4.php b/apps/files_external/3rdparty/composer/autoload_psr4.php deleted file mode 100644 index 6bed531ed31..00000000000 --- a/apps/files_external/3rdparty/composer/autoload_psr4.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -// autoload_psr4.php @generated by Composer - -$vendorDir = dirname(__DIR__); -$baseDir = $vendorDir; - -return array( - 'Icewind\\Streams\\' => array($vendorDir . '/icewind/streams/src'), - 'Icewind\\SMB\\' => array($vendorDir . '/icewind/smb/src'), -); diff --git a/apps/files_external/3rdparty/composer/autoload_real.php b/apps/files_external/3rdparty/composer/autoload_real.php deleted file mode 100644 index 5eccc1e1cf6..00000000000 --- a/apps/files_external/3rdparty/composer/autoload_real.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - -// autoload_real.php @generated by Composer - -class ComposerAutoloaderInit98fe9b281934250b3a93f69a5ce843b3 -{ - private static $loader; - - public static function loadClassLoader($class) - { - if ('Composer\Autoload\ClassLoader' === $class) { - require __DIR__ . '/ClassLoader.php'; - } - } - - /** - * @return \Composer\Autoload\ClassLoader - */ - public static function getLoader() - { - if (null !== self::$loader) { - return self::$loader; - } - - require __DIR__ . '/platform_check.php'; - - spl_autoload_register(array('ComposerAutoloaderInit98fe9b281934250b3a93f69a5ce843b3', 'loadClassLoader'), true, true); - self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInit98fe9b281934250b3a93f69a5ce843b3', 'loadClassLoader')); - - require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3::getInitializer($loader)); - - $loader->setClassMapAuthoritative(true); - $loader->register(true); - - return $loader; - } -} diff --git a/apps/files_external/3rdparty/composer/autoload_static.php b/apps/files_external/3rdparty/composer/autoload_static.php deleted file mode 100644 index 75b1adaa17b..00000000000 --- a/apps/files_external/3rdparty/composer/autoload_static.php +++ /dev/null @@ -1,125 +0,0 @@ -<?php - -// autoload_static.php @generated by Composer - -namespace Composer\Autoload; - -class ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3 -{ - public static $prefixLengthsPsr4 = array ( - 'I' => - array ( - 'Icewind\\Streams\\' => 16, - 'Icewind\\SMB\\' => 12, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'Icewind\\Streams\\' => - array ( - 0 => __DIR__ . '/..' . '/icewind/streams/src', - ), - 'Icewind\\SMB\\' => - array ( - 0 => __DIR__ . '/..' . '/icewind/smb/src', - ), - ); - - public static $classMap = array ( - 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', - 'Icewind\\SMB\\ACL' => __DIR__ . '/..' . '/icewind/smb/src/ACL.php', - 'Icewind\\SMB\\AbstractServer' => __DIR__ . '/..' . '/icewind/smb/src/AbstractServer.php', - 'Icewind\\SMB\\AbstractShare' => __DIR__ . '/..' . '/icewind/smb/src/AbstractShare.php', - 'Icewind\\SMB\\AnonymousAuth' => __DIR__ . '/..' . '/icewind/smb/src/AnonymousAuth.php', - 'Icewind\\SMB\\BasicAuth' => __DIR__ . '/..' . '/icewind/smb/src/BasicAuth.php', - 'Icewind\\SMB\\Change' => __DIR__ . '/..' . '/icewind/smb/src/Change.php', - 'Icewind\\SMB\\Exception\\AccessDeniedException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/AccessDeniedException.php', - 'Icewind\\SMB\\Exception\\AlreadyExistsException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/AlreadyExistsException.php', - 'Icewind\\SMB\\Exception\\AuthenticationException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/AuthenticationException.php', - 'Icewind\\SMB\\Exception\\ConnectException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ConnectException.php', - 'Icewind\\SMB\\Exception\\ConnectionAbortedException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ConnectionAbortedException.php', - 'Icewind\\SMB\\Exception\\ConnectionException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ConnectionException.php', - 'Icewind\\SMB\\Exception\\ConnectionRefusedException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ConnectionRefusedException.php', - 'Icewind\\SMB\\Exception\\ConnectionResetException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ConnectionResetException.php', - 'Icewind\\SMB\\Exception\\DependencyException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/DependencyException.php', - 'Icewind\\SMB\\Exception\\Exception' => __DIR__ . '/..' . '/icewind/smb/src/Exception/Exception.php', - 'Icewind\\SMB\\Exception\\FileInUseException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/FileInUseException.php', - 'Icewind\\SMB\\Exception\\ForbiddenException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ForbiddenException.php', - 'Icewind\\SMB\\Exception\\HostDownException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/HostDownException.php', - 'Icewind\\SMB\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidArgumentException.php', - 'Icewind\\SMB\\Exception\\InvalidHostException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidHostException.php', - 'Icewind\\SMB\\Exception\\InvalidParameterException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidParameterException.php', - 'Icewind\\SMB\\Exception\\InvalidPathException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidPathException.php', - 'Icewind\\SMB\\Exception\\InvalidRequestException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidRequestException.php', - 'Icewind\\SMB\\Exception\\InvalidResourceException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidResourceException.php', - 'Icewind\\SMB\\Exception\\InvalidTicket' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidTicket.php', - 'Icewind\\SMB\\Exception\\InvalidTypeException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidTypeException.php', - 'Icewind\\SMB\\Exception\\NoLoginServerException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/NoLoginServerException.php', - 'Icewind\\SMB\\Exception\\NoRouteToHostException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/NoRouteToHostException.php', - 'Icewind\\SMB\\Exception\\NotEmptyException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/NotEmptyException.php', - 'Icewind\\SMB\\Exception\\NotFoundException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/NotFoundException.php', - 'Icewind\\SMB\\Exception\\OutOfSpaceException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/OutOfSpaceException.php', - 'Icewind\\SMB\\Exception\\RevisionMismatchException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/RevisionMismatchException.php', - 'Icewind\\SMB\\Exception\\TimedOutException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/TimedOutException.php', - 'Icewind\\SMB\\IAuth' => __DIR__ . '/..' . '/icewind/smb/src/IAuth.php', - 'Icewind\\SMB\\IFileInfo' => __DIR__ . '/..' . '/icewind/smb/src/IFileInfo.php', - 'Icewind\\SMB\\INotifyHandler' => __DIR__ . '/..' . '/icewind/smb/src/INotifyHandler.php', - 'Icewind\\SMB\\IOptions' => __DIR__ . '/..' . '/icewind/smb/src/IOptions.php', - 'Icewind\\SMB\\IServer' => __DIR__ . '/..' . '/icewind/smb/src/IServer.php', - 'Icewind\\SMB\\IShare' => __DIR__ . '/..' . '/icewind/smb/src/IShare.php', - 'Icewind\\SMB\\ISystem' => __DIR__ . '/..' . '/icewind/smb/src/ISystem.php', - 'Icewind\\SMB\\ITimeZoneProvider' => __DIR__ . '/..' . '/icewind/smb/src/ITimeZoneProvider.php', - 'Icewind\\SMB\\KerberosApacheAuth' => __DIR__ . '/..' . '/icewind/smb/src/KerberosApacheAuth.php', - 'Icewind\\SMB\\KerberosAuth' => __DIR__ . '/..' . '/icewind/smb/src/KerberosAuth.php', - 'Icewind\\SMB\\KerberosTicket' => __DIR__ . '/..' . '/icewind/smb/src/KerberosTicket.php', - 'Icewind\\SMB\\Native\\NativeFileInfo' => __DIR__ . '/..' . '/icewind/smb/src/Native/NativeFileInfo.php', - 'Icewind\\SMB\\Native\\NativeReadStream' => __DIR__ . '/..' . '/icewind/smb/src/Native/NativeReadStream.php', - 'Icewind\\SMB\\Native\\NativeServer' => __DIR__ . '/..' . '/icewind/smb/src/Native/NativeServer.php', - 'Icewind\\SMB\\Native\\NativeShare' => __DIR__ . '/..' . '/icewind/smb/src/Native/NativeShare.php', - 'Icewind\\SMB\\Native\\NativeState' => __DIR__ . '/..' . '/icewind/smb/src/Native/NativeState.php', - 'Icewind\\SMB\\Native\\NativeStream' => __DIR__ . '/..' . '/icewind/smb/src/Native/NativeStream.php', - 'Icewind\\SMB\\Native\\NativeWriteStream' => __DIR__ . '/..' . '/icewind/smb/src/Native/NativeWriteStream.php', - 'Icewind\\SMB\\Options' => __DIR__ . '/..' . '/icewind/smb/src/Options.php', - 'Icewind\\SMB\\ServerFactory' => __DIR__ . '/..' . '/icewind/smb/src/ServerFactory.php', - 'Icewind\\SMB\\StringBuffer' => __DIR__ . '/..' . '/icewind/smb/src/StringBuffer.php', - 'Icewind\\SMB\\System' => __DIR__ . '/..' . '/icewind/smb/src/System.php', - 'Icewind\\SMB\\TimeZoneProvider' => __DIR__ . '/..' . '/icewind/smb/src/TimeZoneProvider.php', - 'Icewind\\SMB\\Wrapped\\Connection' => __DIR__ . '/..' . '/icewind/smb/src/Wrapped/Connection.php', - 'Icewind\\SMB\\Wrapped\\ErrorCodes' => __DIR__ . '/..' . '/icewind/smb/src/Wrapped/ErrorCodes.php', - 'Icewind\\SMB\\Wrapped\\FileInfo' => __DIR__ . '/..' . '/icewind/smb/src/Wrapped/FileInfo.php', - 'Icewind\\SMB\\Wrapped\\NotifyHandler' => __DIR__ . '/..' . '/icewind/smb/src/Wrapped/NotifyHandler.php', - 'Icewind\\SMB\\Wrapped\\Parser' => __DIR__ . '/..' . '/icewind/smb/src/Wrapped/Parser.php', - 'Icewind\\SMB\\Wrapped\\RawConnection' => __DIR__ . '/..' . '/icewind/smb/src/Wrapped/RawConnection.php', - 'Icewind\\SMB\\Wrapped\\Server' => __DIR__ . '/..' . '/icewind/smb/src/Wrapped/Server.php', - 'Icewind\\SMB\\Wrapped\\Share' => __DIR__ . '/..' . '/icewind/smb/src/Wrapped/Share.php', - 'Icewind\\Streams\\CallbackWrapper' => __DIR__ . '/..' . '/icewind/streams/src/CallbackWrapper.php', - 'Icewind\\Streams\\CountWrapper' => __DIR__ . '/..' . '/icewind/streams/src/CountWrapper.php', - 'Icewind\\Streams\\Directory' => __DIR__ . '/..' . '/icewind/streams/src/Directory.php', - 'Icewind\\Streams\\DirectoryFilter' => __DIR__ . '/..' . '/icewind/streams/src/DirectoryFilter.php', - 'Icewind\\Streams\\DirectoryWrapper' => __DIR__ . '/..' . '/icewind/streams/src/DirectoryWrapper.php', - 'Icewind\\Streams\\File' => __DIR__ . '/..' . '/icewind/streams/src/File.php', - 'Icewind\\Streams\\HashWrapper' => __DIR__ . '/..' . '/icewind/streams/src/HashWrapper.php', - 'Icewind\\Streams\\IteratorDirectory' => __DIR__ . '/..' . '/icewind/streams/src/IteratorDirectory.php', - 'Icewind\\Streams\\NullWrapper' => __DIR__ . '/..' . '/icewind/streams/src/NullWrapper.php', - 'Icewind\\Streams\\Path' => __DIR__ . '/..' . '/icewind/streams/src/Path.php', - 'Icewind\\Streams\\PathWrapper' => __DIR__ . '/..' . '/icewind/streams/src/PathWrapper.php', - 'Icewind\\Streams\\ReadHashWrapper' => __DIR__ . '/..' . '/icewind/streams/src/ReadHashWrapper.php', - 'Icewind\\Streams\\RetryWrapper' => __DIR__ . '/..' . '/icewind/streams/src/RetryWrapper.php', - 'Icewind\\Streams\\SeekableWrapper' => __DIR__ . '/..' . '/icewind/streams/src/SeekableWrapper.php', - 'Icewind\\Streams\\Url' => __DIR__ . '/..' . '/icewind/streams/src/Url.php', - 'Icewind\\Streams\\UrlCallback' => __DIR__ . '/..' . '/icewind/streams/src/UrlCallback.php', - 'Icewind\\Streams\\Wrapper' => __DIR__ . '/..' . '/icewind/streams/src/Wrapper.php', - 'Icewind\\Streams\\WrapperHandler' => __DIR__ . '/..' . '/icewind/streams/src/WrapperHandler.php', - 'Icewind\\Streams\\WriteHashWrapper' => __DIR__ . '/..' . '/icewind/streams/src/WriteHashWrapper.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3::$classMap; - - }, null, ClassLoader::class); - } -} diff --git a/apps/files_external/3rdparty/composer/installed.json b/apps/files_external/3rdparty/composer/installed.json deleted file mode 100644 index 275a586f4fb..00000000000 --- a/apps/files_external/3rdparty/composer/installed.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "packages": [ - { - "name": "icewind/smb", - "version": "v3.7.0", - "version_normalized": "3.7.0.0", - "source": { - "type": "git", - "url": "https://github.com/icewind1991/SMB.git", - "reference": "e6904cbe75f678335092f4861c60c656b1a99e84" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/icewind1991/SMB/zipball/e6904cbe75f678335092f4861c60c656b1a99e84", - "reference": "e6904cbe75f678335092f4861c60c656b1a99e84", - "shasum": "" - }, - "require": { - "icewind/streams": ">=0.7.3", - "php": ">=7.2" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.16", - "phpstan/phpstan": "^0.12.57", - "phpunit/phpunit": "^8.5|^9.3.8", - "psalm/phar": "^4.3" - }, - "time": "2024-11-11T14:08:34+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Icewind\\SMB\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Robin Appelman", - "email": "icewind@owncloud.com" - } - ], - "description": "php wrapper for smbclient and libsmbclient-php", - "support": { - "issues": "https://github.com/icewind1991/SMB/issues", - "source": "https://github.com/icewind1991/SMB/tree/v3.7.0" - }, - "install-path": "../icewind/smb" - }, - { - "name": "icewind/streams", - "version": "v0.7.7", - "version_normalized": "0.7.7.0", - "source": { - "type": "git", - "url": "https://github.com/icewind1991/Streams.git", - "reference": "64200fd7cfcc7f550c3c695c48d8fd8bba97fecb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/icewind1991/Streams/zipball/64200fd7cfcc7f550c3c695c48d8fd8bba97fecb", - "reference": "64200fd7cfcc7f550c3c695c48d8fd8bba97fecb", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^9" - }, - "time": "2023-03-16T14:52:25+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Icewind\\Streams\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Robin Appelman", - "email": "icewind@owncloud.com" - } - ], - "description": "A set of generic stream wrappers", - "support": { - "issues": "https://github.com/icewind1991/Streams/issues", - "source": "https://github.com/icewind1991/Streams/tree/v0.7.7" - }, - "install-path": "../icewind/streams" - } - ], - "dev": true, - "dev-package-names": [] -} diff --git a/apps/files_external/3rdparty/composer/installed.php b/apps/files_external/3rdparty/composer/installed.php deleted file mode 100644 index 12058ec9474..00000000000 --- a/apps/files_external/3rdparty/composer/installed.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php return array( - 'root' => array( - 'name' => 'files_external/3rdparty', - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'reference' => '101c7575ae7684a572e53740c63635cd12685995', - 'type' => 'library', - 'install_path' => __DIR__ . '/../', - 'aliases' => array(), - 'dev' => true, - ), - 'versions' => array( - 'files_external/3rdparty' => array( - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'reference' => '101c7575ae7684a572e53740c63635cd12685995', - 'type' => 'library', - 'install_path' => __DIR__ . '/../', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'icewind/smb' => array( - 'pretty_version' => 'v3.7.0', - 'version' => '3.7.0.0', - 'reference' => 'e6904cbe75f678335092f4861c60c656b1a99e84', - 'type' => 'library', - 'install_path' => __DIR__ . '/../icewind/smb', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'icewind/streams' => array( - 'pretty_version' => 'v0.7.7', - 'version' => '0.7.7.0', - 'reference' => '64200fd7cfcc7f550c3c695c48d8fd8bba97fecb', - 'type' => 'library', - 'install_path' => __DIR__ . '/../icewind/streams', - 'aliases' => array(), - 'dev_requirement' => false, - ), - ), -); diff --git a/apps/files_external/3rdparty/composer/platform_check.php b/apps/files_external/3rdparty/composer/platform_check.php deleted file mode 100644 index 589e9e770b9..00000000000 --- a/apps/files_external/3rdparty/composer/platform_check.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -// platform_check.php @generated by Composer - -$issues = array(); - -if (!(PHP_VERSION_ID >= 70200)) { - $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.'; -} - -if ($issues) { - if (!headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - } - if (!ini_get('display_errors')) { - if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { - fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); - } elseif (!headers_sent()) { - echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; - } - } - trigger_error( - 'Composer detected issues in your platform: ' . implode(' ', $issues), - E_USER_ERROR - ); -} diff --git a/apps/files_external/3rdparty/icewind/smb/.gitignore b/apps/files_external/3rdparty/icewind/smb/.gitignore deleted file mode 100644 index 5c8c3eecba4..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# SPDX-FileCopyrightText: 2012 Robin Appelman <robin@icewind.nl> -# SPDX-License-Identifier: MIT -.idea -vendor -composer.lock -.php_cs.cache -listen.php -test.php -*.cache
\ No newline at end of file diff --git a/apps/files_external/3rdparty/icewind/smb/.php_cs.dist b/apps/files_external/3rdparty/icewind/smb/.php_cs.dist deleted file mode 100644 index e37135fcb7b..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/.php_cs.dist +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -/** - * SPDX-FileCopyrightText: 2018 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -$finder = PhpCsFixer\Finder::create() - ->exclude('vendor') - ->in(__DIR__) -; -return PhpCsFixer\Config::create() - ->setRules([ - '@PSR2' => true, - 'array_syntax' => ['syntax' => 'short'], - 'braces' => ['position_after_functions_and_oop_constructs' => 'same'], - 'binary_operator_spaces' => ['align_double_arrow' => true, 'align_equals' => false], - ]) - ->setIndent("\t") - ->setFinder($finder) - ; diff --git a/apps/files_external/3rdparty/icewind/smb/LICENSE.txt b/apps/files_external/3rdparty/icewind/smb/LICENSE.txt deleted file mode 100644 index fa0495d94c3..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/LICENSE.txt +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2014 Robin Appelman <robin@icewind.nl> - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/apps/files_external/3rdparty/icewind/smb/LICENSES/AGPL-3.0-or-later.txt b/apps/files_external/3rdparty/icewind/smb/LICENSES/AGPL-3.0-or-later.txt deleted file mode 100644 index 0c97efd25b5..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/LICENSES/AGPL-3.0-or-later.txt +++ /dev/null @@ -1,235 +0,0 @@ -GNU AFFERO GENERAL PUBLIC LICENSE -Version 3, 19 November 2007 - -Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - - Preamble - -The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software. - -The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. - -When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. - -Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software. - -A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public. - -The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version. - -An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license. - -The precise terms and conditions for copying, distribution and modification follow. - - TERMS AND CONDITIONS - -0. Definitions. - -"This License" refers to version 3 of the GNU Affero General Public License. - -"Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. - -"The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. - -To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. - -A "covered work" means either the unmodified Program or a work based on the Program. - -To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. - -To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. - -An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. - -1. Source Code. -The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. - -A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. - -The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. - -The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those -subprograms and other parts of the work. - -The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. - -The Corresponding Source for a work in source code form is that same work. - -2. Basic Permissions. -All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. - -You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. - -Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. - -3. Protecting Users' Legal Rights From Anti-Circumvention Law. -No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. - -When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. - -4. Conveying Verbatim Copies. -You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. - -You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. - -5. Conveying Modified Source Versions. -You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". - - c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. - -A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. - -6. Conveying Non-Source Forms. -You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: - - a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. - - d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. - -A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. - -A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. - -"Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. - -If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). - -The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. - -Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. - -7. Additional Terms. -"Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. - -When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. - -Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or authors of the material; or - - e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. - -All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. - -If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. - -Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. - -8. Termination. - -You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). - -However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. - -Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. - -Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. - -9. Acceptance Not Required for Having Copies. - -You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. - -10. Automatic Licensing of Downstream Recipients. - -Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. - -An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. - -You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. - -11. Patents. - -A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". - -A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. - -Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. - -In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. - -If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. - -If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. - -A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. - -Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. - -12. No Surrender of Others' Freedom. - -If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. - -13. Remote Network Interaction; Use with the GNU General Public License. - -Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph. - -Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License. - -14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation. - -If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. - -Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. - -15. Disclaimer of Warranty. - -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -16. Limitation of Liability. - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -17. Interpretation of Sections 15 and 16. - -If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. - -END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. - -Also add information on how to contact you by electronic and paper mail. - -If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements. - -You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see <http://www.gnu.org/licenses/>. diff --git a/apps/files_external/3rdparty/icewind/smb/LICENSES/CC0-1.0.txt b/apps/files_external/3rdparty/icewind/smb/LICENSES/CC0-1.0.txt deleted file mode 100644 index 0e259d42c99..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/LICENSES/CC0-1.0.txt +++ /dev/null @@ -1,121 +0,0 @@ -Creative Commons Legal Code - -CC0 1.0 Universal - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS - PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM - THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED - HEREUNDER. - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer -exclusive Copyright and Related Rights (defined below) upon the creator -and subsequent owner(s) (each and all, an "owner") of an original work of -authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for -the purpose of contributing to a commons of creative, cultural and -scientific works ("Commons") that the public can reliably and without fear -of later claims of infringement build upon, modify, incorporate in other -works, reuse and redistribute as freely as possible in any form whatsoever -and for any purposes, including without limitation commercial purposes. -These owners may contribute to the Commons to promote the ideal of a free -culture and the further production of creative, cultural and scientific -works, or to gain reputation or greater distribution for their Work in -part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any -expectation of additional consideration or compensation, the person -associating CC0 with a Work (the "Affirmer"), to the extent that he or she -is an owner of Copyright and Related Rights in the Work, voluntarily -elects to apply CC0 to the Work and publicly distribute the Work under its -terms, with knowledge of his or her Copyright and Related Rights in the -Work and the meaning and intended legal effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be -protected by copyright and related or neighboring rights ("Copyright and -Related Rights"). Copyright and Related Rights include, but are not -limited to, the following: - - i. the right to reproduce, adapt, distribute, perform, display, - communicate, and translate a Work; - ii. moral rights retained by the original author(s) and/or performer(s); -iii. publicity and privacy rights pertaining to a person's image or - likeness depicted in a Work; - iv. rights protecting against unfair competition in regards to a Work, - subject to the limitations in paragraph 4(a), below; - v. rights protecting the extraction, dissemination, use and reuse of data - in a Work; - vi. database rights (such as those arising under Directive 96/9/EC of the - European Parliament and of the Council of 11 March 1996 on the legal - protection of databases, and under any national implementation - thereof, including any amended or successor version of such - directive); and -vii. other similar, equivalent or corresponding rights throughout the - world based on applicable law or treaty, and any national - implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention -of, applicable law, Affirmer hereby overtly, fully, permanently, -irrevocably and unconditionally waives, abandons, and surrenders all of -Affirmer's Copyright and Related Rights and associated claims and causes -of action, whether now known or unknown (including existing as well as -future claims and causes of action), in the Work (i) in all territories -worldwide, (ii) for the maximum duration provided by applicable law or -treaty (including future time extensions), (iii) in any current or future -medium and for any number of copies, and (iv) for any purpose whatsoever, -including without limitation commercial, advertising or promotional -purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each -member of the public at large and to the detriment of Affirmer's heirs and -successors, fully intending that such Waiver shall not be subject to -revocation, rescission, cancellation, termination, or any other legal or -equitable action to disrupt the quiet enjoyment of the Work by the public -as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason -be judged legally invalid or ineffective under applicable law, then the -Waiver shall be preserved to the maximum extent permitted taking into -account Affirmer's express Statement of Purpose. In addition, to the -extent the Waiver is so judged Affirmer hereby grants to each affected -person a royalty-free, non transferable, non sublicensable, non exclusive, -irrevocable and unconditional license to exercise Affirmer's Copyright and -Related Rights in the Work (i) in all territories worldwide, (ii) for the -maximum duration provided by applicable law or treaty (including future -time extensions), (iii) in any current or future medium and for any number -of copies, and (iv) for any purpose whatsoever, including without -limitation commercial, advertising or promotional purposes (the -"License"). The License shall be deemed effective as of the date CC0 was -applied by Affirmer to the Work. Should any part of the License for any -reason be judged legally invalid or ineffective under applicable law, such -partial invalidity or ineffectiveness shall not invalidate the remainder -of the License, and in such case Affirmer hereby affirms that he or she -will not (i) exercise any of his or her remaining Copyright and Related -Rights in the Work or (ii) assert any associated claims and causes of -action with respect to the Work, in either case contrary to Affirmer's -express Statement of Purpose. - -4. Limitations and Disclaimers. - - a. No trademark or patent rights held by Affirmer are waived, abandoned, - surrendered, licensed or otherwise affected by this document. - b. Affirmer offers the Work as-is and makes no representations or - warranties of any kind concerning the Work, express, implied, - statutory or otherwise, including without limitation warranties of - title, merchantability, fitness for a particular purpose, non - infringement, or the absence of latent or other defects, accuracy, or - the present or absence of errors, whether or not discoverable, all to - the greatest extent permissible under applicable law. - c. Affirmer disclaims responsibility for clearing rights of other persons - that may apply to the Work or any use thereof, including without - limitation any person's Copyright and Related Rights in the Work. - Further, Affirmer disclaims responsibility for obtaining any necessary - consents, permissions or other rights required for any use of the - Work. - d. Affirmer understands and acknowledges that Creative Commons is not a - party to this document and has no duty or obligation with respect to - this CC0 or use of the Work. diff --git a/apps/files_external/3rdparty/icewind/smb/LICENSES/MIT.txt b/apps/files_external/3rdparty/icewind/smb/LICENSES/MIT.txt deleted file mode 100644 index 2071b23b0e0..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/LICENSES/MIT.txt +++ /dev/null @@ -1,9 +0,0 @@ -MIT License - -Copyright (c) <year> <copyright holders> - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/apps/files_external/3rdparty/icewind/smb/README.md b/apps/files_external/3rdparty/icewind/smb/README.md deleted file mode 100644 index 2a93c8c4717..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/README.md +++ /dev/null @@ -1,192 +0,0 @@ -<!-- - - SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - - SPDX-License-Identifier: MIT ---> -SMB -=== - -[](https://github.com/icewind1991/SMB/actions/workflows/ci.yaml) -[](https://codecov.io/gh/icewind1991/SMB) - -PHP wrapper for `smbclient` and [`libsmbclient-php`](https://github.com/eduardok/libsmbclient-php) - -- Reuses a single `smbclient` instance for multiple requests -- Doesn't leak the password to the process list -- Simple 1-on-1 mapping of SMB commands -- A stream-based api to remove the need for temporary files -- Support for using libsmbclient directly trough [`libsmbclient-php`](https://github.com/eduardok/libsmbclient-php) - -Examples ----- - -### Connect to a share ### - -```php -<?php -use Icewind\SMB\ServerFactory; -use Icewind\SMB\BasicAuth; - -require('vendor/autoload.php'); - -$serverFactory = new ServerFactory(); -$auth = new BasicAuth('user', 'workgroup', 'password'); -$server = $serverFactory->createServer('localhost', $auth); - -$share = $server->getShare('test'); -``` - -The server factory will automatically pick between the `smbclient` and `libsmbclient-php` -based backend depending on what is available. - -### Using anonymous authentication ### - -```php -$serverFactory = new ServerFactory(); -$auth = new AnonymousAuth(); -$server = $serverFactory->createServer('localhost', $auth); -``` - -### Using kerberos authentication ### - -There are two ways of using kerberos to authenticate against the smb server: - -- Using a ticket from the php server -- Re-using a ticket send by the client - -### Using a server ticket - -Using a server ticket allows the web server to authenticate against the smb server using an existing machine account. - -The ticket needs to be available in the environment of the php process. - -```php -$serverFactory = new ServerFactory(); -$auth = new KerberosAuth(); -$server = $serverFactory->createServer('localhost', $auth); -``` - -### Re-using a client ticket - -By re-using a client ticket you can create a single sign-on setup where the user authenticates against -the web service using kerberos. And the web server can forward that ticket to the smb server, allowing it -to act on the behalf of the user without requiring the user to enter his password. - -The setup for such a system is fairly involved and requires roughly the following this - -- The web server is authenticated against kerberos with a machine account -- Delegation is enabled for the web server's machine account -- The web server is setup to perform kerberos authentication and save the ticket in it's environment -- Php has the krb5 extension installed -- The client authenticates using a ticket with forwarding enabled - -```php -$serverFactory = new ServerFactory(); -$auth = new KerberosAuth(); -$auth->setTicket(KerberosTicket::fromEnv()); -$server = $serverFactory->createServer('localhost', $auth); -``` - -### Upload a file ### - -```php -$share->put($fileToUpload, 'example.txt'); -``` - -### Download a file ### - -```php -$share->get('example.txt', $target); -``` - -### List shares on the remote server ### - -```php -$shares = $server->listShares(); - -foreach ($shares as $share) { - echo $share->getName() . "\n"; -} -``` - -### List the content of a folder ### - -```php -$content = $share->dir('test'); - -foreach ($content as $info) { - echo $info->getName() . "\n"; - echo "\tsize :" . $info->getSize() . "\n"; -} -``` - -### Using read streams - -```php -$fh = $share->read('test.txt'); -echo fread($fh, 4086); -fclose($fh); -``` - -### Using write streams - -```php -$fh = $share->write('test.txt'); -fwrite($fh, 'bar'); -fclose($fh); -``` - -**Note**: write() will truncate your file to 0bytes. You may open a writeable stream with append() which will point -the cursor to the end of the file or create it if it does not exist yet. (append() is only compatible with libsmbclient-php) -```php -$fh = $share->append('test.txt'); -fwrite($fh, 'bar'); -fclose($fh); -``` - - -### Using notify - -```php -$share->notify('')->listen(function (\Icewind\SMB\Change $change) { - echo $change->getCode() . ': ' . $change->getPath() . "\n"; -}); -``` - -### Changing network timeouts - -```php -$options = new Options(); -$options->setTimeout(5); -$serverFactory = new ServerFactory($options); -``` - -### Setting protocol version - -```php -$options = new Options(); -$options->setMinProtocol(IOptions::PROTOCOL_SMB2); -$options->setMaxProtocol(IOptions::PROTOCOL_SMB3); -$serverFactory = new ServerFactory($options); -``` - -Note, setting the protocol version is not supported with php-smbclient version 1.0.1 or lower. - -### Customizing system integration - -The `smbclient` backend needs to get various information about the system it's running on to function -such as the paths of various binaries or the system timezone. -While the default logic for getting this information should work on most systems, it is possible to customize this behaviour. - -In order to customize the integration you provide a custom implementation of `ITimezoneProvider` and/or `ISystem` and pass them as arguments to the `ServerFactory`. - -## Testing SMB - -Use the following steps to check if the library can connect to your SMB share. - -1. Clone this repository or download the source as [zip](https://github.com/icewind1991/SMB/archive/master.zip) -2. Make sure [composer](https://getcomposer.org/) is installed -3. Run `composer install` in the root of the repository -4. Edit `example.php` with the relevant settings for your share. -5. Run `php example.php` - -If everything works correctly then the contents of the share should be outputted. diff --git a/apps/files_external/3rdparty/icewind/smb/composer.json b/apps/files_external/3rdparty/icewind/smb/composer.json deleted file mode 100644 index 6ab6100af71..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/composer.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "icewind/smb", - "description": "php wrapper for smbclient and libsmbclient-php", - "license": "MIT", - "authors": [ - { - "name": "Robin Appelman", - "email": "icewind@owncloud.com" - } - ], - "require": { - "php": ">=7.2", - "icewind/streams": ">=0.7.3" - }, - "require-dev": { - "phpunit/phpunit": "^8.5|^9.3.8", - "friendsofphp/php-cs-fixer": "^2.16", - "phpstan/phpstan": "^0.12.57", - "psalm/phar": "^4.3" - }, - "autoload": { - "psr-4": { - "Icewind\\SMB\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Icewind\\SMB\\Test\\": "tests/" - } - }, - "scripts": { - "lint": "parallel-lint --exclude src --exclude vendor --exclude target --exclude build .", - "cs:check": "php-cs-fixer fix --dry-run --diff", - "cs:fix": "php-cs-fixer fix", - "psalm": "psalm.phar" - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/composer.json.license b/apps/files_external/3rdparty/icewind/smb/composer.json.license deleted file mode 100644 index 99ba7368b14..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/composer.json.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> -SPDX-License-Identifier: MIT diff --git a/apps/files_external/3rdparty/icewind/smb/psalm.xml.license b/apps/files_external/3rdparty/icewind/smb/psalm.xml.license deleted file mode 100644 index 94efc752831..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/psalm.xml.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: 2021 Robin Appelman <robin@icewind.nl> -SPDX-License-Identifier: MIT diff --git a/apps/files_external/3rdparty/icewind/smb/src/ACL.php b/apps/files_external/3rdparty/icewind/smb/src/ACL.php deleted file mode 100644 index 9d83cd15409..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/ACL.php +++ /dev/null @@ -1,69 +0,0 @@ -<?php declare(strict_types=1); -/** - * SPDX-FileCopyrightText: 2020 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\SMB; - -class ACL { - const TYPE_ALLOW = 0; - const TYPE_DENY = 1; - - const MASK_READ = 0x0001; - const MASK_WRITE = 0x0002; - const MASK_EXECUTE = 0x00020; - const MASK_DELETE = 0x10000; - - const FLAG_OBJECT_INHERIT = 0x1; - const FLAG_CONTAINER_INHERIT = 0x2; - - /** @var int */ - private $type; - /** @var int */ - private $flags; - /** @var int */ - private $mask; - - public function __construct(int $type, int $flags, int $mask) { - $this->type = $type; - $this->flags = $flags; - $this->mask = $mask; - } - - /** - * Check if the acl allows a specific permissions - * - * Note that this does not take inherited acls into account - * - * @param int $mask one of the ACL::MASK_* constants - * @return bool - */ - public function allows(int $mask): bool { - return $this->type === self::TYPE_ALLOW && ($this->mask & $mask) === $mask; - } - - /** - * Check if the acl allows a specific permissions - * - * Note that this does not take inherited acls into account - * - * @param int $mask one of the ACL::MASK_* constants - * @return bool - */ - public function denies(int $mask): bool { - return $this->type === self::TYPE_DENY && ($this->mask & $mask) === $mask; - } - - public function getType(): int { - return $this->type; - } - - public function getFlags(): int { - return $this->flags; - } - - public function getMask(): int { - return $this->mask; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/AbstractServer.php b/apps/files_external/3rdparty/icewind/smb/src/AbstractServer.php deleted file mode 100644 index fe22fb10d19..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/AbstractServer.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2018 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\SMB; - -abstract class AbstractServer implements IServer { - const LOCALE = 'en_US.UTF-8'; - - /** @var string */ - protected $host; - - /** @var IAuth */ - protected $auth; - - /** @var ISystem */ - protected $system; - - /** @var ITimeZoneProvider */ - protected $timezoneProvider; - - /** @var IOptions */ - protected $options; - - /** - * @param string $host - * @param IAuth $auth - * @param ISystem $system - * @param ITimeZoneProvider $timeZoneProvider - * @param IOptions $options - */ - public function __construct(string $host, IAuth $auth, ISystem $system, ITimeZoneProvider $timeZoneProvider, IOptions $options) { - $this->host = $host; - $this->auth = $auth; - $this->system = $system; - $this->timezoneProvider = $timeZoneProvider; - $this->options = $options; - } - - public function getAuth(): IAuth { - return $this->auth; - } - - public function getHost(): string { - return $this->host; - } - - public function getTimeZone(): string { - return $this->timezoneProvider->get($this->host); - } - - public function getSystem(): ISystem { - return $this->system; - } - - public function getOptions(): IOptions { - return $this->options; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/AbstractShare.php b/apps/files_external/3rdparty/icewind/smb/src/AbstractShare.php deleted file mode 100644 index 77f50e4ca9d..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/AbstractShare.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2015 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB; - -use Icewind\SMB\Exception\InvalidPathException; - -abstract class AbstractShare implements IShare { - /** @var string[] */ - private $forbiddenCharacters; - - public function __construct() { - $this->forbiddenCharacters = ['?', '<', '>', ':', '*', '|', '"', chr(0), "\n", "\r"]; - } - - /** - * @param string $path - * @throws InvalidPathException - */ - protected function verifyPath(string $path): void { - foreach ($this->forbiddenCharacters as $char) { - if (strpos($path, $char) !== false) { - throw new InvalidPathException('Invalid path, "' . $char . '" is not allowed'); - } - } - } - - /** - * @param string[] $charList - */ - public function setForbiddenChars(array $charList): void { - $this->forbiddenCharacters = $charList; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/AnonymousAuth.php b/apps/files_external/3rdparty/icewind/smb/src/AnonymousAuth.php deleted file mode 100644 index 87bce1663dd..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/AnonymousAuth.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2018 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\SMB; - -use Icewind\SMB\Exception\Exception; - -class AnonymousAuth implements IAuth { - public function getUsername(): ?string { - return null; - } - - public function getWorkgroup(): ?string { - return 'dummy'; - } - - public function getPassword(): ?string { - return null; - } - - public function getExtraCommandLineArguments(): string { - return '-N'; - } - - public function setExtraSmbClientOptions($smbClientState): void { - if (smbclient_option_set($smbClientState, SMBCLIENT_OPT_AUTO_ANONYMOUS_LOGIN, true) === false) { - throw new Exception("Failed to set smbclient options for anonymous auth"); - } - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/BasicAuth.php b/apps/files_external/3rdparty/icewind/smb/src/BasicAuth.php deleted file mode 100644 index a462109b3c2..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/BasicAuth.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2018 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\SMB; - -class BasicAuth implements IAuth { - /** @var string */ - private $username; - /** @var string|null */ - private $workgroup; - /** @var string */ - private $password; - - public function __construct(string $username, ?string $workgroup, string $password) { - $this->username = $username; - $this->workgroup = $workgroup; - $this->password = $password; - } - - public function getUsername(): ?string { - return $this->username; - } - - public function getWorkgroup(): ?string { - return $this->workgroup; - } - - public function getPassword(): ?string { - return $this->password; - } - - public function getExtraCommandLineArguments(): string { - return ($this->workgroup) ? '-W ' . escapeshellarg($this->workgroup) : ''; - } - - public function setExtraSmbClientOptions($smbClientState): void { - // noop - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Change.php b/apps/files_external/3rdparty/icewind/smb/src/Change.php deleted file mode 100644 index c21297a2bec..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Change.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2016 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB; - -class Change { - /** @var int */ - private $code; - /** @var string */ - private $path; - - public function __construct(int $code, string $path) { - $this->code = $code; - $this->path = $path; - } - - public function getCode(): int { - return $this->code; - } - - public function getPath(): string { - return $this->path; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/AccessDeniedException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/AccessDeniedException.php deleted file mode 100644 index 7e8a81d88ba..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/AccessDeniedException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class AccessDeniedException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/AlreadyExistsException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/AlreadyExistsException.php deleted file mode 100644 index 7828efe8529..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/AlreadyExistsException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class AlreadyExistsException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/AuthenticationException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/AuthenticationException.php deleted file mode 100644 index bf51f5c2bd1..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/AuthenticationException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class AuthenticationException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectException.php deleted file mode 100644 index 527e5835c25..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class ConnectException extends Exception { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionAbortedException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionAbortedException.php deleted file mode 100644 index cc959c27734..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionAbortedException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class ConnectionAbortedException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionException.php deleted file mode 100644 index deabfcd78b7..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class ConnectionException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionRefusedException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionRefusedException.php deleted file mode 100644 index 826a19615a2..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionRefusedException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class ConnectionRefusedException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionResetException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionResetException.php deleted file mode 100644 index 464e752c2c6..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionResetException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2020 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class ConnectionResetException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/DependencyException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/DependencyException.php deleted file mode 100644 index ed3d427918d..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/DependencyException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2016 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class DependencyException extends Exception { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/Exception.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/Exception.php deleted file mode 100644 index 199cdf3056b..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/Exception.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -use Throwable; - -/** - * @psalm-consistent-constructor - */ -class Exception extends \Exception { - public function __construct(string $message = "", int $code = 0, ?Throwable $previous = null) { - parent::__construct($message, $code, $previous); - } - - /** - * @param string|null $path - * @param string|int|null $error - * @return Exception - */ - public static function unknown(?string $path, $error): Exception { - $message = 'Unknown error (' . (string)$error . ')'; - if ($path) { - $message .= ' for ' . $path; - } - - return new Exception($message, is_int($error) ? $error : 0); - } - - /** - * @param array<int|string, class-string<Exception>> $exceptionMap - * @param string|int|null $error - * @param string|null $path - * @return Exception - */ - public static function fromMap(array $exceptionMap, $error, ?string $path): Exception { - if (isset($exceptionMap[$error])) { - $exceptionClass = $exceptionMap[$error]; - if (is_numeric($error)) { - return new $exceptionClass($path, $error); - } else { - return new $exceptionClass($path); - } - } else { - return Exception::unknown($path, $error); - } - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/FileInUseException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/FileInUseException.php deleted file mode 100644 index 44affabc428..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/FileInUseException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class FileInUseException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/ForbiddenException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/ForbiddenException.php deleted file mode 100644 index 2d070543114..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/ForbiddenException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class ForbiddenException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/HostDownException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/HostDownException.php deleted file mode 100644 index 321f8d2f902..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/HostDownException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class HostDownException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidArgumentException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidArgumentException.php deleted file mode 100644 index 69422392123..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidArgumentException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class InvalidArgumentException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidHostException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidHostException.php deleted file mode 100644 index 630734ee855..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidHostException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class InvalidHostException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidParameterException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidParameterException.php deleted file mode 100644 index 57a50a16496..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidParameterException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class InvalidParameterException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidPathException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidPathException.php deleted file mode 100644 index 8b2ea3aeab3..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidPathException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class InvalidPathException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidRequestException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidRequestException.php deleted file mode 100644 index d6ee8db0698..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidRequestException.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class InvalidRequestException extends Exception { - /** - * @var string - */ - protected $path; - - public function __construct(string $path = "", int $code = 0, ?\Throwable $previous = null) { - $class = get_class($this); - $parts = explode('\\', $class); - $baseName = array_pop($parts); - parent::__construct('Invalid request for ' . $path . ' (' . $baseName . ')', $code, $previous); - $this->path = $path; - } - - /** - * @return string - */ - public function getPath() { - return $this->path; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidResourceException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidResourceException.php deleted file mode 100644 index 95507e4f4ea..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidResourceException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class InvalidResourceException extends Exception { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidTicket.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidTicket.php deleted file mode 100644 index eb718af37e8..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidTicket.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php - -declare(strict_types=1); -/** - * SPDX-FileCopyrightText: 2022 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\SMB\Exception; - -class InvalidTicket extends Exception { - -}
\ No newline at end of file diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidTypeException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidTypeException.php deleted file mode 100644 index 4a5b12cbab8..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidTypeException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class InvalidTypeException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/NoLoginServerException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/NoLoginServerException.php deleted file mode 100644 index efe5b4e9197..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/NoLoginServerException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class NoLoginServerException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/NoRouteToHostException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/NoRouteToHostException.php deleted file mode 100644 index 475aaef6699..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/NoRouteToHostException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class NoRouteToHostException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/NotEmptyException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/NotEmptyException.php deleted file mode 100644 index e76980b1f60..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/NotEmptyException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class NotEmptyException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/NotFoundException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/NotFoundException.php deleted file mode 100644 index 9cea30d86f3..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/NotFoundException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class NotFoundException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/OutOfSpaceException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/OutOfSpaceException.php deleted file mode 100644 index 1db6a7208a9..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/OutOfSpaceException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class OutOfSpaceException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/RevisionMismatchException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/RevisionMismatchException.php deleted file mode 100644 index a3954018b4c..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/RevisionMismatchException.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -use Throwable; - -class RevisionMismatchException extends Exception { - public function __construct(string $message = 'Protocol version mismatch', int $code = 0, Throwable $previous = null) { - parent::__construct($message, $code, $previous); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/TimedOutException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/TimedOutException.php deleted file mode 100644 index 57eeb0f0ba8..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/TimedOutException.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Exception; - -class TimedOutException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/IAuth.php b/apps/files_external/3rdparty/icewind/smb/src/IAuth.php deleted file mode 100644 index 46ba4b81b18..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/IAuth.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2018 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\SMB; - -interface IAuth { - public function getUsername(): ?string; - - public function getWorkgroup(): ?string; - - public function getPassword(): ?string; - - /** - * Any extra command line option for smbclient that are required - * - * @return string - */ - public function getExtraCommandLineArguments(): string; - - /** - * Set any extra options for libsmbclient that are required - * - * @param resource $smbClientState - */ - public function setExtraSmbClientOptions($smbClientState): void; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/IFileInfo.php b/apps/files_external/3rdparty/icewind/smb/src/IFileInfo.php deleted file mode 100644 index e71e0e40a1e..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/IFileInfo.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB; - -interface IFileInfo { - /* - * Mappings of the DOS mode bits, as returned by smbc_getxattr() when the - * attribute name "system.dos_attr.mode" (or "system.dos_attr.*" or - * "system.*") is specified. - */ - const MODE_READONLY = 0x01; - const MODE_HIDDEN = 0x02; - const MODE_SYSTEM = 0x04; - const MODE_VOLUME_ID = 0x08; - const MODE_DIRECTORY = 0x10; - const MODE_ARCHIVE = 0x20; - const MODE_NORMAL = 0x80; - - public function getPath(): string; - - public function getName(): string; - - public function getSize(): int; - - public function getMTime(): int; - - public function isDirectory(): bool; - - public function isReadOnly(): bool; - - public function isHidden(): bool; - - public function isSystem(): bool; - - public function isArchived(): bool; - - /** - * @return ACL[] - */ - public function getAcls(): array; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/INotifyHandler.php b/apps/files_external/3rdparty/icewind/smb/src/INotifyHandler.php deleted file mode 100644 index 829ac7d9a0a..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/INotifyHandler.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2016 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB; - -interface INotifyHandler { - // https://msdn.microsoft.com/en-us/library/dn392331.aspx - const NOTIFY_ADDED = 1; - const NOTIFY_REMOVED = 2; - const NOTIFY_MODIFIED = 3; - const NOTIFY_RENAMED_OLD = 4; - const NOTIFY_RENAMED_NEW = 5; - const NOTIFY_ADDED_STREAM = 6; - const NOTIFY_REMOVED_STREAM = 7; - const NOTIFY_MODIFIED_STREAM = 8; - const NOTIFY_REMOVED_BY_DELETE = 9; - - /** - * Get all changes detected since the start of the notify process or the last call to getChanges - * - * @return Change[] - */ - public function getChanges(): array; - - /** - * Listen actively to all incoming changes - * - * Note that this is a blocking process and will cause the process to block forever if not explicitly terminated - * - * @param callable(Change):?bool $callback - */ - public function listen(callable $callback): void; - - /** - * Stop listening for changes - * - * Note that any pending changes will be discarded - */ - public function stop(): void; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/IOptions.php b/apps/files_external/3rdparty/icewind/smb/src/IOptions.php deleted file mode 100644 index b72700c9d8c..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/IOptions.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2018 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\SMB; - -interface IOptions { - const PROTOCOL_NT1 = 'NT1'; - const PROTOCOL_SMB2 = 'SMB2'; - const PROTOCOL_SMB2_02 = 'SMB2_02'; - const PROTOCOL_SMB2_22 = 'SMB2_22'; - const PROTOCOL_SMB2_24 = 'SMB2_24'; - const PROTOCOL_SMB3 = 'SMB3'; - const PROTOCOL_SMB3_00 = 'SMB3_00'; - const PROTOCOL_SMB3_02 = 'SMB3_02'; - const PROTOCOL_SMB3_10 = 'SMB3_10'; - const PROTOCOL_SMB3_11 = 'SMB3_11'; - - public function getTimeout(): int; - - public function getMinProtocol(): ?string; - - public function getMaxProtocol(): ?string; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/IServer.php b/apps/files_external/3rdparty/icewind/smb/src/IServer.php deleted file mode 100644 index c11fb450853..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/IServer.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2018 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\SMB; - -interface IServer { - public function getAuth(): IAuth; - - public function getHost(): string; - - /** - * @return \Icewind\SMB\IShare[] - * - * @throws \Icewind\SMB\Exception\AuthenticationException - * @throws \Icewind\SMB\Exception\InvalidHostException - */ - public function listShares(): array; - - public function getShare(string $name): IShare; - - public function getTimeZone(): string; - - public function getSystem(): ISystem; - - public function getOptions(): IOptions; - - public static function available(ISystem $system): bool; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/IShare.php b/apps/files_external/3rdparty/icewind/smb/src/IShare.php deleted file mode 100644 index 617b81746ea..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/IShare.php +++ /dev/null @@ -1,164 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB; - -use Icewind\SMB\Exception\AlreadyExistsException; -use Icewind\SMB\Exception\InvalidRequestException; -use Icewind\SMB\Exception\InvalidTypeException; -use Icewind\SMB\Exception\NotFoundException; - -interface IShare { - /** - * Get the name of the share - * - * @return string - */ - public function getName(): string; - - /** - * Download a remote file - * - * @param string $source remote file - * @param string $target local file - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function get(string $source, string $target): bool; - - /** - * Upload a local file - * - * @param string $source local file - * @param string $target remote file - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function put(string $source, string $target): bool; - - /** - * Open a readable stream to a remote file - * - * @param string $source - * @return resource a read only stream with the contents of the remote file - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function read(string $source); - - /** - * Open a writable stream to a remote file - * Note: This method will truncate the file to 0bytes - * - * @param string $target - * @return resource a write only stream to upload a remote file - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function write(string $target); - - /** - * Open a writable stream to a remote file and set the cursor to the end of the file - * - * @param string $target - * @return resource a write only stream to upload a remote file - * - * @throws NotFoundException - * @throws InvalidTypeException - * @throws InvalidRequestException - */ - public function append(string $target); - - /** - * Rename a remote file - * - * @param string $from - * @param string $to - * @return bool - * - * @throws NotFoundException - * @throws AlreadyExistsException - */ - public function rename(string $from, string $to): bool; - - /** - * Delete a file on the share - * - * @param string $path - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function del(string $path): bool; - - /** - * List the content of a remote folder - * - * @param string $path - * @return IFileInfo[] - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function dir(string $path): array; - - /** - * @param string $path - * @return IFileInfo - * - * @throws NotFoundException - */ - public function stat(string $path): IFileInfo; - - /** - * Create a folder on the share - * - * @param string $path - * @return bool - * - * @throws NotFoundException - * @throws AlreadyExistsException - */ - public function mkdir(string $path): bool; - - /** - * Remove a folder on the share - * - * @param string $path - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function rmdir(string $path): bool; - - /** - * @param string $path - * @param int $mode a combination of FileInfo::MODE_READONLY, FileInfo::MODE_ARCHIVE, FileInfo::MODE_SYSTEM and FileInfo::MODE_HIDDEN, FileInfo::NORMAL - * @return mixed - */ - public function setMode(string $path, int $mode); - - /** - * @param string $path - * @return INotifyHandler - */ - public function notify(string $path); - - /** - * Get the IServer instance for this share - * - * @return IServer - */ - public function getServer(): IServer; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/ISystem.php b/apps/files_external/3rdparty/icewind/smb/src/ISystem.php deleted file mode 100644 index 90209f9ae24..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/ISystem.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2018 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\SMB; - -/** - * The `ISystem` interface provides a way to access system dependent information - * such as the availability and location of certain binaries. - */ -interface ISystem { - /** - * Get the path to a file descriptor of the current process - * - * @param int $num the file descriptor id - * @return string - */ - public function getFD(int $num): string; - - /** - * Get the full path to the `smbclient` binary of null if the binary is not available - * - * @return string|null - */ - public function getSmbclientPath(): ?string; - - /** - * Get the full path to the `net` binary of null if the binary is not available - * - * @return string|null - */ - public function getNetPath(): ?string; - - /** - * Get the full path to the `smbcacls` binary of null if the binary is not available - * - * @return string|null - */ - public function getSmbcAclsPath(): ?string; - - /** - * Get the full path to the `stdbuf` binary of null if the binary is not available - * - * @return string|null - */ - public function getStdBufPath(): ?string; - - /** - * Get the full path to the `date` binary of null if the binary is not available - * - * @return string|null - */ - public function getDatePath(): ?string; - - /** - * Whether or not the smbclient php extension is enabled - * - * @return bool - */ - public function libSmbclientAvailable(): bool; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/ITimeZoneProvider.php b/apps/files_external/3rdparty/icewind/smb/src/ITimeZoneProvider.php deleted file mode 100644 index dba3b58132e..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/ITimeZoneProvider.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2018 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\SMB; - -interface ITimeZoneProvider { - /** - * Get the timezone of the smb server - * - * @param string $host - * @return string - */ - public function get(string $host): string; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/KerberosApacheAuth.php b/apps/files_external/3rdparty/icewind/smb/src/KerberosApacheAuth.php deleted file mode 100644 index eb22982f0ec..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/KerberosApacheAuth.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2018 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\SMB; - -use Icewind\SMB\Exception\DependencyException; -use Icewind\SMB\Exception\Exception; -use Icewind\SMB\Exception\InvalidTicket; - -/** - * Use existing kerberos ticket to authenticate and reuse the apache ticket cache (mod_auth_kerb) - * - * @deprecated Use `KerberosAuth` with `$auth->setTicket(KerberosTicket::fromEnv())` instead - */ -class KerberosApacheAuth extends KerberosAuth implements IAuth { - public function getTicket(): KerberosTicket { - if ($this->ticket === null) { - $ticket = KerberosTicket::fromEnv(); - if ($ticket === null) { - throw new InvalidTicket("No ticket found in environment"); - } - $this->ticket = $ticket; - } - return $this->ticket; - } - - /** - * Copy the ticket to a temporary location and use that ticket for authentication - * - * @return void - */ - public function copyTicket(): void { - $this->ticket = KerberosTicket::load($this->getTicket()->save()); - } - - /** - * Check if a valid kerberos ticket is present - * - * @return bool - */ - public function checkTicket(): bool { - return $this->getTicket()->isValid(); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/KerberosAuth.php b/apps/files_external/3rdparty/icewind/smb/src/KerberosAuth.php deleted file mode 100644 index 6e35f9bd8f3..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/KerberosAuth.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2018 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\SMB; - -use Icewind\SMB\Exception\Exception; - -/** - * Use existing kerberos ticket to authenticate - */ -class KerberosAuth implements IAuth { - /** @var ?KerberosTicket */ - protected $ticket = null; - - public function getTicket(): ?KerberosTicket { - return $this->ticket; - } - - public function setTicket(?KerberosTicket $ticket): void { - $this->ticket = $ticket; - } - - public function getUsername(): ?string { - return 'dummy'; - } - - public function getWorkgroup(): ?string { - return 'dummy'; - } - - public function getPassword(): ?string { - return null; - } - - private function setEnv():void { - $ticket = $this->getTicket(); - if ($ticket) { - $ticket->validate(); - - // note that even if the ticket name is the value we got from `getenv("KRB5CCNAME")` we still need to set the env variable ourselves - // this is because `getenv` also reads the variables passed from the SAPI (apache-php) and we need to set the variable in the OS's env - putenv("KRB5CCNAME=" . $ticket->getCacheName()); - } - } - - public function getExtraCommandLineArguments(): string { - $this->setEnv(); - return '-k'; - } - - public function setExtraSmbClientOptions($smbClientState): void { - $this->setEnv(); - - $success = (bool)smbclient_option_set($smbClientState, SMBCLIENT_OPT_USE_KERBEROS, true); - $success = $success && smbclient_option_set($smbClientState, SMBCLIENT_OPT_FALLBACK_AFTER_KERBEROS, false); - - if (!$success) { - throw new Exception("Failed to set smbclient options for kerberos auth"); - } - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/KerberosTicket.php b/apps/files_external/3rdparty/icewind/smb/src/KerberosTicket.php deleted file mode 100644 index c019b18119a..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/KerberosTicket.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -declare(strict_types=1); -/** - * SPDX-FileCopyrightText: 2022 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\SMB; - -use Icewind\SMB\Exception\InvalidTicket; -use KRB5CCache; - -class KerberosTicket { - /** @var KRB5CCache */ - private $krb5; - /** @var string */ - private $cacheName; - - public function __construct(KRB5CCache $krb5, string $cacheName) { - $this->krb5 = $krb5; - $this->cacheName = $cacheName; - } - - public function getCacheName(): string { - return $this->cacheName; - } - - public function getName(): string{ - return $this->krb5->getName(); - } - - public function isValid(): bool { - return count($this->krb5->getEntries()) > 0; - } - - public function validate(): void { - if (!$this->isValid()) { - throw new InvalidTicket("No kerberos ticket found."); - } - } - - /** - * Load the ticket from the cache specified by the KRB5CCNAME variable. - * - * @return KerberosTicket|null - */ - public static function fromEnv(): ?KerberosTicket { - $ticketName = getenv("KRB5CCNAME"); - if (!$ticketName) { - return null; - } - $krb5 = new KRB5CCache(); - $krb5->open($ticketName); - return new KerberosTicket($krb5, $ticketName); - } - - public static function load(string $ticket): KerberosTicket { - $tmpFilename = tempnam(sys_get_temp_dir(), "krb5cc_php_"); - file_put_contents($tmpFilename, $ticket); - register_shutdown_function(function () use ($tmpFilename) { - if (file_exists($tmpFilename)) { - unlink($tmpFilename); - } - }); - - $ticketName = "FILE:" . $tmpFilename; - $krb5 = new KRB5CCache(); - $krb5->open($ticketName); - return new KerberosTicket($krb5, $ticketName); - } - - public function save(): string { - if (substr($this->cacheName, 0, 5) === 'FILE:') { - $ticket = file_get_contents(substr($this->cacheName, 5)); - } else { - $tmpFilename = tempnam(sys_get_temp_dir(), "krb5cc_php_"); - $tmpCacheFile = "FILE:" . $tmpFilename; - $this->krb5->save($tmpCacheFile); - $ticket = file_get_contents($tmpFilename); - unlink($tmpFilename); - } - return $ticket; - } -}
\ No newline at end of file diff --git a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeFileInfo.php b/apps/files_external/3rdparty/icewind/smb/src/Native/NativeFileInfo.php deleted file mode 100644 index 48804afb108..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeFileInfo.php +++ /dev/null @@ -1,142 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Native; - -use Icewind\SMB\ACL; -use Icewind\SMB\Exception\Exception; -use Icewind\SMB\Exception\NotFoundException; -use Icewind\SMB\IFileInfo; - -class NativeFileInfo implements IFileInfo { - /** @var string */ - protected $path; - /** @var string */ - protected $name; - /** @var NativeShare */ - protected $share; - /** @var array{"mode": int, "size": int, "mtime": int}|null */ - protected $statCache = null; - - public function __construct(NativeShare $share, string $path, string $name) { - $this->share = $share; - $this->path = $path; - $this->name = $name; - } - - public function getPath(): string { - return $this->path; - } - - public function getName(): string { - return $this->name; - } - - /** - * @return array{"mode": int, "size": int, "mtime": int} - */ - protected function stat(): array { - if (is_null($this->statCache)) { - $this->statCache = $this->share->rawStat($this->path); - } - return $this->statCache; - } - - public function getSize(): int { - $stat = $this->stat(); - return $stat['size']; - } - - public function getMTime(): int { - $stat = $this->stat(); - return $stat['mtime']; - } - - /** - * On "mode": - * - * different smbclient versions seem to return different mode values for 'system.dos_attr.mode' - * - * older versions return the dos permissions mask as defined in `IFileInfo::MODE_*` while - * newer versions return the equivalent unix permission mask. - * - * Since the unix mask doesn't contain the proper hidden/archive/system flags we have to assume them - * as false (except for `hidden` where we use the unix dotfile convention) - */ - - protected function getMode(): int { - $mode = $this->stat()['mode']; - - // Let us ignore the ATTR_NOT_CONTENT_INDEXED for now - $mode &= ~0x00002000; - - return $mode; - } - - public function isDirectory(): bool { - $mode = $this->getMode(); - if ($mode > 0x1000) { - return ($mode & 0x4000 && !($mode & 0x8000)); // 0x4000: unix directory flag shares bits with 0xC000: socket - } else { - return (bool)($mode & IFileInfo::MODE_DIRECTORY); - } - } - - public function isReadOnly(): bool { - $mode = $this->getMode(); - if ($mode > 0x1000) { - return !(bool)($mode & 0x80); // 0x80: owner write permissions - } else { - return (bool)($mode & IFileInfo::MODE_READONLY); - } - } - - public function isHidden(): bool { - $mode = $this->getMode(); - if ($mode > 0x1000) { - return strlen($this->name) > 0 && $this->name[0] === '.'; - } else { - return (bool)($mode & IFileInfo::MODE_HIDDEN); - } - } - - public function isSystem(): bool { - $mode = $this->getMode(); - if ($mode > 0x1000) { - return false; - } else { - return (bool)($mode & IFileInfo::MODE_SYSTEM); - } - } - - public function isArchived(): bool { - $mode = $this->getMode(); - if ($mode > 0x1000) { - return false; - } else { - return (bool)($mode & IFileInfo::MODE_ARCHIVE); - } - } - - /** - * @return ACL[] - */ - public function getAcls(): array { - $acls = []; - $attribute = $this->share->getAttribute($this->path, 'system.nt_sec_desc.acl.*+'); - - foreach (explode(',', $attribute) as $acl) { - list($user, $permissions) = explode(':', $acl, 2); - $user = trim($user, '\\'); - list($type, $flags, $mask) = explode('/', $permissions); - $mask = hexdec($mask); - - $acls[$user] = new ACL((int)$type, (int)$flags, (int)$mask); - } - - return $acls; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeReadStream.php b/apps/files_external/3rdparty/icewind/smb/src/Native/NativeReadStream.php deleted file mode 100644 index af1aa49613e..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeReadStream.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Native; - -use Icewind\SMB\StringBuffer; - -/** - * Stream optimized for read only usage - */ -class NativeReadStream extends NativeStream { - const CHUNK_SIZE = 1048576; // 1MB chunks - - /** @var StringBuffer */ - private $readBuffer; - - public function __construct() { - $this->readBuffer = new StringBuffer(); - } - - /** @var int */ - private $pos = 0; - - public function stream_open($path, $mode, $options, &$opened_path) { - return parent::stream_open($path, $mode, $options, $opened_path); - } - - /** - * Wrap a stream from libsmbclient-php into a regular php stream - * - * @param NativeState $state - * @param resource $smbStream - * @param string $mode - * @param string $url - * @return resource - */ - public static function wrap(NativeState $state, $smbStream, string $mode, string $url) { - return parent::wrapClass($state, $smbStream, $mode, $url, NativeReadStream::class); - } - - public function stream_read($count) { - // php reads 8192 bytes at once - // however due to network latency etc, it's faster to read in larger chunks - // and buffer the result - if (!parent::stream_eof() && $this->readBuffer->remaining() < $count) { - $chunk = parent::stream_read(self::CHUNK_SIZE); - if ($chunk === false) { - return false; - } - $this->readBuffer->push($chunk); - } - - $result = $this->readBuffer->read($count); - - $read = strlen($result); - $this->pos += $read; - - return $result; - } - - public function stream_seek($offset, $whence = SEEK_SET) { - $result = parent::stream_seek($offset, $whence); - if ($result) { - $this->readBuffer->clear(); - $pos = parent::stream_tell(); - if ($pos === false) { - return false; - } - $this->pos = $pos; - } - return $result; - } - - public function stream_eof() { - return $this->readBuffer->remaining() <= 0 && parent::stream_eof(); - } - - public function stream_tell() { - return $this->pos; - } - - public function stream_write($data) { - return false; - } - - public function stream_truncate($size) { - return false; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeServer.php b/apps/files_external/3rdparty/icewind/smb/src/Native/NativeServer.php deleted file mode 100644 index 2a9153ad549..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeServer.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Native; - -use Icewind\SMB\AbstractServer; -use Icewind\SMB\Exception\AuthenticationException; -use Icewind\SMB\Exception\InvalidHostException; -use Icewind\SMB\IAuth; -use Icewind\SMB\IOptions; -use Icewind\SMB\IShare; -use Icewind\SMB\ISystem; -use Icewind\SMB\ITimeZoneProvider; - -class NativeServer extends AbstractServer { - /** - * @var NativeState - */ - protected $state; - - public function __construct(string $host, IAuth $auth, ISystem $system, ITimeZoneProvider $timeZoneProvider, IOptions $options) { - parent::__construct($host, $auth, $system, $timeZoneProvider, $options); - $this->state = new NativeState(); - } - - protected function connect(): void { - $this->state->init($this->getAuth(), $this->getOptions()); - } - - /** - * @return IShare[] - * @throws AuthenticationException - * @throws InvalidHostException - */ - public function listShares(): array { - $this->connect(); - $shares = []; - $dh = $this->state->opendir('smb://' . $this->getHost()); - while ($share = $this->state->readdir($dh, '')) { - if ($share['type'] === 'file share') { - $shares[] = $this->getShare($share['name']); - } - } - $this->state->closedir($dh, ''); - return $shares; - } - - public function getShare(string $name): IShare { - return new NativeShare($this, $name); - } - - /** - * Check if the smbclient php extension is available - * - * @param ISystem $system - * @return bool - */ - public static function available(ISystem $system): bool { - return $system->libSmbclientAvailable(); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeShare.php b/apps/files_external/3rdparty/icewind/smb/src/Native/NativeShare.php deleted file mode 100644 index 0c7e3471e32..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeShare.php +++ /dev/null @@ -1,369 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Native; - -use Icewind\SMB\AbstractShare; -use Icewind\SMB\Exception\AlreadyExistsException; -use Icewind\SMB\Exception\AuthenticationException; -use Icewind\SMB\Exception\ConnectionException; -use Icewind\SMB\Exception\DependencyException; -use Icewind\SMB\Exception\InvalidHostException; -use Icewind\SMB\Exception\InvalidPathException; -use Icewind\SMB\Exception\InvalidResourceException; -use Icewind\SMB\Exception\InvalidTypeException; -use Icewind\SMB\Exception\NotFoundException; -use Icewind\SMB\IFileInfo; -use Icewind\SMB\INotifyHandler; -use Icewind\SMB\IServer; -use Icewind\SMB\Wrapped\Server; -use Icewind\SMB\Wrapped\Share; - -class NativeShare extends AbstractShare { - /** - * @var IServer $server - */ - private $server; - - /** - * @var string $name - */ - private $name; - - /** @var NativeState|null $state */ - private $state = null; - - public function __construct(IServer $server, string $name) { - parent::__construct(); - $this->server = $server; - $this->name = $name; - } - - /** - * @throws ConnectionException - * @throws AuthenticationException - * @throws InvalidHostException - */ - protected function getState(): NativeState { - if ($this->state) { - return $this->state; - } - - $this->state = new NativeState(); - $this->state->init($this->server->getAuth(), $this->server->getOptions()); - return $this->state; - } - - /** - * Get the name of the share - * - * @return string - */ - public function getName(): string { - return $this->name; - } - - private function buildUrl(string $path): string { - $this->verifyPath($path); - $url = sprintf('smb://%s/%s', $this->server->getHost(), $this->name); - if ($path) { - $path = trim($path, '/'); - $url .= '/'; - $url .= implode('/', array_map('rawurlencode', explode('/', $path))); - } - return $url; - } - - /** - * List the content of a remote folder - * - * @param string $path - * @return IFileInfo[] - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function dir(string $path): array { - $files = []; - - $dh = $this->getState()->opendir($this->buildUrl($path)); - while ($file = $this->getState()->readdir($dh, $path)) { - $name = $file['name']; - if ($name !== '.' and $name !== '..') { - $fullPath = $path . '/' . $name; - $files [] = new NativeFileInfo($this, $fullPath, $name); - } - } - - $this->getState()->closedir($dh, $path); - return $files; - } - - /** - * @param string $path - * @return IFileInfo - */ - public function stat(string $path): IFileInfo { - $info = new NativeFileInfo($this, $path, self::mb_basename($path)); - - // trigger attribute loading - $info->getSize(); - - return $info; - } - - /** - * @return array{"mode": int, "size": int, "mtime": int} - */ - public function rawStat(string $path): array { - return $this->getState()->stat($this->buildUrl($path)); - } - - /** - * Multibyte unicode safe version of basename() - * - * @param string $path - * @link http://php.net/manual/en/function.basename.php#121405 - * @return string - */ - protected static function mb_basename(string $path): string { - if (preg_match('@^.*[\\\\/]([^\\\\/]+)$@s', $path, $matches)) { - return $matches[1]; - } elseif (preg_match('@^([^\\\\/]+)$@s', $path, $matches)) { - return $matches[1]; - } - - return ''; - } - - /** - * Create a folder on the share - * - * @param string $path - * @return bool - * - * @throws NotFoundException - * @throws AlreadyExistsException - */ - public function mkdir(string $path): bool { - return $this->getState()->mkdir($this->buildUrl($path)); - } - - /** - * Remove a folder on the share - * - * @param string $path - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function rmdir(string $path): bool { - return $this->getState()->rmdir($this->buildUrl($path)); - } - - /** - * Delete a file on the share - * - * @param string $path - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function del(string $path): bool { - return $this->getState()->unlink($this->buildUrl($path)); - } - - /** - * Rename a remote file - * - * @param string $from - * @param string $to - * @return bool - * - * @throws NotFoundException - * @throws AlreadyExistsException - */ - public function rename(string $from, string $to): bool { - return $this->getState()->rename($this->buildUrl($from), $this->buildUrl($to)); - } - - /** - * Upload a local file - * - * @param string $source local file - * @param string $target remove file - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function put(string $source, string $target): bool { - $sourceHandle = fopen($source, 'rb'); - $targetUrl = $this->buildUrl($target); - - $targetHandle = $this->getState()->create($targetUrl); - - while ($data = fread($sourceHandle, NativeReadStream::CHUNK_SIZE)) { - $this->getState()->write($targetHandle, $data, $targetUrl); - } - $this->getState()->close($targetHandle, $targetUrl); - return true; - } - - /** - * Download a remote file - * - * @param string $source remove file - * @param string $target local file - * @return bool - * - * @throws AuthenticationException - * @throws ConnectionException - * @throws InvalidHostException - * @throws InvalidPathException - * @throws InvalidResourceException - */ - public function get(string $source, string $target): bool { - if (!$target) { - throw new InvalidPathException('Invalid target path: Filename cannot be empty'); - } - - $sourceHandle = $this->getState()->open($this->buildUrl($source), 'r'); - - $targetHandle = @fopen($target, 'wb'); - if (!$targetHandle) { - $error = error_get_last(); - if (is_array($error)) { - $reason = $error['message']; - } else { - $reason = 'Unknown error'; - } - $this->getState()->close($sourceHandle, $this->buildUrl($source)); - throw new InvalidResourceException('Failed opening local file "' . $target . '" for writing: ' . $reason); - } - - while ($data = $this->getState()->read($sourceHandle, NativeReadStream::CHUNK_SIZE, $source)) { - fwrite($targetHandle, $data); - } - $this->getState()->close($sourceHandle, $this->buildUrl($source)); - return true; - } - - /** - * Open a readable stream to a remote file - * - * @param string $source - * @return resource a read only stream with the contents of the remote file - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function read(string $source) { - $url = $this->buildUrl($source); - $handle = $this->getState()->open($url, 'r'); - return NativeReadStream::wrap($this->getState(), $handle, 'r', $url); - } - - /** - * Open a writeable stream to a remote file - * Note: This method will truncate the file to 0bytes first - * - * @param string $target - * @return resource a writeable stream - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function write(string $target) { - $url = $this->buildUrl($target); - $handle = $this->getState()->create($url); - return NativeWriteStream::wrap($this->getState(), $handle, 'w', $url); - } - - /** - * Open a writeable stream and set the cursor to the end of the stream - * - * @param string $target - * @return resource a writeable stream - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function append(string $target) { - $url = $this->buildUrl($target); - $handle = $this->getState()->open($url, "a+"); - return NativeWriteStream::wrap($this->getState(), $handle, "a", $url); - } - - /** - * Get extended attributes for the path - * - * @param string $path - * @param string $attribute attribute to get the info - * @return string the attribute value - */ - public function getAttribute(string $path, string $attribute): string { - return $this->getState()->getxattr($this->buildUrl($path), $attribute); - } - - /** - * Set extended attributes for the given path - * - * @param string $path - * @param string $attribute attribute to get the info - * @param string|int $value - * @return mixed the attribute value - */ - public function setAttribute(string $path, string $attribute, $value) { - if (is_int($value)) { - if ($attribute === 'system.dos_attr.mode') { - $value = '0x' . dechex($value); - } else { - throw new \InvalidArgumentException("Invalid value for attribute"); - } - } - - return $this->getState()->setxattr($this->buildUrl($path), $attribute, $value); - } - - /** - * Set DOS comaptible node mode - * - * @param string $path - * @param int $mode a combination of FileInfo::MODE_READONLY, FileInfo::MODE_ARCHIVE, FileInfo::MODE_SYSTEM and FileInfo::MODE_HIDDEN, FileInfo::NORMAL - * @return mixed - */ - public function setMode(string $path, int $mode) { - return $this->setAttribute($path, 'system.dos_attr.mode', $mode); - } - - /** - * Start smb notify listener - * Note: This is a blocking call - * - * @param string $path - * @return INotifyHandler - */ - public function notify(string $path): INotifyHandler { - // php-smbclient does not support notify (https://github.com/eduardok/libsmbclient-php/issues/29) - // so we use the smbclient based backend for this - if (!Server::available($this->server->getSystem())) { - throw new DependencyException('smbclient not found in path for notify command'); - } - $share = new Share($this->server, $this->getName(), $this->server->getSystem()); - return $share->notify($path); - } - - public function getServer(): IServer { - return $this->server; - } - - public function __destruct() { - unset($this->state); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeState.php b/apps/files_external/3rdparty/icewind/smb/src/Native/NativeState.php deleted file mode 100644 index 99cef052d55..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeState.php +++ /dev/null @@ -1,433 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Native; - -use Icewind\SMB\Exception\AlreadyExistsException; -use Icewind\SMB\Exception\ConnectionException; -use Icewind\SMB\Exception\ConnectionRefusedException; -use Icewind\SMB\Exception\ConnectionResetException; -use Icewind\SMB\Exception\Exception; -use Icewind\SMB\Exception\FileInUseException; -use Icewind\SMB\Exception\ForbiddenException; -use Icewind\SMB\Exception\HostDownException; -use Icewind\SMB\Exception\InvalidArgumentException; -use Icewind\SMB\Exception\InvalidTypeException; -use Icewind\SMB\Exception\ConnectionAbortedException; -use Icewind\SMB\Exception\NoRouteToHostException; -use Icewind\SMB\Exception\NotEmptyException; -use Icewind\SMB\Exception\NotFoundException; -use Icewind\SMB\Exception\OutOfSpaceException; -use Icewind\SMB\Exception\TimedOutException; -use Icewind\SMB\IAuth; -use Icewind\SMB\IOptions; - -/** - * Low level wrapper for libsmbclient-php with error handling - */ -class NativeState { - /** @var resource|null */ - protected $state = null; - - /** @var bool */ - protected $connected = false; - - /** - * sync the garbage collection cycle - * __deconstruct() of KerberosAuth should not called too soon - * - * @var IAuth|null $auth - */ - protected $auth = null; - - // see error.h - const EXCEPTION_MAP = [ - 1 => ForbiddenException::class, - 2 => NotFoundException::class, - 13 => ForbiddenException::class, - 16 => FileInUseException::class, - 17 => AlreadyExistsException::class, - 20 => InvalidTypeException::class, - 21 => InvalidTypeException::class, - 22 => InvalidArgumentException::class, - 28 => OutOfSpaceException::class, - 39 => NotEmptyException::class, - 103 => ConnectionAbortedException::class, - 104 => ConnectionResetException::class, - 110 => TimedOutException::class, - 111 => ConnectionRefusedException::class, - 112 => HostDownException::class, - 113 => NoRouteToHostException::class - ]; - - protected function handleError(?string $path): void { - if (!$this->state) { - return; - } - $error = smbclient_state_errno($this->state); - if ($error === 0) { - return; - } - throw Exception::fromMap(self::EXCEPTION_MAP, $error, $path); - } - - /** - * @param mixed $result - * @param string|null $uri - * @throws Exception - */ - protected function testResult($result, ?string $uri): void { - if ($result === false or $result === null) { - // smb://host/share/path - if (is_string($uri) && count(explode('/', $uri, 5)) > 4) { - list(, , , , $path) = explode('/', $uri, 5); - $path = '/' . $path; - } else { - $path = $uri; - } - $this->handleError($path); - } - } - - /** - * @param IAuth $auth - * @param IOptions $options - * @return bool - */ - public function init(IAuth $auth, IOptions $options) { - if ($this->connected) { - return true; - } - /** @var resource $state */ - $state = smbclient_state_new(); - $this->state = $state; - /** @psalm-suppress UnusedFunctionCall */ - smbclient_option_set($this->state, SMBCLIENT_OPT_AUTO_ANONYMOUS_LOGIN, false); - /** @psalm-suppress UnusedFunctionCall */ - smbclient_option_set($this->state, SMBCLIENT_OPT_TIMEOUT, $options->getTimeout() * 1000); - - if (function_exists('smbclient_client_protocols')) { - smbclient_client_protocols($this->state, $options->getMinProtocol(), $options->getMaxProtocol()); - } - - $auth->setExtraSmbClientOptions($this->state); - - // sync the garbage collection cycle - // __deconstruct() of KerberosAuth should not caled too soon - $this->auth = $auth; - - $result = @smbclient_state_init($this->state, $auth->getWorkgroup(), $auth->getUsername(), $auth->getPassword()); - - $this->testResult($result, ''); - $this->connected = true; - return $result; - } - - /** - * @param string $uri - * @return resource - */ - public function opendir(string $uri) { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - /** @var resource $result */ - $result = @smbclient_opendir($this->state, $uri); - - $this->testResult($result, $uri); - return $result; - } - - /** - * @param resource $dir - * @param string $path - * @return array{"type": string, "comment": string, "name": string}|false - */ - public function readdir($dir, string $path) { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - /** @var array{"type": string, "comment": string, "name": string}|false $result */ - $result = @smbclient_readdir($this->state, $dir); - - $this->testResult($result, $path); - return $result; - } - - /** - * @param resource $dir - * @param string $path - * @return bool - */ - public function closedir($dir, string $path): bool { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - $result = @smbclient_closedir($this->state, $dir); - - $this->testResult($result, $path); - return $result; - } - - /** - * @param string $old - * @param string $new - * @return bool - */ - public function rename(string $old, string $new): bool { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - $result = @smbclient_rename($this->state, $old, $this->state, $new); - - $this->testResult($result, $new); - return $result; - } - - /** - * @param string $uri - * @return bool - */ - public function unlink(string $uri): bool { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - $result = @smbclient_unlink($this->state, $uri); - - $this->testResult($result, $uri); - return $result; - } - - /** - * @param string $uri - * @param int $mask - * @return bool - */ - public function mkdir(string $uri, int $mask = 0777): bool { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - $result = @smbclient_mkdir($this->state, $uri, $mask); - - $this->testResult($result, $uri); - return $result; - } - - /** - * @param string $uri - * @return bool - */ - public function rmdir(string $uri): bool { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - $result = @smbclient_rmdir($this->state, $uri); - - $this->testResult($result, $uri); - return $result; - } - - /** - * @param string $uri - * @return array{"mtime": int, "size": int, "mode": int} - */ - public function stat(string $uri): array { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - /** @var array{"mtime": int, "size": int, "mode": int} $result */ - $result = @smbclient_stat($this->state, $uri); - - $this->testResult($result, $uri); - return $result; - } - - /** - * @param resource $file - * @param string $path - * @return array{"mtime": int, "size": int, "mode": int} - */ - public function fstat($file, string $path): array { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - /** @var array{"mtime": int, "size": int, "mode": int} $result */ - $result = @smbclient_fstat($this->state, $file); - - $this->testResult($result, $path); - return $result; - } - - /** - * @param string $uri - * @param string $mode - * @param int $mask - * @return resource - */ - public function open(string $uri, string $mode, int $mask = 0666) { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - /** @var resource $result */ - $result = @smbclient_open($this->state, $uri, $mode, $mask); - - $this->testResult($result, $uri); - return $result; - } - - /** - * @param string $uri - * @param int $mask - * @return resource - */ - public function create(string $uri, int $mask = 0666) { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - /** @var resource $result */ - $result = @smbclient_creat($this->state, $uri, $mask); - - $this->testResult($result, $uri); - return $result; - } - - /** - * @param resource $file - * @param int $bytes - * @param string $path - * @return string - */ - public function read($file, int $bytes, string $path): string { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - /** @var string $result */ - $result = @smbclient_read($this->state, $file, $bytes); - - $this->testResult($result, $path); - return $result; - } - - /** - * @param resource $file - * @param string $data - * @param string $path - * @param int|null $length - * @return int - */ - public function write($file, string $data, string $path, ?int $length = null): int { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - if ($length) { - $result = @smbclient_write($this->state, $file, $data, $length); - } else { - $result = @smbclient_write($this->state, $file, $data); - } - - $this->testResult($result, $path); - if ($result === false) { - return 0; - } - return $result; - } - - /** - * @param resource $file - * @param int $offset - * @param int $whence SEEK_SET | SEEK_CUR | SEEK_END - * @param string|null $path - * - * @return false|int new file offset as measured from the start of the file on success. - */ - public function lseek($file, int $offset, int $whence = SEEK_SET, string $path = null) { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - // psalm doesn't think int|false == int|false for some reason, so we do a needless annotation to help it out - /** - * @psalm-suppress UnnecessaryVarAnnotation - * @var int|false $result - */ - $result = @smbclient_lseek($this->state, $file, $offset, $whence); - - $this->testResult($result, $path); - return $result; - } - - /** - * @param resource $file - * @param int $size - * @param string $path - * @return bool - */ - public function ftruncate($file, int $size, string $path): bool { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - $result = @smbclient_ftruncate($this->state, $file, $size); - - $this->testResult($result, $path); - return $result; - } - - /** - * @param resource $file - * @param string $path - * @return bool - */ - public function close($file, string $path): bool { - if (!$this->state) { - return false; - } - $result = @smbclient_close($this->state, $file); - - $this->testResult($result, $path); - return $result; - } - - /** - * @param string $uri - * @param string $key - * @return string - */ - public function getxattr(string $uri, string $key) { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - /** @var string $result */ - $result = @smbclient_getxattr($this->state, $uri, $key); - - $this->testResult($result, $uri); - return $result; - } - - /** - * @param string $uri - * @param string $key - * @param string $value - * @param int $flags - * @return bool - */ - public function setxattr(string $uri, string $key, string $value, int $flags = 0) { - if (!$this->state) { - throw new ConnectionException("Not connected"); - } - /** @var bool $result */ - $result = @smbclient_setxattr($this->state, $uri, $key, $value, $flags); - - $this->testResult($result, $uri); - return $result; - } - - public function __destruct() { - if ($this->connected && $this->state) { - if (smbclient_state_free($this->state) === false) { - throw new Exception("Failed to free smb state"); - } - } - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeStream.php b/apps/files_external/3rdparty/icewind/smb/src/Native/NativeStream.php deleted file mode 100644 index 6916660906f..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeStream.php +++ /dev/null @@ -1,158 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Native; - -use Icewind\SMB\Exception\Exception; -use Icewind\SMB\Exception\InvalidRequestException; -use Icewind\Streams\File; -use InvalidArgumentException; - -abstract class NativeStream implements File { - /** - * @var resource - * @psalm-suppress PropertyNotSetInConstructor - */ - public $context; - - /** - * @var NativeState - * @psalm-suppress PropertyNotSetInConstructor - */ - protected $state; - - /** - * @var resource - * @psalm-suppress PropertyNotSetInConstructor - */ - protected $handle; - - /** - * @var bool - */ - protected $eof = false; - - /** - * @var string - */ - protected $url = ''; - - /** - * Wrap a stream from libsmbclient-php into a regular php stream - * - * @param NativeState $state - * @param resource $smbStream - * @param string $mode - * @param string $url - * @param class-string<NativeStream> $class - * @return resource - */ - protected static function wrapClass(NativeState $state, $smbStream, string $mode, string $url, string $class) { - if (stream_wrapper_register('nativesmb', $class) === false) { - throw new Exception("Failed to register stream wrapper"); - } - $context = stream_context_create([ - 'nativesmb' => [ - 'state' => $state, - 'handle' => $smbStream, - 'url' => $url - ] - ]); - $fh = fopen('nativesmb://', $mode, false, $context); - if (stream_wrapper_unregister('nativesmb') === false) { - throw new Exception("Failed to unregister stream wrapper"); - } - return $fh; - } - - public function stream_close() { - try { - return $this->state->close($this->handle, $this->url); - } catch (\Exception $e) { - return false; - } - } - - public function stream_eof() { - return $this->eof; - } - - public function stream_flush() { - return false; - } - - - public function stream_open($path, $mode, $options, &$opened_path) { - $context = stream_context_get_options($this->context); - if (!isset($context['nativesmb']) || !is_array($context['nativesmb'])) { - throw new InvalidArgumentException("context not set"); - } - $state = $context['nativesmb']['state']; - if (!$state instanceof NativeState) { - throw new InvalidArgumentException("invalid context set"); - } - $this->state = $state; - $handle = $context['nativesmb']['handle']; - if (!is_resource($handle)) { - throw new InvalidArgumentException("invalid context set"); - } - $this->handle = $handle; - $url = $context['nativesmb']['url']; - if (!is_string($url)) { - throw new InvalidArgumentException("invalid context set"); - } - $this->url = $url; - return true; - } - - public function stream_read($count) { - $result = $this->state->read($this->handle, $count, $this->url); - if (strlen($result) < $count) { - $this->eof = true; - } - return $result; - } - - public function stream_seek($offset, $whence = SEEK_SET) { - $this->eof = false; - try { - return $this->state->lseek($this->handle, $offset, $whence, $this->url) !== false; - } catch (InvalidRequestException $e) { - return false; - } - } - - /** - * @return array{"mtime": int, "size": int, "mode": int}|false - */ - public function stream_stat() { - try { - return $this->state->fstat($this->handle, $this->url); - } catch (Exception $e) { - return false; - } - } - - public function stream_tell() { - return $this->state->lseek($this->handle, 0, SEEK_CUR, $this->url); - } - - public function stream_write($data) { - return $this->state->write($this->handle, $data, $this->url); - } - - public function stream_truncate($size) { - return $this->state->ftruncate($this->handle, $size, $this->url); - } - - public function stream_set_option($option, $arg1, $arg2) { - return false; - } - - public function stream_lock($operation) { - return false; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeWriteStream.php b/apps/files_external/3rdparty/icewind/smb/src/Native/NativeWriteStream.php deleted file mode 100644 index f09c80eec7c..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeWriteStream.php +++ /dev/null @@ -1,95 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Native; - -use Icewind\SMB\StringBuffer; - -/** - * Stream optimized for write only usage - */ -class NativeWriteStream extends NativeStream { - const CHUNK_SIZE = 1048576; // 1MB chunks - - /** @var StringBuffer */ - private $writeBuffer; - - /** @var int */ - private $pos = 0; - - public function __construct() { - $this->writeBuffer = new StringBuffer(); - } - - public function stream_open($path, $mode, $options, &$opened_path): bool { - return parent::stream_open($path, $mode, $options, $opened_path); - } - - /** - * Wrap a stream from libsmbclient-php into a regular php stream - * - * @param NativeState $state - * @param resource $smbStream - * @param string $mode - * @param string $url - * @return resource - */ - public static function wrap(NativeState $state, $smbStream, string $mode, string $url) { - return parent::wrapClass($state, $smbStream, $mode, $url, NativeWriteStream::class); - } - - public function stream_seek($offset, $whence = SEEK_SET) { - $this->flushWrite(); - $result = parent::stream_seek($offset, $whence); - if ($result) { - $pos = parent::stream_tell(); - if ($pos === false) { - return false; - } - $this->pos = $pos; - } - return $result; - } - - private function flushWrite(): void { - parent::stream_write($this->writeBuffer->flush()); - } - - public function stream_write($data) { - $written = $this->writeBuffer->push($data); - $this->pos += $written; - - if ($this->writeBuffer->remaining() >= self::CHUNK_SIZE) { - $this->flushWrite(); - } - - return $written; - } - - public function stream_close() { - try { - $this->flushWrite(); - $flushResult = true; - } catch (\Exception $e) { - $flushResult = false; - } - return parent::stream_close() && $flushResult; - } - - public function stream_tell() { - return $this->pos; - } - - public function stream_read($count) { - return false; - } - - public function stream_truncate($size) { - $this->flushWrite(); - $this->pos = $size; - return parent::stream_truncate($size); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Options.php b/apps/files_external/3rdparty/icewind/smb/src/Options.php deleted file mode 100644 index f250d4defb3..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Options.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2018 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\SMB; - -class Options implements IOptions { - /** @var int */ - private $timeout = 20; - - /** @var string|null */ - private $minProtocol; - /** @var string|null */ - private $maxProtocol; - - public function getTimeout(): int { - return $this->timeout; - } - - public function setTimeout(int $timeout): void { - $this->timeout = $timeout; - } - - public function getMinProtocol(): ?string { - return $this->minProtocol; - } - - public function setMinProtocol(?string $minProtocol): void { - $this->minProtocol = $minProtocol; - } - - public function getMaxProtocol(): ?string { - return $this->maxProtocol; - } - - public function setMaxProtocol(?string $maxProtocol): void { - $this->maxProtocol = $maxProtocol; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/ServerFactory.php b/apps/files_external/3rdparty/icewind/smb/src/ServerFactory.php deleted file mode 100644 index ee7e5af83bb..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/ServerFactory.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2018 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\SMB; - -use Icewind\SMB\Exception\DependencyException; -use Icewind\SMB\Native\NativeServer; -use Icewind\SMB\Wrapped\Server; - -class ServerFactory { - const BACKENDS = [ - NativeServer::class, - Server::class - ]; - - /** @var ISystem */ - private $system; - - /** @var IOptions */ - private $options; - - /** @var ITimeZoneProvider */ - private $timeZoneProvider; - - /** - * ServerFactory constructor. - * - * @param IOptions|null $options - * @param ISystem|null $system - * @param ITimeZoneProvider|null $timeZoneProvider - */ - public function __construct( - ?IOptions $options = null, - ?ISystem $system = null, - ?ITimeZoneProvider $timeZoneProvider = null - ) { - if (is_null($options)) { - $options = new Options(); - } - if (is_null($system)) { - $system = new System(); - } - if (is_null($timeZoneProvider)) { - $timeZoneProvider = new TimeZoneProvider($system); - } - $this->options = $options; - $this->system = $system; - $this->timeZoneProvider = $timeZoneProvider; - } - - - /** - * @param string $host - * @param IAuth $credentials - * @return IServer - * @throws DependencyException - */ - public function createServer(string $host, IAuth $credentials): IServer { - foreach (self::BACKENDS as $backend) { - if (call_user_func("$backend::available", $this->system)) { - return new $backend($host, $credentials, $this->system, $this->timeZoneProvider, $this->options); - } - } - - throw new DependencyException('No valid backend available, ensure smbclient is in the path or php-smbclient is installed'); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/StringBuffer.php b/apps/files_external/3rdparty/icewind/smb/src/StringBuffer.php deleted file mode 100644 index 56d14edb857..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/StringBuffer.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php - -declare(strict_types=1); -/** - * SPDX-FileCopyrightText: 2021 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\SMB; - -class StringBuffer { - /** @var string */ - private $buffer = ""; - /** @var int */ - private $pos = 0; - - public function clear(): void { - $this->buffer = ""; - $this->pos = 0; - } - - public function push(string $data): int { - $this->buffer = $this->flush() . $data; - return strlen($data); - } - - public function remaining(): int { - return strlen($this->buffer) - $this->pos; - } - - public function read(int $count): string { - $chunk = substr($this->buffer, $this->pos, $count); - $this->pos += strlen($chunk); - return $chunk; - } - - public function flush(): string { - if ($this->pos === 0) { - $remaining = $this->buffer; - } else { - $remaining = substr($this->buffer, $this->pos); - } - - $this->clear(); - - return $remaining; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/System.php b/apps/files_external/3rdparty/icewind/smb/src/System.php deleted file mode 100644 index 2867b8eec42..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/System.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB; - -use Icewind\SMB\Exception\Exception; - -class System implements ISystem { - /** @var (string|null)[] */ - private $paths = []; - - /** - * Get the path to a file descriptor of the current process - * - * @param int $num the file descriptor id - * @return string - * @throws Exception - */ - public function getFD(int $num): string { - $folders = [ - '/proc/self/fd', - '/dev/fd' - ]; - foreach ($folders as $folder) { - if (file_exists($folder)) { - return $folder . '/' . $num; - } - } - throw new Exception('Cant find file descriptor path'); - } - - public function getSmbclientPath(): ?string { - return $this->getBinaryPath('smbclient'); - } - - public function getNetPath(): ?string { - return $this->getBinaryPath('net'); - } - - public function getSmbcAclsPath(): ?string { - return $this->getBinaryPath('smbcacls'); - } - - public function getStdBufPath(): ?string { - return $this->getBinaryPath('stdbuf'); - } - - public function getDatePath(): ?string { - return $this->getBinaryPath('date'); - } - - public function libSmbclientAvailable(): bool { - return function_exists('smbclient_state_new'); - } - - protected function getBinaryPath(string $binary): ?string { - if (!isset($this->paths[$binary])) { - $result = null; - $output = []; - exec("which $binary 2>&1", $output, $result); - - if ($result === 0 && isset($output[0])) { - $this->paths[$binary] = (string)$output[0]; - } elseif (is_executable("/usr/bin/$binary")) { - $this->paths[$binary] = "/usr/bin/$binary"; - } else { - $this->paths[$binary] = null; - } - } - return $this->paths[$binary]; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/TimeZoneProvider.php b/apps/files_external/3rdparty/icewind/smb/src/TimeZoneProvider.php deleted file mode 100644 index f1d2c38f634..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/TimeZoneProvider.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2015 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ -namespace Icewind\SMB; - -class TimeZoneProvider implements ITimeZoneProvider { - /** - * @var string[] - */ - private $timeZones = []; - - /** - * @var ISystem - */ - private $system; - - /** - * @param ISystem $system - */ - public function __construct(ISystem $system) { - $this->system = $system; - } - - public function get(string $host): string { - if (!isset($this->timeZones[$host])) { - $timeZone = null; - $net = $this->system->getNetPath(); - // for local domain names we can assume same timezone - if ($net && $host && strpos($host, '.') !== false) { - $command = sprintf( - '%s time zone -S %s', - $net, - escapeshellarg($host) - ); - $timeZone = exec($command); - } - - if (!$timeZone) { - $date = $this->system->getDatePath(); - if ($date) { - $timeZone = exec($date . " +%z"); - } else { - $timeZone = date_default_timezone_get(); - } - } - $this->timeZones[$host] = $timeZone; - } - return $this->timeZones[$host]; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Connection.php b/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Connection.php deleted file mode 100644 index 95e63fb16d9..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Connection.php +++ /dev/null @@ -1,115 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Wrapped; - -use Icewind\SMB\Exception\AccessDeniedException; -use Icewind\SMB\Exception\AuthenticationException; -use Icewind\SMB\Exception\ConnectException; -use Icewind\SMB\Exception\ConnectionException; -use Icewind\SMB\Exception\ConnectionRefusedException; -use Icewind\SMB\Exception\InvalidHostException; -use Icewind\SMB\Exception\NoLoginServerException; - -class Connection extends RawConnection { - const DELIMITER = 'smb:'; - const DELIMITER_LENGTH = 4; - - /** @var Parser */ - private $parser; - - /** - * @param string $command - * @param Parser $parser - * @param array<string, string> $env - */ - public function __construct(string $command, Parser $parser, array $env = []) { - parent::__construct($command, $env); - $this->parser = $parser; - } - - /** - * send input to smbclient - * - * @param string $input - */ - public function write(string $input) { - return parent::write($input . PHP_EOL); - } - - /** - * @throws ConnectException - */ - public function clearTillPrompt(): void { - $this->write(''); - do { - $promptLine = $this->readTillPrompt(); - if ($promptLine === false) { - break; - } - $this->parser->checkConnectionError($promptLine); - } while (!$this->isPrompt($promptLine)); - if ($this->write('') === false) { - throw new ConnectionRefusedException(); - } - $this->readTillPrompt(); - } - - /** - * get all unprocessed output from smbclient until the next prompt - * - * @return string[] - * @throws AuthenticationException - * @throws ConnectException - * @throws ConnectionException - * @throws InvalidHostException - * @throws NoLoginServerException - * @throws AccessDeniedException - */ - public function read(): array { - if (!$this->isValid()) { - throw new ConnectionException('Connection not valid'); - } - $output = $this->readTillPrompt(); - if ($output === false) { - $this->unknownError(false); - } - $output = explode("\n", $output); - // last line contains the prompt - array_pop($output); - return $output; - } - - private function isPrompt(string $line): bool { - return substr($line, 0, self::DELIMITER_LENGTH) === self::DELIMITER; - } - - /** - * @param string|bool $promptLine (optional) prompt line that might contain some info about the error - * @throws ConnectException - * @return no-return - */ - private function unknownError($promptLine = '') { - if ($promptLine) { //maybe we have some error we missed on the previous line - throw new ConnectException('Unknown error (' . $promptLine . ')'); - } else { - $error = $this->readError(); // maybe something on stderr - if ($error) { - throw new ConnectException('Unknown error (stderr: ' . $error . ')'); - } else { - throw new ConnectException('Unknown error'); - } - } - } - - public function close(bool $terminate = true): void { - if (get_resource_type($this->getInputStream()) === 'stream') { - // ignore any errors while trying to send the close command, the process might already be dead - @$this->write('close' . PHP_EOL); - } - $this->close_process($terminate); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/ErrorCodes.php b/apps/files_external/3rdparty/icewind/smb/src/Wrapped/ErrorCodes.php deleted file mode 100644 index c053f7b4a8e..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/ErrorCodes.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Wrapped; - -class ErrorCodes { - /** - * connection errors - */ - const LogonFailure = 'NT_STATUS_LOGON_FAILURE'; - const BadHostName = 'NT_STATUS_BAD_NETWORK_NAME'; - const Unsuccessful = 'NT_STATUS_UNSUCCESSFUL'; - const ConnectionRefused = 'NT_STATUS_CONNECTION_REFUSED'; - const NoLogonServers = 'NT_STATUS_NO_LOGON_SERVERS'; - - const PathNotFound = 'NT_STATUS_OBJECT_PATH_NOT_FOUND'; - const NoSuchFile = 'NT_STATUS_NO_SUCH_FILE'; - const ObjectNotFound = 'NT_STATUS_OBJECT_NAME_NOT_FOUND'; - const NameCollision = 'NT_STATUS_OBJECT_NAME_COLLISION'; - const AccessDenied = 'NT_STATUS_ACCESS_DENIED'; - const DirectoryNotEmpty = 'NT_STATUS_DIRECTORY_NOT_EMPTY'; - const FileIsADirectory = 'NT_STATUS_FILE_IS_A_DIRECTORY'; - const NotADirectory = 'NT_STATUS_NOT_A_DIRECTORY'; - const SharingViolation = 'NT_STATUS_SHARING_VIOLATION'; - const InvalidParameter = 'NT_STATUS_INVALID_PARAMETER'; - const RevisionMismatch = 'NT_STATUS_REVISION_MISMATCH'; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/FileInfo.php b/apps/files_external/3rdparty/icewind/smb/src/Wrapped/FileInfo.php deleted file mode 100644 index 5e957bd6fec..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/FileInfo.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Wrapped; - -use Icewind\SMB\ACL; -use Icewind\SMB\IFileInfo; - -class FileInfo implements IFileInfo { - /** @var string */ - protected $path; - /** @var string */ - protected $name; - /** @var int */ - protected $size; - /** @var int */ - protected $time; - /** @var int */ - protected $mode; - /** @var callable(): ACL[] */ - protected $aclCallback; - - /** - * @param string $path - * @param string $name - * @param int $size - * @param int $time - * @param int $mode - * @param callable(): ACL[] $aclCallback - */ - public function __construct(string $path, string $name, int $size, int $time, int $mode, callable $aclCallback) { - $this->path = $path; - $this->name = $name; - $this->size = $size; - $this->time = $time; - $this->mode = $mode; - $this->aclCallback = $aclCallback; - } - - /** - * @return string - */ - public function getPath(): string { - return $this->path; - } - - public function getName(): string { - return $this->name; - } - - public function getSize(): int { - return $this->size; - } - - public function getMTime(): int { - return $this->time; - } - - public function isDirectory(): bool { - return (bool)($this->mode & IFileInfo::MODE_DIRECTORY); - } - - public function isReadOnly(): bool { - return (bool)($this->mode & IFileInfo::MODE_READONLY); - } - - public function isHidden(): bool { - return (bool)($this->mode & IFileInfo::MODE_HIDDEN); - } - - public function isSystem(): bool { - return (bool)($this->mode & IFileInfo::MODE_SYSTEM); - } - - public function isArchived(): bool { - return (bool)($this->mode & IFileInfo::MODE_ARCHIVE); - } - - /** - * @return ACL[] - */ - public function getAcls(): array { - return ($this->aclCallback)(); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/NotifyHandler.php b/apps/files_external/3rdparty/icewind/smb/src/Wrapped/NotifyHandler.php deleted file mode 100644 index 7063873460d..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/NotifyHandler.php +++ /dev/null @@ -1,111 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2016 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Wrapped; - -use Icewind\SMB\Change; -use Icewind\SMB\Exception\Exception; -use Icewind\SMB\Exception\RevisionMismatchException; -use Icewind\SMB\INotifyHandler; - -class NotifyHandler implements INotifyHandler { - /** @var Connection */ - private $connection; - - /** @var string */ - private $path; - - /** @var bool */ - private $listening = true; - - // see error.h - const EXCEPTION_MAP = [ - ErrorCodes::RevisionMismatch => RevisionMismatchException::class, - ]; - - /** - * @param Connection $connection - * @param string $path - */ - public function __construct(Connection $connection, string $path) { - $this->connection = $connection; - $this->path = $path; - } - - /** - * Get all changes detected since the start of the notify process or the last call to getChanges - * - * @return Change[] - */ - public function getChanges(): array { - if (!$this->listening) { - return []; - } - stream_set_blocking($this->connection->getOutputStream(), false); - $lines = []; - while (($line = $this->connection->readLine())) { - $this->checkForError($line); - $lines[] = $line; - } - stream_set_blocking($this->connection->getOutputStream(), true); - return array_values(array_filter(array_map([$this, 'parseChangeLine'], $lines))); - } - - /** - * Listen actively to all incoming changes - * - * Note that this is a blocking process and will cause the process to block forever if not explicitly terminated - * - * @param callable(Change):?bool $callback - */ - public function listen(callable $callback): void { - if ($this->listening) { - while (true) { - $line = $this->connection->readLine(); - if ($line === false) { - break; - } - $this->checkForError($line); - $change = $this->parseChangeLine($line); - if ($change) { - $result = $callback($change); - if ($result === false) { - break; - } - } - }; - } - } - - private function parseChangeLine(string $line): ?Change { - $code = (int)substr($line, 0, 4); - if ($code === 0) { - return null; - } - $subPath = str_replace('\\', '/', substr($line, 5)); - if ($this->path === '') { - return new Change($code, $subPath); - } else { - return new Change($code, $this->path . '/' . $subPath); - } - } - - private function checkForError(string $line): void { - if (substr($line, 0, 16) === 'notify returned ') { - $error = substr($line, 16); - throw Exception::fromMap(array_merge(self::EXCEPTION_MAP, Parser::EXCEPTION_MAP), $error, 'Notify is not supported with the used smb version'); - } - } - - public function stop(): void { - $this->listening = false; - $this->connection->close(); - } - - public function __destruct() { - $this->stop(); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Parser.php b/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Parser.php deleted file mode 100644 index 06812ee61ef..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Parser.php +++ /dev/null @@ -1,276 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Wrapped; - -use Icewind\SMB\ACL; -use Icewind\SMB\Exception\AccessDeniedException; -use Icewind\SMB\Exception\AlreadyExistsException; -use Icewind\SMB\Exception\AuthenticationException; -use Icewind\SMB\Exception\Exception; -use Icewind\SMB\Exception\FileInUseException; -use Icewind\SMB\Exception\InvalidHostException; -use Icewind\SMB\Exception\InvalidParameterException; -use Icewind\SMB\Exception\InvalidResourceException; -use Icewind\SMB\Exception\InvalidTypeException; -use Icewind\SMB\Exception\NoLoginServerException; -use Icewind\SMB\Exception\NotEmptyException; -use Icewind\SMB\Exception\NotFoundException; - -class Parser { - const MSG_NOT_FOUND = 'Error opening local file '; - - /** - * @var string - */ - protected $timeZone; - - // see error.h - const EXCEPTION_MAP = [ - ErrorCodes::LogonFailure => AuthenticationException::class, - ErrorCodes::PathNotFound => NotFoundException::class, - ErrorCodes::ObjectNotFound => NotFoundException::class, - ErrorCodes::NoSuchFile => NotFoundException::class, - ErrorCodes::NameCollision => AlreadyExistsException::class, - ErrorCodes::AccessDenied => AccessDeniedException::class, - ErrorCodes::DirectoryNotEmpty => NotEmptyException::class, - ErrorCodes::FileIsADirectory => InvalidTypeException::class, - ErrorCodes::NotADirectory => InvalidTypeException::class, - ErrorCodes::SharingViolation => FileInUseException::class, - ErrorCodes::InvalidParameter => InvalidParameterException::class - ]; - - const MODE_STRINGS = [ - 'R' => FileInfo::MODE_READONLY, - 'H' => FileInfo::MODE_HIDDEN, - 'S' => FileInfo::MODE_SYSTEM, - 'D' => FileInfo::MODE_DIRECTORY, - 'A' => FileInfo::MODE_ARCHIVE, - 'N' => FileInfo::MODE_NORMAL - ]; - - /** - * @param string $timeZone - */ - public function __construct(string $timeZone) { - $this->timeZone = $timeZone; - } - - private function getErrorCode(string $line): ?string { - $parts = explode(' ', $line); - foreach ($parts as $part) { - if (substr($part, 0, 9) === 'NT_STATUS') { - return $part; - } - } - return null; - } - - /** - * @param string[] $output - * @param string $path - * @return no-return - * @throws Exception - * @throws InvalidResourceException - * @throws NotFoundException - */ - public function checkForError(array $output, string $path): void { - if (strpos($output[0], 'does not exist')) { - throw new NotFoundException($path); - } - $error = $this->getErrorCode($output[0]); - - if (substr($output[0], 0, strlen(self::MSG_NOT_FOUND)) === self::MSG_NOT_FOUND) { - $localPath = substr($output[0], strlen(self::MSG_NOT_FOUND)); - throw new InvalidResourceException('Failed opening local file "' . $localPath . '" for writing'); - } - - throw Exception::fromMap(self::EXCEPTION_MAP, $error, $path); - } - - /** - * check if the first line holds a connection failure - * - * @param string $line - * @throws AuthenticationException - * @throws InvalidHostException - * @throws NoLoginServerException - * @throws AccessDeniedException - */ - public function checkConnectionError(string $line): void { - $line = rtrim($line, ')'); - if (substr($line, -23) === ErrorCodes::LogonFailure) { - throw new AuthenticationException('Invalid login'); - } - if (substr($line, -26) === ErrorCodes::BadHostName) { - throw new InvalidHostException('Invalid hostname'); - } - if (substr($line, -22) === ErrorCodes::Unsuccessful) { - throw new InvalidHostException('Connection unsuccessful'); - } - if (substr($line, -28) === ErrorCodes::ConnectionRefused) { - throw new InvalidHostException('Connection refused'); - } - if (substr($line, -26) === ErrorCodes::NoLogonServers) { - throw new NoLoginServerException('No login server'); - } - if (substr($line, -23) === ErrorCodes::AccessDenied) { - throw new AccessDeniedException('Access denied'); - } - } - - public function parseMode(string $mode): int { - $result = 0; - foreach (self::MODE_STRINGS as $char => $val) { - if (strpos($mode, $char) !== false) { - $result |= $val; - } - } - return $result; - } - - /** - * @param string[] $output - * @return array{"mtime": int, "mode": int, "size": int} - * @throws Exception - */ - public function parseStat(array $output): array { - $data = []; - foreach ($output as $line) { - // A line = explode statement may not fill all array elements - // properly. May happen when accessing non Windows Fileservers - $words = explode(':', $line, 2); - $name = isset($words[0]) ? $words[0] : ''; - $value = isset($words[1]) ? $words[1] : ''; - $value = trim($value); - - if (!isset($data[$name])) { - $data[$name] = $value; - } - } - $attributeStart = strpos($data['attributes'], '('); - if ($attributeStart === false) { - throw new Exception("Malformed state response from server"); - } - return [ - 'mtime' => strtotime($data['write_time']), - 'mode' => hexdec(substr($data['attributes'], $attributeStart + 1, -1)), - 'size' => isset($data['stream']) ? (int)(explode(' ', $data['stream'])[1]) : 0 - ]; - } - - /** - * @param string[] $output - * @param string $basePath - * @param callable(string):ACL[] $aclCallback - * @return FileInfo[] - */ - public function parseDir(array $output, string $basePath, callable $aclCallback): array { - //last line is used space - array_pop($output); - $regex = '/^\s*(.*?)\s\s\s\s+(?:([NDHARSCndharsc]*)\s+)?([0-9]+)\s+(.*)$/'; - //2 spaces, filename, optional type, size, date - $content = []; - foreach ($output as $line) { - if (preg_match($regex, $line, $matches)) { - list(, $name, $mode, $size, $time) = $matches; - if ($name !== '.' and $name !== '..') { - $mode = $this->parseMode(strtoupper($mode)); - $time = strtotime($time . ' ' . $this->timeZone); - $path = $basePath . '/' . $name; - $content[] = new FileInfo($path, $name, (int)$size, $time, $mode, function () use ($aclCallback, $path): array { - return $aclCallback($path); - }); - } - } - } - return $content; - } - - /** - * @param string[] $output - * @return array<string, string> - */ - public function parseListShares(array $output): array { - $shareNames = []; - foreach ($output as $line) { - if (strpos($line, '|')) { - list($type, $name, $description) = explode('|', $line); - if (strtolower($type) === 'disk') { - $shareNames[$name] = $description; - } - } elseif (strpos($line, 'Disk')) { - // new output format - list($name, $description) = explode('Disk', $line); - $shareNames[trim($name)] = trim($description); - } - } - return $shareNames; - } - - /** - * @param string[] $rawAcls - * @return ACL[] - */ - public function parseACLs(array $rawAcls): array { - $acls = []; - foreach ($rawAcls as $acl) { - if (strpos($acl, ':') === false) { - continue; - } - [$type, $acl] = explode(':', $acl, 2); - if ($type !== 'ACL') { - continue; - } - [$user, $permissions] = explode(':', $acl, 2); - [$type, $flags, $mask] = explode('/', $permissions); - - $type = $type === 'ALLOWED' ? ACL::TYPE_ALLOW : ACL::TYPE_DENY; - - $flagsInt = 0; - foreach (explode('|', $flags) as $flagString) { - if ($flagString === 'OI') { - $flagsInt += ACL::FLAG_OBJECT_INHERIT; - } elseif ($flagString === 'CI') { - $flagsInt += ACL::FLAG_CONTAINER_INHERIT; - } - } - - if (substr($mask, 0, 2) === '0x') { - $maskInt = hexdec($mask); - } else { - $maskInt = 0; - foreach (explode('|', $mask) as $maskString) { - if ($maskString === 'R') { - $maskInt += ACL::MASK_READ; - } elseif ($maskString === 'W') { - $maskInt += ACL::MASK_WRITE; - } elseif ($maskString === 'X') { - $maskInt += ACL::MASK_EXECUTE; - } elseif ($maskString === 'D') { - $maskInt += ACL::MASK_DELETE; - } elseif ($maskString === 'READ') { - $maskInt += ACL::MASK_READ + ACL::MASK_EXECUTE; - } elseif ($maskString === 'CHANGE') { - $maskInt += ACL::MASK_READ + ACL::MASK_EXECUTE + ACL::MASK_WRITE + ACL::MASK_DELETE; - } elseif ($maskString === 'FULL') { - $maskInt += ACL::MASK_READ + ACL::MASK_EXECUTE + ACL::MASK_WRITE + ACL::MASK_DELETE; - } - } - } - - if (isset($acls[$user])) { - $existing = $acls[$user]; - $maskInt += $existing->getMask(); - } - $acls[$user] = new ACL($type, $flagsInt, $maskInt); - } - - ksort($acls); - - return $acls; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/RawConnection.php b/apps/files_external/3rdparty/icewind/smb/src/Wrapped/RawConnection.php deleted file mode 100644 index 13828d28334..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/RawConnection.php +++ /dev/null @@ -1,250 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Wrapped; - -use Icewind\SMB\Exception\ConnectException; -use Icewind\SMB\Exception\ConnectionException; - -class RawConnection { - /** - * @var string - */ - private $command; - - /** - * @var string[] - */ - private $env; - - /** - * @var resource[] $pipes - * - * $pipes[0] holds STDIN for smbclient - * $pipes[1] holds STDOUT for smbclient - * $pipes[3] holds the authfile for smbclient - * $pipes[4] holds the stream for writing files - * $pipes[5] holds the stream for reading files - */ - private $pipes = []; - - /** - * @var resource|null $process - */ - private $process; - - /** - * @var resource|null $authStream - */ - private $authStream = null; - - /** - * @param string $command - * @param array<string, string> $env - */ - public function __construct(string $command, array $env = []) { - $this->command = $command; - $this->env = $env; - } - - /** - * @throws ConnectException - * @psalm-assert resource $this->process - */ - public function connect(): void { - if (is_null($this->getAuthStream())) { - throw new ConnectException('Authentication not set before connecting'); - } - - $descriptorSpec = [ - 0 => ['pipe', 'r'], // child reads from stdin - 1 => ['pipe', 'w'], // child writes to stdout - 2 => ['pipe', 'w'], // child writes to stderr - 3 => $this->getAuthStream(), // child reads from fd#3 - 4 => ['pipe', 'r'], // child reads from fd#4 - 5 => ['pipe', 'w'] // child writes to fd#5 - ]; - - setlocale(LC_ALL, Server::LOCALE); - $env = array_merge($this->env, [ - 'CLI_FORCE_INTERACTIVE' => 'y', // Make sure the prompt is displayed - 'CLI_NO_READLINE' => 1, // Not all distros build smbclient with readline, disable it to get consistent behaviour - 'LC_ALL' => Server::LOCALE, - 'LANG' => Server::LOCALE, - 'COLUMNS' => 8192, // prevent smbclient from line-wrapping it's output - 'TZ' => 'UTC', - ]); - $this->process = proc_open($this->command, $descriptorSpec, $this->pipes, '/', $env); - if (!$this->isValid()) { - throw new ConnectionException(); - } - } - - /** - * check if the connection is still active - * - * @return bool - * @psalm-assert-if-true resource $this->process - */ - public function isValid(): bool { - if (is_resource($this->process)) { - $status = proc_get_status($this->process); - return $status['running']; - } else { - return false; - } - } - - /** - * send input to the process - * - * @param string $input - * @return int|bool - */ - public function write(string $input) { - $result = @fwrite($this->getInputStream(), $input); - fflush($this->getInputStream()); - return $result; - } - - /** - * read output till the next prompt - * - * @return string|false - */ - public function readTillPrompt() { - $output = ""; - do { - $chunk = $this->readLine('\> '); - if ($chunk === false) { - return false; - } - $output .= $chunk; - } while (strlen($chunk) == 4096 && strpos($chunk, "smb:") === false); - return $output; - } - - /** - * read a line of output - * - * @return string|false - */ - public function readLine(string $end = "\n") { - return stream_get_line($this->getOutputStream(), 4096, $end); - } - - /** - * read a line of output - * - * @return string|false - */ - public function readError() { - $line = stream_get_line($this->getErrorStream(), 4086); - return $line !== false ? trim($line) : false; - } - - /** - * get all output until the process closes - * - * @return string[] - */ - public function readAll(): array { - $output = []; - while ($line = $this->readLine()) { - $output[] = $line; - } - return $output; - } - - /** - * @return resource - */ - public function getInputStream() { - return $this->pipes[0]; - } - - /** - * @return resource - */ - public function getOutputStream() { - return $this->pipes[1]; - } - - /** - * @return resource - */ - public function getErrorStream() { - return $this->pipes[2]; - } - - /** - * @return resource|null - */ - public function getAuthStream() { - return $this->authStream; - } - - /** - * @return resource - */ - public function getFileInputStream() { - return $this->pipes[4]; - } - - /** - * @return resource - */ - public function getFileOutputStream() { - return $this->pipes[5]; - } - - /** - * @param string|null $user - * @param string|null $password - * @psalm-assert resource $this->authStream - */ - public function writeAuthentication(?string $user, ?string $password): void { - $auth = ($password === null) - ? "username=$user" - : "username=$user\npassword=$password\n"; - - $this->authStream = fopen('php://temp', 'w+'); - fwrite($this->authStream, $auth); - rewind($this->authStream); - } - - /** - * @param bool $terminate - * @psalm-assert null $this->process - */ - public function close(bool $terminate = true): void { - $this->close_process($terminate); - } - - /** - * @param bool $terminate - * @psalm-assert null $this->process - */ - protected function close_process(bool $terminate = true): void { - if (!is_resource($this->process)) { - return; - } - if ($terminate) { - proc_terminate($this->process); - } - proc_close($this->process); - $this->process = null; - } - - public function reconnect(): void { - $this->close(); - $this->connect(); - } - - public function __destruct() { - $this->close(); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Server.php b/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Server.php deleted file mode 100644 index 6d6052966f7..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Server.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Wrapped; - -use Icewind\SMB\AbstractServer; -use Icewind\SMB\Exception\AuthenticationException; -use Icewind\SMB\Exception\ConnectException; -use Icewind\SMB\Exception\ConnectionException; -use Icewind\SMB\Exception\ConnectionRefusedException; -use Icewind\SMB\Exception\Exception; -use Icewind\SMB\Exception\InvalidHostException; -use Icewind\SMB\IShare; -use Icewind\SMB\ISystem; - -class Server extends AbstractServer { - /** - * Check if the smbclient php extension is available - * - * @param ISystem $system - * @return bool - */ - public static function available(ISystem $system): bool { - return $system->getSmbclientPath() !== null; - } - - private function getAuthFileArgument(): string { - if ($this->getAuth()->getUsername()) { - return '--authentication-file=' . $this->system->getFD(3); - } else { - return ''; - } - } - - /** - * @return IShare[] - * - * @throws AuthenticationException - * @throws InvalidHostException - * @throws ConnectException - */ - public function listShares(): array { - $maxProtocol = $this->options->getMaxProtocol(); - $minProtocol = $this->options->getMinProtocol(); - $smbClient = $this->system->getSmbclientPath(); - if ($smbClient === null) { - throw new Exception("Backend not available"); - } - $command = sprintf( - '%s %s %s %s %s -L %s', - $smbClient, - $this->getAuthFileArgument(), - $this->getAuth()->getExtraCommandLineArguments(), - $maxProtocol ? "--option='client max protocol=" . $maxProtocol . "'" : "", - $minProtocol ? "--option='client min protocol=" . $minProtocol . "'" : "", - escapeshellarg('//' . $this->getHost()) - ); - $connection = new RawConnection($command); - $connection->writeAuthentication($this->getAuth()->getUsername(), $this->getAuth()->getPassword()); - $connection->connect(); - if (!$connection->isValid()) { - throw new ConnectionException((string)$connection->readLine()); - } - - $parser = new Parser('UTC'); - - $output = $connection->readAll(); - if (isset($output[0])) { - $parser->checkConnectionError($output[0]); - } - - // sometimes we get an empty line first - if (count($output) < 2) { - $output = $connection->readAll(); - } - - if (isset($output[0])) { - $parser->checkConnectionError($output[0]); - } - if (count($output) === 0) { - throw new ConnectionRefusedException(); - } - - $shareNames = $parser->parseListShares($output); - - $shares = []; - foreach ($shareNames as $name => $_description) { - $shares[] = $this->getShare($name); - } - return $shares; - } - - /** - * @param string $name - * @return IShare - */ - public function getShare(string $name): IShare { - return new Share($this, $name, $this->system); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Share.php b/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Share.php deleted file mode 100644 index 63e1490d72c..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Share.php +++ /dev/null @@ -1,553 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\SMB\Wrapped; - -use Icewind\SMB\AbstractShare; -use Icewind\SMB\ACL; -use Icewind\SMB\Exception\AlreadyExistsException; -use Icewind\SMB\Exception\AuthenticationException; -use Icewind\SMB\Exception\ConnectException; -use Icewind\SMB\Exception\ConnectionException; -use Icewind\SMB\Exception\DependencyException; -use Icewind\SMB\Exception\Exception; -use Icewind\SMB\Exception\FileInUseException; -use Icewind\SMB\Exception\InvalidHostException; -use Icewind\SMB\Exception\InvalidTypeException; -use Icewind\SMB\Exception\NotFoundException; -use Icewind\SMB\Exception\InvalidRequestException; -use Icewind\SMB\IFileInfo; -use Icewind\SMB\INotifyHandler; -use Icewind\SMB\IServer; -use Icewind\SMB\ISystem; -use Icewind\Streams\CallbackWrapper; -use Icewind\SMB\Native\NativeShare; -use Icewind\SMB\Native\NativeServer; - -class Share extends AbstractShare { - /** - * @var IServer $server - */ - private $server; - - /** - * @var string $name - */ - private $name; - - /** - * @var Connection|null $connection - */ - public $connection = null; - - /** - * @var Parser - */ - protected $parser; - - /** - * @var ISystem - */ - private $system; - - const MODE_MAP = [ - FileInfo::MODE_READONLY => 'r', - FileInfo::MODE_HIDDEN => 'h', - FileInfo::MODE_ARCHIVE => 'a', - FileInfo::MODE_SYSTEM => 's' - ]; - - const EXEC_CMD = 'exec'; - - /** - * @param IServer $server - * @param string $name - * @param ISystem $system - */ - public function __construct(IServer $server, string $name, ISystem $system) { - parent::__construct(); - $this->server = $server; - $this->name = $name; - $this->system = $system; - $this->parser = new Parser('UTC'); - } - - private function getAuthFileArgument(): string { - if ($this->server->getAuth()->getUsername()) { - return '--authentication-file=' . $this->system->getFD(3); - } else { - return ''; - } - } - - protected function getConnection(): Connection { - $maxProtocol = $this->server->getOptions()->getMaxProtocol(); - $minProtocol = $this->server->getOptions()->getMinProtocol(); - $smbClient = $this->system->getSmbclientPath(); - $stdBuf = $this->system->getStdBufPath(); - if ($smbClient === null) { - throw new Exception("Backend not available"); - } - $command = sprintf( - '%s %s%s -t %s %s %s %s %s %s', - self::EXEC_CMD, - $stdBuf ? $stdBuf . ' -o0 ' : '', - $smbClient, - $this->server->getOptions()->getTimeout(), - $this->getAuthFileArgument(), - $this->server->getAuth()->getExtraCommandLineArguments(), - $maxProtocol ? "--option='client max protocol=" . $maxProtocol . "'" : "", - $minProtocol ? "--option='client min protocol=" . $minProtocol . "'" : "", - escapeshellarg('//' . $this->server->getHost() . '/' . $this->name) - ); - $connection = new Connection($command, $this->parser); - $connection->writeAuthentication($this->server->getAuth()->getUsername(), $this->server->getAuth()->getPassword()); - $connection->connect(); - if (!$connection->isValid()) { - throw new ConnectionException((string)$connection->readLine()); - } - // some versions of smbclient add a help message in first of the first prompt - $connection->clearTillPrompt(); - return $connection; - } - - /** - * @throws ConnectionException - * @throws AuthenticationException - * @throws InvalidHostException - * @psalm-assert Connection $this->connection - */ - protected function connect(): Connection { - if ($this->connection and $this->connection->isValid()) { - return $this->connection; - } - $this->connection = $this->getConnection(); - return $this->connection; - } - - /** - * @throws ConnectionException - * @throws AuthenticationException - * @throws InvalidHostException - * @psalm-assert Connection $this->connection - */ - protected function reconnect(): void { - if ($this->connection === null) { - $this->connect(); - } else { - $this->connection->reconnect(); - if (!$this->connection->isValid()) { - throw new ConnectionException(); - } - } - } - - /** - * Get the name of the share - * - * @return string - */ - public function getName(): string { - return $this->name; - } - - protected function simpleCommand(string $command, string $path): bool { - $escapedPath = $this->escapePath($path); - $cmd = $command . ' ' . $escapedPath; - $output = $this->execute($cmd); - return $this->parseOutput($output, $path); - } - - /** - * List the content of a remote folder - * - * @param string $path - * @return IFileInfo[] - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function dir(string $path): array { - $escapedPath = $this->escapePath($path); - $output = $this->execute('cd ' . $escapedPath); - //check output for errors - $this->parseOutput($output, $path); - $output = $this->execute('dir'); - - $this->execute('cd /'); - - return $this->parser->parseDir($output, $path, function (string $path) { - return $this->getAcls($path); - }); - } - - /** - * @param string $path - * @return IFileInfo - */ - public function stat(string $path): IFileInfo { - // some windows server setups don't seem to like the allinfo command - // use the dir command instead to get the file info where possible - if ($path !== "" && $path !== "/") { - $parent = dirname($path); - $dir = $this->dir($parent); - $file = array_values(array_filter($dir, function (IFileInfo $info) use ($path) { - return $info->getPath() === $path; - })); - if ($file) { - return $file[0]; - } - } - - $escapedPath = $this->escapePath($path); - $output = $this->execute('allinfo ' . $escapedPath); - // Windows and non Windows Fileserver may respond different - // to the allinfo command for directories. If the result is a single - // line = error line, redo it with a different allinfo parameter - if ($escapedPath == '""' && count($output) < 2) { - $output = $this->execute('allinfo ' . '"."'); - } - if (count($output) < 3) { - $this->parseOutput($output, $path); - } - $stat = $this->parser->parseStat($output); - return new FileInfo($path, basename($path), $stat['size'], $stat['mtime'], $stat['mode'], function () use ($path) { - return $this->getAcls($path); - }); - } - - /** - * Create a folder on the share - * - * @param string $path - * @return bool - * - * @throws NotFoundException - * @throws AlreadyExistsException - */ - public function mkdir(string $path): bool { - return $this->simpleCommand('mkdir', $path); - } - - /** - * Remove a folder on the share - * - * @param string $path - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function rmdir(string $path): bool { - return $this->simpleCommand('rmdir', $path); - } - - /** - * Delete a file on the share - * - * @param string $path - * @param bool $secondTry - * @return bool - * @throws InvalidTypeException - * @throws NotFoundException - * @throws \Exception - */ - public function del(string $path, bool $secondTry = false): bool { - //del return a file not found error when trying to delete a folder - //we catch it so we can check if $path doesn't exist or is of invalid type - try { - return $this->simpleCommand('del', $path); - } catch (NotFoundException $e) { - //no need to do anything with the result, we just check if this throws the not found error - try { - $this->simpleCommand('ls', $path); - } catch (NotFoundException $e2) { - throw $e; - } catch (\Exception $e2) { - throw new InvalidTypeException($path); - } - throw $e; - } catch (FileInUseException $e) { - if ($secondTry) { - throw $e; - } - $this->reconnect(); - return $this->del($path, true); - } - } - - /** - * Rename a remote file - * - * @param string $from - * @param string $to - * @return bool - * - * @throws NotFoundException - * @throws AlreadyExistsException - */ - public function rename(string $from, string $to): bool { - $path1 = $this->escapePath($from); - $path2 = $this->escapePath($to); - $output = $this->execute('rename ' . $path1 . ' ' . $path2); - return $this->parseOutput($output, $to); - } - - /** - * Upload a local file - * - * @param string $source local file - * @param string $target remove file - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function put(string $source, string $target): bool { - $path1 = $this->escapeLocalPath($source); //first path is local, needs different escaping - $path2 = $this->escapePath($target); - $output = $this->execute('put ' . $path1 . ' ' . $path2); - return $this->parseOutput($output, $target); - } - - /** - * Download a remote file - * - * @param string $source remove file - * @param string $target local file - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function get(string $source, string $target): bool { - $path1 = $this->escapePath($source); - $path2 = $this->escapeLocalPath($target); //second path is local, needs different escaping - $output = $this->execute('get ' . $path1 . ' ' . $path2); - return $this->parseOutput($output, $source); - } - - /** - * Open a readable stream to a remote file - * - * @param string $source - * @return resource a read only stream with the contents of the remote file - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function read(string $source) { - $source = $this->escapePath($source); - // since returned stream is closed by the caller we need to create a new instance - // since we can't re-use the same file descriptor over multiple calls - $connection = $this->getConnection(); - stream_set_blocking($connection->getOutputStream(), false); - - $connection->write('get ' . $source . ' ' . $this->system->getFD(5)); - $connection->write('exit'); - $fh = $connection->getFileOutputStream(); - $fh = CallbackWrapper::wrap($fh, function() use ($connection) { - $connection->write(''); - }); - if (!is_resource($fh)) { - throw new Exception("Failed to wrap file output"); - } - return $fh; - } - - /** - * Open a writable stream to a remote file - * - * @param string $target - * @return resource a write only stream to upload a remote file - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function write(string $target) { - $target = $this->escapePath($target); - // since returned stream is closed by the caller we need to create a new instance - // since we can't re-use the same file descriptor over multiple calls - $connection = $this->getConnection(); - - $fh = $connection->getFileInputStream(); - $connection->write('put ' . $this->system->getFD(4) . ' ' . $target); - $connection->write('exit'); - - // use a close callback to ensure the upload is finished before continuing - // this also serves as a way to keep the connection in scope - $stream = CallbackWrapper::wrap($fh, function() use ($connection) { - $connection->write(''); - }, null, function () use ($connection) { - $connection->close(false); // dont terminate, give the upload some time - }); - if (is_resource($stream)) { - return $stream; - } else { - throw new InvalidRequestException($target); - } - } - - /** - * Append to stream - * Note: smbclient does not support this (Use php-libsmbclient) - * - * @param string $target - * - * @throws DependencyException - */ - public function append(string $target) { - throw new DependencyException('php-libsmbclient is required for append'); - } - - /** - * @param string $path - * @param int $mode a combination of FileInfo::MODE_READONLY, FileInfo::MODE_ARCHIVE, FileInfo::MODE_SYSTEM and FileInfo::MODE_HIDDEN, FileInfo::NORMAL - * @return mixed - */ - public function setMode(string $path, int $mode) { - $modeString = ''; - foreach (self::MODE_MAP as $modeByte => $string) { - if ($mode & $modeByte) { - $modeString .= $string; - } - } - $path = $this->escapePath($path); - - // first reset the mode to normal - $cmd = 'setmode ' . $path . ' -rsha'; - $output = $this->execute($cmd); - $this->parseOutput($output, $path); - - if ($mode !== FileInfo::MODE_NORMAL) { - // then set the modes we want - $cmd = 'setmode ' . $path . ' ' . $modeString; - $output = $this->execute($cmd); - return $this->parseOutput($output, $path); - } else { - return true; - } - } - - /** - * @param string $path - * @return INotifyHandler - * @throws ConnectionException - * @throws DependencyException - */ - public function notify(string $path): INotifyHandler { - if (!$this->system->getStdBufPath()) { //stdbuf is required to disable smbclient's output buffering - throw new DependencyException('stdbuf is required for usage of the notify command'); - } - $connection = $this->getConnection(); // use a fresh connection since the notify command blocks the process - $command = 'notify ' . $this->escapePath($path); - $connection->write($command . PHP_EOL); - return new NotifyHandler($connection, $path); - } - - /** - * @param string $command - * @return string[] - */ - protected function execute(string $command): array { - $this->connect()->write($command); - return $this->connect()->read(); - } - - /** - * check output for errors - * - * @param string[] $lines - * @param string $path - * - * @return bool - * @throws AlreadyExistsException - * @throws \Icewind\SMB\Exception\AccessDeniedException - * @throws \Icewind\SMB\Exception\NotEmptyException - * @throws InvalidTypeException - * @throws \Icewind\SMB\Exception\Exception - * @throws NotFoundException - */ - protected function parseOutput(array $lines, string $path = ''): bool { - if (count($lines) === 0) { - return true; - } else { - $this->parser->checkForError($lines, $path); - } - } - - /** - * @param string $string - * @return string - */ - protected function escape(string $string): string { - return escapeshellarg($string); - } - - /** - * @param string $path - * @return string - */ - protected function escapePath(string $path): string { - $this->verifyPath($path); - if ($path === '/') { - $path = ''; - } - $path = str_replace('/', '\\', $path); - $path = str_replace('"', '^"', $path); - $path = ltrim($path, '\\'); - return '"' . $path . '"'; - } - - /** - * @param string $path - * @return string - */ - protected function escapeLocalPath(string $path): string { - $path = str_replace('"', '\"', $path); - return '"' . $path . '"'; - } - - /** - * @param string $path - * @return ACL[] - * @throws ConnectionException - * @throws ConnectException - */ - protected function getAcls(string $path): array { - $commandPath = $this->system->getSmbcAclsPath(); - if (!$commandPath) { - return []; - } - - $command = sprintf( - '%s %s %s %s/%s %s', - $commandPath, - $this->getAuthFileArgument(), - $this->server->getAuth()->getExtraCommandLineArguments(), - escapeshellarg('//' . $this->server->getHost()), - escapeshellarg($this->name), - escapeshellarg($path) - ); - $connection = new RawConnection($command); - $connection->writeAuthentication($this->server->getAuth()->getUsername(), $this->server->getAuth()->getPassword()); - $connection->connect(); - if (!$connection->isValid()) { - throw new ConnectionException((string)$connection->readLine()); - } - - $rawAcls = $connection->readAll(); - return $this->parser->parseACLs($rawAcls); - } - - public function getServer(): IServer { - return $this->server; - } - - public function __destruct() { - unset($this->connection); - } -} diff --git a/apps/files_external/3rdparty/icewind/streams-dummy/composer.json b/apps/files_external/3rdparty/icewind/streams-dummy/composer.json deleted file mode 100644 index ad6a6a1b1c1..00000000000 --- a/apps/files_external/3rdparty/icewind/streams-dummy/composer.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "icewind/streams-dummy", - "provide": { - "icewind/streams": "0.2" - } -} - diff --git a/apps/files_external/3rdparty/icewind/streams-dummy/composer.json.license b/apps/files_external/3rdparty/icewind/streams-dummy/composer.json.license deleted file mode 100644 index 99ba7368b14..00000000000 --- a/apps/files_external/3rdparty/icewind/streams-dummy/composer.json.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> -SPDX-License-Identifier: MIT diff --git a/apps/files_external/3rdparty/icewind/streams/.gitignore b/apps/files_external/3rdparty/icewind/streams/.gitignore deleted file mode 100644 index ad93d8acd1a..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> -# SPDX-License-Identifier: MIT -.idea -vendor -composer.lock -build -example.php -*.cache diff --git a/apps/files_external/3rdparty/icewind/streams/LICENSE.txt b/apps/files_external/3rdparty/icewind/streams/LICENSE.txt deleted file mode 100644 index 2cc1fa91e49..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/LICENSE.txt +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2015 Robin Appelman <robin@icewind.nl> - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/apps/files_external/3rdparty/icewind/streams/README.md b/apps/files_external/3rdparty/icewind/streams/README.md deleted file mode 100644 index c8b9accdadc..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/README.md +++ /dev/null @@ -1,56 +0,0 @@ -<!-- - - SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - - SPDX-License-Identifier: MIT ---> -# Streams # - -[](https://github.com/icewind1991/Streams/actions/workflows/ci.yaml) -[](https://codecov.io/gh/icewind1991/Streams) - -Generic stream wrappers for php. - -## CallBackWrapper ## - -A `CallBackWrapper` can be used to register callbacks on read, write and closing of the stream, -it wraps an existing stream and can thus be used for any stream in php - -The callbacks are passed in the stream context along with the source stream -and can be any valid [php callable](http://php.net/manual/en/language.types.callable.php) - -### Example ### -```php -<?php - -use \Icewind\Streams\CallBackWrapper; - -require('vendor/autoload.php'); - -// get an existing stream to wrap -$source = fopen('php://temp', 'r+'); - -// register the callbacks -$stream = CallbackWrapper::wrap($source, - // read callback - function ($count) { - echo "read " . $count . "bytes\n"; - }, - // write callback - function ($data) { - echo "wrote '" . $data . "'\n"; - }, - // close callback - function () { - echo "stream closed\n"; - }); - -fwrite($stream, 'some dummy data'); - -rewind($stream); -fread($stream, 5); - -fclose($stream); -``` - -Note: due to php's internal stream buffering the `$count` passed to the read callback -will be equal to php's internal buffer size (8192 on default) an not the number of bytes -requested by `fopen()` diff --git a/apps/files_external/3rdparty/icewind/streams/composer.json b/apps/files_external/3rdparty/icewind/streams/composer.json deleted file mode 100644 index 2a148158fbc..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/composer.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "icewind/streams", - "description": "A set of generic stream wrappers", - "license": "MIT", - "authors": [ - { - "name": "Robin Appelman", - "email": "icewind@owncloud.com" - } - ], - "require": { - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "^9", - "friendsofphp/php-cs-fixer": "^2", - "phpstan/phpstan": "^0.12" - }, - "autoload": { - "psr-4": { - "Icewind\\Streams\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Icewind\\Streams\\Tests\\": "tests/" - } - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/composer.json.license b/apps/files_external/3rdparty/icewind/streams/composer.json.license deleted file mode 100644 index 99ba7368b14..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/composer.json.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> -SPDX-License-Identifier: MIT diff --git a/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php deleted file mode 100644 index a50aa05c7ca..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php +++ /dev/null @@ -1,131 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ -namespace Icewind\Streams; - -/** - * Wrapper that provides callbacks for write, read and close - * - * The following options should be passed in the context when opening the stream - * [ - * 'callback' => [ - * 'source' => resource - * 'read' => function($count){} (optional) - * 'write' => function($data){} (optional) - * 'close' => function(){} (optional) - * 'readdir' => function(){} (optional) - * ] - * ] - * - * All callbacks are called after the operation is executed on the source stream - */ -class CallbackWrapper extends Wrapper { - /** - * @var callable|null - */ - protected $readCallback; - - /** - * @var callable|null - */ - protected $writeCallback; - - /** - * @var callable|null - */ - protected $closeCallback; - - /** - * @var callable|null - */ - protected $readDirCallBack; - - /** - * @var callable|null - */ - protected $preCloseCallback; - - /** - * Wraps a stream with the provided callbacks - * - * @param resource $source - * @param callable|null $read (optional) - * @param callable|null $write (optional) - * @param callable|null $close (optional) - * @param callable|null $readDir (optional) - * @param callable|null $preClose (optional) - * @return resource|false - * - */ - public static function wrap($source, $read = null, $write = null, $close = null, $readDir = null, $preClose = null) { - $context = [ - 'source' => $source, - 'read' => $read, - 'write' => $write, - 'close' => $close, - 'readDir' => $readDir, - 'preClose' => $preClose, - ]; - return self::wrapSource($source, $context); - } - - protected function open() { - $context = $this->loadContext(); - - $this->readCallback = $context['read']; - $this->writeCallback = $context['write']; - $this->closeCallback = $context['close']; - $this->readDirCallBack = $context['readDir']; - $this->preCloseCallback = $context['preClose']; - return true; - } - - public function dir_opendir($path, $options) { - return $this->open(); - } - - public function stream_open($path, $mode, $options, &$opened_path) { - return $this->open(); - } - - public function stream_read($count) { - $result = parent::stream_read($count); - if (is_callable($this->readCallback)) { - call_user_func($this->readCallback, strlen($result)); - } - return $result; - } - - public function stream_write($data) { - $result = parent::stream_write($data); - if (is_callable($this->writeCallback)) { - call_user_func($this->writeCallback, $data); - } - return $result; - } - - public function stream_close() { - if (is_callable($this->preCloseCallback)) { - call_user_func($this->preCloseCallback, $this->source); - // prevent further calls by potential PHP 7 GC ghosts - $this->preCloseCallback = null; - } - $result = parent::stream_close(); - if (is_callable($this->closeCallback)) { - call_user_func($this->closeCallback); - // prevent further calls by potential PHP 7 GC ghosts - $this->closeCallback = null; - } - return $result; - } - - public function dir_readdir() { - $result = parent::dir_readdir(); - if (is_callable($this->readDirCallBack)) { - call_user_func($this->readDirCallBack); - } - return $result; - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/CountWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/CountWrapper.php deleted file mode 100644 index d1427dd97af..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/CountWrapper.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2018 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\Streams; - -/** - * Wrapper that counts the amount of data read and written - * - * The following options should be passed in the context when opening the stream - * [ - * 'callback' => [ - * 'source' => resource - * 'callback' => function($readCount, $writeCount){} - * ] - * ] - * - * The callback will be called when the stream is closed - */ -class CountWrapper extends Wrapper { - /** - * @var int - */ - protected $readCount = 0; - - /** - * @var int - */ - protected $writeCount = 0; - - /** - * @var callable - */ - protected $callback; - - /** - * Wraps a stream with the provided callbacks - * - * @param resource $source - * @param callable $callback - * @return resource|false - * - * @throws \BadMethodCallException - */ - public static function wrap($source, $callback) { - if (!is_callable($callback)) { - throw new \InvalidArgumentException('Invalid or missing callback'); - } - return self::wrapSource($source, [ - 'source' => $source, - 'callback' => $callback - ]); - } - - protected function open() { - $context = $this->loadContext(); - $this->callback = $context['callback']; - return true; - } - - public function dir_opendir($path, $options) { - return $this->open(); - } - - public function stream_open($path, $mode, $options, &$opened_path) { - return $this->open(); - } - - public function stream_read($count) { - $result = parent::stream_read($count); - $this->readCount += strlen($result); - return $result; - } - - public function stream_write($data) { - $result = parent::stream_write($data); - $this->writeCount += strlen($data); - return $result; - } - - public function stream_close() { - $result = parent::stream_close(); - call_user_func($this->callback, $this->readCount, $this->writeCount); - return $result; - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/Directory.php b/apps/files_external/3rdparty/icewind/streams/src/Directory.php deleted file mode 100644 index 3a4d01e67c8..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/Directory.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\Streams; - -/** - * Interface for stream wrappers that implements a directory - */ -interface Directory { - /** - * @param string $path - * @param array $options - * @return bool - */ - public function dir_opendir($path, $options); - - /** - * @return string|bool - */ - public function dir_readdir(); - - /** - * @return bool - */ - public function dir_closedir(); - - /** - * @return bool - */ - public function dir_rewinddir(); -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php b/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php deleted file mode 100644 index 3df6a37f281..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2015 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\Streams; - -/** - * Wrapper allows filtering of directories - * - * The filter callback will be called for each entry in the folder - * when the callback return false the entry will be filtered out - */ -class DirectoryFilter extends DirectoryWrapper { - /** - * @var callable - */ - private $filter; - - /** - * @param string $path - * @param array $options - * @return bool - */ - public function dir_opendir($path, $options) { - $context = $this->loadContext(); - $this->filter = $context['filter']; - return true; - } - - /** - * @return string - */ - public function dir_readdir() { - $file = readdir($this->source); - $filter = $this->filter; - // keep reading until we have an accepted entry or we're at the end of the folder - while ($file !== false && $filter($file) === false) { - $file = readdir($this->source); - } - return $file; - } - - /** - * @param resource $source - * @param callable $filter - * @return resource|false - */ - public static function wrap($source, callable $filter) { - return self::wrapSource($source, [ - 'source' => $source, - 'filter' => $filter - ]); - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php deleted file mode 100644 index fbae56a88cf..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2015 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\Streams; - -class DirectoryWrapper extends Wrapper implements Directory { - public function stream_open($path, $mode, $options, &$opened_path) { - return false; - } - - /** - * @param string $path - * @param array $options - * @return bool - */ - public function dir_opendir($path, $options) { - $this->loadContext(); - return true; - } - - /** - * @return string|false - */ - public function dir_readdir() { - return readdir($this->source); - } - - /** - * @return bool - */ - public function dir_closedir() { - closedir($this->source); - return true; - } - - /** - * @return bool - */ - public function dir_rewinddir() { - rewinddir($this->source); - return true; - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/File.php b/apps/files_external/3rdparty/icewind/streams/src/File.php deleted file mode 100644 index 249c92d1a4e..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/File.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\Streams; - -/** - * Interface for stream wrappers that implements a file - */ -interface File { - /** - * @param string $path - * @param string $mode - * @param int $options - * @param string $opened_path - * @return bool - */ - public function stream_open($path, $mode, $options, &$opened_path); - - /** - * @param int $offset - * @param int $whence - * @return bool - */ - public function stream_seek($offset, $whence = SEEK_SET); - - /** - * @return int|false - */ - public function stream_tell(); - - /** - * @param int $count - * @return string|false - */ - public function stream_read($count); - - /** - * @param string $data - * @return int|false - */ - public function stream_write($data); - - /** - * @param int $option - * @param int $arg1 - * @param int $arg2 - * @return bool - */ - public function stream_set_option($option, $arg1, $arg2); - - /** - * @param int $size - * @return bool - */ - public function stream_truncate($size); - - /** - * @return array|false - */ - public function stream_stat(); - - /** - * @param int $operation - * @return bool - */ - public function stream_lock($operation); - - /** - * @return bool - */ - public function stream_flush(); - - /** - * @return bool - */ - public function stream_eof(); - - /** - * @return bool - */ - public function stream_close(); -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/HashWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/HashWrapper.php deleted file mode 100644 index 7fb739e0d49..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/HashWrapper.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2019 Roeland Jago Douma <roeland@famdouma.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\Streams; - -abstract class HashWrapper extends Wrapper { - - /** - * @var callable|null - */ - private $callback; - - /** - * @var resource|\HashContext - */ - private $hashContext; - - /** - * Wraps a stream to make it seekable - * - * @param resource $source - * @param string $hash - * @param callable $callback - * @return resource|false - * - * @throws \BadMethodCallException - */ - public static function wrap($source, $hash, $callback) { - $context = [ - 'hash' => $hash, - 'callback' => $callback, - ]; - return self::wrapSource($source, $context); - } - - public function dir_opendir($path, $options) { - return false; - } - - public function stream_open($path, $mode, $options, &$opened_path) { - $context = $this->loadContext(); - $this->callback = $context['callback']; - $this->hashContext = hash_init($context['hash']); - return true; - } - - protected function updateHash($data) { - hash_update($this->hashContext, $data); - } - - public function stream_close() { - $hash = hash_final($this->hashContext); - if ($this->hashContext !== false && is_callable($this->callback)) { - call_user_func($this->callback, $hash); - } - return parent::stream_close(); - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php b/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php deleted file mode 100644 index 24a4723d1e3..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php +++ /dev/null @@ -1,112 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\Streams; - -/** - * Create a directory handle from an iterator or array - * - * The following options should be passed in the context when opening the stream - * [ - * 'dir' => [ - * 'array' => string[] - * 'iterator' => \Iterator - * ] - * ] - * - * Either 'array' or 'iterator' need to be set, if both are set, 'iterator' takes preference - */ -class IteratorDirectory extends WrapperHandler implements Directory { - /** - * @var resource - */ - public $context; - - /** - * @var \Iterator - */ - protected $iterator; - - /** - * Load the source from the stream context and return the context options - * - * @param string $name - * @return array - * @throws \BadMethodCallException - */ - protected function loadContext($name = null) { - $context = parent::loadContext($name); - if (isset($context['iterator'])) { - $this->iterator = $context['iterator']; - } elseif (isset($context['array'])) { - $this->iterator = new \ArrayIterator($context['array']); - } else { - throw new \BadMethodCallException('Invalid context, iterator or array not set'); - } - return $context; - } - - /** - * @param string $path - * @param array $options - * @return bool - */ - public function dir_opendir($path, $options) { - $this->loadContext(); - return true; - } - - /** - * @return string|bool - */ - public function dir_readdir() { - if ($this->iterator->valid()) { - $result = $this->iterator->current(); - $this->iterator->next(); - return $result; - } else { - return false; - } - } - - /** - * @return bool - */ - public function dir_closedir() { - return true; - } - - /** - * @return bool - */ - public function dir_rewinddir() { - $this->iterator->rewind(); - return true; - } - - /** - * Creates a directory handle from the provided array or iterator - * - * @param \Iterator | array $source - * @return resource|false - * - * @throws \BadMethodCallException - */ - public static function wrap($source) { - if ($source instanceof \Iterator) { - $options = [ - 'iterator' => $source - ]; - } elseif (is_array($source)) { - $options = [ - 'array' => $source - ]; - } else { - throw new \BadMethodCallException('$source should be an Iterator or array'); - } - return self::wrapSource(self::NO_SOURCE_DIR, $options); - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/NullWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/NullWrapper.php deleted file mode 100644 index f92279381a5..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/NullWrapper.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\Streams; - -/** - * Stream wrapper that does nothing, used for tests - */ -class NullWrapper extends Wrapper { - public static function wrap($source) { - return self::wrapSource($source); - } - - public function stream_open($path, $mode, $options, &$opened_path) { - $this->loadContext(); - return true; - } - - public function dir_opendir($path, $options) { - $this->loadContext(); - return true; - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/Path.php b/apps/files_external/3rdparty/icewind/streams/src/Path.php deleted file mode 100644 index 63fbd6504da..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/Path.php +++ /dev/null @@ -1,107 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\Streams; - -/** - * A string-like object that automatically registers a stream wrapper when used and removes the stream wrapper when no longer used - * - * Can optionally pass context options to the stream wrapper - */ -class Path { - - /** - * @var bool - */ - protected $registered = false; - - /** - * @var string - */ - protected $protocol; - - /** - * @var string - */ - protected $class; - - /** - * @var array - */ - protected $contextOptions; - - /** - * @param string $class - * @param array $contextOptions - */ - public function __construct($class, $contextOptions = []) { - $this->class = $class; - $this->contextOptions = $contextOptions; - } - - public function getProtocol() { - if (!$this->protocol) { - $this->protocol = 'auto' . uniqid(); - } - return $this->protocol; - } - - public function wrapPath($path) { - return $this->getProtocol() . '://' . $path; - } - - protected function register() { - if (!$this->registered) { - $this->appendDefaultContent($this->contextOptions); - stream_wrapper_register($this->getProtocol(), $this->class); - $this->registered = true; - } - } - - protected function unregister() { - stream_wrapper_unregister($this->getProtocol()); - $this->unsetDefaultContent($this->getProtocol()); - $this->registered = false; - } - - /** - * Add values to the default stream context - * - * @param array $values - */ - protected function appendDefaultContent($values) { - if (!is_array(current($values))) { - $values = [$this->getProtocol() => $values]; - } - $context = stream_context_get_default(); - $defaults = stream_context_get_options($context); - foreach ($values as $key => $value) { - $defaults[$key] = $value; - } - stream_context_set_default($defaults); - } - - /** - * Remove values from the default stream context - * - * @param string $key - */ - protected function unsetDefaultContent($key) { - $context = stream_context_get_default(); - $defaults = stream_context_get_options($context); - unset($defaults[$key]); - stream_context_set_default($defaults); - } - - public function __toString() { - $this->register(); - return $this->protocol . '://'; - } - - public function __destruct() { - $this->unregister(); - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/PathWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/PathWrapper.php deleted file mode 100644 index 3a6e236942f..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/PathWrapper.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2016 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\Streams; - -/** - * A string-like object that maps to an existing stream when opened - */ -class PathWrapper extends NullWrapper { - /** - * @param resource $source - * @return Path|string - */ - public static function getPath($source) { - return new Path(NullWrapper::class, [ - NullWrapper::getProtocol() => ['source' => $source] - ]); - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/ReadHashWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/ReadHashWrapper.php deleted file mode 100644 index a9e9fc831e6..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/ReadHashWrapper.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2019 Roeland Jago Douma <roeland@famdouma.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\Streams; - -/** - * Wrapper that calculates the hash on the stream on read - * - * The stream and hash should be passed in when wrapping the stream. - * On close the callback will be called with the calculated checksum. - * - * For supported hashes see: http://php.net/manual/en/function.hash-algos.php - */ -class ReadHashWrapper extends HashWrapper { - public function stream_read($count) { - $data = parent::stream_read($count); - $this->updateHash($data); - return $data; - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/RetryWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/RetryWrapper.php deleted file mode 100644 index 2899a97a0d1..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/RetryWrapper.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2016 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\Streams; - -/** - * Wrapper that retries reads/writes to remote streams that dont deliver/recieve all requested data at once - */ -class RetryWrapper extends Wrapper { - public static function wrap($source) { - return self::wrapSource($source); - } - - public function dir_opendir($path, $options) { - return false; - } - - public function stream_open($path, $mode, $options, &$opened_path) { - $this->loadContext(); - return true; - } - - public function stream_read($count) { - $result = parent::stream_read($count); - - $bytesReceived = strlen($result); - while (strlen($result) > 0 && $bytesReceived < $count && !$this->stream_eof()) { - $result .= parent::stream_read($count - $bytesReceived); - $bytesReceived = strlen($result); - } - - return $result; - } - - public function stream_write($data) { - $bytesToSend = strlen($data); - $bytesWritten = parent::stream_write($data); - $result = $bytesWritten; - - while ($bytesWritten > 0 && $result < $bytesToSend && !$this->stream_eof()) { - $dataLeft = substr($data, $result); - $bytesWritten = parent::stream_write($dataLeft); - $result += $bytesWritten; - } - - return $result; - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/SeekableWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/SeekableWrapper.php deleted file mode 100644 index 1eb06c6294c..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/SeekableWrapper.php +++ /dev/null @@ -1,82 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\Streams; - -/** - * Wrapper that provides callbacks for write, read and close - * - * The following options should be passed in the context when opening the stream - * [ - * 'callback' => [ - * 'source' => resource - * ] - * ] - * - * All callbacks are called after the operation is executed on the source stream - */ -class SeekableWrapper extends Wrapper { - /** - * @var resource - */ - protected $cache; - - public static function wrap($source) { - return self::wrapSource($source); - } - - public function dir_opendir($path, $options) { - return false; - } - - public function stream_open($path, $mode, $options, &$opened_path) { - $this->loadContext(); - $cache = fopen('php://temp', 'w+'); - if ($cache === false) { - return false; - } - $this->cache = $cache; - return true; - } - - protected function readTill($position) { - $current = ftell($this->source); - if ($position > $current) { - $data = parent::stream_read($position - $current); - $cachePosition = ftell($this->cache); - fseek($this->cache, $current); - fwrite($this->cache, $data); - fseek($this->cache, $cachePosition); - } - } - - public function stream_read($count) { - $current = ftell($this->cache); - $this->readTill($current + $count); - return fread($this->cache, $count); - } - - public function stream_seek($offset, $whence = SEEK_SET) { - if ($whence === SEEK_SET) { - $target = $offset; - } elseif ($whence === SEEK_CUR) { - $current = ftell($this->cache); - $target = $current + $offset; - } else { - return false; - } - $this->readTill($target); - return fseek($this->cache, $target) === 0; - } - - public function stream_tell() { - return ftell($this->cache); - } - - public function stream_eof() { - return parent::stream_eof() and (ftell($this->source) === ftell($this->cache)); - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/Url.php b/apps/files_external/3rdparty/icewind/streams/src/Url.php deleted file mode 100644 index dfe36a00d6f..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/Url.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\Streams; - -/** - * Interface for stream wrappers that implement url functions such as unlink, stat - */ -interface Url { - /** - * @param string $path - * @param array $options - * @return bool - */ - public function dir_opendir($path, $options); - - /** - * @param string $path - * @param string $mode - * @param int $options - * @param string $opened_path - * @return bool - */ - public function stream_open($path, $mode, $options, &$opened_path); - - /** - * @param string $path - * @param int $mode - * @param int $options - * @return bool - */ - public function mkdir($path, $mode, $options); - - /** - * @param string $source - * @param string $target - * @return bool - */ - public function rename($source, $target); - - /** - * @param string $path - * @param int $options - * @return bool - */ - public function rmdir($path, $options); - - /** - * @param string $path - * @return bool - */ - public function unlink($path); - - /** - * @param string $path - * @param int $flags - * @return array|false - */ - public function url_stat($path, $flags); -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/UrlCallback.php b/apps/files_external/3rdparty/icewind/streams/src/UrlCallback.php deleted file mode 100644 index 4471c2d4f1f..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/UrlCallback.php +++ /dev/null @@ -1,134 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\Streams; - -/** - * Wrapper that provides callbacks for url actions such as fopen, unlink, rename - * - * Usage: - * - * $path = UrlCallBack('/path/so/source', function(){ - * echo 'fopen'; - * }, function(){ - * echo 'opendir'; - * }, function(){ - * echo 'mkdir'; - * }, function(){ - * echo 'rename'; - * }, function(){ - * echo 'rmdir'; - * }, function(){ - * echo 'unlink'; - * }, function(){ - * echo 'stat'; - * }); - * - * mkdir($path); - * ... - * - * All callbacks are called after the operation is executed on the source stream - */ -class UrlCallback extends Wrapper implements Url { - - /** - * @param string $source - * @param callable $fopen - * @param callable $opendir - * @param callable $mkdir - * @param callable $rename - * @param callable $rmdir - * @param callable $unlink - * @param callable $stat - * @return \Icewind\Streams\Path - * - * @throws \BadMethodCallException - */ - public static function wrap( - $source, - $fopen = null, - $opendir = null, - $mkdir = null, - $rename = null, - $rmdir = null, - $unlink = null, - $stat = null - ) { - return new Path(static::class, [ - 'source' => $source, - 'fopen' => $fopen, - 'opendir' => $opendir, - 'mkdir' => $mkdir, - 'rename' => $rename, - 'rmdir' => $rmdir, - 'unlink' => $unlink, - 'stat' => $stat - ]); - } - - protected function loadUrlContext($url) { - list($protocol) = explode('://', $url); - $options = stream_context_get_options($this->context); - return $options[$protocol]; - } - - protected function callCallBack($context, $callback) { - if (is_callable($context[$callback])) { - call_user_func($context[$callback]); - } - } - - public function stream_open($path, $mode, $options, &$opened_path) { - $context = $this->loadUrlContext($path); - $this->callCallBack($context, 'fopen'); - $source = fopen($context['source'], $mode); - if ($source === false) { - return false; - } - $this->setSourceStream($source); - return true; - } - - public function dir_opendir($path, $options) { - $context = $this->loadUrlContext($path); - $this->callCallBack($context, 'opendir'); - $source = opendir($context['source']); - if ($source === false) { - return false; - } - $this->setSourceStream($source); - return true; - } - - public function mkdir($path, $mode, $options) { - $context = $this->loadUrlContext($path); - $this->callCallBack($context, 'mkdir'); - return mkdir($context['source'], $mode, ($options & STREAM_MKDIR_RECURSIVE) > 0); - } - - public function rmdir($path, $options) { - $context = $this->loadUrlContext($path); - $this->callCallBack($context, 'rmdir'); - return rmdir($context['source']); - } - - public function rename($source, $target) { - $context = $this->loadUrlContext($source); - $this->callCallBack($context, 'rename'); - list(, $target) = explode('://', $target); - return rename($context['source'], $target); - } - - public function unlink($path) { - $context = $this->loadUrlContext($path); - $this->callCallBack($context, 'unlink'); - return unlink($context['source']); - } - - public function url_stat($path, $flags) { - throw new \Exception('stat is not supported due to php bug 50526'); - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php b/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php deleted file mode 100644 index 0a9c07bee83..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php +++ /dev/null @@ -1,130 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2014 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: MIT - */ - -namespace Icewind\Streams; - -/** - * Base class for stream wrappers, wraps an existing stream - * - * This wrapper itself doesn't implement any functionality but is just a base class for other wrappers to extend - */ -abstract class Wrapper extends WrapperHandler implements File, Directory { - /** - * @var resource - */ - public $context; - - /** - * The wrapped stream - * - * @var resource - */ - protected $source; - - /** - * @param resource $source - */ - protected function setSourceStream($source) { - $this->source = $source; - } - - protected function loadContext($name = null) { - $context = parent::loadContext($name); - if (isset($context['source']) and is_resource($context['source'])) { - $this->setSourceStream($context['source']); - } else { - throw new \BadMethodCallException('Invalid context, source not set'); - } - return $context; - } - - public function stream_seek($offset, $whence = SEEK_SET) { - $result = fseek($this->source, $offset, $whence); - return $result == 0; - } - - public function stream_tell() { - return ftell($this->source); - } - - public function stream_read($count) { - return fread($this->source, $count); - } - - public function stream_write($data) { - return fwrite($this->source, $data); - } - - public function stream_set_option($option, $arg1, $arg2) { - switch ($option) { - case STREAM_OPTION_BLOCKING: - return stream_set_blocking($this->source, (bool)$arg1); - case STREAM_OPTION_READ_TIMEOUT: - return stream_set_timeout($this->source, $arg1, $arg2); - case STREAM_OPTION_WRITE_BUFFER: - return stream_set_write_buffer($this->source, $arg1) === 0; - } - return false; - } - - public function stream_truncate($size) { - return ftruncate($this->source, $size); - } - - public function stream_stat() { - return fstat($this->source); - } - - public function stream_lock($mode) { - return flock($this->source, $mode); - } - - public function stream_flush() { - return fflush($this->source); - } - - public function stream_eof() { - return feof($this->source); - } - - public function stream_close() { - if (is_resource($this->source)) { - return fclose($this->source); - } - } - - public function dir_readdir() { - return readdir($this->source); - } - - public function dir_closedir() { - closedir($this->source); - return true; - } - - public function dir_rewinddir() { - return rewind($this->source); - } - - public function getSource() { - return $this->source; - } - - /** - * Retrieves header/metadata from the source stream. - * - * This is equivalent to calling `stream_get_meta_data` on the source stream except nested stream wrappers are handled transparently - * - * @return array - */ - public function getMetaData(): array { - $meta = stream_get_meta_data($this->source); - while (isset($meta['wrapper_data']) && $meta['wrapper_data'] instanceof Wrapper) { - $meta = $meta['wrapper_data']->getMetaData(); - } - return $meta; - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/WrapperHandler.php b/apps/files_external/3rdparty/icewind/streams/src/WrapperHandler.php deleted file mode 100644 index 64b3be213a3..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/WrapperHandler.php +++ /dev/null @@ -1,99 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2019 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\Streams; - -class WrapperHandler { - /** @var resource $context */ - protected $context; - - const NO_SOURCE_DIR = 1; - - /** - * get the protocol name that is generated for the class - * @param string|null $class - * @return string - */ - public static function getProtocol($class = null) { - if ($class === null) { - $class = static::class; - } - - $parts = explode('\\', $class); - return strtolower(array_pop($parts)); - } - - private static function buildContext($protocol, $context, $source) { - if (is_array($context)) { - $context['source'] = $source; - return stream_context_create([$protocol => $context]); - } else { - return $context; - } - } - - /** - * @param resource|int $source - * @param resource|array $context - * @param string|null $protocol deprecated, protocol is now automatically generated - * @param string|null $class deprecated, class is now automatically generated - * @return resource|false - */ - protected static function wrapSource($source, $context = [], $protocol = null, $class = null, $mode = 'r+') { - if ($class === null) { - $class = static::class; - } - - if ($protocol === null) { - $protocol = self::getProtocol($class); - } - - $context = self::buildContext($protocol, $context, $source); - try { - stream_wrapper_register($protocol, $class); - if (self::isDirectoryHandle($source)) { - return opendir($protocol . '://', $context); - } else { - return fopen($protocol . '://', $mode, false, $context); - } - } finally { - stream_wrapper_unregister($protocol); - } - } - - protected static function isDirectoryHandle($resource) { - if ($resource === self::NO_SOURCE_DIR) { - return true; - } - if (!is_resource($resource)) { - throw new \BadMethodCallException('Invalid stream source'); - } - $meta = stream_get_meta_data($resource); - return $meta['stream_type'] === 'dir' || $meta['stream_type'] === 'user-space-dir'; - } - - /** - * Load the source from the stream context and return the context options - * - * @param string|null $name if not set, the generated protocol name is used - * @return array - * @throws \BadMethodCallException - */ - protected function loadContext($name = null) { - if ($name === null) { - $parts = explode('\\', static::class); - $name = strtolower(array_pop($parts)); - } - - $context = stream_context_get_options($this->context); - if (isset($context[$name])) { - $context = $context[$name]; - } else { - throw new \BadMethodCallException('Invalid context, "' . $name . '" options not set'); - } - return $context; - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/WriteHashWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/WriteHashWrapper.php deleted file mode 100644 index 685d73c1fbd..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/WriteHashWrapper.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2019 Robin Appelman <robin@icewind.nl> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Icewind\Streams; - -/** - * Wrapper that calculates the hash on the stream on write - * - * The stream and hash should be passed in when wrapping the stream. - * On close the callback will be called with the calculated checksum. - * - * For supported hashes see: http://php.net/manual/en/function.hash-algos.php - */ -class WriteHashWrapper extends HashWrapper { - public function stream_write($data) { - $this->updateHash($data); - return parent::stream_write($data); - } -} diff --git a/apps/files_external/l10n/mk.js b/apps/files_external/l10n/mk.js index 4708014f4d2..a41f84e471a 100644 --- a/apps/files_external/l10n/mk.js +++ b/apps/files_external/l10n/mk.js @@ -64,7 +64,12 @@ OC.L10N.register( "External storage support" : "Поддршка за надворешно складиште", "Confirm" : "Потврди", "Open in Files" : "Отвори во датотеките", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Се појави грешка со ова надворешно складиште. Дали сакате да ја прегледате оваа конфигурација на страницата со поставки?", "External mount error" : "Грешка при надворешно монтирање", + "List of external storage." : "Листа на надворешни складишта.", + "There is no external storage configured. You can configure them in your Personal settings." : "Нема конфигурирано надворешно складирање. Можете да ги конфигурирате во вашите лични поставки.", + "There is no external storage configured and you don't have the permission to configure them." : "Нема конфигурирано надворешно складирање и немате дозвола да го конфигурирате.", + "No external storage" : "Нема надворешно складиште", "Storage type" : "Вид на складиште", "Unknown" : "Непознат", "Scope" : "Опсег", diff --git a/apps/files_external/l10n/mk.json b/apps/files_external/l10n/mk.json index b4de5a8bed7..413265d40c3 100644 --- a/apps/files_external/l10n/mk.json +++ b/apps/files_external/l10n/mk.json @@ -62,7 +62,12 @@ "External storage support" : "Поддршка за надворешно складиште", "Confirm" : "Потврди", "Open in Files" : "Отвори во датотеките", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Се појави грешка со ова надворешно складиште. Дали сакате да ја прегледате оваа конфигурација на страницата со поставки?", "External mount error" : "Грешка при надворешно монтирање", + "List of external storage." : "Листа на надворешни складишта.", + "There is no external storage configured. You can configure them in your Personal settings." : "Нема конфигурирано надворешно складирање. Можете да ги конфигурирате во вашите лични поставки.", + "There is no external storage configured and you don't have the permission to configure them." : "Нема конфигурирано надворешно складирање и немате дозвола да го конфигурирате.", + "No external storage" : "Нема надворешно складиште", "Storage type" : "Вид на складиште", "Unknown" : "Непознат", "Scope" : "Опсег", diff --git a/apps/files_external/l10n/uk.js b/apps/files_external/l10n/uk.js index f697df74fcb..36ca4ecc62a 100644 --- a/apps/files_external/l10n/uk.js +++ b/apps/files_external/l10n/uk.js @@ -64,6 +64,7 @@ OC.L10N.register( "Enable Path Style" : "Включити стиль шляху", "Legacy (v2) authentication" : "Застарілий метод авторизації (v2) ", "Enable multipart copy" : "Дозволити множинне копіювання", + "SSE-C encryption key" : "Ключ шифрування SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Віддалений підкаталог", @@ -83,6 +84,7 @@ OC.L10N.register( "Case sensitive file system" : "Файлова система, чутлива до регістру символів", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Вимкнення цього параметра дозволить використовувати файлову систему, нечутливу до регістру, але це також призведе до зниження продуктивності", "Verify ACL access when listing files" : "Перевірте доступ до ACL під час переліку файлів", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Перевірте ACL для кожного файлу або папки в каталозі, щоб відфільтрувати елементи, на які обліковий запис не має дозволів на читання, що призводить до зниження продуктивності", "Timeout" : "Час вичерпано", "SMB/CIFS using OC login" : "SMB/CIFS з використанням входу OC", "Login as share" : "Увійти під спільним доступом", @@ -95,10 +97,18 @@ OC.L10N.register( "External storage" : "Зовнішнє сховище", "External storage support" : "Підтримка зовнішнього сховища", "Adds basic external storage support" : "Додає базову підтримку зовнішньої пам’яті", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Ця програма дозволяє адміністраторам налаштовувати підключення до зовнішніх сховищ, таких як FTP-сервери, сховища об'єктів S3 або SWIFT, інші сервери Nextcloud, WebDAV-сервери тощо. Адміністрація може вибирати, які типи сховищ увімкнути, і може монтувати ці сховища для облікового запису, групи або всієї системи. Користувачі побачать нову папку в кореневому каталозі Nextcloud, до якої вони зможуть отримати доступ і використовувати її як будь-яку іншу папку Nextcloud. Зовнішнє сховище також дозволяє користувачам ділитися файлами, що зберігаються в цих зовнішніх сховищах. У цих випадках облікові дані власника файлу використовуються, коли одержувач запитує файл із зовнішнього сховища, таким чином гарантуючи, що одержувач зможе отримати доступ до файлу, до якого надано спільний доступ.\n\nЗовнішнє сховище можна налаштувати за допомогою графічного інтерфейсу або командного рядка. Другий варіант надає адміністратору більше можливостей для налаштування масового монтування зовнішнього сховища і встановлення пріоритетів монтування. Докладнішу інформацію можна знайти у документації до графічного інтерфейсу зовнішнього сховища та документації до файлу конфігурації зовнішнього сховища.", "Confirm" : "Підтвердити", + "Storage credentials" : "Облікові дані для зберігання", + "To access the storage, you need to provide the authentication credentials." : "Щоб отримати доступ до сховища, вам потрібно надати облікові дані для автентифікації.", + "Enter the storage login" : "Введіть логін до сховища", + "Enter the storage password" : "Введіть пароль до сховища", "Unable to update this external storage config. {statusMessage}" : "Не вдалося оновити конфігурацію цього зовнішнього сховища. {statusMessage}", "New configuration successfully saved" : "Нову конфігурацію успішно збережено", "Enter missing credentials" : "Зазначте відсутні дані авторизації", + "Credentials successfully set" : "Облікові дані успішно встановлено", + "Error while setting credentials: {error}" : "Помилка під час встановлення облікових даних: {error}", + "Checking storage …" : "Перевірка сховища ...", "There was an error with this external storage." : "З цим зовнішнім сховищем виникла помилка.", "We were unable to check the external storage {basename}" : "Нам не вдалося перевірити зовнішнє сховище {basename}", "Examine this faulty external storage configuration" : "Перевірте цю несправну конфігурацію зовнішнього сховища", @@ -125,6 +135,7 @@ OC.L10N.register( "Once every direct access" : "Один раз при кожному прямому доступі", "Read only" : "Тільки читання", "Disconnect" : "Від'єднати", + "Unknown backend: {backendName}" : "Невідомий бекенд: {backendName}", "Admin defined" : "Визначено адміністратором", "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Автоматична перевірка статусу вимкнена через велику кількість налаштованих сховищ, натисніть, щоб перевірити статус", "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ви впевнені, що бажаєте від’єднати це зовнішнє сховище? Це призведе до того, що сховище стане недоступним у хмарі Nextcloud, а також вилучить файли та каталоги на клієнтських пристроях, які наразі синхронізуються з хмарою. Файли та каталоги у зовнішньому сховищі не буде вилучено.", @@ -133,8 +144,11 @@ OC.L10N.register( "Saved" : "Збережено", "Saving …" : "Збереження …", "Save" : "Зберегти", + "Failed to save global credentials" : "Не вдалося зберегти глобальні облікові дані", + "Failed to save global credentials: {message}" : "Не вдалося зберегти глобальні облікові дані: {повідомлення}", "No external storage configured or you don't have the permission to configure them" : "Зовнішнє сховище не налаштовано або ви не маєте дозволу на їх налаштування", "Open documentation" : "Відкрити документацію", + "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." : "Зовнішнє сховище дає змогу підключати зовнішні сервіси та пристрої для зберігання даних як вторинні пристрої Nextcloud. Ви також можете дозволити користувачам монтувати власні зовнішні сховища.", "Folder name" : "Назва каталогу", "Authentication" : "Авторизація", "Configuration" : "Налаштування", diff --git a/apps/files_external/l10n/uk.json b/apps/files_external/l10n/uk.json index a650d9d93ce..6bed2dc94c7 100644 --- a/apps/files_external/l10n/uk.json +++ b/apps/files_external/l10n/uk.json @@ -62,6 +62,7 @@ "Enable Path Style" : "Включити стиль шляху", "Legacy (v2) authentication" : "Застарілий метод авторизації (v2) ", "Enable multipart copy" : "Дозволити множинне копіювання", + "SSE-C encryption key" : "Ключ шифрування SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Віддалений підкаталог", @@ -81,6 +82,7 @@ "Case sensitive file system" : "Файлова система, чутлива до регістру символів", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Вимкнення цього параметра дозволить використовувати файлову систему, нечутливу до регістру, але це також призведе до зниження продуктивності", "Verify ACL access when listing files" : "Перевірте доступ до ACL під час переліку файлів", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Перевірте ACL для кожного файлу або папки в каталозі, щоб відфільтрувати елементи, на які обліковий запис не має дозволів на читання, що призводить до зниження продуктивності", "Timeout" : "Час вичерпано", "SMB/CIFS using OC login" : "SMB/CIFS з використанням входу OC", "Login as share" : "Увійти під спільним доступом", @@ -93,10 +95,18 @@ "External storage" : "Зовнішнє сховище", "External storage support" : "Підтримка зовнішнього сховища", "Adds basic external storage support" : "Додає базову підтримку зовнішньої пам’яті", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Ця програма дозволяє адміністраторам налаштовувати підключення до зовнішніх сховищ, таких як FTP-сервери, сховища об'єктів S3 або SWIFT, інші сервери Nextcloud, WebDAV-сервери тощо. Адміністрація може вибирати, які типи сховищ увімкнути, і може монтувати ці сховища для облікового запису, групи або всієї системи. Користувачі побачать нову папку в кореневому каталозі Nextcloud, до якої вони зможуть отримати доступ і використовувати її як будь-яку іншу папку Nextcloud. Зовнішнє сховище також дозволяє користувачам ділитися файлами, що зберігаються в цих зовнішніх сховищах. У цих випадках облікові дані власника файлу використовуються, коли одержувач запитує файл із зовнішнього сховища, таким чином гарантуючи, що одержувач зможе отримати доступ до файлу, до якого надано спільний доступ.\n\nЗовнішнє сховище можна налаштувати за допомогою графічного інтерфейсу або командного рядка. Другий варіант надає адміністратору більше можливостей для налаштування масового монтування зовнішнього сховища і встановлення пріоритетів монтування. Докладнішу інформацію можна знайти у документації до графічного інтерфейсу зовнішнього сховища та документації до файлу конфігурації зовнішнього сховища.", "Confirm" : "Підтвердити", + "Storage credentials" : "Облікові дані для зберігання", + "To access the storage, you need to provide the authentication credentials." : "Щоб отримати доступ до сховища, вам потрібно надати облікові дані для автентифікації.", + "Enter the storage login" : "Введіть логін до сховища", + "Enter the storage password" : "Введіть пароль до сховища", "Unable to update this external storage config. {statusMessage}" : "Не вдалося оновити конфігурацію цього зовнішнього сховища. {statusMessage}", "New configuration successfully saved" : "Нову конфігурацію успішно збережено", "Enter missing credentials" : "Зазначте відсутні дані авторизації", + "Credentials successfully set" : "Облікові дані успішно встановлено", + "Error while setting credentials: {error}" : "Помилка під час встановлення облікових даних: {error}", + "Checking storage …" : "Перевірка сховища ...", "There was an error with this external storage." : "З цим зовнішнім сховищем виникла помилка.", "We were unable to check the external storage {basename}" : "Нам не вдалося перевірити зовнішнє сховище {basename}", "Examine this faulty external storage configuration" : "Перевірте цю несправну конфігурацію зовнішнього сховища", @@ -123,6 +133,7 @@ "Once every direct access" : "Один раз при кожному прямому доступі", "Read only" : "Тільки читання", "Disconnect" : "Від'єднати", + "Unknown backend: {backendName}" : "Невідомий бекенд: {backendName}", "Admin defined" : "Визначено адміністратором", "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Автоматична перевірка статусу вимкнена через велику кількість налаштованих сховищ, натисніть, щоб перевірити статус", "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ви впевнені, що бажаєте від’єднати це зовнішнє сховище? Це призведе до того, що сховище стане недоступним у хмарі Nextcloud, а також вилучить файли та каталоги на клієнтських пристроях, які наразі синхронізуються з хмарою. Файли та каталоги у зовнішньому сховищі не буде вилучено.", @@ -131,8 +142,11 @@ "Saved" : "Збережено", "Saving …" : "Збереження …", "Save" : "Зберегти", + "Failed to save global credentials" : "Не вдалося зберегти глобальні облікові дані", + "Failed to save global credentials: {message}" : "Не вдалося зберегти глобальні облікові дані: {повідомлення}", "No external storage configured or you don't have the permission to configure them" : "Зовнішнє сховище не налаштовано або ви не маєте дозволу на їх налаштування", "Open documentation" : "Відкрити документацію", + "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." : "Зовнішнє сховище дає змогу підключати зовнішні сервіси та пристрої для зберігання даних як вторинні пристрої Nextcloud. Ви також можете дозволити користувачам монтувати власні зовнішні сховища.", "Folder name" : "Назва каталогу", "Authentication" : "Авторизація", "Configuration" : "Налаштування", diff --git a/apps/files_external/lib/AppInfo/Application.php b/apps/files_external/lib/AppInfo/Application.php index d5181e783ce..3ded9f7cca0 100644 --- a/apps/files_external/lib/AppInfo/Application.php +++ b/apps/files_external/lib/AppInfo/Application.php @@ -54,8 +54,6 @@ use OCP\Files\Config\IMountProviderCollection; use OCP\Group\Events\GroupDeletedEvent; use OCP\User\Events\UserDeletedEvent; -require_once __DIR__ . '/../../3rdparty/autoload.php'; - /** * @package OCA\Files_External\AppInfo */ diff --git a/apps/files_external/lib/Command/Verify.php b/apps/files_external/lib/Command/Verify.php index 18cbc5a6774..ecebbe0f7e6 100644 --- a/apps/files_external/lib/Command/Verify.php +++ b/apps/files_external/lib/Command/Verify.php @@ -97,7 +97,6 @@ class Verify extends Base { MountConfig::getBackendStatus( $backend->getStorageClass(), $storage->getBackendOptions(), - false ) ); } catch (InsufficientDataForMeaningfulAnswerException $e) { diff --git a/apps/files_external/lib/ConfigLexicon.php b/apps/files_external/lib/ConfigLexicon.php index e162efc92cf..154f76c1989 100644 --- a/apps/files_external/lib/ConfigLexicon.php +++ b/apps/files_external/lib/ConfigLexicon.php @@ -8,30 +8,30 @@ declare(strict_types=1); namespace OCA\Files_External; -use NCU\Config\Lexicon\ConfigLexiconEntry; -use NCU\Config\Lexicon\ConfigLexiconStrictness; -use NCU\Config\Lexicon\IConfigLexicon; -use NCU\Config\ValueType; +use OCP\Config\Lexicon\Entry; +use OCP\Config\Lexicon\ILexicon; +use OCP\Config\Lexicon\Strictness; +use OCP\Config\ValueType; /** * Config Lexicon for files_sharing. * * Please Add & Manage your Config Keys in that file and keep the Lexicon up to date! * - * {@see IConfigLexicon} + * {@see ILexicon} */ -class ConfigLexicon implements IConfigLexicon { +class ConfigLexicon implements ILexicon { public const ALLOW_USER_MOUNTING = 'allow_user_mounting'; public const USER_MOUNTING_BACKENDS = 'user_mounting_backends'; - public function getStrictness(): ConfigLexiconStrictness { - return ConfigLexiconStrictness::NOTICE; + public function getStrictness(): Strictness { + return Strictness::NOTICE; } public function getAppConfigs(): array { return [ - new ConfigLexiconEntry(self::ALLOW_USER_MOUNTING, ValueType::BOOL, false, 'allow users to mount their own external filesystems', true), - new ConfigLexiconEntry(self::USER_MOUNTING_BACKENDS, ValueType::STRING, '', 'list of mounting backends available for users', true), + new Entry(self::ALLOW_USER_MOUNTING, ValueType::BOOL, false, 'allow users to mount their own external filesystems', true), + new Entry(self::USER_MOUNTING_BACKENDS, ValueType::STRING, '', 'list of mounting backends available for users', true), ]; } diff --git a/apps/files_external/lib/Controller/GlobalStoragesController.php b/apps/files_external/lib/Controller/GlobalStoragesController.php index 132295f6b35..e7274c9cfb6 100644 --- a/apps/files_external/lib/Controller/GlobalStoragesController.php +++ b/apps/files_external/lib/Controller/GlobalStoragesController.php @@ -133,7 +133,6 @@ class GlobalStoragesController extends StoragesController { * @param array $applicableUsers users for which to mount the storage * @param array $applicableGroups groups for which to mount the storage * @param int $priority priority - * @param bool $testOnly whether to storage should only test the connection or do more things * * @return DataResponse */ @@ -148,7 +147,6 @@ class GlobalStoragesController extends StoragesController { $applicableUsers, $applicableGroups, $priority, - $testOnly = true, ) { $storage = $this->createStorage( $mountPoint, @@ -181,7 +179,7 @@ class GlobalStoragesController extends StoragesController { ); } - $this->updateStorageStatus($storage, $testOnly); + $this->updateStorageStatus($storage); return new DataResponse( $storage->jsonSerialize(true), diff --git a/apps/files_external/lib/Controller/StoragesController.php b/apps/files_external/lib/Controller/StoragesController.php index 18f8d3164b7..df3a4528054 100644 --- a/apps/files_external/lib/Controller/StoragesController.php +++ b/apps/files_external/lib/Controller/StoragesController.php @@ -213,9 +213,8 @@ abstract class StoragesController extends Controller { * on whether the remote storage is available or not. * * @param StorageConfig $storage storage configuration - * @param bool $testOnly whether to storage should only test the connection or do more things */ - protected function updateStorageStatus(StorageConfig &$storage, $testOnly = true) { + protected function updateStorageStatus(StorageConfig &$storage) { try { $this->manipulateStorageConfig($storage); @@ -226,8 +225,6 @@ abstract class StoragesController extends Controller { MountConfig::getBackendStatus( $backend->getStorageClass(), $storage->getBackendOptions(), - false, - $testOnly ) ); } catch (InsufficientDataForMeaningfulAnswerException $e) { @@ -268,15 +265,14 @@ abstract class StoragesController extends Controller { * Get an external storage entry. * * @param int $id storage id - * @param bool $testOnly whether to storage should only test the connection or do more things * * @return DataResponse */ - public function show(int $id, $testOnly = true) { + public function show(int $id) { try { $storage = $this->service->getStorage($id); - $this->updateStorageStatus($storage, $testOnly); + $this->updateStorageStatus($storage); } catch (NotFoundException $e) { return new DataResponse( [ diff --git a/apps/files_external/lib/Controller/UserGlobalStoragesController.php b/apps/files_external/lib/Controller/UserGlobalStoragesController.php index 5f428db9661..88a9f936401 100644 --- a/apps/files_external/lib/Controller/UserGlobalStoragesController.php +++ b/apps/files_external/lib/Controller/UserGlobalStoragesController.php @@ -97,15 +97,14 @@ class UserGlobalStoragesController extends StoragesController { * Get an external storage entry. * * @param int $id storage id - * @param bool $testOnly whether to storage should only test the connection or do more things * @return DataResponse */ #[NoAdminRequired] - public function show($id, $testOnly = true) { + public function show($id) { try { $storage = $this->service->getStorage($id); - $this->updateStorageStatus($storage, $testOnly); + $this->updateStorageStatus($storage); } catch (NotFoundException $e) { return new DataResponse( [ @@ -133,7 +132,6 @@ class UserGlobalStoragesController extends StoragesController { * * @param int $id storage id * @param array $backendOptions backend-specific options - * @param bool $testOnly whether to storage should only test the connection or do more things * * @return DataResponse */ @@ -142,7 +140,6 @@ class UserGlobalStoragesController extends StoragesController { public function update( $id, $backendOptions, - $testOnly = true, ) { try { $storage = $this->service->getStorage($id); @@ -167,7 +164,7 @@ class UserGlobalStoragesController extends StoragesController { ); } - $this->updateStorageStatus($storage, $testOnly); + $this->updateStorageStatus($storage); $this->sanitizeStorage($storage); return new DataResponse( diff --git a/apps/files_external/lib/Controller/UserStoragesController.php b/apps/files_external/lib/Controller/UserStoragesController.php index 7b0c858e51b..7b564d57f7e 100644 --- a/apps/files_external/lib/Controller/UserStoragesController.php +++ b/apps/files_external/lib/Controller/UserStoragesController.php @@ -85,8 +85,8 @@ class UserStoragesController extends StoragesController { * {@inheritdoc} */ #[NoAdminRequired] - public function show(int $id, $testOnly = true) { - return parent::show($id, $testOnly); + public function show(int $id) { + return parent::show($id); } /** @@ -152,7 +152,6 @@ class UserStoragesController extends StoragesController { * @param string $authMechanism authentication mechanism identifier * @param array $backendOptions backend-specific options * @param array $mountOptions backend-specific mount options - * @param bool $testOnly whether to storage should only test the connection or do more things * * @return DataResponse */ @@ -165,7 +164,6 @@ class UserStoragesController extends StoragesController { $authMechanism, $backendOptions, $mountOptions, - $testOnly = true, ) { $storage = $this->createStorage( $mountPoint, @@ -195,7 +193,7 @@ class UserStoragesController extends StoragesController { ); } - $this->updateStorageStatus($storage, $testOnly); + $this->updateStorageStatus($storage); return new DataResponse( $storage->jsonSerialize(true), diff --git a/apps/files_external/lib/MountConfig.php b/apps/files_external/lib/MountConfig.php index a7d9e6f2603..5637ee71ec1 100644 --- a/apps/files_external/lib/MountConfig.php +++ b/apps/files_external/lib/MountConfig.php @@ -76,7 +76,7 @@ class MountConfig { * @return int see self::STATUS_* * @throws \Exception */ - public static function getBackendStatus($class, $options, $isPersonal, $testOnly = true) { + public static function getBackendStatus($class, $options) { if (self::$skipTest) { return StorageNotAvailableException::STATUS_SUCCESS; } @@ -93,7 +93,7 @@ class MountConfig { $storage = new $class($options); try { - $result = $storage->test($isPersonal, $testOnly); + $result = $storage->test(); $storage->setAvailability($result); if ($result) { return StorageNotAvailableException::STATUS_SUCCESS; diff --git a/apps/files_external/src/init.ts b/apps/files_external/src/init.ts index 3f33e9cf5b6..a8a265500dd 100644 --- a/apps/files_external/src/init.ts +++ b/apps/files_external/src/init.ts @@ -5,7 +5,7 @@ import { loadState } from '@nextcloud/initial-state' import { translate as t } from '@nextcloud/l10n' import { View, getNavigation, Column, registerFileAction } from '@nextcloud/files' -import FolderNetworkSvg from '@mdi/svg/svg/folder-network.svg?raw' +import FolderNetworkSvg from '@mdi/svg/svg/folder-network-outline.svg?raw' import { action as enterCredentialsAction } from './actions/enterCredentialsAction' import { action as inlineStorageCheckAction } from './actions/inlineStorageCheckAction' diff --git a/apps/files_reminders/l10n/uk.js b/apps/files_reminders/l10n/uk.js index 297864768b3..a9bc88520bc 100644 --- a/apps/files_reminders/l10n/uk.js +++ b/apps/files_reminders/l10n/uk.js @@ -5,7 +5,11 @@ OC.L10N.register( "Reminder for {name}" : "Нагадування для {name}", "View file" : "Переглянути файл", "View folder" : "Переглянути каталог", + "Files reminder" : "Нагадування для файлів", + "The \"files_reminders\" app can work properly." : "Додаток «files_reminders» може працювати належним чином.", + "The \"files_reminders\" app needs the notification app to work properly. You should either enable notifications or disable files_reminder." : "Для нормальної роботи програми «files_reminders» необхідна програма сповіщень. Вам слід або увімкнути сповіщення, або вимкнути files_reminder.", "Set file reminders" : "Встановити нагадування для файлу", + "**📣 File reminders**\n\nSet file reminders.\n\nNote: to use the `File reminders` app, ensure that the `Notifications` app is installed and enabled. The `Notifications` app provides the necessary APIs for the `File reminders` app to work correctly." : "**📣 Нагадування про файли**\n\nВстановіть нагадування про файли.\n\nПримітка: щоб використовувати додаток «Нагадування про файли», переконайтеся, що додаток «Повідомлення» встановлено та увімкнено. Додаток «Повідомлення» надає необхідні API для коректної роботи додатка «Нагадування про файли».", "Set reminder for \"{fileName}\"" : "Встановити нагадування для \"{fileName}\"", "Set reminder at custom date & time" : "Встановити нагадування на власну дату та час", "Clear reminder" : "Зняти нагадування", @@ -26,6 +30,8 @@ OC.L10N.register( "This weekend" : "Цими вихідними", "Set reminder for this weekend" : "Встановити нагадування на ці вихідні", "Next week" : "Наступний тиждень", - "Set reminder for next week" : "Встановити нагадування на наступний тиждень" + "Set reminder for next week" : "Встановити нагадування на наступний тиждень", + "This files_reminder can work properly." : "Цей files_reminder може працювати належним чином.", + "The files_reminder app needs the notification app to work properly. You should either enable notifications or disable files_reminder." : "Для нормальної роботи програми files_reminder необхідна програма сповіщень. Вам слід або увімкнути сповіщення, або вимкнути files_reminder." }, "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_reminders/l10n/uk.json b/apps/files_reminders/l10n/uk.json index a8679ae6221..5bc997af508 100644 --- a/apps/files_reminders/l10n/uk.json +++ b/apps/files_reminders/l10n/uk.json @@ -3,7 +3,11 @@ "Reminder for {name}" : "Нагадування для {name}", "View file" : "Переглянути файл", "View folder" : "Переглянути каталог", + "Files reminder" : "Нагадування для файлів", + "The \"files_reminders\" app can work properly." : "Додаток «files_reminders» може працювати належним чином.", + "The \"files_reminders\" app needs the notification app to work properly. You should either enable notifications or disable files_reminder." : "Для нормальної роботи програми «files_reminders» необхідна програма сповіщень. Вам слід або увімкнути сповіщення, або вимкнути files_reminder.", "Set file reminders" : "Встановити нагадування для файлу", + "**📣 File reminders**\n\nSet file reminders.\n\nNote: to use the `File reminders` app, ensure that the `Notifications` app is installed and enabled. The `Notifications` app provides the necessary APIs for the `File reminders` app to work correctly." : "**📣 Нагадування про файли**\n\nВстановіть нагадування про файли.\n\nПримітка: щоб використовувати додаток «Нагадування про файли», переконайтеся, що додаток «Повідомлення» встановлено та увімкнено. Додаток «Повідомлення» надає необхідні API для коректної роботи додатка «Нагадування про файли».", "Set reminder for \"{fileName}\"" : "Встановити нагадування для \"{fileName}\"", "Set reminder at custom date & time" : "Встановити нагадування на власну дату та час", "Clear reminder" : "Зняти нагадування", @@ -24,6 +28,8 @@ "This weekend" : "Цими вихідними", "Set reminder for this weekend" : "Встановити нагадування на ці вихідні", "Next week" : "Наступний тиждень", - "Set reminder for next week" : "Встановити нагадування на наступний тиждень" + "Set reminder for next week" : "Встановити нагадування на наступний тиждень", + "This files_reminder can work properly." : "Цей files_reminder може працювати належним чином.", + "The files_reminder app needs the notification app to work properly. You should either enable notifications or disable files_reminder." : "Для нормальної роботи програми files_reminder необхідна програма сповіщень. Вам слід або увімкнути сповіщення, або вимкнути files_reminder." },"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_sharing/css/icons.css b/apps/files_sharing/css/icons.css index b27ee91e37d..3a81b66561f 100644 --- a/apps/files_sharing/css/icons.css +++ b/apps/files_sharing/css/icons.css @@ -1,10 +1,4 @@ /*! * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later - *//*! - * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - *//*! - * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later */.icon-room{background-image:var(--icon-talk-dark)}.icon-circle{background-image:var(--icon-circles-dark)}.icon-guests{background-image:var(--icon-user-dark)}/*# sourceMappingURL=icons.css.map */ diff --git a/apps/files_sharing/css/icons.css.map b/apps/files_sharing/css/icons.css.map index 33f84dc03d4..8a0933ead82 100644 --- a/apps/files_sharing/css/icons.css.map +++ b/apps/files_sharing/css/icons.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["icons.scss","../../../core/css/variables.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA,GCEA;AAAA;AAAA;AAAA,GCFA;AAAA;AAAA;AAAA,GFQA,WACC,uCAGD,aACC,0CAGD,aACC","file":"icons.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["icons.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA,GAQA,WACC,uCAGD,aACC,0CAGD,aACC","file":"icons.css"}
\ No newline at end of file diff --git a/apps/files_sharing/css/icons.scss b/apps/files_sharing/css/icons.scss index 3307a9fa4cb..6dcbd14d478 100644 --- a/apps/files_sharing/css/icons.scss +++ b/apps/files_sharing/css/icons.scss @@ -2,10 +2,10 @@ * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ -@use 'variables'; -@use 'functions'; -// This is the icons used in the sharing ui (multiselect) +// This is the icons used in the sharing ui (SharingInput component) +// loaded by apps/files_sharing/lib/Listener/LoadAdditionalListener.php + .icon-room { background-image: var(--icon-talk-dark); } diff --git a/apps/files_sharing/css/mobile.css b/apps/files_sharing/css/mobile.css deleted file mode 100644 index 6bab90e8c63..00000000000 --- a/apps/files_sharing/css/mobile.css +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2014 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - *//*! - * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */@media only screen and (max-width: 1024px){#header.share-file{position:absolute !important}table th.column-size,table td.filesize,table th.column-mtime,table td.date{display:none}table td.filename .nametext{max-width:75% !important}#imgframe{width:100%;padding:0}#imgframe .publicpreview{margin-top:32px}.files-fileList a.action img{padding-block:0;padding-inline:12px 6px}.files-fileList a.action:not(.menuitem) span{display:none}.nametext{width:60%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#header .menutoggle{padding-inline-end:14px;background-position:center}.note{padding:0 20px}.emptycontent{margin-top:10vh}}/*# sourceMappingURL=mobile.css.map */ diff --git a/apps/files_sharing/css/mobile.css.map b/apps/files_sharing/css/mobile.css.map deleted file mode 100644 index 7c6c212dbb0..00000000000 --- a/apps/files_sharing/css/mobile.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sourceRoot":"","sources":["mobile.scss","../../../core/css/variables.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA,GCEA;AAAA;AAAA;AAAA,GDKA,2CAGA,mBACC,6BAID,2EAIC,aAID,4BACC,yBAID,UACC,WACA,UAGD,yBACC,gBAID,6BACC,gBACA,wBAGD,6CACC,aAID,UACC,UACA,mBACA,gBACA,uBAGD,oBACI,wBACA,2BAEJ,MACC,eAGD,cACC","file":"mobile.css"}
\ No newline at end of file diff --git a/apps/files_sharing/css/mobile.css.map.license b/apps/files_sharing/css/mobile.css.map.license deleted file mode 100644 index 3d60c440a9c..00000000000 --- a/apps/files_sharing/css/mobile.css.map.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors -SPDX-FileCopyrightText: 2014 ownCloud, Inc. -SPDX-License-Identifier: AGPL-3.0-only diff --git a/apps/files_sharing/css/mobile.scss b/apps/files_sharing/css/mobile.scss deleted file mode 100644 index 1f1a9b74357..00000000000 --- a/apps/files_sharing/css/mobile.scss +++ /dev/null @@ -1,67 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2014 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - */ -@use 'variables'; - -@media only screen and (max-width: variables.$breakpoint-mobile) { - -/* make header scroll up for single shares, more view of content on small screens */ -#header.share-file { - position: absolute !important; -} - -/* hide size and date columns */ -table th.column-size, -table td.filesize, -table th.column-mtime, -table td.date { - display: none; -} - -/* restrict length of displayed filename to prevent overflow */ -table td.filename .nametext { - max-width: 75% !important; -} - -/* on mobile, show single shared image at full width without margin */ -#imgframe { - width: 100%; - padding: 0; -} -/* some margin for the file type icon */ -#imgframe .publicpreview { - margin-top: 32px; -} - -/* some padding for better clickability */ -.files-fileList a.action img { - padding-block: 0; - padding-inline: 12px 6px; -} -/* hide text of the actions on mobile */ -.files-fileList a.action:not(.menuitem) span { - display: none; -} - -/* ellipsis on file names */ -.nametext { - width: 60%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -#header .menutoggle { - padding-inline-end: 14px; - background-position: center; -} -.note { - padding: 0 20px; -} - -.emptycontent { - margin-top: 10vh; -} -} diff --git a/apps/files_sharing/css/public.css b/apps/files_sharing/css/public.css deleted file mode 100644 index 6b5d3933419..00000000000 --- a/apps/files_sharing/css/public.css +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - *//*! - * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */#preview{text-align:center}#preview .notCreatable{display:none}#noPreview{display:none;padding-top:80px}#imgframe{height:75%;padding-bottom:32px;padding-top:32px;width:80%;margin:0 auto}#imgframe #viewer{height:100%;width:100%}#imgframe img{max-height:calc(100vh - var(--header-height) - 65px - 200px - 16px) !important;max-width:100% !important;width:unset !important}#imgframe :not(#viewer) img{min-width:100px}#imgframe video{max-height:calc(100vh - var(--header-height) - 65px - 200px - 16px)}#imgframe .plyr:fullscreen video{max-height:unset}#imgframe audio{display:block;margin-inline:auto}#imgframe #viewer[data-handler=audios]{margin-top:400px}#imgframe .text-preview{display:inline-block;position:relative;text-align:start;white-space:pre-wrap;overflow-y:scroll;height:auto;min-height:200px;max-height:800px}#imgframe .ellipsis{font-size:1.2em}#imgframe .viewer__file{height:100%;width:100%}#imgframe .plyr{top:0px !important;max-height:100%}.app-files_sharing #app-content footer{position:sticky !important}thead{inset-inline-start:0 !important}#data-upload-form{position:relative;inset-inline-end:0;height:32px;overflow:hidden;padding:0;float:right;display:inline;margin:0}.directDownload #downloadFile{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:90%;display:inline-block;margin-inline:auto;margin-top:16px}.download-size{opacity:.5}#details{display:inline-flex}#details button,#details input,#details .button{margin:0 5px;line-height:normal}#details button:hover,#details input:hover,#details .button:hover{border-color:rgba(0,0,0,.3) !important}#public-upload .avatardiv{margin:0 auto}.emptycontent.has-note{margin-top:5vh}#public-upload .emptycontent h2{margin:10px 0 5px 0}#public-upload .emptycontent h2+p{margin-bottom:30px}#public-upload .emptycontent .icon-folder{height:16px;width:16px;background-size:16px;display:inline-block;vertical-align:text-top;margin-bottom:0;margin-inline-end:5px;opacity:1}#public-upload .emptycontent #displayavatar .icon-folder{height:48px;width:48px;background-size:48px}#public-upload .emptycontent .button{display:inline-block;height:auto;width:auto;background-size:16px;background-position:16px;opacity:.7;font-size:20px;line-height:initial;margin:20px;padding:10px 20px;padding-inline-start:42px}#public-upload .emptycontent ul{width:230px;margin:5px auto 5vh;text-align:start}#public-upload .emptycontent li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:7px 0}#public-upload .emptycontent li img{margin-inline-end:5px;position:relative;top:2px}#drop-upload-progress-indicator span.icon-loading-small{padding-inline-start:18px;margin-inline-end:7px}#drop-uploaded-files li #drop-upload-name{float:left;max-width:180px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#drop-uploaded-files li #drop-upload-status{float:right}.disclaimer,.note{margin:0 auto 30px;max-width:400px;text-align:start}#note-content{padding:5px;display:inline-block;width:350px}#note-content .content{overflow:auto;max-height:200px}#show-terms-dialog{cursor:pointer;font-weight:bold}/*# sourceMappingURL=public.css.map */ diff --git a/apps/files_sharing/css/public.css.map b/apps/files_sharing/css/public.css.map deleted file mode 100644 index a34a1422358..00000000000 --- a/apps/files_sharing/css/public.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sourceRoot":"","sources":["public.scss","../../../core/css/variables.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA,GCEA;AAAA;AAAA;AAAA,GDSA,SACC,kBAGD,uBACC,aAGD,WACC,aACA,iBAGD,UACC,WACA,oBACA,iBACA,UACA,cAGD,kBACC,YACA,WAGD,cACC,+EACA,0BACA,uBAGD,4BACI,gBAGJ,gBACC,oEAGD,iCACI,iBAGJ,gBACC,cACA,mBAGD,uCAEI,iBAGJ,wBACC,qBACA,kBACA,iBACA,qBACA,kBACA,YACA,iBACA,iBAGD,oBACC,gBAGD,wBACC,YACA,WAGD,gBACC,mBACA,gBAGD,uCACC,2BAID,MACC,gCAGD,kBACC,kBACA,mBACA,YACA,gBACA,UACA,YACA,eACA,SAID,8BACC,mBACA,gBACA,uBACA,cACA,qBACA,mBACA,gBAGD,eACC,WAID,SACC,oBAGD,gDAGC,aACA,mBAGD,kEAIC,uCAGD,0BACC,cAIA,uBACC,eAIF,gCACC,oBAGD,kCACC,mBAGD,0CACC,YACA,WACA,qBACA,qBACA,wBACA,gBACA,sBACA,UAGD,yDACC,YACA,WACA,qBAGD,qCACC,qBACA,YACA,WACA,qBACA,yBACA,WACA,eACA,oBACA,YACA,kBACA,0BAGD,gCACC,YACA,oBACA,iBAGD,gCACC,gBACA,uBACA,mBACA,cAGD,oCACC,sBACA,kBACA,QAGD,wDACC,0BACA,sBAGD,0CACC,WACA,gBACA,uBACA,mBACA,gBAGD,4CACC,YAGD,kBAEC,mBACA,gBACA,iBAGD,cACC,YACA,qBACA,YACA,uBACC,cACA,iBAIF,mBACC,eACA","file":"public.css"}
\ No newline at end of file diff --git a/apps/files_sharing/css/public.css.map.license b/apps/files_sharing/css/public.css.map.license deleted file mode 100644 index 1c70f3b7dd4..00000000000 --- a/apps/files_sharing/css/public.css.map.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors -SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. -SPDX-License-Identifier: AGPL-3.0-only diff --git a/apps/files_sharing/css/public.scss b/apps/files_sharing/css/public.scss deleted file mode 100644 index 645aeeff357..00000000000 --- a/apps/files_sharing/css/public.scss +++ /dev/null @@ -1,250 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - */ -@use 'variables'; - -$footer-height: 65px; -$footer-padding-height: 16px; -$download-button-section-height: 200px; - -#preview { - text-align: center; -} - -#preview .notCreatable { - display: none; -} - -#noPreview { - display:none; - padding-top:80px; -} - -#imgframe { - height:75%; - padding-bottom:32px; - padding-top:32px; - width:80%; - margin:0 auto; -} - -#imgframe #viewer { - height: 100%; - width: 100%; -} - -#imgframe img { - max-height: calc(100vh - var(--header-height) - #{$footer-height} - #{$download-button-section-height} - #{$footer-padding-height}) !important; - max-width: 100% !important; - width: unset !important; -} - -#imgframe :not(#viewer) img { - min-width: 100px; -} - -#imgframe video { - max-height: calc(100vh - var(--header-height) - #{$footer-height} - #{$download-button-section-height} - #{$footer-padding-height}); -} - -#imgframe .plyr:fullscreen video { - max-height: unset; -} - -#imgframe audio { - display: block; - margin-inline: auto; -} - -#imgframe #viewer[data-handler=audios] { - // for speed settings - margin-top: 400px; -} - -#imgframe .text-preview { - display: inline-block; - position: relative; - text-align: start; - white-space: pre-wrap; - overflow-y: scroll; - height: auto; - min-height: 200px; - max-height: 800px; -} - -#imgframe .ellipsis { - font-size: 1.2em; -} - -#imgframe .viewer__file { - height: 100%; - width: 100%; -} - -#imgframe .plyr { - top: 0px !important; - max-height: 100%; -} - -.app-files_sharing #app-content footer { - position: sticky !important; -} - -/* fix multiselect bar offset on shared page */ -thead { - inset-inline-start: 0 !important; -} - -#data-upload-form { - position: relative; - inset-inline-end: 0; - height: 32px; - overflow: hidden; - padding: 0; - float: right; - display: inline; - margin: 0; -} - -/* keep long file names in one line to not overflow download button on mobile */ -.directDownload #downloadFile { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - max-width: 90%; - display: inline-block; - margin-inline: auto; - margin-top: 16px; -} - -.download-size { - opacity: .5; -} - -/* header buttons */ -#details { - display: inline-flex; -} - -#details button, -#details input, -#details .button { - margin: 0 5px; - line-height: normal; -} - -#details button:hover, -#details input:hover, -#details .button:hover { - /* No */ - border-color: rgba(0,0,0,0.3) !important; -} - -#public-upload .avatardiv { - margin: 0 auto; -} - -.emptycontent { - &.has-note { - margin-top: 5vh; - } -} - -#public-upload .emptycontent h2 { - margin: 10px 0 5px 0; -} - -#public-upload .emptycontent h2+p { - margin-bottom: 30px; -} - -#public-upload .emptycontent .icon-folder { - height: 16px; - width: 16px; - background-size: 16px; - display: inline-block; - vertical-align: text-top; - margin-bottom: 0; - margin-inline-end: 5px; - opacity: 1; -} - -#public-upload .emptycontent #displayavatar .icon-folder { - height: 48px; - width: 48px; - background-size: 48px; -} - -#public-upload .emptycontent .button { - display: inline-block; - height: auto; - width: auto; - background-size: 16px; - background-position: 16px; - opacity: .7; - font-size: 20px; - line-height: initial; - margin: 20px; - padding: 10px 20px; - padding-inline-start: 42px; -} - -#public-upload .emptycontent ul { - width: 230px; - margin: 5px auto 5vh; - text-align: start; -} - -#public-upload .emptycontent li { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - padding: 7px 0; -} - -#public-upload .emptycontent li img { - margin-inline-end: 5px; - position: relative; - top: 2px; -} - -#drop-upload-progress-indicator span.icon-loading-small { - padding-inline-start: 18px; - margin-inline-end: 7px; -} - -#drop-uploaded-files li #drop-upload-name { - float: left; - max-width: 180px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} - -#drop-uploaded-files li #drop-upload-status { - float: right; -} - -.disclaimer, -.note { - margin: 0 auto 30px; - max-width: 400px; - text-align: start; -} - -#note-content { - padding: 5px; - display:inline-block; - width: 350px; - .content { - overflow: auto; - max-height: 200px; - } -} - -#show-terms-dialog { - cursor: pointer; - font-weight: bold; -} diff --git a/apps/files_sharing/css/publicView.css b/apps/files_sharing/css/publicView.css deleted file mode 100644 index e7b2021d547..00000000000 --- a/apps/files_sharing/css/publicView.css +++ /dev/null @@ -1,15 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - *//*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - *//*! - * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */#preview{text-align:center}#preview .notCreatable{display:none}#noPreview{display:none;padding-top:80px}#imgframe{height:75%;padding-bottom:32px;padding-top:32px;width:80%;margin:0 auto}#imgframe #viewer{height:100%;width:100%}#imgframe img{max-height:calc(100vh - var(--header-height) - 65px - 200px - 16px) !important;max-width:100% !important;width:unset !important}#imgframe :not(#viewer) img{min-width:100px}#imgframe video{max-height:calc(100vh - var(--header-height) - 65px - 200px - 16px)}#imgframe .plyr:fullscreen video{max-height:unset}#imgframe audio{display:block;margin-inline:auto}#imgframe #viewer[data-handler=audios]{margin-top:400px}#imgframe .text-preview{display:inline-block;position:relative;text-align:start;white-space:pre-wrap;overflow-y:scroll;height:auto;min-height:200px;max-height:800px}#imgframe .ellipsis{font-size:1.2em}#imgframe .viewer__file{height:100%;width:100%}#imgframe .plyr{top:0px !important;max-height:100%}.app-files_sharing #app-content footer{position:sticky !important}thead{inset-inline-start:0 !important}#data-upload-form{position:relative;inset-inline-end:0;height:32px;overflow:hidden;padding:0;float:right;display:inline;margin:0}.directDownload #downloadFile{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:90%;display:inline-block;margin-inline:auto;margin-top:16px}.download-size{opacity:.5}#details{display:inline-flex}#details button,#details input,#details .button{margin:0 5px;line-height:normal}#details button:hover,#details input:hover,#details .button:hover{border-color:rgba(0,0,0,.3) !important}#public-upload .avatardiv{margin:0 auto}.emptycontent.has-note{margin-top:5vh}#public-upload .emptycontent h2{margin:10px 0 5px 0}#public-upload .emptycontent h2+p{margin-bottom:30px}#public-upload .emptycontent .icon-folder{height:16px;width:16px;background-size:16px;display:inline-block;vertical-align:text-top;margin-bottom:0;margin-inline-end:5px;opacity:1}#public-upload .emptycontent #displayavatar .icon-folder{height:48px;width:48px;background-size:48px}#public-upload .emptycontent .button{display:inline-block;height:auto;width:auto;background-size:16px;background-position:16px;opacity:.7;font-size:20px;line-height:initial;margin:20px;padding:10px 20px;padding-inline-start:42px}#public-upload .emptycontent ul{width:230px;margin:5px auto 5vh;text-align:start}#public-upload .emptycontent li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:7px 0}#public-upload .emptycontent li img{margin-inline-end:5px;position:relative;top:2px}#drop-upload-progress-indicator span.icon-loading-small{padding-inline-start:18px;margin-inline-end:7px}#drop-uploaded-files li #drop-upload-name{float:left;max-width:180px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#drop-uploaded-files li #drop-upload-status{float:right}.disclaimer,.note{margin:0 auto 30px;max-width:400px;text-align:start}#note-content{padding:5px;display:inline-block;width:350px}#note-content .content{overflow:auto;max-height:200px}#show-terms-dialog{cursor:pointer;font-weight:bold}/*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2014 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - */@media only screen and (max-width: 1024px){#header.share-file{position:absolute !important}table th.column-size,table td.filesize,table th.column-mtime,table td.date{display:none}table td.filename .nametext{max-width:75% !important}#imgframe{width:100%;padding:0}#imgframe .publicpreview{margin-top:32px}.files-fileList a.action img{padding-block:0;padding-inline:12px 6px}.files-fileList a.action:not(.menuitem) span{display:none}.nametext{width:60%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#header .menutoggle{padding-inline-end:14px;background-position:center}.note{padding:0 20px}.emptycontent{margin-top:10vh}}/*# sourceMappingURL=publicView.css.map */ diff --git a/apps/files_sharing/css/publicView.css.map b/apps/files_sharing/css/publicView.css.map deleted file mode 100644 index 25f1abf527a..00000000000 --- a/apps/files_sharing/css/publicView.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sourceRoot":"","sources":["publicView.scss","../../../core/css/variables.scss","public.scss","mobile.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCEA;AAAA;AAAA;AAAA,GCSA,SACC,kBAGD,uBACC,aAGD,WACC,aACA,iBAGD,UACC,WACA,oBACA,iBACA,UACA,cAGD,kBACC,YACA,WAGD,cACC,+EACA,0BACA,uBAGD,4BACI,gBAGJ,gBACC,oEAGD,iCACI,iBAGJ,gBACC,cACA,mBAGD,uCAEI,iBAGJ,wBACC,qBACA,kBACA,iBACA,qBACA,kBACA,YACA,iBACA,iBAGD,oBACC,gBAGD,wBACC,YACA,WAGD,gBACC,mBACA,gBAGD,uCACC,2BAID,MACC,gCAGD,kBACC,kBACA,mBACA,YACA,gBACA,UACA,YACA,eACA,SAID,8BACC,mBACA,gBACA,uBACA,cACA,qBACA,mBACA,gBAGD,eACC,WAID,SACC,oBAGD,gDAGC,aACA,mBAGD,kEAIC,uCAGD,0BACC,cAIA,uBACC,eAIF,gCACC,oBAGD,kCACC,mBAGD,0CACC,YACA,WACA,qBACA,qBACA,wBACA,gBACA,sBACA,UAGD,yDACC,YACA,WACA,qBAGD,qCACC,qBACA,YACA,WACA,qBACA,yBACA,WACA,eACA,oBACA,YACA,kBACA,0BAGD,gCACC,YACA,oBACA,iBAGD,gCACC,gBACA,uBACA,mBACA,cAGD,oCACC,sBACA,kBACA,QAGD,wDACC,0BACA,sBAGD,0CACC,WACA,gBACA,uBACA,mBACA,gBAGD,4CACC,YAGD,kBAEC,mBACA,gBACA,iBAGD,cACC,YACA,qBACA,YACA,uBACC,cACA,iBAIF,mBACC,eACA,iBCxPD;AAAA;AAAA;AAAA;AAAA,GAOA,2CAGA,mBACC,6BAID,2EAIC,aAID,4BACC,yBAID,UACC,WACA,UAGD,yBACC,gBAID,6BACC,gBACA,wBAGD,6CACC,aAID,UACC,UACA,mBACA,gBACA,uBAGD,oBACI,wBACA,2BAEJ,MACC,eAGD,cACC","file":"publicView.css"}
\ No newline at end of file diff --git a/apps/files_sharing/css/publicView.css.map.license b/apps/files_sharing/css/publicView.css.map.license deleted file mode 100644 index dddb428772d..00000000000 --- a/apps/files_sharing/css/publicView.css.map.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors -SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/apps/files_sharing/css/publicView.scss b/apps/files_sharing/css/publicView.scss deleted file mode 100644 index 9f61141d330..00000000000 --- a/apps/files_sharing/css/publicView.scss +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ -@use 'public'; -@use 'mobile'; diff --git a/apps/files_sharing/l10n/ar.js b/apps/files_sharing/l10n/ar.js index 508fe55aa0a..2f067ced7dc 100644 --- a/apps/files_sharing/l10n/ar.js +++ b/apps/files_sharing/l10n/ar.js @@ -385,16 +385,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "تمّت مشاركته معك و مع الدائرة {circle} من قِبَل {owner}", "Shared with you and the conversation {conversation} by {owner}" : "تمّت مشاركته معك و مع المحادثة {conversation} من قِبَل {owner}", "Shared with you in a conversation by {owner}" : "تمّت مشاركته معك في محادثة من قِبَل {owner}", - "Share note" : "ملاحظة عن المشاركة", - "Show list view" : "أظهِِر عرض القائمة list view", - "Show grid view" : "أظهِِر عرض الصناديق grid view", - "Upload files to %s" : "رَفْعُ ملفات إلى %s", - "%s shared a folder with you." : "قام %s بمشاركة مجلد معك.", - "Note" : "ملاحظة", - "Select or drop files" : "إختر أو أفلِت ملفات", - "Uploading files" : "رفع الملفات جارٍ...", - "Uploaded files:" : "تمّ رَفْعُ ملفاتٍ:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "برفع الملفات ، فإنك توافق على %1$s شروط الخدمة %2$s.", "Share not found" : "مشاركة غير موجودة", "Back to %s" : "عودة إلى %s", "Add to your Nextcloud" : "إضافة إلى حسابك على نكست كلاود", @@ -404,6 +394,8 @@ OC.L10N.register( "This will stop your current uploads." : "سيؤدي هذا لإيقاف رفع الملفات الحالية.", "Move or copy" : "أنقُل أو انسَخ", "You can upload into this folder" : "بإمكانك رفع الملفات إلى هذا المجلد", + "Show list view" : "أظهِِر عرض القائمة list view", + "Show grid view" : "أظهِِر عرض الصناديق grid view", "No compatible server found at {remote}" : "لم يتم العثور على خادم متوافق في {remote}", "Invalid server URL" : "عنوان الرابط للخادم غير صالح", "Failed to add the public link to your Nextcloud" : "فشل في إضافة الرابط العام إلى الخادم السحابي الخاص بك", @@ -416,6 +408,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "لرفع الملفات، يجب أن تكتب اسمك أوّلاً.", "Enter your name" : "أدخِل اسمك", "Submit name" : "إرسال الاسم", + "Share note" : "ملاحظة عن المشاركة", + "Upload files to %s" : "رَفْعُ ملفات إلى %s", + "%s shared a folder with you." : "قام %s بمشاركة مجلد معك.", + "Note" : "ملاحظة", + "Select or drop files" : "إختر أو أفلِت ملفات", + "Uploading files" : "رفع الملفات جارٍ...", + "Uploaded files:" : "تمّ رَفْعُ ملفاتٍ:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "برفع الملفات ، فإنك توافق على %1$s شروط الخدمة %2$s.", "Name" : "الاسم", "Email, federated cloud id" : "بريد إلكتروني، مُعرِّف سحابة اتحاديّة", "Filename must not be empty." : "يجب ألّا يكون اسم الملف فارغاً." diff --git a/apps/files_sharing/l10n/ar.json b/apps/files_sharing/l10n/ar.json index 540daa96c91..f7b8af2e100 100644 --- a/apps/files_sharing/l10n/ar.json +++ b/apps/files_sharing/l10n/ar.json @@ -383,16 +383,6 @@ "Shared with you and {circle} by {owner}" : "تمّت مشاركته معك و مع الدائرة {circle} من قِبَل {owner}", "Shared with you and the conversation {conversation} by {owner}" : "تمّت مشاركته معك و مع المحادثة {conversation} من قِبَل {owner}", "Shared with you in a conversation by {owner}" : "تمّت مشاركته معك في محادثة من قِبَل {owner}", - "Share note" : "ملاحظة عن المشاركة", - "Show list view" : "أظهِِر عرض القائمة list view", - "Show grid view" : "أظهِِر عرض الصناديق grid view", - "Upload files to %s" : "رَفْعُ ملفات إلى %s", - "%s shared a folder with you." : "قام %s بمشاركة مجلد معك.", - "Note" : "ملاحظة", - "Select or drop files" : "إختر أو أفلِت ملفات", - "Uploading files" : "رفع الملفات جارٍ...", - "Uploaded files:" : "تمّ رَفْعُ ملفاتٍ:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "برفع الملفات ، فإنك توافق على %1$s شروط الخدمة %2$s.", "Share not found" : "مشاركة غير موجودة", "Back to %s" : "عودة إلى %s", "Add to your Nextcloud" : "إضافة إلى حسابك على نكست كلاود", @@ -402,6 +392,8 @@ "This will stop your current uploads." : "سيؤدي هذا لإيقاف رفع الملفات الحالية.", "Move or copy" : "أنقُل أو انسَخ", "You can upload into this folder" : "بإمكانك رفع الملفات إلى هذا المجلد", + "Show list view" : "أظهِِر عرض القائمة list view", + "Show grid view" : "أظهِِر عرض الصناديق grid view", "No compatible server found at {remote}" : "لم يتم العثور على خادم متوافق في {remote}", "Invalid server URL" : "عنوان الرابط للخادم غير صالح", "Failed to add the public link to your Nextcloud" : "فشل في إضافة الرابط العام إلى الخادم السحابي الخاص بك", @@ -414,6 +406,14 @@ "To upload files, you need to provide your name first." : "لرفع الملفات، يجب أن تكتب اسمك أوّلاً.", "Enter your name" : "أدخِل اسمك", "Submit name" : "إرسال الاسم", + "Share note" : "ملاحظة عن المشاركة", + "Upload files to %s" : "رَفْعُ ملفات إلى %s", + "%s shared a folder with you." : "قام %s بمشاركة مجلد معك.", + "Note" : "ملاحظة", + "Select or drop files" : "إختر أو أفلِت ملفات", + "Uploading files" : "رفع الملفات جارٍ...", + "Uploaded files:" : "تمّ رَفْعُ ملفاتٍ:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "برفع الملفات ، فإنك توافق على %1$s شروط الخدمة %2$s.", "Name" : "الاسم", "Email, federated cloud id" : "بريد إلكتروني، مُعرِّف سحابة اتحاديّة", "Filename must not be empty." : "يجب ألّا يكون اسم الملف فارغاً." diff --git a/apps/files_sharing/l10n/ast.js b/apps/files_sharing/l10n/ast.js index 93fbfd31a73..475576a969c 100644 --- a/apps/files_sharing/l10n/ast.js +++ b/apps/files_sharing/l10n/ast.js @@ -278,15 +278,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner} compartió l'elementu contigo y con «{circle}»", "Shared with you and the conversation {conversation} by {owner}" : "{owner} compartió l'elementu contigo y cola conversación «{conversation}»", "Shared with you in a conversation by {owner}" : "{owner} compartió l'elementu contigo nuna conversación", - "Share note" : "Compartir una nota", - "Show list view" : "Amosar la vista en llista", - "Show grid view" : "Amosar la vista en rexáu", - "Upload files to %s" : "Xubir ficheros a «%s»", - "Note" : "Nota", - "Select or drop files" : "Seleiciona o suelta los ficheros", - "Uploading files" : "Xubiendo ficheros", - "Uploaded files:" : "Ficheros xubíos:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Al xubir los ficheros, aceptes los %1$stérminos del serviciu%2$s", "Share not found" : "Nun s'atopó la compartición", "Back to %s" : "Volver a «%s»", "Add to your Nextcloud" : "Amestar a Nextcloud", @@ -296,12 +287,21 @@ OC.L10N.register( "This will stop your current uploads." : "Esta aición va parar les xubes actuales.", "Move or copy" : "Mover o copiar", "You can upload into this folder" : "Pues xubir conteníu a esta carpeta", + "Show list view" : "Amosar la vista en llista", + "Show grid view" : "Amosar la vista en rexáu", "No compatible server found at {remote}" : "Nun s'atopó nengún sirvidor compatible en «{remote}»", "Invalid server URL" : "La URL del sirvidor ye inválida", "Failed to add the public link to your Nextcloud" : "Nun se pue amestar l'enllaz públicu a esta instancia de Nextcloud", "Download all files" : "Baxar tolos ficheros", "Search for share recipients" : "Buscar destinatarios del elementu compartíu", "No recommendations. Start typing." : "Nun hai nenguna recomendación. Comienza a escribir", + "Share note" : "Compartir una nota", + "Upload files to %s" : "Xubir ficheros a «%s»", + "Note" : "Nota", + "Select or drop files" : "Seleiciona o suelta los ficheros", + "Uploading files" : "Xubiendo ficheros", + "Uploaded files:" : "Ficheros xubíos:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Al xubir los ficheros, aceptes los %1$stérminos del serviciu%2$s", "Name" : "Nome" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/ast.json b/apps/files_sharing/l10n/ast.json index 596e94b9050..e95918aad5a 100644 --- a/apps/files_sharing/l10n/ast.json +++ b/apps/files_sharing/l10n/ast.json @@ -276,15 +276,6 @@ "Shared with you and {circle} by {owner}" : "{owner} compartió l'elementu contigo y con «{circle}»", "Shared with you and the conversation {conversation} by {owner}" : "{owner} compartió l'elementu contigo y cola conversación «{conversation}»", "Shared with you in a conversation by {owner}" : "{owner} compartió l'elementu contigo nuna conversación", - "Share note" : "Compartir una nota", - "Show list view" : "Amosar la vista en llista", - "Show grid view" : "Amosar la vista en rexáu", - "Upload files to %s" : "Xubir ficheros a «%s»", - "Note" : "Nota", - "Select or drop files" : "Seleiciona o suelta los ficheros", - "Uploading files" : "Xubiendo ficheros", - "Uploaded files:" : "Ficheros xubíos:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Al xubir los ficheros, aceptes los %1$stérminos del serviciu%2$s", "Share not found" : "Nun s'atopó la compartición", "Back to %s" : "Volver a «%s»", "Add to your Nextcloud" : "Amestar a Nextcloud", @@ -294,12 +285,21 @@ "This will stop your current uploads." : "Esta aición va parar les xubes actuales.", "Move or copy" : "Mover o copiar", "You can upload into this folder" : "Pues xubir conteníu a esta carpeta", + "Show list view" : "Amosar la vista en llista", + "Show grid view" : "Amosar la vista en rexáu", "No compatible server found at {remote}" : "Nun s'atopó nengún sirvidor compatible en «{remote}»", "Invalid server URL" : "La URL del sirvidor ye inválida", "Failed to add the public link to your Nextcloud" : "Nun se pue amestar l'enllaz públicu a esta instancia de Nextcloud", "Download all files" : "Baxar tolos ficheros", "Search for share recipients" : "Buscar destinatarios del elementu compartíu", "No recommendations. Start typing." : "Nun hai nenguna recomendación. Comienza a escribir", + "Share note" : "Compartir una nota", + "Upload files to %s" : "Xubir ficheros a «%s»", + "Note" : "Nota", + "Select or drop files" : "Seleiciona o suelta los ficheros", + "Uploading files" : "Xubiendo ficheros", + "Uploaded files:" : "Ficheros xubíos:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Al xubir los ficheros, aceptes los %1$stérminos del serviciu%2$s", "Name" : "Nome" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/bg.js b/apps/files_sharing/l10n/bg.js index bd8f335ef2f..e651fd12c61 100644 --- a/apps/files_sharing/l10n/bg.js +++ b/apps/files_sharing/l10n/bg.js @@ -223,15 +223,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Споделено с вас и {circle} от {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Споделено с вас и разговора {conversation} от {owner}", "Shared with you in a conversation by {owner}" : "Споделено с вас в разговор от {owner}", - "Share note" : "Сподели бележка", - "Show list view" : "Показване с изглед на списък", - "Show grid view" : "Показване в решетъчен изглед", - "Upload files to %s" : "Качване на файлове към %s", - "Note" : "Бележка", - "Select or drop files" : "Изберете файл или преместете с мишката", - "Uploading files" : "Качване на файлове", - "Uploaded files:" : "Качени файлове:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "С качването на файлове, вие се съгласявате с %1$s условията на услугата%2$s.", "Share not found" : "Споделянето не е открито", "Back to %s" : "Обратно към %s", "Add to your Nextcloud" : "Добавете към Nextcloud", @@ -241,6 +232,8 @@ OC.L10N.register( "This will stop your current uploads." : "Това ще прекрати всички ваши текущи процеси по качване на файлове.", "Move or copy" : "Премести или копирай", "You can upload into this folder" : "Може да качвате в папката", + "Show list view" : "Показване с изглед на списък", + "Show grid view" : "Показване в решетъчен изглед", "No compatible server found at {remote}" : "Не беше намерен съвместим сървър на {remote}", "Invalid server URL" : "URL адреса на сървъра не е валиден", "Failed to add the public link to your Nextcloud" : "Неуспешно добавяне на публичната връзка към вашия Nextcloud", @@ -248,6 +241,13 @@ OC.L10N.register( "Search for share recipients" : "Търсене на получатели на споделяне", "No recommendations. Start typing." : "Няма препоръки. Започнете да пишете.", "Enter your name" : "Въведете вашето име", + "Share note" : "Сподели бележка", + "Upload files to %s" : "Качване на файлове към %s", + "Note" : "Бележка", + "Select or drop files" : "Изберете файл или преместете с мишката", + "Uploading files" : "Качване на файлове", + "Uploaded files:" : "Качени файлове:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "С качването на файлове, вие се съгласявате с %1$s условията на услугата%2$s.", "Name" : "Име" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/bg.json b/apps/files_sharing/l10n/bg.json index f2dc60f8226..f55855a3c73 100644 --- a/apps/files_sharing/l10n/bg.json +++ b/apps/files_sharing/l10n/bg.json @@ -221,15 +221,6 @@ "Shared with you and {circle} by {owner}" : "Споделено с вас и {circle} от {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Споделено с вас и разговора {conversation} от {owner}", "Shared with you in a conversation by {owner}" : "Споделено с вас в разговор от {owner}", - "Share note" : "Сподели бележка", - "Show list view" : "Показване с изглед на списък", - "Show grid view" : "Показване в решетъчен изглед", - "Upload files to %s" : "Качване на файлове към %s", - "Note" : "Бележка", - "Select or drop files" : "Изберете файл или преместете с мишката", - "Uploading files" : "Качване на файлове", - "Uploaded files:" : "Качени файлове:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "С качването на файлове, вие се съгласявате с %1$s условията на услугата%2$s.", "Share not found" : "Споделянето не е открито", "Back to %s" : "Обратно към %s", "Add to your Nextcloud" : "Добавете към Nextcloud", @@ -239,6 +230,8 @@ "This will stop your current uploads." : "Това ще прекрати всички ваши текущи процеси по качване на файлове.", "Move or copy" : "Премести или копирай", "You can upload into this folder" : "Може да качвате в папката", + "Show list view" : "Показване с изглед на списък", + "Show grid view" : "Показване в решетъчен изглед", "No compatible server found at {remote}" : "Не беше намерен съвместим сървър на {remote}", "Invalid server URL" : "URL адреса на сървъра не е валиден", "Failed to add the public link to your Nextcloud" : "Неуспешно добавяне на публичната връзка към вашия Nextcloud", @@ -246,6 +239,13 @@ "Search for share recipients" : "Търсене на получатели на споделяне", "No recommendations. Start typing." : "Няма препоръки. Започнете да пишете.", "Enter your name" : "Въведете вашето име", + "Share note" : "Сподели бележка", + "Upload files to %s" : "Качване на файлове към %s", + "Note" : "Бележка", + "Select or drop files" : "Изберете файл или преместете с мишката", + "Uploading files" : "Качване на файлове", + "Uploaded files:" : "Качени файлове:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "С качването на файлове, вие се съгласявате с %1$s условията на услугата%2$s.", "Name" : "Име" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/ca.js b/apps/files_sharing/l10n/ca.js index a8c78dd12c3..68c3994f58c 100644 --- a/apps/files_sharing/l10n/ca.js +++ b/apps/files_sharing/l10n/ca.js @@ -385,16 +385,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner} l'ha compartit amb vós i amb el cercle {circle}", "Shared with you and the conversation {conversation} by {owner}" : "{owner} l'ha compartit amb vós i amb la conversa {conversation}", "Shared with you in a conversation by {owner}" : "{owner} l'ha compartit amb vós en una conversa", - "Share note" : "Nota de l'element compartit", - "Show list view" : "Mostra la visualització de llista", - "Show grid view" : "Mostra la visualització de graella", - "Upload files to %s" : "Puja fitxers a %s", - "%s shared a folder with you." : "%s ha compartit una carpeta amb tu.", - "Note" : "Nota", - "Select or drop files" : "Seleccioneu o deixeu anar fitxers", - "Uploading files" : "S'estan pujant els fitxers", - "Uploaded files:" : "Fitxers pujats:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Si pugeu fitxers, accepteu les %1$scondicions del servei%2$s.", "Share not found" : "No s'ha trobat la compartició", "Back to %s" : "Torna a %s", "Add to your Nextcloud" : "Afegeix al Nextcloud", @@ -404,6 +394,8 @@ OC.L10N.register( "This will stop your current uploads." : "Això aturarà les pujades actuals.", "Move or copy" : "Mou o copia", "You can upload into this folder" : "Podeu pujar elements a aquesta carpeta", + "Show list view" : "Mostra la visualització de llista", + "Show grid view" : "Mostra la visualització de graella", "No compatible server found at {remote}" : "No s'ha trobat cap servidor compatible a {remote}", "Invalid server URL" : "L'URL del servidor no és vàlida", "Failed to add the public link to your Nextcloud" : "No s'ha pogut afegir l'enllaç públic al vostre Nextcloud", @@ -416,6 +408,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Per la pujada de fitxers, primer heu de proporcionar el vostre nom.", "Enter your name" : "Introdueix el teu nom", "Submit name" : "Envia el nom", + "Share note" : "Nota de l'element compartit", + "Upload files to %s" : "Puja fitxers a %s", + "%s shared a folder with you." : "%s ha compartit una carpeta amb tu.", + "Note" : "Nota", + "Select or drop files" : "Seleccioneu o deixeu anar fitxers", + "Uploading files" : "S'estan pujant els fitxers", + "Uploaded files:" : "Fitxers pujats:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Si pugeu fitxers, accepteu les %1$scondicions del servei%2$s.", "Name" : "Nom", "Email, federated cloud id" : "Correu, identificador del núvol federat", "Filename must not be empty." : "El nom del fitxer no ha d'estar buit." diff --git a/apps/files_sharing/l10n/ca.json b/apps/files_sharing/l10n/ca.json index dd6b9279650..9ea9ce823ce 100644 --- a/apps/files_sharing/l10n/ca.json +++ b/apps/files_sharing/l10n/ca.json @@ -383,16 +383,6 @@ "Shared with you and {circle} by {owner}" : "{owner} l'ha compartit amb vós i amb el cercle {circle}", "Shared with you and the conversation {conversation} by {owner}" : "{owner} l'ha compartit amb vós i amb la conversa {conversation}", "Shared with you in a conversation by {owner}" : "{owner} l'ha compartit amb vós en una conversa", - "Share note" : "Nota de l'element compartit", - "Show list view" : "Mostra la visualització de llista", - "Show grid view" : "Mostra la visualització de graella", - "Upload files to %s" : "Puja fitxers a %s", - "%s shared a folder with you." : "%s ha compartit una carpeta amb tu.", - "Note" : "Nota", - "Select or drop files" : "Seleccioneu o deixeu anar fitxers", - "Uploading files" : "S'estan pujant els fitxers", - "Uploaded files:" : "Fitxers pujats:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Si pugeu fitxers, accepteu les %1$scondicions del servei%2$s.", "Share not found" : "No s'ha trobat la compartició", "Back to %s" : "Torna a %s", "Add to your Nextcloud" : "Afegeix al Nextcloud", @@ -402,6 +392,8 @@ "This will stop your current uploads." : "Això aturarà les pujades actuals.", "Move or copy" : "Mou o copia", "You can upload into this folder" : "Podeu pujar elements a aquesta carpeta", + "Show list view" : "Mostra la visualització de llista", + "Show grid view" : "Mostra la visualització de graella", "No compatible server found at {remote}" : "No s'ha trobat cap servidor compatible a {remote}", "Invalid server URL" : "L'URL del servidor no és vàlida", "Failed to add the public link to your Nextcloud" : "No s'ha pogut afegir l'enllaç públic al vostre Nextcloud", @@ -414,6 +406,14 @@ "To upload files, you need to provide your name first." : "Per la pujada de fitxers, primer heu de proporcionar el vostre nom.", "Enter your name" : "Introdueix el teu nom", "Submit name" : "Envia el nom", + "Share note" : "Nota de l'element compartit", + "Upload files to %s" : "Puja fitxers a %s", + "%s shared a folder with you." : "%s ha compartit una carpeta amb tu.", + "Note" : "Nota", + "Select or drop files" : "Seleccioneu o deixeu anar fitxers", + "Uploading files" : "S'estan pujant els fitxers", + "Uploaded files:" : "Fitxers pujats:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Si pugeu fitxers, accepteu les %1$scondicions del servei%2$s.", "Name" : "Nom", "Email, federated cloud id" : "Correu, identificador del núvol federat", "Filename must not be empty." : "El nom del fitxer no ha d'estar buit." diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js index 0c50df839a3..c499e7f731b 100644 --- a/apps/files_sharing/l10n/cs.js +++ b/apps/files_sharing/l10n/cs.js @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Sdíleno s vámi a {circle} od {owner}", "Shared with you and the conversation {conversation} by {owner}" : "{owner} sdílí vám a konverzaci {conversation}", "Shared with you in a conversation by {owner}" : " {owner} vám sdílí v konverzaci", - "Share note" : "Sdílet poznámku", - "Show list view" : "Zobrazit v seznamu", - "Show grid view" : "Zobrazit v mřížce", - "Upload files to %s" : "Nahrát soubory do %s", - "%s shared a folder with you." : "%s vám nasdílel(a) složku.", - "Note" : "Poznámka", - "Select or drop files" : "Vyberte nebo přetáhněte soubory", - "Uploading files" : "Nahrávání souborů", - "Uploaded files:" : "Nahrané soubory:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Nahráním souborů vyjadřujete souhlas s %1$svšeobecnými podmínkami%2$s.", "Share not found" : "Sdílení nenalezeno", "Back to %s" : "Zpět na %s", "Add to your Nextcloud" : "Přidat do Nextcloud", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "Toto zastaví vaše stávající nahrávání.", "Move or copy" : "Přesunout nebo zkopírovat", "You can upload into this folder" : "Do této složky můžete nahrávat", + "Show list view" : "Zobrazit v seznamu", + "Show grid view" : "Zobrazit v mřížce", "No compatible server found at {remote}" : "Na {remote} nebyl nalezen kompatibilní server", "Invalid server URL" : "Neplatná URL serveru", "Failed to add the public link to your Nextcloud" : "Nepodařilo se přidání veřejného odkazu do Nextcloud", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Aby bylo možné nahrávat soubory, je třeba nejprve zadat své jméno.", "Enter your name" : "Zadejte své jméno", "Submit name" : "Odeslat jméno", + "Share note" : "Sdílet poznámku", + "Upload files to %s" : "Nahrát soubory do %s", + "%s shared a folder with you." : "%s vám nasdílel(a) složku.", + "Note" : "Poznámka", + "Select or drop files" : "Vyberte nebo přetáhněte soubory", + "Uploading files" : "Nahrávání souborů", + "Uploaded files:" : "Nahrané soubory:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Nahráním souborů vyjadřujete souhlas s %1$svšeobecnými podmínkami%2$s.", "Name" : "Název", "Share with accounts, teams, federated cloud id" : "Nasdílejte účtům, týmům, identifikátorům v rámci federovaného cloudu", "Email, federated cloud id" : "E-mail, identif. federovaného cloudu", diff --git a/apps/files_sharing/l10n/cs.json b/apps/files_sharing/l10n/cs.json index 93497447ce5..feb4c661923 100644 --- a/apps/files_sharing/l10n/cs.json +++ b/apps/files_sharing/l10n/cs.json @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "Sdíleno s vámi a {circle} od {owner}", "Shared with you and the conversation {conversation} by {owner}" : "{owner} sdílí vám a konverzaci {conversation}", "Shared with you in a conversation by {owner}" : " {owner} vám sdílí v konverzaci", - "Share note" : "Sdílet poznámku", - "Show list view" : "Zobrazit v seznamu", - "Show grid view" : "Zobrazit v mřížce", - "Upload files to %s" : "Nahrát soubory do %s", - "%s shared a folder with you." : "%s vám nasdílel(a) složku.", - "Note" : "Poznámka", - "Select or drop files" : "Vyberte nebo přetáhněte soubory", - "Uploading files" : "Nahrávání souborů", - "Uploaded files:" : "Nahrané soubory:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Nahráním souborů vyjadřujete souhlas s %1$svšeobecnými podmínkami%2$s.", "Share not found" : "Sdílení nenalezeno", "Back to %s" : "Zpět na %s", "Add to your Nextcloud" : "Přidat do Nextcloud", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "Toto zastaví vaše stávající nahrávání.", "Move or copy" : "Přesunout nebo zkopírovat", "You can upload into this folder" : "Do této složky můžete nahrávat", + "Show list view" : "Zobrazit v seznamu", + "Show grid view" : "Zobrazit v mřížce", "No compatible server found at {remote}" : "Na {remote} nebyl nalezen kompatibilní server", "Invalid server URL" : "Neplatná URL serveru", "Failed to add the public link to your Nextcloud" : "Nepodařilo se přidání veřejného odkazu do Nextcloud", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "Aby bylo možné nahrávat soubory, je třeba nejprve zadat své jméno.", "Enter your name" : "Zadejte své jméno", "Submit name" : "Odeslat jméno", + "Share note" : "Sdílet poznámku", + "Upload files to %s" : "Nahrát soubory do %s", + "%s shared a folder with you." : "%s vám nasdílel(a) složku.", + "Note" : "Poznámka", + "Select or drop files" : "Vyberte nebo přetáhněte soubory", + "Uploading files" : "Nahrávání souborů", + "Uploaded files:" : "Nahrané soubory:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Nahráním souborů vyjadřujete souhlas s %1$svšeobecnými podmínkami%2$s.", "Name" : "Název", "Share with accounts, teams, federated cloud id" : "Nasdílejte účtům, týmům, identifikátorům v rámci federovaného cloudu", "Email, federated cloud id" : "E-mail, identif. federovaného cloudu", diff --git a/apps/files_sharing/l10n/da.js b/apps/files_sharing/l10n/da.js index ca9f27e3db3..463c1a69221 100644 --- a/apps/files_sharing/l10n/da.js +++ b/apps/files_sharing/l10n/da.js @@ -385,16 +385,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Delt med dig og {circle} af {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Delt med dig og konversationen {conversation} af {owner}", "Shared with you in a conversation by {owner}" : "Delt med dig og konversationen af {owner}", - "Share note" : "Del note", - "Show list view" : "Vis som liste", - "Show grid view" : "Vis som gitter", - "Upload files to %s" : "Upload filer til %s", - "%s shared a folder with you." : "%s delte en mappe med dig.", - "Note" : "Note", - "Select or drop files" : "Vælg eller slip filer", - "Uploading files" : "Uploader filer", - "Uploaded files:" : "Uploadede filer:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Ved at uploade filer accepterer du %1$sservicebetingelserne%2$s.", "Share not found" : "Delt fil ikke fundet", "Back to %s" : "Tilbage til %s", "Add to your Nextcloud" : "Tilføj til din Nextcloud", @@ -404,6 +394,8 @@ OC.L10N.register( "This will stop your current uploads." : "Dette vil stoppe din nuværende uploads.", "Move or copy" : "Flyt eller kopier", "You can upload into this folder" : "Du kan overføre til denne mappe", + "Show list view" : "Vis som liste", + "Show grid view" : "Vis som gitter", "No compatible server found at {remote}" : "Ingen kompatible servere fundet på {remote}", "Invalid server URL" : "Ugyldig server adresse", "Failed to add the public link to your Nextcloud" : "Fejl ved tilføjelse af offentligt link til din Nextcloud", @@ -416,6 +408,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "For at uploade filer skal du først angive dit navn.", "Enter your name" : "Angiv dit navn", "Submit name" : "Angiv navn", + "Share note" : "Del note", + "Upload files to %s" : "Upload filer til %s", + "%s shared a folder with you." : "%s delte en mappe med dig.", + "Note" : "Note", + "Select or drop files" : "Vælg eller slip filer", + "Uploading files" : "Uploader filer", + "Uploaded files:" : "Uploadede filer:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Ved at uploade filer accepterer du %1$sservicebetingelserne%2$s.", "Name" : "Navn", "Email, federated cloud id" : "E-mail, sammenkoblings cloud id", "Filename must not be empty." : "Filnavnet må ikke være tomt." diff --git a/apps/files_sharing/l10n/da.json b/apps/files_sharing/l10n/da.json index af4be1e8560..73f7c3aea8e 100644 --- a/apps/files_sharing/l10n/da.json +++ b/apps/files_sharing/l10n/da.json @@ -383,16 +383,6 @@ "Shared with you and {circle} by {owner}" : "Delt med dig og {circle} af {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Delt med dig og konversationen {conversation} af {owner}", "Shared with you in a conversation by {owner}" : "Delt med dig og konversationen af {owner}", - "Share note" : "Del note", - "Show list view" : "Vis som liste", - "Show grid view" : "Vis som gitter", - "Upload files to %s" : "Upload filer til %s", - "%s shared a folder with you." : "%s delte en mappe med dig.", - "Note" : "Note", - "Select or drop files" : "Vælg eller slip filer", - "Uploading files" : "Uploader filer", - "Uploaded files:" : "Uploadede filer:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Ved at uploade filer accepterer du %1$sservicebetingelserne%2$s.", "Share not found" : "Delt fil ikke fundet", "Back to %s" : "Tilbage til %s", "Add to your Nextcloud" : "Tilføj til din Nextcloud", @@ -402,6 +392,8 @@ "This will stop your current uploads." : "Dette vil stoppe din nuværende uploads.", "Move or copy" : "Flyt eller kopier", "You can upload into this folder" : "Du kan overføre til denne mappe", + "Show list view" : "Vis som liste", + "Show grid view" : "Vis som gitter", "No compatible server found at {remote}" : "Ingen kompatible servere fundet på {remote}", "Invalid server URL" : "Ugyldig server adresse", "Failed to add the public link to your Nextcloud" : "Fejl ved tilføjelse af offentligt link til din Nextcloud", @@ -414,6 +406,14 @@ "To upload files, you need to provide your name first." : "For at uploade filer skal du først angive dit navn.", "Enter your name" : "Angiv dit navn", "Submit name" : "Angiv navn", + "Share note" : "Del note", + "Upload files to %s" : "Upload filer til %s", + "%s shared a folder with you." : "%s delte en mappe med dig.", + "Note" : "Note", + "Select or drop files" : "Vælg eller slip filer", + "Uploading files" : "Uploader filer", + "Uploaded files:" : "Uploadede filer:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Ved at uploade filer accepterer du %1$sservicebetingelserne%2$s.", "Name" : "Navn", "Email, federated cloud id" : "E-mail, sammenkoblings cloud id", "Filename must not be empty." : "Filnavnet må ikke være tomt." diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js index 9a636d54456..083db9d8e8c 100644 --- a/apps/files_sharing/l10n/de.js +++ b/apps/files_sharing/l10n/de.js @@ -210,9 +210,9 @@ OC.L10N.register( "Shared via link by {initiator}" : "Geteilt mittels Link von {initiator}", "File request ({label})" : "Dateianfrage ({label})", "Mail share ({label})" : "Mail teilen ({label})", - "Share link ({label})" : "Link teilen ({label})", + "Share link ({label})" : "Externer Link ({label})", "Mail share" : "E-Mail-Freigabe", - "Share link ({index})" : "Link teilen ({index})", + "Share link ({index})" : "Externer Link ({index})", "Create public link" : "Öffentlichen Link erstellen", "Actions for \"{title}\"" : "Aktionen für \"{title}\"", "Copy public link of \"{title}\" to clipboard" : "Öffentlichen Link von \"{title}\" in die Zwischenablage kopieren", @@ -223,8 +223,8 @@ OC.L10N.register( "Password protection (enforced)" : "Passwortschutz (erzwungen)", "Password protection" : "Passwortschutz", "Enter a password" : "Passwort eingeben", - "Enable link expiration (enforced)" : "Gültigkeit des Links aktivieren (erzwungen)", - "Enable link expiration" : "Ablauf des Links aktivieren", + "Enable link expiration (enforced)" : "Ablaufdatum des Links aktivieren (erzwungen)", + "Enable link expiration" : "Ablaufdatum des Links aktivieren", "Enter expiration date (enforced)" : "Ablaufdatum eingeben (erzwungen)", "Enter expiration date" : "Ablaufdatum eingeben", "Create share" : "Freigabe erstellen", @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner} hat dies mit dir und dem Kreis {circle} geteilt", "Shared with you and the conversation {conversation} by {owner}" : "{owner} hat dies mit dir und der Unterhaltung {conversation} geteilt", "Shared with you in a conversation by {owner}" : "{owner} hat dies mit dir in einer Unterhaltung geteilt", - "Share note" : "Notiz teilen", - "Show list view" : "Listenansicht anzeigen", - "Show grid view" : "Rasteransicht anzeigen", - "Upload files to %s" : "Dateien für %s hochladen", - "%s shared a folder with you." : "%s hat einen Ordner mit dir geteilt.", - "Note" : "Notiz", - "Select or drop files" : "Dateien auswählen oder hierher ziehen", - "Uploading files" : "Dateien werden hochgeladen", - "Uploaded files:" : "Hochgeladene Dateien:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Durch das Hochladen von Dateien stimmst du den %1$sNutzungsbedingungen%2$s zu.", "Share not found" : "Freigabe nicht gefunden", "Back to %s" : "Zurück zu %s", "Add to your Nextcloud" : "Zu deiner Nextcloud hinzufügen", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "Hiermit werden die aktuellen Uploads angehalten.", "Move or copy" : "Verschieben oder kopieren", "You can upload into this folder" : "Du kannst in diesen Ordner hochladen", + "Show list view" : "Listenansicht anzeigen", + "Show grid view" : "Rasteransicht anzeigen", "No compatible server found at {remote}" : "Keinen kompatiblen Server unter {remote} gefunden", "Invalid server URL" : "Falsche Server-URL", "Failed to add the public link to your Nextcloud" : "Der öffentliche Link konnte nicht zu deiner Nextcloud hinzugefügt werden", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Um Dateien hochzuladen, musst du zunächst deinen Namen angeben.", "Enter your name" : "Gib deinen Namen ein", "Submit name" : "Name übermitteln", + "Share note" : "Notiz teilen", + "Upload files to %s" : "Dateien für %s hochladen", + "%s shared a folder with you." : "%s hat einen Ordner mit dir geteilt.", + "Note" : "Notiz", + "Select or drop files" : "Dateien auswählen oder hierher ziehen", + "Uploading files" : "Dateien werden hochgeladen", + "Uploaded files:" : "Hochgeladene Dateien:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Durch das Hochladen von Dateien stimmst du den %1$sNutzungsbedingungen%2$s zu.", "Name" : "Name", "Share with accounts, teams, federated cloud id" : "Teilen mit Konten, Teams, Federated-Cloud-IDs", "Email, federated cloud id" : "Name, Federated-Cloud-ID", diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json index c80c9b8bfd5..b2d69bc8e8f 100644 --- a/apps/files_sharing/l10n/de.json +++ b/apps/files_sharing/l10n/de.json @@ -208,9 +208,9 @@ "Shared via link by {initiator}" : "Geteilt mittels Link von {initiator}", "File request ({label})" : "Dateianfrage ({label})", "Mail share ({label})" : "Mail teilen ({label})", - "Share link ({label})" : "Link teilen ({label})", + "Share link ({label})" : "Externer Link ({label})", "Mail share" : "E-Mail-Freigabe", - "Share link ({index})" : "Link teilen ({index})", + "Share link ({index})" : "Externer Link ({index})", "Create public link" : "Öffentlichen Link erstellen", "Actions for \"{title}\"" : "Aktionen für \"{title}\"", "Copy public link of \"{title}\" to clipboard" : "Öffentlichen Link von \"{title}\" in die Zwischenablage kopieren", @@ -221,8 +221,8 @@ "Password protection (enforced)" : "Passwortschutz (erzwungen)", "Password protection" : "Passwortschutz", "Enter a password" : "Passwort eingeben", - "Enable link expiration (enforced)" : "Gültigkeit des Links aktivieren (erzwungen)", - "Enable link expiration" : "Ablauf des Links aktivieren", + "Enable link expiration (enforced)" : "Ablaufdatum des Links aktivieren (erzwungen)", + "Enable link expiration" : "Ablaufdatum des Links aktivieren", "Enter expiration date (enforced)" : "Ablaufdatum eingeben (erzwungen)", "Enter expiration date" : "Ablaufdatum eingeben", "Create share" : "Freigabe erstellen", @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "{owner} hat dies mit dir und dem Kreis {circle} geteilt", "Shared with you and the conversation {conversation} by {owner}" : "{owner} hat dies mit dir und der Unterhaltung {conversation} geteilt", "Shared with you in a conversation by {owner}" : "{owner} hat dies mit dir in einer Unterhaltung geteilt", - "Share note" : "Notiz teilen", - "Show list view" : "Listenansicht anzeigen", - "Show grid view" : "Rasteransicht anzeigen", - "Upload files to %s" : "Dateien für %s hochladen", - "%s shared a folder with you." : "%s hat einen Ordner mit dir geteilt.", - "Note" : "Notiz", - "Select or drop files" : "Dateien auswählen oder hierher ziehen", - "Uploading files" : "Dateien werden hochgeladen", - "Uploaded files:" : "Hochgeladene Dateien:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Durch das Hochladen von Dateien stimmst du den %1$sNutzungsbedingungen%2$s zu.", "Share not found" : "Freigabe nicht gefunden", "Back to %s" : "Zurück zu %s", "Add to your Nextcloud" : "Zu deiner Nextcloud hinzufügen", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "Hiermit werden die aktuellen Uploads angehalten.", "Move or copy" : "Verschieben oder kopieren", "You can upload into this folder" : "Du kannst in diesen Ordner hochladen", + "Show list view" : "Listenansicht anzeigen", + "Show grid view" : "Rasteransicht anzeigen", "No compatible server found at {remote}" : "Keinen kompatiblen Server unter {remote} gefunden", "Invalid server URL" : "Falsche Server-URL", "Failed to add the public link to your Nextcloud" : "Der öffentliche Link konnte nicht zu deiner Nextcloud hinzugefügt werden", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "Um Dateien hochzuladen, musst du zunächst deinen Namen angeben.", "Enter your name" : "Gib deinen Namen ein", "Submit name" : "Name übermitteln", + "Share note" : "Notiz teilen", + "Upload files to %s" : "Dateien für %s hochladen", + "%s shared a folder with you." : "%s hat einen Ordner mit dir geteilt.", + "Note" : "Notiz", + "Select or drop files" : "Dateien auswählen oder hierher ziehen", + "Uploading files" : "Dateien werden hochgeladen", + "Uploaded files:" : "Hochgeladene Dateien:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Durch das Hochladen von Dateien stimmst du den %1$sNutzungsbedingungen%2$s zu.", "Name" : "Name", "Share with accounts, teams, federated cloud id" : "Teilen mit Konten, Teams, Federated-Cloud-IDs", "Email, federated cloud id" : "Name, Federated-Cloud-ID", diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js index 061bceaba1e..ae518539e97 100644 --- a/apps/files_sharing/l10n/de_DE.js +++ b/apps/files_sharing/l10n/de_DE.js @@ -141,7 +141,7 @@ OC.L10N.register( "_{count} email address already added_::_{count} email addresses already added_" : ["{count} E-Mail-Adresse bereits hinzugefügt","{count} E-Mail-Adressen bereits hinzugefügt"], "_{count} email address added_::_{count} email addresses added_" : ["{count} E-Mail-Adresse hinzugefügt","{count} E-Mail-Adressen hinzugefügt"], "You can now share the link below to allow people to upload files to your directory." : "Sie können jetzt den unten stehenden Link freigeben, damit andere Dateien in Ihr Verzeichnis hochladen können.", - "Share link" : "Link teilen", + "Share link" : "Freigabe Link", "Copy to clipboard" : "In die Zwischenablage kopieren", "Send link via email" : "Link per E-Mail verschicken", "Enter an email address or paste a list" : "E-Mail-Adresse eingeben oder eine Liste einfügen", @@ -210,21 +210,21 @@ OC.L10N.register( "Shared via link by {initiator}" : "Geteilt mittels Link von {initiator}", "File request ({label})" : "Dateianfrage ({label})", "Mail share ({label})" : "Mail-Freigabe ({label})", - "Share link ({label})" : "Link teilen ({label})", + "Share link ({label})" : "Externer Link ({label})", "Mail share" : "E-Mail-Freigabe", - "Share link ({index})" : "Link teilen ({index})", + "Share link ({index})" : "Externer Link ({index})", "Create public link" : "Öffentlichen Link erstellen", "Actions for \"{title}\"" : "Aktionen für \"{title}\"", "Copy public link of \"{title}\" to clipboard" : "Öffentlichen Link von \"{title}\" in die Zwischenablage kopieren", "Error, please enter proper password and/or expiration date" : "Fehler. Bitte gebe das richtige Passwort und/oder Ablaufdatum ein", "Link share created" : "Link-Freigabe erstellt", "Error while creating the share" : "Fehler beim Erstellen der Freigabe", - "Please enter the following required information before creating the share" : "Bitte geben Sie die benötigten Informationen ein, bevor die Freigabe erstellt wird", + "Please enter the following required information before creating the share" : "Vor Erstellen der Freigabe bitte die erforderlichen Informationen eingeben", "Password protection (enforced)" : "Passwortschutz (erzwungen)", "Password protection" : "Passwortschutz", "Enter a password" : "Passwort eingeben", - "Enable link expiration (enforced)" : "Gültigkeit des Links aktivieren (erzwungen)", - "Enable link expiration" : "Gültigkeit des Links aktivieren", + "Enable link expiration (enforced)" : "Ablaufdatum des Links aktivieren (erzwungen)", + "Enable link expiration" : "Ablaufdatum des Links aktivieren", "Enter expiration date (enforced)" : "Ablaufdatum eingeben (erzwungen)", "Enter expiration date" : "Ablaufdatum eingeben", "Create share" : "Freigabe erstellen", @@ -283,7 +283,7 @@ OC.L10N.register( "Advanced settings" : "Erweiterte Einstellungen", "Share label" : "Freigabe-Label", "Share link token" : "Freigabe-Token teilen", - "Set the public share link token to something easy to remember or generate a new token. It is not recommended to use a guessable token for shares which contain sensitive information." : "Das öffentliche Freigabelink-Token auf einen Begriff festlegen, der leicht zu merken ist , oder generieren Sie ein neues Token. Es ist nicht empfehlenswert, ein erratbares Token für Freigaben zu verwenden, die vertrauliche Informationen enthalten.", + "Set the public share link token to something easy to remember or generate a new token. It is not recommended to use a guessable token for shares which contain sensitive information." : "Das öffentliche Freigabelink-Token auf einen Begriff festlegen, der leicht zu merken ist, oder ein neues Token erstellen. Es ist nicht zu empfehlen, für Freigaben , die vertrauliche Informationen enthalten, ein erratbares Token zu verwenden.", "Generating…" : "Generieren…", "Generate new token" : "Neues Token generieren", "Set password" : "Passwort festlegen", @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner} hat dies mit Ihnen und dem Kreis {circle} geteilt", "Shared with you and the conversation {conversation} by {owner}" : "{owner} hat diese mit Ihnen und der Unterhaltung {conversation} geteilt", "Shared with you in a conversation by {owner}" : "{owner} hat diese mit Ihnen in einer Unterhaltung geteilt", - "Share note" : "Notiz teilen", - "Show list view" : "Listenansicht anzeigen", - "Show grid view" : "Kachelansicht anzeigen", - "Upload files to %s" : "Dateien für %s hochladen", - "%s shared a folder with you." : "%s hat einen Ordner mit Ihnen geteilt.", - "Note" : "Notiz", - "Select or drop files" : "Dateien auswählen oder hierher ziehen", - "Uploading files" : "Dateien werden hochgeladen", - "Uploaded files:" : "Hochgeladene Dateien:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Durch das Hochladen von Dateien stimmen Sie den %1$sNutzungsbedingungen%2$s zu.", "Share not found" : "Freigabe nicht gefunden", "Back to %s" : "Zurück zu %s", "Add to your Nextcloud" : "Zu Ihrer Nextcloud hinzufügen", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "Hiermit werden die aktuellen Uploads angehalten.", "Move or copy" : "Verschieben oder kopieren", "You can upload into this folder" : "Sie können in diesen Ordner hochladen", + "Show list view" : "Listenansicht anzeigen", + "Show grid view" : "Kachelansicht anzeigen", "No compatible server found at {remote}" : "Keinen kompatiblen Server unter {remote} gefunden", "Invalid server URL" : "Falsche Server-URL", "Failed to add the public link to your Nextcloud" : "Der öffentliche Link konnte nicht zu Ihrer Nextcloud hinzugefügt werden", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Um Dateien hochzuladen, müssen Sie zunächst Ihren Namen angeben.", "Enter your name" : "Geben Sie Ihren Namen ein", "Submit name" : "Name übermitteln", + "Share note" : "Notiz teilen", + "Upload files to %s" : "Dateien für %s hochladen", + "%s shared a folder with you." : "%s hat einen Ordner mit Ihnen geteilt.", + "Note" : "Notiz", + "Select or drop files" : "Dateien auswählen oder hierher ziehen", + "Uploading files" : "Dateien werden hochgeladen", + "Uploaded files:" : "Hochgeladene Dateien:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Durch das Hochladen von Dateien stimmen Sie den %1$sNutzungsbedingungen%2$s zu.", "Name" : "Name", "Share with accounts, teams, federated cloud id" : "Teilen mit Konten, Teams, Federated-Cloud-IDs", "Email, federated cloud id" : "Name, Federated-Cloud-ID", diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json index 59d8719585c..20922680926 100644 --- a/apps/files_sharing/l10n/de_DE.json +++ b/apps/files_sharing/l10n/de_DE.json @@ -139,7 +139,7 @@ "_{count} email address already added_::_{count} email addresses already added_" : ["{count} E-Mail-Adresse bereits hinzugefügt","{count} E-Mail-Adressen bereits hinzugefügt"], "_{count} email address added_::_{count} email addresses added_" : ["{count} E-Mail-Adresse hinzugefügt","{count} E-Mail-Adressen hinzugefügt"], "You can now share the link below to allow people to upload files to your directory." : "Sie können jetzt den unten stehenden Link freigeben, damit andere Dateien in Ihr Verzeichnis hochladen können.", - "Share link" : "Link teilen", + "Share link" : "Freigabe Link", "Copy to clipboard" : "In die Zwischenablage kopieren", "Send link via email" : "Link per E-Mail verschicken", "Enter an email address or paste a list" : "E-Mail-Adresse eingeben oder eine Liste einfügen", @@ -208,21 +208,21 @@ "Shared via link by {initiator}" : "Geteilt mittels Link von {initiator}", "File request ({label})" : "Dateianfrage ({label})", "Mail share ({label})" : "Mail-Freigabe ({label})", - "Share link ({label})" : "Link teilen ({label})", + "Share link ({label})" : "Externer Link ({label})", "Mail share" : "E-Mail-Freigabe", - "Share link ({index})" : "Link teilen ({index})", + "Share link ({index})" : "Externer Link ({index})", "Create public link" : "Öffentlichen Link erstellen", "Actions for \"{title}\"" : "Aktionen für \"{title}\"", "Copy public link of \"{title}\" to clipboard" : "Öffentlichen Link von \"{title}\" in die Zwischenablage kopieren", "Error, please enter proper password and/or expiration date" : "Fehler. Bitte gebe das richtige Passwort und/oder Ablaufdatum ein", "Link share created" : "Link-Freigabe erstellt", "Error while creating the share" : "Fehler beim Erstellen der Freigabe", - "Please enter the following required information before creating the share" : "Bitte geben Sie die benötigten Informationen ein, bevor die Freigabe erstellt wird", + "Please enter the following required information before creating the share" : "Vor Erstellen der Freigabe bitte die erforderlichen Informationen eingeben", "Password protection (enforced)" : "Passwortschutz (erzwungen)", "Password protection" : "Passwortschutz", "Enter a password" : "Passwort eingeben", - "Enable link expiration (enforced)" : "Gültigkeit des Links aktivieren (erzwungen)", - "Enable link expiration" : "Gültigkeit des Links aktivieren", + "Enable link expiration (enforced)" : "Ablaufdatum des Links aktivieren (erzwungen)", + "Enable link expiration" : "Ablaufdatum des Links aktivieren", "Enter expiration date (enforced)" : "Ablaufdatum eingeben (erzwungen)", "Enter expiration date" : "Ablaufdatum eingeben", "Create share" : "Freigabe erstellen", @@ -281,7 +281,7 @@ "Advanced settings" : "Erweiterte Einstellungen", "Share label" : "Freigabe-Label", "Share link token" : "Freigabe-Token teilen", - "Set the public share link token to something easy to remember or generate a new token. It is not recommended to use a guessable token for shares which contain sensitive information." : "Das öffentliche Freigabelink-Token auf einen Begriff festlegen, der leicht zu merken ist , oder generieren Sie ein neues Token. Es ist nicht empfehlenswert, ein erratbares Token für Freigaben zu verwenden, die vertrauliche Informationen enthalten.", + "Set the public share link token to something easy to remember or generate a new token. It is not recommended to use a guessable token for shares which contain sensitive information." : "Das öffentliche Freigabelink-Token auf einen Begriff festlegen, der leicht zu merken ist, oder ein neues Token erstellen. Es ist nicht zu empfehlen, für Freigaben , die vertrauliche Informationen enthalten, ein erratbares Token zu verwenden.", "Generating…" : "Generieren…", "Generate new token" : "Neues Token generieren", "Set password" : "Passwort festlegen", @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "{owner} hat dies mit Ihnen und dem Kreis {circle} geteilt", "Shared with you and the conversation {conversation} by {owner}" : "{owner} hat diese mit Ihnen und der Unterhaltung {conversation} geteilt", "Shared with you in a conversation by {owner}" : "{owner} hat diese mit Ihnen in einer Unterhaltung geteilt", - "Share note" : "Notiz teilen", - "Show list view" : "Listenansicht anzeigen", - "Show grid view" : "Kachelansicht anzeigen", - "Upload files to %s" : "Dateien für %s hochladen", - "%s shared a folder with you." : "%s hat einen Ordner mit Ihnen geteilt.", - "Note" : "Notiz", - "Select or drop files" : "Dateien auswählen oder hierher ziehen", - "Uploading files" : "Dateien werden hochgeladen", - "Uploaded files:" : "Hochgeladene Dateien:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Durch das Hochladen von Dateien stimmen Sie den %1$sNutzungsbedingungen%2$s zu.", "Share not found" : "Freigabe nicht gefunden", "Back to %s" : "Zurück zu %s", "Add to your Nextcloud" : "Zu Ihrer Nextcloud hinzufügen", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "Hiermit werden die aktuellen Uploads angehalten.", "Move or copy" : "Verschieben oder kopieren", "You can upload into this folder" : "Sie können in diesen Ordner hochladen", + "Show list view" : "Listenansicht anzeigen", + "Show grid view" : "Kachelansicht anzeigen", "No compatible server found at {remote}" : "Keinen kompatiblen Server unter {remote} gefunden", "Invalid server URL" : "Falsche Server-URL", "Failed to add the public link to your Nextcloud" : "Der öffentliche Link konnte nicht zu Ihrer Nextcloud hinzugefügt werden", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "Um Dateien hochzuladen, müssen Sie zunächst Ihren Namen angeben.", "Enter your name" : "Geben Sie Ihren Namen ein", "Submit name" : "Name übermitteln", + "Share note" : "Notiz teilen", + "Upload files to %s" : "Dateien für %s hochladen", + "%s shared a folder with you." : "%s hat einen Ordner mit Ihnen geteilt.", + "Note" : "Notiz", + "Select or drop files" : "Dateien auswählen oder hierher ziehen", + "Uploading files" : "Dateien werden hochgeladen", + "Uploaded files:" : "Hochgeladene Dateien:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Durch das Hochladen von Dateien stimmen Sie den %1$sNutzungsbedingungen%2$s zu.", "Name" : "Name", "Share with accounts, teams, federated cloud id" : "Teilen mit Konten, Teams, Federated-Cloud-IDs", "Email, federated cloud id" : "Name, Federated-Cloud-ID", diff --git a/apps/files_sharing/l10n/el.js b/apps/files_sharing/l10n/el.js index 8d9efb9e50e..19fb4519a20 100644 --- a/apps/files_sharing/l10n/el.js +++ b/apps/files_sharing/l10n/el.js @@ -245,15 +245,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Διαμοιράστηκε με σας και τον {circle} από τον {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Διαμοιράστηκε με σας και με τη συζήτηση {conversation} από {owner}", "Shared with you in a conversation by {owner}" : "Διαμοιράστηκε με σας από τον {owner}", - "Share note" : "Σημείωση κοινόχρηστου", - "Show list view" : "Προβολή λίστας", - "Show grid view" : "Προβολή πλέγματος", - "Upload files to %s" : "Αποστολή αρχείων σε %s", - "Note" : "Σημείωση", - "Select or drop files" : "Επιλέξτε ή αποθέστε αρχεία", - "Uploading files" : "Μεταφόρτωση αρχείων", - "Uploaded files:" : "Αποστολή αρχείων:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Με την μεταφόρτωση αρχείων, συμφωνείτε με %1$sόρους χρήσεως %2$s.", "Share not found" : "Δεν βρέθηκε το κονόχρηστο", "Back to %s" : "Πίσω στο %s", "Add to your Nextcloud" : "Προσθήκη στο Nextcloud σου", @@ -263,6 +254,8 @@ OC.L10N.register( "This will stop your current uploads." : "Αυτό θα σταματήσει τις τρέχουσες μεταφορτώσεις.", "Move or copy" : "Μετακίνηση ή αντιγραφή", "You can upload into this folder" : "Μπορείτε να μεταφορτώσετε σε αυτόν τον φάκελο", + "Show list view" : "Προβολή λίστας", + "Show grid view" : "Προβολή πλέγματος", "No compatible server found at {remote}" : "Δεν βρέθηκε συμβατός διακομιστής σε {remote}", "Invalid server URL" : "Μη έγκυρο URL διακομιστή", "Failed to add the public link to your Nextcloud" : "Αποτυχία στην πρόσθεση του κοινού συνδέσμου στο Nextcloud σας", @@ -270,6 +263,13 @@ OC.L10N.register( "Search for share recipients" : "Αναζήτηση για παραλήπτες διαμοιρασμού", "No recommendations. Start typing." : "Δεν υπάρχουν συστάσεις. Αρχίστε να πληκτρολογείτε.", "Enter your name" : "Προσθέστε το όνομά σας", + "Share note" : "Σημείωση κοινόχρηστου", + "Upload files to %s" : "Αποστολή αρχείων σε %s", + "Note" : "Σημείωση", + "Select or drop files" : "Επιλέξτε ή αποθέστε αρχεία", + "Uploading files" : "Μεταφόρτωση αρχείων", + "Uploaded files:" : "Αποστολή αρχείων:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Με την μεταφόρτωση αρχείων, συμφωνείτε με %1$sόρους χρήσεως %2$s.", "Name" : "Όνομα", "Filename must not be empty." : "Το όνομα αρχείου δεν πρέπει να είναι κενό." }, diff --git a/apps/files_sharing/l10n/el.json b/apps/files_sharing/l10n/el.json index fe132c15bc8..b66a04983e0 100644 --- a/apps/files_sharing/l10n/el.json +++ b/apps/files_sharing/l10n/el.json @@ -243,15 +243,6 @@ "Shared with you and {circle} by {owner}" : "Διαμοιράστηκε με σας και τον {circle} από τον {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Διαμοιράστηκε με σας και με τη συζήτηση {conversation} από {owner}", "Shared with you in a conversation by {owner}" : "Διαμοιράστηκε με σας από τον {owner}", - "Share note" : "Σημείωση κοινόχρηστου", - "Show list view" : "Προβολή λίστας", - "Show grid view" : "Προβολή πλέγματος", - "Upload files to %s" : "Αποστολή αρχείων σε %s", - "Note" : "Σημείωση", - "Select or drop files" : "Επιλέξτε ή αποθέστε αρχεία", - "Uploading files" : "Μεταφόρτωση αρχείων", - "Uploaded files:" : "Αποστολή αρχείων:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Με την μεταφόρτωση αρχείων, συμφωνείτε με %1$sόρους χρήσεως %2$s.", "Share not found" : "Δεν βρέθηκε το κονόχρηστο", "Back to %s" : "Πίσω στο %s", "Add to your Nextcloud" : "Προσθήκη στο Nextcloud σου", @@ -261,6 +252,8 @@ "This will stop your current uploads." : "Αυτό θα σταματήσει τις τρέχουσες μεταφορτώσεις.", "Move or copy" : "Μετακίνηση ή αντιγραφή", "You can upload into this folder" : "Μπορείτε να μεταφορτώσετε σε αυτόν τον φάκελο", + "Show list view" : "Προβολή λίστας", + "Show grid view" : "Προβολή πλέγματος", "No compatible server found at {remote}" : "Δεν βρέθηκε συμβατός διακομιστής σε {remote}", "Invalid server URL" : "Μη έγκυρο URL διακομιστή", "Failed to add the public link to your Nextcloud" : "Αποτυχία στην πρόσθεση του κοινού συνδέσμου στο Nextcloud σας", @@ -268,6 +261,13 @@ "Search for share recipients" : "Αναζήτηση για παραλήπτες διαμοιρασμού", "No recommendations. Start typing." : "Δεν υπάρχουν συστάσεις. Αρχίστε να πληκτρολογείτε.", "Enter your name" : "Προσθέστε το όνομά σας", + "Share note" : "Σημείωση κοινόχρηστου", + "Upload files to %s" : "Αποστολή αρχείων σε %s", + "Note" : "Σημείωση", + "Select or drop files" : "Επιλέξτε ή αποθέστε αρχεία", + "Uploading files" : "Μεταφόρτωση αρχείων", + "Uploaded files:" : "Αποστολή αρχείων:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Με την μεταφόρτωση αρχείων, συμφωνείτε με %1$sόρους χρήσεως %2$s.", "Name" : "Όνομα", "Filename must not be empty." : "Το όνομα αρχείου δεν πρέπει να είναι κενό." },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_sharing/l10n/en_GB.js b/apps/files_sharing/l10n/en_GB.js index 913f08150a7..8cbeeccff4d 100644 --- a/apps/files_sharing/l10n/en_GB.js +++ b/apps/files_sharing/l10n/en_GB.js @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Shared with you and {circle} by {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Shared with you and the conversation {conversation} by {owner}", "Shared with you in a conversation by {owner}" : "Shared with you in a conversation by {owner}", - "Share note" : "Share note", - "Show list view" : "Show list view", - "Show grid view" : "Show grid view", - "Upload files to %s" : "Upload files to %s", - "%s shared a folder with you." : "%s shared a folder with you.", - "Note" : "Note", - "Select or drop files" : "Select or drop files", - "Uploading files" : "Uploading files", - "Uploaded files:" : "Uploaded files:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "By uploading files, you agree to the %1$sterms of service%2$s.", "Share not found" : "Share not found", "Back to %s" : "Back to %s", "Add to your Nextcloud" : "Add to your Nextcloud", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "This will stop your current uploads.", "Move or copy" : "Move or copy", "You can upload into this folder" : "You can upload into this folder", + "Show list view" : "Show list view", + "Show grid view" : "Show grid view", "No compatible server found at {remote}" : "No compatible server found at {remote}", "Invalid server URL" : "Invalid server URL", "Failed to add the public link to your Nextcloud" : "Failed to add the public link to your Nextcloud", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "To upload files, you need to provide your name first.", "Enter your name" : "Enter your name", "Submit name" : "Submit name", + "Share note" : "Share note", + "Upload files to %s" : "Upload files to %s", + "%s shared a folder with you." : "%s shared a folder with you.", + "Note" : "Note", + "Select or drop files" : "Select or drop files", + "Uploading files" : "Uploading files", + "Uploaded files:" : "Uploaded files:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "By uploading files, you agree to the %1$sterms of service%2$s.", "Name" : "Surname", "Share with accounts, teams, federated cloud id" : "Share with accounts, teams, federated cloud id", "Email, federated cloud id" : "Email, federated cloud id", diff --git a/apps/files_sharing/l10n/en_GB.json b/apps/files_sharing/l10n/en_GB.json index f9a6190251e..39cf0ef5314 100644 --- a/apps/files_sharing/l10n/en_GB.json +++ b/apps/files_sharing/l10n/en_GB.json @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "Shared with you and {circle} by {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Shared with you and the conversation {conversation} by {owner}", "Shared with you in a conversation by {owner}" : "Shared with you in a conversation by {owner}", - "Share note" : "Share note", - "Show list view" : "Show list view", - "Show grid view" : "Show grid view", - "Upload files to %s" : "Upload files to %s", - "%s shared a folder with you." : "%s shared a folder with you.", - "Note" : "Note", - "Select or drop files" : "Select or drop files", - "Uploading files" : "Uploading files", - "Uploaded files:" : "Uploaded files:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "By uploading files, you agree to the %1$sterms of service%2$s.", "Share not found" : "Share not found", "Back to %s" : "Back to %s", "Add to your Nextcloud" : "Add to your Nextcloud", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "This will stop your current uploads.", "Move or copy" : "Move or copy", "You can upload into this folder" : "You can upload into this folder", + "Show list view" : "Show list view", + "Show grid view" : "Show grid view", "No compatible server found at {remote}" : "No compatible server found at {remote}", "Invalid server URL" : "Invalid server URL", "Failed to add the public link to your Nextcloud" : "Failed to add the public link to your Nextcloud", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "To upload files, you need to provide your name first.", "Enter your name" : "Enter your name", "Submit name" : "Submit name", + "Share note" : "Share note", + "Upload files to %s" : "Upload files to %s", + "%s shared a folder with you." : "%s shared a folder with you.", + "Note" : "Note", + "Select or drop files" : "Select or drop files", + "Uploading files" : "Uploading files", + "Uploaded files:" : "Uploaded files:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "By uploading files, you agree to the %1$sterms of service%2$s.", "Name" : "Surname", "Share with accounts, teams, federated cloud id" : "Share with accounts, teams, federated cloud id", "Email, federated cloud id" : "Email, federated cloud id", diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js index 01250907325..fba03819b5b 100644 --- a/apps/files_sharing/l10n/es.js +++ b/apps/files_sharing/l10n/es.js @@ -386,16 +386,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Compartido contigo y {circle} por {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Compartido contigo y con la conversación {conversation} por {owner}", "Shared with you in a conversation by {owner}" : "Compartido contigo por {owner} en una conversación", - "Share note" : "Compartir nota", - "Show list view" : "Mostrar vista de lista", - "Show grid view" : "Mostrar vista de cuadrícula", - "Upload files to %s" : "Subir archivos a %s", - "%s shared a folder with you." : "%s ha compartido una carpeta contigo.", - "Note" : "Nota", - "Select or drop files" : "Seleccione o arrastre y suelte archivos", - "Uploading files" : "Subiendo archivos", - "Uploaded files:" : "Archivos subidos:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Al subir archivos, aceptas los %1$stérminos del servicio%2$s.", "Share not found" : "Recurso compartido no encontrado", "Back to %s" : "Volver a %s", "Add to your Nextcloud" : "Añadir a tu Nextcloud", @@ -405,6 +395,8 @@ OC.L10N.register( "This will stop your current uploads." : "Esto detendrá tus subidas actuales.", "Move or copy" : "Mover o copiar", "You can upload into this folder" : "Puedes subir archivos en esta carpeta", + "Show list view" : "Mostrar vista de lista", + "Show grid view" : "Mostrar vista de cuadrícula", "No compatible server found at {remote}" : "No se ha encontrado un servidor compatible en {remote}", "Invalid server URL" : "URL del servidor inválida", "Failed to add the public link to your Nextcloud" : "No se ha podido añadir el enlace público a tu Nextcloud", @@ -417,6 +409,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Para cargar archivos, primero debes indicar tu nombre.", "Enter your name" : "Escriba su nombre", "Submit name" : "Enviar nombre", + "Share note" : "Compartir nota", + "Upload files to %s" : "Subir archivos a %s", + "%s shared a folder with you." : "%s ha compartido una carpeta contigo.", + "Note" : "Nota", + "Select or drop files" : "Seleccione o arrastre y suelte archivos", + "Uploading files" : "Subiendo archivos", + "Uploaded files:" : "Archivos subidos:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Al subir archivos, aceptas los %1$stérminos del servicio%2$s.", "Name" : "Nombre", "Share with accounts, teams, federated cloud id" : "Comparta con cuentas, equipos, id de nube federada", "Email, federated cloud id" : "Email, ID de nube federada", diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json index 27831e37d5a..b3fde704542 100644 --- a/apps/files_sharing/l10n/es.json +++ b/apps/files_sharing/l10n/es.json @@ -384,16 +384,6 @@ "Shared with you and {circle} by {owner}" : "Compartido contigo y {circle} por {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Compartido contigo y con la conversación {conversation} por {owner}", "Shared with you in a conversation by {owner}" : "Compartido contigo por {owner} en una conversación", - "Share note" : "Compartir nota", - "Show list view" : "Mostrar vista de lista", - "Show grid view" : "Mostrar vista de cuadrícula", - "Upload files to %s" : "Subir archivos a %s", - "%s shared a folder with you." : "%s ha compartido una carpeta contigo.", - "Note" : "Nota", - "Select or drop files" : "Seleccione o arrastre y suelte archivos", - "Uploading files" : "Subiendo archivos", - "Uploaded files:" : "Archivos subidos:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Al subir archivos, aceptas los %1$stérminos del servicio%2$s.", "Share not found" : "Recurso compartido no encontrado", "Back to %s" : "Volver a %s", "Add to your Nextcloud" : "Añadir a tu Nextcloud", @@ -403,6 +393,8 @@ "This will stop your current uploads." : "Esto detendrá tus subidas actuales.", "Move or copy" : "Mover o copiar", "You can upload into this folder" : "Puedes subir archivos en esta carpeta", + "Show list view" : "Mostrar vista de lista", + "Show grid view" : "Mostrar vista de cuadrícula", "No compatible server found at {remote}" : "No se ha encontrado un servidor compatible en {remote}", "Invalid server URL" : "URL del servidor inválida", "Failed to add the public link to your Nextcloud" : "No se ha podido añadir el enlace público a tu Nextcloud", @@ -415,6 +407,14 @@ "To upload files, you need to provide your name first." : "Para cargar archivos, primero debes indicar tu nombre.", "Enter your name" : "Escriba su nombre", "Submit name" : "Enviar nombre", + "Share note" : "Compartir nota", + "Upload files to %s" : "Subir archivos a %s", + "%s shared a folder with you." : "%s ha compartido una carpeta contigo.", + "Note" : "Nota", + "Select or drop files" : "Seleccione o arrastre y suelte archivos", + "Uploading files" : "Subiendo archivos", + "Uploaded files:" : "Archivos subidos:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Al subir archivos, aceptas los %1$stérminos del servicio%2$s.", "Name" : "Nombre", "Share with accounts, teams, federated cloud id" : "Comparta con cuentas, equipos, id de nube federada", "Email, federated cloud id" : "Email, ID de nube federada", diff --git a/apps/files_sharing/l10n/es_EC.js b/apps/files_sharing/l10n/es_EC.js index 21fcf2a9681..0e6dbcf3f26 100644 --- a/apps/files_sharing/l10n/es_EC.js +++ b/apps/files_sharing/l10n/es_EC.js @@ -230,15 +230,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Compartido contigo y {circle} por {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Compartido contigo y la conversación {conversation} por {owner}", "Shared with you in a conversation by {owner}" : "Compartido contigo en una conversación por {owner}", - "Share note" : "Compartir nota", - "Show list view" : "Mostrar vista de lista", - "Show grid view" : "Mostrar vista de cuadrícula", - "Upload files to %s" : "Cargar archivos a %s", - "Note" : "Nota", - "Select or drop files" : "Selecciona o suelta los archivos", - "Uploading files" : "Subiendo archivos", - "Uploaded files:" : "Archivos cargados:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Al subir archivos, aceptas los %1$stérminos de servicio%2$s.", "Share not found" : "No se encontró el elemento compartido", "Back to %s" : "Volver a %s", "Add to your Nextcloud" : "Agregar a tu Nextcloud", @@ -248,12 +239,21 @@ OC.L10N.register( "This will stop your current uploads." : "Esto detendrá tus cargas actuales.", "Move or copy" : "Mover o copiar", "You can upload into this folder" : "Puedes cargar archivos dentro de esta carpeta", + "Show list view" : "Mostrar vista de lista", + "Show grid view" : "Mostrar vista de cuadrícula", "No compatible server found at {remote}" : "No se encontró un servidor compatible en {remote}", "Invalid server URL" : "URL del servidor inválido", "Failed to add the public link to your Nextcloud" : "Se presentó una falla al agregar el enlace público a tu Nextcloud", "Download all files" : "Descargar todos los archivos", "Search for share recipients" : "Buscar destinatarios de la compartición", "No recommendations. Start typing." : "No hay recomendaciones. Comienza a escribir.", + "Share note" : "Compartir nota", + "Upload files to %s" : "Cargar archivos a %s", + "Note" : "Nota", + "Select or drop files" : "Selecciona o suelta los archivos", + "Uploading files" : "Subiendo archivos", + "Uploaded files:" : "Archivos cargados:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Al subir archivos, aceptas los %1$stérminos de servicio%2$s.", "Name" : "Nombre" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_sharing/l10n/es_EC.json b/apps/files_sharing/l10n/es_EC.json index 354e564989c..d5e79f185ee 100644 --- a/apps/files_sharing/l10n/es_EC.json +++ b/apps/files_sharing/l10n/es_EC.json @@ -228,15 +228,6 @@ "Shared with you and {circle} by {owner}" : "Compartido contigo y {circle} por {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Compartido contigo y la conversación {conversation} por {owner}", "Shared with you in a conversation by {owner}" : "Compartido contigo en una conversación por {owner}", - "Share note" : "Compartir nota", - "Show list view" : "Mostrar vista de lista", - "Show grid view" : "Mostrar vista de cuadrícula", - "Upload files to %s" : "Cargar archivos a %s", - "Note" : "Nota", - "Select or drop files" : "Selecciona o suelta los archivos", - "Uploading files" : "Subiendo archivos", - "Uploaded files:" : "Archivos cargados:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Al subir archivos, aceptas los %1$stérminos de servicio%2$s.", "Share not found" : "No se encontró el elemento compartido", "Back to %s" : "Volver a %s", "Add to your Nextcloud" : "Agregar a tu Nextcloud", @@ -246,12 +237,21 @@ "This will stop your current uploads." : "Esto detendrá tus cargas actuales.", "Move or copy" : "Mover o copiar", "You can upload into this folder" : "Puedes cargar archivos dentro de esta carpeta", + "Show list view" : "Mostrar vista de lista", + "Show grid view" : "Mostrar vista de cuadrícula", "No compatible server found at {remote}" : "No se encontró un servidor compatible en {remote}", "Invalid server URL" : "URL del servidor inválido", "Failed to add the public link to your Nextcloud" : "Se presentó una falla al agregar el enlace público a tu Nextcloud", "Download all files" : "Descargar todos los archivos", "Search for share recipients" : "Buscar destinatarios de la compartición", "No recommendations. Start typing." : "No hay recomendaciones. Comienza a escribir.", + "Share note" : "Compartir nota", + "Upload files to %s" : "Cargar archivos a %s", + "Note" : "Nota", + "Select or drop files" : "Selecciona o suelta los archivos", + "Uploading files" : "Subiendo archivos", + "Uploaded files:" : "Archivos cargados:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Al subir archivos, aceptas los %1$stérminos de servicio%2$s.", "Name" : "Nombre" },"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_sharing/l10n/es_MX.js b/apps/files_sharing/l10n/es_MX.js index d2165687eda..6077bf303b6 100644 --- a/apps/files_sharing/l10n/es_MX.js +++ b/apps/files_sharing/l10n/es_MX.js @@ -329,16 +329,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Compartido con Ud. y {circle} por {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Compartido con Ud. y la conversación {conversation} por {owner}", "Shared with you in a conversation by {owner}" : "Compartido con Ud. en una conversación por {owner}", - "Share note" : "Compartir nota", - "Show list view" : "Mostrar vista de lista", - "Show grid view" : "Mostrar vista de cuadrícula", - "Upload files to %s" : "Cargar archivos a %s", - "%s shared a folder with you." : "%s le compartió una carpeta.", - "Note" : "Nota", - "Select or drop files" : "Selecciona o suelta los archivos", - "Uploading files" : "Cargando archivos", - "Uploaded files:" : "Archivos cargados:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Al cargar archivos, acepta los %1$stérminos de servicio%2$s.", "Share not found" : "No se encontró el elemento compartido", "Back to %s" : "Volver a %s", "Add to your Nextcloud" : "Agregar a tu Nextcloud", @@ -348,6 +338,8 @@ OC.L10N.register( "This will stop your current uploads." : "Se detendrán las cargas en curso", "Move or copy" : "Mover o copiar", "You can upload into this folder" : "Puedes cargar archivos dentro de esta carpeta", + "Show list view" : "Mostrar vista de lista", + "Show grid view" : "Mostrar vista de cuadrícula", "No compatible server found at {remote}" : "No se encontró un servidor compatible en {remote}", "Invalid server URL" : "URL del servidor inválido", "Failed to add the public link to your Nextcloud" : "Se presentó una falla al agregar la liga pública a tu Nextcloud", @@ -360,6 +352,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Para cargar archivos, primero debe proveer su nombre.", "Enter your name" : "Ingrese su nombre", "Submit name" : "Enviar nombre", + "Share note" : "Compartir nota", + "Upload files to %s" : "Cargar archivos a %s", + "%s shared a folder with you." : "%s le compartió una carpeta.", + "Note" : "Nota", + "Select or drop files" : "Selecciona o suelta los archivos", + "Uploading files" : "Cargando archivos", + "Uploaded files:" : "Archivos cargados:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Al cargar archivos, acepta los %1$stérminos de servicio%2$s.", "Name" : "Nombre", "Filename must not be empty." : "El nombre de archivo no puede estar vacío." }, diff --git a/apps/files_sharing/l10n/es_MX.json b/apps/files_sharing/l10n/es_MX.json index 1a504514394..c4605f0cbb3 100644 --- a/apps/files_sharing/l10n/es_MX.json +++ b/apps/files_sharing/l10n/es_MX.json @@ -327,16 +327,6 @@ "Shared with you and {circle} by {owner}" : "Compartido con Ud. y {circle} por {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Compartido con Ud. y la conversación {conversation} por {owner}", "Shared with you in a conversation by {owner}" : "Compartido con Ud. en una conversación por {owner}", - "Share note" : "Compartir nota", - "Show list view" : "Mostrar vista de lista", - "Show grid view" : "Mostrar vista de cuadrícula", - "Upload files to %s" : "Cargar archivos a %s", - "%s shared a folder with you." : "%s le compartió una carpeta.", - "Note" : "Nota", - "Select or drop files" : "Selecciona o suelta los archivos", - "Uploading files" : "Cargando archivos", - "Uploaded files:" : "Archivos cargados:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Al cargar archivos, acepta los %1$stérminos de servicio%2$s.", "Share not found" : "No se encontró el elemento compartido", "Back to %s" : "Volver a %s", "Add to your Nextcloud" : "Agregar a tu Nextcloud", @@ -346,6 +336,8 @@ "This will stop your current uploads." : "Se detendrán las cargas en curso", "Move or copy" : "Mover o copiar", "You can upload into this folder" : "Puedes cargar archivos dentro de esta carpeta", + "Show list view" : "Mostrar vista de lista", + "Show grid view" : "Mostrar vista de cuadrícula", "No compatible server found at {remote}" : "No se encontró un servidor compatible en {remote}", "Invalid server URL" : "URL del servidor inválido", "Failed to add the public link to your Nextcloud" : "Se presentó una falla al agregar la liga pública a tu Nextcloud", @@ -358,6 +350,14 @@ "To upload files, you need to provide your name first." : "Para cargar archivos, primero debe proveer su nombre.", "Enter your name" : "Ingrese su nombre", "Submit name" : "Enviar nombre", + "Share note" : "Compartir nota", + "Upload files to %s" : "Cargar archivos a %s", + "%s shared a folder with you." : "%s le compartió una carpeta.", + "Note" : "Nota", + "Select or drop files" : "Selecciona o suelta los archivos", + "Uploading files" : "Cargando archivos", + "Uploaded files:" : "Archivos cargados:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Al cargar archivos, acepta los %1$stérminos de servicio%2$s.", "Name" : "Nombre", "Filename must not be empty." : "El nombre de archivo no puede estar vacío." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" diff --git a/apps/files_sharing/l10n/et_EE.js b/apps/files_sharing/l10n/et_EE.js index c8f541077f4..faa937543e9 100644 --- a/apps/files_sharing/l10n/et_EE.js +++ b/apps/files_sharing/l10n/et_EE.js @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "„{owner}“ jagas seda sinuga ja „{circle}“ tiimiga", "Shared with you and the conversation {conversation} by {owner}" : "„{owner}“ jagas seda sinuga ja vestlusega „{conversation}“", "Shared with you in a conversation by {owner}" : "„{owner}“ jagas seda sinuga vestluses", - "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", - "Uploading files" : "Failid on üleslaadimisel", - "Uploaded files:" : "Üleslaaditud failid:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Faile üleslaadides nõustud sa „%2$s“ teenuse „%1$s“ kasutustingimustega.", "Share not found" : "Jagamist ei leidu", "Back to %s" : "Tagasi siia: %s", "Add to your Nextcloud" : "Lisa oma Nextcloudi", @@ -420,6 +410,8 @@ OC.L10N.register( "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", + "Show list view" : "Näita loendivaadet", + "Show grid view" : "Näita ruudustikuvaadet", "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", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Faili üleslaadimiseks pead esmalt oma nime sisestama.", "Enter your name" : "Sisesta oma nimi", "Submit name" : "Salvesta nimi", + "Share note" : "Jaga märget", + "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", + "Uploading files" : "Failid on üleslaadimisel", + "Uploaded files:" : "Üleslaaditud failid:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Faile üleslaadides nõustud sa „%2$s“ teenuse „%1$s“ kasutustingimustega.", "Name" : "Nimi", "Share with accounts, teams, federated cloud id" : "Jaga kasutajatega, tiimidega ja liitpilves osalejatega", "Email, federated cloud id" : "E-posti aadress, liitpilve kasutajatunnus", diff --git a/apps/files_sharing/l10n/et_EE.json b/apps/files_sharing/l10n/et_EE.json index 3926f473c7c..6c63d373f7f 100644 --- a/apps/files_sharing/l10n/et_EE.json +++ b/apps/files_sharing/l10n/et_EE.json @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "„{owner}“ jagas seda sinuga ja „{circle}“ tiimiga", "Shared with you and the conversation {conversation} by {owner}" : "„{owner}“ jagas seda sinuga ja vestlusega „{conversation}“", "Shared with you in a conversation by {owner}" : "„{owner}“ jagas seda sinuga vestluses", - "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", - "Uploading files" : "Failid on üleslaadimisel", - "Uploaded files:" : "Üleslaaditud failid:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Faile üleslaadides nõustud sa „%2$s“ teenuse „%1$s“ kasutustingimustega.", "Share not found" : "Jagamist ei leidu", "Back to %s" : "Tagasi siia: %s", "Add to your Nextcloud" : "Lisa oma Nextcloudi", @@ -418,6 +408,8 @@ "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", + "Show list view" : "Näita loendivaadet", + "Show grid view" : "Näita ruudustikuvaadet", "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", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "Faili üleslaadimiseks pead esmalt oma nime sisestama.", "Enter your name" : "Sisesta oma nimi", "Submit name" : "Salvesta nimi", + "Share note" : "Jaga märget", + "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", + "Uploading files" : "Failid on üleslaadimisel", + "Uploaded files:" : "Üleslaaditud failid:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Faile üleslaadides nõustud sa „%2$s“ teenuse „%1$s“ kasutustingimustega.", "Name" : "Nimi", "Share with accounts, teams, federated cloud id" : "Jaga kasutajatega, tiimidega ja liitpilves osalejatega", "Email, federated cloud id" : "E-posti aadress, liitpilve kasutajatunnus", diff --git a/apps/files_sharing/l10n/eu.js b/apps/files_sharing/l10n/eu.js index cf72b25ce3a..5b4caa99625 100644 --- a/apps/files_sharing/l10n/eu.js +++ b/apps/files_sharing/l10n/eu.js @@ -389,16 +389,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : " {owner} erabiltzaileak zurekin eta {circle} zirkuluarekin partekatua", "Shared with you and the conversation {conversation} by {owner}" : "{owner} erabiltzaileak zu eta {conversation} elkarrizketarekin partekatua", "Shared with you in a conversation by {owner}" : "{owner} erabiltzaileak zurekin partekatua elkarrizketa batean", - "Share note" : "Partekatu oharra", - "Show list view" : "Erakutsi zerrenda ikuspegia", - "Show grid view" : "Erakutsi sareta-ikuspegia", - "Upload files to %s" : "Igo fitxategiak hona: %s", - "%s shared a folder with you." : "%s zurekin karpeta bat partekatu du.", - "Note" : "Oharra", - "Select or drop files" : "Hautatu edo jaregin fitxategiak", - "Uploading files" : "Fitxategiak igotzen", - "Uploaded files:" : "Igotako fitxategiak:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Fitxategiak igotzean, %1$szerbitzu-baldintzak%2$s onartzen dituzu.", "Share not found" : "Partekatzea ez da aurkitu", "Back to %s" : "Itzuli %s(e)ra", "Add to your Nextcloud" : "Gehitu zure Nextclouden", @@ -408,6 +398,8 @@ OC.L10N.register( "This will stop your current uploads." : "Honek zure uneko igoerak geldituko ditu.", "Move or copy" : "Mugitu edo kopiatu", "You can upload into this folder" : "Karpeta honetara igo dezakezu", + "Show list view" : "Erakutsi zerrenda ikuspegia", + "Show grid view" : "Erakutsi sareta-ikuspegia", "No compatible server found at {remote}" : "Ez da zerbitzari bateragarririk aurkitu {remote} helbidean", "Invalid server URL" : "Zerbitzari URL baliogabea", "Failed to add the public link to your Nextcloud" : "Huts egin du esteka publikoa zure Nextcloudera gehitzean", @@ -420,6 +412,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Fitxategiak igotzeko, zure izena eman behar duzu lehenik.", "Enter your name" : "Sartu zure izena", "Submit name" : "Sartu izena", + "Share note" : "Partekatu oharra", + "Upload files to %s" : "Igo fitxategiak hona: %s", + "%s shared a folder with you." : "%s zurekin karpeta bat partekatu du.", + "Note" : "Oharra", + "Select or drop files" : "Hautatu edo jaregin fitxategiak", + "Uploading files" : "Fitxategiak igotzen", + "Uploaded files:" : "Igotako fitxategiak:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Fitxategiak igotzean, %1$szerbitzu-baldintzak%2$s onartzen dituzu.", "Name" : "Izena", "Share with accounts, teams, federated cloud id" : "Partekatu kontuekin, taldeekin edo federatutako hodeien ID-ekin", "Email, federated cloud id" : "Posta elektroniko, federatutako hodeien ID", diff --git a/apps/files_sharing/l10n/eu.json b/apps/files_sharing/l10n/eu.json index 7a95522389d..c998ff5c0a3 100644 --- a/apps/files_sharing/l10n/eu.json +++ b/apps/files_sharing/l10n/eu.json @@ -387,16 +387,6 @@ "Shared with you and {circle} by {owner}" : " {owner} erabiltzaileak zurekin eta {circle} zirkuluarekin partekatua", "Shared with you and the conversation {conversation} by {owner}" : "{owner} erabiltzaileak zu eta {conversation} elkarrizketarekin partekatua", "Shared with you in a conversation by {owner}" : "{owner} erabiltzaileak zurekin partekatua elkarrizketa batean", - "Share note" : "Partekatu oharra", - "Show list view" : "Erakutsi zerrenda ikuspegia", - "Show grid view" : "Erakutsi sareta-ikuspegia", - "Upload files to %s" : "Igo fitxategiak hona: %s", - "%s shared a folder with you." : "%s zurekin karpeta bat partekatu du.", - "Note" : "Oharra", - "Select or drop files" : "Hautatu edo jaregin fitxategiak", - "Uploading files" : "Fitxategiak igotzen", - "Uploaded files:" : "Igotako fitxategiak:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Fitxategiak igotzean, %1$szerbitzu-baldintzak%2$s onartzen dituzu.", "Share not found" : "Partekatzea ez da aurkitu", "Back to %s" : "Itzuli %s(e)ra", "Add to your Nextcloud" : "Gehitu zure Nextclouden", @@ -406,6 +396,8 @@ "This will stop your current uploads." : "Honek zure uneko igoerak geldituko ditu.", "Move or copy" : "Mugitu edo kopiatu", "You can upload into this folder" : "Karpeta honetara igo dezakezu", + "Show list view" : "Erakutsi zerrenda ikuspegia", + "Show grid view" : "Erakutsi sareta-ikuspegia", "No compatible server found at {remote}" : "Ez da zerbitzari bateragarririk aurkitu {remote} helbidean", "Invalid server URL" : "Zerbitzari URL baliogabea", "Failed to add the public link to your Nextcloud" : "Huts egin du esteka publikoa zure Nextcloudera gehitzean", @@ -418,6 +410,14 @@ "To upload files, you need to provide your name first." : "Fitxategiak igotzeko, zure izena eman behar duzu lehenik.", "Enter your name" : "Sartu zure izena", "Submit name" : "Sartu izena", + "Share note" : "Partekatu oharra", + "Upload files to %s" : "Igo fitxategiak hona: %s", + "%s shared a folder with you." : "%s zurekin karpeta bat partekatu du.", + "Note" : "Oharra", + "Select or drop files" : "Hautatu edo jaregin fitxategiak", + "Uploading files" : "Fitxategiak igotzen", + "Uploaded files:" : "Igotako fitxategiak:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Fitxategiak igotzean, %1$szerbitzu-baldintzak%2$s onartzen dituzu.", "Name" : "Izena", "Share with accounts, teams, federated cloud id" : "Partekatu kontuekin, taldeekin edo federatutako hodeien ID-ekin", "Email, federated cloud id" : "Posta elektroniko, federatutako hodeien ID", diff --git a/apps/files_sharing/l10n/fa.js b/apps/files_sharing/l10n/fa.js index b95dfca523d..9b1329e0f8e 100644 --- a/apps/files_sharing/l10n/fa.js +++ b/apps/files_sharing/l10n/fa.js @@ -196,15 +196,6 @@ OC.L10N.register( "Shared with" : "مشترک با", "Password created successfully" : "Password created successfully", "Error generating password from password policy" : "Error generating password from password policy", - "Share note" : "یادداشت اشتراک گذاری", - "Show list view" : "نمایش فهرستی", - "Show grid view" : "نمایش شبکهای", - "Upload files to %s" : "بارگیری پرونده ها به%s", - "Note" : "یادداشت", - "Select or drop files" : "پرونده ها را انتخاب یا رها کنید", - "Uploading files" : "پرونده های در حال بارگذاری", - "Uploaded files:" : "پرونده های بارگذاری شده:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "%2$sبا بارگذاری پرونده ها ، شما با %1$sشرایط خدمات موافقت می کنید", "Share not found" : "اشتراک گذاری یافت نشد", "Back to %s" : "Back to %s", "Add to your Nextcloud" : "به نکستکلود خود اضافه کنید", @@ -214,12 +205,21 @@ OC.L10N.register( "This will stop your current uploads." : "با این کار آپلودهای فعلی شما متوقف خواهد شد.", "Move or copy" : "انتقال یا کپی", "You can upload into this folder" : "میتوانید در این پوشه آپلود کنید", + "Show list view" : "نمایش فهرستی", + "Show grid view" : "نمایش شبکهای", "Invalid server URL" : "ادرس سرور نامعتبر", "Failed to add the public link to your Nextcloud" : "خطا در افزودن ادرس عمومی به نکس کلود شما", "Download all files" : "دانلود همه فایل ها", "Search for share recipients" : "Search for share recipients", "No recommendations. Start typing." : "هیچ توصیه ای نیست شروع به تایپ کنید.", "Enter your name" : "اسمت را وارد کن", + "Share note" : "یادداشت اشتراک گذاری", + "Upload files to %s" : "بارگیری پرونده ها به%s", + "Note" : "یادداشت", + "Select or drop files" : "پرونده ها را انتخاب یا رها کنید", + "Uploading files" : "پرونده های در حال بارگذاری", + "Uploaded files:" : "پرونده های بارگذاری شده:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "%2$sبا بارگذاری پرونده ها ، شما با %1$sشرایط خدمات موافقت می کنید", "Name" : "نام", "Filename must not be empty." : "Filename must not be empty." }, diff --git a/apps/files_sharing/l10n/fa.json b/apps/files_sharing/l10n/fa.json index 41e48c495fb..53d871977d5 100644 --- a/apps/files_sharing/l10n/fa.json +++ b/apps/files_sharing/l10n/fa.json @@ -194,15 +194,6 @@ "Shared with" : "مشترک با", "Password created successfully" : "Password created successfully", "Error generating password from password policy" : "Error generating password from password policy", - "Share note" : "یادداشت اشتراک گذاری", - "Show list view" : "نمایش فهرستی", - "Show grid view" : "نمایش شبکهای", - "Upload files to %s" : "بارگیری پرونده ها به%s", - "Note" : "یادداشت", - "Select or drop files" : "پرونده ها را انتخاب یا رها کنید", - "Uploading files" : "پرونده های در حال بارگذاری", - "Uploaded files:" : "پرونده های بارگذاری شده:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "%2$sبا بارگذاری پرونده ها ، شما با %1$sشرایط خدمات موافقت می کنید", "Share not found" : "اشتراک گذاری یافت نشد", "Back to %s" : "Back to %s", "Add to your Nextcloud" : "به نکستکلود خود اضافه کنید", @@ -212,12 +203,21 @@ "This will stop your current uploads." : "با این کار آپلودهای فعلی شما متوقف خواهد شد.", "Move or copy" : "انتقال یا کپی", "You can upload into this folder" : "میتوانید در این پوشه آپلود کنید", + "Show list view" : "نمایش فهرستی", + "Show grid view" : "نمایش شبکهای", "Invalid server URL" : "ادرس سرور نامعتبر", "Failed to add the public link to your Nextcloud" : "خطا در افزودن ادرس عمومی به نکس کلود شما", "Download all files" : "دانلود همه فایل ها", "Search for share recipients" : "Search for share recipients", "No recommendations. Start typing." : "هیچ توصیه ای نیست شروع به تایپ کنید.", "Enter your name" : "اسمت را وارد کن", + "Share note" : "یادداشت اشتراک گذاری", + "Upload files to %s" : "بارگیری پرونده ها به%s", + "Note" : "یادداشت", + "Select or drop files" : "پرونده ها را انتخاب یا رها کنید", + "Uploading files" : "پرونده های در حال بارگذاری", + "Uploaded files:" : "پرونده های بارگذاری شده:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "%2$sبا بارگذاری پرونده ها ، شما با %1$sشرایط خدمات موافقت می کنید", "Name" : "نام", "Filename must not be empty." : "Filename must not be empty." },"pluralForm" :"nplurals=2; plural=(n > 1);" diff --git a/apps/files_sharing/l10n/fi.js b/apps/files_sharing/l10n/fi.js index 034c4783428..c474552d180 100644 --- a/apps/files_sharing/l10n/fi.js +++ b/apps/files_sharing/l10n/fi.js @@ -276,16 +276,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner} on jakanut tämän sinun ja piirin {circle} kanssa", "Shared with you and the conversation {conversation} by {owner}" : "{owner} on jakanut tämän sinun ja keskustelun {conversation} kanssa", "Shared with you in a conversation by {owner}" : "{owner} jakoi tämän kanssasi keskustelussa", - "Share note" : "Jaa muistiinpano", - "Show list view" : "Näytä listanäkymä", - "Show grid view" : "Näytä ruudukkonäkymä", - "Upload files to %s" : "Lähetä tiedostoja käyttäjälle %s", - "%s shared a folder with you." : "%s jakoi kansion kanssasi.", - "Note" : "Huomio", - "Select or drop files" : "Valitse tai pudota tiedostoja", - "Uploading files" : "Lähetetään tiedostoja", - "Uploaded files:" : "Lähetetyt tiedostot:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Tiedostoja lähettämällä hyväksyt %1$skäyttöehdot%2$s.", "Share not found" : "Jakoa ei löytynyt", "Back to %s" : "Takaisin kohtaan %s", "Add to your Nextcloud" : "Lisää Nextcloudiisi", @@ -295,6 +285,8 @@ OC.L10N.register( "This will stop your current uploads." : "Tämä pysäyttää meneillään olevat lähetykset.", "Move or copy" : "Siirrä tai kopioi", "You can upload into this folder" : "Voit lähettää tiedostoja tähän kansioon", + "Show list view" : "Näytä listanäkymä", + "Show grid view" : "Näytä ruudukkonäkymä", "No compatible server found at {remote}" : "Yhteensopivaa palvelinta ei löytynyt osoitteesta {remote}", "Invalid server URL" : "Virheellinen palvelimen URL", "Failed to add the public link to your Nextcloud" : "Julkisen linkin lisääminen Nextcloudiisi epäonnistui", @@ -302,6 +294,14 @@ OC.L10N.register( "Search for share recipients" : "Etsi jaon vastaanottajia", "No recommendations. Start typing." : "Ei suosituksia. Aloita kirjoittaminen.", "Enter your name" : "Kirjoita nimesi", + "Share note" : "Jaa muistiinpano", + "Upload files to %s" : "Lähetä tiedostoja käyttäjälle %s", + "%s shared a folder with you." : "%s jakoi kansion kanssasi.", + "Note" : "Huomio", + "Select or drop files" : "Valitse tai pudota tiedostoja", + "Uploading files" : "Lähetetään tiedostoja", + "Uploaded files:" : "Lähetetyt tiedostot:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Tiedostoja lähettämällä hyväksyt %1$skäyttöehdot%2$s.", "Name" : "Nimi", "Filename must not be empty." : "Tiedostonimi ei voi olla tyhjä." }, diff --git a/apps/files_sharing/l10n/fi.json b/apps/files_sharing/l10n/fi.json index f4929f0f06c..586155e82a0 100644 --- a/apps/files_sharing/l10n/fi.json +++ b/apps/files_sharing/l10n/fi.json @@ -274,16 +274,6 @@ "Shared with you and {circle} by {owner}" : "{owner} on jakanut tämän sinun ja piirin {circle} kanssa", "Shared with you and the conversation {conversation} by {owner}" : "{owner} on jakanut tämän sinun ja keskustelun {conversation} kanssa", "Shared with you in a conversation by {owner}" : "{owner} jakoi tämän kanssasi keskustelussa", - "Share note" : "Jaa muistiinpano", - "Show list view" : "Näytä listanäkymä", - "Show grid view" : "Näytä ruudukkonäkymä", - "Upload files to %s" : "Lähetä tiedostoja käyttäjälle %s", - "%s shared a folder with you." : "%s jakoi kansion kanssasi.", - "Note" : "Huomio", - "Select or drop files" : "Valitse tai pudota tiedostoja", - "Uploading files" : "Lähetetään tiedostoja", - "Uploaded files:" : "Lähetetyt tiedostot:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Tiedostoja lähettämällä hyväksyt %1$skäyttöehdot%2$s.", "Share not found" : "Jakoa ei löytynyt", "Back to %s" : "Takaisin kohtaan %s", "Add to your Nextcloud" : "Lisää Nextcloudiisi", @@ -293,6 +283,8 @@ "This will stop your current uploads." : "Tämä pysäyttää meneillään olevat lähetykset.", "Move or copy" : "Siirrä tai kopioi", "You can upload into this folder" : "Voit lähettää tiedostoja tähän kansioon", + "Show list view" : "Näytä listanäkymä", + "Show grid view" : "Näytä ruudukkonäkymä", "No compatible server found at {remote}" : "Yhteensopivaa palvelinta ei löytynyt osoitteesta {remote}", "Invalid server URL" : "Virheellinen palvelimen URL", "Failed to add the public link to your Nextcloud" : "Julkisen linkin lisääminen Nextcloudiisi epäonnistui", @@ -300,6 +292,14 @@ "Search for share recipients" : "Etsi jaon vastaanottajia", "No recommendations. Start typing." : "Ei suosituksia. Aloita kirjoittaminen.", "Enter your name" : "Kirjoita nimesi", + "Share note" : "Jaa muistiinpano", + "Upload files to %s" : "Lähetä tiedostoja käyttäjälle %s", + "%s shared a folder with you." : "%s jakoi kansion kanssasi.", + "Note" : "Huomio", + "Select or drop files" : "Valitse tai pudota tiedostoja", + "Uploading files" : "Lähetetään tiedostoja", + "Uploaded files:" : "Lähetetyt tiedostot:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Tiedostoja lähettämällä hyväksyt %1$skäyttöehdot%2$s.", "Name" : "Nimi", "Filename must not be empty." : "Tiedostonimi ei voi olla tyhjä." },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js index a4b3ce4bd80..1769c4f79e3 100644 --- a/apps/files_sharing/l10n/fr.js +++ b/apps/files_sharing/l10n/fr.js @@ -128,7 +128,7 @@ OC.L10N.register( "Select a date" : "Sélectionner une date", "Your administrator has enforced a {count} days expiration policy." : "Votre administrateur a imposé une politique d'expiration de {count} jours.", "What password should be used for the request?" : "Quel mot de passe doit être utilisé pour la demande ?", - "Set a password" : "Saisissez un mot de passe", + "Set a password" : "Saisir un mot de passe", "Password" : "Mot de passe", "Enter a valid password" : "Saisir un mot de passe valide", "Generate a new password" : "Générer un nouveau mot de passe", @@ -143,7 +143,7 @@ OC.L10N.register( "You can now share the link below to allow people to upload files to your directory." : "Vous pouvez désormais partager le lien ci-dessous pour permettre aux gens de téléverser des fichiers dans votre dossier.", "Share link" : "Lien de partage", "Copy to clipboard" : "Copier dans le presse-papiers", - "Send link via email" : "Envoyer le lien par mail", + "Send link via email" : "Envoyer le lien par e-mail", "Enter an email address or paste a list" : "Entrez une adresse e-mail ou collez une liste", "Remove email" : "Retirer l'e-mail", "Select a destination" : "Choisir une destination", @@ -169,8 +169,8 @@ OC.L10N.register( "Error sending emails: {errorMessage}" : "Erreur à l'envoi des mails {errorMessage}", "Error sending emails" : "Erreur à l'envoi des e-mails", "Create a file request" : "Créer une demande de fichier", - "Collect files from others even if they do not have an account." : "Collecter les fichiers d'autres personnes même si elles n'ont pas de compte.", - "To ensure you can receive files, verify you have enough storage available." : "Pour vous assurer que vous pouvez recevoir des fichiers, vérifier que vous avez suffisamment d'espace disque.", + "Collect files from others even if they do not have an account." : "Collectez des fichiers auprès d'autres personnes, même si elles n'ont pas de compte.", + "To ensure you can receive files, verify you have enough storage available." : "Pour vous assurer de pouvoir recevoir des fichiers, vérifiez que vous disposez d'un espace de stockage suffisant.", "File request" : "Demande de fichier", "Previous step" : "Étape précédente", "Cancel" : "Annuler", @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Partagé avec vous et {circle} par {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Partagé avec vous et la conversation {conversation} par {owner}", "Shared with you in a conversation by {owner}" : "Partagé avec vous dans une conversation de {owner}", - "Share note" : "Partager la note", - "Show list view" : "Afficher la vue en liste", - "Show grid view" : "Afficher la vue en grille", - "Upload files to %s" : "Téléversement de fichiers dans %s", - "%s shared a folder with you." : "%s a partagé un dossier avec vous.", - "Note" : "Note", - "Select or drop files" : "Sélectionnez ou glissez-déposez vos fichiers", - "Uploading files" : "Téléversement des fichiers en cours...", - "Uploaded files:" : "Fichiers envoyés :", - "By uploading files, you agree to the %1$sterms of service%2$s." : "En envoyant des fichiers, vous acceptez les %1$sconditions d'utilisation%2$s.", "Share not found" : "Partage non trouvé", "Back to %s" : "Retourner à %s", "Add to your Nextcloud" : "Ajouter à votre Nextcloud", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "Cela va arrêter vos envois en cours.", "Move or copy" : "Déplacer ou copier", "You can upload into this folder" : "Vous pouvez téléverser des fichiers dans ce dossier", + "Show list view" : "Afficher la vue en liste", + "Show grid view" : "Afficher la vue en grille", "No compatible server found at {remote}" : "Aucun serveur compatible trouvé sur {remote}", "Invalid server URL" : "URL serveur invalide", "Failed to add the public link to your Nextcloud" : "Échec de l'ajout du lien public à votre Nextcloud", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Pour téléverser des fichiers, vous devez fournir votre nom.", "Enter your name" : "Saisissez votre nom", "Submit name" : "Confirmer votre nom", + "Share note" : "Partager la note", + "Upload files to %s" : "Téléversement de fichiers dans %s", + "%s shared a folder with you." : "%s a partagé un dossier avec vous.", + "Note" : "Note", + "Select or drop files" : "Sélectionnez ou glissez-déposez vos fichiers", + "Uploading files" : "Téléversement des fichiers en cours...", + "Uploaded files:" : "Fichiers envoyés :", + "By uploading files, you agree to the %1$sterms of service%2$s." : "En envoyant des fichiers, vous acceptez les %1$sconditions d'utilisation%2$s.", "Name" : "Nom", "Share with accounts, teams, federated cloud id" : "Partager avec des comptes, des équipes, un identifiant de cloud fédéré", "Email, federated cloud id" : "E-mail, ID de cloud fédéré", diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json index b3a8d9cdf08..9ed10e3058b 100644 --- a/apps/files_sharing/l10n/fr.json +++ b/apps/files_sharing/l10n/fr.json @@ -126,7 +126,7 @@ "Select a date" : "Sélectionner une date", "Your administrator has enforced a {count} days expiration policy." : "Votre administrateur a imposé une politique d'expiration de {count} jours.", "What password should be used for the request?" : "Quel mot de passe doit être utilisé pour la demande ?", - "Set a password" : "Saisissez un mot de passe", + "Set a password" : "Saisir un mot de passe", "Password" : "Mot de passe", "Enter a valid password" : "Saisir un mot de passe valide", "Generate a new password" : "Générer un nouveau mot de passe", @@ -141,7 +141,7 @@ "You can now share the link below to allow people to upload files to your directory." : "Vous pouvez désormais partager le lien ci-dessous pour permettre aux gens de téléverser des fichiers dans votre dossier.", "Share link" : "Lien de partage", "Copy to clipboard" : "Copier dans le presse-papiers", - "Send link via email" : "Envoyer le lien par mail", + "Send link via email" : "Envoyer le lien par e-mail", "Enter an email address or paste a list" : "Entrez une adresse e-mail ou collez une liste", "Remove email" : "Retirer l'e-mail", "Select a destination" : "Choisir une destination", @@ -167,8 +167,8 @@ "Error sending emails: {errorMessage}" : "Erreur à l'envoi des mails {errorMessage}", "Error sending emails" : "Erreur à l'envoi des e-mails", "Create a file request" : "Créer une demande de fichier", - "Collect files from others even if they do not have an account." : "Collecter les fichiers d'autres personnes même si elles n'ont pas de compte.", - "To ensure you can receive files, verify you have enough storage available." : "Pour vous assurer que vous pouvez recevoir des fichiers, vérifier que vous avez suffisamment d'espace disque.", + "Collect files from others even if they do not have an account." : "Collectez des fichiers auprès d'autres personnes, même si elles n'ont pas de compte.", + "To ensure you can receive files, verify you have enough storage available." : "Pour vous assurer de pouvoir recevoir des fichiers, vérifiez que vous disposez d'un espace de stockage suffisant.", "File request" : "Demande de fichier", "Previous step" : "Étape précédente", "Cancel" : "Annuler", @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "Partagé avec vous et {circle} par {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Partagé avec vous et la conversation {conversation} par {owner}", "Shared with you in a conversation by {owner}" : "Partagé avec vous dans une conversation de {owner}", - "Share note" : "Partager la note", - "Show list view" : "Afficher la vue en liste", - "Show grid view" : "Afficher la vue en grille", - "Upload files to %s" : "Téléversement de fichiers dans %s", - "%s shared a folder with you." : "%s a partagé un dossier avec vous.", - "Note" : "Note", - "Select or drop files" : "Sélectionnez ou glissez-déposez vos fichiers", - "Uploading files" : "Téléversement des fichiers en cours...", - "Uploaded files:" : "Fichiers envoyés :", - "By uploading files, you agree to the %1$sterms of service%2$s." : "En envoyant des fichiers, vous acceptez les %1$sconditions d'utilisation%2$s.", "Share not found" : "Partage non trouvé", "Back to %s" : "Retourner à %s", "Add to your Nextcloud" : "Ajouter à votre Nextcloud", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "Cela va arrêter vos envois en cours.", "Move or copy" : "Déplacer ou copier", "You can upload into this folder" : "Vous pouvez téléverser des fichiers dans ce dossier", + "Show list view" : "Afficher la vue en liste", + "Show grid view" : "Afficher la vue en grille", "No compatible server found at {remote}" : "Aucun serveur compatible trouvé sur {remote}", "Invalid server URL" : "URL serveur invalide", "Failed to add the public link to your Nextcloud" : "Échec de l'ajout du lien public à votre Nextcloud", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "Pour téléverser des fichiers, vous devez fournir votre nom.", "Enter your name" : "Saisissez votre nom", "Submit name" : "Confirmer votre nom", + "Share note" : "Partager la note", + "Upload files to %s" : "Téléversement de fichiers dans %s", + "%s shared a folder with you." : "%s a partagé un dossier avec vous.", + "Note" : "Note", + "Select or drop files" : "Sélectionnez ou glissez-déposez vos fichiers", + "Uploading files" : "Téléversement des fichiers en cours...", + "Uploaded files:" : "Fichiers envoyés :", + "By uploading files, you agree to the %1$sterms of service%2$s." : "En envoyant des fichiers, vous acceptez les %1$sconditions d'utilisation%2$s.", "Name" : "Nom", "Share with accounts, teams, federated cloud id" : "Partager avec des comptes, des équipes, un identifiant de cloud fédéré", "Email, federated cloud id" : "E-mail, ID de cloud fédéré", diff --git a/apps/files_sharing/l10n/ga.js b/apps/files_sharing/l10n/ga.js index 3544d011fb1..7673f83c1c5 100644 --- a/apps/files_sharing/l10n/ga.js +++ b/apps/files_sharing/l10n/ga.js @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Roinnte leat agus {circle} ag {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Roinnte leat agus an comhrá {conversation} ag {owner}", "Shared with you in a conversation by {owner}" : "Roinnte leat i gcomhrá le {owner}", - "Share note" : "Roinn nóta", - "Show list view" : "Taispeáin amharc liosta", - "Show grid view" : "Taispeáin radharc greille", - "Upload files to %s" : "Uaslódáil comhaid go %s", - "%s shared a folder with you." : "Roinn %s fillteán leat.", - "Note" : "Nóta", - "Select or drop files" : "Roghnaigh nó scaoil comhaid", - "Uploading files" : "Comhaid a uaslódáil", - "Uploaded files:" : "Comhaid uaslódáilte:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Trí chomhaid a uaslódáil, aontaíonn tú le téarmaí seirbhíse %1$s%2$s.", "Share not found" : "Ní bhfuarthas an sciar", "Back to %s" : "Ar ais go dtí %s", "Add to your Nextcloud" : "Cuir le do Nextcloud", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "Cuirfidh sé seo stop le d'uaslódálacha reatha.", "Move or copy" : "Bog nó cóipeáil", "You can upload into this folder" : "Is féidir leat a uaslódáil isteach san fhillteán seo", + "Show list view" : "Taispeáin amharc liosta", + "Show grid view" : "Taispeáin radharc greille", "No compatible server found at {remote}" : "Níor aimsíodh aon fhreastalaí comhoiriúnach ag {remote}", "Invalid server URL" : "URL freastalaí neamhbhailí", "Failed to add the public link to your Nextcloud" : "Theip ar an nasc poiblí a chur le do Nextcloud", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Chun comhaid a uaslódáil, ní mór duit d'ainm a sholáthar ar dtús.", "Enter your name" : "Cuir isteach d'ainm", "Submit name" : "Cuir ainm", + "Share note" : "Roinn nóta", + "Upload files to %s" : "Uaslódáil comhaid go %s", + "%s shared a folder with you." : "Roinn %s fillteán leat.", + "Note" : "Nóta", + "Select or drop files" : "Roghnaigh nó scaoil comhaid", + "Uploading files" : "Comhaid a uaslódáil", + "Uploaded files:" : "Comhaid uaslódáilte:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Trí chomhaid a uaslódáil, aontaíonn tú le téarmaí seirbhíse %1$s%2$s.", "Name" : "Ainm", "Share with accounts, teams, federated cloud id" : "Comhroinn le cuntais, foirne, aitheantas scamall cónaidhme", "Email, federated cloud id" : "Ríomhphost, aitheantas scamall cónaidhme", diff --git a/apps/files_sharing/l10n/ga.json b/apps/files_sharing/l10n/ga.json index 060b111ae6c..b84a50f2d14 100644 --- a/apps/files_sharing/l10n/ga.json +++ b/apps/files_sharing/l10n/ga.json @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "Roinnte leat agus {circle} ag {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Roinnte leat agus an comhrá {conversation} ag {owner}", "Shared with you in a conversation by {owner}" : "Roinnte leat i gcomhrá le {owner}", - "Share note" : "Roinn nóta", - "Show list view" : "Taispeáin amharc liosta", - "Show grid view" : "Taispeáin radharc greille", - "Upload files to %s" : "Uaslódáil comhaid go %s", - "%s shared a folder with you." : "Roinn %s fillteán leat.", - "Note" : "Nóta", - "Select or drop files" : "Roghnaigh nó scaoil comhaid", - "Uploading files" : "Comhaid a uaslódáil", - "Uploaded files:" : "Comhaid uaslódáilte:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Trí chomhaid a uaslódáil, aontaíonn tú le téarmaí seirbhíse %1$s%2$s.", "Share not found" : "Ní bhfuarthas an sciar", "Back to %s" : "Ar ais go dtí %s", "Add to your Nextcloud" : "Cuir le do Nextcloud", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "Cuirfidh sé seo stop le d'uaslódálacha reatha.", "Move or copy" : "Bog nó cóipeáil", "You can upload into this folder" : "Is féidir leat a uaslódáil isteach san fhillteán seo", + "Show list view" : "Taispeáin amharc liosta", + "Show grid view" : "Taispeáin radharc greille", "No compatible server found at {remote}" : "Níor aimsíodh aon fhreastalaí comhoiriúnach ag {remote}", "Invalid server URL" : "URL freastalaí neamhbhailí", "Failed to add the public link to your Nextcloud" : "Theip ar an nasc poiblí a chur le do Nextcloud", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "Chun comhaid a uaslódáil, ní mór duit d'ainm a sholáthar ar dtús.", "Enter your name" : "Cuir isteach d'ainm", "Submit name" : "Cuir ainm", + "Share note" : "Roinn nóta", + "Upload files to %s" : "Uaslódáil comhaid go %s", + "%s shared a folder with you." : "Roinn %s fillteán leat.", + "Note" : "Nóta", + "Select or drop files" : "Roghnaigh nó scaoil comhaid", + "Uploading files" : "Comhaid a uaslódáil", + "Uploaded files:" : "Comhaid uaslódáilte:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Trí chomhaid a uaslódáil, aontaíonn tú le téarmaí seirbhíse %1$s%2$s.", "Name" : "Ainm", "Share with accounts, teams, federated cloud id" : "Comhroinn le cuntais, foirne, aitheantas scamall cónaidhme", "Email, federated cloud id" : "Ríomhphost, aitheantas scamall cónaidhme", diff --git a/apps/files_sharing/l10n/gl.js b/apps/files_sharing/l10n/gl.js index 53ed66b6c03..26cc90151bf 100644 --- a/apps/files_sharing/l10n/gl.js +++ b/apps/files_sharing/l10n/gl.js @@ -385,16 +385,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Compartido con Vde. e {circle} por {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Compartido con Vde. e a conversa {conversation} por {owner}", "Shared with you in a conversation by {owner}" : "Compartido con Vde. nunha conversa por {owner}", - "Share note" : "Compartir nota", - "Show list view" : "Amosar a vista de lista", - "Show grid view" : "Amosar a vista de grade", - "Upload files to %s" : "Enviar ficheiros a %s", - "%s shared a folder with you." : "%s compartiu un cartafol con Vde.", - "Note" : "Nota", - "Select or drop files" : "Seleccione ou arrastre e solte ficheiros", - "Uploading files" : "Enviando ficheiros", - "Uploaded files:" : "Ficheiros enviados:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Ao enviar ficheiros acepta as %1$s condicións de servizo %2$s.", "Share not found" : "Non se atopou a compartición", "Back to %s" : "Volver a %s", "Add to your Nextcloud" : "Engadir ao seu Nextcloud", @@ -404,6 +394,8 @@ OC.L10N.register( "This will stop your current uploads." : "Isto deterá os envíos actuais.", "Move or copy" : "Mover ou copiar", "You can upload into this folder" : "Pode envialo a este cartafol", + "Show list view" : "Amosar a vista de lista", + "Show grid view" : "Amosar a vista de grade", "No compatible server found at {remote}" : "Non se atopa un servidor compatíbel en {remote}", "Invalid server URL" : "URL de servidor incorrecto", "Failed to add the public link to your Nextcloud" : "Non foi posíbel engadir a ligazón pública ao seu Nextcloud", @@ -416,6 +408,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Para enviar ficheiros, primeiro debes fornecer o teu nome.", "Enter your name" : "Introduza o seu nome", "Submit name" : "Enviar o nome", + "Share note" : "Compartir nota", + "Upload files to %s" : "Enviar ficheiros a %s", + "%s shared a folder with you." : "%s compartiu un cartafol con Vde.", + "Note" : "Nota", + "Select or drop files" : "Seleccione ou arrastre e solte ficheiros", + "Uploading files" : "Enviando ficheiros", + "Uploaded files:" : "Ficheiros enviados:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Ao enviar ficheiros acepta as %1$s condicións de servizo %2$s.", "Name" : "Nome", "Email, federated cloud id" : "Correo-e, ID da nube federada", "Filename must not be empty." : "O nome de ficheiro non debe estar baleiro" diff --git a/apps/files_sharing/l10n/gl.json b/apps/files_sharing/l10n/gl.json index dfb84a6d3b4..a3100bc6243 100644 --- a/apps/files_sharing/l10n/gl.json +++ b/apps/files_sharing/l10n/gl.json @@ -383,16 +383,6 @@ "Shared with you and {circle} by {owner}" : "Compartido con Vde. e {circle} por {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Compartido con Vde. e a conversa {conversation} por {owner}", "Shared with you in a conversation by {owner}" : "Compartido con Vde. nunha conversa por {owner}", - "Share note" : "Compartir nota", - "Show list view" : "Amosar a vista de lista", - "Show grid view" : "Amosar a vista de grade", - "Upload files to %s" : "Enviar ficheiros a %s", - "%s shared a folder with you." : "%s compartiu un cartafol con Vde.", - "Note" : "Nota", - "Select or drop files" : "Seleccione ou arrastre e solte ficheiros", - "Uploading files" : "Enviando ficheiros", - "Uploaded files:" : "Ficheiros enviados:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Ao enviar ficheiros acepta as %1$s condicións de servizo %2$s.", "Share not found" : "Non se atopou a compartición", "Back to %s" : "Volver a %s", "Add to your Nextcloud" : "Engadir ao seu Nextcloud", @@ -402,6 +392,8 @@ "This will stop your current uploads." : "Isto deterá os envíos actuais.", "Move or copy" : "Mover ou copiar", "You can upload into this folder" : "Pode envialo a este cartafol", + "Show list view" : "Amosar a vista de lista", + "Show grid view" : "Amosar a vista de grade", "No compatible server found at {remote}" : "Non se atopa un servidor compatíbel en {remote}", "Invalid server URL" : "URL de servidor incorrecto", "Failed to add the public link to your Nextcloud" : "Non foi posíbel engadir a ligazón pública ao seu Nextcloud", @@ -414,6 +406,14 @@ "To upload files, you need to provide your name first." : "Para enviar ficheiros, primeiro debes fornecer o teu nome.", "Enter your name" : "Introduza o seu nome", "Submit name" : "Enviar o nome", + "Share note" : "Compartir nota", + "Upload files to %s" : "Enviar ficheiros a %s", + "%s shared a folder with you." : "%s compartiu un cartafol con Vde.", + "Note" : "Nota", + "Select or drop files" : "Seleccione ou arrastre e solte ficheiros", + "Uploading files" : "Enviando ficheiros", + "Uploaded files:" : "Ficheiros enviados:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Ao enviar ficheiros acepta as %1$s condicións de servizo %2$s.", "Name" : "Nome", "Email, federated cloud id" : "Correo-e, ID da nube federada", "Filename must not be empty." : "O nome de ficheiro non debe estar baleiro" diff --git a/apps/files_sharing/l10n/hr.js b/apps/files_sharing/l10n/hr.js index 16b8b425f4b..0f4ccd15fa3 100644 --- a/apps/files_sharing/l10n/hr.js +++ b/apps/files_sharing/l10n/hr.js @@ -198,13 +198,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Dijeljeno s vama i {circle} od strane {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Dijeljeno s vama i razgovorom {conversation} vlasnika {owner}", "Shared with you in a conversation by {owner}" : "{owner} dijeli s vama u razgovoru", - "Share note" : "Dijeli bilješku", - "Upload files to %s" : "Otpremi datoteke na %s", - "Note" : "Bilješka", - "Select or drop files" : "Odaberi ili ispusti datoteke", - "Uploading files" : "Otpremanje datoteka", - "Uploaded files:" : "Otpremljene datoteke:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Otpremanjem datoteka prihvaćate %1$ uvjete korištenja usluge%2$s.", "Share not found" : "Dijeljenje nije pronađeno", "Back to %s" : "Natrag na %s", "Add to your Nextcloud" : "Dodaj u svoj Nextcloud", @@ -220,6 +213,13 @@ OC.L10N.register( "Download all files" : "Preuzmi sve datoteke", "No recommendations. Start typing." : "Nema preporuka. Započnite unos.", "Enter your name" : "Unesite svoje ime", + "Share note" : "Dijeli bilješku", + "Upload files to %s" : "Otpremi datoteke na %s", + "Note" : "Bilješka", + "Select or drop files" : "Odaberi ili ispusti datoteke", + "Uploading files" : "Otpremanje datoteka", + "Uploaded files:" : "Otpremljene datoteke:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Otpremanjem datoteka prihvaćate %1$ uvjete korištenja usluge%2$s.", "Name" : "Naziv" }, "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_sharing/l10n/hr.json b/apps/files_sharing/l10n/hr.json index cd4c7450ccc..6148922a49c 100644 --- a/apps/files_sharing/l10n/hr.json +++ b/apps/files_sharing/l10n/hr.json @@ -196,13 +196,6 @@ "Shared with you and {circle} by {owner}" : "Dijeljeno s vama i {circle} od strane {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Dijeljeno s vama i razgovorom {conversation} vlasnika {owner}", "Shared with you in a conversation by {owner}" : "{owner} dijeli s vama u razgovoru", - "Share note" : "Dijeli bilješku", - "Upload files to %s" : "Otpremi datoteke na %s", - "Note" : "Bilješka", - "Select or drop files" : "Odaberi ili ispusti datoteke", - "Uploading files" : "Otpremanje datoteka", - "Uploaded files:" : "Otpremljene datoteke:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Otpremanjem datoteka prihvaćate %1$ uvjete korištenja usluge%2$s.", "Share not found" : "Dijeljenje nije pronađeno", "Back to %s" : "Natrag na %s", "Add to your Nextcloud" : "Dodaj u svoj Nextcloud", @@ -218,6 +211,13 @@ "Download all files" : "Preuzmi sve datoteke", "No recommendations. Start typing." : "Nema preporuka. Započnite unos.", "Enter your name" : "Unesite svoje ime", + "Share note" : "Dijeli bilješku", + "Upload files to %s" : "Otpremi datoteke na %s", + "Note" : "Bilješka", + "Select or drop files" : "Odaberi ili ispusti datoteke", + "Uploading files" : "Otpremanje datoteka", + "Uploaded files:" : "Otpremljene datoteke:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Otpremanjem datoteka prihvaćate %1$ uvjete korištenja usluge%2$s.", "Name" : "Naziv" },"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_sharing/l10n/hu.js b/apps/files_sharing/l10n/hu.js index 5823186be78..58b4eec1388 100644 --- a/apps/files_sharing/l10n/hu.js +++ b/apps/files_sharing/l10n/hu.js @@ -269,15 +269,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner} megosztotta Önnel és a(z) {circle} körrel", "Shared with you and the conversation {conversation} by {owner}" : "{owner} megosztotta Önnel és a(z) {conversation} beszélgetéssel", "Shared with you in a conversation by {owner}" : "{owner} megosztotta Önnel egy beszélgetésben", - "Share note" : "Jegyzet megosztása", - "Show list view" : "Listanézet megjelenítése", - "Show grid view" : "Rácsnézet megjelenítése", - "Upload files to %s" : "Fájlok feltöltése ide: %s", - "Note" : "Megjegyzés", - "Select or drop files" : "Válasszon vagy dobjon ide fájlokat", - "Uploading files" : "Fájlok feltöltése", - "Uploaded files:" : "Feltöltött fájlok:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "A fájlok feltöltésével elfogadja a %1$sszolgáltatási feltételeket %2$s.", "Share not found" : "A megosztás nem található", "Back to %s" : "Vissza ide: %s", "Add to your Nextcloud" : "Hozzáadás a Nextcloudjához", @@ -287,6 +278,8 @@ OC.L10N.register( "This will stop your current uploads." : "Ez le fogja állítani a jelenlegi feltöltéseit.", "Move or copy" : "Áthelyezés vagy másolás", "You can upload into this folder" : "Ebbe a mappába fel tud tölteni", + "Show list view" : "Listanézet megjelenítése", + "Show grid view" : "Rácsnézet megjelenítése", "No compatible server found at {remote}" : "Nem található kompatibilis kiszolgáló itt: {remote}", "Invalid server URL" : "Érvénytelen kiszolgáló URL", "Failed to add the public link to your Nextcloud" : "Nem sikerült hozzáadni a nyilvános hivatkozást a Nexcloudjához", @@ -294,6 +287,13 @@ OC.L10N.register( "Search for share recipients" : "Megosztás résztvevőinek keresése", "No recommendations. Start typing." : "Nincs javaslat. Kezdjen gépelni.", "Enter your name" : "Adja meg a nevét", + "Share note" : "Jegyzet megosztása", + "Upload files to %s" : "Fájlok feltöltése ide: %s", + "Note" : "Megjegyzés", + "Select or drop files" : "Válasszon vagy dobjon ide fájlokat", + "Uploading files" : "Fájlok feltöltése", + "Uploaded files:" : "Feltöltött fájlok:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "A fájlok feltöltésével elfogadja a %1$sszolgáltatási feltételeket %2$s.", "Name" : "Név", "Filename must not be empty." : "A fájlnév nem lehet üres." }, diff --git a/apps/files_sharing/l10n/hu.json b/apps/files_sharing/l10n/hu.json index 37da419fff9..0ff01109a3a 100644 --- a/apps/files_sharing/l10n/hu.json +++ b/apps/files_sharing/l10n/hu.json @@ -267,15 +267,6 @@ "Shared with you and {circle} by {owner}" : "{owner} megosztotta Önnel és a(z) {circle} körrel", "Shared with you and the conversation {conversation} by {owner}" : "{owner} megosztotta Önnel és a(z) {conversation} beszélgetéssel", "Shared with you in a conversation by {owner}" : "{owner} megosztotta Önnel egy beszélgetésben", - "Share note" : "Jegyzet megosztása", - "Show list view" : "Listanézet megjelenítése", - "Show grid view" : "Rácsnézet megjelenítése", - "Upload files to %s" : "Fájlok feltöltése ide: %s", - "Note" : "Megjegyzés", - "Select or drop files" : "Válasszon vagy dobjon ide fájlokat", - "Uploading files" : "Fájlok feltöltése", - "Uploaded files:" : "Feltöltött fájlok:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "A fájlok feltöltésével elfogadja a %1$sszolgáltatási feltételeket %2$s.", "Share not found" : "A megosztás nem található", "Back to %s" : "Vissza ide: %s", "Add to your Nextcloud" : "Hozzáadás a Nextcloudjához", @@ -285,6 +276,8 @@ "This will stop your current uploads." : "Ez le fogja állítani a jelenlegi feltöltéseit.", "Move or copy" : "Áthelyezés vagy másolás", "You can upload into this folder" : "Ebbe a mappába fel tud tölteni", + "Show list view" : "Listanézet megjelenítése", + "Show grid view" : "Rácsnézet megjelenítése", "No compatible server found at {remote}" : "Nem található kompatibilis kiszolgáló itt: {remote}", "Invalid server URL" : "Érvénytelen kiszolgáló URL", "Failed to add the public link to your Nextcloud" : "Nem sikerült hozzáadni a nyilvános hivatkozást a Nexcloudjához", @@ -292,6 +285,13 @@ "Search for share recipients" : "Megosztás résztvevőinek keresése", "No recommendations. Start typing." : "Nincs javaslat. Kezdjen gépelni.", "Enter your name" : "Adja meg a nevét", + "Share note" : "Jegyzet megosztása", + "Upload files to %s" : "Fájlok feltöltése ide: %s", + "Note" : "Megjegyzés", + "Select or drop files" : "Válasszon vagy dobjon ide fájlokat", + "Uploading files" : "Fájlok feltöltése", + "Uploaded files:" : "Feltöltött fájlok:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "A fájlok feltöltésével elfogadja a %1$sszolgáltatási feltételeket %2$s.", "Name" : "Név", "Filename must not be empty." : "A fájlnév nem lehet üres." },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_sharing/l10n/is.js b/apps/files_sharing/l10n/is.js index 28da9fac275..566bcb7a80f 100644 --- a/apps/files_sharing/l10n/is.js +++ b/apps/files_sharing/l10n/is.js @@ -358,16 +358,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Deilt með þér og {circle} af {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Deilt með þér og samtalinu {conversation} af {owner}", "Shared with you in a conversation by {owner}" : "Deilt með þér í samtali af {owner}", - "Share note" : "Deila minnispunkti", - "Show list view" : "Birta listasýn", - "Show grid view" : "Birta reitasýn", - "Upload files to %s" : "Senda inn skrár á %s", - "%s shared a folder with you." : "%s deildi möppu með þér.", - "Note" : "Minnispunktur", - "Select or drop files" : "Veldu eða slepptu skrám", - "Uploading files" : "Sendi inn skrár", - "Uploaded files:" : "Innsendar skrár:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Með því að senda inn skrár, samþykkir þú %1$sþjónustuskilmálana%2$s.", "Share not found" : "Sameign fannst ekki", "Back to %s" : "Til baka í %s", "Add to your Nextcloud" : "Bæta í þitt eigið Nextcloud", @@ -377,6 +367,8 @@ OC.L10N.register( "This will stop your current uploads." : "Þetta mun stöðva núverandi innsendingar þínar.", "Move or copy" : "Færa eða afrita", "You can upload into this folder" : "Þú getur sent inn skrár í þessa möppu", + "Show list view" : "Birta listasýn", + "Show grid view" : "Birta reitasýn", "No compatible server found at {remote}" : "Enginn samhæfður vefþjónn fannst á {remote}", "Invalid server URL" : "Ógild URI-slóð vefþjóns", "Failed to add the public link to your Nextcloud" : "Mistókst að bæta opinberum tengli í þitt eigið Nextcloud", @@ -389,6 +381,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Til að senda inn skrár þarftu fyrst að gefa upp nafnið þitt.", "Enter your name" : "Settu inn nafnið þitt", "Submit name" : "Nafn við innsendingu", + "Share note" : "Deila minnispunkti", + "Upload files to %s" : "Senda inn skrár á %s", + "%s shared a folder with you." : "%s deildi möppu með þér.", + "Note" : "Minnispunktur", + "Select or drop files" : "Veldu eða slepptu skrám", + "Uploading files" : "Sendi inn skrár", + "Uploaded files:" : "Innsendar skrár:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Með því að senda inn skrár, samþykkir þú %1$sþjónustuskilmálana%2$s.", "Name" : "Heiti", "Email, federated cloud id" : "Tölvupóstfang, skýjasambandsauðkenni (Federated Cloud ID)", "Filename must not be empty." : "Skráarheiti má ekki vera tómt." diff --git a/apps/files_sharing/l10n/is.json b/apps/files_sharing/l10n/is.json index 2d91e0dd209..05bf02285f7 100644 --- a/apps/files_sharing/l10n/is.json +++ b/apps/files_sharing/l10n/is.json @@ -356,16 +356,6 @@ "Shared with you and {circle} by {owner}" : "Deilt með þér og {circle} af {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Deilt með þér og samtalinu {conversation} af {owner}", "Shared with you in a conversation by {owner}" : "Deilt með þér í samtali af {owner}", - "Share note" : "Deila minnispunkti", - "Show list view" : "Birta listasýn", - "Show grid view" : "Birta reitasýn", - "Upload files to %s" : "Senda inn skrár á %s", - "%s shared a folder with you." : "%s deildi möppu með þér.", - "Note" : "Minnispunktur", - "Select or drop files" : "Veldu eða slepptu skrám", - "Uploading files" : "Sendi inn skrár", - "Uploaded files:" : "Innsendar skrár:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Með því að senda inn skrár, samþykkir þú %1$sþjónustuskilmálana%2$s.", "Share not found" : "Sameign fannst ekki", "Back to %s" : "Til baka í %s", "Add to your Nextcloud" : "Bæta í þitt eigið Nextcloud", @@ -375,6 +365,8 @@ "This will stop your current uploads." : "Þetta mun stöðva núverandi innsendingar þínar.", "Move or copy" : "Færa eða afrita", "You can upload into this folder" : "Þú getur sent inn skrár í þessa möppu", + "Show list view" : "Birta listasýn", + "Show grid view" : "Birta reitasýn", "No compatible server found at {remote}" : "Enginn samhæfður vefþjónn fannst á {remote}", "Invalid server URL" : "Ógild URI-slóð vefþjóns", "Failed to add the public link to your Nextcloud" : "Mistókst að bæta opinberum tengli í þitt eigið Nextcloud", @@ -387,6 +379,14 @@ "To upload files, you need to provide your name first." : "Til að senda inn skrár þarftu fyrst að gefa upp nafnið þitt.", "Enter your name" : "Settu inn nafnið þitt", "Submit name" : "Nafn við innsendingu", + "Share note" : "Deila minnispunkti", + "Upload files to %s" : "Senda inn skrár á %s", + "%s shared a folder with you." : "%s deildi möppu með þér.", + "Note" : "Minnispunktur", + "Select or drop files" : "Veldu eða slepptu skrám", + "Uploading files" : "Sendi inn skrár", + "Uploaded files:" : "Innsendar skrár:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Með því að senda inn skrár, samþykkir þú %1$sþjónustuskilmálana%2$s.", "Name" : "Heiti", "Email, federated cloud id" : "Tölvupóstfang, skýjasambandsauðkenni (Federated Cloud ID)", "Filename must not be empty." : "Skráarheiti má ekki vera tómt." diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js index 23f0a3b4a28..abf348adbf5 100644 --- a/apps/files_sharing/l10n/it.js +++ b/apps/files_sharing/l10n/it.js @@ -254,7 +254,7 @@ OC.L10N.register( "Search for internal recipients" : "Cerca destinatari interni", "Note from" : "Nota da", "Note:" : "Nota:", - "File drop" : "Elimina file", + "File drop" : "Deposita file", "Upload files to {foldername}." : "Carica i file su{foldername}.", "By uploading files, you agree to the terms of service." : "Caricando i file accetti i termini del servizio.", "Successfully uploaded files" : "File caricati correttamente", @@ -400,16 +400,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Condiviso con te e {circle} da {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Condiviso con te e con la conversazione {conversation} da {owner}", "Shared with you in a conversation by {owner}" : "Condiviso con te in una conversazione da {owner}", - "Share note" : "Condividi nota", - "Show list view" : "Commuta la vista a lista", - "Show grid view" : "Commuta la vista a griglia", - "Upload files to %s" : "Carica file su %s", - "%s shared a folder with you." : "%s ha condiviso una cartella con te.", - "Note" : "Nota", - "Select or drop files" : "Seleziona o deseleziona file", - "Uploading files" : "Caricamento file", - "Uploaded files:" : "File caricati:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Caricando i file, accetti i %1$stermini del servizio%2$s.", "Share not found" : "Condivisione non trovata", "Back to %s" : "Torna a %s", "Add to your Nextcloud" : "Aggiungi al tuo Nextcloud", @@ -419,6 +409,8 @@ OC.L10N.register( "This will stop your current uploads." : "Questo fermerà i tuoi caricamenti attuali.", "Move or copy" : "Sposta o copia", "You can upload into this folder" : "Puoi caricare in questa cartella", + "Show list view" : "Commuta la vista a lista", + "Show grid view" : "Commuta la vista a griglia", "No compatible server found at {remote}" : "Nessun server compatibile trovato su {remote}", "Invalid server URL" : "URL del server non valido", "Failed to add the public link to your Nextcloud" : "Aggiunta del collegamento pubblico al tuo Nextcloud non riuscita", @@ -431,6 +423,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Per caricare file, devi prima fornire il tuo nome.", "Enter your name" : "Digita il tuo nome", "Submit name" : "Fornisci il nome", + "Share note" : "Condividi nota", + "Upload files to %s" : "Carica file su %s", + "%s shared a folder with you." : "%s ha condiviso una cartella con te.", + "Note" : "Nota", + "Select or drop files" : "Seleziona o deseleziona file", + "Uploading files" : "Caricamento file", + "Uploaded files:" : "File caricati:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Caricando i file, accetti i %1$stermini del servizio%2$s.", "Name" : "Nome", "Share with accounts, teams, federated cloud id" : "Condividi con account, team, ID cloud federati", "Email, federated cloud id" : "E-mail, ID cloud federato", diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json index fc84fa187f2..c70a92ab32e 100644 --- a/apps/files_sharing/l10n/it.json +++ b/apps/files_sharing/l10n/it.json @@ -252,7 +252,7 @@ "Search for internal recipients" : "Cerca destinatari interni", "Note from" : "Nota da", "Note:" : "Nota:", - "File drop" : "Elimina file", + "File drop" : "Deposita file", "Upload files to {foldername}." : "Carica i file su{foldername}.", "By uploading files, you agree to the terms of service." : "Caricando i file accetti i termini del servizio.", "Successfully uploaded files" : "File caricati correttamente", @@ -398,16 +398,6 @@ "Shared with you and {circle} by {owner}" : "Condiviso con te e {circle} da {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Condiviso con te e con la conversazione {conversation} da {owner}", "Shared with you in a conversation by {owner}" : "Condiviso con te in una conversazione da {owner}", - "Share note" : "Condividi nota", - "Show list view" : "Commuta la vista a lista", - "Show grid view" : "Commuta la vista a griglia", - "Upload files to %s" : "Carica file su %s", - "%s shared a folder with you." : "%s ha condiviso una cartella con te.", - "Note" : "Nota", - "Select or drop files" : "Seleziona o deseleziona file", - "Uploading files" : "Caricamento file", - "Uploaded files:" : "File caricati:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Caricando i file, accetti i %1$stermini del servizio%2$s.", "Share not found" : "Condivisione non trovata", "Back to %s" : "Torna a %s", "Add to your Nextcloud" : "Aggiungi al tuo Nextcloud", @@ -417,6 +407,8 @@ "This will stop your current uploads." : "Questo fermerà i tuoi caricamenti attuali.", "Move or copy" : "Sposta o copia", "You can upload into this folder" : "Puoi caricare in questa cartella", + "Show list view" : "Commuta la vista a lista", + "Show grid view" : "Commuta la vista a griglia", "No compatible server found at {remote}" : "Nessun server compatibile trovato su {remote}", "Invalid server URL" : "URL del server non valido", "Failed to add the public link to your Nextcloud" : "Aggiunta del collegamento pubblico al tuo Nextcloud non riuscita", @@ -429,6 +421,14 @@ "To upload files, you need to provide your name first." : "Per caricare file, devi prima fornire il tuo nome.", "Enter your name" : "Digita il tuo nome", "Submit name" : "Fornisci il nome", + "Share note" : "Condividi nota", + "Upload files to %s" : "Carica file su %s", + "%s shared a folder with you." : "%s ha condiviso una cartella con te.", + "Note" : "Nota", + "Select or drop files" : "Seleziona o deseleziona file", + "Uploading files" : "Caricamento file", + "Uploaded files:" : "File caricati:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Caricando i file, accetti i %1$stermini del servizio%2$s.", "Name" : "Nome", "Share with accounts, teams, federated cloud id" : "Condividi con account, team, ID cloud federati", "Email, federated cloud id" : "E-mail, ID cloud federato", diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js index 9f82c441ca4..59b8dff248e 100644 --- a/apps/files_sharing/l10n/ja.js +++ b/apps/files_sharing/l10n/ja.js @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner} が{circle}で共有中", "Shared with you and the conversation {conversation} by {owner}" : "{owner}のスレッド{conversation}であなたと共有しました", "Shared with you in a conversation by {owner}" : "{owner}のスレッドであなたと共有しました", - "Share note" : "共有ノート", - "Show list view" : "リストビューで表示", - "Show grid view" : "グリッドビューで表示", - "Upload files to %s" : "%s にファイルをアップロード", - "%s shared a folder with you." : "%sはあなたとフォルダーを共有しました。", - "Note" : "ノート", - "Select or drop files" : "ファイルを選択するか、ドラッグ&ドロップしてください", - "Uploading files" : "ファイルをアップロード中", - "Uploaded files:" : "アップロード済ファイル:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "ファイルをアップロードすると、%1$s のサービス条件 %2$s に同意したことになります。", "Share not found" : "共有が見つかりません", "Back to %s" : "%s に戻る", "Add to your Nextcloud" : "あなたのNextcloudに追加", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "現在のアップロードが停止されます", "Move or copy" : "移動またはコピー", "You can upload into this folder" : "このフォルダーにアップロードできます", + "Show list view" : "リストビューで表示", + "Show grid view" : "グリッドビューで表示", "No compatible server found at {remote}" : "互換性のあるサーバーが {remote} にはありません。", "Invalid server URL" : "サーバーのURLが無効", "Failed to add the public link to your Nextcloud" : "このNextcloudに公開リンクを追加できませんでした", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "ファイルをアップロードするには、最初に名前を入力する必要があります。", "Enter your name" : "あなたの名前を入力", "Submit name" : "名前を送信", + "Share note" : "共有ノート", + "Upload files to %s" : "%s にファイルをアップロード", + "%s shared a folder with you." : "%sはあなたとフォルダーを共有しました。", + "Note" : "ノート", + "Select or drop files" : "ファイルを選択するか、ドラッグ&ドロップしてください", + "Uploading files" : "ファイルをアップロード中", + "Uploaded files:" : "アップロード済ファイル:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "ファイルをアップロードすると、%1$s のサービス条件 %2$s に同意したことになります。", "Name" : "名前", "Share with accounts, teams, federated cloud id" : "アカウント、チーム、連携クラウドIDで共有", "Email, federated cloud id" : "電子メール、連携クラウドID", diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json index 1d34bd25927..a9d6a841b89 100644 --- a/apps/files_sharing/l10n/ja.json +++ b/apps/files_sharing/l10n/ja.json @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "{owner} が{circle}で共有中", "Shared with you and the conversation {conversation} by {owner}" : "{owner}のスレッド{conversation}であなたと共有しました", "Shared with you in a conversation by {owner}" : "{owner}のスレッドであなたと共有しました", - "Share note" : "共有ノート", - "Show list view" : "リストビューで表示", - "Show grid view" : "グリッドビューで表示", - "Upload files to %s" : "%s にファイルをアップロード", - "%s shared a folder with you." : "%sはあなたとフォルダーを共有しました。", - "Note" : "ノート", - "Select or drop files" : "ファイルを選択するか、ドラッグ&ドロップしてください", - "Uploading files" : "ファイルをアップロード中", - "Uploaded files:" : "アップロード済ファイル:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "ファイルをアップロードすると、%1$s のサービス条件 %2$s に同意したことになります。", "Share not found" : "共有が見つかりません", "Back to %s" : "%s に戻る", "Add to your Nextcloud" : "あなたのNextcloudに追加", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "現在のアップロードが停止されます", "Move or copy" : "移動またはコピー", "You can upload into this folder" : "このフォルダーにアップロードできます", + "Show list view" : "リストビューで表示", + "Show grid view" : "グリッドビューで表示", "No compatible server found at {remote}" : "互換性のあるサーバーが {remote} にはありません。", "Invalid server URL" : "サーバーのURLが無効", "Failed to add the public link to your Nextcloud" : "このNextcloudに公開リンクを追加できませんでした", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "ファイルをアップロードするには、最初に名前を入力する必要があります。", "Enter your name" : "あなたの名前を入力", "Submit name" : "名前を送信", + "Share note" : "共有ノート", + "Upload files to %s" : "%s にファイルをアップロード", + "%s shared a folder with you." : "%sはあなたとフォルダーを共有しました。", + "Note" : "ノート", + "Select or drop files" : "ファイルを選択するか、ドラッグ&ドロップしてください", + "Uploading files" : "ファイルをアップロード中", + "Uploaded files:" : "アップロード済ファイル:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "ファイルをアップロードすると、%1$s のサービス条件 %2$s に同意したことになります。", "Name" : "名前", "Share with accounts, teams, federated cloud id" : "アカウント、チーム、連携クラウドIDで共有", "Email, federated cloud id" : "電子メール、連携クラウドID", diff --git a/apps/files_sharing/l10n/ka.js b/apps/files_sharing/l10n/ka.js index 9e4ab7cb873..d3dbc4ea3ee 100644 --- a/apps/files_sharing/l10n/ka.js +++ b/apps/files_sharing/l10n/ka.js @@ -244,15 +244,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Shared with you and {circle} by {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Shared with you and the conversation {conversation} by {owner}", "Shared with you in a conversation by {owner}" : "Shared with you in a conversation by {owner}", - "Share note" : "Share note", - "Show list view" : "Show list view", - "Show grid view" : "Show grid view", - "Upload files to %s" : "Upload files to %s", - "Note" : "Note", - "Select or drop files" : "Select or drop files", - "Uploading files" : "Uploading files", - "Uploaded files:" : "Uploaded files:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "By uploading files, you agree to the %1$sterms of service%2$s.", "Share not found" : "Share not found", "Back to %s" : "Back to %s", "Add to your Nextcloud" : "Add to your Nextcloud", @@ -262,6 +253,8 @@ OC.L10N.register( "This will stop your current uploads." : "This will stop your current uploads.", "Move or copy" : "Move or copy", "You can upload into this folder" : "You can upload into this folder", + "Show list view" : "Show list view", + "Show grid view" : "Show grid view", "No compatible server found at {remote}" : "No compatible server found at {remote}", "Invalid server URL" : "Invalid server URL", "Failed to add the public link to your Nextcloud" : "Failed to add the public link to your Nextcloud", @@ -269,6 +262,13 @@ OC.L10N.register( "Search for share recipients" : "Search for share recipients", "No recommendations. Start typing." : "No recommendations. Start typing.", "Enter your name" : "Enter your name", + "Share note" : "Share note", + "Upload files to %s" : "Upload files to %s", + "Note" : "Note", + "Select or drop files" : "Select or drop files", + "Uploading files" : "Uploading files", + "Uploaded files:" : "Uploaded files:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "By uploading files, you agree to the %1$sterms of service%2$s.", "Name" : "სახელი" }, "nplurals=2; plural=(n!=1);"); diff --git a/apps/files_sharing/l10n/ka.json b/apps/files_sharing/l10n/ka.json index 26c63c5d609..fc96e8ef6c0 100644 --- a/apps/files_sharing/l10n/ka.json +++ b/apps/files_sharing/l10n/ka.json @@ -242,15 +242,6 @@ "Shared with you and {circle} by {owner}" : "Shared with you and {circle} by {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Shared with you and the conversation {conversation} by {owner}", "Shared with you in a conversation by {owner}" : "Shared with you in a conversation by {owner}", - "Share note" : "Share note", - "Show list view" : "Show list view", - "Show grid view" : "Show grid view", - "Upload files to %s" : "Upload files to %s", - "Note" : "Note", - "Select or drop files" : "Select or drop files", - "Uploading files" : "Uploading files", - "Uploaded files:" : "Uploaded files:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "By uploading files, you agree to the %1$sterms of service%2$s.", "Share not found" : "Share not found", "Back to %s" : "Back to %s", "Add to your Nextcloud" : "Add to your Nextcloud", @@ -260,6 +251,8 @@ "This will stop your current uploads." : "This will stop your current uploads.", "Move or copy" : "Move or copy", "You can upload into this folder" : "You can upload into this folder", + "Show list view" : "Show list view", + "Show grid view" : "Show grid view", "No compatible server found at {remote}" : "No compatible server found at {remote}", "Invalid server URL" : "Invalid server URL", "Failed to add the public link to your Nextcloud" : "Failed to add the public link to your Nextcloud", @@ -267,6 +260,13 @@ "Search for share recipients" : "Search for share recipients", "No recommendations. Start typing." : "No recommendations. Start typing.", "Enter your name" : "Enter your name", + "Share note" : "Share note", + "Upload files to %s" : "Upload files to %s", + "Note" : "Note", + "Select or drop files" : "Select or drop files", + "Uploading files" : "Uploading files", + "Uploaded files:" : "Uploaded files:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "By uploading files, you agree to the %1$sterms of service%2$s.", "Name" : "სახელი" },"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/ko.js b/apps/files_sharing/l10n/ko.js index d5d2d8a81d3..88e83c2d820 100644 --- a/apps/files_sharing/l10n/ko.js +++ b/apps/files_sharing/l10n/ko.js @@ -387,16 +387,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner}님이 여러분과 {circle}에게 공유함", "Shared with you and the conversation {conversation} by {owner}" : "{owner}님이 여러분과 대화 {conversation}와(과) 공유함", "Shared with you in a conversation by {owner}" : "{owner}님이 대화에서 당신에게 공유함", - "Share note" : "공유 노트", - "Show list view" : "목록 보기", - "Show grid view" : "바둑판식 보기", - "Upload files to %s" : "%s에 파일 업로드", - "%s shared a folder with you." : "%s님이 당신과 폴더를 공유했습니다", - "Note" : "노트", - "Select or drop files" : "파일을 선택하거나 끌어다 놓기", - "Uploading files" : "파일 업로드 중", - "Uploaded files:" : "업로드한 파일:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "파일을 업로드하면 %1$s이용 약관%2$s에 동의하는 것을 의미합니다.", "Share not found" : "공유를 찾을 수 없음", "Back to %s" : "%s(으)로 돌아가기", "Add to your Nextcloud" : "내 Nextcloud에 추가", @@ -406,6 +396,8 @@ OC.L10N.register( "This will stop your current uploads." : "이것은 현재 업로드를 중단시킬 것입니다.", "Move or copy" : "이동이나 복사", "You can upload into this folder" : "이 폴더에 업로드할 수 있습니다", + "Show list view" : "목록 보기", + "Show grid view" : "바둑판식 보기", "No compatible server found at {remote}" : "{remote}에서 호환 서버를 찾을 수 없음", "Invalid server URL" : "잘못된 서버 URL", "Failed to add the public link to your Nextcloud" : "Nextcloud에 공개 링크를 추가할 수 없음", @@ -418,6 +410,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "파일을 업로드하려면 먼저 당신의 이름을 알려주세요.", "Enter your name" : "이름을 입력하세요", "Submit name" : "이름 제출", + "Share note" : "공유 노트", + "Upload files to %s" : "%s에 파일 업로드", + "%s shared a folder with you." : "%s님이 당신과 폴더를 공유했습니다", + "Note" : "노트", + "Select or drop files" : "파일을 선택하거나 끌어다 놓기", + "Uploading files" : "파일 업로드 중", + "Uploaded files:" : "업로드한 파일:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "파일을 업로드하면 %1$s이용 약관%2$s에 동의하는 것을 의미합니다.", "Name" : "이름", "Share with accounts, teams, federated cloud id" : "계정, 팀 및 연합 클라우드 ID와 공유", "Email, federated cloud id" : "이메일, 연합 클라우드 ID", diff --git a/apps/files_sharing/l10n/ko.json b/apps/files_sharing/l10n/ko.json index 162ac564766..148b0dd11ed 100644 --- a/apps/files_sharing/l10n/ko.json +++ b/apps/files_sharing/l10n/ko.json @@ -385,16 +385,6 @@ "Shared with you and {circle} by {owner}" : "{owner}님이 여러분과 {circle}에게 공유함", "Shared with you and the conversation {conversation} by {owner}" : "{owner}님이 여러분과 대화 {conversation}와(과) 공유함", "Shared with you in a conversation by {owner}" : "{owner}님이 대화에서 당신에게 공유함", - "Share note" : "공유 노트", - "Show list view" : "목록 보기", - "Show grid view" : "바둑판식 보기", - "Upload files to %s" : "%s에 파일 업로드", - "%s shared a folder with you." : "%s님이 당신과 폴더를 공유했습니다", - "Note" : "노트", - "Select or drop files" : "파일을 선택하거나 끌어다 놓기", - "Uploading files" : "파일 업로드 중", - "Uploaded files:" : "업로드한 파일:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "파일을 업로드하면 %1$s이용 약관%2$s에 동의하는 것을 의미합니다.", "Share not found" : "공유를 찾을 수 없음", "Back to %s" : "%s(으)로 돌아가기", "Add to your Nextcloud" : "내 Nextcloud에 추가", @@ -404,6 +394,8 @@ "This will stop your current uploads." : "이것은 현재 업로드를 중단시킬 것입니다.", "Move or copy" : "이동이나 복사", "You can upload into this folder" : "이 폴더에 업로드할 수 있습니다", + "Show list view" : "목록 보기", + "Show grid view" : "바둑판식 보기", "No compatible server found at {remote}" : "{remote}에서 호환 서버를 찾을 수 없음", "Invalid server URL" : "잘못된 서버 URL", "Failed to add the public link to your Nextcloud" : "Nextcloud에 공개 링크를 추가할 수 없음", @@ -416,6 +408,14 @@ "To upload files, you need to provide your name first." : "파일을 업로드하려면 먼저 당신의 이름을 알려주세요.", "Enter your name" : "이름을 입력하세요", "Submit name" : "이름 제출", + "Share note" : "공유 노트", + "Upload files to %s" : "%s에 파일 업로드", + "%s shared a folder with you." : "%s님이 당신과 폴더를 공유했습니다", + "Note" : "노트", + "Select or drop files" : "파일을 선택하거나 끌어다 놓기", + "Uploading files" : "파일 업로드 중", + "Uploaded files:" : "업로드한 파일:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "파일을 업로드하면 %1$s이용 약관%2$s에 동의하는 것을 의미합니다.", "Name" : "이름", "Share with accounts, teams, federated cloud id" : "계정, 팀 및 연합 클라우드 ID와 공유", "Email, federated cloud id" : "이메일, 연합 클라우드 ID", diff --git a/apps/files_sharing/l10n/lt_LT.js b/apps/files_sharing/l10n/lt_LT.js index 318d1bc1344..db12f4c1db5 100644 --- a/apps/files_sharing/l10n/lt_LT.js +++ b/apps/files_sharing/l10n/lt_LT.js @@ -254,16 +254,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner} pradėjo bendrinti su jumis ir {circle}", "Shared with you and the conversation {conversation} by {owner}" : "{owner} pasidalino su jumis ir pokalbiu {conversation}", "Shared with you in a conversation by {owner}" : "{owner} pasidalino su jumis pokalbyje", - "Share note" : "Pasidalinimo pastaba", - "Show list view" : "Rodyti sąrašo rodinį", - "Show grid view" : "Rodyti tinklelio rodinį", - "Upload files to %s" : "Įkelkite failus į %s", - "%s shared a folder with you." : "%s pradėjo bendrinti su jumis aplanką.", - "Note" : "Pastaba", - "Select or drop files" : "Pasirinkite arba vilkite failus", - "Uploading files" : "Įkeliami failai", - "Uploaded files:" : "Įkelti failai:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Įkeldami failus, sutinkate su %1$snaudojimosi sąlygomis%2$s.", "Share not found" : "Viešinys nerastas", "Back to %s" : "Atgal į %s", "Add to your Nextcloud" : "Pridėti į savo Nextcloud", @@ -273,6 +263,8 @@ OC.L10N.register( "This will stop your current uploads." : "Tai sustabdys dabartinius įkėlimus.", "Move or copy" : "Perkelti ar kopijuoti", "You can upload into this folder" : "Galite įkelti į šį aplanką", + "Show list view" : "Rodyti sąrašo rodinį", + "Show grid view" : "Rodyti tinklelio rodinį", "No compatible server found at {remote}" : "Nerasta jokio suderinamo serverio ties {remote}", "Invalid server URL" : "Neteisingas serverio URL adresas", "Failed to add the public link to your Nextcloud" : "Nepavyko pridėti viešosios nuorodos į jūsų Nextcloud", @@ -282,6 +274,14 @@ OC.L10N.register( "Search for share recipients" : "Ieškoti viešinio gavėjų", "No recommendations. Start typing." : "Rekomendacijų nėra. Pradėkite rašyti.", "Enter your name" : "Įveskite savo vardą", + "Share note" : "Pasidalinimo pastaba", + "Upload files to %s" : "Įkelkite failus į %s", + "%s shared a folder with you." : "%s pradėjo bendrinti su jumis aplanką.", + "Note" : "Pastaba", + "Select or drop files" : "Pasirinkite arba vilkite failus", + "Uploading files" : "Įkeliami failai", + "Uploaded files:" : "Įkelti failai:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Įkeldami failus, sutinkate su %1$snaudojimosi sąlygomis%2$s.", "Name" : "Pavadinimas", "Filename must not be empty." : "Failo pavadinimas negali būti tuščias." }, diff --git a/apps/files_sharing/l10n/lt_LT.json b/apps/files_sharing/l10n/lt_LT.json index 11b9da18c1d..4e4862f04b4 100644 --- a/apps/files_sharing/l10n/lt_LT.json +++ b/apps/files_sharing/l10n/lt_LT.json @@ -252,16 +252,6 @@ "Shared with you and {circle} by {owner}" : "{owner} pradėjo bendrinti su jumis ir {circle}", "Shared with you and the conversation {conversation} by {owner}" : "{owner} pasidalino su jumis ir pokalbiu {conversation}", "Shared with you in a conversation by {owner}" : "{owner} pasidalino su jumis pokalbyje", - "Share note" : "Pasidalinimo pastaba", - "Show list view" : "Rodyti sąrašo rodinį", - "Show grid view" : "Rodyti tinklelio rodinį", - "Upload files to %s" : "Įkelkite failus į %s", - "%s shared a folder with you." : "%s pradėjo bendrinti su jumis aplanką.", - "Note" : "Pastaba", - "Select or drop files" : "Pasirinkite arba vilkite failus", - "Uploading files" : "Įkeliami failai", - "Uploaded files:" : "Įkelti failai:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Įkeldami failus, sutinkate su %1$snaudojimosi sąlygomis%2$s.", "Share not found" : "Viešinys nerastas", "Back to %s" : "Atgal į %s", "Add to your Nextcloud" : "Pridėti į savo Nextcloud", @@ -271,6 +261,8 @@ "This will stop your current uploads." : "Tai sustabdys dabartinius įkėlimus.", "Move or copy" : "Perkelti ar kopijuoti", "You can upload into this folder" : "Galite įkelti į šį aplanką", + "Show list view" : "Rodyti sąrašo rodinį", + "Show grid view" : "Rodyti tinklelio rodinį", "No compatible server found at {remote}" : "Nerasta jokio suderinamo serverio ties {remote}", "Invalid server URL" : "Neteisingas serverio URL adresas", "Failed to add the public link to your Nextcloud" : "Nepavyko pridėti viešosios nuorodos į jūsų Nextcloud", @@ -280,6 +272,14 @@ "Search for share recipients" : "Ieškoti viešinio gavėjų", "No recommendations. Start typing." : "Rekomendacijų nėra. Pradėkite rašyti.", "Enter your name" : "Įveskite savo vardą", + "Share note" : "Pasidalinimo pastaba", + "Upload files to %s" : "Įkelkite failus į %s", + "%s shared a folder with you." : "%s pradėjo bendrinti su jumis aplanką.", + "Note" : "Pastaba", + "Select or drop files" : "Pasirinkite arba vilkite failus", + "Uploading files" : "Įkeliami failai", + "Uploaded files:" : "Įkelti failai:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Įkeldami failus, sutinkate su %1$snaudojimosi sąlygomis%2$s.", "Name" : "Pavadinimas", "Filename must not be empty." : "Failo pavadinimas negali būti tuščias." },"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" diff --git a/apps/files_sharing/l10n/mk.js b/apps/files_sharing/l10n/mk.js index cec23d796d7..0cdf3e86239 100644 --- a/apps/files_sharing/l10n/mk.js +++ b/apps/files_sharing/l10n/mk.js @@ -224,7 +224,7 @@ OC.L10N.register( "Password protection" : "Заштитено со лозинка", "Enter a password" : "Внесете лозинка", "Enable link expiration (enforced)" : "Овозможи истекување на линк (задолжително)", - "Enable link expiration" : "Овозможи истекување на ллинк", + "Enable link expiration" : "Овозможи истекување на линк", "Enter expiration date (enforced)" : "Внесете датум на истекување (задолжително)", "Enter expiration date" : "Внесете датум на истекување", "Create share" : "Ново споделување", @@ -400,16 +400,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Споделено со тебе и {circle} од {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Споделено со тебе и во разговорот {conversation} од {owner}", "Shared with you in a conversation by {owner}" : "Споделено со тебе и во разговорот од {owner}", - "Share note" : "Споделување со забелешка ", - "Show list view" : "Прикажи поглед во листа", - "Show grid view" : "Прикажи поглед во мрежа", - "Upload files to %s" : "Прикачи датотеки во %s", - "%s shared a folder with you." : "%s сподели папка со вас.", - "Note" : "Белешка", - "Select or drop files" : "Изберете или испуштете датотеки", - "Uploading files" : "Прикачување на датотеки", - "Uploaded files:" : "Прикачени датотеки:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Со прикачување на датотеките, се согласувате со %1$sусловите за користење%2$s.", "Share not found" : "Споделувањето не е пронајдено", "Back to %s" : "Врати се на %s", "Add to your Nextcloud" : "Додадете во вашиот Cloud", @@ -419,6 +409,8 @@ OC.L10N.register( "This will stop your current uploads." : "Ова ќе го прекине вашето моментално прикачување.", "Move or copy" : "Премести или копирај", "You can upload into this folder" : "Можете да прикачувате во оваа папка", + "Show list view" : "Прикажи поглед во листа", + "Show grid view" : "Прикажи поглед во мрежа", "No compatible server found at {remote}" : "{remote} не е компатибилен сервер", "Invalid server URL" : "Неправилна URL на сервер", "Failed to add the public link to your Nextcloud" : "Неуспешно додавање на јавниот линк", @@ -431,6 +423,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "За да прикачите датотеки, мора да го наведете вашето име.", "Enter your name" : "Внесете го вашето име", "Submit name" : "Испрати име", + "Share note" : "Споделување со забелешка ", + "Upload files to %s" : "Прикачи датотеки во %s", + "%s shared a folder with you." : "%s сподели папка со вас.", + "Note" : "Белешка", + "Select or drop files" : "Изберете или испуштете датотеки", + "Uploading files" : "Прикачување на датотеки", + "Uploaded files:" : "Прикачени датотеки:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Со прикачување на датотеките, се согласувате со %1$sусловите за користење%2$s.", "Name" : "Име", "Share with accounts, teams, federated cloud id" : "Сподели со корисници, тимови, федерални корисници", "Email, federated cloud id" : "Е-пошта, федерален ИД", diff --git a/apps/files_sharing/l10n/mk.json b/apps/files_sharing/l10n/mk.json index 01c8062bc45..092b47a70de 100644 --- a/apps/files_sharing/l10n/mk.json +++ b/apps/files_sharing/l10n/mk.json @@ -222,7 +222,7 @@ "Password protection" : "Заштитено со лозинка", "Enter a password" : "Внесете лозинка", "Enable link expiration (enforced)" : "Овозможи истекување на линк (задолжително)", - "Enable link expiration" : "Овозможи истекување на ллинк", + "Enable link expiration" : "Овозможи истекување на линк", "Enter expiration date (enforced)" : "Внесете датум на истекување (задолжително)", "Enter expiration date" : "Внесете датум на истекување", "Create share" : "Ново споделување", @@ -398,16 +398,6 @@ "Shared with you and {circle} by {owner}" : "Споделено со тебе и {circle} од {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Споделено со тебе и во разговорот {conversation} од {owner}", "Shared with you in a conversation by {owner}" : "Споделено со тебе и во разговорот од {owner}", - "Share note" : "Споделување со забелешка ", - "Show list view" : "Прикажи поглед во листа", - "Show grid view" : "Прикажи поглед во мрежа", - "Upload files to %s" : "Прикачи датотеки во %s", - "%s shared a folder with you." : "%s сподели папка со вас.", - "Note" : "Белешка", - "Select or drop files" : "Изберете или испуштете датотеки", - "Uploading files" : "Прикачување на датотеки", - "Uploaded files:" : "Прикачени датотеки:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Со прикачување на датотеките, се согласувате со %1$sусловите за користење%2$s.", "Share not found" : "Споделувањето не е пронајдено", "Back to %s" : "Врати се на %s", "Add to your Nextcloud" : "Додадете во вашиот Cloud", @@ -417,6 +407,8 @@ "This will stop your current uploads." : "Ова ќе го прекине вашето моментално прикачување.", "Move or copy" : "Премести или копирај", "You can upload into this folder" : "Можете да прикачувате во оваа папка", + "Show list view" : "Прикажи поглед во листа", + "Show grid view" : "Прикажи поглед во мрежа", "No compatible server found at {remote}" : "{remote} не е компатибилен сервер", "Invalid server URL" : "Неправилна URL на сервер", "Failed to add the public link to your Nextcloud" : "Неуспешно додавање на јавниот линк", @@ -429,6 +421,14 @@ "To upload files, you need to provide your name first." : "За да прикачите датотеки, мора да го наведете вашето име.", "Enter your name" : "Внесете го вашето име", "Submit name" : "Испрати име", + "Share note" : "Споделување со забелешка ", + "Upload files to %s" : "Прикачи датотеки во %s", + "%s shared a folder with you." : "%s сподели папка со вас.", + "Note" : "Белешка", + "Select or drop files" : "Изберете или испуштете датотеки", + "Uploading files" : "Прикачување на датотеки", + "Uploaded files:" : "Прикачени датотеки:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Со прикачување на датотеките, се согласувате со %1$sусловите за користење%2$s.", "Name" : "Име", "Share with accounts, teams, federated cloud id" : "Сподели со корисници, тимови, федерални корисници", "Email, federated cloud id" : "Е-пошта, федерален ИД", diff --git a/apps/files_sharing/l10n/nb.js b/apps/files_sharing/l10n/nb.js index 120f5d4482f..60c151054fb 100644 --- a/apps/files_sharing/l10n/nb.js +++ b/apps/files_sharing/l10n/nb.js @@ -343,16 +343,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Delt med deg og {circle} av {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Delt med deg og samtalen {conversation} av {owner}", "Shared with you in a conversation by {owner}" : "Delt md deg i samtale med {owner}", - "Share note" : "Delingsnotat", - "Show list view" : "Vis listevisning", - "Show grid view" : "Vis rutenett-visning", - "Upload files to %s" : "Last opp filer til %s", - "%s shared a folder with you." : "%s delte en mappe med deg.", - "Note" : "Melding", - "Select or drop files" : "Velg eller slipp filer", - "Uploading files" : "Laster opp filer", - "Uploaded files:" : "Opplastede filer:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Ved å laste opp filer godtar du %1$stjenestevilkårene%2$s.", "Share not found" : "Deling ikke funnet", "Back to %s" : "Tilbake til %s", "Add to your Nextcloud" : "Legg til i din Nextcloud", @@ -362,6 +352,8 @@ OC.L10N.register( "This will stop your current uploads." : "Dette fille stoppe dine nåværende opplastinger.", "Move or copy" : "Flytt eller kopier", "You can upload into this folder" : "Du kan laste opp til denne mappen", + "Show list view" : "Vis listevisning", + "Show grid view" : "Vis rutenett-visning", "No compatible server found at {remote}" : "Ingen kompatibel server ble funnet på {remote}", "Invalid server URL" : "Ugyldig server adresse", "Failed to add the public link to your Nextcloud" : "Feil oppsto under oppretting av offentlig lenke til din Nextcloud", @@ -374,6 +366,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "For å laste opp filer må du først oppgi navnet ditt.", "Enter your name" : "Skriv inn navnet ditt", "Submit name" : "Send inn navn", + "Share note" : "Delingsnotat", + "Upload files to %s" : "Last opp filer til %s", + "%s shared a folder with you." : "%s delte en mappe med deg.", + "Note" : "Melding", + "Select or drop files" : "Velg eller slipp filer", + "Uploading files" : "Laster opp filer", + "Uploaded files:" : "Opplastede filer:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Ved å laste opp filer godtar du %1$stjenestevilkårene%2$s.", "Name" : "Navn", "Filename must not be empty." : "Filnavn kan ikke være tomt." }, diff --git a/apps/files_sharing/l10n/nb.json b/apps/files_sharing/l10n/nb.json index 0a21333bf4b..fab0e4526bb 100644 --- a/apps/files_sharing/l10n/nb.json +++ b/apps/files_sharing/l10n/nb.json @@ -341,16 +341,6 @@ "Shared with you and {circle} by {owner}" : "Delt med deg og {circle} av {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Delt med deg og samtalen {conversation} av {owner}", "Shared with you in a conversation by {owner}" : "Delt md deg i samtale med {owner}", - "Share note" : "Delingsnotat", - "Show list view" : "Vis listevisning", - "Show grid view" : "Vis rutenett-visning", - "Upload files to %s" : "Last opp filer til %s", - "%s shared a folder with you." : "%s delte en mappe med deg.", - "Note" : "Melding", - "Select or drop files" : "Velg eller slipp filer", - "Uploading files" : "Laster opp filer", - "Uploaded files:" : "Opplastede filer:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Ved å laste opp filer godtar du %1$stjenestevilkårene%2$s.", "Share not found" : "Deling ikke funnet", "Back to %s" : "Tilbake til %s", "Add to your Nextcloud" : "Legg til i din Nextcloud", @@ -360,6 +350,8 @@ "This will stop your current uploads." : "Dette fille stoppe dine nåværende opplastinger.", "Move or copy" : "Flytt eller kopier", "You can upload into this folder" : "Du kan laste opp til denne mappen", + "Show list view" : "Vis listevisning", + "Show grid view" : "Vis rutenett-visning", "No compatible server found at {remote}" : "Ingen kompatibel server ble funnet på {remote}", "Invalid server URL" : "Ugyldig server adresse", "Failed to add the public link to your Nextcloud" : "Feil oppsto under oppretting av offentlig lenke til din Nextcloud", @@ -372,6 +364,14 @@ "To upload files, you need to provide your name first." : "For å laste opp filer må du først oppgi navnet ditt.", "Enter your name" : "Skriv inn navnet ditt", "Submit name" : "Send inn navn", + "Share note" : "Delingsnotat", + "Upload files to %s" : "Last opp filer til %s", + "%s shared a folder with you." : "%s delte en mappe med deg.", + "Note" : "Melding", + "Select or drop files" : "Velg eller slipp filer", + "Uploading files" : "Laster opp filer", + "Uploaded files:" : "Opplastede filer:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Ved å laste opp filer godtar du %1$stjenestevilkårene%2$s.", "Name" : "Navn", "Filename must not be empty." : "Filnavn kan ikke være tomt." },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_sharing/l10n/nl.js b/apps/files_sharing/l10n/nl.js index 52b06ff181a..b5d0fce48cb 100644 --- a/apps/files_sharing/l10n/nl.js +++ b/apps/files_sharing/l10n/nl.js @@ -279,7 +279,7 @@ OC.L10N.register( "Failed to generate a new token" : "Het genereren van een nieuw token is mislukt", "Allow upload and editing" : "Uploaden en bewerken toestaan", "Allow editing" : "Bewerken toestaan", - "Upload only" : "Alleen upload", + "Upload only" : "Alleen uploaden", "Advanced settings" : "Geavanceerde instellingen", "Share label" : "Deel het label", "Share link token" : "Share link token", @@ -318,7 +318,7 @@ OC.L10N.register( "Shared with you by {owner}" : "Met je gedeeld door {owner}", "Internal shares" : "Interne schijven", "Internal shares explanation" : "Uitleg over interne shares", - "External shares" : "Externe schijven", + "External shares" : "Externe shares", "External shares explanation" : "Uitleg over externe shares", "Additional shares" : "Aanvullende shares", "Additional shares explanation" : "Uitleg over aanvullende shares", @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Gedeeld met jou en {circle} door {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Gedeeld met jou en gesprek {conversation} door {owner}", "Shared with you in a conversation by {owner}" : "Met jou in een gesprek gedeeld door {owner}", - "Share note" : "Notitie delen", - "Show list view" : "Toon lijstweergave", - "Show grid view" : "Toon roosterweergave", - "Upload files to %s" : "Upload bestanden naar %s", - "%s shared a folder with you." : "%s heeft een map met je gedeeld", - "Note" : "Notitie", - "Select or drop files" : "Selecteer bestanden of sleep ze naar dit venster", - "Uploading files" : "Uploaden bestanden", - "Uploaded files:" : "Geüploade bestanden", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Door het uploaden van bestanden stem je in met de %1$sgebruiksvoorwaarden%2$s.", "Share not found" : "Gedeelde map niet gevonden", "Back to %s" : "Terug naar %s", "Add to your Nextcloud" : "Toevoegen aan je Nextcloud", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "Dit beëindigt onderhanden uploads", "Move or copy" : "Verplaatsen of kopiëren", "You can upload into this folder" : "Je kunt uploaden naar deze map", + "Show list view" : "Toon lijstweergave", + "Show grid view" : "Toon roosterweergave", "No compatible server found at {remote}" : "Geen geschikte server gevonden op {remote}", "Invalid server URL" : "Ongeldig server URL", "Failed to add the public link to your Nextcloud" : "Kon de openbare link niet aan je Nextcloud toevoegen", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Om bestanden te uploaden moet je eerste je naam opgeven.", "Enter your name" : "Geef je naam op", "Submit name" : "Naam doorgeven", + "Share note" : "Notitie delen", + "Upload files to %s" : "Upload bestanden naar %s", + "%s shared a folder with you." : "%s heeft een map met je gedeeld", + "Note" : "Notitie", + "Select or drop files" : "Selecteer bestanden of sleep ze naar dit venster", + "Uploading files" : "Uploaden bestanden", + "Uploaded files:" : "Geüploade bestanden", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Door het uploaden van bestanden stem je in met de %1$sgebruiksvoorwaarden%2$s.", "Name" : "Naam", "Share with accounts, teams, federated cloud id" : "Delen met accounts, teams, federatieve cloud-ID", "Email, federated cloud id" : "E-mail, federatieve cloud-ID", diff --git a/apps/files_sharing/l10n/nl.json b/apps/files_sharing/l10n/nl.json index 22ee5b47ee9..5fa8137aef9 100644 --- a/apps/files_sharing/l10n/nl.json +++ b/apps/files_sharing/l10n/nl.json @@ -277,7 +277,7 @@ "Failed to generate a new token" : "Het genereren van een nieuw token is mislukt", "Allow upload and editing" : "Uploaden en bewerken toestaan", "Allow editing" : "Bewerken toestaan", - "Upload only" : "Alleen upload", + "Upload only" : "Alleen uploaden", "Advanced settings" : "Geavanceerde instellingen", "Share label" : "Deel het label", "Share link token" : "Share link token", @@ -316,7 +316,7 @@ "Shared with you by {owner}" : "Met je gedeeld door {owner}", "Internal shares" : "Interne schijven", "Internal shares explanation" : "Uitleg over interne shares", - "External shares" : "Externe schijven", + "External shares" : "Externe shares", "External shares explanation" : "Uitleg over externe shares", "Additional shares" : "Aanvullende shares", "Additional shares explanation" : "Uitleg over aanvullende shares", @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "Gedeeld met jou en {circle} door {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Gedeeld met jou en gesprek {conversation} door {owner}", "Shared with you in a conversation by {owner}" : "Met jou in een gesprek gedeeld door {owner}", - "Share note" : "Notitie delen", - "Show list view" : "Toon lijstweergave", - "Show grid view" : "Toon roosterweergave", - "Upload files to %s" : "Upload bestanden naar %s", - "%s shared a folder with you." : "%s heeft een map met je gedeeld", - "Note" : "Notitie", - "Select or drop files" : "Selecteer bestanden of sleep ze naar dit venster", - "Uploading files" : "Uploaden bestanden", - "Uploaded files:" : "Geüploade bestanden", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Door het uploaden van bestanden stem je in met de %1$sgebruiksvoorwaarden%2$s.", "Share not found" : "Gedeelde map niet gevonden", "Back to %s" : "Terug naar %s", "Add to your Nextcloud" : "Toevoegen aan je Nextcloud", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "Dit beëindigt onderhanden uploads", "Move or copy" : "Verplaatsen of kopiëren", "You can upload into this folder" : "Je kunt uploaden naar deze map", + "Show list view" : "Toon lijstweergave", + "Show grid view" : "Toon roosterweergave", "No compatible server found at {remote}" : "Geen geschikte server gevonden op {remote}", "Invalid server URL" : "Ongeldig server URL", "Failed to add the public link to your Nextcloud" : "Kon de openbare link niet aan je Nextcloud toevoegen", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "Om bestanden te uploaden moet je eerste je naam opgeven.", "Enter your name" : "Geef je naam op", "Submit name" : "Naam doorgeven", + "Share note" : "Notitie delen", + "Upload files to %s" : "Upload bestanden naar %s", + "%s shared a folder with you." : "%s heeft een map met je gedeeld", + "Note" : "Notitie", + "Select or drop files" : "Selecteer bestanden of sleep ze naar dit venster", + "Uploading files" : "Uploaden bestanden", + "Uploaded files:" : "Geüploade bestanden", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Door het uploaden van bestanden stem je in met de %1$sgebruiksvoorwaarden%2$s.", "Name" : "Naam", "Share with accounts, teams, federated cloud id" : "Delen met accounts, teams, federatieve cloud-ID", "Email, federated cloud id" : "E-mail, federatieve cloud-ID", diff --git a/apps/files_sharing/l10n/pl.js b/apps/files_sharing/l10n/pl.js index 9737349cafc..47109393c25 100644 --- a/apps/files_sharing/l10n/pl.js +++ b/apps/files_sharing/l10n/pl.js @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Udostępnione Tobie i {circle} przez {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Udostępnione Tobie i w rozmowie {conversation} przez {owner}", "Shared with you in a conversation by {owner}" : "Udostępnione Tobie w rozmowie przez {owner}", - "Share note" : "Notatka udostępnienia", - "Show list view" : "Pokaż widok listy", - "Show grid view" : "Pokaż widok siatki", - "Upload files to %s" : "Wyślij pliki do %s", - "%s shared a folder with you." : "%s udostępnił Ci katalog.", - "Note" : "Notatka", - "Select or drop files" : "Wybierz lub upuść pliki", - "Uploading files" : "Wysyłanie plików", - "Uploaded files:" : "Wysłane pliki:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Wysyłając pliki, zgadzasz się na %1$swarunki korzystania z usługi%2$s.", "Share not found" : "Nie znaleziono udostępnienia", "Back to %s" : "Powrót do %s", "Add to your Nextcloud" : "Dodaj do swojego Nextcloud", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "Spowoduje to zatrzymanie wysyłania plików.", "Move or copy" : "Przenieś lub kopiuj", "You can upload into this folder" : "Możesz wysłać do tego katalogu", + "Show list view" : "Pokaż widok listy", + "Show grid view" : "Pokaż widok siatki", "No compatible server found at {remote}" : "Nie znaleziono kompatybilnego serwera na {remote}", "Invalid server URL" : "Nieprawidłowy adres URL serwera", "Failed to add the public link to your Nextcloud" : "Nie udało się dodać linku publicznego do Nextcloud", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Aby przesłać pliki, musisz najpierw podać swoje imię i nazwisko.", "Enter your name" : "Wpisz swoją nazwę", "Submit name" : "Wyślij nazwę", + "Share note" : "Notatka udostępnienia", + "Upload files to %s" : "Wyślij pliki do %s", + "%s shared a folder with you." : "%s udostępnił Ci katalog.", + "Note" : "Notatka", + "Select or drop files" : "Wybierz lub upuść pliki", + "Uploading files" : "Wysyłanie plików", + "Uploaded files:" : "Wysłane pliki:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Wysyłając pliki, zgadzasz się na %1$swarunki korzystania z usługi%2$s.", "Name" : "Nazwa", "Share with accounts, teams, federated cloud id" : "Udostępnij kontom, zespołom, ID Chmury Federacyjnej", "Email, federated cloud id" : "E-mail, ID Chmury Federacyjnej", diff --git a/apps/files_sharing/l10n/pl.json b/apps/files_sharing/l10n/pl.json index 5d4b320ffa4..fcc88eb97ad 100644 --- a/apps/files_sharing/l10n/pl.json +++ b/apps/files_sharing/l10n/pl.json @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "Udostępnione Tobie i {circle} przez {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Udostępnione Tobie i w rozmowie {conversation} przez {owner}", "Shared with you in a conversation by {owner}" : "Udostępnione Tobie w rozmowie przez {owner}", - "Share note" : "Notatka udostępnienia", - "Show list view" : "Pokaż widok listy", - "Show grid view" : "Pokaż widok siatki", - "Upload files to %s" : "Wyślij pliki do %s", - "%s shared a folder with you." : "%s udostępnił Ci katalog.", - "Note" : "Notatka", - "Select or drop files" : "Wybierz lub upuść pliki", - "Uploading files" : "Wysyłanie plików", - "Uploaded files:" : "Wysłane pliki:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Wysyłając pliki, zgadzasz się na %1$swarunki korzystania z usługi%2$s.", "Share not found" : "Nie znaleziono udostępnienia", "Back to %s" : "Powrót do %s", "Add to your Nextcloud" : "Dodaj do swojego Nextcloud", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "Spowoduje to zatrzymanie wysyłania plików.", "Move or copy" : "Przenieś lub kopiuj", "You can upload into this folder" : "Możesz wysłać do tego katalogu", + "Show list view" : "Pokaż widok listy", + "Show grid view" : "Pokaż widok siatki", "No compatible server found at {remote}" : "Nie znaleziono kompatybilnego serwera na {remote}", "Invalid server URL" : "Nieprawidłowy adres URL serwera", "Failed to add the public link to your Nextcloud" : "Nie udało się dodać linku publicznego do Nextcloud", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "Aby przesłać pliki, musisz najpierw podać swoje imię i nazwisko.", "Enter your name" : "Wpisz swoją nazwę", "Submit name" : "Wyślij nazwę", + "Share note" : "Notatka udostępnienia", + "Upload files to %s" : "Wyślij pliki do %s", + "%s shared a folder with you." : "%s udostępnił Ci katalog.", + "Note" : "Notatka", + "Select or drop files" : "Wybierz lub upuść pliki", + "Uploading files" : "Wysyłanie plików", + "Uploaded files:" : "Wysłane pliki:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Wysyłając pliki, zgadzasz się na %1$swarunki korzystania z usługi%2$s.", "Name" : "Nazwa", "Share with accounts, teams, federated cloud id" : "Udostępnij kontom, zespołom, ID Chmury Federacyjnej", "Email, federated cloud id" : "E-mail, ID Chmury Federacyjnej", diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js index 19e44fd4c40..90f4f0badc8 100644 --- a/apps/files_sharing/l10n/pt_BR.js +++ b/apps/files_sharing/l10n/pt_BR.js @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Compartilhado com você e {circle} por {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Compartilhado com você e a conversa {conversation} por {owner}", "Shared with you in a conversation by {owner}" : "Compartilhado com você em uma conversa por {owner}", - "Share note" : "Compartilhar nota", - "Show list view" : "Mostrar visualização em lista", - "Show grid view" : "Mostrar visualização em grade", - "Upload files to %s" : "Enviar arquivos para %s", - "%s shared a folder with you." : "%s compartilhou uma pasta com você.", - "Note" : "Nota", - "Select or drop files" : "Selecione ou solte arquivos", - "Uploading files" : "Enviando arquivos...", - "Uploaded files:" : "Arquivos enviados:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Ao enviar arquivos, você concorda com os %1$stermos de serviço%2$s.", "Share not found" : "Compartilhamento não encontrado", "Back to %s" : "Voltar para %s", "Add to your Nextcloud" : "Adicionar ao seu Nextcloud", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "Isso interromperá seus uploads atuais.", "Move or copy" : "Mover ou copiar", "You can upload into this folder" : "Você pode enviar arquivos para esta pasta", + "Show list view" : "Mostrar visualização em lista", + "Show grid view" : "Mostrar visualização em grade", "No compatible server found at {remote}" : "Nenhum servidor compativel encontrado em {remote}", "Invalid server URL" : "URL do servidor inválida", "Failed to add the public link to your Nextcloud" : "Ocorreu uma falha ao adicionar o link público ao seu Nextcloud", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Para fazer upload de arquivos, primeiro você precisa fornecer seu nome.", "Enter your name" : "Digite seu nome", "Submit name" : "Enviar nome", + "Share note" : "Compartilhar nota", + "Upload files to %s" : "Enviar arquivos para %s", + "%s shared a folder with you." : "%s compartilhou uma pasta com você.", + "Note" : "Nota", + "Select or drop files" : "Selecione ou solte arquivos", + "Uploading files" : "Enviando arquivos...", + "Uploaded files:" : "Arquivos enviados:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Ao enviar arquivos, você concorda com os %1$stermos de serviço%2$s.", "Name" : "Nome", "Share with accounts, teams, federated cloud id" : "Compartilhar com contas, equipes, ID de nuvem federada", "Email, federated cloud id" : "E-mail, ID de nuvem federada", diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json index 854f492dee9..ebeedc16373 100644 --- a/apps/files_sharing/l10n/pt_BR.json +++ b/apps/files_sharing/l10n/pt_BR.json @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "Compartilhado com você e {circle} por {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Compartilhado com você e a conversa {conversation} por {owner}", "Shared with you in a conversation by {owner}" : "Compartilhado com você em uma conversa por {owner}", - "Share note" : "Compartilhar nota", - "Show list view" : "Mostrar visualização em lista", - "Show grid view" : "Mostrar visualização em grade", - "Upload files to %s" : "Enviar arquivos para %s", - "%s shared a folder with you." : "%s compartilhou uma pasta com você.", - "Note" : "Nota", - "Select or drop files" : "Selecione ou solte arquivos", - "Uploading files" : "Enviando arquivos...", - "Uploaded files:" : "Arquivos enviados:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Ao enviar arquivos, você concorda com os %1$stermos de serviço%2$s.", "Share not found" : "Compartilhamento não encontrado", "Back to %s" : "Voltar para %s", "Add to your Nextcloud" : "Adicionar ao seu Nextcloud", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "Isso interromperá seus uploads atuais.", "Move or copy" : "Mover ou copiar", "You can upload into this folder" : "Você pode enviar arquivos para esta pasta", + "Show list view" : "Mostrar visualização em lista", + "Show grid view" : "Mostrar visualização em grade", "No compatible server found at {remote}" : "Nenhum servidor compativel encontrado em {remote}", "Invalid server URL" : "URL do servidor inválida", "Failed to add the public link to your Nextcloud" : "Ocorreu uma falha ao adicionar o link público ao seu Nextcloud", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "Para fazer upload de arquivos, primeiro você precisa fornecer seu nome.", "Enter your name" : "Digite seu nome", "Submit name" : "Enviar nome", + "Share note" : "Compartilhar nota", + "Upload files to %s" : "Enviar arquivos para %s", + "%s shared a folder with you." : "%s compartilhou uma pasta com você.", + "Note" : "Nota", + "Select or drop files" : "Selecione ou solte arquivos", + "Uploading files" : "Enviando arquivos...", + "Uploaded files:" : "Arquivos enviados:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Ao enviar arquivos, você concorda com os %1$stermos de serviço%2$s.", "Name" : "Nome", "Share with accounts, teams, federated cloud id" : "Compartilhar com contas, equipes, ID de nuvem federada", "Email, federated cloud id" : "E-mail, ID de nuvem federada", diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js index 599859b6be9..07500c11fa8 100644 --- a/apps/files_sharing/l10n/ru.js +++ b/apps/files_sharing/l10n/ru.js @@ -368,6 +368,7 @@ OC.L10N.register( "List of unapproved shares." : "Список ресурсов общего доступа, которые вы еще не приняли", "No pending shares" : "Ожидающие общие ресурсы отсуствуют", "Shares you have received but not approved will show up here" : "Здесь появятся ресурсы общего доступа, которые Вам предоставлены, но еще не подтверждены с Вашей стороны", + "Error deleting the share: {errorMessage}" : "Ошибка при удалении общего ресурса: {errorMessage}", "Error deleting the share" : "Ошибка прекращения общего доступа", "Error updating the share: {errorMessage}" : "Не удалось изменить общий ресурс: {errorMessage}", "Error updating the share" : "Ошибка изменения параметров общего доступа", @@ -400,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner} предоставил(а) доступ Вам и участникам круга «{circle}»", "Shared with you and the conversation {conversation} by {owner}" : "{owner} предоставил(а) доступ Вам и участникам беседы «{conversation}»", "Shared with you in a conversation by {owner}" : "Пользователь {owner} предоставил(а) Вам доступ во время беседы", - "Share note" : "Комментарий к общему ресурсу", - "Show list view" : "Просмотр списком", - "Show grid view" : "Просмотр сеткой", - "Upload files to %s" : "Загрузка файлов в %s", - "%s shared a folder with you." : "%s поделился с вами папкой.", - "Note" : "Примечание", - "Select or drop files" : "Выберите или перетащите файлы", - "Uploading files" : "Загрузка файлов", - "Uploaded files:" : "Отправленные файлы:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Передачей файлов на сервер, вы принимаете %1$sусловия обслуживания%2$s.", "Share not found" : "Ресурс с общим доступом не найден", "Back to %s" : "Вернуться к %s", "Add to your Nextcloud" : "Добавить в свой Nextcloud", @@ -419,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "Это остановит ваши текущие загрузки.", "Move or copy" : "Переместить или копировать", "You can upload into this folder" : "Вы можете загружать в этот каталог", + "Show list view" : "Просмотр списком", + "Show grid view" : "Просмотр сеткой", "No compatible server found at {remote}" : "Не найден совместимый сервер на {remote}", "Invalid server URL" : "Неверный URL сервера", "Failed to add the public link to your Nextcloud" : "Не удалось создать общедоступную ссылку", @@ -431,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Чтобы загрузить файлы, вам необходимо сначала указать свое имя.", "Enter your name" : "Введите своё имя", "Submit name" : "Отправить имя", + "Share note" : "Комментарий к общему ресурсу", + "Upload files to %s" : "Загрузка файлов в %s", + "%s shared a folder with you." : "%s поделился с вами папкой.", + "Note" : "Примечание", + "Select or drop files" : "Выберите или перетащите файлы", + "Uploading files" : "Загрузка файлов", + "Uploaded files:" : "Отправленные файлы:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Передачей файлов на сервер, вы принимаете %1$sусловия обслуживания%2$s.", "Name" : "Имя", "Share with accounts, teams, federated cloud id" : "Поделиться с учетными записями, командами, идентификатором федеративного облака", "Email, federated cloud id" : "Электронная почта, идентификатор федеративного облака", diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json index f570c39184c..e92a2f686e0 100644 --- a/apps/files_sharing/l10n/ru.json +++ b/apps/files_sharing/l10n/ru.json @@ -366,6 +366,7 @@ "List of unapproved shares." : "Список ресурсов общего доступа, которые вы еще не приняли", "No pending shares" : "Ожидающие общие ресурсы отсуствуют", "Shares you have received but not approved will show up here" : "Здесь появятся ресурсы общего доступа, которые Вам предоставлены, но еще не подтверждены с Вашей стороны", + "Error deleting the share: {errorMessage}" : "Ошибка при удалении общего ресурса: {errorMessage}", "Error deleting the share" : "Ошибка прекращения общего доступа", "Error updating the share: {errorMessage}" : "Не удалось изменить общий ресурс: {errorMessage}", "Error updating the share" : "Ошибка изменения параметров общего доступа", @@ -398,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "{owner} предоставил(а) доступ Вам и участникам круга «{circle}»", "Shared with you and the conversation {conversation} by {owner}" : "{owner} предоставил(а) доступ Вам и участникам беседы «{conversation}»", "Shared with you in a conversation by {owner}" : "Пользователь {owner} предоставил(а) Вам доступ во время беседы", - "Share note" : "Комментарий к общему ресурсу", - "Show list view" : "Просмотр списком", - "Show grid view" : "Просмотр сеткой", - "Upload files to %s" : "Загрузка файлов в %s", - "%s shared a folder with you." : "%s поделился с вами папкой.", - "Note" : "Примечание", - "Select or drop files" : "Выберите или перетащите файлы", - "Uploading files" : "Загрузка файлов", - "Uploaded files:" : "Отправленные файлы:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Передачей файлов на сервер, вы принимаете %1$sусловия обслуживания%2$s.", "Share not found" : "Ресурс с общим доступом не найден", "Back to %s" : "Вернуться к %s", "Add to your Nextcloud" : "Добавить в свой Nextcloud", @@ -417,6 +408,8 @@ "This will stop your current uploads." : "Это остановит ваши текущие загрузки.", "Move or copy" : "Переместить или копировать", "You can upload into this folder" : "Вы можете загружать в этот каталог", + "Show list view" : "Просмотр списком", + "Show grid view" : "Просмотр сеткой", "No compatible server found at {remote}" : "Не найден совместимый сервер на {remote}", "Invalid server URL" : "Неверный URL сервера", "Failed to add the public link to your Nextcloud" : "Не удалось создать общедоступную ссылку", @@ -429,6 +422,14 @@ "To upload files, you need to provide your name first." : "Чтобы загрузить файлы, вам необходимо сначала указать свое имя.", "Enter your name" : "Введите своё имя", "Submit name" : "Отправить имя", + "Share note" : "Комментарий к общему ресурсу", + "Upload files to %s" : "Загрузка файлов в %s", + "%s shared a folder with you." : "%s поделился с вами папкой.", + "Note" : "Примечание", + "Select or drop files" : "Выберите или перетащите файлы", + "Uploading files" : "Загрузка файлов", + "Uploaded files:" : "Отправленные файлы:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Передачей файлов на сервер, вы принимаете %1$sусловия обслуживания%2$s.", "Name" : "Имя", "Share with accounts, teams, federated cloud id" : "Поделиться с учетными записями, командами, идентификатором федеративного облака", "Email, federated cloud id" : "Электронная почта, идентификатор федеративного облака", diff --git a/apps/files_sharing/l10n/sc.js b/apps/files_sharing/l10n/sc.js index fd3d247f573..4cb45c45110 100644 --- a/apps/files_sharing/l10n/sc.js +++ b/apps/files_sharing/l10n/sc.js @@ -214,15 +214,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Cumpartzidu cun tegus {circle} dae {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Cumpartzidu cun tegus e sa resonada {conversation} dae {owner}", "Shared with you in a conversation by {owner}" : "Cumpartzidu cun tegus in una resonada dae {owner}", - "Share note" : "Cumpartzi sa nota", - "Show list view" : "Mustra sa visualizatzione de lista", - "Show grid view" : "Mustra sa visualizatzione de mosàicu", - "Upload files to %s" : "Càrriga archìvios in %s", - "Note" : "Nota", - "Select or drop files" : "Sèbera o iscapa archìvios", - "Uploading files" : "Carrighende archìvios", - "Uploaded files:" : "Archìvios carrigados:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Carrighende is archìvios, cuncordas cun is %1$scunditziones de servìtziu%2$s.", "Share not found" : "Cumpartzidura no agatada", "Back to %s" : "Torra a %s", "Add to your Nextcloud" : "Agiunghe a su Nextcloud tuo", @@ -232,6 +223,8 @@ OC.L10N.register( "This will stop your current uploads." : "Custu at a firmare is carrigamentos tuos atuales.", "Move or copy" : "Tràmuda o còpia", "You can upload into this folder" : "Podes carrigare in custa cartella", + "Show list view" : "Mustra sa visualizatzione de lista", + "Show grid view" : "Mustra sa visualizatzione de mosàicu", "No compatible server found at {remote}" : "Perunu serbidore cumpatìbile agatadu in {remote}", "Invalid server URL" : "URL de su serbidore non vàlidu", "Failed to add the public link to your Nextcloud" : "No at fatu a agiùnghere su ligòngiu pùblicu in Nextcloud", @@ -239,6 +232,13 @@ OC.L10N.register( "Search for share recipients" : "Chirca destinatàrios de cumpartziduras", "No recommendations. Start typing." : "Peruna racumandatzione. Cumintza a iscrìere.", "Enter your name" : "Inserta•nche su nùmene tuo", + "Share note" : "Cumpartzi sa nota", + "Upload files to %s" : "Càrriga archìvios in %s", + "Note" : "Nota", + "Select or drop files" : "Sèbera o iscapa archìvios", + "Uploading files" : "Carrighende archìvios", + "Uploaded files:" : "Archìvios carrigados:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Carrighende is archìvios, cuncordas cun is %1$scunditziones de servìtziu%2$s.", "Name" : "Nùmene" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/sc.json b/apps/files_sharing/l10n/sc.json index 3962119a2ef..857c7e762e1 100644 --- a/apps/files_sharing/l10n/sc.json +++ b/apps/files_sharing/l10n/sc.json @@ -212,15 +212,6 @@ "Shared with you and {circle} by {owner}" : "Cumpartzidu cun tegus {circle} dae {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Cumpartzidu cun tegus e sa resonada {conversation} dae {owner}", "Shared with you in a conversation by {owner}" : "Cumpartzidu cun tegus in una resonada dae {owner}", - "Share note" : "Cumpartzi sa nota", - "Show list view" : "Mustra sa visualizatzione de lista", - "Show grid view" : "Mustra sa visualizatzione de mosàicu", - "Upload files to %s" : "Càrriga archìvios in %s", - "Note" : "Nota", - "Select or drop files" : "Sèbera o iscapa archìvios", - "Uploading files" : "Carrighende archìvios", - "Uploaded files:" : "Archìvios carrigados:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Carrighende is archìvios, cuncordas cun is %1$scunditziones de servìtziu%2$s.", "Share not found" : "Cumpartzidura no agatada", "Back to %s" : "Torra a %s", "Add to your Nextcloud" : "Agiunghe a su Nextcloud tuo", @@ -230,6 +221,8 @@ "This will stop your current uploads." : "Custu at a firmare is carrigamentos tuos atuales.", "Move or copy" : "Tràmuda o còpia", "You can upload into this folder" : "Podes carrigare in custa cartella", + "Show list view" : "Mustra sa visualizatzione de lista", + "Show grid view" : "Mustra sa visualizatzione de mosàicu", "No compatible server found at {remote}" : "Perunu serbidore cumpatìbile agatadu in {remote}", "Invalid server URL" : "URL de su serbidore non vàlidu", "Failed to add the public link to your Nextcloud" : "No at fatu a agiùnghere su ligòngiu pùblicu in Nextcloud", @@ -237,6 +230,13 @@ "Search for share recipients" : "Chirca destinatàrios de cumpartziduras", "No recommendations. Start typing." : "Peruna racumandatzione. Cumintza a iscrìere.", "Enter your name" : "Inserta•nche su nùmene tuo", + "Share note" : "Cumpartzi sa nota", + "Upload files to %s" : "Càrriga archìvios in %s", + "Note" : "Nota", + "Select or drop files" : "Sèbera o iscapa archìvios", + "Uploading files" : "Carrighende archìvios", + "Uploaded files:" : "Archìvios carrigados:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Carrighende is archìvios, cuncordas cun is %1$scunditziones de servìtziu%2$s.", "Name" : "Nùmene" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/sk.js b/apps/files_sharing/l10n/sk.js index 4ee0e5e9722..fe7b83c3241 100644 --- a/apps/files_sharing/l10n/sk.js +++ b/apps/files_sharing/l10n/sk.js @@ -386,16 +386,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Sprístupnené vám a {circle} od {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Sprístupnené vám a rozhovoru {conversation} od {owner}", "Shared with you in a conversation by {owner}" : "Sprístupnené vám vrámci rozhovoru s {owner}", - "Share note" : "Poznámka k zdieľaniu", - "Show list view" : "Zobraziť ako zoznam", - "Show grid view" : "Zobraziť v mriežke", - "Upload files to %s" : "Nahrať súbory do %s", - "%s shared a folder with you." : "%s vám zozdieľal adresár.", - "Note" : "Poznámka", - "Select or drop files" : "Vyberte alebo položte súbory", - "Uploading files" : "Nahrávanie súborov", - "Uploaded files:" : "Nahrané súbory...", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Nahraním súborov vyjadrujete súhlas so všeobecnými podmienkami %1$s %2$s.", "Share not found" : "Zdieľanie sa nenašlo", "Back to %s" : "Späť na %s", "Add to your Nextcloud" : "Pridať do svojho Nextcloud", @@ -405,6 +395,8 @@ OC.L10N.register( "This will stop your current uploads." : "Toto zastaví práve prebiehajúce nahrávania.", "Move or copy" : "Presunúť alebo kopírovať", "You can upload into this folder" : "Môžete nahrávať do tohto priečinka", + "Show list view" : "Zobraziť ako zoznam", + "Show grid view" : "Zobraziť v mriežke", "No compatible server found at {remote}" : "Nebol nájdený kompatibilný server na adrese {remote}", "Invalid server URL" : "Neplatná URL servera", "Failed to add the public link to your Nextcloud" : "Pridanie verejne dostupného odkazu do vášho Nextcloud zlyhalo", @@ -417,6 +409,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Pre nahranie súborov, musíte najprv zdať svoje meno.", "Enter your name" : "Zadajte svoje meno", "Submit name" : "Odoslať meno", + "Share note" : "Poznámka k zdieľaniu", + "Upload files to %s" : "Nahrať súbory do %s", + "%s shared a folder with you." : "%s vám zozdieľal adresár.", + "Note" : "Poznámka", + "Select or drop files" : "Vyberte alebo položte súbory", + "Uploading files" : "Nahrávanie súborov", + "Uploaded files:" : "Nahrané súbory...", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Nahraním súborov vyjadrujete súhlas so všeobecnými podmienkami %1$s %2$s.", "Name" : "Názov", "Email, federated cloud id" : "E-mail, id federovaného cloudu", "Filename must not be empty." : "Názov súboru nesmie byť prázdny." diff --git a/apps/files_sharing/l10n/sk.json b/apps/files_sharing/l10n/sk.json index e735bd1c637..cddca62ea35 100644 --- a/apps/files_sharing/l10n/sk.json +++ b/apps/files_sharing/l10n/sk.json @@ -384,16 +384,6 @@ "Shared with you and {circle} by {owner}" : "Sprístupnené vám a {circle} od {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Sprístupnené vám a rozhovoru {conversation} od {owner}", "Shared with you in a conversation by {owner}" : "Sprístupnené vám vrámci rozhovoru s {owner}", - "Share note" : "Poznámka k zdieľaniu", - "Show list view" : "Zobraziť ako zoznam", - "Show grid view" : "Zobraziť v mriežke", - "Upload files to %s" : "Nahrať súbory do %s", - "%s shared a folder with you." : "%s vám zozdieľal adresár.", - "Note" : "Poznámka", - "Select or drop files" : "Vyberte alebo položte súbory", - "Uploading files" : "Nahrávanie súborov", - "Uploaded files:" : "Nahrané súbory...", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Nahraním súborov vyjadrujete súhlas so všeobecnými podmienkami %1$s %2$s.", "Share not found" : "Zdieľanie sa nenašlo", "Back to %s" : "Späť na %s", "Add to your Nextcloud" : "Pridať do svojho Nextcloud", @@ -403,6 +393,8 @@ "This will stop your current uploads." : "Toto zastaví práve prebiehajúce nahrávania.", "Move or copy" : "Presunúť alebo kopírovať", "You can upload into this folder" : "Môžete nahrávať do tohto priečinka", + "Show list view" : "Zobraziť ako zoznam", + "Show grid view" : "Zobraziť v mriežke", "No compatible server found at {remote}" : "Nebol nájdený kompatibilný server na adrese {remote}", "Invalid server URL" : "Neplatná URL servera", "Failed to add the public link to your Nextcloud" : "Pridanie verejne dostupného odkazu do vášho Nextcloud zlyhalo", @@ -415,6 +407,14 @@ "To upload files, you need to provide your name first." : "Pre nahranie súborov, musíte najprv zdať svoje meno.", "Enter your name" : "Zadajte svoje meno", "Submit name" : "Odoslať meno", + "Share note" : "Poznámka k zdieľaniu", + "Upload files to %s" : "Nahrať súbory do %s", + "%s shared a folder with you." : "%s vám zozdieľal adresár.", + "Note" : "Poznámka", + "Select or drop files" : "Vyberte alebo položte súbory", + "Uploading files" : "Nahrávanie súborov", + "Uploaded files:" : "Nahrané súbory...", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Nahraním súborov vyjadrujete súhlas so všeobecnými podmienkami %1$s %2$s.", "Name" : "Názov", "Email, federated cloud id" : "E-mail, id federovaného cloudu", "Filename must not be empty." : "Názov súboru nesmie byť prázdny." diff --git a/apps/files_sharing/l10n/sl.js b/apps/files_sharing/l10n/sl.js index 4927fca9f6b..0e36dbaffed 100644 --- a/apps/files_sharing/l10n/sl.js +++ b/apps/files_sharing/l10n/sl.js @@ -249,15 +249,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner} omogoči souporabo vam in članom kroga {circle}.", "Shared with you and the conversation {conversation} by {owner}" : "{owner} omogoči souporabo vam in udeležencem pogovora {conversation}.", "Shared with you in a conversation by {owner}" : "{owner} vam omogoči souporabo v pogovoru.", - "Share note" : "Omogoči souporabo zabeležke", - "Show list view" : "Pokaži seznamski pogled", - "Show grid view" : "Pokaži mrežni pogled", - "Upload files to %s" : "Pošlji datoteke v račun %s", - "Note" : "Opomba", - "Select or drop files" : "Izberte ali povlecite datoteke", - "Uploading files" : "Pošiljanje datotek", - "Uploaded files:" : "Poslane datoteke:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "S pošiljanjem datotek v oblak sprejemate tudi %1$spogoje uporabe storitve%2$s.", "Share not found" : "Mesta souporabe ni mogoče najti.", "Back to %s" : "Nazaj na %s", "Add to your Nextcloud" : "Dodaj v oblak Nextcloud", @@ -267,6 +258,8 @@ OC.L10N.register( "This will stop your current uploads." : "S tem bodo zaustavljena vsa pošiljanja v oblak.", "Move or copy" : "Premakni ali kopiraj", "You can upload into this folder" : "V to mapo je dovoljeno pošiljati datoteke", + "Show list view" : "Pokaži seznamski pogled", + "Show grid view" : "Pokaži mrežni pogled", "No compatible server found at {remote}" : "Skladnega strežnika na {remote} ni mogoče najti", "Invalid server URL" : "Neveljaven naslov URL strežnika", "Failed to add the public link to your Nextcloud" : "Dodajanje javne povezave v oblak je spodletelo.", @@ -275,6 +268,13 @@ OC.L10N.register( "Search for share recipients" : "Iskanje prejemnikov mesta souporabe", "No recommendations. Start typing." : "Ni priporočil; začnite vpisovati", "Enter your name" : "Vpišite ime", + "Share note" : "Omogoči souporabo zabeležke", + "Upload files to %s" : "Pošlji datoteke v račun %s", + "Note" : "Opomba", + "Select or drop files" : "Izberte ali povlecite datoteke", + "Uploading files" : "Pošiljanje datotek", + "Uploaded files:" : "Poslane datoteke:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "S pošiljanjem datotek v oblak sprejemate tudi %1$spogoje uporabe storitve%2$s.", "Name" : "Ime podpisnika", "Filename must not be empty." : "Ime datoteke ne sme biti prazno." }, diff --git a/apps/files_sharing/l10n/sl.json b/apps/files_sharing/l10n/sl.json index 9f7d5b5049b..549d7db271d 100644 --- a/apps/files_sharing/l10n/sl.json +++ b/apps/files_sharing/l10n/sl.json @@ -247,15 +247,6 @@ "Shared with you and {circle} by {owner}" : "{owner} omogoči souporabo vam in članom kroga {circle}.", "Shared with you and the conversation {conversation} by {owner}" : "{owner} omogoči souporabo vam in udeležencem pogovora {conversation}.", "Shared with you in a conversation by {owner}" : "{owner} vam omogoči souporabo v pogovoru.", - "Share note" : "Omogoči souporabo zabeležke", - "Show list view" : "Pokaži seznamski pogled", - "Show grid view" : "Pokaži mrežni pogled", - "Upload files to %s" : "Pošlji datoteke v račun %s", - "Note" : "Opomba", - "Select or drop files" : "Izberte ali povlecite datoteke", - "Uploading files" : "Pošiljanje datotek", - "Uploaded files:" : "Poslane datoteke:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "S pošiljanjem datotek v oblak sprejemate tudi %1$spogoje uporabe storitve%2$s.", "Share not found" : "Mesta souporabe ni mogoče najti.", "Back to %s" : "Nazaj na %s", "Add to your Nextcloud" : "Dodaj v oblak Nextcloud", @@ -265,6 +256,8 @@ "This will stop your current uploads." : "S tem bodo zaustavljena vsa pošiljanja v oblak.", "Move or copy" : "Premakni ali kopiraj", "You can upload into this folder" : "V to mapo je dovoljeno pošiljati datoteke", + "Show list view" : "Pokaži seznamski pogled", + "Show grid view" : "Pokaži mrežni pogled", "No compatible server found at {remote}" : "Skladnega strežnika na {remote} ni mogoče najti", "Invalid server URL" : "Neveljaven naslov URL strežnika", "Failed to add the public link to your Nextcloud" : "Dodajanje javne povezave v oblak je spodletelo.", @@ -273,6 +266,13 @@ "Search for share recipients" : "Iskanje prejemnikov mesta souporabe", "No recommendations. Start typing." : "Ni priporočil; začnite vpisovati", "Enter your name" : "Vpišite ime", + "Share note" : "Omogoči souporabo zabeležke", + "Upload files to %s" : "Pošlji datoteke v račun %s", + "Note" : "Opomba", + "Select or drop files" : "Izberte ali povlecite datoteke", + "Uploading files" : "Pošiljanje datotek", + "Uploaded files:" : "Poslane datoteke:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "S pošiljanjem datotek v oblak sprejemate tudi %1$spogoje uporabe storitve%2$s.", "Name" : "Ime podpisnika", "Filename must not be empty." : "Ime datoteke ne sme biti prazno." },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" diff --git a/apps/files_sharing/l10n/sr.js b/apps/files_sharing/l10n/sr.js index 06455f37c57..9dcb5a4196f 100644 --- a/apps/files_sharing/l10n/sr.js +++ b/apps/files_sharing/l10n/sr.js @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner} је поделио са Вама и кругом {circle}", "Shared with you and the conversation {conversation} by {owner}" : "{owner} је поделио са Вама и разговором {conversation}", "Shared with you in a conversation by {owner}" : "{owner} је поделио са Вама у разговору", - "Share note" : "Белешка дељења", - "Show list view" : "Prikaži prikaz liste", - "Show grid view" : "Prikaži prikaz mreže", - "Upload files to %s" : "Отпремите фајлове на%s", - "%s shared a folder with you." : "%s је са вама поделио фолдер.", - "Note" : "Белешка", - "Select or drop files" : "Одаберите или превуците фајлове", - "Uploading files" : "Отпремам фајлове", - "Uploaded files:" : "Отпремљени фајлови:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Отпремањем фајлова, слажете се са %1$sусловима коришћења%2$s.", "Share not found" : "Дељење није нађено", "Back to %s" : "Назад на %s", "Add to your Nextcloud" : "Додајте у свој облак", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "Ово ће да прекине тренутна отпремања.", "Move or copy" : "Помери или копирај", "You can upload into this folder" : "Можете да отпремате у ову фасциклу", + "Show list view" : "Prikaži prikaz liste", + "Show grid view" : "Prikaži prikaz mreže", "No compatible server found at {remote}" : "Нема компатибилног сервера на {remote}", "Invalid server URL" : "Неисправна адреса сервера", "Failed to add the public link to your Nextcloud" : "Неуспело додавање јавне везе ка Вашем Некстклауду", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Да бисте могли да отпремите фајлове, најпре наведите своје име.", "Enter your name" : "Унесите Ваше име", "Submit name" : "Поднеси име", + "Share note" : "Белешка дељења", + "Upload files to %s" : "Отпремите фајлове на%s", + "%s shared a folder with you." : "%s је са вама поделио фолдер.", + "Note" : "Белешка", + "Select or drop files" : "Одаберите или превуците фајлове", + "Uploading files" : "Отпремам фајлове", + "Uploaded files:" : "Отпремљени фајлови:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Отпремањем фајлова, слажете се са %1$sусловима коришћења%2$s.", "Name" : "Име", "Share with accounts, teams, federated cloud id" : "Дели са налозима, тимовима, id здруженог облака", "Email, federated cloud id" : "И-мејл, ID здруженог облака", diff --git a/apps/files_sharing/l10n/sr.json b/apps/files_sharing/l10n/sr.json index 3dbef9b71d0..289b841814b 100644 --- a/apps/files_sharing/l10n/sr.json +++ b/apps/files_sharing/l10n/sr.json @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "{owner} је поделио са Вама и кругом {circle}", "Shared with you and the conversation {conversation} by {owner}" : "{owner} је поделио са Вама и разговором {conversation}", "Shared with you in a conversation by {owner}" : "{owner} је поделио са Вама у разговору", - "Share note" : "Белешка дељења", - "Show list view" : "Prikaži prikaz liste", - "Show grid view" : "Prikaži prikaz mreže", - "Upload files to %s" : "Отпремите фајлове на%s", - "%s shared a folder with you." : "%s је са вама поделио фолдер.", - "Note" : "Белешка", - "Select or drop files" : "Одаберите или превуците фајлове", - "Uploading files" : "Отпремам фајлове", - "Uploaded files:" : "Отпремљени фајлови:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Отпремањем фајлова, слажете се са %1$sусловима коришћења%2$s.", "Share not found" : "Дељење није нађено", "Back to %s" : "Назад на %s", "Add to your Nextcloud" : "Додајте у свој облак", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "Ово ће да прекине тренутна отпремања.", "Move or copy" : "Помери или копирај", "You can upload into this folder" : "Можете да отпремате у ову фасциклу", + "Show list view" : "Prikaži prikaz liste", + "Show grid view" : "Prikaži prikaz mreže", "No compatible server found at {remote}" : "Нема компатибилног сервера на {remote}", "Invalid server URL" : "Неисправна адреса сервера", "Failed to add the public link to your Nextcloud" : "Неуспело додавање јавне везе ка Вашем Некстклауду", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "Да бисте могли да отпремите фајлове, најпре наведите своје име.", "Enter your name" : "Унесите Ваше име", "Submit name" : "Поднеси име", + "Share note" : "Белешка дељења", + "Upload files to %s" : "Отпремите фајлове на%s", + "%s shared a folder with you." : "%s је са вама поделио фолдер.", + "Note" : "Белешка", + "Select or drop files" : "Одаберите или превуците фајлове", + "Uploading files" : "Отпремам фајлове", + "Uploaded files:" : "Отпремљени фајлови:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Отпремањем фајлова, слажете се са %1$sусловима коришћења%2$s.", "Name" : "Име", "Share with accounts, teams, federated cloud id" : "Дели са налозима, тимовима, id здруженог облака", "Email, federated cloud id" : "И-мејл, ID здруженог облака", diff --git a/apps/files_sharing/l10n/sv.js b/apps/files_sharing/l10n/sv.js index f378ee9e6be..64231f3a248 100644 --- a/apps/files_sharing/l10n/sv.js +++ b/apps/files_sharing/l10n/sv.js @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Delad med dig och {circle} av {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Delad med dig och konversation {conversation} av {owner}", "Shared with you in a conversation by {owner}" : "Delad med dig i en konversation av {owner}", - "Share note" : "Dela kommentar", - "Show list view" : "Visa listvy", - "Show grid view" : "Visa rutnätsvy", - "Upload files to %s" : "Ladda upp filer till %s", - "%s shared a folder with you." : "%s delade en mapp med dig.", - "Note" : "Anteckning", - "Select or drop files" : "Välj eller dra filer hit", - "Uploading files" : "Laddar upp filer", - "Uploaded files:" : "Uppladdade filer:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Genom att ladda upp filer godkänner du %1$sanvändarvillkoren %2$s.", "Share not found" : "Delningen hittades inte", "Back to %s" : "Tillbaka till %s", "Add to your Nextcloud" : "Lägg till i molnet", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "Detta kommer att stoppa nuvarande uppladdningar.", "Move or copy" : "Flytta eller kopiera", "You can upload into this folder" : "Du kan ladda upp i denna mapp", + "Show list view" : "Visa listvy", + "Show grid view" : "Visa rutnätsvy", "No compatible server found at {remote}" : "Ingen kompatibel server hittad på {remote}", "Invalid server URL" : "Ogiltig serverwebbadress", "Failed to add the public link to your Nextcloud" : "Misslyckades skapa den offentliga delningslänken till ditt moln", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "För att ladda upp filer måste du först ange ditt namn.", "Enter your name" : "Ange ditt namn", "Submit name" : "Skicka namn", + "Share note" : "Dela kommentar", + "Upload files to %s" : "Ladda upp filer till %s", + "%s shared a folder with you." : "%s delade en mapp med dig.", + "Note" : "Anteckning", + "Select or drop files" : "Välj eller dra filer hit", + "Uploading files" : "Laddar upp filer", + "Uploaded files:" : "Uppladdade filer:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Genom att ladda upp filer godkänner du %1$sanvändarvillkoren %2$s.", "Name" : "Namn", "Share with accounts, teams, federated cloud id" : "Dela med konton, team, federerat moln-id", "Email, federated cloud id" : "E-post, federerat moln-id", diff --git a/apps/files_sharing/l10n/sv.json b/apps/files_sharing/l10n/sv.json index f6ab3c72b19..46574809f57 100644 --- a/apps/files_sharing/l10n/sv.json +++ b/apps/files_sharing/l10n/sv.json @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "Delad med dig och {circle} av {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Delad med dig och konversation {conversation} av {owner}", "Shared with you in a conversation by {owner}" : "Delad med dig i en konversation av {owner}", - "Share note" : "Dela kommentar", - "Show list view" : "Visa listvy", - "Show grid view" : "Visa rutnätsvy", - "Upload files to %s" : "Ladda upp filer till %s", - "%s shared a folder with you." : "%s delade en mapp med dig.", - "Note" : "Anteckning", - "Select or drop files" : "Välj eller dra filer hit", - "Uploading files" : "Laddar upp filer", - "Uploaded files:" : "Uppladdade filer:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Genom att ladda upp filer godkänner du %1$sanvändarvillkoren %2$s.", "Share not found" : "Delningen hittades inte", "Back to %s" : "Tillbaka till %s", "Add to your Nextcloud" : "Lägg till i molnet", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "Detta kommer att stoppa nuvarande uppladdningar.", "Move or copy" : "Flytta eller kopiera", "You can upload into this folder" : "Du kan ladda upp i denna mapp", + "Show list view" : "Visa listvy", + "Show grid view" : "Visa rutnätsvy", "No compatible server found at {remote}" : "Ingen kompatibel server hittad på {remote}", "Invalid server URL" : "Ogiltig serverwebbadress", "Failed to add the public link to your Nextcloud" : "Misslyckades skapa den offentliga delningslänken till ditt moln", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "För att ladda upp filer måste du först ange ditt namn.", "Enter your name" : "Ange ditt namn", "Submit name" : "Skicka namn", + "Share note" : "Dela kommentar", + "Upload files to %s" : "Ladda upp filer till %s", + "%s shared a folder with you." : "%s delade en mapp med dig.", + "Note" : "Anteckning", + "Select or drop files" : "Välj eller dra filer hit", + "Uploading files" : "Laddar upp filer", + "Uploaded files:" : "Uppladdade filer:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Genom att ladda upp filer godkänner du %1$sanvändarvillkoren %2$s.", "Name" : "Namn", "Share with accounts, teams, federated cloud id" : "Dela med konton, team, federerat moln-id", "Email, federated cloud id" : "E-post, federerat moln-id", diff --git a/apps/files_sharing/l10n/sw.js b/apps/files_sharing/l10n/sw.js index 35b61cfec59..b92adb4f8ca 100644 --- a/apps/files_sharing/l10n/sw.js +++ b/apps/files_sharing/l10n/sw.js @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : " Imeshirikiwa na wewe na{circle} kwa {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Imeshirikiwa nawe na mazungumzo {conversation} kwa {owner}", "Shared with you in a conversation by {owner}" : " Imeshirikiwa nawe kwenye mazungumzo na{owner}", - "Share note" : "Shiriki dokezo", - "Show list view" : "Onesha mwonekeno wa orodha", - "Show grid view" : "Onesha mwonekano wa mstariramani", - "Upload files to %s" : "Pakia faili kwa %s", - "%s shared a folder with you." : "%s ameshiriki folda nawe.", - "Note" : "Dokezo", - "Select or drop files" : "Chagua au udondoshe faili", - "Uploading files" : "Inapakia faili", - "Uploaded files:" : "Faili zilizopakiwa:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Kwa kupakia faili, unakubali %1$s masharti ya huduma %2$s.", "Share not found" : "Ushirikishaji haupo", "Back to %s" : "Rudi kwenye %s", "Add to your Nextcloud" : "Ongeza kwenye Nextcloud yako", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "Hii itasimamisha ukakiaji wako wa sasa", "Move or copy" : "Hamisha au nakili", "You can upload into this folder" : "Unaweza kupakia kwenye folda hii", + "Show list view" : "Onesha mwonekeno wa orodha", + "Show grid view" : "Onesha mwonekano wa mstariramani", "No compatible server found at {remote}" : "Hakuna seva inayolingana iliyopatikana katika {remote}", "Invalid server URL" : "URL ya seva si sahihi", "Failed to add the public link to your Nextcloud" : "Imeshindwa kuongeza kiungio cha jamii kwenye Nextcloud yako", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Ili kupakia faili, unahitaji kutoa jina lako kwanza.", "Enter your name" : "Ingiza jina lako ", "Submit name" : "Wasilisha jina", + "Share note" : "Shiriki dokezo", + "Upload files to %s" : "Pakia faili kwa %s", + "%s shared a folder with you." : "%s ameshiriki folda nawe.", + "Note" : "Dokezo", + "Select or drop files" : "Chagua au udondoshe faili", + "Uploading files" : "Inapakia faili", + "Uploaded files:" : "Faili zilizopakiwa:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Kwa kupakia faili, unakubali %1$s masharti ya huduma %2$s.", "Name" : "Jina", "Share with accounts, teams, federated cloud id" : "Shiriki na akaunti, timu, kitambulisho cha Cloud kilichoshirikishwa", "Email, federated cloud id" : "Barua pepe, kitambulisho cha Cloud kilichoshirikishwa", diff --git a/apps/files_sharing/l10n/sw.json b/apps/files_sharing/l10n/sw.json index 7162f289e2c..b8c4da07c60 100644 --- a/apps/files_sharing/l10n/sw.json +++ b/apps/files_sharing/l10n/sw.json @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : " Imeshirikiwa na wewe na{circle} kwa {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Imeshirikiwa nawe na mazungumzo {conversation} kwa {owner}", "Shared with you in a conversation by {owner}" : " Imeshirikiwa nawe kwenye mazungumzo na{owner}", - "Share note" : "Shiriki dokezo", - "Show list view" : "Onesha mwonekeno wa orodha", - "Show grid view" : "Onesha mwonekano wa mstariramani", - "Upload files to %s" : "Pakia faili kwa %s", - "%s shared a folder with you." : "%s ameshiriki folda nawe.", - "Note" : "Dokezo", - "Select or drop files" : "Chagua au udondoshe faili", - "Uploading files" : "Inapakia faili", - "Uploaded files:" : "Faili zilizopakiwa:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Kwa kupakia faili, unakubali %1$s masharti ya huduma %2$s.", "Share not found" : "Ushirikishaji haupo", "Back to %s" : "Rudi kwenye %s", "Add to your Nextcloud" : "Ongeza kwenye Nextcloud yako", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "Hii itasimamisha ukakiaji wako wa sasa", "Move or copy" : "Hamisha au nakili", "You can upload into this folder" : "Unaweza kupakia kwenye folda hii", + "Show list view" : "Onesha mwonekeno wa orodha", + "Show grid view" : "Onesha mwonekano wa mstariramani", "No compatible server found at {remote}" : "Hakuna seva inayolingana iliyopatikana katika {remote}", "Invalid server URL" : "URL ya seva si sahihi", "Failed to add the public link to your Nextcloud" : "Imeshindwa kuongeza kiungio cha jamii kwenye Nextcloud yako", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "Ili kupakia faili, unahitaji kutoa jina lako kwanza.", "Enter your name" : "Ingiza jina lako ", "Submit name" : "Wasilisha jina", + "Share note" : "Shiriki dokezo", + "Upload files to %s" : "Pakia faili kwa %s", + "%s shared a folder with you." : "%s ameshiriki folda nawe.", + "Note" : "Dokezo", + "Select or drop files" : "Chagua au udondoshe faili", + "Uploading files" : "Inapakia faili", + "Uploaded files:" : "Faili zilizopakiwa:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Kwa kupakia faili, unakubali %1$s masharti ya huduma %2$s.", "Name" : "Jina", "Share with accounts, teams, federated cloud id" : "Shiriki na akaunti, timu, kitambulisho cha Cloud kilichoshirikishwa", "Email, federated cloud id" : "Barua pepe, kitambulisho cha Cloud kilichoshirikishwa", diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js index d4b3d519b7d..9b48f187e49 100644 --- a/apps/files_sharing/l10n/tr.js +++ b/apps/files_sharing/l10n/tr.js @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner} tarafından sizinle ve {circle} takımı ile paylaşılmış", "Shared with you and the conversation {conversation} by {owner}" : "{owner} tarafından sizinle ve {conversation} görüşmesi ile paylaştırılmış", "Shared with you in a conversation by {owner}" : "{owner} tarafından sizinle bir görüşmede paylaşılmış", - "Share note" : "Notu paylaş", - "Show list view" : "Liste görünümüne geç", - "Show grid view" : "Tablo görünümüne geç", - "Upload files to %s" : "Dosyaları %s konumuna yükle", - "%s shared a folder with you." : "%s sizinle bir klasör paylaştı.", - "Note" : "Not", - "Select or drop files" : "Dosyaları seçin ya da sürükleyip bırakın", - "Uploading files" : "Dosyalar yükleniyor", - "Uploaded files:" : "Yüklenmiş dosyalar:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Dosya yükleyerek %1$shizmet koşullarını%2$s kabul etmiş olursunuz.", "Share not found" : "Paylaşım bulunamadı", "Back to %s" : "%s sayfasına dön", "Add to your Nextcloud" : "Nextcloud hesabınıza ekleyin", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "Bu işlem geçerli yüklemeleri durduracak.", "Move or copy" : "Taşı ya da kopyala", "You can upload into this folder" : "Bu klasöre yükleme yapabilirsiniz", + "Show list view" : "Liste görünümüne geç", + "Show grid view" : "Tablo görünümüne geç", "No compatible server found at {remote}" : "{remote} konumunda uyumlu sunucu bulunamadı", "Invalid server URL" : "Sunucu adresi geçersiz", "Failed to add the public link to your Nextcloud" : "Herkese açık bağlantı Nextcould üzerine eklenemedi", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Dosyaları yükleyebilmek için önce adınızı yazmalısınız.", "Enter your name" : "Adınızı yazın", "Submit name" : "Adı gönder", + "Share note" : "Notu paylaş", + "Upload files to %s" : "Dosyaları %s konumuna yükle", + "%s shared a folder with you." : "%s sizinle bir klasör paylaştı.", + "Note" : "Not", + "Select or drop files" : "Dosyaları seçin ya da sürükleyip bırakın", + "Uploading files" : "Dosyalar yükleniyor", + "Uploaded files:" : "Yüklenmiş dosyalar:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Dosya yükleyerek %1$shizmet koşullarını%2$s kabul etmiş olursunuz.", "Name" : "Ad", "Share with accounts, teams, federated cloud id" : "Hesaplar, takımlar ve birleşik bulut kimlikleri ile paylaşın", "Email, federated cloud id" : "E-posta adresi, birleşik bulut kimliği", diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json index 119bce79875..315949ca7d0 100644 --- a/apps/files_sharing/l10n/tr.json +++ b/apps/files_sharing/l10n/tr.json @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "{owner} tarafından sizinle ve {circle} takımı ile paylaşılmış", "Shared with you and the conversation {conversation} by {owner}" : "{owner} tarafından sizinle ve {conversation} görüşmesi ile paylaştırılmış", "Shared with you in a conversation by {owner}" : "{owner} tarafından sizinle bir görüşmede paylaşılmış", - "Share note" : "Notu paylaş", - "Show list view" : "Liste görünümüne geç", - "Show grid view" : "Tablo görünümüne geç", - "Upload files to %s" : "Dosyaları %s konumuna yükle", - "%s shared a folder with you." : "%s sizinle bir klasör paylaştı.", - "Note" : "Not", - "Select or drop files" : "Dosyaları seçin ya da sürükleyip bırakın", - "Uploading files" : "Dosyalar yükleniyor", - "Uploaded files:" : "Yüklenmiş dosyalar:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Dosya yükleyerek %1$shizmet koşullarını%2$s kabul etmiş olursunuz.", "Share not found" : "Paylaşım bulunamadı", "Back to %s" : "%s sayfasına dön", "Add to your Nextcloud" : "Nextcloud hesabınıza ekleyin", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "Bu işlem geçerli yüklemeleri durduracak.", "Move or copy" : "Taşı ya da kopyala", "You can upload into this folder" : "Bu klasöre yükleme yapabilirsiniz", + "Show list view" : "Liste görünümüne geç", + "Show grid view" : "Tablo görünümüne geç", "No compatible server found at {remote}" : "{remote} konumunda uyumlu sunucu bulunamadı", "Invalid server URL" : "Sunucu adresi geçersiz", "Failed to add the public link to your Nextcloud" : "Herkese açık bağlantı Nextcould üzerine eklenemedi", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "Dosyaları yükleyebilmek için önce adınızı yazmalısınız.", "Enter your name" : "Adınızı yazın", "Submit name" : "Adı gönder", + "Share note" : "Notu paylaş", + "Upload files to %s" : "Dosyaları %s konumuna yükle", + "%s shared a folder with you." : "%s sizinle bir klasör paylaştı.", + "Note" : "Not", + "Select or drop files" : "Dosyaları seçin ya da sürükleyip bırakın", + "Uploading files" : "Dosyalar yükleniyor", + "Uploaded files:" : "Yüklenmiş dosyalar:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Dosya yükleyerek %1$shizmet koşullarını%2$s kabul etmiş olursunuz.", "Name" : "Ad", "Share with accounts, teams, federated cloud id" : "Hesaplar, takımlar ve birleşik bulut kimlikleri ile paylaşın", "Email, federated cloud id" : "E-posta adresi, birleşik bulut kimliği", diff --git a/apps/files_sharing/l10n/ug.js b/apps/files_sharing/l10n/ug.js index 2eab79f6f98..07ed931958d 100644 --- a/apps/files_sharing/l10n/ug.js +++ b/apps/files_sharing/l10n/ug.js @@ -349,16 +349,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "سىز بىلەن ھەمبەھىرلەنگەن {circle} {owner}", "Shared with you and the conversation {conversation} by {owner}" : "سىز بىلەن ھەمبەھىرلەنگەن سۆھبەت {conversation} {owner} تەرىپىدىن", "Shared with you in a conversation by {owner}" : "{owner} نىڭ سۆھبىتىدە سىز بىلەن ئورتاقلاشتى", - "Share note" : "ئورتاقلىشىش خاتىرىسى", - "Show list view" : "تىزىملىك كۆرۈنۈشىنى كۆرسىتىش", - "Show grid view" : "كاتەكچە كۆرۈنۈشنى كۆرسىتىش", - "Upload files to %s" : "ھۆججەتلەرنى% s غا يۈكلەڭ", - "%s shared a folder with you." : "% s ھۆججەت قىسقۇچنى سىز بىلەن ئورتاقلاشتى.", - "Note" : "دىققەت", - "Select or drop files" : "ھۆججەتلەرنى تاللاڭ ياكى تاشلاڭ", - "Uploading files" : "ھۆججەتلەرنى يۈكلەش", - "Uploaded files:" : "يۈكلەنگەن ھۆججەتلەر:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "ھۆججەت يوللاش ئارقىلىق%1 $ مۇلازىمەتنىڭ%2 $ s گە قوشۇلىسىز.", "Share not found" : "ھەمبەھىر تېپىلمىدى", "Back to %s" : "% S گە قايتىش", "Add to your Nextcloud" : "Nextcloud غا قوشۇڭ", @@ -368,6 +358,8 @@ OC.L10N.register( "This will stop your current uploads." : "بۇ سىزنىڭ نۆۋەتتىكى يۈكلىنىشىڭىزنى توختىتىدۇ.", "Move or copy" : "يۆتكەش ياكى كۆچۈرۈش", "You can upload into this folder" : "بۇ ھۆججەت قىسقۇچقا يۈكلىسىڭىز بولىدۇ", + "Show list view" : "تىزىملىك كۆرۈنۈشىنى كۆرسىتىش", + "Show grid view" : "كاتەكچە كۆرۈنۈشنى كۆرسىتىش", "No compatible server found at {remote}" : "{remote} ماس كېلىدىغان مۇلازىمېتىر تېپىلمىدى", "Invalid server URL" : "مۇلازىمېتىر URL ئىناۋەتسىز", "Failed to add the public link to your Nextcloud" : "Nextcloud غا ئاممىۋى ئۇلىنىشنى قوشالمىدى", @@ -378,6 +370,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "ھۆججەتلەرنى يوللاش ئۈچۈن ئالدى بىلەن ئىسمىڭىزنى تەمىنلىشىڭىز كېرەك.", "Enter your name" : "ئىسمىڭىزنى كىرگۈزۈڭ", "Submit name" : "ئىسىم يوللاڭ", + "Share note" : "ئورتاقلىشىش خاتىرىسى", + "Upload files to %s" : "ھۆججەتلەرنى% s غا يۈكلەڭ", + "%s shared a folder with you." : "% s ھۆججەت قىسقۇچنى سىز بىلەن ئورتاقلاشتى.", + "Note" : "دىققەت", + "Select or drop files" : "ھۆججەتلەرنى تاللاڭ ياكى تاشلاڭ", + "Uploading files" : "ھۆججەتلەرنى يۈكلەش", + "Uploaded files:" : "يۈكلەنگەن ھۆججەتلەر:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "ھۆججەت يوللاش ئارقىلىق%1 $ مۇلازىمەتنىڭ%2 $ s گە قوشۇلىسىز.", "Name" : "ئاتى", "Filename must not be empty." : "ھۆججەت ئىسمى بوش بولماسلىقى كېرەك." }, diff --git a/apps/files_sharing/l10n/ug.json b/apps/files_sharing/l10n/ug.json index fc8a8a3d907..228e3144714 100644 --- a/apps/files_sharing/l10n/ug.json +++ b/apps/files_sharing/l10n/ug.json @@ -347,16 +347,6 @@ "Shared with you and {circle} by {owner}" : "سىز بىلەن ھەمبەھىرلەنگەن {circle} {owner}", "Shared with you and the conversation {conversation} by {owner}" : "سىز بىلەن ھەمبەھىرلەنگەن سۆھبەت {conversation} {owner} تەرىپىدىن", "Shared with you in a conversation by {owner}" : "{owner} نىڭ سۆھبىتىدە سىز بىلەن ئورتاقلاشتى", - "Share note" : "ئورتاقلىشىش خاتىرىسى", - "Show list view" : "تىزىملىك كۆرۈنۈشىنى كۆرسىتىش", - "Show grid view" : "كاتەكچە كۆرۈنۈشنى كۆرسىتىش", - "Upload files to %s" : "ھۆججەتلەرنى% s غا يۈكلەڭ", - "%s shared a folder with you." : "% s ھۆججەت قىسقۇچنى سىز بىلەن ئورتاقلاشتى.", - "Note" : "دىققەت", - "Select or drop files" : "ھۆججەتلەرنى تاللاڭ ياكى تاشلاڭ", - "Uploading files" : "ھۆججەتلەرنى يۈكلەش", - "Uploaded files:" : "يۈكلەنگەن ھۆججەتلەر:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "ھۆججەت يوللاش ئارقىلىق%1 $ مۇلازىمەتنىڭ%2 $ s گە قوشۇلىسىز.", "Share not found" : "ھەمبەھىر تېپىلمىدى", "Back to %s" : "% S گە قايتىش", "Add to your Nextcloud" : "Nextcloud غا قوشۇڭ", @@ -366,6 +356,8 @@ "This will stop your current uploads." : "بۇ سىزنىڭ نۆۋەتتىكى يۈكلىنىشىڭىزنى توختىتىدۇ.", "Move or copy" : "يۆتكەش ياكى كۆچۈرۈش", "You can upload into this folder" : "بۇ ھۆججەت قىسقۇچقا يۈكلىسىڭىز بولىدۇ", + "Show list view" : "تىزىملىك كۆرۈنۈشىنى كۆرسىتىش", + "Show grid view" : "كاتەكچە كۆرۈنۈشنى كۆرسىتىش", "No compatible server found at {remote}" : "{remote} ماس كېلىدىغان مۇلازىمېتىر تېپىلمىدى", "Invalid server URL" : "مۇلازىمېتىر URL ئىناۋەتسىز", "Failed to add the public link to your Nextcloud" : "Nextcloud غا ئاممىۋى ئۇلىنىشنى قوشالمىدى", @@ -376,6 +368,14 @@ "To upload files, you need to provide your name first." : "ھۆججەتلەرنى يوللاش ئۈچۈن ئالدى بىلەن ئىسمىڭىزنى تەمىنلىشىڭىز كېرەك.", "Enter your name" : "ئىسمىڭىزنى كىرگۈزۈڭ", "Submit name" : "ئىسىم يوللاڭ", + "Share note" : "ئورتاقلىشىش خاتىرىسى", + "Upload files to %s" : "ھۆججەتلەرنى% s غا يۈكلەڭ", + "%s shared a folder with you." : "% s ھۆججەت قىسقۇچنى سىز بىلەن ئورتاقلاشتى.", + "Note" : "دىققەت", + "Select or drop files" : "ھۆججەتلەرنى تاللاڭ ياكى تاشلاڭ", + "Uploading files" : "ھۆججەتلەرنى يۈكلەش", + "Uploaded files:" : "يۈكلەنگەن ھۆججەتلەر:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "ھۆججەت يوللاش ئارقىلىق%1 $ مۇلازىمەتنىڭ%2 $ s گە قوشۇلىسىز.", "Name" : "ئاتى", "Filename must not be empty." : "ھۆججەت ئىسمى بوش بولماسلىقى كېرەك." },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_sharing/l10n/uk.js b/apps/files_sharing/l10n/uk.js index ace63ae6a4a..03d3d5eb8fb 100644 --- a/apps/files_sharing/l10n/uk.js +++ b/apps/files_sharing/l10n/uk.js @@ -116,6 +116,7 @@ OC.L10N.register( "Remember to upload the files to %s" : "Пам'ятати про завантаження файлів до %s", "We would like to kindly remind you that you have not yet uploaded any files to the shared folder." : "Нагадування про те, що ви ще не завантажили жодного файлу до спільного каталогу.", "Open \"%s\"" : "Відкрити \"%s\"", + "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Ця програма дозволяє користувачам обмінюватися файлами в Nextcloud. Якщо ця функція увімкнена, адміністратор може вибрати, які групи можуть обмінюватися файлами. Відповідні користувачі можуть обмінюватися файлами та каталогами з іншими обліковими записами та групами в Nextcloud. Крім того, якщо адміністратор увімкне функцію спільного доступу за посиланням, зовнішнє посилання можна використовувати для обміну файлами з іншими людьми поза Nextcloud. Адміністратори також можуть встановлювати паролі, терміни дії та вмикати обмін між серверами за допомогою посилань для спільного доступу, а також обмін з мобільних пристроїв.\n\nВимкнення цієї функції видаляє спільні файли та каталоги на сервері для всіх одержувачів спільного доступу, а також на клієнтах синхронізації та в мобільних додатках. Більше інформації можна знайти в документації Nextcloud.", "People" : "Користувачі", "Filter accounts" : "Вибрати користувачів", "The request will expire on {date} at midnight and will be password protected." : "Термін дії запиту спливе опівночі {date}, запит буде захищено паролем. ", @@ -400,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner} надав доступ вам та колу {circle}", "Shared with you and the conversation {conversation} by {owner}" : "{owner} надав доступ вам та у чаті {conversation}", "Shared with you in a conversation by {owner}" : "{owner} поділив(-ла-)ся з вами у чаті", - "Share note" : "Поділитися нотаткою", - "Show list view" : "Подання списком", - "Show grid view" : "Подання сіткою", - "Upload files to %s" : "Завантажити файли до %s", - "%s shared a folder with you." : "%s поділив(-ла)ся з вами каталогом.", - "Note" : "Нотатка", - "Select or drop files" : "Вибрати або перетягнути файли", - "Uploading files" : "Завантаження файлів", - "Uploaded files:" : "Завантажені файли:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Завантажуючи файли, ви погоджуєтеся з %1$sумовами користування%2$s.", "Share not found" : "Спільний ресурс не знайдено", "Back to %s" : "Назад до %s", "Add to your Nextcloud" : "Додати до вашої хмари Nextcloud", @@ -419,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "Ця дія призведе до зупинки поточних завантажень на сервер.", "Move or copy" : "Перемістити або копіювати", "You can upload into this folder" : "Ви можете завантажити до цього каталогу", + "Show list view" : "Подання списком", + "Show grid view" : "Подання сіткою", "No compatible server found at {remote}" : "Відсутній сумісний сервер за адресою {remote}", "Invalid server URL" : "Недійсна адреса сервера URL", "Failed to add the public link to your Nextcloud" : "Не вдалося додати публічне посилання до вашого Nextcloud", @@ -431,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "Щоби завантажити файли, спочатку зазначте ваше ім'я.", "Enter your name" : "Зазначте ваше ім'я", "Submit name" : "Надайте ім'я", + "Share note" : "Поділитися нотаткою", + "Upload files to %s" : "Завантажити файли до %s", + "%s shared a folder with you." : "%s поділив(-ла)ся з вами каталогом.", + "Note" : "Нотатка", + "Select or drop files" : "Вибрати або перетягнути файли", + "Uploading files" : "Завантаження файлів", + "Uploaded files:" : "Завантажені файли:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Завантажуючи файли, ви погоджуєтеся з %1$sумовами користування%2$s.", "Name" : "Назва", "Share with accounts, teams, federated cloud id" : "Поділитися з користувачами, командами, ID об'єднаних хмар", "Email, federated cloud id" : "Ел.пошта, ідентифікатор об'єднаної хмари", diff --git a/apps/files_sharing/l10n/uk.json b/apps/files_sharing/l10n/uk.json index 3af74737035..e3a73695290 100644 --- a/apps/files_sharing/l10n/uk.json +++ b/apps/files_sharing/l10n/uk.json @@ -114,6 +114,7 @@ "Remember to upload the files to %s" : "Пам'ятати про завантаження файлів до %s", "We would like to kindly remind you that you have not yet uploaded any files to the shared folder." : "Нагадування про те, що ви ще не завантажили жодного файлу до спільного каталогу.", "Open \"%s\"" : "Відкрити \"%s\"", + "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Ця програма дозволяє користувачам обмінюватися файлами в Nextcloud. Якщо ця функція увімкнена, адміністратор може вибрати, які групи можуть обмінюватися файлами. Відповідні користувачі можуть обмінюватися файлами та каталогами з іншими обліковими записами та групами в Nextcloud. Крім того, якщо адміністратор увімкне функцію спільного доступу за посиланням, зовнішнє посилання можна використовувати для обміну файлами з іншими людьми поза Nextcloud. Адміністратори також можуть встановлювати паролі, терміни дії та вмикати обмін між серверами за допомогою посилань для спільного доступу, а також обмін з мобільних пристроїв.\n\nВимкнення цієї функції видаляє спільні файли та каталоги на сервері для всіх одержувачів спільного доступу, а також на клієнтах синхронізації та в мобільних додатках. Більше інформації можна знайти в документації Nextcloud.", "People" : "Користувачі", "Filter accounts" : "Вибрати користувачів", "The request will expire on {date} at midnight and will be password protected." : "Термін дії запиту спливе опівночі {date}, запит буде захищено паролем. ", @@ -398,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "{owner} надав доступ вам та колу {circle}", "Shared with you and the conversation {conversation} by {owner}" : "{owner} надав доступ вам та у чаті {conversation}", "Shared with you in a conversation by {owner}" : "{owner} поділив(-ла-)ся з вами у чаті", - "Share note" : "Поділитися нотаткою", - "Show list view" : "Подання списком", - "Show grid view" : "Подання сіткою", - "Upload files to %s" : "Завантажити файли до %s", - "%s shared a folder with you." : "%s поділив(-ла)ся з вами каталогом.", - "Note" : "Нотатка", - "Select or drop files" : "Вибрати або перетягнути файли", - "Uploading files" : "Завантаження файлів", - "Uploaded files:" : "Завантажені файли:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Завантажуючи файли, ви погоджуєтеся з %1$sумовами користування%2$s.", "Share not found" : "Спільний ресурс не знайдено", "Back to %s" : "Назад до %s", "Add to your Nextcloud" : "Додати до вашої хмари Nextcloud", @@ -417,6 +408,8 @@ "This will stop your current uploads." : "Ця дія призведе до зупинки поточних завантажень на сервер.", "Move or copy" : "Перемістити або копіювати", "You can upload into this folder" : "Ви можете завантажити до цього каталогу", + "Show list view" : "Подання списком", + "Show grid view" : "Подання сіткою", "No compatible server found at {remote}" : "Відсутній сумісний сервер за адресою {remote}", "Invalid server URL" : "Недійсна адреса сервера URL", "Failed to add the public link to your Nextcloud" : "Не вдалося додати публічне посилання до вашого Nextcloud", @@ -429,6 +422,14 @@ "To upload files, you need to provide your name first." : "Щоби завантажити файли, спочатку зазначте ваше ім'я.", "Enter your name" : "Зазначте ваше ім'я", "Submit name" : "Надайте ім'я", + "Share note" : "Поділитися нотаткою", + "Upload files to %s" : "Завантажити файли до %s", + "%s shared a folder with you." : "%s поділив(-ла)ся з вами каталогом.", + "Note" : "Нотатка", + "Select or drop files" : "Вибрати або перетягнути файли", + "Uploading files" : "Завантаження файлів", + "Uploaded files:" : "Завантажені файли:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Завантажуючи файли, ви погоджуєтеся з %1$sумовами користування%2$s.", "Name" : "Назва", "Share with accounts, teams, federated cloud id" : "Поділитися з користувачами, командами, ID об'єднаних хмар", "Email, federated cloud id" : "Ел.пошта, ідентифікатор об'єднаної хмари", diff --git a/apps/files_sharing/l10n/vi.js b/apps/files_sharing/l10n/vi.js index 8d512daae9e..b586e2464bd 100644 --- a/apps/files_sharing/l10n/vi.js +++ b/apps/files_sharing/l10n/vi.js @@ -240,15 +240,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "Được chia sẻ với bạn và {circle} bởi {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Được chia sẻ với bạn và cuộc trò chuyện {conversation} của {owner}", "Shared with you in a conversation by {owner}" : "Được chia sẻ với bạn trong cuộc trò chuyện bởi {owner}", - "Share note" : "Chia sẻ ghi chú", - "Show list view" : "Hiển thị chế độ xem danh sách", - "Show grid view" : "Hiển thị chế độ xem lưới", - "Upload files to %s" : "Tải tệp lên %s", - "Note" : "Ghi chú", - "Select or drop files" : "Chọn hoặc thả tập tin", - "Uploading files" : "Đang tải tập tin lên", - "Uploaded files:" : "Tập tin đã được tải lên:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Bằng cách tải tệp lên, bạn đồng ý với %1$sđiều khoản dịch vụ%2$s.", "Share not found" : "Không tìm thấy chia sẻ.", "Back to %s" : "Quay lại %s", "Add to your Nextcloud" : "Thêm vào Nextcloud của bạn", @@ -258,12 +249,21 @@ OC.L10N.register( "This will stop your current uploads." : "Hành động này sẽ dừng các tải lên hiện hành.", "Move or copy" : "Di chuyển hoặc sao chép", "You can upload into this folder" : "Tải lên thư mục này", + "Show list view" : "Hiển thị chế độ xem danh sách", + "Show grid view" : "Hiển thị chế độ xem lưới", "No compatible server found at {remote}" : "Máy chủ không tương thích được tìm thấy tại {remote}", "Invalid server URL" : "URL máy chủ không hợp lệ", "Failed to add the public link to your Nextcloud" : "Không thể thêm liên kết công khai", "Download all files" : "Tải xuống tất cả các tập tin", "Search for share recipients" : "Tìm kiếm người nhận chia sẻ", "No recommendations. Start typing." : "Không có khuyến nghị. Bắt đầu gõ.", + "Share note" : "Chia sẻ ghi chú", + "Upload files to %s" : "Tải tệp lên %s", + "Note" : "Ghi chú", + "Select or drop files" : "Chọn hoặc thả tập tin", + "Uploading files" : "Đang tải tập tin lên", + "Uploaded files:" : "Tập tin đã được tải lên:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Bằng cách tải tệp lên, bạn đồng ý với %1$sđiều khoản dịch vụ%2$s.", "Name" : "Tên", "Filename must not be empty." : "Tên tập tin không thể trống" }, diff --git a/apps/files_sharing/l10n/vi.json b/apps/files_sharing/l10n/vi.json index 9a9adbcb67f..f6ef616aa7e 100644 --- a/apps/files_sharing/l10n/vi.json +++ b/apps/files_sharing/l10n/vi.json @@ -238,15 +238,6 @@ "Shared with you and {circle} by {owner}" : "Được chia sẻ với bạn và {circle} bởi {owner}", "Shared with you and the conversation {conversation} by {owner}" : "Được chia sẻ với bạn và cuộc trò chuyện {conversation} của {owner}", "Shared with you in a conversation by {owner}" : "Được chia sẻ với bạn trong cuộc trò chuyện bởi {owner}", - "Share note" : "Chia sẻ ghi chú", - "Show list view" : "Hiển thị chế độ xem danh sách", - "Show grid view" : "Hiển thị chế độ xem lưới", - "Upload files to %s" : "Tải tệp lên %s", - "Note" : "Ghi chú", - "Select or drop files" : "Chọn hoặc thả tập tin", - "Uploading files" : "Đang tải tập tin lên", - "Uploaded files:" : "Tập tin đã được tải lên:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Bằng cách tải tệp lên, bạn đồng ý với %1$sđiều khoản dịch vụ%2$s.", "Share not found" : "Không tìm thấy chia sẻ.", "Back to %s" : "Quay lại %s", "Add to your Nextcloud" : "Thêm vào Nextcloud của bạn", @@ -256,12 +247,21 @@ "This will stop your current uploads." : "Hành động này sẽ dừng các tải lên hiện hành.", "Move or copy" : "Di chuyển hoặc sao chép", "You can upload into this folder" : "Tải lên thư mục này", + "Show list view" : "Hiển thị chế độ xem danh sách", + "Show grid view" : "Hiển thị chế độ xem lưới", "No compatible server found at {remote}" : "Máy chủ không tương thích được tìm thấy tại {remote}", "Invalid server URL" : "URL máy chủ không hợp lệ", "Failed to add the public link to your Nextcloud" : "Không thể thêm liên kết công khai", "Download all files" : "Tải xuống tất cả các tập tin", "Search for share recipients" : "Tìm kiếm người nhận chia sẻ", "No recommendations. Start typing." : "Không có khuyến nghị. Bắt đầu gõ.", + "Share note" : "Chia sẻ ghi chú", + "Upload files to %s" : "Tải tệp lên %s", + "Note" : "Ghi chú", + "Select or drop files" : "Chọn hoặc thả tập tin", + "Uploading files" : "Đang tải tập tin lên", + "Uploaded files:" : "Tập tin đã được tải lên:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Bằng cách tải tệp lên, bạn đồng ý với %1$sđiều khoản dịch vụ%2$s.", "Name" : "Tên", "Filename must not be empty." : "Tên tập tin không thể trống" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js index 5460b042c95..2be5b54648c 100644 --- a/apps/files_sharing/l10n/zh_CN.js +++ b/apps/files_sharing/l10n/zh_CN.js @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner} 共享给您及 {circle}", "Shared with you and the conversation {conversation} by {owner}" : "由{owner} 共享给您及对话 {conversation}", "Shared with you in a conversation by {owner}" : "由 {owner} 在一个会话中共享给您", - "Share note" : "共享笔记", - "Show list view" : "显示列表视图", - "Show grid view" : "显示网格视图", - "Upload files to %s" : "上传文件到 %s", - "%s shared a folder with you." : "%s 与您分享了一个文件夹。", - "Note" : "备注", - "Select or drop files" : "选择或拖放文件", - "Uploading files" : "正在上传文件", - "Uploaded files:" : "上传的文件: ", - "By uploading files, you agree to the %1$sterms of service%2$s." : "通过上传文件,您同意了 %1$s 服务条款 %2$s。", "Share not found" : "未找到共享", "Back to %s" : "返回 %s", "Add to your Nextcloud" : "添加到您的 Nextcloud", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "此操作将终止您当前的上传。", "Move or copy" : "移动或复制", "You can upload into this folder" : "您可以上传文件至此文件夹", + "Show list view" : "显示列表视图", + "Show grid view" : "显示网格视图", "No compatible server found at {remote}" : " {remote} 未发现匹配的服务器", "Invalid server URL" : "无效的服务器地址", "Failed to add the public link to your Nextcloud" : "添加公开链接到您的Nextcloud失败", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "要上传文件,您需要先提供名称。", "Enter your name" : "输入名称", "Submit name" : "提交名称", + "Share note" : "共享笔记", + "Upload files to %s" : "上传文件到 %s", + "%s shared a folder with you." : "%s 与您分享了一个文件夹。", + "Note" : "备注", + "Select or drop files" : "选择或拖放文件", + "Uploading files" : "正在上传文件", + "Uploaded files:" : "上传的文件: ", + "By uploading files, you agree to the %1$sterms of service%2$s." : "通过上传文件,您同意了 %1$s 服务条款 %2$s。", "Name" : "名称", "Share with accounts, teams, federated cloud id" : "与账号、团队、联合云 ID 共享", "Email, federated cloud id" : "电子邮件、联合云 ID", diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json index b23c34ef1b2..bda0608cbe5 100644 --- a/apps/files_sharing/l10n/zh_CN.json +++ b/apps/files_sharing/l10n/zh_CN.json @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "{owner} 共享给您及 {circle}", "Shared with you and the conversation {conversation} by {owner}" : "由{owner} 共享给您及对话 {conversation}", "Shared with you in a conversation by {owner}" : "由 {owner} 在一个会话中共享给您", - "Share note" : "共享笔记", - "Show list view" : "显示列表视图", - "Show grid view" : "显示网格视图", - "Upload files to %s" : "上传文件到 %s", - "%s shared a folder with you." : "%s 与您分享了一个文件夹。", - "Note" : "备注", - "Select or drop files" : "选择或拖放文件", - "Uploading files" : "正在上传文件", - "Uploaded files:" : "上传的文件: ", - "By uploading files, you agree to the %1$sterms of service%2$s." : "通过上传文件,您同意了 %1$s 服务条款 %2$s。", "Share not found" : "未找到共享", "Back to %s" : "返回 %s", "Add to your Nextcloud" : "添加到您的 Nextcloud", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "此操作将终止您当前的上传。", "Move or copy" : "移动或复制", "You can upload into this folder" : "您可以上传文件至此文件夹", + "Show list view" : "显示列表视图", + "Show grid view" : "显示网格视图", "No compatible server found at {remote}" : " {remote} 未发现匹配的服务器", "Invalid server URL" : "无效的服务器地址", "Failed to add the public link to your Nextcloud" : "添加公开链接到您的Nextcloud失败", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "要上传文件,您需要先提供名称。", "Enter your name" : "输入名称", "Submit name" : "提交名称", + "Share note" : "共享笔记", + "Upload files to %s" : "上传文件到 %s", + "%s shared a folder with you." : "%s 与您分享了一个文件夹。", + "Note" : "备注", + "Select or drop files" : "选择或拖放文件", + "Uploading files" : "正在上传文件", + "Uploaded files:" : "上传的文件: ", + "By uploading files, you agree to the %1$sterms of service%2$s." : "通过上传文件,您同意了 %1$s 服务条款 %2$s。", "Name" : "名称", "Share with accounts, teams, federated cloud id" : "与账号、团队、联合云 ID 共享", "Email, federated cloud id" : "电子邮件、联合云 ID", diff --git a/apps/files_sharing/l10n/zh_HK.js b/apps/files_sharing/l10n/zh_HK.js index 55fd2561ffe..d15d5a81e3a 100644 --- a/apps/files_sharing/l10n/zh_HK.js +++ b/apps/files_sharing/l10n/zh_HK.js @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner} 分享給您和 {circle}", "Shared with you and the conversation {conversation} by {owner}" : "{owner} 分享給您和 {conversation} 對話", "Shared with you in a conversation by {owner}" : "{owner} 在對話中分享給您", - "Share note" : "分享筆記", - "Show list view" : "顯示清單視圖", - "Show grid view" : "顯示網格視圖", - "Upload files to %s" : "上傳檔案到 %s", - "%s shared a folder with you." : "%s 與您分享了一個資料夾。", - "Note" : "筆記", - "Select or drop files" : "選擇或拖曳檔案至此", - "Uploading files" : "檔案上傳中", - "Uploaded files:" : "已上傳的檔案:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "上傳檔案即表示您同意 %1$s服務條款%2$s。 ", "Share not found" : "找不到分享", "Back to %s" : "返回 %s", "Add to your Nextcloud" : "加入到您的 Nextcloud", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "這會終止目前任何的上傳。", "Move or copy" : "移動或複製", "You can upload into this folder" : "你可以上傳內容到此資料夾", + "Show list view" : "顯示清單視圖", + "Show grid view" : "顯示網格視圖", "No compatible server found at {remote}" : "沒有在 {remote} 找到相容的伺服器", "Invalid server URL" : "無效的伺服器 URL", "Failed to add the public link to your Nextcloud" : "無法將公開連結加入您的 Nextcloud", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "要上傳檔案,您需要先提供您的姓名。", "Enter your name" : "輸入您的名稱", "Submit name" : "遞交名字", + "Share note" : "分享筆記", + "Upload files to %s" : "上傳檔案到 %s", + "%s shared a folder with you." : "%s 與您分享了一個資料夾。", + "Note" : "筆記", + "Select or drop files" : "選擇或拖曳檔案至此", + "Uploading files" : "檔案上傳中", + "Uploaded files:" : "已上傳的檔案:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "上傳檔案即表示您同意 %1$s服務條款%2$s。 ", "Name" : "名字", "Share with accounts, teams, federated cloud id" : "與帳戶、團隊、聯邦雲端ID 分享", "Email, federated cloud id" : "電郵地址、聯邦雲端 ID", diff --git a/apps/files_sharing/l10n/zh_HK.json b/apps/files_sharing/l10n/zh_HK.json index ecf5ad545f6..9b5d944f362 100644 --- a/apps/files_sharing/l10n/zh_HK.json +++ b/apps/files_sharing/l10n/zh_HK.json @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "{owner} 分享給您和 {circle}", "Shared with you and the conversation {conversation} by {owner}" : "{owner} 分享給您和 {conversation} 對話", "Shared with you in a conversation by {owner}" : "{owner} 在對話中分享給您", - "Share note" : "分享筆記", - "Show list view" : "顯示清單視圖", - "Show grid view" : "顯示網格視圖", - "Upload files to %s" : "上傳檔案到 %s", - "%s shared a folder with you." : "%s 與您分享了一個資料夾。", - "Note" : "筆記", - "Select or drop files" : "選擇或拖曳檔案至此", - "Uploading files" : "檔案上傳中", - "Uploaded files:" : "已上傳的檔案:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "上傳檔案即表示您同意 %1$s服務條款%2$s。 ", "Share not found" : "找不到分享", "Back to %s" : "返回 %s", "Add to your Nextcloud" : "加入到您的 Nextcloud", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "這會終止目前任何的上傳。", "Move or copy" : "移動或複製", "You can upload into this folder" : "你可以上傳內容到此資料夾", + "Show list view" : "顯示清單視圖", + "Show grid view" : "顯示網格視圖", "No compatible server found at {remote}" : "沒有在 {remote} 找到相容的伺服器", "Invalid server URL" : "無效的伺服器 URL", "Failed to add the public link to your Nextcloud" : "無法將公開連結加入您的 Nextcloud", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "要上傳檔案,您需要先提供您的姓名。", "Enter your name" : "輸入您的名稱", "Submit name" : "遞交名字", + "Share note" : "分享筆記", + "Upload files to %s" : "上傳檔案到 %s", + "%s shared a folder with you." : "%s 與您分享了一個資料夾。", + "Note" : "筆記", + "Select or drop files" : "選擇或拖曳檔案至此", + "Uploading files" : "檔案上傳中", + "Uploaded files:" : "已上傳的檔案:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "上傳檔案即表示您同意 %1$s服務條款%2$s。 ", "Name" : "名字", "Share with accounts, teams, federated cloud id" : "與帳戶、團隊、聯邦雲端ID 分享", "Email, federated cloud id" : "電郵地址、聯邦雲端 ID", diff --git a/apps/files_sharing/l10n/zh_TW.js b/apps/files_sharing/l10n/zh_TW.js index 60c564129b7..4352773dda8 100644 --- a/apps/files_sharing/l10n/zh_TW.js +++ b/apps/files_sharing/l10n/zh_TW.js @@ -401,16 +401,6 @@ OC.L10N.register( "Shared with you and {circle} by {owner}" : "{owner} 與您和 {circle} 分享", "Shared with you and the conversation {conversation} by {owner}" : "{owner} 與您和 {conversation} 對話分享", "Shared with you in a conversation by {owner}" : "{owner} 在對話中與您分享", - "Share note" : "分享備註", - "Show list view" : "顯示清單檢視", - "Show grid view" : "顯示格狀檢視", - "Upload files to %s" : "上傳檔案到 %s", - "%s shared a folder with you." : "%s 與您分享了一個資料夾。", - "Note" : "備註", - "Select or drop files" : "選取或拖曳檔案", - "Uploading files" : "正在上傳檔案", - "Uploaded files:" : "已上傳的檔案:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "上傳檔案即表示您同意 %1$s服務條款%2$s。", "Share not found" : "找不到分享", "Back to %s" : "回到 %s", "Add to your Nextcloud" : "新增到您的 Nextcloud", @@ -420,6 +410,8 @@ OC.L10N.register( "This will stop your current uploads." : "這會停止您目前的上傳。", "Move or copy" : "移動或複製", "You can upload into this folder" : "您可以上傳到此資料夾", + "Show list view" : "顯示清單檢視", + "Show grid view" : "顯示格狀檢視", "No compatible server found at {remote}" : "在 {remote} 找不到相容的伺服器", "Invalid server URL" : "無效的伺服器 URL", "Failed to add the public link to your Nextcloud" : "無法將公開連結新增到您的 Nextcloud", @@ -432,6 +424,14 @@ OC.L10N.register( "To upload files, you need to provide your name first." : "要上傳檔案,您必須先提供您的名字。", "Enter your name" : "輸入您的名稱", "Submit name" : "遞交名稱", + "Share note" : "分享備註", + "Upload files to %s" : "上傳檔案到 %s", + "%s shared a folder with you." : "%s 與您分享了一個資料夾。", + "Note" : "備註", + "Select or drop files" : "選取或拖曳檔案", + "Uploading files" : "正在上傳檔案", + "Uploaded files:" : "已上傳的檔案:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "上傳檔案即表示您同意 %1$s服務條款%2$s。", "Name" : "名稱", "Share with accounts, teams, federated cloud id" : "與帳號、團隊、聯邦雲端ID 分享", "Email, federated cloud id" : "電子郵件、聯邦雲端 ID", diff --git a/apps/files_sharing/l10n/zh_TW.json b/apps/files_sharing/l10n/zh_TW.json index 849e35c758e..d23b831db0d 100644 --- a/apps/files_sharing/l10n/zh_TW.json +++ b/apps/files_sharing/l10n/zh_TW.json @@ -399,16 +399,6 @@ "Shared with you and {circle} by {owner}" : "{owner} 與您和 {circle} 分享", "Shared with you and the conversation {conversation} by {owner}" : "{owner} 與您和 {conversation} 對話分享", "Shared with you in a conversation by {owner}" : "{owner} 在對話中與您分享", - "Share note" : "分享備註", - "Show list view" : "顯示清單檢視", - "Show grid view" : "顯示格狀檢視", - "Upload files to %s" : "上傳檔案到 %s", - "%s shared a folder with you." : "%s 與您分享了一個資料夾。", - "Note" : "備註", - "Select or drop files" : "選取或拖曳檔案", - "Uploading files" : "正在上傳檔案", - "Uploaded files:" : "已上傳的檔案:", - "By uploading files, you agree to the %1$sterms of service%2$s." : "上傳檔案即表示您同意 %1$s服務條款%2$s。", "Share not found" : "找不到分享", "Back to %s" : "回到 %s", "Add to your Nextcloud" : "新增到您的 Nextcloud", @@ -418,6 +408,8 @@ "This will stop your current uploads." : "這會停止您目前的上傳。", "Move or copy" : "移動或複製", "You can upload into this folder" : "您可以上傳到此資料夾", + "Show list view" : "顯示清單檢視", + "Show grid view" : "顯示格狀檢視", "No compatible server found at {remote}" : "在 {remote} 找不到相容的伺服器", "Invalid server URL" : "無效的伺服器 URL", "Failed to add the public link to your Nextcloud" : "無法將公開連結新增到您的 Nextcloud", @@ -430,6 +422,14 @@ "To upload files, you need to provide your name first." : "要上傳檔案,您必須先提供您的名字。", "Enter your name" : "輸入您的名稱", "Submit name" : "遞交名稱", + "Share note" : "分享備註", + "Upload files to %s" : "上傳檔案到 %s", + "%s shared a folder with you." : "%s 與您分享了一個資料夾。", + "Note" : "備註", + "Select or drop files" : "選取或拖曳檔案", + "Uploading files" : "正在上傳檔案", + "Uploaded files:" : "已上傳的檔案:", + "By uploading files, you agree to the %1$sterms of service%2$s." : "上傳檔案即表示您同意 %1$s服務條款%2$s。", "Name" : "名稱", "Share with accounts, teams, federated cloud id" : "與帳號、團隊、聯邦雲端ID 分享", "Email, federated cloud id" : "電子郵件、聯邦雲端 ID", diff --git a/apps/files_sharing/lib/Config/ConfigLexicon.php b/apps/files_sharing/lib/Config/ConfigLexicon.php index a463b4e7ef2..c2743a2c4ce 100644 --- a/apps/files_sharing/lib/Config/ConfigLexicon.php +++ b/apps/files_sharing/lib/Config/ConfigLexicon.php @@ -8,28 +8,30 @@ declare(strict_types=1); namespace OCA\Files_Sharing\Config; -use NCU\Config\Lexicon\ConfigLexiconEntry; -use NCU\Config\Lexicon\ConfigLexiconStrictness; -use NCU\Config\Lexicon\IConfigLexicon; -use NCU\Config\ValueType; +use OCP\Config\Lexicon\Entry; +use OCP\Config\Lexicon\ILexicon; +use OCP\Config\Lexicon\Strictness; +use OCP\Config\ValueType; /** * Config Lexicon for files_sharing. * * Please Add & Manage your Config Keys in that file and keep the Lexicon up to date! * - * {@see IConfigLexicon} + * {@see ILexicon} */ -class ConfigLexicon implements IConfigLexicon { +class ConfigLexicon implements ILexicon { public const SHOW_FEDERATED_AS_INTERNAL = 'show_federated_shares_as_internal'; + public const SHOW_FEDERATED_TO_TRUSTED_AS_INTERNAL = 'show_federated_shares_to_trusted_servers_as_internal'; - public function getStrictness(): ConfigLexiconStrictness { - return ConfigLexiconStrictness::IGNORE; + public function getStrictness(): Strictness { + return Strictness::IGNORE; } public function getAppConfigs(): array { return [ - new ConfigLexiconEntry(self::SHOW_FEDERATED_AS_INTERNAL, ValueType::BOOL, false, 'shows federated shares as internal shares', true), + new Entry(self::SHOW_FEDERATED_AS_INTERNAL, ValueType::BOOL, false, 'shows federated shares as internal shares', true), + new Entry(self::SHOW_FEDERATED_TO_TRUSTED_AS_INTERNAL, ValueType::BOOL, false, 'shows federated shares to trusted servers as internal shares', true), ]; } diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php index 7591493167f..095a8a75963 100644 --- a/apps/files_sharing/lib/Controller/ShareAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareAPIController.php @@ -15,6 +15,7 @@ use OC\Files\FileInfo; use OC\Files\Storage\Wrapper\Wrapper; use OCA\Circles\Api\v1\Circles; use OCA\Deck\Sharing\ShareAPIHelper; +use OCA\Federation\TrustedServers; use OCA\Files\Helper; use OCA\Files_Sharing\Exceptions\SharingRightsException; use OCA\Files_Sharing\External\Storage; @@ -76,6 +77,7 @@ use Psr\Log\LoggerInterface; class ShareAPIController extends OCSController { private ?Node $lockedNode = null; + private array $trustedServerCache = []; /** * Share20OCS constructor. @@ -100,6 +102,7 @@ class ShareAPIController extends OCSController { private IProviderFactory $factory, private IMailer $mailer, private ITagManager $tagManager, + private ?TrustedServers $trustedServers, private ?string $userId = null, ) { parent::__construct($appName, $request); @@ -202,6 +205,32 @@ class ShareAPIController extends OCSController { $result['item_size'] = $node->getSize(); $result['item_mtime'] = $node->getMTime(); + if ($this->trustedServers !== null && in_array($share->getShareType(), [IShare::TYPE_REMOTE, IShare::TYPE_REMOTE_GROUP], true)) { + $result['is_trusted_server'] = false; + $sharedWith = $share->getSharedWith(); + $remoteIdentifier = is_string($sharedWith) ? strrchr($sharedWith, '@') : false; + if ($remoteIdentifier !== false) { + $remote = substr($remoteIdentifier, 1); + + if (isset($this->trustedServerCache[$remote])) { + $result['is_trusted_server'] = $this->trustedServerCache[$remote]; + } else { + try { + $isTrusted = $this->trustedServers->isTrustedServer($remote); + $this->trustedServerCache[$remote] = $isTrusted; + $result['is_trusted_server'] = $isTrusted; + } catch (\Exception $e) { + // Server not found or other issue, we consider it not trusted + $this->trustedServerCache[$remote] = false; + $this->logger->error( + 'Error checking if remote server is trusted (treating as untrusted): ' . $e->getMessage(), + ['exception' => $e] + ); + } + } + } + } + $expiration = $share->getExpirationDate(); if ($expiration !== null) { $expiration->setTimezone($this->dateTimeZone->getTimeZone()); diff --git a/apps/files_sharing/lib/Listener/LoadSidebarListener.php b/apps/files_sharing/lib/Listener/LoadSidebarListener.php index 9f0eee9159a..88c39f38545 100644 --- a/apps/files_sharing/lib/Listener/LoadSidebarListener.php +++ b/apps/files_sharing/lib/Listener/LoadSidebarListener.php @@ -38,6 +38,7 @@ class LoadSidebarListener implements IEventListener { $appConfig = Server::get(IAppConfig::class); $this->initialState->provideInitialState('showFederatedSharesAsInternal', $appConfig->getValueBool('files_sharing', ConfigLexicon::SHOW_FEDERATED_AS_INTERNAL)); + $this->initialState->provideInitialState('showFederatedSharesToTrustedServersAsInternal', $appConfig->getValueBool('files_sharing', ConfigLexicon::SHOW_FEDERATED_TO_TRUSTED_AS_INTERNAL)); Util::addScript(Application::APP_ID, 'files_sharing_tab', 'files'); } } diff --git a/apps/files_sharing/lib/ResponseDefinitions.php b/apps/files_sharing/lib/ResponseDefinitions.php index 6b6b0fcc4b6..71a2b25a70c 100644 --- a/apps/files_sharing/lib/ResponseDefinitions.php +++ b/apps/files_sharing/lib/ResponseDefinitions.php @@ -22,6 +22,7 @@ namespace OCA\Files_Sharing; * file_target: string, * has_preview: bool, * hide_download: 0|1, + * is_trusted_server?: bool, * is-mount-root: bool, * id: string, * item_mtime: int, diff --git a/apps/files_sharing/openapi.json b/apps/files_sharing/openapi.json index 627c25ce8ea..b2df1ecb7b3 100644 --- a/apps/files_sharing/openapi.json +++ b/apps/files_sharing/openapi.json @@ -548,6 +548,9 @@ 1 ] }, + "is_trusted_server": { + "type": "boolean" + }, "is-mount-root": { "type": "boolean" }, @@ -897,40 +900,76 @@ "type": "string" }, "name": { - "$ref": "#/components/schemas/Lookup", - "nullable": true + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/Lookup" + } + ] }, "email": { - "$ref": "#/components/schemas/Lookup", - "nullable": true + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/Lookup" + } + ] }, "address": { - "$ref": "#/components/schemas/Lookup", - "nullable": true + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/Lookup" + } + ] }, "website": { - "$ref": "#/components/schemas/Lookup", - "nullable": true + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/Lookup" + } + ] }, "twitter": { - "$ref": "#/components/schemas/Lookup", - "nullable": true + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/Lookup" + } + ] }, "phone": { - "$ref": "#/components/schemas/Lookup", - "nullable": true + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/Lookup" + } + ] }, "twitter_signature": { - "$ref": "#/components/schemas/Lookup", - "nullable": true + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/Lookup" + } + ] }, "website_signature": { - "$ref": "#/components/schemas/Lookup", - "nullable": true + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/Lookup" + } + ] }, "userid": { - "$ref": "#/components/schemas/Lookup", - "nullable": true + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/Lookup" + } + ] } } }, diff --git a/apps/files_sharing/src/components/FileListFilterAccount.vue b/apps/files_sharing/src/components/FileListFilterAccount.vue index 46c847e7b19..150516e139b 100644 --- a/apps/files_sharing/src/components/FileListFilterAccount.vue +++ b/apps/files_sharing/src/components/FileListFilterAccount.vue @@ -8,7 +8,7 @@ :filter-name="t('files_sharing', 'People')" @reset-filter="resetFilter"> <template #icon> - <NcIconSvgWrapper :path="mdiAccountMultiple" /> + <NcIconSvgWrapper :path="mdiAccountMultipleOutline" /> </template> <NcActionInput v-if="availableAccounts.length > 1" :label="t('files_sharing', 'Filter accounts')" @@ -39,7 +39,7 @@ import type { IAccountData } from '../files_filters/AccountFilter.ts' import { translate as t } from '@nextcloud/l10n' -import { mdiAccountMultiple } from '@mdi/js' +import { mdiAccountMultipleOutline } from '@mdi/js' import { computed, ref, watch } from 'vue' import FileListFilter from '../../../files/src/components/FileListFilter/FileListFilter.vue' diff --git a/apps/files_sharing/src/components/NewFileRequestDialog/NewFileRequestDialogIntro.vue b/apps/files_sharing/src/components/NewFileRequestDialog/NewFileRequestDialogIntro.vue index 2d4d8eafa2b..5ac60c37e29 100644 --- a/apps/files_sharing/src/components/NewFileRequestDialog/NewFileRequestDialogIntro.vue +++ b/apps/files_sharing/src/components/NewFileRequestDialog/NewFileRequestDialogIntro.vue @@ -78,7 +78,7 @@ import { getFilePickerBuilder } from '@nextcloud/dialogs' import { t } from '@nextcloud/l10n' import IconFolder from 'vue-material-design-icons/Folder.vue' -import IconInfo from 'vue-material-design-icons/Information.vue' +import IconInfo from 'vue-material-design-icons/InformationOutline.vue' import IconLock from 'vue-material-design-icons/Lock.vue' import NcTextArea from '@nextcloud/vue/components/NcTextArea' import NcTextField from '@nextcloud/vue/components/NcTextField' diff --git a/apps/files_sharing/src/components/SharingEntry.vue b/apps/files_sharing/src/components/SharingEntry.vue index 4ff5fae364b..1fbe740cb11 100644 --- a/apps/files_sharing/src/components/SharingEntry.vue +++ b/apps/files_sharing/src/components/SharingEntry.vue @@ -77,9 +77,9 @@ export default { title += ` (${t('files_sharing', 'group')})` } else if (this.share.type === ShareType.Room) { title += ` (${t('files_sharing', 'conversation')})` - } else if (this.share.type === ShareType.Remote) { + } else if (this.share.type === ShareType.Remote && !this.share.isTrustedServer) { title += ` (${t('files_sharing', 'remote')})` - } else if (this.share.type === ShareType.RemoteGroup) { + } else if (this.share.type === ShareType.RemoteGroup && !this.share.isTrustedServer) { title += ` (${t('files_sharing', 'remote group')})` } else if (this.share.type === ShareType.Guest) { title += ` (${t('files_sharing', 'guest')})` diff --git a/apps/files_sharing/src/components/SharingEntryLink.vue b/apps/files_sharing/src/components/SharingEntryLink.vue index 702b876306f..6a456fa0a15 100644 --- a/apps/files_sharing/src/components/SharingEntryLink.vue +++ b/apps/files_sharing/src/components/SharingEntryLink.vue @@ -74,10 +74,10 @@ {{ config.enforcePasswordForPublicLink ? t('files_sharing', 'Password protection (enforced)') : t('files_sharing', 'Password protection') }} </NcActionCheckbox> - <NcActionInput v-if="pendingEnforcedPassword || share.password" + <NcActionInput v-if="pendingEnforcedPassword || isPasswordProtected" class="share-link-password" :label="t('files_sharing', 'Enter a password')" - :value.sync="share.password" + :value.sync="share.newPassword" :disabled="saving" :required="config.enableLinkPasswordByDefault || config.enforcePasswordForPublicLink" :minlength="isPasswordPolicyEnabled && config.passwordPolicy.minLength" @@ -115,7 +115,8 @@ </template> </NcActionInput> - <NcActionButton @click.prevent.stop="onNewLinkShare(true)"> + <NcActionButton :disabled="pendingEnforcedPassword && !share.newPassword" + @click.prevent.stop="onNewLinkShare(true)"> <template #icon> <CheckIcon :size="20" /> </template> @@ -242,10 +243,10 @@ import NcAvatar from '@nextcloud/vue/components/NcAvatar' import NcDialog from '@nextcloud/vue/components/NcDialog' import Tune from 'vue-material-design-icons/Tune.vue' -import IconCalendarBlank from 'vue-material-design-icons/CalendarBlank.vue' +import IconCalendarBlank from 'vue-material-design-icons/CalendarBlankOutline.vue' import IconQr from 'vue-material-design-icons/Qrcode.vue' import ErrorIcon from 'vue-material-design-icons/Exclamation.vue' -import LockIcon from 'vue-material-design-icons/Lock.vue' +import LockIcon from 'vue-material-design-icons/LockOutline.vue' import CheckIcon from 'vue-material-design-icons/CheckBold.vue' import ClipboardIcon from 'vue-material-design-icons/ContentCopy.vue' import CloseIcon from 'vue-material-design-icons/Close.vue' @@ -646,6 +647,7 @@ export default { // create share & close menu const share = new Share(shareDefaults) + share.newPassword = share.password const component = await new Promise(resolve => { this.$emit('add:share', share, resolve) }) @@ -838,7 +840,7 @@ export default { */ onPasswordSubmit() { if (this.hasUnsavedPassword) { - this.share.password = this.share.newPassword.trim() + this.share.newPassword = this.share.newPassword.trim() this.queueUpdate('password') } }, @@ -853,7 +855,7 @@ export default { */ onPasswordProtectedByTalkChange() { if (this.hasUnsavedPassword) { - this.share.password = this.share.newPassword.trim() + this.share.newPassword = this.share.newPassword.trim() } this.queueUpdate('sendPasswordByTalk', 'password') diff --git a/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue b/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue index 041841201d0..102eea63cb6 100644 --- a/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue +++ b/apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue @@ -36,7 +36,7 @@ import ShareDetails from '../mixins/ShareDetails.js' import NcActions from '@nextcloud/vue/components/NcActions' import NcActionButton from '@nextcloud/vue/components/NcActionButton' import IconEyeOutline from 'vue-material-design-icons/EyeOutline.vue' -import IconPencil from 'vue-material-design-icons/Pencil.vue' +import IconPencil from 'vue-material-design-icons/PencilOutline.vue' import IconFileUpload from 'vue-material-design-icons/FileUpload.vue' import IconTune from 'vue-material-design-icons/Tune.vue' diff --git a/apps/files_sharing/src/components/SharingInput.vue b/apps/files_sharing/src/components/SharingInput.vue index b886ba95a17..f50dc96fc08 100644 --- a/apps/files_sharing/src/components/SharingInput.vue +++ b/apps/files_sharing/src/components/SharingInput.vue @@ -192,14 +192,27 @@ export default { lookup = true } - let shareType = [] - const remoteTypes = [ShareType.Remote, ShareType.RemoteGroup] - - if (this.isExternal && !this.config.showFederatedSharesAsInternal) { - shareType.push(...remoteTypes) + const shareType = [] + + const showFederatedAsInternal + = this.config.showFederatedSharesAsInternal + || this.config.showFederatedSharesToTrustedServersAsInternal + + const shouldAddRemoteTypes + // For internal users, add remote types if config says to show them as internal + = (!this.isExternal && showFederatedAsInternal) + // For external users, add them if config *doesn't* say to show them as internal + || (this.isExternal && !showFederatedAsInternal) + // Edge case: federated-to-trusted is a separate "add" trigger for external users + || (this.isExternal && this.config.showFederatedSharesToTrustedServersAsInternal) + + if (this.isExternal) { + if (getCapabilities().files_sharing.public.enabled === true) { + shareType.push(ShareType.Email) + } } else { - shareType = shareType.concat([ + shareType.push( ShareType.User, ShareType.Group, ShareType.Team, @@ -207,15 +220,11 @@ export default { ShareType.Guest, ShareType.Deck, ShareType.ScienceMesh, - ]) - - if (this.config.showFederatedSharesAsInternal) { - shareType.push(...remoteTypes) - } + ) } - if (getCapabilities().files_sharing.public.enabled === true && this.isExternal) { - shareType.push(ShareType.Email) + if (shouldAddRemoteTypes) { + shareType.push(...remoteTypes) } let request = null @@ -366,6 +375,11 @@ export default { // filter out existing mail shares if (share.value.shareType === ShareType.Email) { + // When sharing internally, we don't want to suggest email addresses + // that the user previously created shares to + if (!this.isExternal) { + return arr + } const emails = this.linkShares.map(elem => elem.shareWith) if (emails.indexOf(share.value.shareWith.trim()) !== -1) { return arr diff --git a/apps/files_sharing/src/files_actions/sharingStatusAction.ts b/apps/files_sharing/src/files_actions/sharingStatusAction.ts index 75fe7d54096..2dfd8467c5b 100644 --- a/apps/files_sharing/src/files_actions/sharingStatusAction.ts +++ b/apps/files_sharing/src/files_actions/sharingStatusAction.ts @@ -8,8 +8,8 @@ import { translate as t } from '@nextcloud/l10n' import { ShareType } from '@nextcloud/sharing' import { isPublicShare } from '@nextcloud/sharing/public' -import AccountGroupSvg from '@mdi/svg/svg/account-group.svg?raw' -import AccountPlusSvg from '@mdi/svg/svg/account-plus.svg?raw' +import AccountGroupSvg from '@mdi/svg/svg/account-group-outline.svg?raw' +import AccountPlusSvg from '@mdi/svg/svg/account-plus-outline.svg?raw' import LinkSvg from '@mdi/svg/svg/link.svg?raw' import CircleSvg from '../../../../core/img/apps/circles.svg?raw' diff --git a/apps/files_sharing/src/files_newMenu/newFileRequest.ts b/apps/files_sharing/src/files_newMenu/newFileRequest.ts index f7c5cc4057a..1d58e3552a2 100644 --- a/apps/files_sharing/src/files_newMenu/newFileRequest.ts +++ b/apps/files_sharing/src/files_newMenu/newFileRequest.ts @@ -7,7 +7,7 @@ import type { Entry, Folder, Node } from '@nextcloud/files' import { defineAsyncComponent } from 'vue' import { spawnDialog } from '@nextcloud/dialogs' import { translate as t } from '@nextcloud/l10n' -import FileUploadSvg from '@mdi/svg/svg/file-upload.svg?raw' +import FileUploadSvg from '@mdi/svg/svg/file-upload-outline.svg?raw' import Config from '../services/ConfigService' import { isPublicShare } from '@nextcloud/sharing/public' diff --git a/apps/files_sharing/src/files_views/shares.ts b/apps/files_sharing/src/files_views/shares.ts index 297fd4796fd..fd5e908638c 100644 --- a/apps/files_sharing/src/files_views/shares.ts +++ b/apps/files_sharing/src/files_views/shares.ts @@ -6,11 +6,11 @@ import { translate as t } from '@nextcloud/l10n' import { View, getNavigation } from '@nextcloud/files' import { ShareType } from '@nextcloud/sharing' import AccountClockSvg from '@mdi/svg/svg/account-clock.svg?raw' -import AccountGroupSvg from '@mdi/svg/svg/account-group.svg?raw' -import AccountPlusSvg from '@mdi/svg/svg/account-plus.svg?raw' +import AccountGroupSvg from '@mdi/svg/svg/account-group-outline.svg?raw' +import AccountPlusSvg from '@mdi/svg/svg/account-plus-outline.svg?raw' import AccountSvg from '@mdi/svg/svg/account.svg?raw' import DeleteSvg from '@mdi/svg/svg/delete.svg?raw' -import FileUploadSvg from '@mdi/svg/svg/file-upload.svg?raw' +import FileUploadSvg from '@mdi/svg/svg/file-upload-outline.svg?raw' import LinkSvg from '@mdi/svg/svg/link.svg?raw' import { getContents, isFileRequest } from '../services/SharingService' diff --git a/apps/files_sharing/src/mixins/SharesMixin.js b/apps/files_sharing/src/mixins/SharesMixin.js index c5bad91314e..a461da56d85 100644 --- a/apps/files_sharing/src/mixins/SharesMixin.js +++ b/apps/files_sharing/src/mixins/SharesMixin.js @@ -165,12 +165,12 @@ export default { isPasswordProtected: { get() { return this.config.enforcePasswordForPublicLink - || !!this.share.password + || this.share.password !== '' + || this.share.newPassword !== undefined }, async set(enabled) { if (enabled) { - this.share.password = await GeneratePassword(true) - this.$set(this.share, 'newPassword', this.share.password) + this.$set(this.share, 'newPassword', await GeneratePassword(true)) } else { this.share.password = '' this.$delete(this.share, 'newPassword') @@ -272,7 +272,7 @@ export default { this.loading = true this.open = false await this.deleteShare(this.share.id) - console.debug('Share deleted', this.share.id) + logger.debug('Share deleted', { shareId: this.share.id }) const message = this.share.itemType === 'file' ? t('files_sharing', 'File "{path}" has been unshared', { path: this.share.path }) : t('files_sharing', 'Folder "{path}" has been unshared', { path: this.share.path }) @@ -303,7 +303,12 @@ export default { const properties = {} // force value to string because that is what our // share api controller accepts - propertyNames.forEach(name => { + for (const name of propertyNames) { + if (name === 'password') { + properties[name] = this.share.newPassword ?? this.share.password + continue + } + if (this.share[name] === null || this.share[name] === undefined) { properties[name] = '' } else if ((typeof this.share[name]) === 'object') { @@ -311,7 +316,7 @@ export default { } else { properties[name] = this.share[name].toString() } - }) + } return this.updateQueue.add(async () => { this.saving = true @@ -319,8 +324,9 @@ export default { try { const updatedShare = await this.updateShare(this.share.id, properties) - if (propertyNames.indexOf('password') >= 0) { + if (propertyNames.includes('password')) { // reset password state after sync + this.share.password = this.share.newPassword ?? '' this.$delete(this.share, 'newPassword') // updates password expiration time after sync @@ -328,14 +334,18 @@ export default { } // clear any previous errors - this.$delete(this.errors, propertyNames[0]) + for (const property of propertyNames) { + this.$delete(this.errors, property) + } showSuccess(this.updateSuccessMessage(propertyNames)) } catch (error) { logger.error('Could not update share', { error, share: this.share, propertyNames }) const { message } = error if (message && message !== '') { - this.onSyncError(propertyNames[0], message) + for (const property of propertyNames) { + this.onSyncError(property, message) + } showError(message) } else { // We do not have information what happened, but we should still inform the user @@ -384,6 +394,13 @@ export default { * @param {string} message the error message */ onSyncError(property, message) { + if (property === 'password' && this.share.newPassword) { + if (this.share.newPassword === this.share.password) { + this.share.password = '' + } + this.$delete(this.share, 'newPassword') + } + // re-open menu if closed this.open = true switch (property) { diff --git a/apps/files_sharing/src/models/Share.ts b/apps/files_sharing/src/models/Share.ts index fb76a655d53..b0638b29448 100644 --- a/apps/files_sharing/src/models/Share.ts +++ b/apps/files_sharing/src/models/Share.ts @@ -486,4 +486,11 @@ export default class Share { return this._share.status } + /** + * Is the share from a trusted server + */ + get isTrustedServer(): boolean { + return !!this._share.is_trusted_server + } + } diff --git a/apps/files_sharing/src/services/ConfigService.ts b/apps/files_sharing/src/services/ConfigService.ts index 2114e2d1bae..f75f34c7936 100644 --- a/apps/files_sharing/src/services/ConfigService.ts +++ b/apps/files_sharing/src/services/ConfigService.ts @@ -315,4 +315,12 @@ export default class Config { return loadState('files_sharing', 'showFederatedSharesAsInternal', false) } + /** + * Show federated shares to trusted servers as internal shares + * @return {boolean} + */ + get showFederatedSharesToTrustedServersAsInternal(): boolean { + return loadState('files_sharing', 'showFederatedSharesToTrustedServersAsInternal', false) + } + } diff --git a/apps/files_sharing/src/utils/GeneratePassword.ts b/apps/files_sharing/src/utils/GeneratePassword.ts index 2f3f65c51d8..82efaaa69d4 100644 --- a/apps/files_sharing/src/utils/GeneratePassword.ts +++ b/apps/files_sharing/src/utils/GeneratePassword.ts @@ -38,10 +38,29 @@ export default async function(verbose = false): Promise<string> { const array = new Uint8Array(10) const ratio = passwordSet.length / 255 - self.crypto.getRandomValues(array) + getRandomValues(array) let password = '' for (let i = 0; i < array.length; i++) { password += passwordSet.charAt(array[i] * ratio) } return password } + +/** + * Fills the given array with cryptographically secure random values. + * If the crypto API is not available, it falls back to less secure Math.random(). + * Crypto API is available in modern browsers on secure contexts (HTTPS). + * + * @param {Uint8Array} array - The array to fill with random values. + */ +function getRandomValues(array: Uint8Array): void { + if (self?.crypto?.getRandomValues) { + self.crypto.getRandomValues(array) + return + } + + let len = array.length + while (len--) { + array[len] = Math.floor(Math.random() * 256) + } +} diff --git a/apps/files_sharing/src/views/CollaborationView.vue b/apps/files_sharing/src/views/CollaborationView.vue deleted file mode 100644 index b75ad53e1b8..00000000000 --- a/apps/files_sharing/src/views/CollaborationView.vue +++ /dev/null @@ -1,36 +0,0 @@ -<!-- - - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors - - SPDX-License-Identifier: AGPL-3.0-or-later ---> - -<template> - <CollectionList v-if="fileId" - :id="fileId" - type="file" - :name="filename" /> -</template> - -<script> -import { CollectionList } from 'nextcloud-vue-collections' - -export default { - name: 'CollaborationView', - components: { - CollectionList, - }, - computed: { - fileId() { - if (this.$root.model && this.$root.model.id) { - return '' + this.$root.model.id - } - return null - }, - filename() { - if (this.$root.model && this.$root.model.name) { - return '' + this.$root.model.name - } - return '' - }, - }, -} -</script> diff --git a/apps/files_sharing/src/views/FilesViewFileDropEmptyContent.vue b/apps/files_sharing/src/views/FilesViewFileDropEmptyContent.vue index 33fec9af028..dac22748d8a 100644 --- a/apps/files_sharing/src/views/FilesViewFileDropEmptyContent.vue +++ b/apps/files_sharing/src/views/FilesViewFileDropEmptyContent.vue @@ -68,7 +68,7 @@ import NcDialog from '@nextcloud/vue/components/NcDialog' import NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent' import NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper' import NcNoteCard from '@nextcloud/vue/components/NcNoteCard' -import svgCloudUpload from '@mdi/svg/svg/cloud-upload.svg?raw' +import svgCloudUpload from '@mdi/svg/svg/cloud-upload-outline.svg?raw' defineProps<{ foldername: string diff --git a/apps/files_sharing/src/views/SharingDetailsTab.vue b/apps/files_sharing/src/views/SharingDetailsTab.vue index f1fb78e548b..ee902a24c8a 100644 --- a/apps/files_sharing/src/views/SharingDetailsTab.vue +++ b/apps/files_sharing/src/views/SharingDetailsTab.vue @@ -128,7 +128,7 @@ </NcCheckboxRadioSwitch> <NcPasswordField v-if="isPasswordProtected" autocomplete="new-password" - :value="hasUnsavedPassword ? share.newPassword : ''" + :value="share.newPassword ?? ''" :error="passwordError" :helper-text="errorPasswordLabel || passwordHint" :required="isPasswordEnforced && isNewShare" @@ -281,7 +281,7 @@ import NcTextArea from '@nextcloud/vue/components/NcTextArea' import CircleIcon from 'vue-material-design-icons/CircleOutline.vue' import CloseIcon from 'vue-material-design-icons/Close.vue' -import EditIcon from 'vue-material-design-icons/Pencil.vue' +import EditIcon from 'vue-material-design-icons/PencilOutline.vue' import EmailIcon from 'vue-material-design-icons/Email.vue' import LinkIcon from 'vue-material-design-icons/Link.vue' import GroupIcon from 'vue-material-design-icons/AccountGroup.vue' @@ -872,7 +872,6 @@ export default { if (this.isNewShare) { if ((this.config.enableLinkPasswordByDefault || this.isPasswordEnforced) && this.isPublicShare) { this.$set(this.share, 'newPassword', await GeneratePassword(true)) - this.$set(this.share, 'password', this.share.newPassword) this.advancedSectionAccordionExpanded = true } /* Set default expiration dates if configured */ @@ -973,10 +972,7 @@ export default { this.share.note = '' } if (this.isPasswordProtected) { - if (this.hasUnsavedPassword && this.isValidShareAttribute(this.share.newPassword)) { - this.share.password = this.share.newPassword - this.$delete(this.share, 'newPassword') - } else if (this.isPasswordEnforced && this.isNewShare && !this.isValidShareAttribute(this.share.password)) { + if (this.isPasswordEnforced && this.isNewShare && !this.isValidShareAttribute(this.share.password)) { this.passwordError = true } } else { @@ -1000,7 +996,7 @@ export default { incomingShare.expireDate = this.hasExpirationDate ? this.share.expireDate : '' if (this.isPasswordProtected) { - incomingShare.password = this.share.password + incomingShare.password = this.share.newPassword } let share @@ -1032,9 +1028,8 @@ export default { this.$emit('add:share', this.share) } else { // Let's update after creation as some attrs are only available after creation + await this.queueUpdate(...permissionsAndAttributes) this.$emit('update:share', this.share) - emit('update:share', this.share) - this.queueUpdate(...permissionsAndAttributes) } await this.getNode() @@ -1111,10 +1106,6 @@ export default { * "sendPasswordByTalk". */ onPasswordProtectedByTalkChange() { - if (this.hasUnsavedPassword) { - this.share.password = this.share.newPassword.trim() - } - this.queueUpdate('sendPasswordByTalk', 'password') }, isValidShareAttribute(value) { diff --git a/apps/files_sharing/src/views/SharingLinkList.vue b/apps/files_sharing/src/views/SharingLinkList.vue index 3dd6fdf317b..c3d9a7f83dc 100644 --- a/apps/files_sharing/src/views/SharingLinkList.vue +++ b/apps/files_sharing/src/views/SharingLinkList.vue @@ -7,12 +7,6 @@ <ul v-if="canLinkShare" :aria-label="t('files_sharing', 'Link shares')" class="sharing-link-list"> - <!-- If no link shares, show the add link default entry --> - <SharingEntryLink v-if="!hasLinkShares && canReshare" - :can-reshare="canReshare" - :file-info="fileInfo" - @add:share="addShare" /> - <!-- Else we display the list --> <template v-if="hasShares"> <!-- using shares[index] to work with .sync --> @@ -27,6 +21,12 @@ @remove:share="removeShare" @open-sharing-details="openSharingDetails(share)" /> </template> + + <!-- If no link shares, show the add link default entry --> + <SharingEntryLink v-if="!hasLinkShares && canReshare" + :can-reshare="canReshare" + :file-info="fileInfo" + @add:share="addShare" /> </ul> </template> diff --git a/apps/files_sharing/src/views/SharingTab.vue b/apps/files_sharing/src/views/SharingTab.vue index 82a11dea2e0..262504aca01 100644 --- a/apps/files_sharing/src/views/SharingTab.vue +++ b/apps/files_sharing/src/views/SharingTab.vue @@ -138,7 +138,7 @@ <div v-if="projectsEnabled" v-show="!showSharingDetailsView && fileInfo" class="sharingTab__additionalContent"> - <CollectionList :id="`${fileInfo.id}`" + <NcCollectionList :id="`${fileInfo.id}`" type="file" :name="fileInfo.name" /> </div> @@ -161,16 +161,16 @@ import { getCapabilities } from '@nextcloud/capabilities' import { orderBy } from '@nextcloud/files' import { loadState } from '@nextcloud/initial-state' import { generateOcsUrl } from '@nextcloud/router' -import { CollectionList } from 'nextcloud-vue-collections' import { ShareType } from '@nextcloud/sharing' -import InfoIcon from 'vue-material-design-icons/Information.vue' +import NcAvatar from '@nextcloud/vue/components/NcAvatar' +import NcButton from '@nextcloud/vue/components/NcButton' +import NcCollectionList from '@nextcloud/vue/components/NcCollectionList' import NcPopover from '@nextcloud/vue/components/NcPopover' +import InfoIcon from 'vue-material-design-icons/InformationOutline.vue' import axios from '@nextcloud/axios' import moment from '@nextcloud/moment' -import NcAvatar from '@nextcloud/vue/components/NcAvatar' -import NcButton from '@nextcloud/vue/components/NcButton' import { shareWithTitle } from '../utils/SharedWithMe.js' @@ -192,10 +192,10 @@ export default { name: 'SharingTab', components: { - CollectionList, InfoIcon, NcAvatar, NcButton, + NcCollectionList, NcPopover, SharingEntryInternal, SharingEntrySimple, @@ -402,7 +402,13 @@ export default { if ([ShareType.Link, ShareType.Email].includes(share.type)) { this.linkShares.push(share) } else if ([ShareType.Remote, ShareType.RemoteGroup].includes(share.type)) { - if (this.config.showFederatedSharesAsInternal) { + if (this.config.showFederatedSharesToTrustedServersAsInternal) { + if (share.isTrustedServer) { + this.shares.push(share) + } else { + this.externalShares.push(share) + } + } else if (this.config.showFederatedSharesAsInternal) { this.shares.push(share) } else { this.externalShares.push(share) @@ -478,6 +484,10 @@ export default { } else if ([ShareType.Remote, ShareType.RemoteGroup].includes(share.type)) { if (this.config.showFederatedSharesAsInternal) { this.shares.unshift(share) + } if (this.config.showFederatedSharesToTrustedServersAsInternal) { + if (share.isTrustedServer) { + this.shares.unshift(share) + } } else { this.externalShares.unshift(share) } diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php deleted file mode 100644 index d328d57dee2..00000000000 --- a/apps/files_sharing/templates/public.php +++ /dev/null @@ -1,143 +0,0 @@ -<?php - -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - */ -/** @var \OCP\IL10N $l */ -/** @var array $_ */ -?> -<div id="app-content"> -<?php if ($_['previewSupported']): /* This enables preview images for links (e.g. on Facebook, Google+, ...)*/?> - <link rel="image_src" href="<?php p($_['previewImage']); ?>" /> -<?php endif; ?> - -<input type="hidden" id="sharingUserId" value="<?php p($_['owner']) ?>"> -<input type="hidden" id="filesApp" name="filesApp" value="1"> -<input type="hidden" id="isPublic" name="isPublic" value="1"> -<?php if (!$_['hideDownload']): ?> - <input type="hidden" name="downloadURL" value="<?php p($_['downloadURL']) ?>" id="downloadURL"> -<?php endif; ?> -<input type="hidden" name="previewURL" value="<?php p($_['previewURL']) ?>" id="previewURL"> -<input type="hidden" name="sharingToken" value="<?php p($_['sharingToken']) ?>" id="sharingToken"> -<input type="hidden" name="filename" value="<?php p($_['filename']) ?>" id="filename"> -<input type="hidden" name="mimetype" value="<?php p($_['mimetype']) ?>" id="mimetype"> -<input type="hidden" name="previewSupported" value="<?php p($_['previewSupported'] ? 'true' : 'false'); ?>" id="previewSupported"> -<input type="hidden" name="mimetypeIcon" value="<?php p(\OCP\Server::get(\OCP\Files\IMimeTypeDetector::class)->mimeTypeIcon($_['mimetype'])); ?>" id="mimetypeIcon"> -<input type="hidden" name="hideDownload" value="<?php p($_['hideDownload'] ? 'true' : 'false'); ?>" id="hideDownload"> -<input type="hidden" id="disclaimerText" value="<?php p($_['disclaimer']) ?>"> - -<?php -$upload_max_filesize = \OCP\Server::get(\bantu\IniGetWrapper\IniGetWrapper::class)->getBytes('upload_max_filesize'); -$post_max_size = \OCP\Server::get(\bantu\IniGetWrapper\IniGetWrapper::class)->getBytes('post_max_size'); -$maxUploadFilesize = min($upload_max_filesize, $post_max_size); -?> -<input type="hidden" name="maxFilesizeUpload" value="<?php p($maxUploadFilesize); ?>" id="maxFilesizeUpload"> - -<?php if (!isset($_['hideFileList']) || (isset($_['hideFileList']) && $_['hideFileList'] === false)): ?> - <input type="hidden" name="filesize" value="<?php p($_['nonHumanFileSize']); ?>" id="filesize"> -<?php endif; ?> -<input type="hidden" name="maxSizeAnimateGif" value="<?php p($_['maxSizeAnimateGif']); ?>" id="maxSizeAnimateGif"> -<?php if (isset($_['note']) && $_['note'] !== '') : ?> - <div id="notemenu" class="hidden"> - <div class="icon-comment-white menutoggle" tabindex="0" role="button" aria-haspopup="true" aria-controls="note-content" aria-expanded="false"> - <span class="hidden-visually"><?php p($l->t('Share note'))?></span> - </div> - <div id="note-content" class="menu" aria-label="Note content"> - <div class="content"> - <?php p($_['note']); ?> - </div> - </div> - </div> -<?php endif; ?> - -<?php if (!isset($_['hideFileList']) || (isset($_['hideFileList']) && $_['hideFileList'] === false)) { ?> - <!-- ONLY if this is a folder, we show the grid toggle button --> - <?php if (empty($_['dir']) === false) { ?> - <input type="checkbox" class="hidden-visually" id="showgridview" - <?php if ($_['showgridview']) { ?>checked="checked" <?php } ?>/> - <label id="view-toggle" for="showgridview" class="button <?php p($_['showgridview'] ? 'icon-toggle-filelist' : 'icon-toggle-pictures') ?>" - title="<?php p($_['showgridview'] ? $l->t('Show list view') : $l->t('Show grid view'))?>"></label> - <?php } ?> - - <!-- files listing --> - <div id="files-public-content"> - <div id="preview"> - <?php if (isset($_['folder'])): ?> - <?php print_unescaped($_['folder']); ?> - <?php else: ?> - <!-- preview frame to open file in with viewer --> - <div id="imgframe"></div> - <?php if (isset($_['mimetype']) && str_starts_with($_['mimetype'], 'image')): ?> - <div class="directDownload"> - <div> - <?php p($_['filename'])?> (<?php p($_['fileSize']) ?>) - </div> - <?php if (!$_['hideDownload']) { ?> - <a href="<?php p($_['downloadURL']); ?>" id="downloadFile" class="button"> - <span class="icon icon-download"></span> - <?php p($l->t('Download'))?> - </a> - <?php } ?> - </div> - <?php elseif ($_['previewURL'] === $_['downloadURL'] && !$_['hideDownload']): ?> - <div class="directDownload"> - <div> - <?php p($_['filename'])?> (<?php p($_['fileSize']) ?>) - </div> - <a href="<?php p($_['downloadURL']); ?>" id="downloadFile" class="button"> - <span class="icon icon-download"></span> - <?php p($l->t('Download'))?> - </a> - </div> - <?php endif; ?> - <?php endif; ?> - </div> - </div> -<?php } else { ?> - <input type="hidden" id="upload-only-interface" value="1"/> - <div id="public-upload"> - <div - id="emptycontent" - class="emptycontent <?php if (!empty($_['note'])) { ?>has-note<?php } ?>"> - <?php if ($_['shareOwner']) { ?> - <div id="displayavatar"><div class="avatardiv"></div></div> - <h2><?php p($l->t('Upload files to %s', [$_['label'] ?: $_['filename']])) ?></h2> - <p><?php p($l->t('%s shared a folder with you.', [$_['shareOwner']])) ?></p> - <?php } else { ?> - <div id="displayavatar"><span class="icon-folder"></span></div> - <h2><?php p($l->t('Upload files to %s', [$_['label'] ?: $_['filename']])) ?></h2> - <?php } ?> - - <?php if (empty($_['note']) === false) { ?> - <h3><?php p($l->t('Note')); ?></h3> - <p class="note"><?php p($_['note']); ?></p> - <?php } ?> - - <input type="file" name="files[]" class="hidden" multiple> - <a href="#" class="button icon-upload"><?php p($l->t('Select or drop files')) ?></a> - <div id="drop-upload-progress-indicator" style="padding-top: 25px;" class="hidden"><span class="icon-loading-small"></span><?php p($l->t('Uploading files')) ?></div> - <div id="drop-upload-done-indicator" style="padding-top: 25px;" class="hidden"><?php p($l->t('Uploaded files:')) ?></div> - <ul id="drop-uploaded-files"></ul> - - <?php if ($_['disclaimer'] !== '') { ?> - <div> - <?php - echo $l->t('By uploading files, you agree to the %1$sterms of service%2$s.', [ - '<span id="show-terms-dialog">', '</span>' - ]); - ?> - </div> - <?php } ?> - </div> - </div> -<?php } ?> - -<?php if (!isset($_['hideFileList']) || (isset($_['hideFileList']) && $_['hideFileList'] !== true)): ?> - <div class="hiddenuploadfield"> - <input type="file" id="file_upload_start" class="hiddenuploadfield" name="files[]" - data-url="<?php p(\OCP\Server::get(\OCP\IURLGenerator::class)->linkTo('files', 'ajax/upload.php')); ?>" /> - </div> -<?php endif; ?> -</div> diff --git a/apps/files_sharing/tests/ApiTest.php b/apps/files_sharing/tests/ApiTest.php index 676809eebff..960f29224bb 100644 --- a/apps/files_sharing/tests/ApiTest.php +++ b/apps/files_sharing/tests/ApiTest.php @@ -13,6 +13,7 @@ use OC\Files\FileInfo; use OC\Files\Filesystem; use OC\Files\Storage\Temporary; use OC\Files\View; +use OCA\Federation\TrustedServers; use OCA\Files_Sharing\Controller\ShareAPIController; use OCP\App\IAppManager; use OCP\AppFramework\OCS\OCSBadRequestException; @@ -117,6 +118,7 @@ class ApiTest extends TestCase { $providerFactory = $this->createMock(IProviderFactory::class); $mailer = $this->createMock(IMailer::class); $tagManager = $this->createMock(ITagManager::class); + $trustedServers = $this->createMock(TrustedServers::class); $dateTimeZone->method('getTimeZone')->willReturn(new \DateTimeZone(date_default_timezone_get())); return new ShareAPIController( @@ -139,6 +141,7 @@ class ApiTest extends TestCase { $providerFactory, $mailer, $tagManager, + $trustedServers, $userId, ); } diff --git a/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php b/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php index abc405fc21c..e6be0342c26 100644 --- a/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php +++ b/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php @@ -7,6 +7,7 @@ */ namespace OCA\Files_Sharing\Tests\Controller; +use OCA\Federation\TrustedServers; use OCA\Files_Sharing\Controller\ShareAPIController; use OCP\App\IAppManager; use OCP\AppFramework\Http\DataResponse; @@ -82,6 +83,7 @@ class ShareAPIControllerTest extends TestCase { private IProviderFactory&MockObject $factory; private IMailer&MockObject $mailer; private ITagManager&MockObject $tagManager; + private TrustedServers&MockObject $trustedServers; protected function setUp(): void { $this->shareManager = $this->createMock(IManager::class); @@ -119,6 +121,7 @@ class ShareAPIControllerTest extends TestCase { $this->factory = $this->createMock(IProviderFactory::class); $this->mailer = $this->createMock(IMailer::class); $this->tagManager = $this->createMock(ITagManager::class); + $this->trustedServers = $this->createMock(TrustedServers::class); $this->ocs = new ShareAPIController( $this->appName, @@ -140,8 +143,10 @@ class ShareAPIControllerTest extends TestCase { $this->factory, $this->mailer, $this->tagManager, - $this->currentUser, + $this->trustedServers, + $this->currentUser ); + } /** @@ -169,6 +174,7 @@ class ShareAPIControllerTest extends TestCase { $this->factory, $this->mailer, $this->tagManager, + $this->trustedServers, $this->currentUser, ])->onlyMethods(['formatShare']) ->getMock(); @@ -853,6 +859,7 @@ class ShareAPIControllerTest extends TestCase { $this->factory, $this->mailer, $this->tagManager, + $this->trustedServers, $this->currentUser, ]) ->onlyMethods(['canAccessShare']) @@ -1485,6 +1492,7 @@ class ShareAPIControllerTest extends TestCase { $this->factory, $this->mailer, $this->tagManager, + $this->trustedServers, $this->currentUser, ]) ->onlyMethods(['formatShare']) @@ -1873,6 +1881,7 @@ class ShareAPIControllerTest extends TestCase { $this->factory, $this->mailer, $this->tagManager, + $this->trustedServers, $this->currentUser, ])->onlyMethods(['formatShare']) ->getMock(); @@ -1972,6 +1981,7 @@ class ShareAPIControllerTest extends TestCase { $this->factory, $this->mailer, $this->tagManager, + $this->trustedServers, $this->currentUser, ])->onlyMethods(['formatShare']) ->getMock(); @@ -2399,6 +2409,7 @@ class ShareAPIControllerTest extends TestCase { $this->factory, $this->mailer, $this->tagManager, + $this->trustedServers, $this->currentUser, ])->onlyMethods(['formatShare']) ->getMock(); @@ -2471,6 +2482,7 @@ class ShareAPIControllerTest extends TestCase { $this->factory, $this->mailer, $this->tagManager, + $this->trustedServers, $this->currentUser, ])->onlyMethods(['formatShare']) ->getMock(); @@ -2710,6 +2722,7 @@ class ShareAPIControllerTest extends TestCase { $this->factory, $this->mailer, $this->tagManager, + $this->trustedServers, $this->currentUser, ])->onlyMethods(['formatShare']) ->getMock(); @@ -4492,6 +4505,7 @@ class ShareAPIControllerTest extends TestCase { 'mount-type' => '', 'attributes' => null, 'item_permissions' => 1, + 'is_trusted_server' => false, ], $share, [], false ]; @@ -4545,6 +4559,7 @@ class ShareAPIControllerTest extends TestCase { 'mount-type' => '', 'attributes' => null, 'item_permissions' => 1, + 'is_trusted_server' => false, ], $share, [], false ]; @@ -5228,4 +5243,138 @@ class ShareAPIControllerTest extends TestCase { ['file_source' => 42, 'x' => 'y', 'tags' => ['tag1', 'tag2']], ], $result); } + + public function trustedServerProvider(): array { + return [ + 'Trusted server' => [true, true], + 'Untrusted server' => [false, false], + ]; + } + + /** + * @dataProvider trustedServerProvider + */ + public function testFormatShareWithFederatedShare(bool $isKnownServer, bool $isTrusted): void { + $nodeId = 12; + $nodePath = '/test.txt'; + $share = $this->createShare( + 1, + IShare::TYPE_REMOTE, + 'recipient@remoteserver.com', // shared with + 'sender@testserver.com', // shared by + 'shareOwner', // share owner + $nodePath, // path + Constants::PERMISSION_READ, + time(), + null, + null, + $nodePath, + $nodeId + ); + + $node = $this->createMock(\OCP\Files\File::class); + $node->method('getId')->willReturn($nodeId); + $node->method('getPath')->willReturn($nodePath); + $node->method('getInternalPath')->willReturn(ltrim($nodePath, '/')); + $mountPoint = $this->createMock(\OCP\Files\Mount\IMountPoint::class); + $mountPoint->method('getMountType')->willReturn('local'); + $node->method('getMountPoint')->willReturn($mountPoint); + $node->method('getMimetype')->willReturn('text/plain'); + $storage = $this->createMock(\OCP\Files\Storage\IStorage::class); + $storageCache = $this->createMock(\OCP\Files\Cache\ICache::class); + $storageCache->method('getNumericStorageId')->willReturn(1); + $storage->method('getCache')->willReturn($storageCache); + $storage->method('getId')->willReturn('home::shareOwner'); + $node->method('getStorage')->willReturn($storage); + $parent = $this->createMock(\OCP\Files\Folder::class); + $parent->method('getId')->willReturn(2); + $node->method('getParent')->willReturn($parent); + $node->method('getSize')->willReturn(1234); + $node->method('getMTime')->willReturn(1234567890); + + $this->previewManager->method('isAvailable')->with($node)->willReturn(false); + + $this->rootFolder->method('getUserFolder') + ->with($this->currentUser) + ->willReturnSelf(); + + $this->rootFolder->method('getFirstNodeById') + ->with($share->getNodeId()) + ->willReturn($node); + + $this->rootFolder->method('getRelativePath') + ->with($node->getPath()) + ->willReturnArgument(0); + + $serverName = 'remoteserver.com'; + $this->trustedServers->method('isTrustedServer') + ->with($serverName) + ->willReturn($isKnownServer); + + $result = $this->invokePrivate($this->ocs, 'formatShare', [$share]); + + $this->assertSame($isTrusted, $result['is_trusted_server']); + } + + public function testFormatShareWithFederatedShareWithAtInUsername(): void { + $nodeId = 12; + $nodePath = '/test.txt'; + $share = $this->createShare( + 1, + IShare::TYPE_REMOTE, + 'recipient@domain.com@remoteserver.com', + 'sender@testserver.com', + 'shareOwner', + $nodePath, + Constants::PERMISSION_READ, + time(), + null, + null, + $nodePath, + $nodeId + ); + + $node = $this->createMock(\OCP\Files\File::class); + $node->method('getId')->willReturn($nodeId); + $node->method('getPath')->willReturn($nodePath); + $node->method('getInternalPath')->willReturn(ltrim($nodePath, '/')); + $mountPoint = $this->createMock(\OCP\Files\Mount\IMountPoint::class); + $mountPoint->method('getMountType')->willReturn('local'); + $node->method('getMountPoint')->willReturn($mountPoint); + $node->method('getMimetype')->willReturn('text/plain'); + $storage = $this->createMock(\OCP\Files\Storage\IStorage::class); + $storageCache = $this->createMock(\OCP\Files\Cache\ICache::class); + $storageCache->method('getNumericStorageId')->willReturn(1); + $storage->method('getCache')->willReturn($storageCache); + $storage->method('getId')->willReturn('home::shareOwner'); + $node->method('getStorage')->willReturn($storage); + $parent = $this->createMock(\OCP\Files\Folder::class); + $parent->method('getId')->willReturn(2); + $node->method('getParent')->willReturn($parent); + $node->method('getSize')->willReturn(1234); + $node->method('getMTime')->willReturn(1234567890); + + $this->previewManager->method('isAvailable')->with($node)->willReturn(false); + + $this->rootFolder->method('getUserFolder') + ->with($this->currentUser) + ->willReturnSelf(); + + $this->rootFolder->method('getFirstNodeById') + ->with($share->getNodeId()) + ->willReturn($node); + + $this->rootFolder->method('getRelativePath') + ->with($node->getPath()) + ->willReturnArgument(0); + + $serverName = 'remoteserver.com'; + $this->trustedServers->method('isTrustedServer') + ->with($serverName) + ->willReturn(true); + + $result = $this->invokePrivate($this->ocs, 'formatShare', [$share]); + + $this->assertTrue($result['is_trusted_server']); + } } diff --git a/apps/files_sharing/tests/External/CacheTest.php b/apps/files_sharing/tests/External/CacheTest.php index 60820013f11..39e2057a24c 100644 --- a/apps/files_sharing/tests/External/CacheTest.php +++ b/apps/files_sharing/tests/External/CacheTest.php @@ -54,11 +54,11 @@ class CacheTest extends TestCase { $this->contactsManager = $this->createMock(IManager::class); $this->cloudIdManager = new CloudIdManager( + $this->createMock(ICacheFactory::class), + $this->createMock(IEventDispatcher::class), $this->contactsManager, $this->createMock(IURLGenerator::class), $this->createMock(IUserManager::class), - $this->createMock(ICacheFactory::class), - $this->createMock(IEventDispatcher::class) ); $this->remoteUser = $this->getUniqueID('remoteuser'); diff --git a/apps/files_sharing/tests/External/ManagerTest.php b/apps/files_sharing/tests/External/ManagerTest.php index fbe6eb1e85b..14c6afec4d8 100644 --- a/apps/files_sharing/tests/External/ManagerTest.php +++ b/apps/files_sharing/tests/External/ManagerTest.php @@ -90,11 +90,11 @@ class ManagerTest extends TestCase { $this->testMountProvider = new MountProvider(Server::get(IDBConnection::class), function () { return $this->manager; }, new CloudIdManager( + $this->createMock(ICacheFactory::class), + $this->createMock(IEventDispatcher::class), $this->contactsManager, $this->createMock(IURLGenerator::class), $this->userManager, - $this->createMock(ICacheFactory::class), - $this->createMock(IEventDispatcher::class) )); $group1 = $this->createMock(IGroup::class); diff --git a/apps/files_trashbin/l10n/be.js b/apps/files_trashbin/l10n/be.js new file mode 100644 index 00000000000..8b825b9cb5f --- /dev/null +++ b/apps/files_trashbin/l10n/be.js @@ -0,0 +1,28 @@ +OC.L10N.register( + "files_trashbin", + { + "restored" : "адноўлены", + "Deleted files" : "Выдаленыя файлы", + "This application enables people to restore files that were deleted from the system." : "Гэта праграма дазваляе карыстальнікам аднавіць файлы, якія былі выдалены з сістэмы.", + "Restore" : "Аднавіць", + "Not enough free space to restore the file/folder" : "Недастаткова вольнай прасторы, каб аднавіць файл/папку", + "Empty deleted files" : "Ачысціць выдаленыя файлы", + "Confirm permanent deletion" : "Пацвердзіце выдаленне назаўжды", + "Are you sure you want to permanently delete all files and folders in the trash? This cannot be undone." : "Вы ўпэўнены, што хочаце назаўжды выдаліць усе файлы і папкі ў сметніцы? Гэта дзеянне нельга адрабіць.", + "Cancel" : "Скасаваць", + "Deletion cancelled" : "Выдаленне скасавана", + "Original location" : "Зыходнае размяшчэнне", + "Deleted by" : "Выдалены карыстальнікам ", + "Deleted" : "Выдалены", + "few seconds ago" : "некалькі секунд таму", + "A long time ago" : "Вельмі даўно", + "Unknown" : "Невядомы", + "All files" : "Усе файлы", + "You" : "Вы", + "List of files that have been deleted." : "Спіс выдаленых файлаў.", + "No deleted files" : "Няма выдаленых файлаў", + "Files and folders you have deleted will show up here" : "Тут будуць адлюстроўвацца выдаленыя вамі файлы і папкі", + "All files have been permanently deleted" : "Усе файлы былі выдалены назаўжды", + "Failed to empty deleted files" : "Не атрымалася ачысціць выдаленыя файлы" +}, +"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/apps/files_trashbin/l10n/be.json b/apps/files_trashbin/l10n/be.json new file mode 100644 index 00000000000..0814ee91169 --- /dev/null +++ b/apps/files_trashbin/l10n/be.json @@ -0,0 +1,26 @@ +{ "translations": { + "restored" : "адноўлены", + "Deleted files" : "Выдаленыя файлы", + "This application enables people to restore files that were deleted from the system." : "Гэта праграма дазваляе карыстальнікам аднавіць файлы, якія былі выдалены з сістэмы.", + "Restore" : "Аднавіць", + "Not enough free space to restore the file/folder" : "Недастаткова вольнай прасторы, каб аднавіць файл/папку", + "Empty deleted files" : "Ачысціць выдаленыя файлы", + "Confirm permanent deletion" : "Пацвердзіце выдаленне назаўжды", + "Are you sure you want to permanently delete all files and folders in the trash? This cannot be undone." : "Вы ўпэўнены, што хочаце назаўжды выдаліць усе файлы і папкі ў сметніцы? Гэта дзеянне нельга адрабіць.", + "Cancel" : "Скасаваць", + "Deletion cancelled" : "Выдаленне скасавана", + "Original location" : "Зыходнае размяшчэнне", + "Deleted by" : "Выдалены карыстальнікам ", + "Deleted" : "Выдалены", + "few seconds ago" : "некалькі секунд таму", + "A long time ago" : "Вельмі даўно", + "Unknown" : "Невядомы", + "All files" : "Усе файлы", + "You" : "Вы", + "List of files that have been deleted." : "Спіс выдаленых файлаў.", + "No deleted files" : "Няма выдаленых файлаў", + "Files and folders you have deleted will show up here" : "Тут будуць адлюстроўвацца выдаленыя вамі файлы і папкі", + "All files have been permanently deleted" : "Усе файлы былі выдалены назаўжды", + "Failed to empty deleted files" : "Не атрымалася ачысціць выдаленыя файлы" +},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 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_trashbin/l10n/uk.js b/apps/files_trashbin/l10n/uk.js index 3df1063f300..8f9e802f1e3 100644 --- a/apps/files_trashbin/l10n/uk.js +++ b/apps/files_trashbin/l10n/uk.js @@ -5,6 +5,7 @@ OC.L10N.register( "Deleted files" : "Кошик", "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Вилучені файли та каталоги з кошику (термін дії може завершитися під час експорту, якщо у вас мало місця для збереження)", "This application enables people to restore files that were deleted from the system." : "Цей застосунок дозволяє людям відновлювати файли, які було переміщено до кошику.", + "This application enables people to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the people file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent an account from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Ця програма дозволяє відновлювати файли, які були видалені з системи. Вона відображає список видалених файлів у веб-інтерфейсі та має опції для відновлення цих видалених файлів у каталоги файлів користувачів або їх остаточного видалення з системи. Відновлення файлу також відновлює пов'язані версії файлу, якщо увімкнено програму версій. Коли файл видаляється з спільного ресурсу, його можна відновити таким самим чином, хоча він більше не буде спільним. За замовчуванням ці файли залишаються в кошику протягом 30 днів.\n\nЩоб запобігти вичерпанню дискового простору облікового запису, програма «Видалені файли» не використовує більше 50% поточної доступної квоти для видалених файлів. Якщо видалені файли перевищують цей ліміт, програма видаляє найстаріші файли, поки не досягне цього ліміту. Більше інформації можна знайти в документації «Видалені файли».", "Restore" : "Відновити", "Not enough free space to restore the file/folder" : "Недостатньо вільного простору для відновлення файлу або каталогу", "Empty deleted files" : "Очистити вилучені файли", diff --git a/apps/files_trashbin/l10n/uk.json b/apps/files_trashbin/l10n/uk.json index 18b3bb329b3..7653b390146 100644 --- a/apps/files_trashbin/l10n/uk.json +++ b/apps/files_trashbin/l10n/uk.json @@ -3,6 +3,7 @@ "Deleted files" : "Кошик", "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Вилучені файли та каталоги з кошику (термін дії може завершитися під час експорту, якщо у вас мало місця для збереження)", "This application enables people to restore files that were deleted from the system." : "Цей застосунок дозволяє людям відновлювати файли, які було переміщено до кошику.", + "This application enables people to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the people file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent an account from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Ця програма дозволяє відновлювати файли, які були видалені з системи. Вона відображає список видалених файлів у веб-інтерфейсі та має опції для відновлення цих видалених файлів у каталоги файлів користувачів або їх остаточного видалення з системи. Відновлення файлу також відновлює пов'язані версії файлу, якщо увімкнено програму версій. Коли файл видаляється з спільного ресурсу, його можна відновити таким самим чином, хоча він більше не буде спільним. За замовчуванням ці файли залишаються в кошику протягом 30 днів.\n\nЩоб запобігти вичерпанню дискового простору облікового запису, програма «Видалені файли» не використовує більше 50% поточної доступної квоти для видалених файлів. Якщо видалені файли перевищують цей ліміт, програма видаляє найстаріші файли, поки не досягне цього ліміту. Більше інформації можна знайти в документації «Видалені файли».", "Restore" : "Відновити", "Not enough free space to restore the file/folder" : "Недостатньо вільного простору для відновлення файлу або каталогу", "Empty deleted files" : "Очистити вилучені файли", diff --git a/apps/files_trashbin/src/files_views/trashbinView.ts b/apps/files_trashbin/src/files_views/trashbinView.ts index 5b547071cc7..f55c6b71595 100644 --- a/apps/files_trashbin/src/files_views/trashbinView.ts +++ b/apps/files_trashbin/src/files_views/trashbinView.ts @@ -7,7 +7,7 @@ import { t } from '@nextcloud/l10n' import { deleted, deletedBy, originalLocation } from './columns.ts' import { getContents } from '../services/trashbin.ts' -import svgDelete from '@mdi/svg/svg/delete.svg?raw' +import svgDelete from '@mdi/svg/svg/delete-outline.svg?raw' export const TRASHBIN_VIEW_ID = 'trashbin' diff --git a/apps/files_versions/composer/composer/autoload_classmap.php b/apps/files_versions/composer/composer/autoload_classmap.php index 9c83924ab7c..27e68decdcc 100644 --- a/apps/files_versions/composer/composer/autoload_classmap.php +++ b/apps/files_versions/composer/composer/autoload_classmap.php @@ -17,6 +17,7 @@ return array( 'OCA\\Files_Versions\\Db\\VersionEntity' => $baseDir . '/../lib/Db/VersionEntity.php', 'OCA\\Files_Versions\\Db\\VersionsMapper' => $baseDir . '/../lib/Db/VersionsMapper.php', 'OCA\\Files_Versions\\Events\\CreateVersionEvent' => $baseDir . '/../lib/Events/CreateVersionEvent.php', + 'OCA\\Files_Versions\\Events\\VersionCreatedEvent' => $baseDir . '/../lib/Events/VersionCreatedEvent.php', 'OCA\\Files_Versions\\Events\\VersionRestoredEvent' => $baseDir . '/../lib/Events/VersionRestoredEvent.php', 'OCA\\Files_Versions\\Expiration' => $baseDir . '/../lib/Expiration.php', 'OCA\\Files_Versions\\Listener\\FileEventsListener' => $baseDir . '/../lib/Listener/FileEventsListener.php', diff --git a/apps/files_versions/composer/composer/autoload_static.php b/apps/files_versions/composer/composer/autoload_static.php index 1d95663ac55..8ecc1cb0137 100644 --- a/apps/files_versions/composer/composer/autoload_static.php +++ b/apps/files_versions/composer/composer/autoload_static.php @@ -32,6 +32,7 @@ class ComposerStaticInitFiles_Versions 'OCA\\Files_Versions\\Db\\VersionEntity' => __DIR__ . '/..' . '/../lib/Db/VersionEntity.php', 'OCA\\Files_Versions\\Db\\VersionsMapper' => __DIR__ . '/..' . '/../lib/Db/VersionsMapper.php', 'OCA\\Files_Versions\\Events\\CreateVersionEvent' => __DIR__ . '/..' . '/../lib/Events/CreateVersionEvent.php', + 'OCA\\Files_Versions\\Events\\VersionCreatedEvent' => __DIR__ . '/..' . '/../lib/Events/VersionCreatedEvent.php', 'OCA\\Files_Versions\\Events\\VersionRestoredEvent' => __DIR__ . '/..' . '/../lib/Events/VersionRestoredEvent.php', 'OCA\\Files_Versions\\Expiration' => __DIR__ . '/..' . '/../lib/Expiration.php', 'OCA\\Files_Versions\\Listener\\FileEventsListener' => __DIR__ . '/..' . '/../lib/Listener/FileEventsListener.php', diff --git a/apps/files_versions/l10n/be.js b/apps/files_versions/l10n/be.js new file mode 100644 index 00000000000..7e5200ecb83 --- /dev/null +++ b/apps/files_versions/l10n/be.js @@ -0,0 +1,17 @@ +OC.L10N.register( + "files_versions", + { + "Versions" : "Версіі", + "Current version" : "Бягучая версія", + "You" : "Вы", + "Delete version" : "Выдаліць версію", + "Cancel" : "Скасаваць", + "Remove version name" : "Выдаліць назву версіі", + "Save version name" : "Захаваць назву версіі", + "Version name" : "Назва версіі", + "Version restored" : "Версія адноўлена", + "Could not restore version" : "Не ўдалося аднавіць версію", + "Could not delete version" : "Не ўдалося выдаліць версію", + "File versions" : "Версіі файла" +}, +"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/apps/files_versions/l10n/be.json b/apps/files_versions/l10n/be.json new file mode 100644 index 00000000000..27e4f646a97 --- /dev/null +++ b/apps/files_versions/l10n/be.json @@ -0,0 +1,15 @@ +{ "translations": { + "Versions" : "Версіі", + "Current version" : "Бягучая версія", + "You" : "Вы", + "Delete version" : "Выдаліць версію", + "Cancel" : "Скасаваць", + "Remove version name" : "Выдаліць назву версіі", + "Save version name" : "Захаваць назву версіі", + "Version name" : "Назва версіі", + "Version restored" : "Версія адноўлена", + "Could not restore version" : "Не ўдалося аднавіць версію", + "Could not delete version" : "Не ўдалося выдаліць версію", + "File versions" : "Версіі файла" +},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 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/mk.js b/apps/files_versions/l10n/mk.js index d183f9ead5f..0e23cb9241d 100644 --- a/apps/files_versions/l10n/mk.js +++ b/apps/files_versions/l10n/mk.js @@ -3,9 +3,11 @@ OC.L10N.register( { "Versions" : "Верзии", "This application automatically maintains older versions of files that are changed." : "Оваа апликација автоматски ги менаџира постарите верзии на датотеките кој се изменети.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the 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" : "Промени име на верзијата", "Compare to current version" : "Спореди со моменталната верзија", @@ -20,6 +22,8 @@ OC.L10N.register( "Initial version restored" : "Почетната верзијата е вратена", "Version restored" : "Верзијата е вратена", "Could not restore version" : "Неможе да се врати верзијата", - "Could not delete version" : "Неможе да се избрише верзијата" + "Could not set version label" : "Неможе да се постави ознака на верзијата", + "Could not delete version" : "Неможе да се избрише верзијата", + "File versions" : "Верзии на датотеки" }, "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); diff --git a/apps/files_versions/l10n/mk.json b/apps/files_versions/l10n/mk.json index 0673758e352..0193422f6a0 100644 --- a/apps/files_versions/l10n/mk.json +++ b/apps/files_versions/l10n/mk.json @@ -1,9 +1,11 @@ { "translations": { "Versions" : "Верзии", "This application automatically maintains older versions of files that are changed." : "Оваа апликација автоматски ги менаџира постарите верзии на датотеките кој се изменети.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the 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" : "Промени име на верзијата", "Compare to current version" : "Спореди со моменталната верзија", @@ -18,6 +20,8 @@ "Initial version restored" : "Почетната верзијата е вратена", "Version restored" : "Верзијата е вратена", "Could not restore version" : "Неможе да се врати верзијата", - "Could not delete version" : "Неможе да се избрише верзијата" + "Could not set version label" : "Неможе да се постави ознака на верзијата", + "Could not delete version" : "Неможе да се избрише верзијата", + "File versions" : "Верзии на датотеки" },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/ru.js b/apps/files_versions/l10n/ru.js index 9472af2f1a3..ecdf5913c52 100644 --- a/apps/files_versions/l10n/ru.js +++ b/apps/files_versions/l10n/ru.js @@ -3,7 +3,7 @@ OC.L10N.register( { "Versions" : "Версии", "This application automatically maintains older versions of files that are changed." : "Приложение служит для обработки старых версий изменённых файлов.", - "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the 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% доступного в данный момент свободного места в учетной записи. Если сохраненные версии превысят это ограничение, приложение сначала удалит самые старые версии, пока не достигнет этого ограничения. Более подробная информация доступна в документации по версиям.", + "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" : "Вы", diff --git a/apps/files_versions/l10n/ru.json b/apps/files_versions/l10n/ru.json index f0870081d62..96392c99021 100644 --- a/apps/files_versions/l10n/ru.json +++ b/apps/files_versions/l10n/ru.json @@ -1,7 +1,7 @@ { "translations": { "Versions" : "Версии", "This application automatically maintains older versions of files that are changed." : "Приложение служит для обработки старых версий изменённых файлов.", - "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the 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% доступного в данный момент свободного места в учетной записи. Если сохраненные версии превысят это ограничение, приложение сначала удалит самые старые версии, пока не достигнет этого ограничения. Более подробная информация доступна в документации по версиям.", + "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" : "Вы", diff --git a/apps/files_versions/l10n/uk.js b/apps/files_versions/l10n/uk.js index e2a6801b0af..8b98d0f28c6 100644 --- a/apps/files_versions/l10n/uk.js +++ b/apps/files_versions/l10n/uk.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Versions" : "Версії", "This application automatically maintains older versions of files that are changed." : "Цей застосунок підтримує роботу з попередніми версіями файлів, які було змінено.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the 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\nОкрім терміну дії версій, програма «Версії» гарантує, що ніколи не буде використовуватися більше 50% вільного місця, доступного на даний момент в обліковому записі. Якщо збережені версії перевищують цей ліміт, програма спочатку видалить найстаріші версії, доки не буде досягнуто цього ліміту. Більше інформації можна знайти в документації «Версії».", "Current version" : "Поточна версія", "Initial version" : "Початкова версія", "You" : "Ви", diff --git a/apps/files_versions/l10n/uk.json b/apps/files_versions/l10n/uk.json index 7ff4719704e..e9ec39ed3d9 100644 --- a/apps/files_versions/l10n/uk.json +++ b/apps/files_versions/l10n/uk.json @@ -1,6 +1,7 @@ { "translations": { "Versions" : "Версії", "This application automatically maintains older versions of files that are changed." : "Цей застосунок підтримує роботу з попередніми версіями файлів, які було змінено.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the 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\nОкрім терміну дії версій, програма «Версії» гарантує, що ніколи не буде використовуватися більше 50% вільного місця, доступного на даний момент в обліковому записі. Якщо збережені версії перевищують цей ліміт, програма спочатку видалить найстаріші версії, доки не буде досягнуто цього ліміту. Більше інформації можна знайти в документації «Версії».", "Current version" : "Поточна версія", "Initial version" : "Початкова версія", "You" : "Ви", diff --git a/apps/files_versions/lib/Events/VersionCreatedEvent.php b/apps/files_versions/lib/Events/VersionCreatedEvent.php new file mode 100644 index 00000000000..4dc7a7cb505 --- /dev/null +++ b/apps/files_versions/lib/Events/VersionCreatedEvent.php @@ -0,0 +1,39 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Files_Versions\Events; + +use OCA\Files_Versions\Versions\IVersion; +use OCP\EventDispatcher\Event; +use OCP\Files\Node; + +/** + * Event dispatched after a successful creation of a version + */ +class VersionCreatedEvent extends Event { + public function __construct( + private Node $node, + private IVersion $version, + ) { + parent::__construct(); + } + + /** + * Node of the file that has been versioned + */ + public function getNode(): Node { + return $this->node; + } + + /** + * Version of the file that was created + */ + public function getVersion(): IVersion { + return $this->version; + } +} diff --git a/apps/files_versions/lib/Versions/INeedSyncVersionBackend.php b/apps/files_versions/lib/Versions/INeedSyncVersionBackend.php index 4faeaa48513..e52e2f8e8bc 100644 --- a/apps/files_versions/lib/Versions/INeedSyncVersionBackend.php +++ b/apps/files_versions/lib/Versions/INeedSyncVersionBackend.php @@ -8,13 +8,18 @@ declare(strict_types=1); */ namespace OCA\Files_Versions\Versions; +use OCA\Files_Versions\Db\VersionEntity; use OCP\Files\File; /** * @since 28.0.0 */ interface INeedSyncVersionBackend { - public function createVersionEntity(File $file): void; + /** + * TODO: Convert return type to strong type once all implementations are fixed. + * @return null|VersionEntity + */ + public function createVersionEntity(File $file); public function updateVersionEntity(File $sourceFile, int $revision, array $properties): void; public function deleteVersionsEntity(File $file): void; } diff --git a/apps/files_versions/lib/Versions/LegacyVersionsBackend.php b/apps/files_versions/lib/Versions/LegacyVersionsBackend.php index 40180674b7c..48d69d31629 100644 --- a/apps/files_versions/lib/Versions/LegacyVersionsBackend.php +++ b/apps/files_versions/lib/Versions/LegacyVersionsBackend.php @@ -229,7 +229,7 @@ class LegacyVersionsBackend implements IVersionBackend, IDeletableVersionBackend $this->versionsMapper->delete($versionEntity); } - public function createVersionEntity(File $file): void { + public function createVersionEntity(File $file): ?VersionEntity { $versionEntity = new VersionEntity(); $versionEntity->setFileId($file->getId()); $versionEntity->setTimestamp($file->getMTime()); @@ -241,8 +241,7 @@ class LegacyVersionsBackend implements IVersionBackend, IDeletableVersionBackend while ($tries < 5) { try { $this->versionsMapper->insert($versionEntity); - /* No errors, get out of the method */ - return; + return $versionEntity; } catch (\OCP\DB\Exception $e) { if (!in_array($e->getReason(), [ \OCP\DB\Exception::REASON_CONSTRAINT_VIOLATION, @@ -257,6 +256,8 @@ class LegacyVersionsBackend implements IVersionBackend, IDeletableVersionBackend $this->logger->warning('Constraint violation while inserting version, retrying with increased timestamp', ['exception' => $e]); } } + + return null; } public function updateVersionEntity(File $sourceFile, int $revision, array $properties): void { diff --git a/apps/files_versions/lib/Versions/VersionManager.php b/apps/files_versions/lib/Versions/VersionManager.php index f72e451f368..9acea8c6513 100644 --- a/apps/files_versions/lib/Versions/VersionManager.php +++ b/apps/files_versions/lib/Versions/VersionManager.php @@ -8,6 +8,8 @@ declare(strict_types=1); */ namespace OCA\Files_Versions\Versions; +use OCA\Files_Versions\Db\VersionEntity; +use OCA\Files_Versions\Events\VersionCreatedEvent; use OCA\Files_Versions\Events\VersionRestoredEvent; use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\File; @@ -129,7 +131,16 @@ class VersionManager implements IVersionManager, IDeletableVersionBackend, INeed public function createVersionEntity(File $file): void { $backend = $this->getBackendForStorage($file->getStorage()); if ($backend instanceof INeedSyncVersionBackend) { - $backend->createVersionEntity($file); + $versionEntity = $backend->createVersionEntity($file); + + if ($versionEntity instanceof VersionEntity) { + foreach ($backend->getVersionsForFile($file->getOwner(), $file) as $version) { + if ($version->getRevisionId() === $versionEntity->getTimestamp()) { + $this->dispatcher->dispatchTyped(new VersionCreatedEvent($file, $version)); + break; + } + } + } } } diff --git a/apps/files_versions/src/components/Version.vue b/apps/files_versions/src/components/Version.vue index 275f1d0ddbf..dc36e4134f9 100644 --- a/apps/files_versions/src/components/Version.vue +++ b/apps/files_versions/src/components/Version.vue @@ -137,7 +137,7 @@ import Delete from 'vue-material-design-icons/Delete.vue' import Download from 'vue-material-design-icons/Download.vue' import FileCompare from 'vue-material-design-icons/FileCompare.vue' import ImageOffOutline from 'vue-material-design-icons/ImageOffOutline.vue' -import Pencil from 'vue-material-design-icons/Pencil.vue' +import Pencil from 'vue-material-design-icons/PencilOutline.vue' import NcActionButton from '@nextcloud/vue/components/NcActionButton' import NcActionLink from '@nextcloud/vue/components/NcActionLink' diff --git a/apps/lookup_server_connector/l10n/be.js b/apps/lookup_server_connector/l10n/be.js new file mode 100644 index 00000000000..397c93957a4 --- /dev/null +++ b/apps/lookup_server_connector/l10n/be.js @@ -0,0 +1,7 @@ +OC.L10N.register( + "lookup_server_connector", + { + "Lookup Server Connector" : "Злучальнік сервера пошуку", + "Sync public account information with the lookup server" : "Сінхранізацыя публічных звестак пра ўліковы запіс з серверам пошуку" +}, +"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/apps/lookup_server_connector/l10n/be.json b/apps/lookup_server_connector/l10n/be.json new file mode 100644 index 00000000000..91b91347e2c --- /dev/null +++ b/apps/lookup_server_connector/l10n/be.json @@ -0,0 +1,5 @@ +{ "translations": { + "Lookup Server Connector" : "Злучальнік сервера пошуку", + "Sync public account information with the lookup server" : "Сінхранізацыя публічных звестак пра ўліковы запіс з серверам пошуку" +},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 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/oauth2/l10n/sw.js b/apps/oauth2/l10n/sw.js new file mode 100644 index 00000000000..44e346ffa4f --- /dev/null +++ b/apps/oauth2/l10n/sw.js @@ -0,0 +1,23 @@ +OC.L10N.register( + "oauth2", + { + "Your client is not authorized to connect. Please inform the administrator of your client." : "Mteja wako hajaidhinishwa kuunganisha. Tafadhali mjulishe msimamizi wa mteja wako.", + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "URL yako ya kuelekeza kwingine inahitaji kuwa URL kamili kwa mfano: https://yourdomain.com/path", + "OAuth 2.0" : "OAuth 2.0", + "Allows OAuth2 compatible authentication from other web applications." : "Huruhusu uthibitishaji tangamanifu wa OAuth2 kutoka kwa programu zingine za wavuti.", + "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "Programu ya OAuth2 huruhusu wasimamizi kusanidi utendakazi wa uthibitishaji uliojengewa ndani ili kuruhusu pia uthibitishaji unaooana na OAuth2 kutoka kwa programu zingine za wavuti.", + "OAuth 2.0 clients" : "OAuth 2.0 clients", + "OAuth 2.0 allows external services to request access to {instanceName}." : "OAuth 2.0 inaruhusu huduma za nje kuomba ufikiaji {instanceName}.", + "Name" : "Jina", + "Redirection URI" : "URI ya kuelekeza kwingine", + "Client Identifier" : "Kitambulisho cha Mteja", + "Secret key" : "Ufunguo wa siri", + "Delete client" : "Futa mteja", + "Make sure you store the secret key, it cannot be recovered." : "Hakikisha umehifadhi ufunguo wa siri, hauwezi kurejeshwa.", + "Add client" : "Ongeza mteja", + "Add" : "Ongeza", + "Show client secret" : "Onyesha siri ya mteja", + "Hide client secret" : "Ficha siri ya mteja", + "Delete" : "Futa" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/oauth2/l10n/sw.json b/apps/oauth2/l10n/sw.json new file mode 100644 index 00000000000..0bdbdd3a440 --- /dev/null +++ b/apps/oauth2/l10n/sw.json @@ -0,0 +1,21 @@ +{ "translations": { + "Your client is not authorized to connect. Please inform the administrator of your client." : "Mteja wako hajaidhinishwa kuunganisha. Tafadhali mjulishe msimamizi wa mteja wako.", + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "URL yako ya kuelekeza kwingine inahitaji kuwa URL kamili kwa mfano: https://yourdomain.com/path", + "OAuth 2.0" : "OAuth 2.0", + "Allows OAuth2 compatible authentication from other web applications." : "Huruhusu uthibitishaji tangamanifu wa OAuth2 kutoka kwa programu zingine za wavuti.", + "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "Programu ya OAuth2 huruhusu wasimamizi kusanidi utendakazi wa uthibitishaji uliojengewa ndani ili kuruhusu pia uthibitishaji unaooana na OAuth2 kutoka kwa programu zingine za wavuti.", + "OAuth 2.0 clients" : "OAuth 2.0 clients", + "OAuth 2.0 allows external services to request access to {instanceName}." : "OAuth 2.0 inaruhusu huduma za nje kuomba ufikiaji {instanceName}.", + "Name" : "Jina", + "Redirection URI" : "URI ya kuelekeza kwingine", + "Client Identifier" : "Kitambulisho cha Mteja", + "Secret key" : "Ufunguo wa siri", + "Delete client" : "Futa mteja", + "Make sure you store the secret key, it cannot be recovered." : "Hakikisha umehifadhi ufunguo wa siri, hauwezi kurejeshwa.", + "Add client" : "Ongeza mteja", + "Add" : "Ongeza", + "Show client secret" : "Onyesha siri ya mteja", + "Hide client secret" : "Ficha siri ya mteja", + "Delete" : "Futa" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/oauth2/l10n/uk.js b/apps/oauth2/l10n/uk.js index dc2e32f69f5..8c3b6433b20 100644 --- a/apps/oauth2/l10n/uk.js +++ b/apps/oauth2/l10n/uk.js @@ -13,6 +13,7 @@ OC.L10N.register( "Client Identifier" : "Ідентифікатор клієнта", "Secret key" : "Пароль", "Delete client" : "Вилучити клієнта", + "Make sure you store the secret key, it cannot be recovered." : "Обов'язково збережіть секретний ключ, його неможливо відновити.", "Add client" : "Додати клієнта", "Add" : "Додати", "Show client secret" : "Показати ключ клієнта", diff --git a/apps/oauth2/l10n/uk.json b/apps/oauth2/l10n/uk.json index 9ac03ad0625..ad7906e1795 100644 --- a/apps/oauth2/l10n/uk.json +++ b/apps/oauth2/l10n/uk.json @@ -11,6 +11,7 @@ "Client Identifier" : "Ідентифікатор клієнта", "Secret key" : "Пароль", "Delete client" : "Вилучити клієнта", + "Make sure you store the secret key, it cannot be recovered." : "Обов'язково збережіть секретний ключ, його неможливо відновити.", "Add client" : "Додати клієнта", "Add" : "Додати", "Show client secret" : "Показати ключ клієнта", diff --git a/apps/oauth2/src/components/OAuthItem.vue b/apps/oauth2/src/components/OAuthItem.vue index 3341a86168a..5a8f1556203 100644 --- a/apps/oauth2/src/components/OAuthItem.vue +++ b/apps/oauth2/src/components/OAuthItem.vue @@ -35,7 +35,7 @@ <script> -import Delete from 'vue-material-design-icons/Delete.vue' +import Delete from 'vue-material-design-icons/DeleteOutline.vue' import EyeOutline from 'vue-material-design-icons/EyeOutline.vue' import NcButton from '@nextcloud/vue/components/NcButton' diff --git a/apps/profile/l10n/be.js b/apps/profile/l10n/be.js new file mode 100644 index 00000000000..40762e2b51c --- /dev/null +++ b/apps/profile/l10n/be.js @@ -0,0 +1,12 @@ +OC.L10N.register( + "profile", + { + "Profile" : "Профіль", + "You have not added any info yet" : "Вы пакуль не дадалі ніякай інфармацыі", + "{user} has not added any info yet" : "{user} пакуль не дадаў(-ла) ніякай інфармацыі", + "Edit Profile" : "Рэдагаваць профіль", + "Profile not found" : "Профіль не знойдзены", + "The profile does not exist." : "Профіль не існуе.", + "Back to %s" : "Назад да %s" +}, +"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/apps/profile/l10n/be.json b/apps/profile/l10n/be.json new file mode 100644 index 00000000000..16101d03b70 --- /dev/null +++ b/apps/profile/l10n/be.json @@ -0,0 +1,10 @@ +{ "translations": { + "Profile" : "Профіль", + "You have not added any info yet" : "Вы пакуль не дадалі ніякай інфармацыі", + "{user} has not added any info yet" : "{user} пакуль не дадаў(-ла) ніякай інфармацыі", + "Edit Profile" : "Рэдагаваць профіль", + "Profile not found" : "Профіль не знойдзены", + "The profile does not exist." : "Профіль не існуе.", + "Back to %s" : "Назад да %s" +},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 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/profile/src/views/Profile.vue b/apps/profile/src/views/Profile.vue index 7865c0d05f1..046a731cb93 100644 --- a/apps/profile/src/views/Profile.vue +++ b/apps/profile/src/views/Profile.vue @@ -134,9 +134,9 @@ import NcButton from '@nextcloud/vue/components/NcButton' import NcContent from '@nextcloud/vue/components/NcContent' import NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent' import NcRichText from '@nextcloud/vue/components/NcRichText' -import AccountIcon from 'vue-material-design-icons/Account.vue' +import AccountIcon from 'vue-material-design-icons/AccountOutline.vue' import MapMarkerIcon from 'vue-material-design-icons/MapMarker.vue' -import PencilIcon from 'vue-material-design-icons/Pencil.vue' +import PencilIcon from 'vue-material-design-icons/PencilOutline.vue' interface IProfileAction { target: string diff --git a/apps/provisioning_api/l10n/cs.js b/apps/provisioning_api/l10n/cs.js index 2705acc4fce..a6fdb3482fa 100644 --- a/apps/provisioning_api/l10n/cs.js +++ b/apps/provisioning_api/l10n/cs.js @@ -13,6 +13,7 @@ OC.L10N.register( "Invalid password value" : "Neplatná hodnota hesla", "An email address is required, to send a password link to the user." : "Je vyžadována e-mailová adresa (pro zaslání odkazu na heslo uživateli).", "Required email address was not provided" : "Nebyla poskytnuta potřebná e-mailová adresa", + "User creation failed" : "Vytváření uživatele se nezdařilo", "Invalid quota value: %1$s" : "Neplatná hodnota kvóty: %1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "Neplatná hodnota kvóty. %1$s překračuje maximální kvótu", "Unlimited quota is forbidden on this instance" : "Neomezená kvóta není na této instanci dovolena", diff --git a/apps/provisioning_api/l10n/cs.json b/apps/provisioning_api/l10n/cs.json index 00cf059abd9..6f9ad347813 100644 --- a/apps/provisioning_api/l10n/cs.json +++ b/apps/provisioning_api/l10n/cs.json @@ -11,6 +11,7 @@ "Invalid password value" : "Neplatná hodnota hesla", "An email address is required, to send a password link to the user." : "Je vyžadována e-mailová adresa (pro zaslání odkazu na heslo uživateli).", "Required email address was not provided" : "Nebyla poskytnuta potřebná e-mailová adresa", + "User creation failed" : "Vytváření uživatele se nezdařilo", "Invalid quota value: %1$s" : "Neplatná hodnota kvóty: %1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "Neplatná hodnota kvóty. %1$s překračuje maximální kvótu", "Unlimited quota is forbidden on this instance" : "Neomezená kvóta není na této instanci dovolena", diff --git a/apps/provisioning_api/l10n/de.js b/apps/provisioning_api/l10n/de.js index 155d7f9c848..f4e30f174f7 100644 --- a/apps/provisioning_api/l10n/de.js +++ b/apps/provisioning_api/l10n/de.js @@ -13,6 +13,7 @@ OC.L10N.register( "Invalid password value" : "Ungültiger Passwort-Wert", "An email address is required, to send a password link to the user." : "Um dem Benutzer einen Passwortlink zu senden, ist eine E-Mail-Adresse erforderlich.", "Required email address was not provided" : "Erforderliche E-Mail-Adresse wurde nicht angegeben", + "User creation failed" : "Benutzererstellung fehlgeschlagen", "Invalid quota value: %1$s" : "Ungültiger Wert für Speicherkontigent: %1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "Ungültiger Wert für Speicherkontigent. %1$s überschreitet das maximale Kontigent", "Unlimited quota is forbidden on this instance" : "Unbegrenztes Speicherkontigent ist auf dieser Instanz unzulässig", diff --git a/apps/provisioning_api/l10n/de.json b/apps/provisioning_api/l10n/de.json index 0fa532f48cd..85c24424b21 100644 --- a/apps/provisioning_api/l10n/de.json +++ b/apps/provisioning_api/l10n/de.json @@ -11,6 +11,7 @@ "Invalid password value" : "Ungültiger Passwort-Wert", "An email address is required, to send a password link to the user." : "Um dem Benutzer einen Passwortlink zu senden, ist eine E-Mail-Adresse erforderlich.", "Required email address was not provided" : "Erforderliche E-Mail-Adresse wurde nicht angegeben", + "User creation failed" : "Benutzererstellung fehlgeschlagen", "Invalid quota value: %1$s" : "Ungültiger Wert für Speicherkontigent: %1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "Ungültiger Wert für Speicherkontigent. %1$s überschreitet das maximale Kontigent", "Unlimited quota is forbidden on this instance" : "Unbegrenztes Speicherkontigent ist auf dieser Instanz unzulässig", diff --git a/apps/provisioning_api/l10n/de_DE.js b/apps/provisioning_api/l10n/de_DE.js index b72a261fca5..0a44ee87126 100644 --- a/apps/provisioning_api/l10n/de_DE.js +++ b/apps/provisioning_api/l10n/de_DE.js @@ -13,6 +13,7 @@ OC.L10N.register( "Invalid password value" : "Ungültiger Passwort-Wert", "An email address is required, to send a password link to the user." : "Um dem Benutzer einen Passwortlink zu senden, ist eine E-Mail-Adresse erforderlich.", "Required email address was not provided" : "Erforderliche E-Mail-Adresse wurde nicht angegeben", + "User creation failed" : "Benutzererstellung fehlgeschlagen", "Invalid quota value: %1$s" : "Ungültiger Wert für Speicherkontigent: %1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "Ungültiger Wert für Speicherkontigent. %1$s überschreitet das maximale Kontigent", "Unlimited quota is forbidden on this instance" : "Unbegrenztes Speicherkontigent ist auf dieser Instanz unzulässig", diff --git a/apps/provisioning_api/l10n/de_DE.json b/apps/provisioning_api/l10n/de_DE.json index e52417da126..84036ced30b 100644 --- a/apps/provisioning_api/l10n/de_DE.json +++ b/apps/provisioning_api/l10n/de_DE.json @@ -11,6 +11,7 @@ "Invalid password value" : "Ungültiger Passwort-Wert", "An email address is required, to send a password link to the user." : "Um dem Benutzer einen Passwortlink zu senden, ist eine E-Mail-Adresse erforderlich.", "Required email address was not provided" : "Erforderliche E-Mail-Adresse wurde nicht angegeben", + "User creation failed" : "Benutzererstellung fehlgeschlagen", "Invalid quota value: %1$s" : "Ungültiger Wert für Speicherkontigent: %1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "Ungültiger Wert für Speicherkontigent. %1$s überschreitet das maximale Kontigent", "Unlimited quota is forbidden on this instance" : "Unbegrenztes Speicherkontigent ist auf dieser Instanz unzulässig", diff --git a/apps/provisioning_api/l10n/en_GB.js b/apps/provisioning_api/l10n/en_GB.js index 469642b202c..3469fee516d 100644 --- a/apps/provisioning_api/l10n/en_GB.js +++ b/apps/provisioning_api/l10n/en_GB.js @@ -13,6 +13,7 @@ OC.L10N.register( "Invalid password value" : "Invalid password value", "An email address is required, to send a password link to the user." : "An email address is required, to send a password link to the user.", "Required email address was not provided" : "Required email address was not provided", + "User creation failed" : "User creation failed", "Invalid quota value: %1$s" : "Invalid quota value: %1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "Invalid quota value. %1$s is exceeding the maximum quota", "Unlimited quota is forbidden on this instance" : "Unlimited quota is forbidden on this instance", diff --git a/apps/provisioning_api/l10n/en_GB.json b/apps/provisioning_api/l10n/en_GB.json index 0a60e2dc48b..6a6898da4c4 100644 --- a/apps/provisioning_api/l10n/en_GB.json +++ b/apps/provisioning_api/l10n/en_GB.json @@ -11,6 +11,7 @@ "Invalid password value" : "Invalid password value", "An email address is required, to send a password link to the user." : "An email address is required, to send a password link to the user.", "Required email address was not provided" : "Required email address was not provided", + "User creation failed" : "User creation failed", "Invalid quota value: %1$s" : "Invalid quota value: %1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "Invalid quota value. %1$s is exceeding the maximum quota", "Unlimited quota is forbidden on this instance" : "Unlimited quota is forbidden on this instance", diff --git a/apps/provisioning_api/l10n/et_EE.js b/apps/provisioning_api/l10n/et_EE.js new file mode 100644 index 00000000000..2081f8c467c --- /dev/null +++ b/apps/provisioning_api/l10n/et_EE.js @@ -0,0 +1,41 @@ +OC.L10N.register( + "provisioning_api", + { + "Logged in account must be an administrator or have authorization to edit this setting." : "Sisselogitud kasutajakonto peab olema peakasutajat või omama eraldi õigust selle seadustuse muutmiseks.", + "User already exists" : "Kasutaja on juba olemas", + "Group %1$s does not exist" : "%1$s gruppi pole olemas", + "Insufficient privileges for group %1$s" : "%1$s grupi jaoks pole pole piisavalt õigusi", + "No group specified (required for sub-admins)" : "Ühtegi gruppi pole määratud (vajalik peakasutajate alamgrupi puhul)", + "Sub-admin group does not exist" : "Peakasutajate alamgruppi pole olemas", + "Cannot create sub-admins for admin group" : "Peakasutajate grupi alamgruppi loomine ei õnnestu", + "No permissions to promote sub-admins" : "Pole õigusi peakasutajat alamgruppi määramiseks", + "Invalid password value" : "Vigane salasõna väärtus", + "An email address is required, to send a password link to the user." : "Salasõnalingi saatmiseks kasutajale on vajalik e-posti aadress.", + "Required email address was not provided" : "Vajalik e-posti aadress on lisamata", + "User creation failed" : "Kasutaja loomine ei õnnestunud", + "Invalid quota value: %1$s" : "Vigane kvoodi väärtus: %1$s", + "Invalid quota value. %1$s is exceeding the maximum quota" : "Vigane kvoodi väärtus. %1$s üledab maksimumkvoodi piiri", + "Unlimited quota is forbidden on this instance" : "Piiramatu kvoodi kasutamine on selles serveris keelatud", + "Setting the password is not supported by the users backend" : "Salasõna lisamine pole kasutajate taustateenuse poolt toetatud", + "Invalid language" : "Vigane keel", + "Invalid locale" : "Vigane lokaat", + "Invalid first day of week" : "Vigane nädala esimene päev", + "Cannot remove yourself from the admin group" : "Sa ei saa end peakasutajate grupist eemaldada", + "Cannot remove yourself from this group as you are a sub-admin" : "Kuna oled peakasutajate alamgrupi liige, siis sa ei saa end eemaldada", + "Not viable to remove user from the last group you are sub-admin of" : "Pole mõistlik eemaldada kasutajat viimasest grupist, kus oled peakasutajate alamgrupi liige", + "User does not exist" : "Kasutajat pole olemas", + "Group does not exist" : "Gruppi pole olemas", + "User is not a sub-admin of this group" : "Kasutaja pole selle grupi peakasutajate alamgrupi liige", + "Email address not available" : "E-posti aadress pole saadaval", + "Sending email failed" : "E-kirja saatmine ei õnnestunud", + "Email confirmation" : "E-posti aadressi kinnitamine", + "To enable the email address %s please click the button below." : "%s e-posti aadressi kinnitamiseks palun klõpsi järgnevat nuppu.", + "Confirm" : "Kinnita", + "Email was already removed from account and cannot be confirmed anymore." : "E-posti aadress on kasutaja andmetest eemaldatud ja seda ei saa enam kinnitada.", + "Could not verify mail because the token is expired." : "Kuna tunnusluba on aegunud, siis e-posti aadressi kinnitamine pole võimalik.", + "Could not verify mail because the token is invalid." : "Kuna tunnusluba on vigane, siis e-posti aadressi kinnitamine pole võimalik.", + "An unexpected error occurred. Please contact your admin." : "Tekkis ootamatu viga. Palun võta ühendust peakasutajaga.", + "Email confirmation successful" : "E-posti aadressi kinnitamine õnnestus.", + "This application enables a set of APIs that external systems can use to manage accounts, groups and apps." : "See rakendus võtab kasutusele sellised API-d mis võimaldavad välistel süsteemidel hallata kasutajakontosid, gruppe ja rakendusi." +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/provisioning_api/l10n/et_EE.json b/apps/provisioning_api/l10n/et_EE.json new file mode 100644 index 00000000000..f339e224be0 --- /dev/null +++ b/apps/provisioning_api/l10n/et_EE.json @@ -0,0 +1,39 @@ +{ "translations": { + "Logged in account must be an administrator or have authorization to edit this setting." : "Sisselogitud kasutajakonto peab olema peakasutajat või omama eraldi õigust selle seadustuse muutmiseks.", + "User already exists" : "Kasutaja on juba olemas", + "Group %1$s does not exist" : "%1$s gruppi pole olemas", + "Insufficient privileges for group %1$s" : "%1$s grupi jaoks pole pole piisavalt õigusi", + "No group specified (required for sub-admins)" : "Ühtegi gruppi pole määratud (vajalik peakasutajate alamgrupi puhul)", + "Sub-admin group does not exist" : "Peakasutajate alamgruppi pole olemas", + "Cannot create sub-admins for admin group" : "Peakasutajate grupi alamgruppi loomine ei õnnestu", + "No permissions to promote sub-admins" : "Pole õigusi peakasutajat alamgruppi määramiseks", + "Invalid password value" : "Vigane salasõna väärtus", + "An email address is required, to send a password link to the user." : "Salasõnalingi saatmiseks kasutajale on vajalik e-posti aadress.", + "Required email address was not provided" : "Vajalik e-posti aadress on lisamata", + "User creation failed" : "Kasutaja loomine ei õnnestunud", + "Invalid quota value: %1$s" : "Vigane kvoodi väärtus: %1$s", + "Invalid quota value. %1$s is exceeding the maximum quota" : "Vigane kvoodi väärtus. %1$s üledab maksimumkvoodi piiri", + "Unlimited quota is forbidden on this instance" : "Piiramatu kvoodi kasutamine on selles serveris keelatud", + "Setting the password is not supported by the users backend" : "Salasõna lisamine pole kasutajate taustateenuse poolt toetatud", + "Invalid language" : "Vigane keel", + "Invalid locale" : "Vigane lokaat", + "Invalid first day of week" : "Vigane nädala esimene päev", + "Cannot remove yourself from the admin group" : "Sa ei saa end peakasutajate grupist eemaldada", + "Cannot remove yourself from this group as you are a sub-admin" : "Kuna oled peakasutajate alamgrupi liige, siis sa ei saa end eemaldada", + "Not viable to remove user from the last group you are sub-admin of" : "Pole mõistlik eemaldada kasutajat viimasest grupist, kus oled peakasutajate alamgrupi liige", + "User does not exist" : "Kasutajat pole olemas", + "Group does not exist" : "Gruppi pole olemas", + "User is not a sub-admin of this group" : "Kasutaja pole selle grupi peakasutajate alamgrupi liige", + "Email address not available" : "E-posti aadress pole saadaval", + "Sending email failed" : "E-kirja saatmine ei õnnestunud", + "Email confirmation" : "E-posti aadressi kinnitamine", + "To enable the email address %s please click the button below." : "%s e-posti aadressi kinnitamiseks palun klõpsi järgnevat nuppu.", + "Confirm" : "Kinnita", + "Email was already removed from account and cannot be confirmed anymore." : "E-posti aadress on kasutaja andmetest eemaldatud ja seda ei saa enam kinnitada.", + "Could not verify mail because the token is expired." : "Kuna tunnusluba on aegunud, siis e-posti aadressi kinnitamine pole võimalik.", + "Could not verify mail because the token is invalid." : "Kuna tunnusluba on vigane, siis e-posti aadressi kinnitamine pole võimalik.", + "An unexpected error occurred. Please contact your admin." : "Tekkis ootamatu viga. Palun võta ühendust peakasutajaga.", + "Email confirmation successful" : "E-posti aadressi kinnitamine õnnestus.", + "This application enables a set of APIs that external systems can use to manage accounts, groups and apps." : "See rakendus võtab kasutusele sellised API-d mis võimaldavad välistel süsteemidel hallata kasutajakontosid, gruppe ja rakendusi." +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/ga.js b/apps/provisioning_api/l10n/ga.js index ff44b2ee659..6d6b3944c48 100644 --- a/apps/provisioning_api/l10n/ga.js +++ b/apps/provisioning_api/l10n/ga.js @@ -13,6 +13,7 @@ OC.L10N.register( "Invalid password value" : "Luach pasfhocail neamhbhailí", "An email address is required, to send a password link to the user." : "Tá seoladh ríomhphoist ag teastáil, chun nasc pasfhocal a sheoladh chuig an úsáideoir.", "Required email address was not provided" : "Níor cuireadh an seoladh ríomhphoist riachtanach ar fáil", + "User creation failed" : "Theip ar chruthú úsáideora", "Invalid quota value: %1$s" : "Luach cuóta neamhbhailí: %1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "Luach cuóta neamhbhailí. Tá %1$s níos mó ná an t-uaschuóta", "Unlimited quota is forbidden on this instance" : "Tá cosc ar chuóta neamhtheoranta sa chás seo", diff --git a/apps/provisioning_api/l10n/ga.json b/apps/provisioning_api/l10n/ga.json index 7adbb45272a..691a2dc7af6 100644 --- a/apps/provisioning_api/l10n/ga.json +++ b/apps/provisioning_api/l10n/ga.json @@ -11,6 +11,7 @@ "Invalid password value" : "Luach pasfhocail neamhbhailí", "An email address is required, to send a password link to the user." : "Tá seoladh ríomhphoist ag teastáil, chun nasc pasfhocal a sheoladh chuig an úsáideoir.", "Required email address was not provided" : "Níor cuireadh an seoladh ríomhphoist riachtanach ar fáil", + "User creation failed" : "Theip ar chruthú úsáideora", "Invalid quota value: %1$s" : "Luach cuóta neamhbhailí: %1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "Luach cuóta neamhbhailí. Tá %1$s níos mó ná an t-uaschuóta", "Unlimited quota is forbidden on this instance" : "Tá cosc ar chuóta neamhtheoranta sa chás seo", diff --git a/apps/provisioning_api/l10n/pt_BR.js b/apps/provisioning_api/l10n/pt_BR.js index cff70469649..4fbd4024484 100644 --- a/apps/provisioning_api/l10n/pt_BR.js +++ b/apps/provisioning_api/l10n/pt_BR.js @@ -13,6 +13,7 @@ OC.L10N.register( "Invalid password value" : "Valor de senha inválido", "An email address is required, to send a password link to the user." : "É necessário um endereço de e-mail, para enviar um link de senha para o usuário.", "Required email address was not provided" : "O endereço de e-mail obrigatório não foi fornecido", + "User creation failed" : "Falha na criação do usuário", "Invalid quota value: %1$s" : "Valor de cota inválido: %1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "Valor de cota inválido. %1$s está excedendo a cota máxima", "Unlimited quota is forbidden on this instance" : "Cota ilimitada é proibida nesta instância", diff --git a/apps/provisioning_api/l10n/pt_BR.json b/apps/provisioning_api/l10n/pt_BR.json index d074bd9e832..bb951174d30 100644 --- a/apps/provisioning_api/l10n/pt_BR.json +++ b/apps/provisioning_api/l10n/pt_BR.json @@ -11,6 +11,7 @@ "Invalid password value" : "Valor de senha inválido", "An email address is required, to send a password link to the user." : "É necessário um endereço de e-mail, para enviar um link de senha para o usuário.", "Required email address was not provided" : "O endereço de e-mail obrigatório não foi fornecido", + "User creation failed" : "Falha na criação do usuário", "Invalid quota value: %1$s" : "Valor de cota inválido: %1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "Valor de cota inválido. %1$s está excedendo a cota máxima", "Unlimited quota is forbidden on this instance" : "Cota ilimitada é proibida nesta instância", diff --git a/apps/provisioning_api/l10n/uk.js b/apps/provisioning_api/l10n/uk.js index ca720ba4d75..11c218eea89 100644 --- a/apps/provisioning_api/l10n/uk.js +++ b/apps/provisioning_api/l10n/uk.js @@ -11,13 +11,16 @@ OC.L10N.register( "Cannot create sub-admins for admin group" : "Неможливо створити другорядних адміністраторів для групи адміністраторів", "No permissions to promote sub-admins" : "Відсутні дозволи для збільшення повноважень другорядних адміністраторів", "Invalid password value" : "Недійсне значення паролю", + "An email address is required, to send a password link to the user." : "Для надсилання посилання на пароль користувачеві необхідна адреса електронної пошти.", "Required email address was not provided" : "Не зазначено обов'язкової ел. адреси", + "User creation failed" : "Не вдалося створити користувача", "Invalid quota value: %1$s" : "Недійсне значення квоти: %1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "Недійсне значення квоти: %1$s перебільшує максимальну квоту", "Unlimited quota is forbidden on this instance" : "Необмежену квоту заборонено на цьому примірнику", "Setting the password is not supported by the users backend" : "Встановлення паролю не підтримується бекендом користувача", "Invalid language" : "Недійсний вибір мови", "Invalid locale" : "Недійсний вибір локалі", + "Invalid first day of week" : "Недійсний перший день тижня", "Cannot remove yourself from the admin group" : "Неможливо вилучити себе із групи адміністраторів", "Cannot remove yourself from this group as you are a sub-admin" : "Неможливо вилучити себе із цієї групи, оскільки ви є другорядним адміністратором", "Not viable to remove user from the last group you are sub-admin of" : "Неможливо вилучити користувача з останньої групи, в якій ви є другорядним адміністратором", @@ -35,6 +38,7 @@ OC.L10N.register( "An unexpected error occurred. Please contact your admin." : "Сталася неочікувана помилка. Будь ласка, зверніться до свого адміністратора.", "Email confirmation successful" : "Підтвердження електронною поштою успішно", "Provisioning API" : "API надання", - "This application enables a set of APIs that external systems can use to manage accounts, groups and apps." : "Цей застосунок надає доступ до набору API, які можуть використовувати стоонні системи для керування обліковими записами, групами та застосунками." + "This application enables a set of APIs that external systems can use to manage accounts, groups and apps." : "Цей застосунок надає доступ до набору API, які можуть використовувати стоонні системи для керування обліковими записами, групами та застосунками.", + "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Цей застосунок підтримує набір API, які зовнішні системи можуть використовувати для створення, редагування, видалення та запитів користувача атрибути, запит, встановлення та видалення груп, встановлення квоти та запит загального обсягу пам’яті, що використовується в Nextcloud. Адміністратори групи користувачів також можуть надсилати запити Nextcloud і виконувати ті самі функції, що й адміністратори, для груп, якими вони керують. API також дозволяє адміністраторам надсилати запити до активних застосунків Nextcloud, отримувати інформацію про застосунок та віддалено вмикати чи вимикати застосунок. Після увімкнення застосунку HTTP-запити можна використовувати через заголовок Basic Auth для виконання будь-яких функцій, які перераховано вище. Додаткову інформацію можна знайти в документації Provisioning API включно з прикладами викликів та відповідей сервера." }, "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/provisioning_api/l10n/uk.json b/apps/provisioning_api/l10n/uk.json index d3ecd2c1336..09884faa2e7 100644 --- a/apps/provisioning_api/l10n/uk.json +++ b/apps/provisioning_api/l10n/uk.json @@ -9,13 +9,16 @@ "Cannot create sub-admins for admin group" : "Неможливо створити другорядних адміністраторів для групи адміністраторів", "No permissions to promote sub-admins" : "Відсутні дозволи для збільшення повноважень другорядних адміністраторів", "Invalid password value" : "Недійсне значення паролю", + "An email address is required, to send a password link to the user." : "Для надсилання посилання на пароль користувачеві необхідна адреса електронної пошти.", "Required email address was not provided" : "Не зазначено обов'язкової ел. адреси", + "User creation failed" : "Не вдалося створити користувача", "Invalid quota value: %1$s" : "Недійсне значення квоти: %1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "Недійсне значення квоти: %1$s перебільшує максимальну квоту", "Unlimited quota is forbidden on this instance" : "Необмежену квоту заборонено на цьому примірнику", "Setting the password is not supported by the users backend" : "Встановлення паролю не підтримується бекендом користувача", "Invalid language" : "Недійсний вибір мови", "Invalid locale" : "Недійсний вибір локалі", + "Invalid first day of week" : "Недійсний перший день тижня", "Cannot remove yourself from the admin group" : "Неможливо вилучити себе із групи адміністраторів", "Cannot remove yourself from this group as you are a sub-admin" : "Неможливо вилучити себе із цієї групи, оскільки ви є другорядним адміністратором", "Not viable to remove user from the last group you are sub-admin of" : "Неможливо вилучити користувача з останньої групи, в якій ви є другорядним адміністратором", @@ -33,6 +36,7 @@ "An unexpected error occurred. Please contact your admin." : "Сталася неочікувана помилка. Будь ласка, зверніться до свого адміністратора.", "Email confirmation successful" : "Підтвердження електронною поштою успішно", "Provisioning API" : "API надання", - "This application enables a set of APIs that external systems can use to manage accounts, groups and apps." : "Цей застосунок надає доступ до набору API, які можуть використовувати стоонні системи для керування обліковими записами, групами та застосунками." + "This application enables a set of APIs that external systems can use to manage accounts, groups and apps." : "Цей застосунок надає доступ до набору API, які можуть використовувати стоонні системи для керування обліковими записами, групами та застосунками.", + "This application enables a set of APIs that external systems can use to create, edit, delete and query account\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin accounts\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Цей застосунок підтримує набір API, які зовнішні системи можуть використовувати для створення, редагування, видалення та запитів користувача атрибути, запит, встановлення та видалення груп, встановлення квоти та запит загального обсягу пам’яті, що використовується в Nextcloud. Адміністратори групи користувачів також можуть надсилати запити Nextcloud і виконувати ті самі функції, що й адміністратори, для груп, якими вони керують. API також дозволяє адміністраторам надсилати запити до активних застосунків Nextcloud, отримувати інформацію про застосунок та віддалено вмикати чи вимикати застосунок. Після увімкнення застосунку HTTP-запити можна використовувати через заголовок Basic Auth для виконання будь-яких функцій, які перераховано вище. Додаткову інформацію можна знайти в документації Provisioning API включно з прикладами викликів та відповідей сервера." },"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/provisioning_api/l10n/zh_HK.js b/apps/provisioning_api/l10n/zh_HK.js index a5b009391a8..50e0bd73c4a 100644 --- a/apps/provisioning_api/l10n/zh_HK.js +++ b/apps/provisioning_api/l10n/zh_HK.js @@ -13,6 +13,7 @@ OC.L10N.register( "Invalid password value" : "無效的密碼值", "An email address is required, to send a password link to the user." : "需要提供電郵地址,以便向用戶發送密碼鏈接。", "Required email address was not provided" : "未提供必要的電郵地址", + "User creation failed" : "用戶建立失敗", "Invalid quota value: %1$s" : "無效的空間限額值:%1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "無效的空間限額值。%1$s 超過了最大空間限額", "Unlimited quota is forbidden on this instance" : "此實例禁止無限空間限額", diff --git a/apps/provisioning_api/l10n/zh_HK.json b/apps/provisioning_api/l10n/zh_HK.json index 39fdcf578fa..3ad90d8b398 100644 --- a/apps/provisioning_api/l10n/zh_HK.json +++ b/apps/provisioning_api/l10n/zh_HK.json @@ -11,6 +11,7 @@ "Invalid password value" : "無效的密碼值", "An email address is required, to send a password link to the user." : "需要提供電郵地址,以便向用戶發送密碼鏈接。", "Required email address was not provided" : "未提供必要的電郵地址", + "User creation failed" : "用戶建立失敗", "Invalid quota value: %1$s" : "無效的空間限額值:%1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "無效的空間限額值。%1$s 超過了最大空間限額", "Unlimited quota is forbidden on this instance" : "此實例禁止無限空間限額", diff --git a/apps/provisioning_api/l10n/zh_TW.js b/apps/provisioning_api/l10n/zh_TW.js index 038c95a537d..716e6e0ee44 100644 --- a/apps/provisioning_api/l10n/zh_TW.js +++ b/apps/provisioning_api/l10n/zh_TW.js @@ -13,6 +13,7 @@ OC.L10N.register( "Invalid password value" : "無效的密碼值", "An email address is required, to send a password link to the user." : "電子郵件地址必填,用來寄送密碼連結給使用者。", "Required email address was not provided" : "未提供必要的電子郵件地址", + "User creation failed" : "使用者建立失敗", "Invalid quota value: %1$s" : "無效的空間限額值:%1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "無效的空間限額值。%1$s 超過了最大空間限額", "Unlimited quota is forbidden on this instance" : "此站台禁止無限空間限額", diff --git a/apps/provisioning_api/l10n/zh_TW.json b/apps/provisioning_api/l10n/zh_TW.json index 91cffa5ce90..e8b80a3f1d2 100644 --- a/apps/provisioning_api/l10n/zh_TW.json +++ b/apps/provisioning_api/l10n/zh_TW.json @@ -11,6 +11,7 @@ "Invalid password value" : "無效的密碼值", "An email address is required, to send a password link to the user." : "電子郵件地址必填,用來寄送密碼連結給使用者。", "Required email address was not provided" : "未提供必要的電子郵件地址", + "User creation failed" : "使用者建立失敗", "Invalid quota value: %1$s" : "無效的空間限額值:%1$s", "Invalid quota value. %1$s is exceeding the maximum quota" : "無效的空間限額值。%1$s 超過了最大空間限額", "Unlimited quota is forbidden on this instance" : "此站台禁止無限空間限額", diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php index 51b18306b51..1d1d0e8d2f9 100644 --- a/apps/provisioning_api/lib/Controller/UsersController.php +++ b/apps/provisioning_api/lib/Controller/UsersController.php @@ -542,10 +542,16 @@ class UsersController extends AUserDataOCSController { throw new OCSException($this->l10n->t('Required email address was not provided'), 110); } + // Create the user try { $newUser = $this->userManager->createUser($userid, $password); - $this->logger->info('Successful addUser call with userid: ' . $userid, ['app' => 'ocs_api']); + if (!$newUser instanceof IUser) { + // If the user is not an instance of IUser, it means the user creation failed + $this->logger->error('Failed addUser attempt: User creation failed.', ['app' => 'ocs_api']); + throw new OCSException($this->l10n->t('User creation failed'), 111); + } + $this->logger->info('Successful addUser call with userid: ' . $userid, ['app' => 'ocs_api']); foreach ($groups as $group) { $this->groupManager->get($group)->addUser($newUser); $this->logger->info('Added userid ' . $userid . ' to group ' . $group, ['app' => 'ocs_api']); diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php index 85ec9e374d6..e838cd16633 100644 --- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php +++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php @@ -452,7 +452,8 @@ class UsersControllerTest extends TestCase { $this->userManager ->expects($this->once()) ->method('createUser') - ->with('NewUser', 'PasswordOfTheNewUser'); + ->with('NewUser', 'PasswordOfTheNewUser') + ->willReturn($this->createMock(IUser::class)); $this->logger ->expects($this->once()) ->method('info') @@ -517,7 +518,8 @@ class UsersControllerTest extends TestCase { $this->userManager ->expects($this->once()) ->method('createUser') - ->with('NewUser', 'PasswordOfTheNewUser'); + ->with('NewUser', 'PasswordOfTheNewUser') + ->willReturn($this->createMock(IUser::class)); $this->logger ->expects($this->once()) ->method('info') @@ -567,7 +569,8 @@ class UsersControllerTest extends TestCase { $this->userManager ->expects($this->once()) ->method('createUser') - ->with($this->anything(), 'PasswordOfTheNewUser'); + ->with($this->anything(), 'PasswordOfTheNewUser') + ->willReturn($this->createMock(IUser::class)); $this->logger ->expects($this->once()) ->method('info') diff --git a/apps/settings/img/password.svg b/apps/settings/img/password.svg index be3362cf765..07d9fcea162 100644 --- a/apps/settings/img/password.svg +++ b/apps/settings/img/password.svg @@ -1 +1 @@ -<svg viewBox="0 0 16 16" height="16" width="16" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M6.308 21.5c-.497 0-.923-.177-1.277-.531a1.742 1.742 0 0 1-.531-1.277v-9.384c0-.497.177-.923.531-1.277.354-.354.78-.531 1.277-.531H7.5v-2c0-1.249.438-2.311 1.314-3.187C9.689 2.438 10.751 2 12 2c1.249 0 2.311.438 3.187 1.313.875.876 1.313 1.938 1.313 3.187v2h1.192c.497 0 .923.177 1.277.531.354.354.531.78.531 1.277v9.384c0 .497-.177.923-.531 1.277-.354.354-.78.531-1.277.531H6.308ZM12 16.75c.486 0 .899-.17 1.24-.51.34-.341.51-.754.51-1.24s-.17-.899-.51-1.239A1.688 1.688 0 0 0 12 13.25c-.486 0-.899.17-1.239.511-.341.34-.511.753-.511 1.239 0 .486.17.899.511 1.24.34.34.753.51 1.239.51ZM9 8.5h6v-2c0-.833-.292-1.542-.875-2.125A2.894 2.894 0 0 0 12 3.5c-.833 0-1.542.292-2.125.875A2.894 2.894 0 0 0 9 6.5v2Z" style="fill-rule:nonzero" transform="matrix(.71795 0 0 .71795 -.61 -.414)"/></svg>
\ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="16" width="16"><path d="M12,17C10.89,17 10,16.1 10,15C10,13.89 10.89,13 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10C4,8.89 4.89,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z" /></svg>
\ No newline at end of file diff --git a/apps/settings/img/personal.png b/apps/settings/img/personal.png Binary files differindex 179b15522b3..7a67761b53c 100644 --- a/apps/settings/img/personal.png +++ b/apps/settings/img/personal.png diff --git a/apps/settings/img/personal.svg b/apps/settings/img/personal.svg index e7d2b3e9f75..31ffe28b807 100644 --- a/apps/settings/img/personal.svg +++ b/apps/settings/img/personal.svg @@ -1 +1 @@ -<svg viewBox="0 0 16 16" height="16" width="16" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M12 11.692c-.962 0-1.786-.342-2.472-1.028C8.843 9.979 8.5 9.155 8.5 8.192c0-.962.343-1.786 1.028-2.471.686-.686 1.51-1.029 2.472-1.029.963 0 1.786.343 2.472 1.029.685.685 1.028 1.509 1.028 2.471 0 .963-.343 1.787-1.028 2.472-.686.686-1.509 1.028-2.472 1.028Zm-7.5 7.616v-2.224c0-.489.133-.943.399-1.36a2.663 2.663 0 0 1 1.067-.962 14.51 14.51 0 0 1 2.991-1.091 12.965 12.965 0 0 1 6.086 0c1.006.243 2.003.606 2.992 1.091.445.224.8.545 1.066.962.266.417.399.871.399 1.36v2.224h-15Z" style="fill-rule:nonzero" transform="matrix(.95789 0 0 .95789 -3.484 -3.495)"/></svg>
\ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="16" width="16"><path d="M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M12,13C14.67,13 20,14.33 20,17V20H4V17C4,14.33 9.33,13 12,13M12,14.9C9.03,14.9 5.9,16.36 5.9,17V18.1H18.1V17C18.1,16.36 14.97,14.9 12,14.9Z" /></svg>
\ No newline at end of file diff --git a/apps/settings/img/users-white.svg b/apps/settings/img/users-white.svg index 4290dcd325f..d52dcac95c2 100644 --- a/apps/settings/img/users-white.svg +++ b/apps/settings/img/users-white.svg @@ -1 +1 @@ -<svg viewBox="0 0 16 16" height="16" width="16" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M1.798 19.308v-2.224c0-.515.133-.975.399-1.379a2.721 2.721 0 0 1 1.066-.944c.95-.465 1.906-.823 2.867-1.076.961-.251 2.017-.377 3.168-.377 1.151 0 2.207.126 3.168.377.961.253 1.917.611 2.867 1.076.445.225.8.539 1.066.944.266.404.399.864.399 1.379v2.224h-15Zm17 0v-2.346c0-.657-.161-1.282-.482-1.877a4.533 4.533 0 0 0-1.368-1.531c.671.1 1.307.255 1.91.464.602.21 1.177.458 1.725.744.516.275.915.6 1.197.974.281.374.422.783.422 1.226v2.346h-3.404Zm-9.5-7.616c-.962 0-1.786-.342-2.472-1.028-.685-.685-1.028-1.509-1.028-2.472 0-.962.343-1.786 1.028-2.471.686-.686 1.51-1.029 2.472-1.029.963 0 1.787.343 2.472 1.029.685.685 1.028 1.509 1.028 2.471 0 .963-.343 1.787-1.028 2.472a3.367 3.367 0 0 1-2.472 1.028Zm8.635-3.5c0 .963-.343 1.787-1.028 2.472-.686.686-1.51 1.028-2.472 1.028-.113 0-.257-.013-.431-.038a3.814 3.814 0 0 1-.431-.085c.395-.474.698-1 .91-1.578a5.209 5.209 0 0 0-.007-3.593 5.774 5.774 0 0 0-.903-1.582c.144-.052.287-.085.431-.1.144-.016.287-.024.431-.024.962 0 1.786.343 2.472 1.029.685.685 1.028 1.509 1.028 2.471Z" style="fill:#fff;fill-rule:nonzero" transform="matrix(.78418 0 0 .78418 -1.41 -1.43)"/></svg>
\ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="16" width="16"><path fill="#fff" d="M13.07 10.41A5 5 0 0 0 13.07 4.59A3.39 3.39 0 0 1 15 4A3.5 3.5 0 0 1 15 11A3.39 3.39 0 0 1 13.07 10.41M5.5 7.5A3.5 3.5 0 1 1 9 11A3.5 3.5 0 0 1 5.5 7.5M7.5 7.5A1.5 1.5 0 1 0 9 6A1.5 1.5 0 0 0 7.5 7.5M16 17V19H2V17S2 13 9 13 16 17 16 17M14 17C13.86 16.22 12.67 15 9 15S4.07 16.31 4 17M15.95 13A5.32 5.32 0 0 1 18 17V19H22V17S22 13.37 15.94 13Z" /></svg>
\ No newline at end of file diff --git a/apps/settings/img/users.svg b/apps/settings/img/users.svg index 6894dfbb44e..91d0afce238 100644 --- a/apps/settings/img/users.svg +++ b/apps/settings/img/users.svg @@ -1 +1 @@ -<svg viewBox="0 0 16 16" height="16" width="16" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M1.798 19.308v-2.224c0-.515.133-.975.399-1.379a2.721 2.721 0 0 1 1.066-.944c.95-.465 1.906-.823 2.867-1.076.961-.251 2.017-.377 3.168-.377 1.151 0 2.207.126 3.168.377.961.253 1.917.611 2.867 1.076.445.225.8.539 1.066.944.266.404.399.864.399 1.379v2.224h-15Zm17 0v-2.346c0-.657-.161-1.282-.482-1.877a4.533 4.533 0 0 0-1.368-1.531c.671.1 1.307.255 1.91.464.602.21 1.177.458 1.725.744.516.275.915.6 1.197.974.281.374.422.783.422 1.226v2.346h-3.404Zm-9.5-7.616c-.962 0-1.786-.342-2.472-1.028-.685-.685-1.028-1.509-1.028-2.472 0-.962.343-1.786 1.028-2.471.686-.686 1.51-1.029 2.472-1.029.963 0 1.787.343 2.472 1.029.685.685 1.028 1.509 1.028 2.471 0 .963-.343 1.787-1.028 2.472a3.367 3.367 0 0 1-2.472 1.028Zm8.635-3.5c0 .963-.343 1.787-1.028 2.472-.686.686-1.51 1.028-2.472 1.028-.113 0-.257-.013-.431-.038a3.814 3.814 0 0 1-.431-.085c.395-.474.698-1 .91-1.578a5.209 5.209 0 0 0-.007-3.593 5.774 5.774 0 0 0-.903-1.582c.144-.052.287-.085.431-.1.144-.016.287-.024.431-.024.962 0 1.786.343 2.472 1.029.685.685 1.028 1.509 1.028 2.471Z" style="fill-rule:nonzero" transform="matrix(.78418 0 0 .78418 -1.41 -1.43)"/></svg>
\ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="16" width="16"><path d="M13.07 10.41A5 5 0 0 0 13.07 4.59A3.39 3.39 0 0 1 15 4A3.5 3.5 0 0 1 15 11A3.39 3.39 0 0 1 13.07 10.41M5.5 7.5A3.5 3.5 0 1 1 9 11A3.5 3.5 0 0 1 5.5 7.5M7.5 7.5A1.5 1.5 0 1 0 9 6A1.5 1.5 0 0 0 7.5 7.5M16 17V19H2V17S2 13 9 13 16 17 16 17M14 17C13.86 16.22 12.67 15 9 15S4.07 16.31 4 17M15.95 13A5.32 5.32 0 0 1 18 17V19H22V17S22 13.37 15.94 13Z" /></svg>
\ No newline at end of file diff --git a/apps/settings/l10n/cs.js b/apps/settings/l10n/cs.js index 15e1f22443a..7fead4b9912 100644 --- a/apps/settings/l10n/cs.js +++ b/apps/settings/l10n/cs.js @@ -370,6 +370,8 @@ OC.L10N.register( "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Uživatelé i tak budou moci pořizovat snímky/video z obrazovky. Neposkytuje to jakoukoli definitivní ochranu.", "Allow users to share via link and emails" : "Povolit uživatelům sdílet pomocí odkazů a e-mailů", "Allow public uploads" : "Povolit veřejné nahrávání souborů", + "Allow public shares to be added to other clouds by federation." : "Umožnit přidávání veřejných sdílení do ostatních cloudů prostřednictvím federování.", + "This will add share permissions to all newly created link shares." : "Toto přidá oprávnění ke sdílení ke všem nově vytvářeným sdílením odkazem.", "Always ask for a password" : "Vždy se zeptat na heslo", "Enforce password protection" : "Vynutit ochranu heslem", "Exclude groups from password requirements" : "Z požadavků na heslo vynechat následující skupiny", diff --git a/apps/settings/l10n/cs.json b/apps/settings/l10n/cs.json index 4637303628d..7269c122bb3 100644 --- a/apps/settings/l10n/cs.json +++ b/apps/settings/l10n/cs.json @@ -368,6 +368,8 @@ "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Uživatelé i tak budou moci pořizovat snímky/video z obrazovky. Neposkytuje to jakoukoli definitivní ochranu.", "Allow users to share via link and emails" : "Povolit uživatelům sdílet pomocí odkazů a e-mailů", "Allow public uploads" : "Povolit veřejné nahrávání souborů", + "Allow public shares to be added to other clouds by federation." : "Umožnit přidávání veřejných sdílení do ostatních cloudů prostřednictvím federování.", + "This will add share permissions to all newly created link shares." : "Toto přidá oprávnění ke sdílení ke všem nově vytvářeným sdílením odkazem.", "Always ask for a password" : "Vždy se zeptat na heslo", "Enforce password protection" : "Vynutit ochranu heslem", "Exclude groups from password requirements" : "Z požadavků na heslo vynechat následující skupiny", diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js index c96cc378ed7..c5c2d22ec57 100644 --- a/apps/settings/l10n/en_GB.js +++ b/apps/settings/l10n/en_GB.js @@ -370,6 +370,8 @@ OC.L10N.register( "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Users will still be able to screenshot or record the screen. This does not provide any definitive protection.", "Allow users to share via link and emails" : "Allow users to share via link and emails", "Allow public uploads" : "Allow public uploads", + "Allow public shares to be added to other clouds by federation." : "Allow public shares to be added to other clouds by federation.", + "This will add share permissions to all newly created link shares." : "This will add share permissions to all newly created link shares.", "Always ask for a password" : "Always ask for a password", "Enforce password protection" : "Enforce password protection", "Exclude groups from password requirements" : "Exclude groups from password requirements", diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json index ffa0f903f65..a4d53a47659 100644 --- a/apps/settings/l10n/en_GB.json +++ b/apps/settings/l10n/en_GB.json @@ -368,6 +368,8 @@ "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Users will still be able to screenshot or record the screen. This does not provide any definitive protection.", "Allow users to share via link and emails" : "Allow users to share via link and emails", "Allow public uploads" : "Allow public uploads", + "Allow public shares to be added to other clouds by federation." : "Allow public shares to be added to other clouds by federation.", + "This will add share permissions to all newly created link shares." : "This will add share permissions to all newly created link shares.", "Always ask for a password" : "Always ask for a password", "Enforce password protection" : "Enforce password protection", "Exclude groups from password requirements" : "Exclude groups from password requirements", diff --git a/apps/settings/l10n/es.js b/apps/settings/l10n/es.js index 30ac4b0b258..7e232991ce5 100644 --- a/apps/settings/l10n/es.js +++ b/apps/settings/l10n/es.js @@ -353,9 +353,9 @@ OC.L10N.register( "Here you can decide which group can access certain sections of the administration settings." : "Aquí puede decidir qué grupo puede acceder a determinadas secciones de la configuración de administración.", "Unable to modify setting" : "No se ha podido modificar la configuración", "None" : "Ninguno", - "Changed disclaimer text" : "Descargo de responsabilidad actualizado", - "Deleted disclaimer text" : "Descargo de responsabilidad eliminado", - "Could not set disclaimer text" : "No se pudo establecer el descargo de responsabilidad", + "Changed disclaimer text" : "El texto del descargo de responsabilidad ha sido actualizado", + "Deleted disclaimer text" : "Texto del descargo de responsabilidad eliminado", + "Could not set disclaimer text" : "No se pudo establecer el texto del descargo de responsabilidad", "Allow apps to use the Share API" : "Permitir a las aplicaciones utilizar la API de Compartir", "Allow resharing" : "Permitir que se vuelva a compartir", "Allow sharing with groups" : "Permitir compartir con grupos", @@ -394,7 +394,7 @@ OC.L10N.register( "Restrict account name autocompletion to users based on phone number integration" : "Limitar autocompletar el nombre de usuario a usuarios basándose en la integración del número de teléfono", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir autocompletado del nombre de usuario cuando se introduzca el nombre completo o la dirección del email (ignorando la falta de coincidencia en la agenda de teléfonos y ser del mismo grupo)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Mostrar texto de aviso en la página de subida de enlace público (solo se muestra cuando la lista de archivos está oculta)", - "Disclaimer text" : "Descargo de responsabilidad", + "Disclaimer text" : "Texto del descargo de responsabilidad", "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de subida de enlace público cuando la lista de archivos esté oculta.", "Default share permissions" : "Permisos por defecto para recurso compartido", "Two-Factor Authentication" : "Autenticación de dos factores", diff --git a/apps/settings/l10n/es.json b/apps/settings/l10n/es.json index b8fe2a9ed67..e901dcfa7eb 100644 --- a/apps/settings/l10n/es.json +++ b/apps/settings/l10n/es.json @@ -351,9 +351,9 @@ "Here you can decide which group can access certain sections of the administration settings." : "Aquí puede decidir qué grupo puede acceder a determinadas secciones de la configuración de administración.", "Unable to modify setting" : "No se ha podido modificar la configuración", "None" : "Ninguno", - "Changed disclaimer text" : "Descargo de responsabilidad actualizado", - "Deleted disclaimer text" : "Descargo de responsabilidad eliminado", - "Could not set disclaimer text" : "No se pudo establecer el descargo de responsabilidad", + "Changed disclaimer text" : "El texto del descargo de responsabilidad ha sido actualizado", + "Deleted disclaimer text" : "Texto del descargo de responsabilidad eliminado", + "Could not set disclaimer text" : "No se pudo establecer el texto del descargo de responsabilidad", "Allow apps to use the Share API" : "Permitir a las aplicaciones utilizar la API de Compartir", "Allow resharing" : "Permitir que se vuelva a compartir", "Allow sharing with groups" : "Permitir compartir con grupos", @@ -392,7 +392,7 @@ "Restrict account name autocompletion to users based on phone number integration" : "Limitar autocompletar el nombre de usuario a usuarios basándose en la integración del número de teléfono", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir autocompletado del nombre de usuario cuando se introduzca el nombre completo o la dirección del email (ignorando la falta de coincidencia en la agenda de teléfonos y ser del mismo grupo)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Mostrar texto de aviso en la página de subida de enlace público (solo se muestra cuando la lista de archivos está oculta)", - "Disclaimer text" : "Descargo de responsabilidad", + "Disclaimer text" : "Texto del descargo de responsabilidad", "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de subida de enlace público cuando la lista de archivos esté oculta.", "Default share permissions" : "Permisos por defecto para recurso compartido", "Two-Factor Authentication" : "Autenticación de dos factores", diff --git a/apps/settings/l10n/et_EE.js b/apps/settings/l10n/et_EE.js index ee2b8f74787..dfff7899eb5 100644 --- a/apps/settings/l10n/et_EE.js +++ b/apps/settings/l10n/et_EE.js @@ -23,13 +23,13 @@ OC.L10N.register( "{actor} added you to group {group}" : "{actor} lisas sind gruppi {group}", "You added {user} to group {group}" : "Sa lisasid kasutaja {user} gruppi {group}", "{actor} added {user} to group {group}" : "{actor} lisas kasutaja {user} gruppi {group}", - "An administrator added you to group {group}" : "Administraator lisas sind gruppi {group}", - "An administrator added {user} to group {group}" : "Administraator lisas kasutaja {user} gruppi {group}", + "An administrator added you to group {group}" : "Peakasutaja lisas sind gruppi {group}", + "An administrator added {user} to group {group}" : "Peakasutaja lisas kasutaja {user} gruppi {group}", "{actor} removed you from group {group}" : "{actor} eemaldas sind grupist {group}", "You removed {user} from group {group}" : "Sa eemaldasid kasutaja {user} grupist {group}", "{actor} removed {user} from group {group}" : "{actor} eemaldas kasutaja {user} grupist {group}", - "An administrator removed you from group {group}" : "Administraator eemaldas sind grupist {group}", - "An administrator removed {user} from group {group}" : "Administraator eemaldas kasutaja {user} grupist {group}", + "An administrator removed you from group {group}" : "Peakasutaja eemaldas sind grupist {group}", + "An administrator removed {user} from group {group}" : "Peakasutaja eemaldas kasutaja {user} grupist {group}", "Your <strong>group memberships</strong> were modified" : "Sinu <strong>grupide liikmelisus</strong> on muutunud", "{actor} changed your password" : "{actor} muutis sinu salasõna", "You changed your password" : "Sa muutsid oma salasõna", @@ -37,7 +37,7 @@ OC.L10N.register( "Your password was reset" : "Sinu salasõna on lähtestatud", "{actor} changed your email address" : "{actor} muutis sinu e-posti aadressi", "You changed your email address" : "Sa muutsid oma e-posti aadressi", - "Your email address was changed by an administrator" : "Administraator muutis sinu e-posti aadressi", + "Your email address was changed by an administrator" : "Peakasutaja muutis sinu e-posti aadressi", "You created an app password for a session named \"{token}\"" : "Tegid rakenduse salasõna sessioonile nimega „{token}“", "An administrator created an app password for a session named \"{token}\"" : "Peakasutaja tegi rakenduse salasõna sessioonile nimega „{token}“", "You deleted app password \"{token}\"" : "Sina kustutasid rakenduse salasõna „{token}“", @@ -60,9 +60,9 @@ OC.L10N.register( "Unable to change password. Password too long." : "Salasõna muutmine ei õnnestu. Salasõna on liiga pikk.", "Authentication error" : "Autentimise viga", "Please provide an admin recovery password; otherwise, all account data will be lost." : "Palun sisesta peakasutaja taastesalasõna - vastasel juhul kaotad ligipääsu kõikidele kasutajakonto andmetele.", - "Wrong admin recovery password. Please check the password and try again." : "Vale administraatori taastesalasõna. Palun kontrolli salasõna ning proovi uuesti.", + "Wrong admin recovery password. Please check the password and try again." : "Vale peakasutaja taastesalasõna. Palun kontrolli salasõna ning proovi uuesti.", "Backend does not support password change, but the encryption of the account key was updated." : "Taustateenus ei toeta salasõna muutmist, aga kasutajakonto võtme krüptimine sai uuendatud.", - "Administrator documentation" : "Administraatori dokumentatsioon", + "Administrator documentation" : "Dokumentatsioon peakasutajale", "User documentation" : "Kasutaja dokumentatsioon", "Nextcloud help overview" : "Nextcloudi abiteabe ülevaade", "Invalid SMTP password." : "Vale SMTP salasõna.", @@ -90,9 +90,9 @@ OC.L10N.register( "Your password on %s was reset." : "Sinu salasõna „%s“ sai lähtestatud.", "Password for %1$s changed on %2$s" : "%1$s salasõna teenuses %2$s on muutunud", "Password changed for %s" : "%s salasõna on muudetud", - "If you did not request this, please contact an administrator." : "Kui sa pole seda taotlenud, võta ühendust administraatoriga.", + "If you did not request this, please contact an administrator." : "Kui sa pole seda taotlenud, võta ühendust peakasutajaga.", "Your email address on %s was changed." : "Sinu %s e-posti aadressi muudeti.", - "Your email address on %s was changed by an administrator." : "Administraator muutis sinu %s e-posti aadressi.", + "Your email address on %s was changed by an administrator." : "Peakasutaja muutis sinu %s e-posti aadressi.", "Email address for %1$s changed on %2$s" : "%1$s e-posti aadress muudetud %2$s", "Email address changed for %s" : "%s e-posti aadress muudetud", "The new email address is %s" : "Uus e-posti aadress on %s", @@ -130,7 +130,7 @@ OC.L10N.register( "Background jobs" : "Taustal toimivad haldustoimingud", "Unlimited" : "Piiramatult", "Verifying" : "Kontrollin", - "Allowed admin IP ranges" : "Süsteemihalduseks lubatud IP-aadresside vahemikus", + "Allowed admin IP ranges" : "Süsteemihalduseks lubatud IP-aadresside vahemikud", "Admin IP filtering isn't applied." : "Süsteemihalduseks lubatud IP-aadresside vahemikud pole seadistatud.", "Configuration key \"%1$s\" expects an array (%2$s found). Admin IP range validation will not be applied." : "Seadistuste võtmes „%1$s“ peab olema kirjas massiiv ( aga leidsime „%2$s“). Süsteemihalduseks lubatud IP-aadresside filtreerimine hetkel ei toimi.", "Configuration key \"%1$s\" contains invalid IP range(s): \"%2$s\"" : "Seadistuste võtmes „%1$s“ on vigane IP-aadressi(de) vahemik: „%2$s“", @@ -351,7 +351,7 @@ OC.L10N.register( "View in store" : "Vaata poes", "Visit website" : "Külasta veebisaiti", "Usage documentation" : "Kasutusjuhend", - "Admin documentation" : "Administraatori dokumentatsioon", + "Admin documentation" : "Dokumentatsioon peakasutajale", "Developer documentation" : "Arendaja dokumentatsioon", "Details" : "Üksikasjad", "All" : "Kõik", @@ -563,7 +563,7 @@ OC.L10N.register( "Password or insufficient permissions message" : "Teavitus salasõna või puuduvate õiguste kohta", "Avatar" : "Tunnuspilt ehk avatar", "Account name" : "Kasutajakonto nimi", - "Group admin for" : "Grupi admin", + "Group admin for" : "Grupi peakasutaja", "Account backend" : "Kasutajakonto taustateenus", "Storage location" : "Salvestusruumi asukoht", "First login" : "Esimene sisselogimine", @@ -632,7 +632,7 @@ OC.L10N.register( "No devices configured." : "Ühtegi seadet pole seadistatud.", "The following devices are configured for your account:" : "Järgmised seadmed on seadistatud kasutama sinu kontot:", "Your browser does not support WebAuthn." : "Sinu veebibrauseril puudub WebAuthni tugi.", - "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Administraatorina saad jagamise valikuid täpselt seadistada. Lisateavet leiad dokumentatsioonist.", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Peakasutajana saad jagamise valikuid täpselt seadistada. Lisateavet leiad dokumentatsioonist.", "You need to enable the File sharing App." : "Sa pead kasutusele võtma Failijagamise rakenduse.", "App Store" : "Rakendustepood", "Loading app list" : "Laadin rakenduste loendit", @@ -641,7 +641,7 @@ OC.L10N.register( "Version {version}, {license}-licensed" : "Versioon {version}, avaldatud {license} litsentsi alusel", "Version {version}" : "Versioon {version}", "All accounts" : "Kõik kasutajakontod", - "Admins" : "Haldurid", + "Admins" : "Peakasutajad", "Account group: {group}" : "Kasutajakontode grupp: {group}", "Account management" : "Kasutajakontode haldus", "Sending…" : "Saadan...", @@ -704,7 +704,7 @@ OC.L10N.register( "Error while updating device token name" : "Viga seadme tunnusloa nime uuendamisel", "Error while updating device token scope" : "Viga seadme tunnusloa toimeala uuendamisel", "Could not set group sorting" : "Grupi järjestamise määramine ei õnnestunud", - "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.", + "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 peakasutajaga, kui tegu on veaga.", "Error" : "Viga", "Account documentation" : "Kasutajakonto juhendid", "Administration documentation" : "Süsteemihalduse juhendid", @@ -748,6 +748,7 @@ OC.L10N.register( "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "See Nextcloudi kogukonnaversioon pole toetatud ja kiirteavitused pole saadaval.", "Use a second factor besides your password to increase security for your account." : "Sinu kasutajakonto turvalisuse parandamiseks kasuta lisaks oma salasõnale ka teist autentimisvõimalust.", "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." : "Kui kasutad kolmanda osapoole rakenduses Nextcloudi ühendust, siis palun taga, et sa lood ja seadistad rakenduse salasõna enne kaheastmelise autentimise kasutusele võtmist.", + "Logged in account must be a subadmin" : "Sisselogitud kasutajakonto peab olema peakasutajate alamgrupi liige", "File locking" : "Failide lukustus", "The PHP memory limit is below the recommended value of %s." : "PHP mälukasutuse ülempiir on väiksem, kui soovitatav %s.", "for WebAuthn passwordless login" : "WebAuthn salasõnata sisselogimise jaoks", diff --git a/apps/settings/l10n/et_EE.json b/apps/settings/l10n/et_EE.json index e19887d5a3f..e642931fd77 100644 --- a/apps/settings/l10n/et_EE.json +++ b/apps/settings/l10n/et_EE.json @@ -21,13 +21,13 @@ "{actor} added you to group {group}" : "{actor} lisas sind gruppi {group}", "You added {user} to group {group}" : "Sa lisasid kasutaja {user} gruppi {group}", "{actor} added {user} to group {group}" : "{actor} lisas kasutaja {user} gruppi {group}", - "An administrator added you to group {group}" : "Administraator lisas sind gruppi {group}", - "An administrator added {user} to group {group}" : "Administraator lisas kasutaja {user} gruppi {group}", + "An administrator added you to group {group}" : "Peakasutaja lisas sind gruppi {group}", + "An administrator added {user} to group {group}" : "Peakasutaja lisas kasutaja {user} gruppi {group}", "{actor} removed you from group {group}" : "{actor} eemaldas sind grupist {group}", "You removed {user} from group {group}" : "Sa eemaldasid kasutaja {user} grupist {group}", "{actor} removed {user} from group {group}" : "{actor} eemaldas kasutaja {user} grupist {group}", - "An administrator removed you from group {group}" : "Administraator eemaldas sind grupist {group}", - "An administrator removed {user} from group {group}" : "Administraator eemaldas kasutaja {user} grupist {group}", + "An administrator removed you from group {group}" : "Peakasutaja eemaldas sind grupist {group}", + "An administrator removed {user} from group {group}" : "Peakasutaja eemaldas kasutaja {user} grupist {group}", "Your <strong>group memberships</strong> were modified" : "Sinu <strong>grupide liikmelisus</strong> on muutunud", "{actor} changed your password" : "{actor} muutis sinu salasõna", "You changed your password" : "Sa muutsid oma salasõna", @@ -35,7 +35,7 @@ "Your password was reset" : "Sinu salasõna on lähtestatud", "{actor} changed your email address" : "{actor} muutis sinu e-posti aadressi", "You changed your email address" : "Sa muutsid oma e-posti aadressi", - "Your email address was changed by an administrator" : "Administraator muutis sinu e-posti aadressi", + "Your email address was changed by an administrator" : "Peakasutaja muutis sinu e-posti aadressi", "You created an app password for a session named \"{token}\"" : "Tegid rakenduse salasõna sessioonile nimega „{token}“", "An administrator created an app password for a session named \"{token}\"" : "Peakasutaja tegi rakenduse salasõna sessioonile nimega „{token}“", "You deleted app password \"{token}\"" : "Sina kustutasid rakenduse salasõna „{token}“", @@ -58,9 +58,9 @@ "Unable to change password. Password too long." : "Salasõna muutmine ei õnnestu. Salasõna on liiga pikk.", "Authentication error" : "Autentimise viga", "Please provide an admin recovery password; otherwise, all account data will be lost." : "Palun sisesta peakasutaja taastesalasõna - vastasel juhul kaotad ligipääsu kõikidele kasutajakonto andmetele.", - "Wrong admin recovery password. Please check the password and try again." : "Vale administraatori taastesalasõna. Palun kontrolli salasõna ning proovi uuesti.", + "Wrong admin recovery password. Please check the password and try again." : "Vale peakasutaja taastesalasõna. Palun kontrolli salasõna ning proovi uuesti.", "Backend does not support password change, but the encryption of the account key was updated." : "Taustateenus ei toeta salasõna muutmist, aga kasutajakonto võtme krüptimine sai uuendatud.", - "Administrator documentation" : "Administraatori dokumentatsioon", + "Administrator documentation" : "Dokumentatsioon peakasutajale", "User documentation" : "Kasutaja dokumentatsioon", "Nextcloud help overview" : "Nextcloudi abiteabe ülevaade", "Invalid SMTP password." : "Vale SMTP salasõna.", @@ -88,9 +88,9 @@ "Your password on %s was reset." : "Sinu salasõna „%s“ sai lähtestatud.", "Password for %1$s changed on %2$s" : "%1$s salasõna teenuses %2$s on muutunud", "Password changed for %s" : "%s salasõna on muudetud", - "If you did not request this, please contact an administrator." : "Kui sa pole seda taotlenud, võta ühendust administraatoriga.", + "If you did not request this, please contact an administrator." : "Kui sa pole seda taotlenud, võta ühendust peakasutajaga.", "Your email address on %s was changed." : "Sinu %s e-posti aadressi muudeti.", - "Your email address on %s was changed by an administrator." : "Administraator muutis sinu %s e-posti aadressi.", + "Your email address on %s was changed by an administrator." : "Peakasutaja muutis sinu %s e-posti aadressi.", "Email address for %1$s changed on %2$s" : "%1$s e-posti aadress muudetud %2$s", "Email address changed for %s" : "%s e-posti aadress muudetud", "The new email address is %s" : "Uus e-posti aadress on %s", @@ -128,7 +128,7 @@ "Background jobs" : "Taustal toimivad haldustoimingud", "Unlimited" : "Piiramatult", "Verifying" : "Kontrollin", - "Allowed admin IP ranges" : "Süsteemihalduseks lubatud IP-aadresside vahemikus", + "Allowed admin IP ranges" : "Süsteemihalduseks lubatud IP-aadresside vahemikud", "Admin IP filtering isn't applied." : "Süsteemihalduseks lubatud IP-aadresside vahemikud pole seadistatud.", "Configuration key \"%1$s\" expects an array (%2$s found). Admin IP range validation will not be applied." : "Seadistuste võtmes „%1$s“ peab olema kirjas massiiv ( aga leidsime „%2$s“). Süsteemihalduseks lubatud IP-aadresside filtreerimine hetkel ei toimi.", "Configuration key \"%1$s\" contains invalid IP range(s): \"%2$s\"" : "Seadistuste võtmes „%1$s“ on vigane IP-aadressi(de) vahemik: „%2$s“", @@ -349,7 +349,7 @@ "View in store" : "Vaata poes", "Visit website" : "Külasta veebisaiti", "Usage documentation" : "Kasutusjuhend", - "Admin documentation" : "Administraatori dokumentatsioon", + "Admin documentation" : "Dokumentatsioon peakasutajale", "Developer documentation" : "Arendaja dokumentatsioon", "Details" : "Üksikasjad", "All" : "Kõik", @@ -561,7 +561,7 @@ "Password or insufficient permissions message" : "Teavitus salasõna või puuduvate õiguste kohta", "Avatar" : "Tunnuspilt ehk avatar", "Account name" : "Kasutajakonto nimi", - "Group admin for" : "Grupi admin", + "Group admin for" : "Grupi peakasutaja", "Account backend" : "Kasutajakonto taustateenus", "Storage location" : "Salvestusruumi asukoht", "First login" : "Esimene sisselogimine", @@ -630,7 +630,7 @@ "No devices configured." : "Ühtegi seadet pole seadistatud.", "The following devices are configured for your account:" : "Järgmised seadmed on seadistatud kasutama sinu kontot:", "Your browser does not support WebAuthn." : "Sinu veebibrauseril puudub WebAuthni tugi.", - "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Administraatorina saad jagamise valikuid täpselt seadistada. Lisateavet leiad dokumentatsioonist.", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Peakasutajana saad jagamise valikuid täpselt seadistada. Lisateavet leiad dokumentatsioonist.", "You need to enable the File sharing App." : "Sa pead kasutusele võtma Failijagamise rakenduse.", "App Store" : "Rakendustepood", "Loading app list" : "Laadin rakenduste loendit", @@ -639,7 +639,7 @@ "Version {version}, {license}-licensed" : "Versioon {version}, avaldatud {license} litsentsi alusel", "Version {version}" : "Versioon {version}", "All accounts" : "Kõik kasutajakontod", - "Admins" : "Haldurid", + "Admins" : "Peakasutajad", "Account group: {group}" : "Kasutajakontode grupp: {group}", "Account management" : "Kasutajakontode haldus", "Sending…" : "Saadan...", @@ -702,7 +702,7 @@ "Error while updating device token name" : "Viga seadme tunnusloa nime uuendamisel", "Error while updating device token scope" : "Viga seadme tunnusloa toimeala uuendamisel", "Could not set group sorting" : "Grupi järjestamise määramine ei õnnestunud", - "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.", + "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 peakasutajaga, kui tegu on veaga.", "Error" : "Viga", "Account documentation" : "Kasutajakonto juhendid", "Administration documentation" : "Süsteemihalduse juhendid", @@ -746,6 +746,7 @@ "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "See Nextcloudi kogukonnaversioon pole toetatud ja kiirteavitused pole saadaval.", "Use a second factor besides your password to increase security for your account." : "Sinu kasutajakonto turvalisuse parandamiseks kasuta lisaks oma salasõnale ka teist autentimisvõimalust.", "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." : "Kui kasutad kolmanda osapoole rakenduses Nextcloudi ühendust, siis palun taga, et sa lood ja seadistad rakenduse salasõna enne kaheastmelise autentimise kasutusele võtmist.", + "Logged in account must be a subadmin" : "Sisselogitud kasutajakonto peab olema peakasutajate alamgrupi liige", "File locking" : "Failide lukustus", "The PHP memory limit is below the recommended value of %s." : "PHP mälukasutuse ülempiir on väiksem, kui soovitatav %s.", "for WebAuthn passwordless login" : "WebAuthn salasõnata sisselogimise jaoks", diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js index f3f56954d5e..b796b6bbab5 100644 --- a/apps/settings/l10n/fr.js +++ b/apps/settings/l10n/fr.js @@ -343,6 +343,7 @@ OC.L10N.register( "Nextcloud settings" : "Paramètres Nextcloud", "Unified task processing" : "Traitement unifié des tâches", "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "Les tâches d'IA peuvent être mises en œuvre par différentes applications. Ici, vous pouvez définir quelle application doit être utilisée pour quelle tâche.", + "Allow AI usage for guest users" : "Autoriser l'utilisation de l'IA pour les utilisateurs invités", "Task:" : "Tâche : ", "Enable" : "Activer", "None of your currently installed apps provide Task processing functionality" : "Aucune de vos applications actuellement installées ne fournit de fonctionnalité de traitement des tâches", @@ -369,6 +370,7 @@ OC.L10N.register( "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Les utilisateurs pourront toujours faire des captures d'écran ou enregistrer l'écran. Cela n'offre aucune protection définitive.", "Allow users to share via link and emails" : "Autoriser les utilisateurs à partager par lien et par e-mail", "Allow public uploads" : "Autoriser les téléversements publics", + "This will add share permissions to all newly created link shares." : "Cela ajoutera les permissions de partage à tous les nouveaux liens de partage.", "Always ask for a password" : "Toujours demander un mot de passe", "Enforce password protection" : "Imposer la protection par mot de passe", "Exclude groups from password requirements" : "Exclure des groupes des contraintes de mot de passe", diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json index 2b64850fbd7..323744f2ded 100644 --- a/apps/settings/l10n/fr.json +++ b/apps/settings/l10n/fr.json @@ -341,6 +341,7 @@ "Nextcloud settings" : "Paramètres Nextcloud", "Unified task processing" : "Traitement unifié des tâches", "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "Les tâches d'IA peuvent être mises en œuvre par différentes applications. Ici, vous pouvez définir quelle application doit être utilisée pour quelle tâche.", + "Allow AI usage for guest users" : "Autoriser l'utilisation de l'IA pour les utilisateurs invités", "Task:" : "Tâche : ", "Enable" : "Activer", "None of your currently installed apps provide Task processing functionality" : "Aucune de vos applications actuellement installées ne fournit de fonctionnalité de traitement des tâches", @@ -367,6 +368,7 @@ "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Les utilisateurs pourront toujours faire des captures d'écran ou enregistrer l'écran. Cela n'offre aucune protection définitive.", "Allow users to share via link and emails" : "Autoriser les utilisateurs à partager par lien et par e-mail", "Allow public uploads" : "Autoriser les téléversements publics", + "This will add share permissions to all newly created link shares." : "Cela ajoutera les permissions de partage à tous les nouveaux liens de partage.", "Always ask for a password" : "Toujours demander un mot de passe", "Enforce password protection" : "Imposer la protection par mot de passe", "Exclude groups from password requirements" : "Exclure des groupes des contraintes de mot de passe", diff --git a/apps/settings/l10n/ga.js b/apps/settings/l10n/ga.js index 5f8edd63eca..19dd4c69544 100644 --- a/apps/settings/l10n/ga.js +++ b/apps/settings/l10n/ga.js @@ -370,6 +370,8 @@ OC.L10N.register( "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Beidh úsáideoirí fós in ann scáileán a thógáil nó an scáileán a thaifeadadh. Ní sholáthraíonn sé seo aon chosaint chinntitheach.", "Allow users to share via link and emails" : "Lig d'úsáideoirí a roinnt trí nasc agus ríomhphoist", "Allow public uploads" : "Ceadaigh uaslódálacha poiblí", + "Allow public shares to be added to other clouds by federation." : "Ceadaigh scaireanna poiblí a chur le scamaill eile trí chónaidhm.", + "This will add share permissions to all newly created link shares." : "Cuirfidh sé seo ceadanna comhroinnte le gach comhroinnt nasc nua-chruthaithe.", "Always ask for a password" : "Iarr pasfhocal i gcónaí", "Enforce password protection" : "Cuir cosaint phasfhocal i bhfeidhm", "Exclude groups from password requirements" : "Fág grúpaí ó riachtanais phasfhocal", diff --git a/apps/settings/l10n/ga.json b/apps/settings/l10n/ga.json index b565f117530..49dacb4ad00 100644 --- a/apps/settings/l10n/ga.json +++ b/apps/settings/l10n/ga.json @@ -368,6 +368,8 @@ "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Beidh úsáideoirí fós in ann scáileán a thógáil nó an scáileán a thaifeadadh. Ní sholáthraíonn sé seo aon chosaint chinntitheach.", "Allow users to share via link and emails" : "Lig d'úsáideoirí a roinnt trí nasc agus ríomhphoist", "Allow public uploads" : "Ceadaigh uaslódálacha poiblí", + "Allow public shares to be added to other clouds by federation." : "Ceadaigh scaireanna poiblí a chur le scamaill eile trí chónaidhm.", + "This will add share permissions to all newly created link shares." : "Cuirfidh sé seo ceadanna comhroinnte le gach comhroinnt nasc nua-chruthaithe.", "Always ask for a password" : "Iarr pasfhocal i gcónaí", "Enforce password protection" : "Cuir cosaint phasfhocal i bhfeidhm", "Exclude groups from password requirements" : "Fág grúpaí ó riachtanais phasfhocal", diff --git a/apps/settings/l10n/lv.js b/apps/settings/l10n/lv.js index 68226b2dd9f..967ff5dd9e2 100644 --- a/apps/settings/l10n/lv.js +++ b/apps/settings/l10n/lv.js @@ -16,6 +16,9 @@ OC.L10N.register( "Unable to retrieve the group list" : "Nevarēja saņemt grupu sarakstu", "{actor} changed your password" : "{actor] nomainīja Tavu paroli", "You changed your password" : "Tu nomainīji savu paroli", + "{actor} changed your email address" : "{actor} nomainīja Tavu e-pasta adresi", + "You changed your email address" : "Tu nomainīji savu e-pasta adresi", + "Your email address was changed by an administrator" : "Pārvaldītājs nomainīja Tavu e-pasta adresi", "You renamed app password \"{token}\" to \"{newToken}\"" : "Tu pārdēvēji lietotnes paroli \"{token}\" par \"{newToken}\"", "Security" : "Drošība", "You successfully logged in using two-factor authentication (%1$s)" : "Sekmīga pieteikšanās ar divpakāpju autentificēšanos (%1$s)", @@ -37,6 +40,10 @@ OC.L10N.register( "Unable to change full name" : "Nevar nomainīt pilno vārdu", "Unable to change email address" : "Nevar mainīt e-pasta adresi", "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Lai apliecinātu savu tīmekļvietni, zemāk esošais saturs ir jāglabā tīmekļvietnes pamatmapē kā `.well-known/CloudIdVerificationCode.txt` (lūgums pārliecināties, ka viss teksts ir vienā rindiņā):", + "%1$s changed your password on %2$s." : "%1$s nomainīja Tavu %2$sparoli.", + "Your password on %s was changed." : "Tava %s parole tika nomainīta.", + "Your email address on %s was changed." : "Tava %s e-pasta adrese tika nomainīta.", + "Your email address on %s was changed by an administrator." : "Pārvaldītājs nomainīja Tavu %s e-pasta adresi", "Your %s account was created" : "Konts %s ir izveidots", "Apps" : "Lietotnes", "Personal" : "Personīgi", @@ -194,6 +201,7 @@ OC.L10N.register( "Admins" : "Pārvaldītāji", "Sending…" : "Sūta …", "Email sent" : "E-pasta ziņojums nosūtīts", + "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Veiktspējas dēļ, kad Nextcloud serverī iespējo šifrēšanu, jaunās un izmainītās datnes tiek šīfrētas.", "Location" : "Atrašanās vieta", "Profile picture" : "Profila attēls", "About" : "Par", diff --git a/apps/settings/l10n/lv.json b/apps/settings/l10n/lv.json index 1231c5bc914..6f58b2bb0d9 100644 --- a/apps/settings/l10n/lv.json +++ b/apps/settings/l10n/lv.json @@ -14,6 +14,9 @@ "Unable to retrieve the group list" : "Nevarēja saņemt grupu sarakstu", "{actor} changed your password" : "{actor] nomainīja Tavu paroli", "You changed your password" : "Tu nomainīji savu paroli", + "{actor} changed your email address" : "{actor} nomainīja Tavu e-pasta adresi", + "You changed your email address" : "Tu nomainīji savu e-pasta adresi", + "Your email address was changed by an administrator" : "Pārvaldītājs nomainīja Tavu e-pasta adresi", "You renamed app password \"{token}\" to \"{newToken}\"" : "Tu pārdēvēji lietotnes paroli \"{token}\" par \"{newToken}\"", "Security" : "Drošība", "You successfully logged in using two-factor authentication (%1$s)" : "Sekmīga pieteikšanās ar divpakāpju autentificēšanos (%1$s)", @@ -35,6 +38,10 @@ "Unable to change full name" : "Nevar nomainīt pilno vārdu", "Unable to change email address" : "Nevar mainīt e-pasta adresi", "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Lai apliecinātu savu tīmekļvietni, zemāk esošais saturs ir jāglabā tīmekļvietnes pamatmapē kā `.well-known/CloudIdVerificationCode.txt` (lūgums pārliecināties, ka viss teksts ir vienā rindiņā):", + "%1$s changed your password on %2$s." : "%1$s nomainīja Tavu %2$sparoli.", + "Your password on %s was changed." : "Tava %s parole tika nomainīta.", + "Your email address on %s was changed." : "Tava %s e-pasta adrese tika nomainīta.", + "Your email address on %s was changed by an administrator." : "Pārvaldītājs nomainīja Tavu %s e-pasta adresi", "Your %s account was created" : "Konts %s ir izveidots", "Apps" : "Lietotnes", "Personal" : "Personīgi", @@ -192,6 +199,7 @@ "Admins" : "Pārvaldītāji", "Sending…" : "Sūta …", "Email sent" : "E-pasta ziņojums nosūtīts", + "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Veiktspējas dēļ, kad Nextcloud serverī iespējo šifrēšanu, jaunās un izmainītās datnes tiek šīfrētas.", "Location" : "Atrašanās vieta", "Profile picture" : "Profila attēls", "About" : "Par", diff --git a/apps/settings/l10n/mk.js b/apps/settings/l10n/mk.js index 4aa38bf9347..e14c3339511 100644 --- a/apps/settings/l10n/mk.js +++ b/apps/settings/l10n/mk.js @@ -67,6 +67,10 @@ OC.L10N.register( "If you received this email, the email configuration seems to be correct." : "Ако ја примивте оваа порака, тоа значи дека конфигурацијата за е-пошта е правилно поставена.", "Email could not be sent. Check your mail server log" : "Порака преку Е-пошта неможе да се испрати. Проверете го записот во е-пошта серверот", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Се случи грешка при праќање на порака. Ве молам проверете ги вашите параметри. (Error: %s)", + "You need to set your account email before being able to send test emails. Go to %s for that." : "Треба да ја поставите вашата е-пошта адреса пред да можете да испратите тест пораки. Одете во %s за тоа.", + "Recently active" : "Скоро активни", + "Disabled accounts" : "Оневозможени сметки", + "Invalid account" : "Навалидна сметка", "Invalid mail address" : "Неправилна електронска адреса/пошта", "Settings saved" : "Параматрите се зачувани", "Unable to change full name" : "Не можам да го променам целото име", @@ -92,9 +96,11 @@ OC.L10N.register( "Welcome aboard" : "Добредојдовте", "Welcome aboard %s" : "Добредојдовте %s", "Welcome to your %s account, you can add, protect, and share your data." : "Добредојдовте на вашата %s сметка, можете да додавате, чувате и да ги споделувате вашите податоци.", + "Your Login is: %s" : "Вашето корисничко име е: %s", "Set your password" : "Поставете ваша лозинка", "Go to %s" : "Оди до %s", "Install Client" : "Инсталирај клиент", + "Logged in account must be a sub admin" : "Најавениот корисник мора да биде подадминистратор", "Apps" : "Аппликации", "Personal" : "Лично", "Administration" : "Администрација", @@ -111,9 +117,16 @@ OC.L10N.register( "Personal info" : "Лични податоци", "Mobile & desktop" : "Мобилен & компјутер", "Email server" : "Сервер за е-пошта", + "Mail Providers" : "Е-пошта провајдери", + "Send emails using" : "Испраќај е-пошти со", "Background jobs" : "Задачи кој се извршуваат во позадина", "Unlimited" : "Неограничено", "Verifying" : "Потврдување", + "Code integrity" : "Интегритет на кодот", + "Some files have not passed the integrity check. {link1} {link2}" : "Некој адтотеки не ја поминаа проверката за интегритет. {link1} {link2}", + "Cron last run" : "Последна позадинска активност", + "Last background job execution ran %s. Something seems wrong. {link}." : "Последно извршување на задачите %s. Нешто не е во ред. {link}.", + "Last background job execution ran %s." : "Последното извршување на задачите траеше %s.", "Your data directory and files are probably accessible from the internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Вашата папка за податоци и вашите датотеки се најверојатно достапни од интернет. Датотеката .htaccess не работи. Строго ви препорачуваме да го подесите вашиот веб опслужувач на начин на кој вашата папка за податоци не е веќе достапна од интернет или да ја преместите папката за податоци надвор од коренот на веб опслужувачот.", "The database is missing some optional columns. Due to the fact that adding columns on big tables could take some time they were not added automatically when they can be optional. By running \"occ db:add-missing-columns\" those missing columns could be added manually while the instance keeps running. Once the columns are added some features might improve responsiveness or usability." : "Во базата недостасуваат некој опционални колони. Поради фактот што додавањето колони во големи бази може да потрае, тие не беа додадени автоматски. Со стартување на командата \"occ db:add-missing-columns\" ќе бидат додадени оние колони што недостасуваат и инстанцата непречено ќе работи. Еднаш кога ќе бидат додадени колоните, некој карактеристики ќе се подобрат и можат да ја подобрат употребата и безбедноста.", "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." : "Во базата недостасуваат некој примарни клучеви. Поради фактот што додавањето на примарни клучеви во големи бази може да потрае, тие не беа додадени автоматски. Со стартување на командата \"occ db:add-missing-primary-keys\" ќе бидат додадени оние примарни клучеви што недостасуваат и инстанцата непречено ќе работи.", @@ -181,6 +194,7 @@ OC.L10N.register( "_%n app has an update available_::_%n apps have an update available_" : ["За %n апликација има достапно ажурирање","За %n апликации има достапно ажурирање"], "_Update_::_Update all_" : ["Ажурирај","Ажурирај ги сите"], "Group name" : "Име на група", + "Nothing to show" : "Нема што да се прикаже", "Type" : "Вид", "Learn more" : "Научи повеќе", "Confirm" : "Потврди", @@ -230,6 +244,7 @@ OC.L10N.register( "Password" : "Лозинка", "Show QR code for mobile apps" : "Прикажи QR код за апликација на мобилен телефон", "Use system cron service to call the cron.php file every 5 minutes." : "Го користи системскиот Cron сервис и го повикува cron.php секој 5 минути.", + "The cron.php needs to be executed by the system account \"{user}\"." : "cron.php е потребно да биде извршен од системски корисник \"{user}\".", "The PHP POSIX extension is required. See {linkstart}PHP documentation{linkend} for more details." : "Потребен е PHP POSIX додаток. Погледни во {linkstart}PHP документацијата{linkend} за повеќе детали.", "Unable to update background job mode" : "Не може да се ажурира режимот на работа во позадина", "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "За серверот да работи правилно, важно е да ги конфигурирате процедурите кој се извршуваат во позадина. За големи истанци 'Cron' е препорачаната поставка. Погледнете ја документацијата за повеќе информации.", @@ -237,10 +252,13 @@ OC.L10N.register( "Last job ran {relativeTime}." : "Последната процедура се изврши пред {relativeTime}.", "Background job did not run yet!" : "Сеуште нема извршено ниедна задача!", "AJAX" : "AJAX", + "Execute one task with each page loaded. Use case: Single account instance." : "Извршува по една задача со секоја вчитана страница. Се користи за инстанца со еден корисник.", "Webcron" : "Webcron", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 accounts depending on the usage)." : "cron.php треба да се регистрира на webcron сервис за да ја повикува процедурата секој 5 минути преку HTTP. Се користи за помали истанци (1-5 корисника во зависност на искористувањето).", "Cron (Recommended)" : "Cron (Препорачано)", "Unable to update profile default setting" : "Неможе да се ажурираат стандардните параметри за профилот", "Profile" : "Профил", + "Enable or disable profile by default for new accounts." : "Овозможи или оневозможи профил за нови корисници.", "Unable to update server side encryption config" : "Неможе да се ажурираат параметрите за енкрипција од страна на серверот", "Server-side encryption" : "Енкрипција на страна на серверот", "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." : "Енкрипцијата на страна на серверот овозможува да ги криптирате датотеките што се поставени на овој сервер. Ова доаѓа со ограничувања како намалување на перформансите, па овозможете го ова само доколку е потребно.", @@ -274,6 +292,7 @@ OC.L10N.register( "Picture provided by original account" : "Слика обезбедена од оригинална сметка", "Set as profile picture" : "Постави фотографија на профилот", "Please note that it can take up to 24 hours for your profile picture to be updated everywhere." : "Имајте предвид дека може да потрае до 24 часа за да се ажурира аватарот насекаде.", + "Your biography. Markdown is supported." : "Вашата биографија.", "Enter your date of birth" : "Внесете го вашиот датум на раѓање", "You are using {s}{usage}{/s}" : "Користите {s}{usage}{/s}", "You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Користите {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})", @@ -391,6 +410,7 @@ OC.L10N.register( "Location" : "Локација", "Profile picture" : "Фотографија", "About" : "За", + "Date of birth" : "Датум на раѓање", "Full name" : "Име и презиме", "Additional email" : "Дополнителна е-пошта", "Headline" : "Наслов", @@ -403,6 +423,8 @@ OC.L10N.register( "Locale" : "Локација", "First day of week" : "Прв ден од неделата", "Not available as this property is required for core functionality including file sharing and calendar invitations" : "Не е достапно бидејќи ова својство е потребно за основна функционалност, вклучувајќи споделување датотеки и покани од календар", + "Not available as federation has been disabled for your account, contact your system administration if you have any questions" : "Не е достапно бидејќи федерацијата е оневозможена за вашата сметка, контактирајте го администраторот доколку имате какви било прашања.", + "Not available as publishing account specific data to the lookup server is not allowed, contact your system administration if you have any questions" : "Не е достапно бидејќи не е дозволено објавување специфични податоци за корисникот на серверот за пребарување, контактирајте со вашиот системски администратор ако имате какви било прашања", "Your apps" : "Ваши апликации", "Active apps" : "Активни апликации", "Disabled apps" : "Оневозможени апликации", @@ -413,6 +435,10 @@ OC.L10N.register( "Show to everyone" : "Прикажи на сите", "Show to logged in accounts only" : "Прикажи само на најавени корисници", "Hide" : "Сокриј", + "{progress}% Deploying …" : "{progress}% Распоредување …", + "{progress}% Initializing …" : "{progress}% Иницијализирање …", + "Health checking" : "Здравствена проверка", + "Deploy and Enable" : "Распореди и овозможи", "Download and enable" : "Преземи и овозможи", "Disable" : "Оневозможи", "Allow untested app" : "Дозволи не тестирана апликација", @@ -430,7 +456,11 @@ OC.L10N.register( "Error while updating device token scope" : "Грешка при ажурирање на токен за уред", "There were too many requests from your network. Retry later or contact your administrator if this is an error." : "Има испратено премногу барање од вашата мрежа. Обидете се подоцна повторно или контактирајте го администраторот.", "Error" : "Грешка", + "Account documentation" : "Документација за кориници", + "Administration documentation" : "Документација за администратори", "Forum" : "Форум", + "Nextcloud help & privacy resources" : "Помош & Приватност", + "General documentation" : "Општа документација", "Legal notice" : "Правно известување", "Privacy policy" : "Политика за приватност", "None/STARTTLS" : "None/STARTTLS", @@ -446,6 +476,7 @@ OC.L10N.register( "Authentication" : "Автентикација", "Authentication required" : "Потребна е автентификација", "Credentials" : "Акредитиви", + "SMTP Login" : "SMTP Најава", "SMTP Password" : "SMTP лозинка", "Save" : "Зачувај", "Test and verify email settings" : "Тестирај и потврди ги параметрите за електронска пошта", @@ -460,11 +491,16 @@ OC.L10N.register( "Reasons to use Nextcloud in your organization" : "Причини зошто да го користите Nextcloud во вашата организација", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Развиена од {communityopen}Nextcloud заедницата{linkclose}, {githubopen}изворениот код{linkclose} е лиценциран според {licenseopen}AGPL{linkclose}.", "Like our Facebook page" : "Лајкни ја нашата Facebook страна", + "Follow us on X" : "Следи не на X", "Follow us on Mastodon" : "Следете не на Mastodon", "Check out our blog" : "Проверете го нашиот блог", "Subscribe to our newsletter" : "Претплатете се на нашиот билтен", "Use a second factor besides your password to increase security for your account." : "Користете втор фактор и покрај вашата лозинка за да ја зголемите безбедноста на вашата сметка.", "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." : "Доколку користите друга апликација за поврзување на Nextcloud, осигурајте се дека имате креирано лозинка за секоја апликација пред да овозможите втор фактор.", + "File locking" : "Заклучување на датотека", + "The PHP memory limit is below the recommended value of %s." : "Меморијата за PHP е под препорачаната вредност од %s.", + "for WebAuthn passwordless login" : "за WebAuthn најава без лозинкаpasswordless login", + "for WebAuthn passwordless login, and SFTP storage" : "за WebAuthn најава без лозинка, и SFTP складиште", "Set default expiration date for shares" : "Постави основен рок на траење за споделувањата", "Your biography" : "Ваша биографија", "You are using <strong>{usage}</strong>" : "Користите <strong>{usage}</strong>", diff --git a/apps/settings/l10n/mk.json b/apps/settings/l10n/mk.json index 51a26ea439d..5dbc53e93f3 100644 --- a/apps/settings/l10n/mk.json +++ b/apps/settings/l10n/mk.json @@ -65,6 +65,10 @@ "If you received this email, the email configuration seems to be correct." : "Ако ја примивте оваа порака, тоа значи дека конфигурацијата за е-пошта е правилно поставена.", "Email could not be sent. Check your mail server log" : "Порака преку Е-пошта неможе да се испрати. Проверете го записот во е-пошта серверот", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Се случи грешка при праќање на порака. Ве молам проверете ги вашите параметри. (Error: %s)", + "You need to set your account email before being able to send test emails. Go to %s for that." : "Треба да ја поставите вашата е-пошта адреса пред да можете да испратите тест пораки. Одете во %s за тоа.", + "Recently active" : "Скоро активни", + "Disabled accounts" : "Оневозможени сметки", + "Invalid account" : "Навалидна сметка", "Invalid mail address" : "Неправилна електронска адреса/пошта", "Settings saved" : "Параматрите се зачувани", "Unable to change full name" : "Не можам да го променам целото име", @@ -90,9 +94,11 @@ "Welcome aboard" : "Добредојдовте", "Welcome aboard %s" : "Добредојдовте %s", "Welcome to your %s account, you can add, protect, and share your data." : "Добредојдовте на вашата %s сметка, можете да додавате, чувате и да ги споделувате вашите податоци.", + "Your Login is: %s" : "Вашето корисничко име е: %s", "Set your password" : "Поставете ваша лозинка", "Go to %s" : "Оди до %s", "Install Client" : "Инсталирај клиент", + "Logged in account must be a sub admin" : "Најавениот корисник мора да биде подадминистратор", "Apps" : "Аппликации", "Personal" : "Лично", "Administration" : "Администрација", @@ -109,9 +115,16 @@ "Personal info" : "Лични податоци", "Mobile & desktop" : "Мобилен & компјутер", "Email server" : "Сервер за е-пошта", + "Mail Providers" : "Е-пошта провајдери", + "Send emails using" : "Испраќај е-пошти со", "Background jobs" : "Задачи кој се извршуваат во позадина", "Unlimited" : "Неограничено", "Verifying" : "Потврдување", + "Code integrity" : "Интегритет на кодот", + "Some files have not passed the integrity check. {link1} {link2}" : "Некој адтотеки не ја поминаа проверката за интегритет. {link1} {link2}", + "Cron last run" : "Последна позадинска активност", + "Last background job execution ran %s. Something seems wrong. {link}." : "Последно извршување на задачите %s. Нешто не е во ред. {link}.", + "Last background job execution ran %s." : "Последното извршување на задачите траеше %s.", "Your data directory and files are probably accessible from the internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Вашата папка за податоци и вашите датотеки се најверојатно достапни од интернет. Датотеката .htaccess не работи. Строго ви препорачуваме да го подесите вашиот веб опслужувач на начин на кој вашата папка за податоци не е веќе достапна од интернет или да ја преместите папката за податоци надвор од коренот на веб опслужувачот.", "The database is missing some optional columns. Due to the fact that adding columns on big tables could take some time they were not added automatically when they can be optional. By running \"occ db:add-missing-columns\" those missing columns could be added manually while the instance keeps running. Once the columns are added some features might improve responsiveness or usability." : "Во базата недостасуваат некој опционални колони. Поради фактот што додавањето колони во големи бази може да потрае, тие не беа додадени автоматски. Со стартување на командата \"occ db:add-missing-columns\" ќе бидат додадени оние колони што недостасуваат и инстанцата непречено ќе работи. Еднаш кога ќе бидат додадени колоните, некој карактеристики ќе се подобрат и можат да ја подобрат употребата и безбедноста.", "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." : "Во базата недостасуваат некој примарни клучеви. Поради фактот што додавањето на примарни клучеви во големи бази може да потрае, тие не беа додадени автоматски. Со стартување на командата \"occ db:add-missing-primary-keys\" ќе бидат додадени оние примарни клучеви што недостасуваат и инстанцата непречено ќе работи.", @@ -179,6 +192,7 @@ "_%n app has an update available_::_%n apps have an update available_" : ["За %n апликација има достапно ажурирање","За %n апликации има достапно ажурирање"], "_Update_::_Update all_" : ["Ажурирај","Ажурирај ги сите"], "Group name" : "Име на група", + "Nothing to show" : "Нема што да се прикаже", "Type" : "Вид", "Learn more" : "Научи повеќе", "Confirm" : "Потврди", @@ -228,6 +242,7 @@ "Password" : "Лозинка", "Show QR code for mobile apps" : "Прикажи QR код за апликација на мобилен телефон", "Use system cron service to call the cron.php file every 5 minutes." : "Го користи системскиот Cron сервис и го повикува cron.php секој 5 минути.", + "The cron.php needs to be executed by the system account \"{user}\"." : "cron.php е потребно да биде извршен од системски корисник \"{user}\".", "The PHP POSIX extension is required. See {linkstart}PHP documentation{linkend} for more details." : "Потребен е PHP POSIX додаток. Погледни во {linkstart}PHP документацијата{linkend} за повеќе детали.", "Unable to update background job mode" : "Не може да се ажурира режимот на работа во позадина", "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "За серверот да работи правилно, важно е да ги конфигурирате процедурите кој се извршуваат во позадина. За големи истанци 'Cron' е препорачаната поставка. Погледнете ја документацијата за повеќе информации.", @@ -235,10 +250,13 @@ "Last job ran {relativeTime}." : "Последната процедура се изврши пред {relativeTime}.", "Background job did not run yet!" : "Сеуште нема извршено ниедна задача!", "AJAX" : "AJAX", + "Execute one task with each page loaded. Use case: Single account instance." : "Извршува по една задача со секоја вчитана страница. Се користи за инстанца со еден корисник.", "Webcron" : "Webcron", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 accounts depending on the usage)." : "cron.php треба да се регистрира на webcron сервис за да ја повикува процедурата секој 5 минути преку HTTP. Се користи за помали истанци (1-5 корисника во зависност на искористувањето).", "Cron (Recommended)" : "Cron (Препорачано)", "Unable to update profile default setting" : "Неможе да се ажурираат стандардните параметри за профилот", "Profile" : "Профил", + "Enable or disable profile by default for new accounts." : "Овозможи или оневозможи профил за нови корисници.", "Unable to update server side encryption config" : "Неможе да се ажурираат параметрите за енкрипција од страна на серверот", "Server-side encryption" : "Енкрипција на страна на серверот", "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." : "Енкрипцијата на страна на серверот овозможува да ги криптирате датотеките што се поставени на овој сервер. Ова доаѓа со ограничувања како намалување на перформансите, па овозможете го ова само доколку е потребно.", @@ -272,6 +290,7 @@ "Picture provided by original account" : "Слика обезбедена од оригинална сметка", "Set as profile picture" : "Постави фотографија на профилот", "Please note that it can take up to 24 hours for your profile picture to be updated everywhere." : "Имајте предвид дека може да потрае до 24 часа за да се ажурира аватарот насекаде.", + "Your biography. Markdown is supported." : "Вашата биографија.", "Enter your date of birth" : "Внесете го вашиот датум на раѓање", "You are using {s}{usage}{/s}" : "Користите {s}{usage}{/s}", "You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Користите {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})", @@ -389,6 +408,7 @@ "Location" : "Локација", "Profile picture" : "Фотографија", "About" : "За", + "Date of birth" : "Датум на раѓање", "Full name" : "Име и презиме", "Additional email" : "Дополнителна е-пошта", "Headline" : "Наслов", @@ -401,6 +421,8 @@ "Locale" : "Локација", "First day of week" : "Прв ден од неделата", "Not available as this property is required for core functionality including file sharing and calendar invitations" : "Не е достапно бидејќи ова својство е потребно за основна функционалност, вклучувајќи споделување датотеки и покани од календар", + "Not available as federation has been disabled for your account, contact your system administration if you have any questions" : "Не е достапно бидејќи федерацијата е оневозможена за вашата сметка, контактирајте го администраторот доколку имате какви било прашања.", + "Not available as publishing account specific data to the lookup server is not allowed, contact your system administration if you have any questions" : "Не е достапно бидејќи не е дозволено објавување специфични податоци за корисникот на серверот за пребарување, контактирајте со вашиот системски администратор ако имате какви било прашања", "Your apps" : "Ваши апликации", "Active apps" : "Активни апликации", "Disabled apps" : "Оневозможени апликации", @@ -411,6 +433,10 @@ "Show to everyone" : "Прикажи на сите", "Show to logged in accounts only" : "Прикажи само на најавени корисници", "Hide" : "Сокриј", + "{progress}% Deploying …" : "{progress}% Распоредување …", + "{progress}% Initializing …" : "{progress}% Иницијализирање …", + "Health checking" : "Здравствена проверка", + "Deploy and Enable" : "Распореди и овозможи", "Download and enable" : "Преземи и овозможи", "Disable" : "Оневозможи", "Allow untested app" : "Дозволи не тестирана апликација", @@ -428,7 +454,11 @@ "Error while updating device token scope" : "Грешка при ажурирање на токен за уред", "There were too many requests from your network. Retry later or contact your administrator if this is an error." : "Има испратено премногу барање од вашата мрежа. Обидете се подоцна повторно или контактирајте го администраторот.", "Error" : "Грешка", + "Account documentation" : "Документација за кориници", + "Administration documentation" : "Документација за администратори", "Forum" : "Форум", + "Nextcloud help & privacy resources" : "Помош & Приватност", + "General documentation" : "Општа документација", "Legal notice" : "Правно известување", "Privacy policy" : "Политика за приватност", "None/STARTTLS" : "None/STARTTLS", @@ -444,6 +474,7 @@ "Authentication" : "Автентикација", "Authentication required" : "Потребна е автентификација", "Credentials" : "Акредитиви", + "SMTP Login" : "SMTP Најава", "SMTP Password" : "SMTP лозинка", "Save" : "Зачувај", "Test and verify email settings" : "Тестирај и потврди ги параметрите за електронска пошта", @@ -458,11 +489,16 @@ "Reasons to use Nextcloud in your organization" : "Причини зошто да го користите Nextcloud во вашата организација", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Развиена од {communityopen}Nextcloud заедницата{linkclose}, {githubopen}изворениот код{linkclose} е лиценциран според {licenseopen}AGPL{linkclose}.", "Like our Facebook page" : "Лајкни ја нашата Facebook страна", + "Follow us on X" : "Следи не на X", "Follow us on Mastodon" : "Следете не на Mastodon", "Check out our blog" : "Проверете го нашиот блог", "Subscribe to our newsletter" : "Претплатете се на нашиот билтен", "Use a second factor besides your password to increase security for your account." : "Користете втор фактор и покрај вашата лозинка за да ја зголемите безбедноста на вашата сметка.", "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." : "Доколку користите друга апликација за поврзување на Nextcloud, осигурајте се дека имате креирано лозинка за секоја апликација пред да овозможите втор фактор.", + "File locking" : "Заклучување на датотека", + "The PHP memory limit is below the recommended value of %s." : "Меморијата за PHP е под препорачаната вредност од %s.", + "for WebAuthn passwordless login" : "за WebAuthn најава без лозинкаpasswordless login", + "for WebAuthn passwordless login, and SFTP storage" : "за WebAuthn најава без лозинка, и SFTP складиште", "Set default expiration date for shares" : "Постави основен рок на траење за споделувањата", "Your biography" : "Ваша биографија", "You are using <strong>{usage}</strong>" : "Користите <strong>{usage}</strong>", diff --git a/apps/settings/l10n/pl.js b/apps/settings/l10n/pl.js index 927a96502e2..9dc8d22078a 100644 --- a/apps/settings/l10n/pl.js +++ b/apps/settings/l10n/pl.js @@ -370,6 +370,8 @@ OC.L10N.register( "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Użytkownicy nadal będą mogli robić zrzuty ekranu lub nagrywać ekran. Nie stanowi to pełnej ochrony.", "Allow users to share via link and emails" : "Zezwalaj użytkownikom na udostępnianie za pośrednictwem linków i e-maili", "Allow public uploads" : "Zezwalaj na publiczne wysyłanie", + "Allow public shares to be added to other clouds by federation." : "Zezwalaj na dodawanie publicznych udostępnień do innych chmur przez federację.", + "This will add share permissions to all newly created link shares." : "Spowoduje to dodanie uprawnień do udostępniania dla wszystkich nowo tworzonych udostępnień za pomocą linku.", "Always ask for a password" : "Zawsze pytaj o hasło", "Enforce password protection" : "Wymuszaj zabezpieczenie hasłem", "Exclude groups from password requirements" : "Wyklucz grupy z wymagań dotyczących haseł", diff --git a/apps/settings/l10n/pl.json b/apps/settings/l10n/pl.json index 76c734bf9de..3e05ea4aaee 100644 --- a/apps/settings/l10n/pl.json +++ b/apps/settings/l10n/pl.json @@ -368,6 +368,8 @@ "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Użytkownicy nadal będą mogli robić zrzuty ekranu lub nagrywać ekran. Nie stanowi to pełnej ochrony.", "Allow users to share via link and emails" : "Zezwalaj użytkownikom na udostępnianie za pośrednictwem linków i e-maili", "Allow public uploads" : "Zezwalaj na publiczne wysyłanie", + "Allow public shares to be added to other clouds by federation." : "Zezwalaj na dodawanie publicznych udostępnień do innych chmur przez federację.", + "This will add share permissions to all newly created link shares." : "Spowoduje to dodanie uprawnień do udostępniania dla wszystkich nowo tworzonych udostępnień za pomocą linku.", "Always ask for a password" : "Zawsze pytaj o hasło", "Enforce password protection" : "Wymuszaj zabezpieczenie hasłem", "Exclude groups from password requirements" : "Wyklucz grupy z wymagań dotyczących haseł", diff --git a/apps/settings/l10n/ru.js b/apps/settings/l10n/ru.js index d7700078d43..5f8fc8fa2a0 100644 --- a/apps/settings/l10n/ru.js +++ b/apps/settings/l10n/ru.js @@ -584,7 +584,7 @@ OC.L10N.register( "Confirm enabling encryption" : "Подтвердите включение шифрования", "Please read carefully before activating server-side encryption:" : "Перед включением шифрования на стороне сервера, внимательно прочтите следующее:", "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." : "После включения шифрования, все файлы, отправленные с этого момента на сервер, будут сохраняться в зашифрованном виде. Отключить шифрование в дальнейшем возможно только в случае, если использованный модуль шифрования поддерживает такую функцию, а также при соблюдении всех дополнительных условий (например, настроен ключ восстановления).", - "By default a master key for the whole instance will be generated. Please check if that level of access is compliant with your needs." : "По умолчанию будет сгенерирован главный ключ для всего экземпляра. Проверьте, соответствует ли этот уровень доступа вашим потребностям.", + "By default a master key for the whole instance will be generated. Please check if that level of access is compliant with your needs." : "По умолчанию будет сгенерирован мастер ключ для всего экземпляра. Проверьте, соответствует ли этот уровень доступа вашим потребностям.", "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." : "Шифрование само по себе не гарантирует безопасность системы. В документации приведена дополнительная информация о работе приложения «Шифрование» и примеры его использования.", "Be aware that encryption always increases the file size." : "Шифрование всегда увеличивает размер файлов.", "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." : "Регулярно создавайте резервные копии данных. При использовании шифрования сохраняйте не только данные, но и ключи.", diff --git a/apps/settings/l10n/ru.json b/apps/settings/l10n/ru.json index cd4e9adeca8..34855940a43 100644 --- a/apps/settings/l10n/ru.json +++ b/apps/settings/l10n/ru.json @@ -582,7 +582,7 @@ "Confirm enabling encryption" : "Подтвердите включение шифрования", "Please read carefully before activating server-side encryption:" : "Перед включением шифрования на стороне сервера, внимательно прочтите следующее:", "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." : "После включения шифрования, все файлы, отправленные с этого момента на сервер, будут сохраняться в зашифрованном виде. Отключить шифрование в дальнейшем возможно только в случае, если использованный модуль шифрования поддерживает такую функцию, а также при соблюдении всех дополнительных условий (например, настроен ключ восстановления).", - "By default a master key for the whole instance will be generated. Please check if that level of access is compliant with your needs." : "По умолчанию будет сгенерирован главный ключ для всего экземпляра. Проверьте, соответствует ли этот уровень доступа вашим потребностям.", + "By default a master key for the whole instance will be generated. Please check if that level of access is compliant with your needs." : "По умолчанию будет сгенерирован мастер ключ для всего экземпляра. Проверьте, соответствует ли этот уровень доступа вашим потребностям.", "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." : "Шифрование само по себе не гарантирует безопасность системы. В документации приведена дополнительная информация о работе приложения «Шифрование» и примеры его использования.", "Be aware that encryption always increases the file size." : "Шифрование всегда увеличивает размер файлов.", "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." : "Регулярно создавайте резервные копии данных. При использовании шифрования сохраняйте не только данные, но и ключи.", diff --git a/apps/settings/l10n/tr.js b/apps/settings/l10n/tr.js index 7a88f10365f..5d18d8f7ffa 100644 --- a/apps/settings/l10n/tr.js +++ b/apps/settings/l10n/tr.js @@ -343,6 +343,7 @@ OC.L10N.register( "Nextcloud settings" : "Nextcloud ayarları", "Unified task processing" : "Birleştirilmiş görev işleme", "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "Yapay zeka görevleri farklı uygulamalardan sağlanabilir. Buradan, bu görev için hangi uygulamanın kullanılacağını ayarlayabilirsiniz.", + "Allow AI usage for guest users" : "Konuk kullanıcılar YZ kullanabilsin", "Task:" : "Görev:", "Enable" : "Kullanıma al", "None of your currently installed apps provide Task processing functionality" : "Kurulu uygulamaların hiçbirinde görev işleme özelliği yok", @@ -369,6 +370,8 @@ OC.L10N.register( "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Kullanıcılar ekran görüntüsü alabilirler veya ekranı kaydedebilirler. Bu seçenek tam bir kesin koruma sağlamaz.", "Allow users to share via link and emails" : "Kullanıcılar bağlantı ve e-posta ile paylaşabilsin", "Allow public uploads" : "Herkes yükleyebilsin", + "Allow public shares to be added to other clouds by federation." : "Herkese açık paylaşımların birlik ile diğer bulutlara eklenebilmesini sağlar.", + "This will add share permissions to all newly created link shares." : "Bu seçenek, yeni oluşturulan tüm bağlantı paylaşımlarına paylaşım izinleri ekler.", "Always ask for a password" : "Her zaman parola sorulsun", "Enforce password protection" : "Parola koruması zorunlu kılınsın", "Exclude groups from password requirements" : "Parola gereksinimlerine katılmayacak gruplar", diff --git a/apps/settings/l10n/tr.json b/apps/settings/l10n/tr.json index 7f03aa37823..a2854f91139 100644 --- a/apps/settings/l10n/tr.json +++ b/apps/settings/l10n/tr.json @@ -341,6 +341,7 @@ "Nextcloud settings" : "Nextcloud ayarları", "Unified task processing" : "Birleştirilmiş görev işleme", "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "Yapay zeka görevleri farklı uygulamalardan sağlanabilir. Buradan, bu görev için hangi uygulamanın kullanılacağını ayarlayabilirsiniz.", + "Allow AI usage for guest users" : "Konuk kullanıcılar YZ kullanabilsin", "Task:" : "Görev:", "Enable" : "Kullanıma al", "None of your currently installed apps provide Task processing functionality" : "Kurulu uygulamaların hiçbirinde görev işleme özelliği yok", @@ -367,6 +368,8 @@ "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Kullanıcılar ekran görüntüsü alabilirler veya ekranı kaydedebilirler. Bu seçenek tam bir kesin koruma sağlamaz.", "Allow users to share via link and emails" : "Kullanıcılar bağlantı ve e-posta ile paylaşabilsin", "Allow public uploads" : "Herkes yükleyebilsin", + "Allow public shares to be added to other clouds by federation." : "Herkese açık paylaşımların birlik ile diğer bulutlara eklenebilmesini sağlar.", + "This will add share permissions to all newly created link shares." : "Bu seçenek, yeni oluşturulan tüm bağlantı paylaşımlarına paylaşım izinleri ekler.", "Always ask for a password" : "Her zaman parola sorulsun", "Enforce password protection" : "Parola koruması zorunlu kılınsın", "Exclude groups from password requirements" : "Parola gereksinimlerine katılmayacak gruplar", diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js index 171b2cb031e..92fdadf224b 100644 --- a/apps/settings/l10n/uk.js +++ b/apps/settings/l10n/uk.js @@ -132,6 +132,8 @@ OC.L10N.register( "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 правильно налаштовано.", "App directories owner" : "Власник каталогів застосунків", "Some app directories are owned by a different user than the web server one. This may be the case if apps have been installed manually. Check the permissions of the following app directories:\n%s" : "Окремі каталоги застосунків мають інших користувачів на відміну від користувача вебсервера. Часто таке трапляється, якщо застосунки було встановлено вручну. Перевірте дозволи на такі каталоги застосунків:\n%s", @@ -140,7 +142,9 @@ 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\" не уповільнена через грубі спроби підбору паролів.", + "Old administration imported certificates" : "Стара адміністрація імпортувала сертифікати", "A background job is pending that checks for administration imported SSL certificates. Please check back later." : "Виконується фонове завдання, яке перевіряє імпортовані SSL-сертифікати на предмет адміністрування. Будь ласка, перевірте пізніше.", + "There are some administration imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Існують деякі імпортовані адміністрацією SSL-сертифікати, які більше не використовуються в Nextcloud 21. Їх можна імпортувати в командному рядку за допомогою команди \"occ security:certificates:import\". Шляхи до них у каталозі даних показано нижче.", "Code integrity" : "Цілісність коду", "Integrity checker has been disabled. Integrity cannot be verified." : "Перевірку на цілісність вимкнено. Цілісність буде неможливо перевірити.", "No altered files" : "Відсутні змінені файли", @@ -153,12 +157,14 @@ OC.L10N.register( "Last background job execution ran %s." : "Останнє виконання фонового завдання тривало: %s.", "Data directory protected" : "Директорія з даними є захищеною", "Your data directory and files are probably accessible from the internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Ваш каталог даних і файли, ймовірно, доступні з Інтернету. Файл .htaccess не працює. Настійно рекомендується налаштувати веб-сервер так, щоб каталог даних був недоступний, або перемістити каталог даних за межі кореня документа веб-сервера.", + "Could not check that the data directory is protected. Please check manually that your server does not allow access to the data directory." : "Не вдалося перевірити, що каталог даних захищено. Будь ласка, перевірте вручну, чи ваш сервер не дозволяє доступ до каталогу даних.", "Database missing columns" : "Відсутні стовпці у базі даних", "Missing optional column \"%s\" in table \"%s\"." : "Відсутні необов'язкові стовпці \"%s\" у таблиці \"%s\".", "The database is missing some optional columns. Due to the fact that adding columns on big tables could take some time they were not added automatically when they can be optional. By running \"occ db:add-missing-columns\" those missing columns could be added manually while the instance keeps running. Once the columns are added some features might improve responsiveness or usability." : "У базі даних відсутні деякі необов’язкові стовпці. Через те, що додавання стовпців у великі таблиці може зайняти деякий час, вони не додаються автоматично, коли вони можуть бути необов’язковими. Для створення відсутніх стовпців, будь ласка, виконайте команду \"occ db:add-missing-columns\". Після додавання стовпців деякі функції можуть покращити реагування та зручність використання.", "Database missing indices" : "Відсутні індекси у базі даних", "Missing indices:" : "Відсутні індекси:", "\"%s\" in table \"%s\"" : "\"%s\" в таблиці \"%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." : "Виявлено деякі відсутні необов'язкові індекси. Іноді додаються нові індекси (за допомогою Nextcloud або встановлених додатків) для підвищення продуктивності бази даних. Додавання індексів може зайняти деякий час і тимчасово знизити продуктивність, тому під час оновлень це не робиться автоматично. Після додавання індексів запити до цих таблиць мають працювати швидше. Щоб додати їх, скористайтеся командою `occ db:add-missing-indices`.", "Database missing primary keys" : "Відсутні первинні ключі у базі даних", "Missing primary key on table \"%s\"." : "Відсутній первинний ключ у таблиці \"%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." : "У базі даних відсутні деякі первинні ключі. Через те, що додавання первинних ключів у великі таблиці може зайняти деякий час, вони не додаються автоматично. Для створення первинних ключей, будь ласка, виконайте команду \"occ db:add-missing-primary-keys\".", @@ -170,42 +176,71 @@ OC.L10N.register( "Default phone region" : "Типовий телефонний код регіону", "Your installation has no default phone region set. This is required to validate phone numbers in the profile settings without a country code. To allow numbers without a country code, please add \"default_phone_region\" with the respective ISO 3166-1 code of the region to your config file." : "У вашому примірнику не налаштовано типовий телефонний регіон. Цей параметр потрібний для підтвердження телефонних номерів у профілі користувача без зазначення коду країни. Щоби дозволити використання телефонних номерів без зазначення коду країни, додайте параметр \"default_phone_region\" із кодом регіону згідно з ISO 3166-1 у вашому файлі конфігурації config.php.", "Email test" : "Тест ел.пошти", + "Mail delivery is disabled by instance config \"%s\"." : "Доставку пошти вимкнено за допомогою конфігурації екземпляра \"%s\".", "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" : "Блокування транзакційних файлів", + "Transactional File Locking is disabled. This is not a a supported configuraton. It may lead to difficult to isolate problems including file corruption. Please remove the `'filelocking.enabled' => false` configuration entry from your `config.php` to avoid these problems." : "Блокування транзакційних файлів вимкнено. Це не підтримувана конфігурація. Це може призвести до проблем, які важко ізолювати, зокрема до пошкодження файлів. Будь ласка, видаліть запис конфігурації `'filelocking.enabled' => false` з вашого `config.php`, щоб уникнути цих проблем.", "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\" встановлено неправильно, це має бути масив.", + "Your \"trusted_proxies\" setting is not correctly set, it should be an array of IP addresses - optionally with range in CIDR notation." : "Ваш параметр \"trusted_proxies\" задано неправильно, це має бути масив IP-адрес - бажано з діапазоном у нотації CIDR.", "The reverse proxy header configuration is incorrect. This is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud." : "Конфігурація заголовка зворотного проксі неправильна. Це є проблемою безпеки і може дозволити зловмиснику надати Nextcloud оманливу IP-адресу.", "Your IP address was resolved as %s" : "Ваша IP-адреса була визначена як %s", + "The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud." : "Конфігурація зворотного заголовка проксі неправильна, або ви отримуєте доступ до Nextcloud від довіреного проксі-сервера. Якщо ні, це є проблемою безпеки і може дозволити зловмиснику підмінити свою IP-адресу видимою для Nextcloud.", + "HTTPS access and URLs" : "Доступ HTTPS та URL-адреси", + "Accessing site insecurely via HTTP. You are strongly advised to set up your server to require HTTPS instead. Without it some important web functionality like \"copy to clipboard\" or \"service workers\" will not work!" : "Небезпечний доступ до сайту через HTTP. Ми наполегливо рекомендуємо налаштувати ваш сервер на використання HTTPS. Без цього деякі важливі веб-функції, такі як \"копіювати в буфер обміну\" або \"сервісні працівники\", не працюватимуть!", "Accessing site insecurely via HTTP." : "Небезпечний доступ до сайту через HTTP.", + "You are accessing your instance over a secure connection, however your instance is generating insecure URLs. This likely means that your instance is behind a reverse proxy and the Nextcloud `overwrite*` config values are not set correctly." : "Ви отримуєте доступ до свого екземпляра через безпечне з'єднання, проте ваш екземпляр генерує небезпечні URL-адреси. Це, ймовірно, означає, що ваш екземпляр знаходиться за зворотним проксі і значення конфігурації Nextcloud `overwrite*` налаштовані неправильно.", + "Your instance is generating insecure URLs. If you access your instance over HTTPS, this likely means that your instance is behind a reverse proxy and the Nextcloud `overwrite*` config values are not set correctly." : "Ваш екземпляр генерує небезпечні URL-адреси. Якщо ви отримуєте доступ до вашого екземпляра через HTTPS, це, ймовірно, означає, що ваш екземпляр знаходиться за зворотним проксі і значення конфігурації Nextcloud `overwrite*` налаштовані неправильно.", + "You are accessing your instance over a secure connection, and your instance is generating secure URLs." : "Ви отримуєте доступ до свого екземпляра через захищене з'єднання, і ваш екземпляр генерує безпечні URL-адреси.", "Internet connectivity" : "З'єднання з мережею Інтернет", "Internet connectivity is disabled in configuration file." : "З'єднання з мережею Інтернет вимкнено у файлі конфігурації", "This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "На цьому сервері не працює з’єднання з Інтернетом: неможливо отримати доступ до кількох кінцевих точок. Це означає, що деякі функції, як-от підключення зовнішньої пам’яті, сповіщення про оновлення або встановлення застосунків сторонніх розробників, не працюватимуть. Віддалений доступ до файлів і надсилання сповіщень електронною поштою також можуть не працювати. Встановіть з’єднання цього сервера з Інтернетом, щоб користуватися всіма функціями.", "JavaScript modules support" : "Підтримка модулів JavaScript", + "Unable to run check for JavaScript support. Please remedy or confirm manually if your webserver serves `.mjs` files using the JavaScript MIME type." : "Не вдалося запустити перевірку підтримки JavaScript. Будь ласка, виправте помилку або підтвердіть вручну, якщо ваш веб-сервер обслуговує файли `.mjs` з використанням MIME-типу JavaScript.", "Your webserver does not serve `.mjs` files using the JavaScript MIME type. This will break some apps by preventing browsers from executing the JavaScript files. You should configure your webserver to serve `.mjs` files with either the `text/javascript` or `application/javascript` MIME type." : "Ваш вебсервер не обслуговує файли `.mjs` за допомогою типу MIME JavaScript. Це призведе до того, що окремі застосунки не працюватимуть коректно, оскільки бравзери не зможуть виконувати файли JavaScript. Вам потрібно визначити обслуговування файлів `.mjs` з типом MIME `text/javascript` або `application/javascript` у налаштуваннях вашого вебсервера.", + "JavaScript source map support" : "Підтримка карти джерел JavaScript", + "Your webserver is not set up to serve `.js.map` files. Without these files, JavaScript Source Maps won't function properly, making it more challenging to troubleshoot and debug any issues that may arise." : "Ваш веб-сервер не налаштований на обслуговування файлів `.js.map`. Без цих файлів JavaScript Source Maps не працюватиме належним чином, що ускладнює пошук і усунення несправностей та налагодження будь-яких проблем, які можуть виникнути.", "Old server-side-encryption" : "Застаріле шифрування на рівні сервера", "Disabled" : "Вимкнено", "The old server-side-encryption format is enabled. We recommend disabling this." : "Старий формат шифрування на стороні сервера ввімкнено. Рекомендуємо вимкнути це.", "Logging level" : "Рівень журналювання", + "The %1$s configuration option must be a valid integer value." : "Параметр конфігурації %1$s має бути дійсним цілим числом.", + "The logging level is set to debug level. Use debug level only when you have a problem to diagnose, and then reset your log level to a less-verbose level as it outputs a lot of information, and can affect your server performance." : "Рівень журналу встановлено на рівень налагодження. Використовуйте рівень налагодження лише тоді, коли вам потрібно діагностувати проблему, а потім скиньте рівень журналу до менш розлогого рівня, оскільки він виводить багато інформації, що може вплинути на продуктивність вашого сервера.", "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", "Memcache" : "Memcache", + "Memcached is configured as distributed cache, but the wrong PHP module (\"memcache\") is installed. Please install the PHP module \"memcached\"." : "Memcached налаштовано як розподілений кеш, але встановлено неправильний модуль PHP (\"memcache\"). Будь ласка, встановіть модуль PHP \"memcached\".", + "Memcached is configured as distributed cache, but the PHP module \"memcached\" is not installed. Please install the PHP module \"memcached\"." : "Memcached налаштовано як розподілений кеш, але PHP-модуль \"memcached\" не встановлено. Будь ласка, встановіть PHP-модуль \"memcached\".", "No memory cache has been configured. To enhance performance, please configure a memcache, if available." : "Відсутні налаштування кешування пам'яти. Для кращої продуктивности рекомендуємо налаштувати memcache, якщо доступний.", + "Failed to write and read a value from local cache." : "Не вдалося записати або прочитати значення з локального кешу.", + "Failed to write and read a value from distributed cache." : "Не вдалося записати або прочитати значення з розподіленого кешу.", "Configured" : "Налаштовано", + "Mimetype migrations available" : "Доступні міграції міметипів", + "One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations." : "Доступні один або декілька міграцій міметипів. Іноді додаються нові міметипи для кращої обробки певних типів файлів. Перенесення міметипів займає багато часу на великих екземплярах, тому воно не виконується автоматично під час оновлення. Для виконання міграції скористайтеся командою `occ maintenance:repair --include-expensive`.", "MySQL row format" : "Формат рядка MySQL", "You are not using MySQL" : "Ви не використовуєте MySQL", + "None of your tables use ROW_FORMAT=Compressed" : "Жодна з ваших таблиць не використовує ROW_FORMAT=Compressed", + "Incorrect row format found in your database. ROW_FORMAT=Dynamic offers the best database performances for Nextcloud. Please update row format on the following list: %s." : "У вашій базі даних знайдено неправильний формат рядків. ROW_FORMAT=Dynamic забезпечує найкращу продуктивність бази даних для Nextcloud. Будь ласка, оновіть формат рядків у наступному списку: %s.", "MySQL Unicode support" : "Підтримка юнікоду в MySQL", "MySQL is used as database and does support 4-byte characters" : "MySQL використовується яко база даних, увімкнено підтримку 4-бітних символів", "MySQL is used as database but does not support 4-byte characters. To be able to handle 4-byte characters (like emojis) without issues in filenames or comments for example it is recommended to enable the 4-byte support in MySQL." : "MySQL використовується яко база даних, проте 4-бітні символи не підтримуються. Для коректного відображення 4-бітних символів (напр., відображення емоційок) рекомендується встановити 4-бітну підтримку в налаштуваннях MySQL.", + "OCS provider resolving" : "Дозвіл постачальника OCS", + "Could not check if your web server properly resolves the OCM and OCS provider URLs." : "Не вдалося перевірити, чи правильно ваш веб-сервер розпізнає URL-адреси постачальників OCM та OCS.", + "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." : "Ваш веб-сервер не налаштовано належним чином для обробки %1$s.\nСкоріш за все, це пов'язано з конфігурацією веб-сервера, яку не було оновлено для безпосередньої доставки цієї теки.\nБудь ласка, порівняйте вашу конфігурацію з правилами перезапису в \".htaccess\" для Apache або з наведеними в документації для Nginx.\nУ Nginx зазвичай оновлення потребують рядки, що починаються з \"location ~\".", "Overwrite CLI URL" : "Перезаписати CLI URL", "The \"overwrite.cli.url\" option in your config.php is correctly set to \"%s\"." : "Параметр \"overwrite.cli.url\" у вашому конфігураційному файлі config.php налаштовано правильно зі значенням \"%s\".", "The \"overwrite.cli.url\" option in your config.php is set to \"%s\" which is a correct URL. Suggested URL is \"%s\"." : "Параметр \"overwrite.cli.url\" у вашому конфігураційному файлі config.php налаштовано зі значенням \"%s\", яке є правильним URL. Рекомендований URL: \"%s\".", "Please make sure to set the \"overwrite.cli.url\" option in your config.php file to the URL that your users mainly use to access this Nextcloud. Suggestion: \"%s\". Otherwise there might be problems with the URL generation via cron. (It is possible though that the suggested URL is not the URL that your users mainly use to access this Nextcloud. Best is to double check this in any case.)" : "Обов’язково встановіть параметр \"overwrite.cli.url\" у конфігураційному файлі config.php зі значенням URL-адреси, яку ваші користувачі переважно використовують для доступу до цього Nextcloud. Пропонується таке значення: \"%s\". В іншому випадку можуть виникнути проблеми з генерацією URL-адреси через cron. (Однак можливо, що запропонована URL-адреса не є URL-адресою, яку ваші користувачі переважно використовують для доступу до хмари Nextcloud. Будь ласка, перевірте, чи це так.)", + "PHP APCu configuration" : "Конфігурація PHP APCu", + "Your APCu cache has been running full, consider increasing the apc.shm_size php setting." : "Ваш кеш APCu переповнений, спробуйте збільшити значення параметра apc.shm_size php.", + "Your APCu cache is almost full at %s%%, consider increasing the apc.shm_size php setting." : "Ваш кеш APCu майже заповнений за адресою %s%%, розгляньте можливість збільшення параметра apc.shm_size php.", "PHP default charset" : "Типове кодування сторінки PHP", "PHP configuration option \"default_charset\" should be UTF-8" : "Параметр конфігурації PHP \"default_charset\" має мати значення UTF-8", + "PHP set_time_limit" : "PHP set_time_limit", "The function is available." : "Функція доступна.", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "Функція PHP \"set_time_limit\" недоступна. Це може призвести до зупинки сценаріїв під час виконання, що порушить установку. Настійно рекомендується вмикати цю функцію.", "Freetype" : "Freetype", @@ -213,13 +248,21 @@ OC.L10N.register( "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Ваш PHP не підтримує FreeType, що призводить до поломки зображень профілю та інтерфейсу налаштувань.", "PHP getenv" : "PHP getenv", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP не налаштований правильно для отримання змінних системного оточення. Запит getenv(\"PATH\") повертає пусті результати.", + "PHP file size upload limit" : "Обмеження на розмір завантажуваного PHP-файлу", + "The PHP upload_max_filesize is too low. A size of at least %1$s is recommended. Current value: %2$s." : "PHP upload_max_filesize занадто малий. Рекомендується розмір не менше %1$s. Поточне значення: %2$s.", + "The PHP post_max_size is too low. A size of at least %1$s is recommended. Current value: %2$s." : "PHP post_max_size занадто малий. Рекомендується розмір не менше %1$s. Поточне значення: %2$s.", + "The PHP max_input_time is too low. A time of at least %1$s is recommended. Current value: %2$s." : "PHP max_input_time занадто малий. Рекомендується час не менше %1$s. Поточне значення: %2$s.", + "The PHP max_execution_time is too low. A time of at least %1$s is recommended. Current value: %2$s." : "Занадто малий час виконання PHP max_execution_time. Рекомендується час не менше %1$s. Поточне значення: %2$s.", "PHP memory limit" : "Обмеження пам'яті PHP", + "The PHP memory limit is below the recommended value of %s. Some features or apps - including the Updater - may not function properly." : "Обмеження пам'яті PHP нижче рекомендованого значення %s. Деякі функції або програми, включаючи Updater, можуть не працювати належним чином.", "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", + "PHP opcache" : "PHP opcache", "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "Модуль PHP OPcache не завантажується. Для кращої продуктивності рекомендується завантажити його у вашу установку PHP.", "OPcache is disabled. For better performance, it is recommended to apply \"opcache.enable=1\" to your PHP configuration." : "OPcache вимкнено. Для кращої продуктивності рекомендовано встановити значення \"opcache.enable=1\" у конфігураційному файлі PHP.", "The shared memory based OPcache is disabled. For better performance, it is recommended to apply \"opcache.file_cache_only=0\" to your PHP configuration and use the file cache as second level cache only." : "OPcache для розділеної пам'яти вимкнено. Для кращої продуктивності рекомендовано встановити значення \"opcache.file_cache_only=0\" у конфігураційному файлі PHP, використовувати кеш файлів лише як кеш другого рівня.", @@ -229,9 +272,11 @@ OC.L10N.register( "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply \"opcache.interned_strings_buffer\" to your PHP configuration with a value higher than \"%s\"." : "Внутрішній буфер рядків OPcache майже переповнено. Рекомендується встановити значення \"opcache.interned_strings_buffer\" у вашому конфігураційному файлі PHP вище за \"%s\", щоб забезпечити ефективне кешування повторюваних рядків.", "OPcache is configured to remove code comments. With OPcache enabled, \"opcache.save_comments=1\" must be set for Nextcloud to function." : "OPcache налаштовано для вилучення коментарів коду. Для увімкнененого OPcache потрібно встановити значення \"opcache.save_comments=1\" для правильної роботи Nextcloud.", "Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with \"opcache.restrict_api\" or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Серверу Nextcloud не дозволено використовувати OPcache API. Для увімкненого OPcache наполегливо рекомендується додати всі каталоги Nextcloud з \"opcache.restrict_api\" або взагалі не встановлювати таке налаштування й таким чином вимкнути обмеження OPcache API, щоби уникнути помилок під час оновлення основної частини Nextcloud або застосунків.", + "Checking from CLI, OPcache checks have been skipped." : "Перевірка з CLI, перевірка OPcache була пропущена.", "The PHP OPcache module is not properly configured. %s." : "Модуль PHP OPcache не налаштовано належним чином. %s.", "Correctly configured" : "Правильне налаштування", "PHP version" : "Версія PHP", + "You are currently running PHP %1$s. PHP %2$s is deprecated since Nextcloud %3$s. Nextcloud %4$s may require at least PHP %5$s. Please upgrade to one of the officially supported PHP versions provided by the PHP Group as soon as possible." : "Наразі ви використовуєте PHP %1$s. PHP %2$s застаріла, починаючи з Nextcloud %3$s. Для роботи Nextcloud %4$s може знадобитися щонайменше PHP %5$s. Будь ласка, якнайшвидше оновіть систему до однієї з офіційно підтримуваних версій PHP, наданих PHP Group.", "You are currently running PHP %s." : "У вас встановлено PHP %s.", "PHP \"output_buffering\" option" : "Параметр PHP \"\"output_buffering\"", "PHP configuration option \"output_buffering\" must be disabled" : "Параметр PHP \"\"output_buffering\" потрібно вимкнути", @@ -245,15 +290,37 @@ OC.L10N.register( "Configuration file access rights" : "Дозволи доступу до конфігураційного файлу", "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Увімкнена конфігурація тільки для читання. Це запобігає встановленню деяких опцій через вебінтерфейс. Крім того, для кожного оновлення файл повинен бути зроблений з доступом на запис.", "Nextcloud configuration file is writable" : "Файл конфігурації Nextcloud доступний для запису", + "Scheduling objects table size" : "Розмір таблиці об'єктів планування", + "You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive." : "У таблиці об'єктів планування є більше %s рядків. Будь ласка, запустіть дорогі ремонтні роботи за допомогою occ maintenance:repair --include-expensive.", + "Scheduling objects table size is within acceptable range." : "Розмір таблиці об'єктів планування знаходиться в допустимих межах.", "HTTP headers" : "Заголовки HTTP", + "- The `%1$s` HTTP header is not set to `%2$s`. Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "- HTTP-заголовок `%1$s` не має значення `%2$s`. Деякі функції можуть працювати некоректно, тому рекомендується змінити цей параметр відповідним чином.", + "- The `%1$s` HTTP header is not set to `%2$s`. This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "- HTTP-заголовок `%1$s` не має значення `%2$s`. Це є потенційним ризиком для безпеки або конфіденційності, тому рекомендується змінити цей параметр відповідним чином.", + "- The `%1$s` HTTP header is not set to `%2$s`, `%3$s`, `%4$s`, `%5$s` or `%6$s`. This can leak referer information. See the {w3c-recommendation}." : "- HTTP-заголовок `%1$s` не має значення `%2$s`, `%3$s`, `%4$s`, `%5$s` або `%6$s`. Це може призвести до витоку інформації про реферала. Зверніться до {w3c-recommendation}.", + "- The `Strict-Transport-Security` HTTP header is not set to at least `%d` seconds (current value: `%d`). For enhanced security, it is recommended to use a long HSTS policy." : "- HTTP-заголовок `Strict-Transport-Security` не встановлено принаймні `%d` секунд (поточне значення: `%d`). Для підвищення безпеки рекомендується використовувати довгу політику HSTS.", + "- The `Strict-Transport-Security` HTTP header is malformed: `%s`. For enhanced security, it is recommended to enable HSTS." : "- Неправильно сформовано HTTP-заголовок `Strict-Transport-Security`: `%s`. Для підвищення безпеки рекомендується увімкнути HSTS.", + "- The `Strict-Transport-Security` HTTP header is not set (should be at least `%d` seconds). For enhanced security, it is recommended to enable HSTS." : "- HTTP-заголовок `Strict-Transport-Security` не встановлено (має бути щонайменше `%d` секунд). Для підвищення безпеки рекомендується ввімкнути HSTS.", + "Some headers are not set correctly on your instance" : "У вашому екземплярі деякі заголовки задано неправильно", + "Could not check that your web server serves security headers correctly. Please check manually." : "Не вдалося перевірити, чи правильно ваш веб-сервер обслуговує заголовки безпеки. Будь ласка, перевірте вручну.", + "Could not check that your web server serves security headers correctly, unable to query `%s`" : "Не вдалося перевірити, чи правильно ваш веб-сервер обслуговує заголовки безпеки, не вдалося виконати запит `%s`.", + "Your server is correctly configured to send security headers." : "Ваш сервер правильно налаштовано для надсилання заголовків безпеки.", "Database version" : "Версія бази даних", + "MariaDB version 10.3 detected, this version is end-of-life and only supported as part of Ubuntu 20.04. MariaDB >=%1$s and <=%2$s is suggested for best performance, stability and functionality with this version of Nextcloud." : "Виявлено MariaDB версії 10.3, ця версія застаріла і підтримується лише у складі Ubuntu 20.04. Рекомендується використовувати MariaDB >=%1$s та <=%2$s для кращої продуктивності, стабільності та функціональності з цією версією Nextcloud.", + "MariaDB version \"%1$s\" detected. MariaDB >=%2$s and <=%3$s is suggested for best performance, stability and functionality with this version of Nextcloud." : "Виявлено версію MariaDB \"%1$s\". Для кращої продуктивності, стабільності та функціональності цієї версії Nextcloud рекомендується використовувати MariaDB >=%2$s та <=%3$s.", + "MySQL version \"%1$s\" detected. MySQL >=%2$s and <=%3$s is suggested for best performance, stability and functionality with this version of Nextcloud." : "Виявлено версію MySQL \"%1$s\". Рекомендується використовувати MySQL >=%2$s та <=%3$s для кращої продуктивності, стабільності та функціональності з цією версією Nextcloud.", + "PostgreSQL version \"%1$s\" detected. PostgreSQL >=%2$s and <=%3$s is suggested for best performance, stability and functionality with this version of Nextcloud." : "Виявлено версію PostgreSQL \"%1$s\". Рекомендується використовувати PostgreSQL >=%2$s та <=%3$s для кращої продуктивності, стабільності та функціональності з цією версією Nextcloud.", "SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend. This is particularly recommended when using the desktop client for file synchronisation. To migrate to another database use the command line tool: \"occ db:convert-type\"." : "Наразі SQLite використовується як база даних. Для більш продуктивних примірників рекомендується переключитися на іншу базу даних. Зокрема це рекомендується у разі використання клієнтів синхронізації файлів для робочих станцій. Щоб мігрувати до іншої бази даних, використовуйте інструмент командного рядка: \"occ db:convert-type\".", "Unknown database platform" : "Невідома платформа бази даних", "Architecture" : "Архітектура", "64-bit" : "64 біти", "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "Схоже, що у вас встановлено 32-бітну версію PHP. Правильна робота Nextcloud вимагає 64-бітної версії. Оновіть вашу операційну систему та рушій PHP до 64-бітної версії!", + "Task Processing pickup speed" : "Швидкість обробки завдань", + "_No scheduled tasks in the last %n hour._::_No scheduled tasks in the last %n hours._" : ["Запланованих завдань за останні %n годин не було.","Немає запланованих завдань за останні %n годин.","Немає запланованих завдань за останні %n годин.","Немає запланованих завдань за останні %n годин."], + "_The task pickup speed has been ok in the last %n hour._::_The task pickup speed has been ok in the last %n hours._" : ["Швидкість підхоплення завдань була нормальною протягом останньої %n годин.","Швидкість збирання завдань була нормальною протягом останніх %n годин.","Швидкість збирання завдань була нормальною протягом останніх %n годин.","Швидкість збирання завдань була нормальною протягом останніх %n годин."], + "_The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._::_The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._" : ["Швидкість збирання завдань була низькою протягом останньої %n годин. Багато завдань забиралися довше, ніж за 4 хвилини. Подумайте про те, щоб налаштувати працівника на обробку завдань у фоновому режимі.","Швидкість збирання завдань була низькою протягом останніх %n годин. Багато завдань забиралися довше, ніж за 4 хвилини. Подумайте про те, щоб налаштувати працівника на обробку завдань у фоновому режимі.","Швидкість збирання завдань була низькою протягом останніх %n годин. Багато завдань забиралися довше, ніж за 4 хвилини. Подумайте про те, щоб налаштувати працівника на обробку завдань у фоновому режимі.","Швидкість збирання завдань була низькою протягом останніх %n годин. Багато завдань забиралися довше, ніж за 4 хвилини. Подумайте про те, щоб налаштувати працівника на обробку завдань у фоновому режимі."], "Temporary space available" : "Тимчасовий простір доступний", "Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "Помилка під час перевірки шляху до тимчасового каталогу PHP, його не було правильно налаштовано яко каталог. Отримано значення: %s", + "The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "Функція PHP \"disk_free_space\" відключена, що перешкоджає перевірці наявності вільного місця в тимчасових каталогах.", "Error while checking the available disk space of temporary PHP path or no free disk space returned. Temporary path: %s" : "Помилка під час перевірки доступного дискового простору тимчасового каталогу PHP або отримано підтвердження про відсутність вільного дискового простору. Шлях до тимчасового каталогу: %s", "- %.1f GiB available in %s (PHP temporary directory)" : "- %.1f ГБ доступно у %s (тимчасовий каталог PHP)", "- %.1f GiB available in %s (Nextcloud temporary directory)" : "- %.1f ГБ доступно у %s (тимчасовий каталог Nextcloud)", @@ -263,11 +330,20 @@ OC.L10N.register( "Database transaction isolation level" : "Рівень ізолювання транзакцій бази даних", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Ваша база даних не працює з рівнем ізоляції транзакцій \"READ COMMITTED\". Це може спричинити проблеми, коли кілька дій виконуються паралельно.", "Was not able to get transaction isolation level: %s" : "Не вдалося отримати рівень ізолюування тразакцій: %s", + ".well-known URLs" : ".відомі URL-адреси", + "`check_for_working_wellknown_setup` is set to false in your configuration, so this check was skipped." : "У вашій конфігурації `check_for_working_wellknown_setup` встановлено у false, тому цю перевірку було пропущено.", + "Could not check that your web server serves `.well-known` correctly. Please check manually." : "Не вдалося перевірити, чи правильно ваш веб-сервер обслуговує `.well-known`. Будь ласка, перевірте вручну.", + "Your web server is not properly set up to resolve `.well-known` URLs, failed on:\n`%s`" : "Ваш веб-сервер не налаштовано належним чином для вирішення `.well-known` URL-адрес, failed on:\n`%s`", + "Your server is correctly configured to serve `.well-known` URLs." : "Ваш сервер правильно налаштовано для обслуговування `.well-known` URL-адрес.", "Font file loading" : "Завантаження файлу шрифтів", + "Could not check for {extension} loading support. Please check manually if your webserver serves `.{extension}` files." : "Не вдалося перевірити підтримку завантаження {розширення}. Будь ласка, перевірте вручну, чи обслуговує ваш веб-сервер файли `.{розширення}`.", + "Your web server is not properly set up to deliver .{extension} files. This is typically an issue with the Nginx configuration. For Nextcloud 15 it needs an adjustment to also deliver .{extension} files. Compare your Nginx configuration to the recommended configuration in our documentation." : "Ваш веб-сервер не налаштовано належним чином для доставки файлів з розширенням .{розширення}. Зазвичай це пов'язано з конфігурацією Nginx. Для Nextcloud 15 його потрібно налаштувати так, щоб він також доставляв файли з розширенням .{extension}. Порівняйте вашу конфігурацію Nginx з рекомендованою конфігурацією в нашій документації.", "Profile information" : "Інформація профілю", "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Зображення профілю, повне ім’я, електронна адреса, номер телефону, адреса, веб-сайт, Twitter, організація, роль, заголовок, біографія та чи активовано ваш профіль", "Nextcloud settings" : "Налаштування Nextcloud", "Unified task processing" : "Централізована обробка завдань ", + "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "Завдання штучного інтелекту можуть виконуватися різними програмами. Тут ви можете вказати, яку програму слід використовувати для виконання того чи іншого завдання.", + "Allow AI usage for guest users" : "Дозволити використання ШІ для гостьових користувачів", "Task:" : "Завдання:", "Enable" : "Увімкнути", "None of your currently installed apps provide Task processing functionality" : "Жодний зі встановлених застосунків не надає функціональність з обробки завдань", @@ -290,13 +366,19 @@ OC.L10N.register( "Allow sharing with groups" : "Дозволити спільне використання групами", "Restrict users to only share with users in their groups" : "Дозволити надання у спільний доступ тільки в межах власних груп", "Ignore the following groups when checking group membership" : "Ігнорувати такі групи під час перевірки участи в групі", + "Allow users to preview files even if download is disabled" : "Дозвольте користувачам переглядати файли, навіть якщо завантаження вимкнено", + "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Користувачі все одно зможуть робити скріншоти або записувати екран. Це не забезпечує жодного остаточного захисту.", "Allow users to share via link and emails" : "Дозволити користувачам надання у спільний доступ за допомогою посилань та ел. листів", "Allow public uploads" : "Дозволити публічне завантаження", + "Allow public shares to be added to other clouds by federation." : "Дозвольте додавати публічні ресурси до інших хмар за допомогою федерації.", + "This will add share permissions to all newly created link shares." : "Це додасть дозволи на спільний доступ до всіх новостворених спільних ресурсів посилань.", "Always ask for a password" : "Завжди запитувати пароль", "Enforce password protection" : "Захист паролем обов'язковий", "Exclude groups from password requirements" : "Виключення щодо вимог пароля для груп", "Exclude groups from creating link shares" : "Не дозволяти користувачам таких груп створювати посилання спільного доступу", "Allow users to set custom share link tokens" : "Дозволити користвучам встановити власні токени спільних посилань", + "Shares with custom tokens will continue to be accessible after this setting has been disabled" : "Частки з власними токенами залишатимуться доступними після вимкнення цього параметра", + "Shares with guessable tokens may be accessed easily" : "До акцій з вгадуваними токенами можна легко отримати доступ", "Limit sharing based on groups" : "Обмежити надання у спільний доступ на основі груп", "Allow sharing for everyone (default)" : "Дозволити надання у спільний доступ для всіх (типово)", "Exclude some groups from sharing" : "Не дозволяти таким групам надавати у спільний доступ", @@ -361,7 +443,9 @@ OC.L10N.register( "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" : "Відсутня інформація для показу", "Could not load section content from app store." : "Не вдалося отримати розділ вмісту із крамнички.", @@ -373,15 +457,36 @@ OC.L10N.register( "Choose slide to display" : "Виберіть слайд для показу", "{index} of {total}" : "{index} із {total}", "Daemon" : "Демон", + "Deploy Daemon" : "Розгортання демона", "Type" : "Тип", "Display Name" : "Назва для показу", "GPUs support" : "Підтримка GPU", "Compute device" : "Пристрій для обчислення", + "Advanced deploy options" : "Розширені параметри розгортання", + "Edit ExApp deploy options before installation" : "Редагування параметрів розгортання ExApp перед інсталяцією", + "Configured ExApp deploy options. Can be set only during installation" : "Налаштовані параметри розгортання ExApp. Можна налаштувати лише під час інсталяції", "Learn more" : "Дізнатися більше", + "Environment variables" : "Змінні середовища", + "ExApp container environment variables" : "Змінні оточення контейнера ExApp", + "No environment variables defined" : "Змінні оточення не визначено", + "Mounts" : "Кріплення", + "Define host folder mounts to bind to the ExApp container" : "Визначте монтування папки хоста для прив'язки до контейнера ExApp", + "Must exist on the Deploy daemon host prior to installing the ExApp" : "Повинен існувати на хості демона розгортання до встановлення ExApp", + "Host path" : "Шлях до хосту", + "Container path" : "Шлях до контейнера", "Read-only" : "Тільки для читання", + "Remove mount" : "Зніміть кріплення", + "New mount" : "Нове кріплення", + "Enter path to host folder" : "Введіть шлях до папки хоста", + "Enter path to container folder" : "Введіть шлях до папки контейнера", "Toggle read-only mode" : "Перемкнути режим тільки для читання", + "Confirm adding new mount" : "Підтвердіть додавання нового кріплення", "Confirm" : "Підтвердити", + "Cancel adding mount" : "Скасувати додавання кріплення", "Cancel" : "Скасувати", + "Add mount" : "Додати кріплення", + "ExApp container mounts" : "Кріплення для контейнерів ExApp", + "No mounts defined" : "Не визначено жодного кріплення", "Description" : "Опис", "View in store" : "Переглянути у крамниці застосунків", "Visit website" : "Перейти на вебсайт", @@ -393,6 +498,9 @@ OC.L10N.register( "Limit app usage to groups" : "Обмежити використання застосунку певними групами", "No results" : "Нічого не знайдено", "Update to {version}" : "Оновити до {version}", + "Deploy options" : "Варіанти розгортання", + "Default Deploy daemon is not accessible" : "За замовчуванням демон розгортання недоступний", + "Delete data on remove" : "Видалення даних при видаленні", "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Цей застосунок не має обмежень щодо мінімальної версії Nextcloud. В майбутньому це може викликати певні помилки.", "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Для цього застосунку не визначено найвищу версію Nextcloud. Це може викликати помилку в майбутньому.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Цей застосунок не буде встановлено, оскільки такі залежності неможливо виконати:", @@ -415,6 +523,8 @@ OC.L10N.register( "{productName} Talk for Android" : "{productName} Talk для Android", "Sync client" : "Синхронізувати клієнт", "This session" : "Цей сеанс", + "{client} - {version} ({system})" : "{клієнт} - {версія} ({система})", + "{client} - {version}" : "{клієнт} - {версія}", "Device name" : "Назва пристрою", "Cancel renaming" : "Відхилити перейменування", "Save new name" : "Зберегти нове ім'я", @@ -452,30 +562,39 @@ OC.L10N.register( "Last job ran {relativeTime}." : "Останнє завдання виконано {relativeTime}.", "Background job did not run yet!" : "Фонове завдання ще не виконано!", "AJAX" : "AJAX", + "Execute one task with each page loaded. Use case: Single account instance." : "Виконувати по одному завданню при кожному завантаженні сторінки. Варіант використання: Один екземпляр облікового запису.", "Webcron" : "Webcron", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 accounts depending on the usage)." : "cron.php зареєстровано на сервісі webcron, щоб викликати cron.php кожні 5 хвилин по HTTP. Варіант використання: Дуже маленький екземпляр (1-5 акаунтів залежно від використання).", "Cron (Recommended)" : "Cron (рекомендовано)", "Unable to update profile default setting" : "Не вдалося оновити стандартні налаштування профілю", "Profile" : "Профіль", "Enable or disable profile by default for new accounts." : "Увімкнути або вимкнути стандартний профіль для нових акаунтів.", "Password confirmation is required" : "Необхідне підтвердження паролем", "Failed to save setting" : "Не вдалося зберегти налаштування", + "{app}'s declarative setting field: {name}" : "Декларативне поле налаштувань {app}: {name}", "Unable to update server side encryption config" : "Не вдалося оновити конфігурацію шифрування на стороні сервера", "Server-side encryption" : "Шифрування на сервері", "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." : "Шифрування на стороні сервера дозволяє шифрувати файли, завантажені на цей сервер. Це має свою ціну, таку як зниження продуктивності, тому ввімкніть його лише за потреби.", + "To encrypt all existing files run this OCC command:" : "Щоб зашифрувати всі наявні файли, запустіть цю команду OCC:", "Enable server-side encryption" : "Увімкнути шифрування на сервері", + "Disabling server side encryption is only possible using OCC, please refer to the documentation." : "Вимкнення шифрування на стороні сервера можливе лише за допомогою OCC, будь ласка, зверніться до документації.", "No encryption module loaded, please enable an encryption module in the app menu." : "Модуль шифрування не завантажено, увімкніть модуль шифрування в меню застосунку.", "Select default encryption module:" : "Обрати стандартний модуль шифрування:", "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}" : "Вам потрібно перенести ключі шифрування зі старого шифрування (ownCloud <= 8.0) на нове. Увімкніть \"Стандартний модуль шифрування\" та виконайте {command}", "Cancel encryption" : "Скасувати шифрування", "Enable encryption" : "Увімкнути шифрування", + "Confirm enabling encryption" : "Підтвердіть увімкнення шифрування", "Please read carefully before activating server-side encryption:" : "Уважно прочитайте, перш ніж увімкнути шифрування на стороні сервера:", "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." : "Після активації шифрування, всі файли завантажені на сервер з цього моменту, будуть зашифровані на сервері. Відключити шифрування пізніше можна буде тільки якщо активний модуль шифрування підтримує цю функцію, і при виконанні певних умов (наприклад, налаштований ключ відновлення).", + "By default a master key for the whole instance will be generated. Please check if that level of access is compliant with your needs." : "За замовчуванням буде згенеровано майстер-ключ для всього екземпляра. Будь ласка, перевірте, чи відповідає цей рівень доступу вашим потребам.", "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." : "Саме по собі шифрування не гарантує безпеку системи. Будь ласка, перегляньте документацію, щоб отримати додаткову інформацію про те, як працює застосунок для шифрування, та про приклади його використання.", "Be aware that encryption always increases the file size." : "Майте на увазі, що шифрування завжди збільшує розмір файлів.", "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." : "Завжди корисно регулярно створювати резервні копії ваших даних, у разі шифрування обов’язково зробіть резервну копію ключів шифрування разом із вашими даними.", + "Refer to the admin documentation on how to manually also encrypt existing files." : "Зверніться до документації адміністратора, щоб дізнатися, як вручну зашифрувати наявні файли.", "This is the final warning: Do you really want to enable encryption?" : "Це останнє попередження: Ви справді хочете ввімкнути шифрування?", "Failed to delete group \"{group}\"" : "Не вдалося вилучити групу \"{group}\"", "Please confirm the group removal" : "Підтвердіть вилучення групи", + "You are about to delete the group \"{group}\". The accounts will NOT be deleted." : "Ви збираєтеся видалити групу \"{group}\". Облікові записи НЕ будуть видалені.", "Submit" : "Продовжити", "Rename group" : "Перейменувати групу", "Delete group" : "Вилучити групу", @@ -542,6 +661,7 @@ OC.L10N.register( "she/her" : "вона/їй", "he/him" : "він/йому", "they/them" : "вони/їм", + "Your pronouns. E.g. {pronounsExample}" : "Ваші займенники. Наприклад, {pronounsExample}", "Your role" : "Ваша роль", "Your X (formerly Twitter) handle" : "Ваш ідентифікатор в X (раніше відомій як Twitter)", "Your website" : "Ваш сайт", @@ -563,6 +683,7 @@ OC.L10N.register( "Password change is disabled because the master key is disabled" : "Зміну пароля вимкнено, оскільки майстер-ключ відключений", "No accounts" : "Відсутні користувачі", "Loading accounts …" : "Завантаження облікових записів ...", + "List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list." : "Список акаунтів. Цей список не відображається повністю з міркувань продуктивності. Акаунти будуть відображатися в міру того, як ви будете переміщатися по списку.", "Manager" : "Менеджер", "Set line manager" : "Встановити безпосереднього начальника", "Account name will be autogenerated" : "Ім'я користувача буде автоматично створено", @@ -592,6 +713,7 @@ OC.L10N.register( "Avatar" : "Світлина", "Account name" : "Назва облікового запису", "Group admin for" : "Адміністратор групи", + "Account backend" : "Внутрішня частина облікового запису", "Storage location" : "Місце розташування сховища", "First login" : "Перший вхід", "Last login" : "Останній вхід", @@ -606,6 +728,9 @@ 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 sub admin groups with details" : "Не вдалося завантажити групи під-адміністраторів з деталями", + "Failed to update line manager" : "Не вдалося оновити лінійного керівника", "Fully delete {userid}'s account including all their personal files, app data, etc." : "Повністю вилучає обліковий запис {userid} включно з особистими файлами, даними застосунків тощо.", "Account deletion" : "Вилучення облікового запису", "Delete {userid}'s account" : "Вилучити обліковий запис {userid}", @@ -637,6 +762,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" : "Запрошення", @@ -657,9 +783,11 @@ 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." : "Як адміністратор ви можете точно налаштувати поведінку спільного використання. Будь ласка, перегляньте документацію для отримання додаткової інформації.", "You need to enable the File sharing App." : "Потрібно увімкнути застосунок для обміну файлами.", + "App Store" : "App Store", "Loading app list" : "Завантаження переліку застосунків", "Loading categories" : "Завантаження категорій", "Developer documentation ↗" : "Документація розробника ↗", + "Version {version}, {license}-licensed" : "Версія {версія}, {ліцензія}-ліцензійний", "Version {version}" : "Версія {version}", "All accounts" : "Всі облікові записи", "Admins" : "Адміністратори", @@ -667,6 +795,7 @@ OC.L10N.register( "Account management" : "Керування обліковими записами", "Sending…" : "Надсилання...", "Email sent" : "Лист надіслано", + "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "З міркувань продуктивності, коли ви вмикаєте шифрування на сервері Nextcloud, шифруються лише нові та змінені файли.", "Location" : "Місце розташування", "Profile picture" : "Зображення користувача", "About" : "Опис", @@ -698,7 +827,11 @@ OC.L10N.register( "Show to everyone" : "Показувати всім", "Show to logged in accounts only" : "Показувати тільки для авторизованих", "Hide" : "Сховати", + "Manually installed apps cannot be updated" : "Неможливо оновити програми, встановлені вручну", + "{progress}% Deploying …" : "{progress}% Розгортання ...", + "{progress}% Initializing …" : "{progress}% Ініціалізація ...", "Health checking" : "Перевірка доступности", + "Deploy and Enable" : "Розгортання та активація", "Download and enable" : "Звантажити та увімкнути", "Disable" : "Вимкнути", "Allow untested app" : "Дозволити непротестовані застосунки", @@ -710,6 +843,7 @@ OC.L10N.register( "Could not register device: Probably already registered" : "Не вдалося зареєструвати пристрій. Ймовірно, що його вже зареєстровано", "Could not register device" : "Не вдалося зареєструвати пристрій", "An error occurred during the request. Unable to proceed." : "Під час запиту сталася помилка. Неможливо продовжити.", + "The app has been enabled but needs to be updated." : "Додаток увімкнено, але його потрібно оновити.", "Error: This app cannot be enabled because it makes the server unstable" : "Помилка: цю програму неможливо увімкнути, оскільки вона робить сервер нестабільним", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Застосунок активовано, але його потрібно оновити. Вас буде переспрямовано на сторінку оновлення через 5 секунд.", "Do you really want to wipe your data from this device?" : "Ви справді хочете стерти дані з цього пристрою?", @@ -718,6 +852,7 @@ OC.L10N.register( "Error while wiping the device with the token" : "Помилка під час очищення пристрою за допомогою токена", "Error while updating device token name" : "Помилка під час оновлення назви токена пристрою", "Error while updating device token scope" : "Помилка під час оновлення області токена пристрою", + "Could not set group sorting" : "Не вдалося налаштувати групове сортування", "There were too many requests from your network. Retry later or contact your administrator if this is an error." : "Забагато запитів із вашої мережі. Повторіть спробу пізніше або зверніться до адміністратора, якщо це помилка.", "Error" : "Помилка", "Account documentation" : "Документація для користувача", @@ -740,6 +875,7 @@ OC.L10N.register( "Authentication" : "Авторизація", "Authentication required" : "Потрібна авторизація", "Credentials" : "Облікові дані", + "SMTP Login" : "Логін SMTP", "SMTP Password" : "Пароль SMTP", "Save" : "Зберегти", "Test and verify email settings" : "Перевірити налаштування електронної пошти", @@ -768,9 +904,12 @@ OC.L10N.register( "The PHP memory limit is below the recommended value of %s." : "Обмеження пам'яті PHP нижче рекомендованого значення %s.", "for WebAuthn passwordless login" : "для безпарольного входу за допомогою WebAuthn", "for WebAuthn passwordless login, and SFTP storage" : "для безпарольного входу за допомогою WebAuthn та сховище SFTP", + "- The `%1$s` HTTP header does not contain `%2$s`. This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "- HTTP-заголовок `%1$s` не містить `%2$s`. Це потенційний ризик для безпеки або конфіденційності, тому рекомендується змінити цей параметр відповідним чином.", + "PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Виявлено версію PostgreSQL \"%s\". Рекомендується використовувати PostgreSQL >=12 та <=16 для найкращої продуктивності, стабільності та функціональності з цією версією Nextcloud.", "Set default expiration date for shares" : "Встановити типовий термін дії для спільних ресурсів", "Your biography" : "Коротко про себе", "You are using <strong>{usage}</strong>" : "Ви використовуєте <strong>{usage}", - "You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Ви використовуєте <strong>{usage}</strong> із <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" + "You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Ви використовуєте <strong>{usage}</strong> із <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)", + "Failed to load subadmin groups with details" : "Не вдалося завантажити групи підадміністраторів з деталями" }, "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/settings/l10n/uk.json b/apps/settings/l10n/uk.json index b9a103819ca..6ff8ab9eeaa 100644 --- a/apps/settings/l10n/uk.json +++ b/apps/settings/l10n/uk.json @@ -130,6 +130,8 @@ "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 правильно налаштовано.", "App directories owner" : "Власник каталогів застосунків", "Some app directories are owned by a different user than the web server one. This may be the case if apps have been installed manually. Check the permissions of the following app directories:\n%s" : "Окремі каталоги застосунків мають інших користувачів на відміну від користувача вебсервера. Часто таке трапляється, якщо застосунки було встановлено вручну. Перевірте дозволи на такі каталоги застосунків:\n%s", @@ -138,7 +140,9 @@ "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\" не уповільнена через грубі спроби підбору паролів.", + "Old administration imported certificates" : "Стара адміністрація імпортувала сертифікати", "A background job is pending that checks for administration imported SSL certificates. Please check back later." : "Виконується фонове завдання, яке перевіряє імпортовані SSL-сертифікати на предмет адміністрування. Будь ласка, перевірте пізніше.", + "There are some administration imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Існують деякі імпортовані адміністрацією SSL-сертифікати, які більше не використовуються в Nextcloud 21. Їх можна імпортувати в командному рядку за допомогою команди \"occ security:certificates:import\". Шляхи до них у каталозі даних показано нижче.", "Code integrity" : "Цілісність коду", "Integrity checker has been disabled. Integrity cannot be verified." : "Перевірку на цілісність вимкнено. Цілісність буде неможливо перевірити.", "No altered files" : "Відсутні змінені файли", @@ -151,12 +155,14 @@ "Last background job execution ran %s." : "Останнє виконання фонового завдання тривало: %s.", "Data directory protected" : "Директорія з даними є захищеною", "Your data directory and files are probably accessible from the internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Ваш каталог даних і файли, ймовірно, доступні з Інтернету. Файл .htaccess не працює. Настійно рекомендується налаштувати веб-сервер так, щоб каталог даних був недоступний, або перемістити каталог даних за межі кореня документа веб-сервера.", + "Could not check that the data directory is protected. Please check manually that your server does not allow access to the data directory." : "Не вдалося перевірити, що каталог даних захищено. Будь ласка, перевірте вручну, чи ваш сервер не дозволяє доступ до каталогу даних.", "Database missing columns" : "Відсутні стовпці у базі даних", "Missing optional column \"%s\" in table \"%s\"." : "Відсутні необов'язкові стовпці \"%s\" у таблиці \"%s\".", "The database is missing some optional columns. Due to the fact that adding columns on big tables could take some time they were not added automatically when they can be optional. By running \"occ db:add-missing-columns\" those missing columns could be added manually while the instance keeps running. Once the columns are added some features might improve responsiveness or usability." : "У базі даних відсутні деякі необов’язкові стовпці. Через те, що додавання стовпців у великі таблиці може зайняти деякий час, вони не додаються автоматично, коли вони можуть бути необов’язковими. Для створення відсутніх стовпців, будь ласка, виконайте команду \"occ db:add-missing-columns\". Після додавання стовпців деякі функції можуть покращити реагування та зручність використання.", "Database missing indices" : "Відсутні індекси у базі даних", "Missing indices:" : "Відсутні індекси:", "\"%s\" in table \"%s\"" : "\"%s\" в таблиці \"%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." : "Виявлено деякі відсутні необов'язкові індекси. Іноді додаються нові індекси (за допомогою Nextcloud або встановлених додатків) для підвищення продуктивності бази даних. Додавання індексів може зайняти деякий час і тимчасово знизити продуктивність, тому під час оновлень це не робиться автоматично. Після додавання індексів запити до цих таблиць мають працювати швидше. Щоб додати їх, скористайтеся командою `occ db:add-missing-indices`.", "Database missing primary keys" : "Відсутні первинні ключі у базі даних", "Missing primary key on table \"%s\"." : "Відсутній первинний ключ у таблиці \"%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." : "У базі даних відсутні деякі первинні ключі. Через те, що додавання первинних ключів у великі таблиці може зайняти деякий час, вони не додаються автоматично. Для створення первинних ключей, будь ласка, виконайте команду \"occ db:add-missing-primary-keys\".", @@ -168,42 +174,71 @@ "Default phone region" : "Типовий телефонний код регіону", "Your installation has no default phone region set. This is required to validate phone numbers in the profile settings without a country code. To allow numbers without a country code, please add \"default_phone_region\" with the respective ISO 3166-1 code of the region to your config file." : "У вашому примірнику не налаштовано типовий телефонний регіон. Цей параметр потрібний для підтвердження телефонних номерів у профілі користувача без зазначення коду країни. Щоби дозволити використання телефонних номерів без зазначення коду країни, додайте параметр \"default_phone_region\" із кодом регіону згідно з ISO 3166-1 у вашому файлі конфігурації config.php.", "Email test" : "Тест ел.пошти", + "Mail delivery is disabled by instance config \"%s\"." : "Доставку пошти вимкнено за допомогою конфігурації екземпляра \"%s\".", "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" : "Блокування транзакційних файлів", + "Transactional File Locking is disabled. This is not a a supported configuraton. It may lead to difficult to isolate problems including file corruption. Please remove the `'filelocking.enabled' => false` configuration entry from your `config.php` to avoid these problems." : "Блокування транзакційних файлів вимкнено. Це не підтримувана конфігурація. Це може призвести до проблем, які важко ізолювати, зокрема до пошкодження файлів. Будь ласка, видаліть запис конфігурації `'filelocking.enabled' => false` з вашого `config.php`, щоб уникнути цих проблем.", "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\" встановлено неправильно, це має бути масив.", + "Your \"trusted_proxies\" setting is not correctly set, it should be an array of IP addresses - optionally with range in CIDR notation." : "Ваш параметр \"trusted_proxies\" задано неправильно, це має бути масив IP-адрес - бажано з діапазоном у нотації CIDR.", "The reverse proxy header configuration is incorrect. This is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud." : "Конфігурація заголовка зворотного проксі неправильна. Це є проблемою безпеки і може дозволити зловмиснику надати Nextcloud оманливу IP-адресу.", "Your IP address was resolved as %s" : "Ваша IP-адреса була визначена як %s", + "The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud." : "Конфігурація зворотного заголовка проксі неправильна, або ви отримуєте доступ до Nextcloud від довіреного проксі-сервера. Якщо ні, це є проблемою безпеки і може дозволити зловмиснику підмінити свою IP-адресу видимою для Nextcloud.", + "HTTPS access and URLs" : "Доступ HTTPS та URL-адреси", + "Accessing site insecurely via HTTP. You are strongly advised to set up your server to require HTTPS instead. Without it some important web functionality like \"copy to clipboard\" or \"service workers\" will not work!" : "Небезпечний доступ до сайту через HTTP. Ми наполегливо рекомендуємо налаштувати ваш сервер на використання HTTPS. Без цього деякі важливі веб-функції, такі як \"копіювати в буфер обміну\" або \"сервісні працівники\", не працюватимуть!", "Accessing site insecurely via HTTP." : "Небезпечний доступ до сайту через HTTP.", + "You are accessing your instance over a secure connection, however your instance is generating insecure URLs. This likely means that your instance is behind a reverse proxy and the Nextcloud `overwrite*` config values are not set correctly." : "Ви отримуєте доступ до свого екземпляра через безпечне з'єднання, проте ваш екземпляр генерує небезпечні URL-адреси. Це, ймовірно, означає, що ваш екземпляр знаходиться за зворотним проксі і значення конфігурації Nextcloud `overwrite*` налаштовані неправильно.", + "Your instance is generating insecure URLs. If you access your instance over HTTPS, this likely means that your instance is behind a reverse proxy and the Nextcloud `overwrite*` config values are not set correctly." : "Ваш екземпляр генерує небезпечні URL-адреси. Якщо ви отримуєте доступ до вашого екземпляра через HTTPS, це, ймовірно, означає, що ваш екземпляр знаходиться за зворотним проксі і значення конфігурації Nextcloud `overwrite*` налаштовані неправильно.", + "You are accessing your instance over a secure connection, and your instance is generating secure URLs." : "Ви отримуєте доступ до свого екземпляра через захищене з'єднання, і ваш екземпляр генерує безпечні URL-адреси.", "Internet connectivity" : "З'єднання з мережею Інтернет", "Internet connectivity is disabled in configuration file." : "З'єднання з мережею Інтернет вимкнено у файлі конфігурації", "This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "На цьому сервері не працює з’єднання з Інтернетом: неможливо отримати доступ до кількох кінцевих точок. Це означає, що деякі функції, як-от підключення зовнішньої пам’яті, сповіщення про оновлення або встановлення застосунків сторонніх розробників, не працюватимуть. Віддалений доступ до файлів і надсилання сповіщень електронною поштою також можуть не працювати. Встановіть з’єднання цього сервера з Інтернетом, щоб користуватися всіма функціями.", "JavaScript modules support" : "Підтримка модулів JavaScript", + "Unable to run check for JavaScript support. Please remedy or confirm manually if your webserver serves `.mjs` files using the JavaScript MIME type." : "Не вдалося запустити перевірку підтримки JavaScript. Будь ласка, виправте помилку або підтвердіть вручну, якщо ваш веб-сервер обслуговує файли `.mjs` з використанням MIME-типу JavaScript.", "Your webserver does not serve `.mjs` files using the JavaScript MIME type. This will break some apps by preventing browsers from executing the JavaScript files. You should configure your webserver to serve `.mjs` files with either the `text/javascript` or `application/javascript` MIME type." : "Ваш вебсервер не обслуговує файли `.mjs` за допомогою типу MIME JavaScript. Це призведе до того, що окремі застосунки не працюватимуть коректно, оскільки бравзери не зможуть виконувати файли JavaScript. Вам потрібно визначити обслуговування файлів `.mjs` з типом MIME `text/javascript` або `application/javascript` у налаштуваннях вашого вебсервера.", + "JavaScript source map support" : "Підтримка карти джерел JavaScript", + "Your webserver is not set up to serve `.js.map` files. Without these files, JavaScript Source Maps won't function properly, making it more challenging to troubleshoot and debug any issues that may arise." : "Ваш веб-сервер не налаштований на обслуговування файлів `.js.map`. Без цих файлів JavaScript Source Maps не працюватиме належним чином, що ускладнює пошук і усунення несправностей та налагодження будь-яких проблем, які можуть виникнути.", "Old server-side-encryption" : "Застаріле шифрування на рівні сервера", "Disabled" : "Вимкнено", "The old server-side-encryption format is enabled. We recommend disabling this." : "Старий формат шифрування на стороні сервера ввімкнено. Рекомендуємо вимкнути це.", "Logging level" : "Рівень журналювання", + "The %1$s configuration option must be a valid integer value." : "Параметр конфігурації %1$s має бути дійсним цілим числом.", + "The logging level is set to debug level. Use debug level only when you have a problem to diagnose, and then reset your log level to a less-verbose level as it outputs a lot of information, and can affect your server performance." : "Рівень журналу встановлено на рівень налагодження. Використовуйте рівень налагодження лише тоді, коли вам потрібно діагностувати проблему, а потім скиньте рівень журналу до менш розлогого рівня, оскільки він виводить багато інформації, що може вплинути на продуктивність вашого сервера.", "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", "Memcache" : "Memcache", + "Memcached is configured as distributed cache, but the wrong PHP module (\"memcache\") is installed. Please install the PHP module \"memcached\"." : "Memcached налаштовано як розподілений кеш, але встановлено неправильний модуль PHP (\"memcache\"). Будь ласка, встановіть модуль PHP \"memcached\".", + "Memcached is configured as distributed cache, but the PHP module \"memcached\" is not installed. Please install the PHP module \"memcached\"." : "Memcached налаштовано як розподілений кеш, але PHP-модуль \"memcached\" не встановлено. Будь ласка, встановіть PHP-модуль \"memcached\".", "No memory cache has been configured. To enhance performance, please configure a memcache, if available." : "Відсутні налаштування кешування пам'яти. Для кращої продуктивности рекомендуємо налаштувати memcache, якщо доступний.", + "Failed to write and read a value from local cache." : "Не вдалося записати або прочитати значення з локального кешу.", + "Failed to write and read a value from distributed cache." : "Не вдалося записати або прочитати значення з розподіленого кешу.", "Configured" : "Налаштовано", + "Mimetype migrations available" : "Доступні міграції міметипів", + "One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations." : "Доступні один або декілька міграцій міметипів. Іноді додаються нові міметипи для кращої обробки певних типів файлів. Перенесення міметипів займає багато часу на великих екземплярах, тому воно не виконується автоматично під час оновлення. Для виконання міграції скористайтеся командою `occ maintenance:repair --include-expensive`.", "MySQL row format" : "Формат рядка MySQL", "You are not using MySQL" : "Ви не використовуєте MySQL", + "None of your tables use ROW_FORMAT=Compressed" : "Жодна з ваших таблиць не використовує ROW_FORMAT=Compressed", + "Incorrect row format found in your database. ROW_FORMAT=Dynamic offers the best database performances for Nextcloud. Please update row format on the following list: %s." : "У вашій базі даних знайдено неправильний формат рядків. ROW_FORMAT=Dynamic забезпечує найкращу продуктивність бази даних для Nextcloud. Будь ласка, оновіть формат рядків у наступному списку: %s.", "MySQL Unicode support" : "Підтримка юнікоду в MySQL", "MySQL is used as database and does support 4-byte characters" : "MySQL використовується яко база даних, увімкнено підтримку 4-бітних символів", "MySQL is used as database but does not support 4-byte characters. To be able to handle 4-byte characters (like emojis) without issues in filenames or comments for example it is recommended to enable the 4-byte support in MySQL." : "MySQL використовується яко база даних, проте 4-бітні символи не підтримуються. Для коректного відображення 4-бітних символів (напр., відображення емоційок) рекомендується встановити 4-бітну підтримку в налаштуваннях MySQL.", + "OCS provider resolving" : "Дозвіл постачальника OCS", + "Could not check if your web server properly resolves the OCM and OCS provider URLs." : "Не вдалося перевірити, чи правильно ваш веб-сервер розпізнає URL-адреси постачальників OCM та OCS.", + "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." : "Ваш веб-сервер не налаштовано належним чином для обробки %1$s.\nСкоріш за все, це пов'язано з конфігурацією веб-сервера, яку не було оновлено для безпосередньої доставки цієї теки.\nБудь ласка, порівняйте вашу конфігурацію з правилами перезапису в \".htaccess\" для Apache або з наведеними в документації для Nginx.\nУ Nginx зазвичай оновлення потребують рядки, що починаються з \"location ~\".", "Overwrite CLI URL" : "Перезаписати CLI URL", "The \"overwrite.cli.url\" option in your config.php is correctly set to \"%s\"." : "Параметр \"overwrite.cli.url\" у вашому конфігураційному файлі config.php налаштовано правильно зі значенням \"%s\".", "The \"overwrite.cli.url\" option in your config.php is set to \"%s\" which is a correct URL. Suggested URL is \"%s\"." : "Параметр \"overwrite.cli.url\" у вашому конфігураційному файлі config.php налаштовано зі значенням \"%s\", яке є правильним URL. Рекомендований URL: \"%s\".", "Please make sure to set the \"overwrite.cli.url\" option in your config.php file to the URL that your users mainly use to access this Nextcloud. Suggestion: \"%s\". Otherwise there might be problems with the URL generation via cron. (It is possible though that the suggested URL is not the URL that your users mainly use to access this Nextcloud. Best is to double check this in any case.)" : "Обов’язково встановіть параметр \"overwrite.cli.url\" у конфігураційному файлі config.php зі значенням URL-адреси, яку ваші користувачі переважно використовують для доступу до цього Nextcloud. Пропонується таке значення: \"%s\". В іншому випадку можуть виникнути проблеми з генерацією URL-адреси через cron. (Однак можливо, що запропонована URL-адреса не є URL-адресою, яку ваші користувачі переважно використовують для доступу до хмари Nextcloud. Будь ласка, перевірте, чи це так.)", + "PHP APCu configuration" : "Конфігурація PHP APCu", + "Your APCu cache has been running full, consider increasing the apc.shm_size php setting." : "Ваш кеш APCu переповнений, спробуйте збільшити значення параметра apc.shm_size php.", + "Your APCu cache is almost full at %s%%, consider increasing the apc.shm_size php setting." : "Ваш кеш APCu майже заповнений за адресою %s%%, розгляньте можливість збільшення параметра apc.shm_size php.", "PHP default charset" : "Типове кодування сторінки PHP", "PHP configuration option \"default_charset\" should be UTF-8" : "Параметр конфігурації PHP \"default_charset\" має мати значення UTF-8", + "PHP set_time_limit" : "PHP set_time_limit", "The function is available." : "Функція доступна.", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. Enabling this function is strongly recommended." : "Функція PHP \"set_time_limit\" недоступна. Це може призвести до зупинки сценаріїв під час виконання, що порушить установку. Настійно рекомендується вмикати цю функцію.", "Freetype" : "Freetype", @@ -211,13 +246,21 @@ "Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Ваш PHP не підтримує FreeType, що призводить до поломки зображень профілю та інтерфейсу налаштувань.", "PHP getenv" : "PHP getenv", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP не налаштований правильно для отримання змінних системного оточення. Запит getenv(\"PATH\") повертає пусті результати.", + "PHP file size upload limit" : "Обмеження на розмір завантажуваного PHP-файлу", + "The PHP upload_max_filesize is too low. A size of at least %1$s is recommended. Current value: %2$s." : "PHP upload_max_filesize занадто малий. Рекомендується розмір не менше %1$s. Поточне значення: %2$s.", + "The PHP post_max_size is too low. A size of at least %1$s is recommended. Current value: %2$s." : "PHP post_max_size занадто малий. Рекомендується розмір не менше %1$s. Поточне значення: %2$s.", + "The PHP max_input_time is too low. A time of at least %1$s is recommended. Current value: %2$s." : "PHP max_input_time занадто малий. Рекомендується час не менше %1$s. Поточне значення: %2$s.", + "The PHP max_execution_time is too low. A time of at least %1$s is recommended. Current value: %2$s." : "Занадто малий час виконання PHP max_execution_time. Рекомендується час не менше %1$s. Поточне значення: %2$s.", "PHP memory limit" : "Обмеження пам'яті PHP", + "The PHP memory limit is below the recommended value of %s. Some features or apps - including the Updater - may not function properly." : "Обмеження пам'яті PHP нижче рекомендованого значення %s. Деякі функції або програми, включаючи Updater, можуть не працювати належним чином.", "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", + "PHP opcache" : "PHP opcache", "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "Модуль PHP OPcache не завантажується. Для кращої продуктивності рекомендується завантажити його у вашу установку PHP.", "OPcache is disabled. For better performance, it is recommended to apply \"opcache.enable=1\" to your PHP configuration." : "OPcache вимкнено. Для кращої продуктивності рекомендовано встановити значення \"opcache.enable=1\" у конфігураційному файлі PHP.", "The shared memory based OPcache is disabled. For better performance, it is recommended to apply \"opcache.file_cache_only=0\" to your PHP configuration and use the file cache as second level cache only." : "OPcache для розділеної пам'яти вимкнено. Для кращої продуктивності рекомендовано встановити значення \"opcache.file_cache_only=0\" у конфігураційному файлі PHP, використовувати кеш файлів лише як кеш другого рівня.", @@ -227,9 +270,11 @@ "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply \"opcache.interned_strings_buffer\" to your PHP configuration with a value higher than \"%s\"." : "Внутрішній буфер рядків OPcache майже переповнено. Рекомендується встановити значення \"opcache.interned_strings_buffer\" у вашому конфігураційному файлі PHP вище за \"%s\", щоб забезпечити ефективне кешування повторюваних рядків.", "OPcache is configured to remove code comments. With OPcache enabled, \"opcache.save_comments=1\" must be set for Nextcloud to function." : "OPcache налаштовано для вилучення коментарів коду. Для увімкнененого OPcache потрібно встановити значення \"opcache.save_comments=1\" для правильної роботи Nextcloud.", "Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with \"opcache.restrict_api\" or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Серверу Nextcloud не дозволено використовувати OPcache API. Для увімкненого OPcache наполегливо рекомендується додати всі каталоги Nextcloud з \"opcache.restrict_api\" або взагалі не встановлювати таке налаштування й таким чином вимкнути обмеження OPcache API, щоби уникнути помилок під час оновлення основної частини Nextcloud або застосунків.", + "Checking from CLI, OPcache checks have been skipped." : "Перевірка з CLI, перевірка OPcache була пропущена.", "The PHP OPcache module is not properly configured. %s." : "Модуль PHP OPcache не налаштовано належним чином. %s.", "Correctly configured" : "Правильне налаштування", "PHP version" : "Версія PHP", + "You are currently running PHP %1$s. PHP %2$s is deprecated since Nextcloud %3$s. Nextcloud %4$s may require at least PHP %5$s. Please upgrade to one of the officially supported PHP versions provided by the PHP Group as soon as possible." : "Наразі ви використовуєте PHP %1$s. PHP %2$s застаріла, починаючи з Nextcloud %3$s. Для роботи Nextcloud %4$s може знадобитися щонайменше PHP %5$s. Будь ласка, якнайшвидше оновіть систему до однієї з офіційно підтримуваних версій PHP, наданих PHP Group.", "You are currently running PHP %s." : "У вас встановлено PHP %s.", "PHP \"output_buffering\" option" : "Параметр PHP \"\"output_buffering\"", "PHP configuration option \"output_buffering\" must be disabled" : "Параметр PHP \"\"output_buffering\" потрібно вимкнути", @@ -243,15 +288,37 @@ "Configuration file access rights" : "Дозволи доступу до конфігураційного файлу", "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Увімкнена конфігурація тільки для читання. Це запобігає встановленню деяких опцій через вебінтерфейс. Крім того, для кожного оновлення файл повинен бути зроблений з доступом на запис.", "Nextcloud configuration file is writable" : "Файл конфігурації Nextcloud доступний для запису", + "Scheduling objects table size" : "Розмір таблиці об'єктів планування", + "You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive." : "У таблиці об'єктів планування є більше %s рядків. Будь ласка, запустіть дорогі ремонтні роботи за допомогою occ maintenance:repair --include-expensive.", + "Scheduling objects table size is within acceptable range." : "Розмір таблиці об'єктів планування знаходиться в допустимих межах.", "HTTP headers" : "Заголовки HTTP", + "- The `%1$s` HTTP header is not set to `%2$s`. Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "- HTTP-заголовок `%1$s` не має значення `%2$s`. Деякі функції можуть працювати некоректно, тому рекомендується змінити цей параметр відповідним чином.", + "- The `%1$s` HTTP header is not set to `%2$s`. This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "- HTTP-заголовок `%1$s` не має значення `%2$s`. Це є потенційним ризиком для безпеки або конфіденційності, тому рекомендується змінити цей параметр відповідним чином.", + "- The `%1$s` HTTP header is not set to `%2$s`, `%3$s`, `%4$s`, `%5$s` or `%6$s`. This can leak referer information. See the {w3c-recommendation}." : "- HTTP-заголовок `%1$s` не має значення `%2$s`, `%3$s`, `%4$s`, `%5$s` або `%6$s`. Це може призвести до витоку інформації про реферала. Зверніться до {w3c-recommendation}.", + "- The `Strict-Transport-Security` HTTP header is not set to at least `%d` seconds (current value: `%d`). For enhanced security, it is recommended to use a long HSTS policy." : "- HTTP-заголовок `Strict-Transport-Security` не встановлено принаймні `%d` секунд (поточне значення: `%d`). Для підвищення безпеки рекомендується використовувати довгу політику HSTS.", + "- The `Strict-Transport-Security` HTTP header is malformed: `%s`. For enhanced security, it is recommended to enable HSTS." : "- Неправильно сформовано HTTP-заголовок `Strict-Transport-Security`: `%s`. Для підвищення безпеки рекомендується увімкнути HSTS.", + "- The `Strict-Transport-Security` HTTP header is not set (should be at least `%d` seconds). For enhanced security, it is recommended to enable HSTS." : "- HTTP-заголовок `Strict-Transport-Security` не встановлено (має бути щонайменше `%d` секунд). Для підвищення безпеки рекомендується ввімкнути HSTS.", + "Some headers are not set correctly on your instance" : "У вашому екземплярі деякі заголовки задано неправильно", + "Could not check that your web server serves security headers correctly. Please check manually." : "Не вдалося перевірити, чи правильно ваш веб-сервер обслуговує заголовки безпеки. Будь ласка, перевірте вручну.", + "Could not check that your web server serves security headers correctly, unable to query `%s`" : "Не вдалося перевірити, чи правильно ваш веб-сервер обслуговує заголовки безпеки, не вдалося виконати запит `%s`.", + "Your server is correctly configured to send security headers." : "Ваш сервер правильно налаштовано для надсилання заголовків безпеки.", "Database version" : "Версія бази даних", + "MariaDB version 10.3 detected, this version is end-of-life and only supported as part of Ubuntu 20.04. MariaDB >=%1$s and <=%2$s is suggested for best performance, stability and functionality with this version of Nextcloud." : "Виявлено MariaDB версії 10.3, ця версія застаріла і підтримується лише у складі Ubuntu 20.04. Рекомендується використовувати MariaDB >=%1$s та <=%2$s для кращої продуктивності, стабільності та функціональності з цією версією Nextcloud.", + "MariaDB version \"%1$s\" detected. MariaDB >=%2$s and <=%3$s is suggested for best performance, stability and functionality with this version of Nextcloud." : "Виявлено версію MariaDB \"%1$s\". Для кращої продуктивності, стабільності та функціональності цієї версії Nextcloud рекомендується використовувати MariaDB >=%2$s та <=%3$s.", + "MySQL version \"%1$s\" detected. MySQL >=%2$s and <=%3$s is suggested for best performance, stability and functionality with this version of Nextcloud." : "Виявлено версію MySQL \"%1$s\". Рекомендується використовувати MySQL >=%2$s та <=%3$s для кращої продуктивності, стабільності та функціональності з цією версією Nextcloud.", + "PostgreSQL version \"%1$s\" detected. PostgreSQL >=%2$s and <=%3$s is suggested for best performance, stability and functionality with this version of Nextcloud." : "Виявлено версію PostgreSQL \"%1$s\". Рекомендується використовувати PostgreSQL >=%2$s та <=%3$s для кращої продуктивності, стабільності та функціональності з цією версією Nextcloud.", "SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend. This is particularly recommended when using the desktop client for file synchronisation. To migrate to another database use the command line tool: \"occ db:convert-type\"." : "Наразі SQLite використовується як база даних. Для більш продуктивних примірників рекомендується переключитися на іншу базу даних. Зокрема це рекомендується у разі використання клієнтів синхронізації файлів для робочих станцій. Щоб мігрувати до іншої бази даних, використовуйте інструмент командного рядка: \"occ db:convert-type\".", "Unknown database platform" : "Невідома платформа бази даних", "Architecture" : "Архітектура", "64-bit" : "64 біти", "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit!" : "Схоже, що у вас встановлено 32-бітну версію PHP. Правильна робота Nextcloud вимагає 64-бітної версії. Оновіть вашу операційну систему та рушій PHP до 64-бітної версії!", + "Task Processing pickup speed" : "Швидкість обробки завдань", + "_No scheduled tasks in the last %n hour._::_No scheduled tasks in the last %n hours._" : ["Запланованих завдань за останні %n годин не було.","Немає запланованих завдань за останні %n годин.","Немає запланованих завдань за останні %n годин.","Немає запланованих завдань за останні %n годин."], + "_The task pickup speed has been ok in the last %n hour._::_The task pickup speed has been ok in the last %n hours._" : ["Швидкість підхоплення завдань була нормальною протягом останньої %n годин.","Швидкість збирання завдань була нормальною протягом останніх %n годин.","Швидкість збирання завдань була нормальною протягом останніх %n годин.","Швидкість збирання завдань була нормальною протягом останніх %n годин."], + "_The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._::_The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background._" : ["Швидкість збирання завдань була низькою протягом останньої %n годин. Багато завдань забиралися довше, ніж за 4 хвилини. Подумайте про те, щоб налаштувати працівника на обробку завдань у фоновому режимі.","Швидкість збирання завдань була низькою протягом останніх %n годин. Багато завдань забиралися довше, ніж за 4 хвилини. Подумайте про те, щоб налаштувати працівника на обробку завдань у фоновому режимі.","Швидкість збирання завдань була низькою протягом останніх %n годин. Багато завдань забиралися довше, ніж за 4 хвилини. Подумайте про те, щоб налаштувати працівника на обробку завдань у фоновому режимі.","Швидкість збирання завдань була низькою протягом останніх %n годин. Багато завдань забиралися довше, ніж за 4 хвилини. Подумайте про те, щоб налаштувати працівника на обробку завдань у фоновому режимі."], "Temporary space available" : "Тимчасовий простір доступний", "Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "Помилка під час перевірки шляху до тимчасового каталогу PHP, його не було правильно налаштовано яко каталог. Отримано значення: %s", + "The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "Функція PHP \"disk_free_space\" відключена, що перешкоджає перевірці наявності вільного місця в тимчасових каталогах.", "Error while checking the available disk space of temporary PHP path or no free disk space returned. Temporary path: %s" : "Помилка під час перевірки доступного дискового простору тимчасового каталогу PHP або отримано підтвердження про відсутність вільного дискового простору. Шлях до тимчасового каталогу: %s", "- %.1f GiB available in %s (PHP temporary directory)" : "- %.1f ГБ доступно у %s (тимчасовий каталог PHP)", "- %.1f GiB available in %s (Nextcloud temporary directory)" : "- %.1f ГБ доступно у %s (тимчасовий каталог Nextcloud)", @@ -261,11 +328,20 @@ "Database transaction isolation level" : "Рівень ізолювання транзакцій бази даних", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Ваша база даних не працює з рівнем ізоляції транзакцій \"READ COMMITTED\". Це може спричинити проблеми, коли кілька дій виконуються паралельно.", "Was not able to get transaction isolation level: %s" : "Не вдалося отримати рівень ізолюування тразакцій: %s", + ".well-known URLs" : ".відомі URL-адреси", + "`check_for_working_wellknown_setup` is set to false in your configuration, so this check was skipped." : "У вашій конфігурації `check_for_working_wellknown_setup` встановлено у false, тому цю перевірку було пропущено.", + "Could not check that your web server serves `.well-known` correctly. Please check manually." : "Не вдалося перевірити, чи правильно ваш веб-сервер обслуговує `.well-known`. Будь ласка, перевірте вручну.", + "Your web server is not properly set up to resolve `.well-known` URLs, failed on:\n`%s`" : "Ваш веб-сервер не налаштовано належним чином для вирішення `.well-known` URL-адрес, failed on:\n`%s`", + "Your server is correctly configured to serve `.well-known` URLs." : "Ваш сервер правильно налаштовано для обслуговування `.well-known` URL-адрес.", "Font file loading" : "Завантаження файлу шрифтів", + "Could not check for {extension} loading support. Please check manually if your webserver serves `.{extension}` files." : "Не вдалося перевірити підтримку завантаження {розширення}. Будь ласка, перевірте вручну, чи обслуговує ваш веб-сервер файли `.{розширення}`.", + "Your web server is not properly set up to deliver .{extension} files. This is typically an issue with the Nginx configuration. For Nextcloud 15 it needs an adjustment to also deliver .{extension} files. Compare your Nginx configuration to the recommended configuration in our documentation." : "Ваш веб-сервер не налаштовано належним чином для доставки файлів з розширенням .{розширення}. Зазвичай це пов'язано з конфігурацією Nginx. Для Nextcloud 15 його потрібно налаштувати так, щоб він також доставляв файли з розширенням .{extension}. Порівняйте вашу конфігурацію Nginx з рекомендованою конфігурацією в нашій документації.", "Profile information" : "Інформація профілю", "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Зображення профілю, повне ім’я, електронна адреса, номер телефону, адреса, веб-сайт, Twitter, організація, роль, заголовок, біографія та чи активовано ваш профіль", "Nextcloud settings" : "Налаштування Nextcloud", "Unified task processing" : "Централізована обробка завдань ", + "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "Завдання штучного інтелекту можуть виконуватися різними програмами. Тут ви можете вказати, яку програму слід використовувати для виконання того чи іншого завдання.", + "Allow AI usage for guest users" : "Дозволити використання ШІ для гостьових користувачів", "Task:" : "Завдання:", "Enable" : "Увімкнути", "None of your currently installed apps provide Task processing functionality" : "Жодний зі встановлених застосунків не надає функціональність з обробки завдань", @@ -288,13 +364,19 @@ "Allow sharing with groups" : "Дозволити спільне використання групами", "Restrict users to only share with users in their groups" : "Дозволити надання у спільний доступ тільки в межах власних груп", "Ignore the following groups when checking group membership" : "Ігнорувати такі групи під час перевірки участи в групі", + "Allow users to preview files even if download is disabled" : "Дозвольте користувачам переглядати файли, навіть якщо завантаження вимкнено", + "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Користувачі все одно зможуть робити скріншоти або записувати екран. Це не забезпечує жодного остаточного захисту.", "Allow users to share via link and emails" : "Дозволити користувачам надання у спільний доступ за допомогою посилань та ел. листів", "Allow public uploads" : "Дозволити публічне завантаження", + "Allow public shares to be added to other clouds by federation." : "Дозвольте додавати публічні ресурси до інших хмар за допомогою федерації.", + "This will add share permissions to all newly created link shares." : "Це додасть дозволи на спільний доступ до всіх новостворених спільних ресурсів посилань.", "Always ask for a password" : "Завжди запитувати пароль", "Enforce password protection" : "Захист паролем обов'язковий", "Exclude groups from password requirements" : "Виключення щодо вимог пароля для груп", "Exclude groups from creating link shares" : "Не дозволяти користувачам таких груп створювати посилання спільного доступу", "Allow users to set custom share link tokens" : "Дозволити користвучам встановити власні токени спільних посилань", + "Shares with custom tokens will continue to be accessible after this setting has been disabled" : "Частки з власними токенами залишатимуться доступними після вимкнення цього параметра", + "Shares with guessable tokens may be accessed easily" : "До акцій з вгадуваними токенами можна легко отримати доступ", "Limit sharing based on groups" : "Обмежити надання у спільний доступ на основі груп", "Allow sharing for everyone (default)" : "Дозволити надання у спільний доступ для всіх (типово)", "Exclude some groups from sharing" : "Не дозволяти таким групам надавати у спільний доступ", @@ -359,7 +441,9 @@ "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" : "Відсутня інформація для показу", "Could not load section content from app store." : "Не вдалося отримати розділ вмісту із крамнички.", @@ -371,15 +455,36 @@ "Choose slide to display" : "Виберіть слайд для показу", "{index} of {total}" : "{index} із {total}", "Daemon" : "Демон", + "Deploy Daemon" : "Розгортання демона", "Type" : "Тип", "Display Name" : "Назва для показу", "GPUs support" : "Підтримка GPU", "Compute device" : "Пристрій для обчислення", + "Advanced deploy options" : "Розширені параметри розгортання", + "Edit ExApp deploy options before installation" : "Редагування параметрів розгортання ExApp перед інсталяцією", + "Configured ExApp deploy options. Can be set only during installation" : "Налаштовані параметри розгортання ExApp. Можна налаштувати лише під час інсталяції", "Learn more" : "Дізнатися більше", + "Environment variables" : "Змінні середовища", + "ExApp container environment variables" : "Змінні оточення контейнера ExApp", + "No environment variables defined" : "Змінні оточення не визначено", + "Mounts" : "Кріплення", + "Define host folder mounts to bind to the ExApp container" : "Визначте монтування папки хоста для прив'язки до контейнера ExApp", + "Must exist on the Deploy daemon host prior to installing the ExApp" : "Повинен існувати на хості демона розгортання до встановлення ExApp", + "Host path" : "Шлях до хосту", + "Container path" : "Шлях до контейнера", "Read-only" : "Тільки для читання", + "Remove mount" : "Зніміть кріплення", + "New mount" : "Нове кріплення", + "Enter path to host folder" : "Введіть шлях до папки хоста", + "Enter path to container folder" : "Введіть шлях до папки контейнера", "Toggle read-only mode" : "Перемкнути режим тільки для читання", + "Confirm adding new mount" : "Підтвердіть додавання нового кріплення", "Confirm" : "Підтвердити", + "Cancel adding mount" : "Скасувати додавання кріплення", "Cancel" : "Скасувати", + "Add mount" : "Додати кріплення", + "ExApp container mounts" : "Кріплення для контейнерів ExApp", + "No mounts defined" : "Не визначено жодного кріплення", "Description" : "Опис", "View in store" : "Переглянути у крамниці застосунків", "Visit website" : "Перейти на вебсайт", @@ -391,6 +496,9 @@ "Limit app usage to groups" : "Обмежити використання застосунку певними групами", "No results" : "Нічого не знайдено", "Update to {version}" : "Оновити до {version}", + "Deploy options" : "Варіанти розгортання", + "Default Deploy daemon is not accessible" : "За замовчуванням демон розгортання недоступний", + "Delete data on remove" : "Видалення даних при видаленні", "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Цей застосунок не має обмежень щодо мінімальної версії Nextcloud. В майбутньому це може викликати певні помилки.", "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Для цього застосунку не визначено найвищу версію Nextcloud. Це може викликати помилку в майбутньому.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Цей застосунок не буде встановлено, оскільки такі залежності неможливо виконати:", @@ -413,6 +521,8 @@ "{productName} Talk for Android" : "{productName} Talk для Android", "Sync client" : "Синхронізувати клієнт", "This session" : "Цей сеанс", + "{client} - {version} ({system})" : "{клієнт} - {версія} ({система})", + "{client} - {version}" : "{клієнт} - {версія}", "Device name" : "Назва пристрою", "Cancel renaming" : "Відхилити перейменування", "Save new name" : "Зберегти нове ім'я", @@ -450,30 +560,39 @@ "Last job ran {relativeTime}." : "Останнє завдання виконано {relativeTime}.", "Background job did not run yet!" : "Фонове завдання ще не виконано!", "AJAX" : "AJAX", + "Execute one task with each page loaded. Use case: Single account instance." : "Виконувати по одному завданню при кожному завантаженні сторінки. Варіант використання: Один екземпляр облікового запису.", "Webcron" : "Webcron", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 accounts depending on the usage)." : "cron.php зареєстровано на сервісі webcron, щоб викликати cron.php кожні 5 хвилин по HTTP. Варіант використання: Дуже маленький екземпляр (1-5 акаунтів залежно від використання).", "Cron (Recommended)" : "Cron (рекомендовано)", "Unable to update profile default setting" : "Не вдалося оновити стандартні налаштування профілю", "Profile" : "Профіль", "Enable or disable profile by default for new accounts." : "Увімкнути або вимкнути стандартний профіль для нових акаунтів.", "Password confirmation is required" : "Необхідне підтвердження паролем", "Failed to save setting" : "Не вдалося зберегти налаштування", + "{app}'s declarative setting field: {name}" : "Декларативне поле налаштувань {app}: {name}", "Unable to update server side encryption config" : "Не вдалося оновити конфігурацію шифрування на стороні сервера", "Server-side encryption" : "Шифрування на сервері", "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." : "Шифрування на стороні сервера дозволяє шифрувати файли, завантажені на цей сервер. Це має свою ціну, таку як зниження продуктивності, тому ввімкніть його лише за потреби.", + "To encrypt all existing files run this OCC command:" : "Щоб зашифрувати всі наявні файли, запустіть цю команду OCC:", "Enable server-side encryption" : "Увімкнути шифрування на сервері", + "Disabling server side encryption is only possible using OCC, please refer to the documentation." : "Вимкнення шифрування на стороні сервера можливе лише за допомогою OCC, будь ласка, зверніться до документації.", "No encryption module loaded, please enable an encryption module in the app menu." : "Модуль шифрування не завантажено, увімкніть модуль шифрування в меню застосунку.", "Select default encryption module:" : "Обрати стандартний модуль шифрування:", "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}" : "Вам потрібно перенести ключі шифрування зі старого шифрування (ownCloud <= 8.0) на нове. Увімкніть \"Стандартний модуль шифрування\" та виконайте {command}", "Cancel encryption" : "Скасувати шифрування", "Enable encryption" : "Увімкнути шифрування", + "Confirm enabling encryption" : "Підтвердіть увімкнення шифрування", "Please read carefully before activating server-side encryption:" : "Уважно прочитайте, перш ніж увімкнути шифрування на стороні сервера:", "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." : "Після активації шифрування, всі файли завантажені на сервер з цього моменту, будуть зашифровані на сервері. Відключити шифрування пізніше можна буде тільки якщо активний модуль шифрування підтримує цю функцію, і при виконанні певних умов (наприклад, налаштований ключ відновлення).", + "By default a master key for the whole instance will be generated. Please check if that level of access is compliant with your needs." : "За замовчуванням буде згенеровано майстер-ключ для всього екземпляра. Будь ласка, перевірте, чи відповідає цей рівень доступу вашим потребам.", "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." : "Саме по собі шифрування не гарантує безпеку системи. Будь ласка, перегляньте документацію, щоб отримати додаткову інформацію про те, як працює застосунок для шифрування, та про приклади його використання.", "Be aware that encryption always increases the file size." : "Майте на увазі, що шифрування завжди збільшує розмір файлів.", "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." : "Завжди корисно регулярно створювати резервні копії ваших даних, у разі шифрування обов’язково зробіть резервну копію ключів шифрування разом із вашими даними.", + "Refer to the admin documentation on how to manually also encrypt existing files." : "Зверніться до документації адміністратора, щоб дізнатися, як вручну зашифрувати наявні файли.", "This is the final warning: Do you really want to enable encryption?" : "Це останнє попередження: Ви справді хочете ввімкнути шифрування?", "Failed to delete group \"{group}\"" : "Не вдалося вилучити групу \"{group}\"", "Please confirm the group removal" : "Підтвердіть вилучення групи", + "You are about to delete the group \"{group}\". The accounts will NOT be deleted." : "Ви збираєтеся видалити групу \"{group}\". Облікові записи НЕ будуть видалені.", "Submit" : "Продовжити", "Rename group" : "Перейменувати групу", "Delete group" : "Вилучити групу", @@ -540,6 +659,7 @@ "she/her" : "вона/їй", "he/him" : "він/йому", "they/them" : "вони/їм", + "Your pronouns. E.g. {pronounsExample}" : "Ваші займенники. Наприклад, {pronounsExample}", "Your role" : "Ваша роль", "Your X (formerly Twitter) handle" : "Ваш ідентифікатор в X (раніше відомій як Twitter)", "Your website" : "Ваш сайт", @@ -561,6 +681,7 @@ "Password change is disabled because the master key is disabled" : "Зміну пароля вимкнено, оскільки майстер-ключ відключений", "No accounts" : "Відсутні користувачі", "Loading accounts …" : "Завантаження облікових записів ...", + "List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list." : "Список акаунтів. Цей список не відображається повністю з міркувань продуктивності. Акаунти будуть відображатися в міру того, як ви будете переміщатися по списку.", "Manager" : "Менеджер", "Set line manager" : "Встановити безпосереднього начальника", "Account name will be autogenerated" : "Ім'я користувача буде автоматично створено", @@ -590,6 +711,7 @@ "Avatar" : "Світлина", "Account name" : "Назва облікового запису", "Group admin for" : "Адміністратор групи", + "Account backend" : "Внутрішня частина облікового запису", "Storage location" : "Місце розташування сховища", "First login" : "Перший вхід", "Last login" : "Останній вхід", @@ -604,6 +726,9 @@ "Remote wipe of devices" : "Віддалене стирання даних на пристрої", "Wipe {userid}'s devices" : "Стерти пристрої {userid}", "Wiped {userid}'s devices" : "Стерті пристрої {userid}", + "Failed to load groups with details" : "Не вдалося завантажити групи з деталями", + "Failed to load sub admin groups with details" : "Не вдалося завантажити групи під-адміністраторів з деталями", + "Failed to update line manager" : "Не вдалося оновити лінійного керівника", "Fully delete {userid}'s account including all their personal files, app data, etc." : "Повністю вилучає обліковий запис {userid} включно з особистими файлами, даними застосунків тощо.", "Account deletion" : "Вилучення облікового запису", "Delete {userid}'s account" : "Вилучити обліковий запис {userid}", @@ -635,6 +760,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" : "Запрошення", @@ -655,9 +781,11 @@ "Your browser does not support WebAuthn." : "Ваш браузер не підтримує WebAuthn.", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Як адміністратор ви можете точно налаштувати поведінку спільного використання. Будь ласка, перегляньте документацію для отримання додаткової інформації.", "You need to enable the File sharing App." : "Потрібно увімкнути застосунок для обміну файлами.", + "App Store" : "App Store", "Loading app list" : "Завантаження переліку застосунків", "Loading categories" : "Завантаження категорій", "Developer documentation ↗" : "Документація розробника ↗", + "Version {version}, {license}-licensed" : "Версія {версія}, {ліцензія}-ліцензійний", "Version {version}" : "Версія {version}", "All accounts" : "Всі облікові записи", "Admins" : "Адміністратори", @@ -665,6 +793,7 @@ "Account management" : "Керування обліковими записами", "Sending…" : "Надсилання...", "Email sent" : "Лист надіслано", + "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "З міркувань продуктивності, коли ви вмикаєте шифрування на сервері Nextcloud, шифруються лише нові та змінені файли.", "Location" : "Місце розташування", "Profile picture" : "Зображення користувача", "About" : "Опис", @@ -696,7 +825,11 @@ "Show to everyone" : "Показувати всім", "Show to logged in accounts only" : "Показувати тільки для авторизованих", "Hide" : "Сховати", + "Manually installed apps cannot be updated" : "Неможливо оновити програми, встановлені вручну", + "{progress}% Deploying …" : "{progress}% Розгортання ...", + "{progress}% Initializing …" : "{progress}% Ініціалізація ...", "Health checking" : "Перевірка доступности", + "Deploy and Enable" : "Розгортання та активація", "Download and enable" : "Звантажити та увімкнути", "Disable" : "Вимкнути", "Allow untested app" : "Дозволити непротестовані застосунки", @@ -708,6 +841,7 @@ "Could not register device: Probably already registered" : "Не вдалося зареєструвати пристрій. Ймовірно, що його вже зареєстровано", "Could not register device" : "Не вдалося зареєструвати пристрій", "An error occurred during the request. Unable to proceed." : "Під час запиту сталася помилка. Неможливо продовжити.", + "The app has been enabled but needs to be updated." : "Додаток увімкнено, але його потрібно оновити.", "Error: This app cannot be enabled because it makes the server unstable" : "Помилка: цю програму неможливо увімкнути, оскільки вона робить сервер нестабільним", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Застосунок активовано, але його потрібно оновити. Вас буде переспрямовано на сторінку оновлення через 5 секунд.", "Do you really want to wipe your data from this device?" : "Ви справді хочете стерти дані з цього пристрою?", @@ -716,6 +850,7 @@ "Error while wiping the device with the token" : "Помилка під час очищення пристрою за допомогою токена", "Error while updating device token name" : "Помилка під час оновлення назви токена пристрою", "Error while updating device token scope" : "Помилка під час оновлення області токена пристрою", + "Could not set group sorting" : "Не вдалося налаштувати групове сортування", "There were too many requests from your network. Retry later or contact your administrator if this is an error." : "Забагато запитів із вашої мережі. Повторіть спробу пізніше або зверніться до адміністратора, якщо це помилка.", "Error" : "Помилка", "Account documentation" : "Документація для користувача", @@ -738,6 +873,7 @@ "Authentication" : "Авторизація", "Authentication required" : "Потрібна авторизація", "Credentials" : "Облікові дані", + "SMTP Login" : "Логін SMTP", "SMTP Password" : "Пароль SMTP", "Save" : "Зберегти", "Test and verify email settings" : "Перевірити налаштування електронної пошти", @@ -766,9 +902,12 @@ "The PHP memory limit is below the recommended value of %s." : "Обмеження пам'яті PHP нижче рекомендованого значення %s.", "for WebAuthn passwordless login" : "для безпарольного входу за допомогою WebAuthn", "for WebAuthn passwordless login, and SFTP storage" : "для безпарольного входу за допомогою WebAuthn та сховище SFTP", + "- The `%1$s` HTTP header does not contain `%2$s`. This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "- HTTP-заголовок `%1$s` не містить `%2$s`. Це потенційний ризик для безпеки або конфіденційності, тому рекомендується змінити цей параметр відповідним чином.", + "PostgreSQL version \"%s\" detected. PostgreSQL >=12 and <=16 is suggested for best performance, stability and functionality with this version of Nextcloud." : "Виявлено версію PostgreSQL \"%s\". Рекомендується використовувати PostgreSQL >=12 та <=16 для найкращої продуктивності, стабільності та функціональності з цією версією Nextcloud.", "Set default expiration date for shares" : "Встановити типовий термін дії для спільних ресурсів", "Your biography" : "Коротко про себе", "You are using <strong>{usage}</strong>" : "Ви використовуєте <strong>{usage}", - "You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Ви використовуєте <strong>{usage}</strong> із <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" + "You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Ви використовуєте <strong>{usage}</strong> із <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)", + "Failed to load subadmin groups with details" : "Не вдалося завантажити групи підадміністраторів з деталями" },"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/settings/lib/SetupChecks/SupportedDatabase.php b/apps/settings/lib/SetupChecks/SupportedDatabase.php index 31b907a825e..d083958d16e 100644 --- a/apps/settings/lib/SetupChecks/SupportedDatabase.php +++ b/apps/settings/lib/SetupChecks/SupportedDatabase.php @@ -21,7 +21,7 @@ use OCP\SetupCheck\SetupResult; class SupportedDatabase implements ISetupCheck { private const MIN_MARIADB = '10.6'; - private const MAX_MARIADB = '11.4'; + private const MAX_MARIADB = '11.8'; private const MIN_MYSQL = '8.0'; private const MAX_MYSQL = '8.4'; private const MIN_POSTGRES = '13'; diff --git a/apps/settings/src/components/AppList/AppLevelBadge.vue b/apps/settings/src/components/AppList/AppLevelBadge.vue index 900aa69b74a..8461f5eb6b9 100644 --- a/apps/settings/src/components/AppList/AppLevelBadge.vue +++ b/apps/settings/src/components/AppList/AppLevelBadge.vue @@ -15,7 +15,7 @@ <script setup lang="ts"> import NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper' -import { mdiCheck, mdiStarShooting } from '@mdi/js' +import { mdiCheck, mdiStarShootingOutline } from '@mdi/js' import { translate as t } from '@nextcloud/l10n' import { computed } from 'vue' @@ -28,7 +28,7 @@ const props = defineProps<{ const isSupported = computed(() => props.level === 300) const isFeatured = computed(() => props.level === 200) -const badgeIcon = computed(() => isSupported.value ? mdiStarShooting : mdiCheck) +const badgeIcon = computed(() => isSupported.value ? mdiStarShootingOutline : mdiCheck) const badgeText = computed(() => isSupported.value ? t('settings', 'Supported') : t('settings', 'Featured')) const badgeTitle = computed(() => isSupported.value ? t('settings', 'This app is supported via your current Nextcloud subscription.') diff --git a/apps/settings/src/components/AppNavigationGroupList.vue b/apps/settings/src/components/AppNavigationGroupList.vue index 2be7cce2f8b..8f21d18d695 100644 --- a/apps/settings/src/components/AppNavigationGroupList.vue +++ b/apps/settings/src/components/AppNavigationGroupList.vue @@ -18,7 +18,7 @@ <template v-if="isAdminOrDelegatedAdmin" #actions> <NcActionText> <template #icon> - <NcIconSvgWrapper :path="mdiAccountGroup" /> + <NcIconSvgWrapper :path="mdiAccountGroupOutline" /> </template> {{ t('settings', 'Create group') }} </NcActionText> @@ -60,7 +60,7 @@ import type CancelablePromise from 'cancelable-promise' import type { IGroup } from '../views/user-types.d.ts' -import { mdiAccountGroup, mdiPlus } from '@mdi/js' +import { mdiAccountGroupOutline, mdiPlus } from '@mdi/js' import { showError } from '@nextcloud/dialogs' import { t } from '@nextcloud/l10n' import { useElementVisibility } from '@vueuse/core' diff --git a/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue b/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue index febc034514f..bb91940c763 100644 --- a/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue +++ b/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue @@ -8,7 +8,7 @@ :name="t('settings', 'Nothing to show')" :description="t('settings', 'Could not load section content from app store.')"> <template #icon> - <NcIconSvgWrapper :path="mdiEyeOff" :size="64" /> + <NcIconSvgWrapper :path="mdiEyeOffOutline" :size="64" /> </template> </NcEmptyContent> <NcEmptyContent v-else-if="elements.length === 0" @@ -30,7 +30,7 @@ <script setup lang="ts"> import type { IAppDiscoverElements } from '../../constants/AppDiscoverTypes.ts' -import { mdiEyeOff } from '@mdi/js' +import { mdiEyeOffOutline } from '@mdi/js' import { showError } from '@nextcloud/dialogs' import { translate as t } from '@nextcloud/l10n' import { generateUrl } from '@nextcloud/router' diff --git a/apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue b/apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue index 04c49827b02..67d4afa6566 100644 --- a/apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue +++ b/apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue @@ -65,7 +65,7 @@ style="margin-top: 6px;" @click="removeMount(mount)"> <template #icon> - <NcIconSvgWrapper :path="mdiDelete" /> + <NcIconSvgWrapper :path="mdiDeleteOutline" /> </template> </NcButton> </div> @@ -160,7 +160,7 @@ import NcButton from '@nextcloud/vue/components/NcButton' import NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper' import NcCheckboxRadioSwitch from '@nextcloud/vue/components/NcCheckboxRadioSwitch' -import { mdiPlus, mdiCheck, mdiClose, mdiDelete } from '@mdi/js' +import { mdiPlus, mdiCheck, mdiClose, mdiDeleteOutline } from '@mdi/js' import { useAppApiStore } from '../../store/app-api-store.ts' import { useAppsStore } from '../../store/apps-store.ts' @@ -216,7 +216,7 @@ export default { mdiPlus, mdiCheck, mdiClose, - mdiDelete, + mdiDeleteOutline, } }, data() { diff --git a/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue b/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue index 3aa42f1d15a..8a387b55ecf 100644 --- a/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue +++ b/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue @@ -8,7 +8,7 @@ :name="t('settings', 'Details')" :order="1"> <template #icon> - <NcIconSvgWrapper :path="mdiTextBox" /> + <NcIconSvgWrapper :path="mdiTextBoxOutline" /> </template> <div class="app-details"> <div class="app-details__actions"> @@ -82,7 +82,7 @@ type="secondary" @click="() => showDeployOptionsModal = true"> <template #icon> - <NcIconSvgWrapper :path="mdiToyBrickPlus" /> + <NcIconSvgWrapper :path="mdiToyBrickPlusOutline" /> </template> {{ t('settings', 'Deploy options') }} </NcButton> @@ -162,7 +162,7 @@ :aria-label="t('settings', 'Report a bug')" :title="t('settings', 'Report a bug')"> <template #icon> - <NcIconSvgWrapper :path="mdiBug" /> + <NcIconSvgWrapper :path="mdiBugOutline" /> </template> </NcButton> <NcButton :disabled="!app.bugs" @@ -170,7 +170,7 @@ :aria-label="t('settings', 'Request feature')" :title="t('settings', 'Request feature')"> <template #icon> - <NcIconSvgWrapper :path="mdiFeatureSearch" /> + <NcIconSvgWrapper :path="mdiFeatureSearchOutline" /> </template> </NcButton> <NcButton v-if="app.appstoreData?.discussion" @@ -178,7 +178,7 @@ :aria-label="t('settings', 'Ask questions or discuss')" :title="t('settings', 'Ask questions or discuss')"> <template #icon> - <NcIconSvgWrapper :path="mdiTooltipQuestion" /> + <NcIconSvgWrapper :path="mdiTooltipQuestionOutline" /> </template> </NcButton> <NcButton v-if="!app.internal" @@ -209,7 +209,7 @@ import NcCheckboxRadioSwitch from '@nextcloud/vue/components/NcCheckboxRadioSwit import AppDeployOptionsModal from './AppDeployOptionsModal.vue' import AppManagement from '../../mixins/AppManagement.js' -import { mdiBug, mdiFeatureSearch, mdiStar, mdiTextBox, mdiTooltipQuestion, mdiToyBrickPlus } from '@mdi/js' +import { mdiBugOutline, mdiFeatureSearchOutline, mdiStar, mdiTextBoxOutline, mdiTooltipQuestionOutline, mdiToyBrickPlusOutline } from '@mdi/js' import { useAppsStore } from '../../store/apps-store' import { useAppApiStore } from '../../store/app-api-store' @@ -242,12 +242,12 @@ export default { store, appApiStore, - mdiBug, - mdiFeatureSearch, + mdiBugOutline, + mdiFeatureSearchOutline, mdiStar, - mdiTextBox, - mdiTooltipQuestion, - mdiToyBrickPlus, + mdiTextBoxOutline, + mdiTooltipQuestionOutline, + mdiToyBrickPlusOutline, } }, diff --git a/apps/settings/src/components/AuthToken.vue b/apps/settings/src/components/AuthToken.vue index 6f3e931d1b9..15286adb135 100644 --- a/apps/settings/src/components/AuthToken.vue +++ b/apps/settings/src/components/AuthToken.vue @@ -80,7 +80,7 @@ import type { PropType } from 'vue' import type { IToken } from '../store/authtoken' -import { mdiCheck, mdiCellphone, mdiTablet, mdiMonitor, mdiWeb, mdiKey, mdiMicrosoftEdge, mdiFirefox, mdiGoogleChrome, mdiAppleSafari, mdiAndroid, mdiAppleIos } from '@mdi/js' +import { mdiCheck, mdiCellphone, mdiTablet, mdiMonitor, mdiWeb, mdiKeyOutline, mdiMicrosoftEdge, mdiFirefox, mdiGoogleChrome, mdiAppleSafari, mdiAndroid, mdiAppleIos } from '@mdi/js' import { translate as t } from '@nextcloud/l10n' import { defineComponent } from 'vue' import { TokenType, useAuthTokenStore } from '../store/authtoken.ts' @@ -215,7 +215,7 @@ export default defineComponent({ tokenIcon() { // For custom created app tokens / app passwords if (this.token.type === TokenType.PERMANENT_TOKEN) { - return mdiKey + return mdiKeyOutline } switch (this.client?.id) { diff --git a/apps/settings/src/components/GroupListItem.vue b/apps/settings/src/components/GroupListItem.vue index 76088fa74db..69bb8a3f575 100644 --- a/apps/settings/src/components/GroupListItem.vue +++ b/apps/settings/src/components/GroupListItem.vue @@ -80,9 +80,9 @@ import NcCounterBubble from '@nextcloud/vue/components/NcCounterBubble' import NcModal from '@nextcloud/vue/components/NcModal' import NcNoteCard from '@nextcloud/vue/components/NcNoteCard' -import AccountGroup from 'vue-material-design-icons/AccountGroup.vue' -import Delete from 'vue-material-design-icons/Delete.vue' -import Pencil from 'vue-material-design-icons/Pencil.vue' +import AccountGroup from 'vue-material-design-icons/AccountGroupOutline.vue' +import Delete from 'vue-material-design-icons/DeleteOutline.vue' +import Pencil from 'vue-material-design-icons/PencilOutline.vue' import { showError } from '@nextcloud/dialogs' diff --git a/apps/settings/src/components/PersonalInfo/AvatarSection.vue b/apps/settings/src/components/PersonalInfo/AvatarSection.vue index 400ccb510f3..a99f228668c 100644 --- a/apps/settings/src/components/PersonalInfo/AvatarSection.vue +++ b/apps/settings/src/components/PersonalInfo/AvatarSection.vue @@ -88,7 +88,7 @@ import 'cropperjs/dist/cropper.css' import Upload from 'vue-material-design-icons/Upload.vue' import Folder from 'vue-material-design-icons/Folder.vue' -import Delete from 'vue-material-design-icons/Delete.vue' +import Delete from 'vue-material-design-icons/DeleteOutline.vue' import HeaderBar from './shared/HeaderBar.vue' import { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js' diff --git a/apps/settings/src/components/PersonalInfo/DetailsSection.vue b/apps/settings/src/components/PersonalInfo/DetailsSection.vue index b0eb137d9e5..d4bb0ce16ec 100644 --- a/apps/settings/src/components/PersonalInfo/DetailsSection.vue +++ b/apps/settings/src/components/PersonalInfo/DetailsSection.vue @@ -36,7 +36,7 @@ import { loadState } from '@nextcloud/initial-state' import { t } from '@nextcloud/l10n' import NcProgressBar from '@nextcloud/vue/components/NcProgressBar' -import Account from 'vue-material-design-icons/Account.vue' +import Account from 'vue-material-design-icons/AccountOutline.vue' import CircleSlice from 'vue-material-design-icons/CircleSlice3.vue' import HeaderBar from './shared/HeaderBar.vue' diff --git a/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue b/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue index de6114b57bc..6a6baef8817 100644 --- a/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue +++ b/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue @@ -48,7 +48,7 @@ :disabled="deleteDisabled" @click="deleteEmail"> <template #icon> - <NcIconSvgWrapper :path="mdiTrashCan" /> + <NcIconSvgWrapper :path="mdiTrashCanOutline" /> </template> {{ deleteEmailLabel }} </NcActionButton> @@ -71,7 +71,7 @@ import NcTextField from '@nextcloud/vue/components/NcTextField' import debounce from 'debounce' -import { mdiArrowLeft, mdiLock, mdiStar, mdiStarOutline, mdiTrashCan } from '@mdi/js' +import { mdiArrowLeft, mdiLockOutline, mdiStar, mdiStarOutline, mdiTrashCanOutline } from '@mdi/js' import FederationControl from '../shared/FederationControl.vue' import { handleError } from '../../../utils/handlers.ts' @@ -133,10 +133,10 @@ export default { setup() { return { mdiArrowLeft, - mdiLock, + mdiLockOutline, mdiStar, mdiStarOutline, - mdiTrashCan, + mdiTrashCanOutline, saveAdditionalEmailScope, } }, diff --git a/apps/settings/src/components/UserList.vue b/apps/settings/src/components/UserList.vue index 84c204805cc..459548fad26 100644 --- a/apps/settings/src/components/UserList.vue +++ b/apps/settings/src/components/UserList.vue @@ -19,7 +19,7 @@ <NcLoadingIcon v-if="isInitialLoad && loading.users" :name="t('settings', 'Loading accounts …')" :size="64" /> - <NcIconSvgWrapper v-else :path="mdiAccountGroup" :size="64" /> + <NcIconSvgWrapper v-else :path="mdiAccountGroupOutline" :size="64" /> </template> </NcEmptyContent> @@ -58,7 +58,7 @@ </template> <script> -import { mdiAccountGroup } from '@mdi/js' +import { mdiAccountGroupOutline } from '@mdi/js' import { showError } from '@nextcloud/dialogs' import { subscribe, unsubscribe } from '@nextcloud/event-bus' import { Fragment } from 'vue-frag' @@ -120,7 +120,7 @@ export default { setup() { // non reactive properties return { - mdiAccountGroup, + mdiAccountGroupOutline, rowHeight: 55, UserRow, diff --git a/apps/settings/src/components/Users/UserRowActions.vue b/apps/settings/src/components/Users/UserRowActions.vue index 8e30d584dfd..efd70d879a7 100644 --- a/apps/settings/src/components/Users/UserRowActions.vue +++ b/apps/settings/src/components/Users/UserRowActions.vue @@ -39,7 +39,7 @@ import NcActionButton from '@nextcloud/vue/components/NcActionButton' import NcActions from '@nextcloud/vue/components/NcActions' import NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper' import SvgCheck from '@mdi/svg/svg/check.svg?raw' -import SvgPencil from '@mdi/svg/svg/pencil.svg?raw' +import SvgPencil from '@mdi/svg/svg/pencil-outline.svg?raw' interface UserAction { action: (event: MouseEvent, user: Record<string, unknown>) => void, diff --git a/apps/settings/src/constants/AccountPropertyConstants.ts b/apps/settings/src/constants/AccountPropertyConstants.ts index 5ea15e05c6c..455c210976f 100644 --- a/apps/settings/src/constants/AccountPropertyConstants.ts +++ b/apps/settings/src/constants/AccountPropertyConstants.ts @@ -7,7 +7,7 @@ * SYNC to be kept in sync with `lib/public/Accounts/IAccountManager.php` */ -import { mdiAccountGroup, mdiCellphone, mdiLock, mdiWeb } from '@mdi/js' +import { mdiAccountGroupOutline, mdiCellphone, mdiLockOutline, mdiWeb } from '@mdi/js' import { translate as t } from '@nextcloud/l10n' /** Enum of account properties */ @@ -171,14 +171,14 @@ export const SCOPE_PROPERTY_ENUM = Object.freeze({ displayName: t('settings', 'Local'), tooltip: t('settings', 'Only visible to people on this instance and guests'), // tooltipDisabled is not required here as this scope is supported by all account properties - icon: mdiLock, + icon: mdiLockOutline, }, [SCOPE_ENUM.FEDERATED]: { name: SCOPE_ENUM.FEDERATED, displayName: t('settings', 'Federated'), tooltip: t('settings', 'Only synchronize to trusted servers'), tooltipDisabled: t('settings', 'Not available as federation has been disabled for your account, contact your system administration if you have any questions'), - icon: mdiAccountGroup, + icon: mdiAccountGroupOutline, }, [SCOPE_ENUM.PUBLISHED]: { name: SCOPE_ENUM.PUBLISHED, diff --git a/apps/settings/src/constants/AppstoreCategoryIcons.ts b/apps/settings/src/constants/AppstoreCategoryIcons.ts index 7e7e00df9b0..24bb0faea6d 100644 --- a/apps/settings/src/constants/AppstoreCategoryIcons.ts +++ b/apps/settings/src/constants/AppstoreCategoryIcons.ts @@ -3,29 +3,29 @@ * SPDX-License-Identifier: AGPL-3.0-or-later */ import { - mdiAccount, - mdiAccountMultiple, - mdiArchive, + mdiAccountOutline, + mdiAccountMultipleOutline, + mdiArchiveOutline, mdiCheck, - mdiClipboardFlow, + mdiClipboardFlowOutline, mdiClose, - mdiCog, - mdiControllerClassic, + mdiCogOutline, + mdiControllerClassicOutline, mdiDownload, mdiFileDocumentEdit, mdiFolder, - mdiKey, + mdiKeyOutline, mdiMagnify, mdiMonitorEye, mdiMultimedia, - mdiOfficeBuilding, + mdiOfficeBuildingOutline, mdiOpenInApp, mdiSecurity, mdiStar, mdiStarCircleOutline, - mdiStarShooting, + mdiStarShootingOutline, mdiTools, - mdiViewColumn, + mdiViewColumnOutline, } from '@mdi/js' /** @@ -34,28 +34,28 @@ import { export default Object.freeze({ // system special categories discover: mdiStarCircleOutline, - installed: mdiAccount, + installed: mdiAccountOutline, enabled: mdiCheck, disabled: mdiClose, - bundles: mdiArchive, - supported: mdiStarShooting, + bundles: mdiArchiveOutline, + supported: mdiStarShootingOutline, featured: mdiStar, updates: mdiDownload, // generic categories - auth: mdiKey, - customization: mdiCog, - dashboard: mdiViewColumn, + auth: mdiKeyOutline, + customization: mdiCogOutline, + dashboard: mdiViewColumnOutline, files: mdiFolder, - games: mdiControllerClassic, + games: mdiControllerClassicOutline, integration: mdiOpenInApp, monitoring: mdiMonitorEye, multimedia: mdiMultimedia, office: mdiFileDocumentEdit, - organization: mdiOfficeBuilding, + organization: mdiOfficeBuildingOutline, search: mdiMagnify, security: mdiSecurity, - social: mdiAccountMultiple, + social: mdiAccountMultipleOutline, tools: mdiTools, - workflow: mdiClipboardFlow, + workflow: mdiClipboardFlowOutline, }) diff --git a/apps/settings/src/views/UserManagementNavigation.vue b/apps/settings/src/views/UserManagementNavigation.vue index df3670bcfc7..95a12ac7c51 100644 --- a/apps/settings/src/views/UserManagementNavigation.vue +++ b/apps/settings/src/views/UserManagementNavigation.vue @@ -22,7 +22,7 @@ :name="t('settings', 'All accounts')" :to="{ name: 'users' }"> <template #icon> - <NcIconSvgWrapper :path="mdiAccount" /> + <NcIconSvgWrapper :path="mdiAccountOutline" /> </template> <template #counter> <NcCounterBubble v-if="userCount" :type="!selectedGroupDecoded ? 'highlighted' : undefined"> @@ -37,7 +37,7 @@ :name="t('settings', 'Admins')" :to="{ name: 'group', params: { selectedGroup: 'admin' } }"> <template #icon> - <NcIconSvgWrapper :path="mdiShieldAccount" /> + <NcIconSvgWrapper :path="mdiShieldAccountOutline" /> </template> <template #counter> <NcCounterBubble v-if="adminGroup && adminGroup.count > 0" @@ -70,7 +70,7 @@ :name="t('settings', 'Disabled accounts')" :to="{ name: 'group', params: { selectedGroup: 'disabled' } }"> <template #icon> - <NcIconSvgWrapper :path="mdiAccountOff" /> + <NcIconSvgWrapper :path="mdiAccountOffOutline" /> </template> <template v-if="disabledGroup.usercount > 0" #counter> <NcCounterBubble :type="selectedGroupDecoded === 'disabled' ? 'highlighted' : undefined"> @@ -87,7 +87,7 @@ type="tertiary" @click="isDialogOpen = true"> <template #icon> - <NcIconSvgWrapper :path="mdiCog" /> + <NcIconSvgWrapper :path="mdiCogOutline" /> </template> {{ t('settings', 'Account management settings') }} </NcButton> @@ -97,7 +97,7 @@ </template> <script setup lang="ts"> -import { mdiAccount, mdiAccountOff, mdiCog, mdiPlus, mdiShieldAccount, mdiHistory } from '@mdi/js' +import { mdiAccountOutline, mdiAccountOffOutline, mdiCogOutline, mdiPlus, mdiShieldAccountOutline, mdiHistory } from '@mdi/js' import { translate as t } from '@nextcloud/l10n' import { computed, ref } from 'vue' diff --git a/apps/sharebymail/lib/ShareByMailProvider.php b/apps/sharebymail/lib/ShareByMailProvider.php index 16a13786ea1..d28f7c51327 100644 --- a/apps/sharebymail/lib/ShareByMailProvider.php +++ b/apps/sharebymail/lib/ShareByMailProvider.php @@ -637,11 +637,6 @@ class ShareByMailProvider extends DefaultShareProvider implements IShareProvider return $token; } - /** - * Get all children of this share - * - * @return IShare[] - */ public function getChildren(IShare $parent): array { $children = []; diff --git a/apps/systemtags/l10n/mk.js b/apps/systemtags/l10n/mk.js index 0ceb835081e..c22ff5d8374 100644 --- a/apps/systemtags/l10n/mk.js +++ b/apps/systemtags/l10n/mk.js @@ -43,18 +43,36 @@ OC.L10N.register( "All tagged %s …" : "Сите означени %s …", "tagged %s" : "означени %s", "Collaborative tags" : "Колаборативна ознака", + "Collaborative tagging functionality which shares tags among people." : "Колаборативна ознака е можност да се споделуваат ознаките со корисниците.", + "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.)" : "Колаборативна ознака е можност да се споделуваат ознаките со корисниците. Одлично за тимско работење.\n\t(Доколку користите провајдер со инсталирани повеќе инстанци, се препорачува да се оневозможи оваа апликацика бидејќи ознаките ќе бидат споделени.)", "Public" : "Јавна", "Restricted" : "Ограничена", "Invisible" : "Невидливо", + "Created tag" : "Создадена ознака", "Failed to create tag" : "Неуспешно креирање на ознака", + "Updated tag" : "Ажурирана ознака", + "Failed to update tag" : "Неуспешно ажурирање ознака", + "Deleted tag" : "Избришана ознака", "Failed to delete tag" : "Неуспешно бришење на ознака", + "Create or edit tags" : "Креирај или измени ознака", + "Search for a tag to edit" : "Барај ознака за ажурирање", "Collaborative tags …" : "Колаборативни ознаки ...", + "No tags to select" : "Нема ознаки за обележување", + "Tag name" : "Име на ознака", + "Tag level" : "Ниво на ознака", "Create" : "Креирај", "Update" : "Ажурирај", "Delete" : "Избриши", "Reset" : "Поништи", + "Loading …" : "Се вчитува…", + "{displayName} (hidden)" : "{displayName} (невидлив)", + "{displayName} (restricted)" : "{displayName} (ограничен)", + "Only admins can create new tags" : "Само администраторите можат да креираат ознаки", "Manage tags" : "Уреди ги ознаките", + "Search tag" : "Барај ознака", + "Create new tag" : "Креирај нова ознака", "Cancel" : "Откажи", + "Apply changes" : "Промени ги промените", "Failed to load tags" : "Неуспешно вчитување на ознаки", "Failed to load selected tags" : "Неуспешно вчитување на избраната ознака", "Failed to select tag" : "Неуспешно избирање на ознака", diff --git a/apps/systemtags/l10n/mk.json b/apps/systemtags/l10n/mk.json index 02677e2e88b..5980e6ef18a 100644 --- a/apps/systemtags/l10n/mk.json +++ b/apps/systemtags/l10n/mk.json @@ -41,18 +41,36 @@ "All tagged %s …" : "Сите означени %s …", "tagged %s" : "означени %s", "Collaborative tags" : "Колаборативна ознака", + "Collaborative tagging functionality which shares tags among people." : "Колаборативна ознака е можност да се споделуваат ознаките со корисниците.", + "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.)" : "Колаборативна ознака е можност да се споделуваат ознаките со корисниците. Одлично за тимско работење.\n\t(Доколку користите провајдер со инсталирани повеќе инстанци, се препорачува да се оневозможи оваа апликацика бидејќи ознаките ќе бидат споделени.)", "Public" : "Јавна", "Restricted" : "Ограничена", "Invisible" : "Невидливо", + "Created tag" : "Создадена ознака", "Failed to create tag" : "Неуспешно креирање на ознака", + "Updated tag" : "Ажурирана ознака", + "Failed to update tag" : "Неуспешно ажурирање ознака", + "Deleted tag" : "Избришана ознака", "Failed to delete tag" : "Неуспешно бришење на ознака", + "Create or edit tags" : "Креирај или измени ознака", + "Search for a tag to edit" : "Барај ознака за ажурирање", "Collaborative tags …" : "Колаборативни ознаки ...", + "No tags to select" : "Нема ознаки за обележување", + "Tag name" : "Име на ознака", + "Tag level" : "Ниво на ознака", "Create" : "Креирај", "Update" : "Ажурирај", "Delete" : "Избриши", "Reset" : "Поништи", + "Loading …" : "Се вчитува…", + "{displayName} (hidden)" : "{displayName} (невидлив)", + "{displayName} (restricted)" : "{displayName} (ограничен)", + "Only admins can create new tags" : "Само администраторите можат да креираат ознаки", "Manage tags" : "Уреди ги ознаките", + "Search tag" : "Барај ознака", + "Create new tag" : "Креирај нова ознака", "Cancel" : "Откажи", + "Apply changes" : "Промени ги промените", "Failed to load tags" : "Неуспешно вчитување на ознаки", "Failed to load selected tags" : "Неуспешно вчитување на избраната ознака", "Failed to select tag" : "Неуспешно избирање на ознака", diff --git a/apps/systemtags/l10n/ru.js b/apps/systemtags/l10n/ru.js index 527a2c47aad..e662ee66324 100644 --- a/apps/systemtags/l10n/ru.js +++ b/apps/systemtags/l10n/ru.js @@ -103,7 +103,7 @@ OC.L10N.register( "Open in Files" : "Открыть в приложении «Файлы»", "List of tags and their associated files and folders." : "Список тегов и связанных с ними файлов и папок.", "No tags found" : "Меток не найдено", - "Tags you have created will show up here." : "Здесь будут отображаться созданные вами теги.", + "Tags you have created will show up here." : "Здесь будут отображаться файлы с этой меткой", "Failed to load tag" : "Не удалось загрузить тег", "Failed to load last used tags" : "Не удалось загрузить последние использованные метки", "Missing \"Content-Location\" header" : "Отсутствует заголовок «Content-Location»", diff --git a/apps/systemtags/l10n/ru.json b/apps/systemtags/l10n/ru.json index 1b74ab93bc1..f211eb50365 100644 --- a/apps/systemtags/l10n/ru.json +++ b/apps/systemtags/l10n/ru.json @@ -101,7 +101,7 @@ "Open in Files" : "Открыть в приложении «Файлы»", "List of tags and their associated files and folders." : "Список тегов и связанных с ними файлов и папок.", "No tags found" : "Меток не найдено", - "Tags you have created will show up here." : "Здесь будут отображаться созданные вами теги.", + "Tags you have created will show up here." : "Здесь будут отображаться файлы с этой меткой", "Failed to load tag" : "Не удалось загрузить тег", "Failed to load last used tags" : "Не удалось загрузить последние использованные метки", "Missing \"Content-Location\" header" : "Отсутствует заголовок «Content-Location»", diff --git a/apps/systemtags/l10n/uk.js b/apps/systemtags/l10n/uk.js index 0911b417f0d..18e8406193e 100644 --- a/apps/systemtags/l10n/uk.js +++ b/apps/systemtags/l10n/uk.js @@ -44,6 +44,7 @@ OC.L10N.register( "tagged %s" : "позначено міткою %s", "Collaborative tags" : "Спільні мітки", "Collaborative tagging functionality which shares tags among people." : "Функціональність спільних міток дозволяє надавати у спільний доступ мітки.", + "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.)" : "Функція спільного тегування, яка дозволяє ділитися тегами між користувачами. Чудово підходить для команд.\n\t(Якщо ви є постачальником послуг з багатокористувацькою інсталяцією, рекомендуємо деактивувати цей додаток, оскільки теги є спільними.)", "Public" : "Публічна", "Restricted" : "Обмежена", "Invisible" : "Невидима", @@ -64,24 +65,39 @@ OC.L10N.register( "Delete" : "Вилучити", "Reset" : "Скидання", "Loading …" : "Завантаження …", + "_{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} буде встановлено та {tag2} буде видалено для 1 файлу.","{tag1} буде встановлено та {tag2} буде видалено для {count} файлів.","{tag1} буде встановлено та {tag2} буде видалено для {count} файлів.","{tag1} буде встановлено та {tag2} буде видалено для {count} файлів."], + "_{tag} will be set to 1 file._::_{tag} will be set to {count} files._" : ["{tag} буде встановлено для 1 файлу.","{tag} буде встановлено для {count} файлів.","{tag} буде встановлено для {count} файлів.","{tag} буде встановлено для {count} файлів."], + "_{tag} will be removed from 1 file._::_{tag} will be removed from {count} files._" : ["{tag} буде видалено з 1 файлу.","{tag} буде видалено з {count} файлів.","{tag} буде видалено з {count} файлів.","{tag} буде видалено з {count} файлів."], + "_{tags} and {lastTag} will be set to 1 file._::_{tags} and {lastTag} will be set to {count} files._" : ["{tags} і {lastTag} буде встановлено для 1 файлу.","{tags} і {lastTag} буде встановлено для {count} файлів.","{tags} і {lastTag} буде встановлено для {count} файлів.","{tags} і {lastTag} буде встановлено для {count} файлів."], + "_{tags} and {lastTag} will be removed from 1 file._::_{tags} and {lastTag} will be removed from {count} files._" : ["{tags} і {lastTag} буде видалено для 1 файлу.","{tags} і {lastTag} буде видалено для {count} файлів.","{tags} і {lastTag} буде видалено для {count} файлів.","{tags} і {lastTag} буде видалено для {count} файлів."], "{displayName} (hidden)" : "{displayName} (приховано)", "{displayName} (restricted)" : "{displayName} (обмежено)", + "Only admins can create new tags" : "Тільки адміністратори можуть створювати нові теги", "Failed to apply tags changes" : "Не вдалося застосувати зміни до міток", "File tags modification canceled" : "Скасовано зміни до міток файлів", "Manage tags" : "Керування мітками", "Applying tags changes…" : "Застосування змін до міток...", "Search or create tag" : "Шукати або створити мітку", + "Search tag" : "Шукати мітку", "Change tag color" : "Змінити колір мітки", "Create new tag" : "Створити нову мітку", "Select or create tags to apply to all selected files" : "Застосувати до всіх вибраних файлів шукати або створити мітки", + "Select tags to apply to all selected files" : "Виберіть теги, які потрібно застосувати до всіх вибраних файлів", "Cancel" : "Скасувати", "Apply changes" : "Застосувати зміни", "Failed to load tags" : "Не вдалося завантажити мітки", "Failed to load selected tags" : "Не вдалося завантажити вибрані мітки", "Failed to select tag" : "Не вдалося вибрати мітку", + "System admin disabled tag creation. You can only use existing ones." : "Системний адміністратор вимкнув створення тегів. Ви можете використовувати тільки наявні.", "Loading collaborative tags …" : "Завантажую спільні мітки ...", "Search or create collaborative tags" : "Пошук або створення спільних міток", "No tags to select, type to create a new tag" : "Немає міток для вибору, почніть вводити, щоб додати нову мітку", + "Unable to update setting" : "Не вдалося оновити налаштування", + "System tag creation is now restricted to administrators" : "Створення системних тегів тепер обмежено адміністраторами", + "System tag creation is now allowed for everybody" : "Створення системних тегів тепер дозволено для всіх", + "System tag management" : "Управління тегами системи", + "If enabled, only administrators can create and edit tags. Accounts can still assign and remove them from files." : "Якщо ця функція увімкнена, створювати та редагувати теги можуть лише адміністратори. Користувачі можуть як і раніше присвоювати та видаляти теги з файлів.", + "Restrict tag creation and editing to administrators" : "Обмежити створення та редагування тегів адміністраторами", "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." : "Спільні мітки доступні для всіх користувачів. Заборонені мітки видимі для користувачів, але вони не можуть їх призначити. Невидимі мітки призначені для внутрішнього використання, оскільки користувачі не можуть бачити або призначати їх.", "Assigned collaborative tags" : "Призначені спільні мітки", "Open in Files" : "Відкрити у Файлах", diff --git a/apps/systemtags/l10n/uk.json b/apps/systemtags/l10n/uk.json index a908c34bb7a..bfd794fb32c 100644 --- a/apps/systemtags/l10n/uk.json +++ b/apps/systemtags/l10n/uk.json @@ -42,6 +42,7 @@ "tagged %s" : "позначено міткою %s", "Collaborative tags" : "Спільні мітки", "Collaborative tagging functionality which shares tags among people." : "Функціональність спільних міток дозволяє надавати у спільний доступ мітки.", + "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.)" : "Функція спільного тегування, яка дозволяє ділитися тегами між користувачами. Чудово підходить для команд.\n\t(Якщо ви є постачальником послуг з багатокористувацькою інсталяцією, рекомендуємо деактивувати цей додаток, оскільки теги є спільними.)", "Public" : "Публічна", "Restricted" : "Обмежена", "Invisible" : "Невидима", @@ -62,24 +63,39 @@ "Delete" : "Вилучити", "Reset" : "Скидання", "Loading …" : "Завантаження …", + "_{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} буде встановлено та {tag2} буде видалено для 1 файлу.","{tag1} буде встановлено та {tag2} буде видалено для {count} файлів.","{tag1} буде встановлено та {tag2} буде видалено для {count} файлів.","{tag1} буде встановлено та {tag2} буде видалено для {count} файлів."], + "_{tag} will be set to 1 file._::_{tag} will be set to {count} files._" : ["{tag} буде встановлено для 1 файлу.","{tag} буде встановлено для {count} файлів.","{tag} буде встановлено для {count} файлів.","{tag} буде встановлено для {count} файлів."], + "_{tag} will be removed from 1 file._::_{tag} will be removed from {count} files._" : ["{tag} буде видалено з 1 файлу.","{tag} буде видалено з {count} файлів.","{tag} буде видалено з {count} файлів.","{tag} буде видалено з {count} файлів."], + "_{tags} and {lastTag} will be set to 1 file._::_{tags} and {lastTag} will be set to {count} files._" : ["{tags} і {lastTag} буде встановлено для 1 файлу.","{tags} і {lastTag} буде встановлено для {count} файлів.","{tags} і {lastTag} буде встановлено для {count} файлів.","{tags} і {lastTag} буде встановлено для {count} файлів."], + "_{tags} and {lastTag} will be removed from 1 file._::_{tags} and {lastTag} will be removed from {count} files._" : ["{tags} і {lastTag} буде видалено для 1 файлу.","{tags} і {lastTag} буде видалено для {count} файлів.","{tags} і {lastTag} буде видалено для {count} файлів.","{tags} і {lastTag} буде видалено для {count} файлів."], "{displayName} (hidden)" : "{displayName} (приховано)", "{displayName} (restricted)" : "{displayName} (обмежено)", + "Only admins can create new tags" : "Тільки адміністратори можуть створювати нові теги", "Failed to apply tags changes" : "Не вдалося застосувати зміни до міток", "File tags modification canceled" : "Скасовано зміни до міток файлів", "Manage tags" : "Керування мітками", "Applying tags changes…" : "Застосування змін до міток...", "Search or create tag" : "Шукати або створити мітку", + "Search tag" : "Шукати мітку", "Change tag color" : "Змінити колір мітки", "Create new tag" : "Створити нову мітку", "Select or create tags to apply to all selected files" : "Застосувати до всіх вибраних файлів шукати або створити мітки", + "Select tags to apply to all selected files" : "Виберіть теги, які потрібно застосувати до всіх вибраних файлів", "Cancel" : "Скасувати", "Apply changes" : "Застосувати зміни", "Failed to load tags" : "Не вдалося завантажити мітки", "Failed to load selected tags" : "Не вдалося завантажити вибрані мітки", "Failed to select tag" : "Не вдалося вибрати мітку", + "System admin disabled tag creation. You can only use existing ones." : "Системний адміністратор вимкнув створення тегів. Ви можете використовувати тільки наявні.", "Loading collaborative tags …" : "Завантажую спільні мітки ...", "Search or create collaborative tags" : "Пошук або створення спільних міток", "No tags to select, type to create a new tag" : "Немає міток для вибору, почніть вводити, щоб додати нову мітку", + "Unable to update setting" : "Не вдалося оновити налаштування", + "System tag creation is now restricted to administrators" : "Створення системних тегів тепер обмежено адміністраторами", + "System tag creation is now allowed for everybody" : "Створення системних тегів тепер дозволено для всіх", + "System tag management" : "Управління тегами системи", + "If enabled, only administrators can create and edit tags. Accounts can still assign and remove them from files." : "Якщо ця функція увімкнена, створювати та редагувати теги можуть лише адміністратори. Користувачі можуть як і раніше присвоювати та видаляти теги з файлів.", + "Restrict tag creation and editing to administrators" : "Обмежити створення та редагування тегів адміністраторами", "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." : "Спільні мітки доступні для всіх користувачів. Заборонені мітки видимі для користувачів, але вони не можуть їх призначити. Невидимі мітки призначені для внутрішнього використання, оскільки користувачі не можуть бачити або призначати їх.", "Assigned collaborative tags" : "Призначені спільні мітки", "Open in Files" : "Відкрити у Файлах", diff --git a/apps/systemtags/src/components/SystemTagPicker.vue b/apps/systemtags/src/components/SystemTagPicker.vue index 9a3b8e19b68..377e76ed75f 100644 --- a/apps/systemtags/src/components/SystemTagPicker.vue +++ b/apps/systemtags/src/components/SystemTagPicker.vue @@ -148,9 +148,9 @@ import NcTextField from '@nextcloud/vue/components/NcTextField' import CheckIcon from 'vue-material-design-icons/CheckCircle.vue' import CircleIcon from 'vue-material-design-icons/Circle.vue' import CircleOutlineIcon from 'vue-material-design-icons/CircleOutline.vue' -import PencilIcon from 'vue-material-design-icons/Pencil.vue' +import PencilIcon from 'vue-material-design-icons/PencilOutline.vue' import PlusIcon from 'vue-material-design-icons/Plus.vue' -import TagIcon from 'vue-material-design-icons/Tag.vue' +import TagIcon from 'vue-material-design-icons/TagOutline.vue' import { createTag, fetchTag, fetchTags, getTagObjects, setTagObjects, updateTag } from '../services/api.ts' import { elementColor, invertTextColor, isDarkModeEnabled } from '../utils/colorUtils.ts' diff --git a/apps/systemtags/src/files_actions/bulkSystemTagsAction.ts b/apps/systemtags/src/files_actions/bulkSystemTagsAction.ts index 0f33650d588..7dfe90a1527 100644 --- a/apps/systemtags/src/files_actions/bulkSystemTagsAction.ts +++ b/apps/systemtags/src/files_actions/bulkSystemTagsAction.ts @@ -10,7 +10,7 @@ import { isPublicShare } from '@nextcloud/sharing/public' import { spawnDialog } from '@nextcloud/dialogs' import { t } from '@nextcloud/l10n' -import TagMultipleSvg from '@mdi/svg/svg/tag-multiple.svg?raw' +import TagMultipleSvg from '@mdi/svg/svg/tag-multiple-outline.svg?raw' /** * Spawn a dialog to add or remove tags from multiple nodes. diff --git a/apps/systemtags/src/files_views/systemtagsView.ts b/apps/systemtags/src/files_views/systemtagsView.ts index 46e5af6c3c1..624d2036802 100644 --- a/apps/systemtags/src/files_views/systemtagsView.ts +++ b/apps/systemtags/src/files_views/systemtagsView.ts @@ -7,7 +7,7 @@ import { translate as t } from '@nextcloud/l10n' import { View, getNavigation } from '@nextcloud/files' import { getContents } from '../services/systemtags.js' -import svgTagMultiple from '@mdi/svg/svg/tag-multiple.svg?raw' +import svgTagMultiple from '@mdi/svg/svg/tag-multiple-outline.svg?raw' export const systemTagsViewId = 'tags' diff --git a/apps/theming/css/default.css b/apps/theming/css/default.css index ad5b27530c3..6a6628f074a 100644 --- a/apps/theming/css/default.css +++ b/apps/theming/css/default.css @@ -74,8 +74,15 @@ --clickable-area-large: 48px; --clickable-area-small: 24px; --default-grid-baseline: 4px; + --header-height: 50px; --header-menu-item-height: 44px; + /* An alpha mask to be applied to all icons on the navigation bar (header menu). + * Icons are have a size of 20px but usually we use MDI which have a content of 16px so 2px padding top bottom, + * for better gradient we set those 2px (10% of height) as start and stop positions, this is also somewhat size agnostic as we only depend on the percentage. + */ + --header-menu-icon-mask: linear-gradient(var(--color-background-plain-text) 10%, color-mix(in srgb, var(--color-background-plain-text), 25% transparent) 90%) alpha; + --navigation-width: 300px; --sidebar-min-width: 300px; --sidebar-max-width: 500px; diff --git a/apps/theming/lib/Themes/DefaultTheme.php b/apps/theming/lib/Themes/DefaultTheme.php index 1a301eb9820..7d06926c52f 100644 --- a/apps/theming/lib/Themes/DefaultTheme.php +++ b/apps/theming/lib/Themes/DefaultTheme.php @@ -191,9 +191,16 @@ class DefaultTheme implements ITheme { '--default-grid-baseline' => '4px', - // various structure data + // header / navigation bar '--header-height' => '50px', '--header-menu-item-height' => '44px', + /* An alpha mask to be applied to all icons on the navigation bar (header menu). + * Icons are have a size of 20px but usually we use MDI which have a content of 16px so 2px padding top bottom, + * for better gradient we set those 2px (10% of height) as start and stop positions, this is also somewhat size agnostic as we only depend on the percentage. + */ + '--header-menu-icon-mask' => 'linear-gradient(var(--color-background-plain-text) 10%, color-mix(in srgb, var(--color-background-plain-text), 25% transparent) 90%) alpha', + + // various structure data '--navigation-width' => '300px', '--sidebar-min-width' => '300px', '--sidebar-max-width' => '500px', diff --git a/apps/theming/lib/Themes/HighContrastTheme.php b/apps/theming/lib/Themes/HighContrastTheme.php index 1d20ae251df..5b51114a32f 100644 --- a/apps/theming/lib/Themes/HighContrastTheme.php +++ b/apps/theming/lib/Themes/HighContrastTheme.php @@ -106,6 +106,9 @@ class HighContrastTheme extends DefaultTheme implements ITheme { '--color-border' => $this->util->darken($colorMainBackground, 50), '--color-border-dark' => $this->util->darken($colorMainBackground, 50), '--color-border-maxcontrast' => $this->util->darken($colorMainBackground, 56), + + // remove the gradient from the app icons + '--header-menu-icon-mask' => 'none', ] ); } diff --git a/apps/theming/src/components/BackgroundSettings.vue b/apps/theming/src/components/BackgroundSettings.vue index ce4489138ff..58b76dd9602 100644 --- a/apps/theming/src/components/BackgroundSettings.vue +++ b/apps/theming/src/components/BackgroundSettings.vue @@ -87,7 +87,7 @@ import NcColorPicker from '@nextcloud/vue/components/NcColorPicker' import Check from 'vue-material-design-icons/Check.vue' import ImageEdit from 'vue-material-design-icons/ImageEdit.vue' -import ColorPalette from 'vue-material-design-icons/Palette.vue' +import ColorPalette from 'vue-material-design-icons/PaletteOutline.vue' const shippedBackgroundList = loadState('theming', 'shippedBackgrounds') const backgroundImage = loadState('theming', 'userBackgroundImage') diff --git a/apps/theming/src/components/UserPrimaryColor.vue b/apps/theming/src/components/UserPrimaryColor.vue index 462ce43e997..f10b8a01825 100644 --- a/apps/theming/src/components/UserPrimaryColor.vue +++ b/apps/theming/src/components/UserPrimaryColor.vue @@ -38,7 +38,7 @@ import debounce from 'debounce' import NcButton from '@nextcloud/vue/components/NcButton' import NcColorPicker from '@nextcloud/vue/components/NcColorPicker' import NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon' -import IconColorPalette from 'vue-material-design-icons/Palette.vue' +import IconColorPalette from 'vue-material-design-icons/PaletteOutline.vue' import IconUndo from 'vue-material-design-icons/UndoVariant.vue' const { primaryColor, defaultPrimaryColor } = loadState('theming', 'data', { primaryColor: '#0082c9', defaultPrimaryColor: '#0082c9' }) diff --git a/apps/theming/src/components/admin/FileInputField.vue b/apps/theming/src/components/admin/FileInputField.vue index 698bc53c402..d5e0052f5bd 100644 --- a/apps/theming/src/components/admin/FileInputField.vue +++ b/apps/theming/src/components/admin/FileInputField.vue @@ -68,7 +68,7 @@ import { loadState } from '@nextcloud/initial-state' import NcButton from '@nextcloud/vue/components/NcButton' import NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon' import NcNoteCard from '@nextcloud/vue/components/NcNoteCard' -import Delete from 'vue-material-design-icons/Delete.vue' +import Delete from 'vue-material-design-icons/DeleteOutline.vue' import Undo from 'vue-material-design-icons/UndoVariant.vue' import Upload from 'vue-material-design-icons/Upload.vue' diff --git a/apps/theming/tests/Migration/Version2006Date20240905111627Test.php b/apps/theming/tests/Migration/Version2006Date20240905111627Test.php index c4bcb75b364..5f7458db11a 100644 --- a/apps/theming/tests/Migration/Version2006Date20240905111627Test.php +++ b/apps/theming/tests/Migration/Version2006Date20240905111627Test.php @@ -9,9 +9,9 @@ declare(strict_types=1); namespace OCA\Theming\Tests\Migration; -use NCU\Config\IUserConfig; use OCA\Theming\Migration\Version2006Date20240905111627; use OCP\BackgroundJob\IJobList; +use OCP\Config\IUserConfig; use OCP\IAppConfig; use OCP\IDBConnection; use OCP\IUserManager; diff --git a/apps/twofactor_backupcodes/l10n/es.js b/apps/twofactor_backupcodes/l10n/es.js index 2a53036ac9d..1f0621f4a8c 100644 --- a/apps/twofactor_backupcodes/l10n/es.js +++ b/apps/twofactor_backupcodes/l10n/es.js @@ -2,22 +2,22 @@ OC.L10N.register( "twofactor_backupcodes", { "You created two-factor backup codes for your account" : "Has creado códigos de respaldo para la autenticación de dos factores para tu cuenta", - "Second-factor backup codes" : "Códigos de respaldo para verificación en dos pasos", + "Second-factor backup codes" : "Códigos de respaldo para el segundo factor", "Generate backup codes" : "Generar códigos de respaldo", "You enabled two-factor authentication but did not generate backup codes yet. They are needed to restore access to your account in case you lose your second factor." : "Ha habilitado la autenticación de dos factores pero no ha generado aún los códigos de respaldo. Estos son necesarios para acceder a su cuenta en caso de pérdida del segundo factor.", "Backup code" : "Código de respaldo", "Use backup code" : "Usar código de respaldo", - "Two factor backup codes" : "Códigos de respaldo de la verificación en dos pasos", + "Two factor backup codes" : "Códigos de respaldo para la verificación de dos factores", "A two-factor auth backup codes provider" : "Un proveedor de códigos respaldo para autenticación de dos factores", - "An error occurred while generating your backup codes" : "Ha ocurrido un error mientras se generaban los códigos de respaldo.", + "An error occurred while generating your backup codes" : "Ha ocurrido un error mientras se generaban sus códigos de respaldo.", "Backup codes have been generated. {used} of {total} codes have been used." : "Se han generado códigos de respaldo. Se han usado {used} de {total} códigos.", - "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later." : "Estos son tus códigos de respaldo. Por favor, guárdalos y/o imprímelos, porque no podrás volver a verlos más tarde.", + "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later." : "Estos son sus códigos de respaldo. Por favor, guárdelos y/o imprima los mismos, ya que no podrá volver a verlos más tarde.", "Save backup codes" : "Guardar códigos de respaldo", "Print backup codes" : "Imprimir códigos de respaldo", "Regenerate backup codes" : "Regenerar códigos de respaldo", "If you regenerate backup codes, you automatically invalidate old codes." : "Si regenera los códigos de respaldo, automáticamente invalidará los antiguos.", "{name} backup codes" : "Códigos de respaldo {name}", - "Use one of the backup codes you saved when setting up two-factor authentication." : "Usa uno de los códigos de respaldo que guardaste cuando activaste la autenticación de dos factores.", + "Use one of the backup codes you saved when setting up two-factor authentication." : "Use uno de los códigos de respaldo que guardó cuando activó la autenticación de dos factores.", "Submit" : "Enviar" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/twofactor_backupcodes/l10n/es.json b/apps/twofactor_backupcodes/l10n/es.json index da669378de8..bad78f7b72d 100644 --- a/apps/twofactor_backupcodes/l10n/es.json +++ b/apps/twofactor_backupcodes/l10n/es.json @@ -1,21 +1,21 @@ { "translations": { "You created two-factor backup codes for your account" : "Has creado códigos de respaldo para la autenticación de dos factores para tu cuenta", - "Second-factor backup codes" : "Códigos de respaldo para verificación en dos pasos", + "Second-factor backup codes" : "Códigos de respaldo para el segundo factor", "Generate backup codes" : "Generar códigos de respaldo", "You enabled two-factor authentication but did not generate backup codes yet. They are needed to restore access to your account in case you lose your second factor." : "Ha habilitado la autenticación de dos factores pero no ha generado aún los códigos de respaldo. Estos son necesarios para acceder a su cuenta en caso de pérdida del segundo factor.", "Backup code" : "Código de respaldo", "Use backup code" : "Usar código de respaldo", - "Two factor backup codes" : "Códigos de respaldo de la verificación en dos pasos", + "Two factor backup codes" : "Códigos de respaldo para la verificación de dos factores", "A two-factor auth backup codes provider" : "Un proveedor de códigos respaldo para autenticación de dos factores", - "An error occurred while generating your backup codes" : "Ha ocurrido un error mientras se generaban los códigos de respaldo.", + "An error occurred while generating your backup codes" : "Ha ocurrido un error mientras se generaban sus códigos de respaldo.", "Backup codes have been generated. {used} of {total} codes have been used." : "Se han generado códigos de respaldo. Se han usado {used} de {total} códigos.", - "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later." : "Estos son tus códigos de respaldo. Por favor, guárdalos y/o imprímelos, porque no podrás volver a verlos más tarde.", + "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later." : "Estos son sus códigos de respaldo. Por favor, guárdelos y/o imprima los mismos, ya que no podrá volver a verlos más tarde.", "Save backup codes" : "Guardar códigos de respaldo", "Print backup codes" : "Imprimir códigos de respaldo", "Regenerate backup codes" : "Regenerar códigos de respaldo", "If you regenerate backup codes, you automatically invalidate old codes." : "Si regenera los códigos de respaldo, automáticamente invalidará los antiguos.", "{name} backup codes" : "Códigos de respaldo {name}", - "Use one of the backup codes you saved when setting up two-factor authentication." : "Usa uno de los códigos de respaldo que guardaste cuando activaste la autenticación de dos factores.", + "Use one of the backup codes you saved when setting up two-factor authentication." : "Use uno de los códigos de respaldo que guardó cuando activó la autenticación de dos factores.", "Submit" : "Enviar" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/mk.js b/apps/updatenotification/l10n/mk.js index 71b9b33190d..cfd50b7a030 100644 --- a/apps/updatenotification/l10n/mk.js +++ b/apps/updatenotification/l10n/mk.js @@ -3,13 +3,23 @@ OC.L10N.register( { "Channel updated" : "Каналот е ажуриран", "Web updater is disabled" : "Оневозможено е WEB ажурирање", + "App updated" : "Ажурирана е апликација", + "See what's new" : "Што е ново", + "{app} updated to version {version}" : "{app} ажурирана на верзија {version}", "Update notifications" : "Известувања за ажурирање", "The update server could not be reached since %d days to check for new updates." : "Серверот за ажурирање не е проверен %d дена.", "Please check the Nextcloud and server log files for errors." : "Проверете ги записите во Cloud-от и записите во серверот за грешките.", "Update to {serverAndVersion} is available." : "Достапно е ажурирање во {serverAndVersion} верзија.", "Update for {app} to version %s is available." : "Достапно е ажурирање за {app} во верзија %s.", "Update notification" : "Известување за ажурирање", + "Displays update notifications for Nextcloud, app updates, and provides the SSO for the updater." : "Прикажува известувања за ажурирање и овозможува SSO за надградувачот.", + "Give feedback" : "Дајте повратни информации", + "Get started" : "Започнете", + "No changelog available" : "Нема достапен дневник за промени", + "What's new in {app} {version}" : "Што е ново во {app} {version}", "A new version is available: <strong>{newVersionString}</strong>" : "Достапна е нова верзија: <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}" : "Можно е да треба некое време додека новата верзија се прикаже овде. Ние испорачуваме нови до нашите корисници но од време на време некој верзии ги прескокнуваме поради пројандени проблеми во истите. Повеќе информации може да се пронајдат на {link}", + "Checked on {lastCheckedDate} - Open changelog" : "Проверено на {lastCheckedDate} - Отвори дневник за промени", "Checking apps for compatible versions" : "Проверка за компатибилност на апликациите со новата верзија", "Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Бидете сигурни дека во config.php датотеката параматарот <samp>appstoreenabled</samp> е поставен на false.", "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." : "Неможе да се поврзе со appstore или одговорот е дека нема ажурирање. Пребарајте рачно за ажурирање или бидете сигурни дека серверот има пристап до интернет и може да се поврзе со продавницата.", @@ -26,18 +36,26 @@ OC.L10N.register( "Apps missing compatible version" : "Апликации на кој им недостасува компатибилност", "View in store" : "Преглед во продавницата за апликации", "Apps with compatible version" : "Апликации со компатибилни верзии", + "Please note that the web updater is not recommended with more than 100 accounts! Please use the command line updater instead!" : "Имајте на ум дека веб ажурирачот не е препорачан за повеќе од 100 корисници! Наместо тоа, користете го ажурирачот на командната линија!", "Open updater" : "Стартувај го надградувачот", "Download now" : "Преземи", + "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." : "Веб-ажурирањето е оневозможено. Користете го ажурирањето од командната линија или соодветниот механизам за ажурирање за вашиот метод на инсталација (на пр. Docker pull) за ажурирање.", "What's new?" : "Што е ново", "View changelog" : "Видете ги проммените", "The update check is not yet finished. Please refresh the page." : "Сеуште нема извшено проверка за ажурирање, Ве молиме рефреширајте ја страната.", "Your version is up to date." : "Вашата верзија е ажурирана.", "A non-default update server is in use to be checked for updates:" : "Нестандарден сервер е поставен за проверка за ажурирање:", + "Update channel" : "Канал за ажурирање", + "Changing the update channel also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Промената на каналот за ажурирање влијае на страницата за управување со апликации. На пр. откако ќе се префрлите на бета каналот, ќе ви бидат понудени ажурирања на бета апликации на страницата за управување со апликации.", + "Current update channel:" : "Моментален канал за ажурирање:", "You can always update to a newer version. But you can never downgrade to a more stable version." : "Секогаш можете да ажурирате на нова верзија. Но никогаш нема да можете да се вратите на постара верзија.", "Notify members of the following groups about available updates:" : "Извести ги членовите на овие групи за достапните ажурирања:", + "No groups" : "Нема групи", "Only notifications for app updates are available." : "Известувања само за достапни ажурирања на апликации.", "The selected update channel makes dedicated notifications for the server obsolete." : "Избраниот канал за ажурирање ќе овозможи известувања за застарениот сервер.", "The selected update channel does not support updates of the server." : "Избраниот канал за ажурирање не поддржува ажурирање за серверот.", + "Changelog for app {app}" : "Дневник на промени за апликацијата {app}", + "What's new in {app} version {version}" : "Што е ново во {app} верзија {version}", "{version} is available. Get more information on how to update." : "Достапна е нова верзија {version}. Видете ги информациите како да ја ажурирате." }, "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); diff --git a/apps/updatenotification/l10n/mk.json b/apps/updatenotification/l10n/mk.json index e922dbe066e..c6eb94b7e0d 100644 --- a/apps/updatenotification/l10n/mk.json +++ b/apps/updatenotification/l10n/mk.json @@ -1,13 +1,23 @@ { "translations": { "Channel updated" : "Каналот е ажуриран", "Web updater is disabled" : "Оневозможено е WEB ажурирање", + "App updated" : "Ажурирана е апликација", + "See what's new" : "Што е ново", + "{app} updated to version {version}" : "{app} ажурирана на верзија {version}", "Update notifications" : "Известувања за ажурирање", "The update server could not be reached since %d days to check for new updates." : "Серверот за ажурирање не е проверен %d дена.", "Please check the Nextcloud and server log files for errors." : "Проверете ги записите во Cloud-от и записите во серверот за грешките.", "Update to {serverAndVersion} is available." : "Достапно е ажурирање во {serverAndVersion} верзија.", "Update for {app} to version %s is available." : "Достапно е ажурирање за {app} во верзија %s.", "Update notification" : "Известување за ажурирање", + "Displays update notifications for Nextcloud, app updates, and provides the SSO for the updater." : "Прикажува известувања за ажурирање и овозможува SSO за надградувачот.", + "Give feedback" : "Дајте повратни информации", + "Get started" : "Започнете", + "No changelog available" : "Нема достапен дневник за промени", + "What's new in {app} {version}" : "Што е ново во {app} {version}", "A new version is available: <strong>{newVersionString}</strong>" : "Достапна е нова верзија: <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}" : "Можно е да треба некое време додека новата верзија се прикаже овде. Ние испорачуваме нови до нашите корисници но од време на време некој верзии ги прескокнуваме поради пројандени проблеми во истите. Повеќе информации може да се пронајдат на {link}", + "Checked on {lastCheckedDate} - Open changelog" : "Проверено на {lastCheckedDate} - Отвори дневник за промени", "Checking apps for compatible versions" : "Проверка за компатибилност на апликациите со новата верзија", "Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Бидете сигурни дека во config.php датотеката параматарот <samp>appstoreenabled</samp> е поставен на false.", "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." : "Неможе да се поврзе со appstore или одговорот е дека нема ажурирање. Пребарајте рачно за ажурирање или бидете сигурни дека серверот има пристап до интернет и може да се поврзе со продавницата.", @@ -24,18 +34,26 @@ "Apps missing compatible version" : "Апликации на кој им недостасува компатибилност", "View in store" : "Преглед во продавницата за апликации", "Apps with compatible version" : "Апликации со компатибилни верзии", + "Please note that the web updater is not recommended with more than 100 accounts! Please use the command line updater instead!" : "Имајте на ум дека веб ажурирачот не е препорачан за повеќе од 100 корисници! Наместо тоа, користете го ажурирачот на командната линија!", "Open updater" : "Стартувај го надградувачот", "Download now" : "Преземи", + "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." : "Веб-ажурирањето е оневозможено. Користете го ажурирањето од командната линија или соодветниот механизам за ажурирање за вашиот метод на инсталација (на пр. Docker pull) за ажурирање.", "What's new?" : "Што е ново", "View changelog" : "Видете ги проммените", "The update check is not yet finished. Please refresh the page." : "Сеуште нема извшено проверка за ажурирање, Ве молиме рефреширајте ја страната.", "Your version is up to date." : "Вашата верзија е ажурирана.", "A non-default update server is in use to be checked for updates:" : "Нестандарден сервер е поставен за проверка за ажурирање:", + "Update channel" : "Канал за ажурирање", + "Changing the update channel also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Промената на каналот за ажурирање влијае на страницата за управување со апликации. На пр. откако ќе се префрлите на бета каналот, ќе ви бидат понудени ажурирања на бета апликации на страницата за управување со апликации.", + "Current update channel:" : "Моментален канал за ажурирање:", "You can always update to a newer version. But you can never downgrade to a more stable version." : "Секогаш можете да ажурирате на нова верзија. Но никогаш нема да можете да се вратите на постара верзија.", "Notify members of the following groups about available updates:" : "Извести ги членовите на овие групи за достапните ажурирања:", + "No groups" : "Нема групи", "Only notifications for app updates are available." : "Известувања само за достапни ажурирања на апликации.", "The selected update channel makes dedicated notifications for the server obsolete." : "Избраниот канал за ажурирање ќе овозможи известувања за застарениот сервер.", "The selected update channel does not support updates of the server." : "Избраниот канал за ажурирање не поддржува ажурирање за серверот.", + "Changelog for app {app}" : "Дневник на промени за апликацијата {app}", + "What's new in {app} version {version}" : "Што е ново во {app} верзија {version}", "{version} is available. Get more information on how to update." : "Достапна е нова верзија {version}. Видете ги информациите како да ја ажурирате." },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" }
\ No newline at end of file diff --git a/apps/updatenotification/src/components/UpdateNotification.vue b/apps/updatenotification/src/components/UpdateNotification.vue index 3ba6bf5bd69..94c58dbdfd9 100644 --- a/apps/updatenotification/src/components/UpdateNotification.vue +++ b/apps/updatenotification/src/components/UpdateNotification.vue @@ -178,7 +178,7 @@ import IconChevronDown from 'vue-material-design-icons/ChevronDown.vue' import IconCloudCheckVariant from 'vue-material-design-icons/CloudCheckVariant.vue' import IconLink from 'vue-material-design-icons/Link.vue' import IconNewBox from 'vue-material-design-icons/NewBox.vue' -import IconPencil from 'vue-material-design-icons/Pencil.vue' +import IconPencil from 'vue-material-design-icons/PencilOutline.vue' import IconSourceBranch from 'vue-material-design-icons/SourceBranch.vue' import IconStar from 'vue-material-design-icons/Star.vue' import IconWeatherNight from 'vue-material-design-icons/WeatherNight.vue' diff --git a/apps/user_ldap/l10n/es.js b/apps/user_ldap/l10n/es.js index 924d5992945..ce71773283b 100644 --- a/apps/user_ldap/l10n/es.js +++ b/apps/user_ldap/l10n/es.js @@ -220,9 +220,9 @@ OC.L10N.register( "Biography Field" : "Campo Biografía", "User profile Biography will be set from the specified attribute" : "La Biografía en el perfil del usuario será definida desde el atributo especificado", "Birthdate Field" : "Campo de Fecha de nacimiento", - "User profile Date of birth will be set from the specified attribute" : "Perfil de usuario La fecha de nacimiento será asignada en base al atributo especificado", + "User profile Date of birth will be set from the specified attribute" : "La fecha de nacimiento en el perfil de usuario será asignada en base al atributo especificado", "Pronouns Field" : "Campo Pronombres", - "User profile Pronouns will be set from the specified attribute" : "Perfil de usuario Los pronombres se asignarán en base al atributo especificado", + "User profile Pronouns will be set from the specified attribute" : "Los pronombres en el perfil de usuario se asignarán en base al atributo especificado", "Internal Username" : "Nombre de usuario interno", "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Por defecto, el nombre de usuario interno será creado a partir del atributo UUID. Esto asegura que el nombre de usuario es único y no se necesitará convertir los caracteres. El nombre de usuario interno tiene la restricción de que solo se admiten estos caracteres: [ a-zA-Z0-9_.@- ]. Otros caracteres son reemplazados por su correspondencia ASCII o simplemente omitidos. En caso de colisiones se añadirá/incrementará un número. El nombre de usuario interno se usa para identificar internamente a un usuario. Es también el nombre por defecto de la carpeta de inicio del usuario. También es parte de las URL remotas, por ejemplo para todos los servicios DAV. Con esta configuración, se puede anular el comportamiento por defecto. Los cambios tendrán efecto solo en usuarios LDAP mapeados (añadidos) después del cambio. Déjelo vacío para usar el comportamiento por defecto.", "Internal Username Attribute:" : "Atributo de nombre de usuario interno:", diff --git a/apps/user_ldap/l10n/es.json b/apps/user_ldap/l10n/es.json index 6e44ef31365..2e8253e0fa1 100644 --- a/apps/user_ldap/l10n/es.json +++ b/apps/user_ldap/l10n/es.json @@ -218,9 +218,9 @@ "Biography Field" : "Campo Biografía", "User profile Biography will be set from the specified attribute" : "La Biografía en el perfil del usuario será definida desde el atributo especificado", "Birthdate Field" : "Campo de Fecha de nacimiento", - "User profile Date of birth will be set from the specified attribute" : "Perfil de usuario La fecha de nacimiento será asignada en base al atributo especificado", + "User profile Date of birth will be set from the specified attribute" : "La fecha de nacimiento en el perfil de usuario será asignada en base al atributo especificado", "Pronouns Field" : "Campo Pronombres", - "User profile Pronouns will be set from the specified attribute" : "Perfil de usuario Los pronombres se asignarán en base al atributo especificado", + "User profile Pronouns will be set from the specified attribute" : "Los pronombres en el perfil de usuario se asignarán en base al atributo especificado", "Internal Username" : "Nombre de usuario interno", "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Por defecto, el nombre de usuario interno será creado a partir del atributo UUID. Esto asegura que el nombre de usuario es único y no se necesitará convertir los caracteres. El nombre de usuario interno tiene la restricción de que solo se admiten estos caracteres: [ a-zA-Z0-9_.@- ]. Otros caracteres son reemplazados por su correspondencia ASCII o simplemente omitidos. En caso de colisiones se añadirá/incrementará un número. El nombre de usuario interno se usa para identificar internamente a un usuario. Es también el nombre por defecto de la carpeta de inicio del usuario. También es parte de las URL remotas, por ejemplo para todos los servicios DAV. Con esta configuración, se puede anular el comportamiento por defecto. Los cambios tendrán efecto solo en usuarios LDAP mapeados (añadidos) después del cambio. Déjelo vacío para usar el comportamiento por defecto.", "Internal Username Attribute:" : "Atributo de nombre de usuario interno:", diff --git a/apps/user_ldap/l10n/ru.js b/apps/user_ldap/l10n/ru.js index 30ab9ad0e15..e9abc7d540c 100644 --- a/apps/user_ldap/l10n/ru.js +++ b/apps/user_ldap/l10n/ru.js @@ -199,7 +199,7 @@ OC.L10N.register( "User Home Folder Naming Rule" : "Правило именования домашнего каталога пользователя", "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Оставьте пустым для использования имени пользователя (по умолчанию) или укажите атрибут LDAP/AD.", "\"$home\" Placeholder Field" : "Поле-заполнитель \"$home\"", - "$home in an external storage configuration will be replaced with the value of the specified attribute" : "В конфигурации внешнего хранилища $home будет заменен значением указанного атрибута", + "$home in an external storage configuration will be replaced with the value of the specified attribute" : "В конфигурации внешнего хранилища $home будет заменён значением указанного атрибута", "User Profile Attributes" : "Атрибуты профиля пользователей", "Phone Field" : "Поле телефона", "User profile Phone will be set from the specified attribute" : "Телефон в профиле пользователя будет установлен из указанного атрибута", diff --git a/apps/user_ldap/l10n/ru.json b/apps/user_ldap/l10n/ru.json index eea51dcf3a7..97ac0b1eeb3 100644 --- a/apps/user_ldap/l10n/ru.json +++ b/apps/user_ldap/l10n/ru.json @@ -197,7 +197,7 @@ "User Home Folder Naming Rule" : "Правило именования домашнего каталога пользователя", "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Оставьте пустым для использования имени пользователя (по умолчанию) или укажите атрибут LDAP/AD.", "\"$home\" Placeholder Field" : "Поле-заполнитель \"$home\"", - "$home in an external storage configuration will be replaced with the value of the specified attribute" : "В конфигурации внешнего хранилища $home будет заменен значением указанного атрибута", + "$home in an external storage configuration will be replaced with the value of the specified attribute" : "В конфигурации внешнего хранилища $home будет заменён значением указанного атрибута", "User Profile Attributes" : "Атрибуты профиля пользователей", "Phone Field" : "Поле телефона", "User profile Phone will be set from the specified attribute" : "Телефон в профиле пользователя будет установлен из указанного атрибута", diff --git a/apps/user_ldap/l10n/uk.js b/apps/user_ldap/l10n/uk.js index 6b63f214c9f..21992698f59 100644 --- a/apps/user_ldap/l10n/uk.js +++ b/apps/user_ldap/l10n/uk.js @@ -6,10 +6,12 @@ OC.L10N.register( "Invalid configuration: Anonymous binding is not allowed." : "Неправильна конфігурація. Анонімне приєднання не дозволено.", "Valid configuration, connection established!" : "Правильна конфігурація, з'єднання встановлено!", "Valid configuration, but binding failed. Please check the server settings and credentials." : "Правильна конфігурація, але приєднання не вдалося. Будь ласка, перевірте налаштування сервера та дані авторизації.", + "Invalid configuration: %s" : "Неправильна конфігурація: %s", "No action specified" : "Ніяких дій не вказано", "No configuration specified" : "Немає конфігурації", "No data specified" : "Немає даних", "Invalid data specified" : "Вказано неправильні дані", + "Could not set configuration %1$s to %2$s" : "Не вдалося встановити конфігурацію %1$s на %2$s", "Action does not exist" : "Дія не існує", "Renewing …" : "Оновлення...", "Very weak password" : "Дуже слабкий пароль", @@ -52,12 +54,25 @@ OC.L10N.register( "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Заповнювач \"%uid\" відсутній. Його буде замінено ім’ям для входу під час запиту LDAP/AD.", "Please provide a login name to test against" : "Будь ласка, введіть ім’я для входу для перевірки", "The group box was disabled, because the LDAP/AD server does not support memberOf." : "Поле групи було вимкнено, оскільки сервер LDAP/AD не підтримує memberOf.", + "Password change rejected. Hint: %s" : "Зміну пароля відхилено. Підказка: %s", + "Mandatory field \"%s\" left empty" : "Обов'язкове поле \"%s\" залишено порожнім", + "A password is given, but not an LDAP agent" : "Надається пароль, але не агент LDAP", + "No password is given for the user agent" : "Для користувача-агента пароль не задається", + "No LDAP base DN was given" : "Базовий DN LDAP не вказано", + "User base DN is not a subnode of global base DN" : "Базовий DN користувача не є підвузлом глобального базового DN", + "Group base DN is not a subnode of global base DN" : "Груповий базовий DN не є підвузлом глобального базового DN", + "Login filter does not contain %s placeholder." : "Фільтр логінів не містить заповнювача %s.", "Please login with the new password" : "Будь ласка, увійдіть з новим паролем", "LDAP User backend" : "Інтерфейс керування користувачами LDAP", "Your password will expire tomorrow." : "Дія вашого пароля завершується завтра.", "Your password will expire today." : "Дія вашого пароля завершується сьогодні.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Дія вашого пароля завершується через %n день.","Дія вашого пароля завершується через %n дні.","Дія вашого пароля завершується через %n днів.","Дія вашого пароля завершується через %n днів."], "LDAP/AD integration" : "Інтеграція LDAP/AD", + "LDAP Connection" : "Підключення LDAP", + "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Зв'язування не вдалося для цієї конфігурації LDAP: %s","Зв'язування не вдалося для %n конфігурацій LDAP: %s","Зв'язування не вдалося для %n конфігурацій LDAP: %s","Зв'язування не вдалося для %n конфігурацій LDAP: %s"], + "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Не вдалося виконати пошук для цієї конфігурації LDAP: %s","Не вдалося виконати пошук для %n конфігурацій LDAP: %s","Не вдалося виконати пошук для %n конфігурацій LDAP: %s","Не вдалося виконати пошук для %n конфігурацій LDAP: %s"], + "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Існує неактивна конфігурація LDAP: %s","Існує %n неактивних конфігурацій LDAP: %s","Існує %n неактивних конфігурацій LDAP: %s","Існує %n неактивних конфігурацій LDAP: %s"], + "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Прив'язка та пошук працює на налаштованому LDAP-з'єднанні (%s)","Прив'язка та пошук працює на всіх %n налаштованих LDAP-з'єднаннях (%s)","Прив'язка та пошук працює на всіх %n налаштованих LDAP-з'єднаннях (%s)","Прив'язка та пошук працює на всіх %n налаштованих LDAP-з'єднаннях (%s)"], "Invalid LDAP UUIDs" : "Недійсні LDAP UUID", "None found" : "Нічого не знайдено", "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Знайдено недійсні ідентифікатори UUID користувачів або груп LDAP. Перевірте налаштування \"Пропускати визначення UUID\" у розділі \"Для експертів\" налаштувань LDAP або виконайте команду \"occ ldap:update-uuid\" для їхнього оновлення.", @@ -204,6 +219,10 @@ OC.L10N.register( "User profile Headline will be set from the specified attribute" : "Заголовок в профілі користувача буде встановлено на основі вказаного атрибута", "Biography Field" : "Поле Біографія", "User profile Biography will be set from the specified attribute" : "Біографія в профілі користувача буде встановлена на основі вказаного атрибута", + "Birthdate Field" : "Поле Дата народження", + "User profile Date of birth will be set from the specified attribute" : "Профіль користувача Дата народження буде встановлена з вказаного атрибуту", + "Pronouns Field" : "Поле займенників", + "User profile Pronouns will be set from the specified attribute" : "Профіль користувача Займенники будуть встановлені з вказаного атрибуту", "Internal Username" : "Внутрішня Ім'я користувача", "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "За замовчуванням внутрішнє ім’я користувача буде створено з атрибута UUID. Це гарантує, що ім’я користувача є унікальним і символи не потрібно конвертувати. Внутрішнє ім’я користувача має обмеження щодо дозволених лише таких символів: [a-zA-Z0-9_.@-]. Інші символи замінюються відповідністю ASCII або просто пропускаються. При зіткненнях число буде додано/збільшено. Внутрішнє ім’я користувача використовується для внутрішньої ідентифікації користувача. Це також назва за замовчуванням для домашнього каталогу користувача. Це також частина віддалених URL-адрес, наприклад, для всіх служб DAV. За допомогою цього параметра поведінку за замовчуванням можна змінити. Зміни діятимуть лише для нещодавно зіставлених (доданих) користувачів LDAP. Залиште поле порожнім для поведінки за замовчуванням.", "Internal Username Attribute:" : "Внутрішня Ім'я користувача, Атрибут:", diff --git a/apps/user_ldap/l10n/uk.json b/apps/user_ldap/l10n/uk.json index cb7befd7271..b1837d05eca 100644 --- a/apps/user_ldap/l10n/uk.json +++ b/apps/user_ldap/l10n/uk.json @@ -4,10 +4,12 @@ "Invalid configuration: Anonymous binding is not allowed." : "Неправильна конфігурація. Анонімне приєднання не дозволено.", "Valid configuration, connection established!" : "Правильна конфігурація, з'єднання встановлено!", "Valid configuration, but binding failed. Please check the server settings and credentials." : "Правильна конфігурація, але приєднання не вдалося. Будь ласка, перевірте налаштування сервера та дані авторизації.", + "Invalid configuration: %s" : "Неправильна конфігурація: %s", "No action specified" : "Ніяких дій не вказано", "No configuration specified" : "Немає конфігурації", "No data specified" : "Немає даних", "Invalid data specified" : "Вказано неправильні дані", + "Could not set configuration %1$s to %2$s" : "Не вдалося встановити конфігурацію %1$s на %2$s", "Action does not exist" : "Дія не існує", "Renewing …" : "Оновлення...", "Very weak password" : "Дуже слабкий пароль", @@ -50,12 +52,25 @@ "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP/AD." : "Заповнювач \"%uid\" відсутній. Його буде замінено ім’ям для входу під час запиту LDAP/AD.", "Please provide a login name to test against" : "Будь ласка, введіть ім’я для входу для перевірки", "The group box was disabled, because the LDAP/AD server does not support memberOf." : "Поле групи було вимкнено, оскільки сервер LDAP/AD не підтримує memberOf.", + "Password change rejected. Hint: %s" : "Зміну пароля відхилено. Підказка: %s", + "Mandatory field \"%s\" left empty" : "Обов'язкове поле \"%s\" залишено порожнім", + "A password is given, but not an LDAP agent" : "Надається пароль, але не агент LDAP", + "No password is given for the user agent" : "Для користувача-агента пароль не задається", + "No LDAP base DN was given" : "Базовий DN LDAP не вказано", + "User base DN is not a subnode of global base DN" : "Базовий DN користувача не є підвузлом глобального базового DN", + "Group base DN is not a subnode of global base DN" : "Груповий базовий DN не є підвузлом глобального базового DN", + "Login filter does not contain %s placeholder." : "Фільтр логінів не містить заповнювача %s.", "Please login with the new password" : "Будь ласка, увійдіть з новим паролем", "LDAP User backend" : "Інтерфейс керування користувачами LDAP", "Your password will expire tomorrow." : "Дія вашого пароля завершується завтра.", "Your password will expire today." : "Дія вашого пароля завершується сьогодні.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Дія вашого пароля завершується через %n день.","Дія вашого пароля завершується через %n дні.","Дія вашого пароля завершується через %n днів.","Дія вашого пароля завершується через %n днів."], "LDAP/AD integration" : "Інтеграція LDAP/AD", + "LDAP Connection" : "Підключення LDAP", + "_Binding failed for this LDAP configuration: %s_::_Binding failed for %n LDAP configurations: %s_" : ["Зв'язування не вдалося для цієї конфігурації LDAP: %s","Зв'язування не вдалося для %n конфігурацій LDAP: %s","Зв'язування не вдалося для %n конфігурацій LDAP: %s","Зв'язування не вдалося для %n конфігурацій LDAP: %s"], + "_Searching failed for this LDAP configuration: %s_::_Searching failed for %n LDAP configurations: %s_" : ["Не вдалося виконати пошук для цієї конфігурації LDAP: %s","Не вдалося виконати пошук для %n конфігурацій LDAP: %s","Не вдалося виконати пошук для %n конфігурацій LDAP: %s","Не вдалося виконати пошук для %n конфігурацій LDAP: %s"], + "_There is an inactive LDAP configuration: %s_::_There are %n inactive LDAP configurations: %s_" : ["Існує неактивна конфігурація LDAP: %s","Існує %n неактивних конфігурацій LDAP: %s","Існує %n неактивних конфігурацій LDAP: %s","Існує %n неактивних конфігурацій LDAP: %s"], + "_Binding and searching works on the configured LDAP connection (%s)_::_Binding and searching works on all of the %n configured LDAP connections (%s)_" : ["Прив'язка та пошук працює на налаштованому LDAP-з'єднанні (%s)","Прив'язка та пошук працює на всіх %n налаштованих LDAP-з'єднаннях (%s)","Прив'язка та пошук працює на всіх %n налаштованих LDAP-з'єднаннях (%s)","Прив'язка та пошук працює на всіх %n налаштованих LDAP-з'єднаннях (%s)"], "Invalid LDAP UUIDs" : "Недійсні LDAP UUID", "None found" : "Нічого не знайдено", "Invalid UUIDs of LDAP accounts or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Знайдено недійсні ідентифікатори UUID користувачів або груп LDAP. Перевірте налаштування \"Пропускати визначення UUID\" у розділі \"Для експертів\" налаштувань LDAP або виконайте команду \"occ ldap:update-uuid\" для їхнього оновлення.", @@ -202,6 +217,10 @@ "User profile Headline will be set from the specified attribute" : "Заголовок в профілі користувача буде встановлено на основі вказаного атрибута", "Biography Field" : "Поле Біографія", "User profile Biography will be set from the specified attribute" : "Біографія в профілі користувача буде встановлена на основі вказаного атрибута", + "Birthdate Field" : "Поле Дата народження", + "User profile Date of birth will be set from the specified attribute" : "Профіль користувача Дата народження буде встановлена з вказаного атрибуту", + "Pronouns Field" : "Поле займенників", + "User profile Pronouns will be set from the specified attribute" : "Профіль користувача Займенники будуть встановлені з вказаного атрибуту", "Internal Username" : "Внутрішня Ім'я користувача", "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "За замовчуванням внутрішнє ім’я користувача буде створено з атрибута UUID. Це гарантує, що ім’я користувача є унікальним і символи не потрібно конвертувати. Внутрішнє ім’я користувача має обмеження щодо дозволених лише таких символів: [a-zA-Z0-9_.@-]. Інші символи замінюються відповідністю ASCII або просто пропускаються. При зіткненнях число буде додано/збільшено. Внутрішнє ім’я користувача використовується для внутрішньої ідентифікації користувача. Це також назва за замовчуванням для домашнього каталогу користувача. Це також частина віддалених URL-адрес, наприклад, для всіх служб DAV. За допомогою цього параметра поведінку за замовчуванням можна змінити. Зміни діятимуть лише для нещодавно зіставлених (доданих) користувачів LDAP. Залиште поле порожнім для поведінки за замовчуванням.", "Internal Username Attribute:" : "Внутрішня Ім'я користувача, Атрибут:", diff --git a/apps/user_status/l10n/af.js b/apps/user_status/l10n/af.js index edf3710be39..8a4bdf0be20 100644 --- a/apps/user_status/l10n/af.js +++ b/apps/user_status/l10n/af.js @@ -12,7 +12,6 @@ OC.L10N.register( "Clear status after" : "Wis status na", "There was an error saving the status" : "Daar was ’n fout toe status bewaar is", "There was an error clearing the status" : "Daar was ’n fout toe die status gewis is", - "Set status" : "Stel status", "Online status" : "Aanlyn status", "Status message" : "Statusboodskap", "Clear status message" : "Wis statusboodskap", @@ -25,6 +24,7 @@ OC.L10N.register( "Do not disturb" : "Moenie pla nie", "Invisible" : "Onsigbaar", "Offline" : "Vanlyn", + "Set status" : "Stel status", "There was an error saving the new status" : "Daar was ’n fout toe nuwe status bewaar is", "30 minutes" : "30 minute", "1 hour" : "1 uur", diff --git a/apps/user_status/l10n/af.json b/apps/user_status/l10n/af.json index 36ef75924e1..0a92dd9ab7d 100644 --- a/apps/user_status/l10n/af.json +++ b/apps/user_status/l10n/af.json @@ -10,7 +10,6 @@ "Clear status after" : "Wis status na", "There was an error saving the status" : "Daar was ’n fout toe status bewaar is", "There was an error clearing the status" : "Daar was ’n fout toe die status gewis is", - "Set status" : "Stel status", "Online status" : "Aanlyn status", "Status message" : "Statusboodskap", "Clear status message" : "Wis statusboodskap", @@ -23,6 +22,7 @@ "Do not disturb" : "Moenie pla nie", "Invisible" : "Onsigbaar", "Offline" : "Vanlyn", + "Set status" : "Stel status", "There was an error saving the new status" : "Daar was ’n fout toe nuwe status bewaar is", "30 minutes" : "30 minute", "1 hour" : "1 uur", diff --git a/apps/user_status/l10n/ar.js b/apps/user_status/l10n/ar.js index bc6043e92ea..9557ff74546 100644 --- a/apps/user_status/l10n/ar.js +++ b/apps/user_status/l10n/ar.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "حدث خطأ اثناء حفظ الحالة", "There was an error clearing the status" : "حدث خطأ اثناء حذف الحالة", "There was an error reverting the status" : "حدث خطأ أثناء استرجاع الحالة", - "Set status" : "تعيين الحالة", "Online status" : "حالة الاتصال", "Status message" : "رسالة الحالة", "Set absence period" : "تعيين فترة التغيّب", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "عدم الازعاج", "Invisible" : "عدم الظهور", "Offline" : "غير متصل", + "Set status" : "تعيين الحالة", "There was an error saving the new status" : "حدث خطأ اثناء حفظ الحالة الجديدة", "30 minutes" : "30 دقيقة", "1 hour" : "1 ساعة", "4 hours" : "4 ساعات", + "Busy" : "مشغول", "Mute all notifications" : "عدم إظهار جميع التنبيهات", "Appear offline" : "الحالة غير متصل" }, diff --git a/apps/user_status/l10n/ar.json b/apps/user_status/l10n/ar.json index 2d23b4044c9..79c8c2d184c 100644 --- a/apps/user_status/l10n/ar.json +++ b/apps/user_status/l10n/ar.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "حدث خطأ اثناء حفظ الحالة", "There was an error clearing the status" : "حدث خطأ اثناء حذف الحالة", "There was an error reverting the status" : "حدث خطأ أثناء استرجاع الحالة", - "Set status" : "تعيين الحالة", "Online status" : "حالة الاتصال", "Status message" : "رسالة الحالة", "Set absence period" : "تعيين فترة التغيّب", @@ -37,10 +36,12 @@ "Do not disturb" : "عدم الازعاج", "Invisible" : "عدم الظهور", "Offline" : "غير متصل", + "Set status" : "تعيين الحالة", "There was an error saving the new status" : "حدث خطأ اثناء حفظ الحالة الجديدة", "30 minutes" : "30 دقيقة", "1 hour" : "1 ساعة", "4 hours" : "4 ساعات", + "Busy" : "مشغول", "Mute all notifications" : "عدم إظهار جميع التنبيهات", "Appear offline" : "الحالة غير متصل" },"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;" diff --git a/apps/user_status/l10n/ast.js b/apps/user_status/l10n/ast.js index b1e8f149c78..ac09b5ac733 100644 --- a/apps/user_status/l10n/ast.js +++ b/apps/user_status/l10n/ast.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Hebo un error al guardar l'estáu", "There was an error clearing the status" : "Hebo un error al borrar l'estáu", "There was an error reverting the status" : "Hebo un error al recuperar l'estáu anterior", - "Set status" : "Afitar l'estáu", "Online status" : "Estáu en llinia", "Status message" : "Mensaxe del estáu", "Your status was set automatically" : "L'estáu afitóse automáticamente", @@ -37,10 +36,12 @@ OC.L10N.register( "Do not disturb" : "Nun molestar", "Invisible" : "Invisible", "Offline" : "Desconectáu", + "Set status" : "Afitar l'estáu", "There was an error saving the new status" : "Hebo un error al guardar l'estáu nuevu", "30 minutes" : "30 minutos", "1 hour" : "1 hora", "4 hours" : "4 hores", + "Busy" : "Ocupáu", "Mute all notifications" : "Desactivar tolos avisos", "Appear offline" : "Apaecer desconectáu" }, diff --git a/apps/user_status/l10n/ast.json b/apps/user_status/l10n/ast.json index 4c2d63594ac..0a6e2ee9681 100644 --- a/apps/user_status/l10n/ast.json +++ b/apps/user_status/l10n/ast.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Hebo un error al guardar l'estáu", "There was an error clearing the status" : "Hebo un error al borrar l'estáu", "There was an error reverting the status" : "Hebo un error al recuperar l'estáu anterior", - "Set status" : "Afitar l'estáu", "Online status" : "Estáu en llinia", "Status message" : "Mensaxe del estáu", "Your status was set automatically" : "L'estáu afitóse automáticamente", @@ -35,10 +34,12 @@ "Do not disturb" : "Nun molestar", "Invisible" : "Invisible", "Offline" : "Desconectáu", + "Set status" : "Afitar l'estáu", "There was an error saving the new status" : "Hebo un error al guardar l'estáu nuevu", "30 minutes" : "30 minutos", "1 hour" : "1 hora", "4 hours" : "4 hores", + "Busy" : "Ocupáu", "Mute all notifications" : "Desactivar tolos avisos", "Appear offline" : "Apaecer desconectáu" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/bg.js b/apps/user_status/l10n/bg.js index c0cca7e6c43..e799fa1f212 100644 --- a/apps/user_status/l10n/bg.js +++ b/apps/user_status/l10n/bg.js @@ -21,7 +21,6 @@ OC.L10N.register( "There was an error saving the status" : "Възникна грешка при запазване на състоянието", "There was an error clearing the status" : "Възникна грешка при изчистване на състоянието", "There was an error reverting the status" : "Имаше грешка при връщане на състоянието", - "Set status" : "Задаване на състояние", "Online status" : "Състояние", "Status message" : "Съобщение за състояние", "Set absence period" : "Задай период на отсъствие", @@ -37,10 +36,12 @@ OC.L10N.register( "Do not disturb" : "Не безпокойте", "Invisible" : "Невидим", "Offline" : "Офлайн", + "Set status" : "Задаване на състояние", "There was an error saving the new status" : "Възникна грешка при запазване на новото състояние", "30 minutes" : "30 минути", "1 hour" : "1 час", "4 hours" : "4 чàса", + "Busy" : "Зает", "Mute all notifications" : "Заглушаване на всички известия", "Appear offline" : "Показване като офлайн" }, diff --git a/apps/user_status/l10n/bg.json b/apps/user_status/l10n/bg.json index 0909badbed2..639aab4a411 100644 --- a/apps/user_status/l10n/bg.json +++ b/apps/user_status/l10n/bg.json @@ -19,7 +19,6 @@ "There was an error saving the status" : "Възникна грешка при запазване на състоянието", "There was an error clearing the status" : "Възникна грешка при изчистване на състоянието", "There was an error reverting the status" : "Имаше грешка при връщане на състоянието", - "Set status" : "Задаване на състояние", "Online status" : "Състояние", "Status message" : "Съобщение за състояние", "Set absence period" : "Задай период на отсъствие", @@ -35,10 +34,12 @@ "Do not disturb" : "Не безпокойте", "Invisible" : "Невидим", "Offline" : "Офлайн", + "Set status" : "Задаване на състояние", "There was an error saving the new status" : "Възникна грешка при запазване на новото състояние", "30 minutes" : "30 минути", "1 hour" : "1 час", "4 hours" : "4 чàса", + "Busy" : "Зает", "Mute all notifications" : "Заглушаване на всички известия", "Appear offline" : "Показване като офлайн" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/ca.js b/apps/user_status/l10n/ca.js index c0c848c4d6f..8fa53f7f41b 100644 --- a/apps/user_status/l10n/ca.js +++ b/apps/user_status/l10n/ca.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "S'ha produït un error en desar l'estat", "There was an error clearing the status" : "S'ha produït un error en esborrar l'estat", "There was an error reverting the status" : "S'ha produït un error en recuperar l'estat anterior", - "Set status" : "Indica l'estat", "Online status" : "Estat en línia", "Status message" : "Missatge d'estat", "Set absence period" : "Establir període d'absència", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "No molesteu", "Invisible" : "Invisible", "Offline" : "Fora de línia", + "Set status" : "Indica l'estat", "There was an error saving the new status" : "S'ha produït un error en desar l'estat nou", "30 minutes" : "30 minuts", "1 hour" : "1 hora", "4 hours" : "4 hores", + "Busy" : "Ocupat", "Mute all notifications" : "Silencieu totes les notificacions", "Appear offline" : "Apareixeu fora de línia" }, diff --git a/apps/user_status/l10n/ca.json b/apps/user_status/l10n/ca.json index 874a689c836..c40c658b992 100644 --- a/apps/user_status/l10n/ca.json +++ b/apps/user_status/l10n/ca.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "S'ha produït un error en desar l'estat", "There was an error clearing the status" : "S'ha produït un error en esborrar l'estat", "There was an error reverting the status" : "S'ha produït un error en recuperar l'estat anterior", - "Set status" : "Indica l'estat", "Online status" : "Estat en línia", "Status message" : "Missatge d'estat", "Set absence period" : "Establir període d'absència", @@ -37,10 +36,12 @@ "Do not disturb" : "No molesteu", "Invisible" : "Invisible", "Offline" : "Fora de línia", + "Set status" : "Indica l'estat", "There was an error saving the new status" : "S'ha produït un error en desar l'estat nou", "30 minutes" : "30 minuts", "1 hour" : "1 hora", "4 hours" : "4 hores", + "Busy" : "Ocupat", "Mute all notifications" : "Silencieu totes les notificacions", "Appear offline" : "Apareixeu fora de línia" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/cs.js b/apps/user_status/l10n/cs.js index e02647b5728..9d21e89f539 100644 --- a/apps/user_status/l10n/cs.js +++ b/apps/user_status/l10n/cs.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Došlo k chybě při ukládání stavu", "There was an error clearing the status" : "Při čištění stavu došlo k chybě", "There was an error reverting the status" : "Při vracení stavu nazpět došlo k chybě", - "Set status" : "Nastavit stav", "Online status" : "Stav online", "Status message" : "Stavová zpráva", "Set absence period" : "Nastavit období nepřítomnosti", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Nerušit", "Invisible" : "Není vidět", "Offline" : "Offline", + "Set status" : "Nastavit stav", "There was an error saving the new status" : "Při ukládání nového stavu došlo k chybě", "30 minutes" : "30 minut", "1 hour" : "1 hodina", "4 hours" : "4 hodiny", + "Busy" : "Zaneprázdněn(a)", "Mute all notifications" : "Ztlumit veškerá upozornění", "Appear offline" : "Jevit se offline" }, diff --git a/apps/user_status/l10n/cs.json b/apps/user_status/l10n/cs.json index 11542f48ebe..c6c875d3454 100644 --- a/apps/user_status/l10n/cs.json +++ b/apps/user_status/l10n/cs.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Došlo k chybě při ukládání stavu", "There was an error clearing the status" : "Při čištění stavu došlo k chybě", "There was an error reverting the status" : "Při vracení stavu nazpět došlo k chybě", - "Set status" : "Nastavit stav", "Online status" : "Stav online", "Status message" : "Stavová zpráva", "Set absence period" : "Nastavit období nepřítomnosti", @@ -37,10 +36,12 @@ "Do not disturb" : "Nerušit", "Invisible" : "Není vidět", "Offline" : "Offline", + "Set status" : "Nastavit stav", "There was an error saving the new status" : "Při ukládání nového stavu došlo k chybě", "30 minutes" : "30 minut", "1 hour" : "1 hodina", "4 hours" : "4 hodiny", + "Busy" : "Zaneprázdněn(a)", "Mute all notifications" : "Ztlumit veškerá upozornění", "Appear offline" : "Jevit se offline" },"pluralForm" :"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/user_status/l10n/da.js b/apps/user_status/l10n/da.js index 3b63378803d..43b4560d086 100644 --- a/apps/user_status/l10n/da.js +++ b/apps/user_status/l10n/da.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Der opstod en fejl ved lagring af status", "There was an error clearing the status" : "Der opstod en fejl ved rydning af status", "There was an error reverting the status" : "Der opstod en fejl ved indstillingen af status", - "Set status" : "Sæt status", "Online status" : "Online status", "Status message" : "Statusbesked", "Set absence period" : "Indstil fraværs periode", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Forstyr ikke", "Invisible" : "Usynlig", "Offline" : "Offline", + "Set status" : "Sæt status", "There was an error saving the new status" : "Der opstod en fejl ved lagring af den nye status", "30 minutes" : "30 minutter", "1 hour" : "1 time", "4 hours" : "4 timer", + "Busy" : "Optaget", "Mute all notifications" : "Vis ikke notifikationer", "Appear offline" : "Er offline" }, diff --git a/apps/user_status/l10n/da.json b/apps/user_status/l10n/da.json index a733734c4ec..67708311d7b 100644 --- a/apps/user_status/l10n/da.json +++ b/apps/user_status/l10n/da.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Der opstod en fejl ved lagring af status", "There was an error clearing the status" : "Der opstod en fejl ved rydning af status", "There was an error reverting the status" : "Der opstod en fejl ved indstillingen af status", - "Set status" : "Sæt status", "Online status" : "Online status", "Status message" : "Statusbesked", "Set absence period" : "Indstil fraværs periode", @@ -37,10 +36,12 @@ "Do not disturb" : "Forstyr ikke", "Invisible" : "Usynlig", "Offline" : "Offline", + "Set status" : "Sæt status", "There was an error saving the new status" : "Der opstod en fejl ved lagring af den nye status", "30 minutes" : "30 minutter", "1 hour" : "1 time", "4 hours" : "4 timer", + "Busy" : "Optaget", "Mute all notifications" : "Vis ikke notifikationer", "Appear offline" : "Er offline" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/de.js b/apps/user_status/l10n/de.js index 5b97fef09ff..7d8d91af4f0 100644 --- a/apps/user_status/l10n/de.js +++ b/apps/user_status/l10n/de.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Es gab einen Fehler beim Speichern des Status", "There was an error clearing the status" : "Es gab einen Fehler beim Löschen des Status", "There was an error reverting the status" : "Es ist ein Fehler beim Zurücksetzen des Status aufgetreten", - "Set status" : "Status setzen", "Online status" : "Online-Status", "Status message" : "Statusnachricht", "Set absence period" : "Abwesenheitszeitraum festlegen", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Bitte nicht stören", "Invisible" : "Unsichtbar", "Offline" : "Offline", + "Set status" : "Status setzen", "There was an error saving the new status" : "Es gab einen Fehler beim Speichern des neuen Status", "30 minutes" : "30 Minuten", "1 hour" : "1 Stunde", "4 hours" : "4 Stunden", + "Busy" : "Beschäftigt", "Mute all notifications" : "Alle Benachrichtigungen stummschalten", "Appear offline" : "Offline erscheinen" }, diff --git a/apps/user_status/l10n/de.json b/apps/user_status/l10n/de.json index e5e544e6e24..770fd27203d 100644 --- a/apps/user_status/l10n/de.json +++ b/apps/user_status/l10n/de.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Es gab einen Fehler beim Speichern des Status", "There was an error clearing the status" : "Es gab einen Fehler beim Löschen des Status", "There was an error reverting the status" : "Es ist ein Fehler beim Zurücksetzen des Status aufgetreten", - "Set status" : "Status setzen", "Online status" : "Online-Status", "Status message" : "Statusnachricht", "Set absence period" : "Abwesenheitszeitraum festlegen", @@ -37,10 +36,12 @@ "Do not disturb" : "Bitte nicht stören", "Invisible" : "Unsichtbar", "Offline" : "Offline", + "Set status" : "Status setzen", "There was an error saving the new status" : "Es gab einen Fehler beim Speichern des neuen Status", "30 minutes" : "30 Minuten", "1 hour" : "1 Stunde", "4 hours" : "4 Stunden", + "Busy" : "Beschäftigt", "Mute all notifications" : "Alle Benachrichtigungen stummschalten", "Appear offline" : "Offline erscheinen" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/de_DE.js b/apps/user_status/l10n/de_DE.js index f8eec006289..455f2ce834f 100644 --- a/apps/user_status/l10n/de_DE.js +++ b/apps/user_status/l10n/de_DE.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Es gab einen Fehler beim Speichern des Status", "There was an error clearing the status" : "Es gab einen Fehler beim Löschen des Status", "There was an error reverting the status" : "Es ist ein Fehler beim Zurücksetzen des Status aufgetreten", - "Set status" : "Status setzen", "Online status" : "Online-Status", "Status message" : "Statusnachricht", "Set absence period" : "Abwesenheitszeitraum festlegen", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Nicht stören", "Invisible" : "Unsichtbar", "Offline" : "Offline", + "Set status" : "Status setzen", "There was an error saving the new status" : "Es gab einen Fehler beim Speichern des neuen Status", "30 minutes" : "30 Minuten", "1 hour" : "1 Stunde", "4 hours" : "4 Stunden", + "Busy" : "Beschäftigt", "Mute all notifications" : "Alle Benachrichtigungen stummschalten", "Appear offline" : "Offline erscheinen" }, diff --git a/apps/user_status/l10n/de_DE.json b/apps/user_status/l10n/de_DE.json index 066692000c5..8620038dd6f 100644 --- a/apps/user_status/l10n/de_DE.json +++ b/apps/user_status/l10n/de_DE.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Es gab einen Fehler beim Speichern des Status", "There was an error clearing the status" : "Es gab einen Fehler beim Löschen des Status", "There was an error reverting the status" : "Es ist ein Fehler beim Zurücksetzen des Status aufgetreten", - "Set status" : "Status setzen", "Online status" : "Online-Status", "Status message" : "Statusnachricht", "Set absence period" : "Abwesenheitszeitraum festlegen", @@ -37,10 +36,12 @@ "Do not disturb" : "Nicht stören", "Invisible" : "Unsichtbar", "Offline" : "Offline", + "Set status" : "Status setzen", "There was an error saving the new status" : "Es gab einen Fehler beim Speichern des neuen Status", "30 minutes" : "30 Minuten", "1 hour" : "1 Stunde", "4 hours" : "4 Stunden", + "Busy" : "Beschäftigt", "Mute all notifications" : "Alle Benachrichtigungen stummschalten", "Appear offline" : "Offline erscheinen" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/el.js b/apps/user_status/l10n/el.js index e84677b3897..0818d00d791 100644 --- a/apps/user_status/l10n/el.js +++ b/apps/user_status/l10n/el.js @@ -15,7 +15,6 @@ OC.L10N.register( "What is your status?" : "Ποια είναι η κατάστασή σας;", "There was an error saving the status" : "Παρουσιάστηκε σφάλμα κατά την αποθήκευση της κατάστασης", "There was an error clearing the status" : "Παρουσιάστηκε σφάλμα κατά την εκκαθάριση της κατάστασης", - "Set status" : "Ορισμός κατάστασης", "Online status" : "Κατάσταση σε σύνδεση", "Status message" : "Μήνυμα κατάστασης", "Clear status message" : "Εκκαθάριση μηνύματος κατάστασης", @@ -28,10 +27,12 @@ OC.L10N.register( "Do not disturb" : "Μην ενοχλείτε", "Invisible" : "Αόρατος", "Offline" : "Εκτός σύνδεσης", + "Set status" : "Ορισμός κατάστασης", "There was an error saving the new status" : "Παρουσιάστηκε σφάλμα κατά την αποθήκευση της νέας κατάστασης", "30 minutes" : "30 λεπτά", "1 hour" : "1 ώρα", "4 hours" : "4 ώρες", + "Busy" : "Απασχολημένος", "Mute all notifications" : "Σίγαση όλων των ειδοποιήσεων", "Appear offline" : "Εμφάνιση εκτός σύνδεσης" }, diff --git a/apps/user_status/l10n/el.json b/apps/user_status/l10n/el.json index 870d5ec13c5..bef6486de08 100644 --- a/apps/user_status/l10n/el.json +++ b/apps/user_status/l10n/el.json @@ -13,7 +13,6 @@ "What is your status?" : "Ποια είναι η κατάστασή σας;", "There was an error saving the status" : "Παρουσιάστηκε σφάλμα κατά την αποθήκευση της κατάστασης", "There was an error clearing the status" : "Παρουσιάστηκε σφάλμα κατά την εκκαθάριση της κατάστασης", - "Set status" : "Ορισμός κατάστασης", "Online status" : "Κατάσταση σε σύνδεση", "Status message" : "Μήνυμα κατάστασης", "Clear status message" : "Εκκαθάριση μηνύματος κατάστασης", @@ -26,10 +25,12 @@ "Do not disturb" : "Μην ενοχλείτε", "Invisible" : "Αόρατος", "Offline" : "Εκτός σύνδεσης", + "Set status" : "Ορισμός κατάστασης", "There was an error saving the new status" : "Παρουσιάστηκε σφάλμα κατά την αποθήκευση της νέας κατάστασης", "30 minutes" : "30 λεπτά", "1 hour" : "1 ώρα", "4 hours" : "4 ώρες", + "Busy" : "Απασχολημένος", "Mute all notifications" : "Σίγαση όλων των ειδοποιήσεων", "Appear offline" : "Εμφάνιση εκτός σύνδεσης" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/en_GB.js b/apps/user_status/l10n/en_GB.js index 3ee6e2b58c3..66e6f17618c 100644 --- a/apps/user_status/l10n/en_GB.js +++ b/apps/user_status/l10n/en_GB.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "There was an error saving the status", "There was an error clearing the status" : "There was an error clearing the status", "There was an error reverting the status" : "There was an error reverting the status", - "Set status" : "Set status", "Online status" : "Online status", "Status message" : "Status message", "Set absence period" : "Set absence period", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Do not disturb", "Invisible" : "Invisible", "Offline" : "Offline", + "Set status" : "Set status", "There was an error saving the new status" : "There was an error saving the new status", "30 minutes" : "30 minutes", "1 hour" : "1 hour", "4 hours" : "4 hours", + "Busy" : "Busy", "Mute all notifications" : "Mute all notifications", "Appear offline" : "Appear offline" }, diff --git a/apps/user_status/l10n/en_GB.json b/apps/user_status/l10n/en_GB.json index 3e4f9f525ed..a668db7d18b 100644 --- a/apps/user_status/l10n/en_GB.json +++ b/apps/user_status/l10n/en_GB.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "There was an error saving the status", "There was an error clearing the status" : "There was an error clearing the status", "There was an error reverting the status" : "There was an error reverting the status", - "Set status" : "Set status", "Online status" : "Online status", "Status message" : "Status message", "Set absence period" : "Set absence period", @@ -37,10 +36,12 @@ "Do not disturb" : "Do not disturb", "Invisible" : "Invisible", "Offline" : "Offline", + "Set status" : "Set status", "There was an error saving the new status" : "There was an error saving the new status", "30 minutes" : "30 minutes", "1 hour" : "1 hour", "4 hours" : "4 hours", + "Busy" : "Busy", "Mute all notifications" : "Mute all notifications", "Appear offline" : "Appear offline" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/es.js b/apps/user_status/l10n/es.js index 201da02656b..d76dd2511f5 100644 --- a/apps/user_status/l10n/es.js +++ b/apps/user_status/l10n/es.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Ha habido un error al guardar el estado", "There was an error clearing the status" : "Ha habido un error al eliminar el estado", "There was an error reverting the status" : "Ocurrió un error al revertir el estado", - "Set status" : "Configurar estado", "Online status" : "Estado en línea", "Status message" : "Mensaje de estado", "Your status was set automatically" : "Su estado fue definido automáticamente", @@ -37,10 +36,12 @@ OC.L10N.register( "Do not disturb" : "No molestar", "Invisible" : "Invisible", "Offline" : "Sin conexión", + "Set status" : "Configurar estado", "There was an error saving the new status" : "Ha habido un error al guardar el nuevo estado", "30 minutes" : "30 minutos", "1 hour" : "1 hora", "4 hours" : "4 horas", + "Busy" : "Ocupado", "Mute all notifications" : "Silenciar todas las notificaciones", "Appear offline" : "Aparecer sin conexión" }, diff --git a/apps/user_status/l10n/es.json b/apps/user_status/l10n/es.json index 9bf78bf6ee2..d743ee8a033 100644 --- a/apps/user_status/l10n/es.json +++ b/apps/user_status/l10n/es.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Ha habido un error al guardar el estado", "There was an error clearing the status" : "Ha habido un error al eliminar el estado", "There was an error reverting the status" : "Ocurrió un error al revertir el estado", - "Set status" : "Configurar estado", "Online status" : "Estado en línea", "Status message" : "Mensaje de estado", "Your status was set automatically" : "Su estado fue definido automáticamente", @@ -35,10 +34,12 @@ "Do not disturb" : "No molestar", "Invisible" : "Invisible", "Offline" : "Sin conexión", + "Set status" : "Configurar estado", "There was an error saving the new status" : "Ha habido un error al guardar el nuevo estado", "30 minutes" : "30 minutos", "1 hour" : "1 hora", "4 hours" : "4 horas", + "Busy" : "Ocupado", "Mute all notifications" : "Silenciar todas las notificaciones", "Appear offline" : "Aparecer sin conexión" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" diff --git a/apps/user_status/l10n/es_EC.js b/apps/user_status/l10n/es_EC.js index cd367520d2f..6500afa7c5a 100644 --- a/apps/user_status/l10n/es_EC.js +++ b/apps/user_status/l10n/es_EC.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Hubo un error al guardar el estado", "There was an error clearing the status" : "Hubo un error al borrar el estado", "There was an error reverting the status" : "Hubo un error al revertir el estado", - "Set status" : "Establecer estado", "Online status" : "Estado en línea", "Status message" : "Mensaje de estado", "Your status was set automatically" : "Tu estado se estableció automáticamente", @@ -37,10 +36,12 @@ OC.L10N.register( "Do not disturb" : "No molestar", "Invisible" : "Invisible", "Offline" : "Sin conexión", + "Set status" : "Establecer estado", "There was an error saving the new status" : "Hubo un error al guardar el nuevo estado", "30 minutes" : "30 minutos", "1 hour" : "1 hora", "4 hours" : "4 horas", + "Busy" : "Ocupado", "Mute all notifications" : "Silenciar todas las notificaciones", "Appear offline" : "Aparecer como desconectado" }, diff --git a/apps/user_status/l10n/es_EC.json b/apps/user_status/l10n/es_EC.json index 346f0c21db8..4d6f3df54ec 100644 --- a/apps/user_status/l10n/es_EC.json +++ b/apps/user_status/l10n/es_EC.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Hubo un error al guardar el estado", "There was an error clearing the status" : "Hubo un error al borrar el estado", "There was an error reverting the status" : "Hubo un error al revertir el estado", - "Set status" : "Establecer estado", "Online status" : "Estado en línea", "Status message" : "Mensaje de estado", "Your status was set automatically" : "Tu estado se estableció automáticamente", @@ -35,10 +34,12 @@ "Do not disturb" : "No molestar", "Invisible" : "Invisible", "Offline" : "Sin conexión", + "Set status" : "Establecer estado", "There was an error saving the new status" : "Hubo un error al guardar el nuevo estado", "30 minutes" : "30 minutos", "1 hour" : "1 hora", "4 hours" : "4 horas", + "Busy" : "Ocupado", "Mute all notifications" : "Silenciar todas las notificaciones", "Appear offline" : "Aparecer como desconectado" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" diff --git a/apps/user_status/l10n/es_MX.js b/apps/user_status/l10n/es_MX.js index a5651509d94..1b5aae7f116 100644 --- a/apps/user_status/l10n/es_MX.js +++ b/apps/user_status/l10n/es_MX.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Hubo un error al guardar el estado", "There was an error clearing the status" : "Hubo un error al limpiar el estado", "There was an error reverting the status" : "Hubo un error al revertir el estado", - "Set status" : "Establecer estado", "Online status" : "Estado en línea", "Status message" : "Mensaje de estado", "Your status was set automatically" : "Su estado se estableció automáticamente", @@ -37,10 +36,12 @@ OC.L10N.register( "Do not disturb" : "No molestar", "Invisible" : "Invisible", "Offline" : "Sin conexión", + "Set status" : "Establecer estado", "There was an error saving the new status" : "Hubo un error al guardar el nuevo estado", "30 minutes" : "30 minutos", "1 hour" : "1 hora", "4 hours" : "4 horas", + "Busy" : "Ocupado", "Mute all notifications" : "Silenciar todas las notificaciones", "Appear offline" : "Aparecer como desconectado" }, diff --git a/apps/user_status/l10n/es_MX.json b/apps/user_status/l10n/es_MX.json index c896ccd040c..26f418adc7f 100644 --- a/apps/user_status/l10n/es_MX.json +++ b/apps/user_status/l10n/es_MX.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Hubo un error al guardar el estado", "There was an error clearing the status" : "Hubo un error al limpiar el estado", "There was an error reverting the status" : "Hubo un error al revertir el estado", - "Set status" : "Establecer estado", "Online status" : "Estado en línea", "Status message" : "Mensaje de estado", "Your status was set automatically" : "Su estado se estableció automáticamente", @@ -35,10 +34,12 @@ "Do not disturb" : "No molestar", "Invisible" : "Invisible", "Offline" : "Sin conexión", + "Set status" : "Establecer estado", "There was an error saving the new status" : "Hubo un error al guardar el nuevo estado", "30 minutes" : "30 minutos", "1 hour" : "1 hora", "4 hours" : "4 horas", + "Busy" : "Ocupado", "Mute all notifications" : "Silenciar todas las notificaciones", "Appear offline" : "Aparecer como desconectado" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" diff --git a/apps/user_status/l10n/et_EE.js b/apps/user_status/l10n/et_EE.js index e2e0f32b3cb..72bcdc339c7 100644 --- a/apps/user_status/l10n/et_EE.js +++ b/apps/user_status/l10n/et_EE.js @@ -23,7 +23,6 @@ OC.L10N.register( "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", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Ära sega", "Invisible" : "Nähtamatu", "Offline" : "Pole võrgus", + "Set status" : "Määra olek", "There was an error saving the new status" : "Uue oleku salvestamisel esines viga", "30 minutes" : "30 minutit", "1 hour" : "1 tundi", "4 hours" : "4 tundi", + "Busy" : "Hõivatud", "Mute all notifications" : "Sellega summutad teavitused", "Appear offline" : "Sellega paistad olema võrgust väljas" }, diff --git a/apps/user_status/l10n/et_EE.json b/apps/user_status/l10n/et_EE.json index 7443d789cb1..3a8227e76e1 100644 --- a/apps/user_status/l10n/et_EE.json +++ b/apps/user_status/l10n/et_EE.json @@ -21,7 +21,6 @@ "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", @@ -37,10 +36,12 @@ "Do not disturb" : "Ära sega", "Invisible" : "Nähtamatu", "Offline" : "Pole võrgus", + "Set status" : "Määra olek", "There was an error saving the new status" : "Uue oleku salvestamisel esines viga", "30 minutes" : "30 minutit", "1 hour" : "1 tundi", "4 hours" : "4 tundi", + "Busy" : "Hõivatud", "Mute all notifications" : "Sellega summutad teavitused", "Appear offline" : "Sellega paistad olema võrgust väljas" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/eu.js b/apps/user_status/l10n/eu.js index d801ea0db40..b10e38ec09e 100644 --- a/apps/user_status/l10n/eu.js +++ b/apps/user_status/l10n/eu.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Errore bat gertatu da egoera gordetzean", "There was an error clearing the status" : "Errore bat gertatu da egoera garbitzean", "There was an error reverting the status" : "Errore bat gertatu da egoera berrezartzean", - "Set status" : "Ezarri egoera", "Online status" : "Lineako egoera", "Status message" : "Egoera-mezua", "Set absence period" : "Ezarri absentzia aldia", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Ez molestatu", "Invisible" : "Ikusezina", "Offline" : "Lineaz kanpo", + "Set status" : "Ezarri egoera", "There was an error saving the new status" : "Errore bat gertatu da egoera berria gordetzean", "30 minutes" : "30 minutu", "1 hour" : "Ordu 1", "4 hours" : "4 ordu", + "Busy" : "Lanpetua", "Mute all notifications" : "Mututu jakinarazpen guztiak", "Appear offline" : "Lineaz kanpo agertu" }, diff --git a/apps/user_status/l10n/eu.json b/apps/user_status/l10n/eu.json index 0117be8a296..3362581d9f5 100644 --- a/apps/user_status/l10n/eu.json +++ b/apps/user_status/l10n/eu.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Errore bat gertatu da egoera gordetzean", "There was an error clearing the status" : "Errore bat gertatu da egoera garbitzean", "There was an error reverting the status" : "Errore bat gertatu da egoera berrezartzean", - "Set status" : "Ezarri egoera", "Online status" : "Lineako egoera", "Status message" : "Egoera-mezua", "Set absence period" : "Ezarri absentzia aldia", @@ -37,10 +36,12 @@ "Do not disturb" : "Ez molestatu", "Invisible" : "Ikusezina", "Offline" : "Lineaz kanpo", + "Set status" : "Ezarri egoera", "There was an error saving the new status" : "Errore bat gertatu da egoera berria gordetzean", "30 minutes" : "30 minutu", "1 hour" : "Ordu 1", "4 hours" : "4 ordu", + "Busy" : "Lanpetua", "Mute all notifications" : "Mututu jakinarazpen guztiak", "Appear offline" : "Lineaz kanpo agertu" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/fa.js b/apps/user_status/l10n/fa.js index 195668e956f..e3e600eb696 100644 --- a/apps/user_status/l10n/fa.js +++ b/apps/user_status/l10n/fa.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "مشکلی در ذخیره سازی وضعیت پیش آمده", "There was an error clearing the status" : "مشکلی در پاک کردن وضعیت پیش آمده", "There was an error reverting the status" : "There was an error reverting the status", - "Set status" : "تنظیم وضعیت", "Online status" : "وضعیت آنلاین", "Status message" : "پیغام وضعیت", "Your status was set automatically" : "Your status was set automatically", @@ -37,10 +36,12 @@ OC.L10N.register( "Do not disturb" : "مزاحم نشوید", "Invisible" : "غیر قابل مشاهده", "Offline" : "آفلاین", + "Set status" : "تنظیم وضعیت", "There was an error saving the new status" : "مشکلی در ذخیره سازی وضعیت جدید پیش آمده", "30 minutes" : "۳۰ دقیقه", "1 hour" : "۱ ساعت", "4 hours" : "۴ ساعت", + "Busy" : "مشغول", "Mute all notifications" : "خاموش کردن همه اعلانات", "Appear offline" : "نمایش آفلاین" }, diff --git a/apps/user_status/l10n/fa.json b/apps/user_status/l10n/fa.json index e37f240018d..ab997e0a8a7 100644 --- a/apps/user_status/l10n/fa.json +++ b/apps/user_status/l10n/fa.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "مشکلی در ذخیره سازی وضعیت پیش آمده", "There was an error clearing the status" : "مشکلی در پاک کردن وضعیت پیش آمده", "There was an error reverting the status" : "There was an error reverting the status", - "Set status" : "تنظیم وضعیت", "Online status" : "وضعیت آنلاین", "Status message" : "پیغام وضعیت", "Your status was set automatically" : "Your status was set automatically", @@ -35,10 +34,12 @@ "Do not disturb" : "مزاحم نشوید", "Invisible" : "غیر قابل مشاهده", "Offline" : "آفلاین", + "Set status" : "تنظیم وضعیت", "There was an error saving the new status" : "مشکلی در ذخیره سازی وضعیت جدید پیش آمده", "30 minutes" : "۳۰ دقیقه", "1 hour" : "۱ ساعت", "4 hours" : "۴ ساعت", + "Busy" : "مشغول", "Mute all notifications" : "خاموش کردن همه اعلانات", "Appear offline" : "نمایش آفلاین" },"pluralForm" :"nplurals=2; plural=(n > 1);" diff --git a/apps/user_status/l10n/fi.js b/apps/user_status/l10n/fi.js index 898667afcab..db936384ff9 100644 --- a/apps/user_status/l10n/fi.js +++ b/apps/user_status/l10n/fi.js @@ -7,7 +7,7 @@ OC.L10N.register( "Commuting" : "Työmatkalla", "Out sick" : "Sairaana", "Vacationing" : "Lomailemassa", - "Out of office" : "Ulkona toimistolta", + "Out of office" : "Poissa työpaikalta", "Working remotely" : "Etätyössä", "In a call" : "Puhelussa", "User status" : "Käyttäjän tilatieto", @@ -23,9 +23,10 @@ OC.L10N.register( "There was an error saving the status" : "Tilatiedon tallentamisessa tapahtui virhe", "There was an error clearing the status" : "Tilatietoa tyhjentäessä tapahtui virhe", "There was an error reverting the status" : "Tilatietoa palauttaessa tapahtui virhe", - "Set status" : "Aseta tilatieto", "Online status" : "Online-tila", "Status message" : "Tilaviesti", + "Set absence period" : "Aseta poissaoloaika", + "Set absence period and replacement" : "Aseta poissaoloaika ja sijainen", "Your status was set automatically" : "Tilatietosi asetettiin automaattisesti", "Clear status message" : "Tyhjennä tilaviesti", "Set status message" : "Aseta tilaviesti", @@ -37,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Älä häiritse", "Invisible" : "Näkymätön", "Offline" : "Poissa", + "Set status" : "Aseta tilatieto", "There was an error saving the new status" : "Uuden tilatiedon tallentamisessa tapahtui virhe", "30 minutes" : "30 minuuttia", "1 hour" : "1 tunti", "4 hours" : "4 tuntia", + "Busy" : "Varattu", "Mute all notifications" : "Mykistä kaikki ilmoitukset", "Appear offline" : "Näytä olevan poissa" }, diff --git a/apps/user_status/l10n/fi.json b/apps/user_status/l10n/fi.json index 0fc72622608..5a7ad4fa685 100644 --- a/apps/user_status/l10n/fi.json +++ b/apps/user_status/l10n/fi.json @@ -5,7 +5,7 @@ "Commuting" : "Työmatkalla", "Out sick" : "Sairaana", "Vacationing" : "Lomailemassa", - "Out of office" : "Ulkona toimistolta", + "Out of office" : "Poissa työpaikalta", "Working remotely" : "Etätyössä", "In a call" : "Puhelussa", "User status" : "Käyttäjän tilatieto", @@ -21,9 +21,10 @@ "There was an error saving the status" : "Tilatiedon tallentamisessa tapahtui virhe", "There was an error clearing the status" : "Tilatietoa tyhjentäessä tapahtui virhe", "There was an error reverting the status" : "Tilatietoa palauttaessa tapahtui virhe", - "Set status" : "Aseta tilatieto", "Online status" : "Online-tila", "Status message" : "Tilaviesti", + "Set absence period" : "Aseta poissaoloaika", + "Set absence period and replacement" : "Aseta poissaoloaika ja sijainen", "Your status was set automatically" : "Tilatietosi asetettiin automaattisesti", "Clear status message" : "Tyhjennä tilaviesti", "Set status message" : "Aseta tilaviesti", @@ -35,10 +36,12 @@ "Do not disturb" : "Älä häiritse", "Invisible" : "Näkymätön", "Offline" : "Poissa", + "Set status" : "Aseta tilatieto", "There was an error saving the new status" : "Uuden tilatiedon tallentamisessa tapahtui virhe", "30 minutes" : "30 minuuttia", "1 hour" : "1 tunti", "4 hours" : "4 tuntia", + "Busy" : "Varattu", "Mute all notifications" : "Mykistä kaikki ilmoitukset", "Appear offline" : "Näytä olevan poissa" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/fr.js b/apps/user_status/l10n/fr.js index d6d5192c0c7..a00b780a33d 100644 --- a/apps/user_status/l10n/fr.js +++ b/apps/user_status/l10n/fr.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Une erreur s'est produite lors de l'enregistrement de l'état", "There was an error clearing the status" : "Une erreur s'est produite lors de l'effacement de l'état", "There was an error reverting the status" : "Une erreur est survenue dans le rétablissement d'état", - "Set status" : "Définir le statut", "Online status" : "Statut en ligne", "Status message" : "Message d'état", "Set absence period" : "Définir une période d'absence", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Ne pas déranger", "Invisible" : "Invisible", "Offline" : "Hors-ligne", + "Set status" : "Définir le statut", "There was an error saving the new status" : "Une erreur s'est produite lors de l'enregistrement du nouveau statut", "30 minutes" : "30 minutes", "1 hour" : "1 heure", "4 hours" : "4 heures", + "Busy" : "Occupé", "Mute all notifications" : "Désactiver les notifications", "Appear offline" : "Apparaitre hors-ligne" }, diff --git a/apps/user_status/l10n/fr.json b/apps/user_status/l10n/fr.json index a214b6782c9..98c873a2060 100644 --- a/apps/user_status/l10n/fr.json +++ b/apps/user_status/l10n/fr.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Une erreur s'est produite lors de l'enregistrement de l'état", "There was an error clearing the status" : "Une erreur s'est produite lors de l'effacement de l'état", "There was an error reverting the status" : "Une erreur est survenue dans le rétablissement d'état", - "Set status" : "Définir le statut", "Online status" : "Statut en ligne", "Status message" : "Message d'état", "Set absence period" : "Définir une période d'absence", @@ -37,10 +36,12 @@ "Do not disturb" : "Ne pas déranger", "Invisible" : "Invisible", "Offline" : "Hors-ligne", + "Set status" : "Définir le statut", "There was an error saving the new status" : "Une erreur s'est produite lors de l'enregistrement du nouveau statut", "30 minutes" : "30 minutes", "1 hour" : "1 heure", "4 hours" : "4 heures", + "Busy" : "Occupé", "Mute all notifications" : "Désactiver les notifications", "Appear offline" : "Apparaitre hors-ligne" },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" diff --git a/apps/user_status/l10n/ga.js b/apps/user_status/l10n/ga.js index 1721c5d202a..d2e78391015 100644 --- a/apps/user_status/l10n/ga.js +++ b/apps/user_status/l10n/ga.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Tharla earráid agus an stádas á shábháil", "There was an error clearing the status" : "Tharla earráid agus an stádas á ghlanadh", "There was an error reverting the status" : "Tharla earráid agus an stádas á chur ar ais", - "Set status" : "Socraigh stádas", "Online status" : "Stádas ar líne", "Status message" : "Teachtaireacht stádais", "Set absence period" : "Socraigh tréimhse neamhláithreachta", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Ná cur as", "Invisible" : "Dofheicthe", "Offline" : "As líne", + "Set status" : "Socraigh stádas", "There was an error saving the new status" : "Tharla earráid agus an stádas nua á shábháil", "30 minutes" : "30 nóiméad", "1 hour" : "1 uair", "4 hours" : "4 uair an chloig", + "Busy" : "Gnóthach", "Mute all notifications" : "Balbhaigh gach fógra", "Appear offline" : "Le feiceáil as líne" }, diff --git a/apps/user_status/l10n/ga.json b/apps/user_status/l10n/ga.json index aec0cca442d..2bc65745f6b 100644 --- a/apps/user_status/l10n/ga.json +++ b/apps/user_status/l10n/ga.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Tharla earráid agus an stádas á shábháil", "There was an error clearing the status" : "Tharla earráid agus an stádas á ghlanadh", "There was an error reverting the status" : "Tharla earráid agus an stádas á chur ar ais", - "Set status" : "Socraigh stádas", "Online status" : "Stádas ar líne", "Status message" : "Teachtaireacht stádais", "Set absence period" : "Socraigh tréimhse neamhláithreachta", @@ -37,10 +36,12 @@ "Do not disturb" : "Ná cur as", "Invisible" : "Dofheicthe", "Offline" : "As líne", + "Set status" : "Socraigh stádas", "There was an error saving the new status" : "Tharla earráid agus an stádas nua á shábháil", "30 minutes" : "30 nóiméad", "1 hour" : "1 uair", "4 hours" : "4 uair an chloig", + "Busy" : "Gnóthach", "Mute all notifications" : "Balbhaigh gach fógra", "Appear offline" : "Le feiceáil as líne" },"pluralForm" :"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);" diff --git a/apps/user_status/l10n/gl.js b/apps/user_status/l10n/gl.js index 4fe4ec5521c..3045c22fb4a 100644 --- a/apps/user_status/l10n/gl.js +++ b/apps/user_status/l10n/gl.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Produciuse un erro ao gardar o estado", "There was an error clearing the status" : "Produciuse un erro ao limpar o estado", "There was an error reverting the status" : "Produciuse un erro ao reverter o estado", - "Set status" : "Definir o estado", "Online status" : "Estado en liña", "Status message" : "Mensaxe de estado", "Set absence period" : "Definir o período de ausencia", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Non molestar", "Invisible" : "Invisíbel", "Offline" : "Sen conexión", + "Set status" : "Definir o estado", "There was an error saving the new status" : "Produciuse un erro ao gardar o novo estado", "30 minutes" : "30 minutos", "1 hour" : "1 hora", "4 hours" : "4 horas", + "Busy" : "Ocupado", "Mute all notifications" : "Enmudecer todas as notificacións", "Appear offline" : "Aparece coma sen conexión" }, diff --git a/apps/user_status/l10n/gl.json b/apps/user_status/l10n/gl.json index 3b91e51ceaf..c90de4d4f13 100644 --- a/apps/user_status/l10n/gl.json +++ b/apps/user_status/l10n/gl.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Produciuse un erro ao gardar o estado", "There was an error clearing the status" : "Produciuse un erro ao limpar o estado", "There was an error reverting the status" : "Produciuse un erro ao reverter o estado", - "Set status" : "Definir o estado", "Online status" : "Estado en liña", "Status message" : "Mensaxe de estado", "Set absence period" : "Definir o período de ausencia", @@ -37,10 +36,12 @@ "Do not disturb" : "Non molestar", "Invisible" : "Invisíbel", "Offline" : "Sen conexión", + "Set status" : "Definir o estado", "There was an error saving the new status" : "Produciuse un erro ao gardar o novo estado", "30 minutes" : "30 minutos", "1 hour" : "1 hora", "4 hours" : "4 horas", + "Busy" : "Ocupado", "Mute all notifications" : "Enmudecer todas as notificacións", "Appear offline" : "Aparece coma sen conexión" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/he.js b/apps/user_status/l10n/he.js index 60d49a8ba36..c14e661e90c 100644 --- a/apps/user_status/l10n/he.js +++ b/apps/user_status/l10n/he.js @@ -14,7 +14,6 @@ OC.L10N.register( "What is your status?" : "מה המצב שלך?", "There was an error saving the status" : "אירעה שגיאה בשמירת המצב", "There was an error clearing the status" : "אירעה שגיאה בפינוי המצב", - "Set status" : "הגדרת מצב", "Online status" : "מצב מקוון", "Status message" : "הודעת מצב", "Clear status message" : "פינוי הודעת המצב", @@ -27,10 +26,12 @@ OC.L10N.register( "Do not disturb" : "לא להפריע", "Invisible" : "נסתרת", "Offline" : "בלתי מקוון", + "Set status" : "הגדרת מצב", "There was an error saving the new status" : "אירעה שגיאה בשמירת המצב החדש", "30 minutes" : "30 דקות", "1 hour" : "שעה", "4 hours" : "4 שעות", + "Busy" : "עסוק", "Mute all notifications" : "השתקת כל ההתראות", "Appear offline" : "להופיע במצב בלתי מקוון" }, diff --git a/apps/user_status/l10n/he.json b/apps/user_status/l10n/he.json index f6a8f4d5b91..1475c5c48e9 100644 --- a/apps/user_status/l10n/he.json +++ b/apps/user_status/l10n/he.json @@ -12,7 +12,6 @@ "What is your status?" : "מה המצב שלך?", "There was an error saving the status" : "אירעה שגיאה בשמירת המצב", "There was an error clearing the status" : "אירעה שגיאה בפינוי המצב", - "Set status" : "הגדרת מצב", "Online status" : "מצב מקוון", "Status message" : "הודעת מצב", "Clear status message" : "פינוי הודעת המצב", @@ -25,10 +24,12 @@ "Do not disturb" : "לא להפריע", "Invisible" : "נסתרת", "Offline" : "בלתי מקוון", + "Set status" : "הגדרת מצב", "There was an error saving the new status" : "אירעה שגיאה בשמירת המצב החדש", "30 minutes" : "30 דקות", "1 hour" : "שעה", "4 hours" : "4 שעות", + "Busy" : "עסוק", "Mute all notifications" : "השתקת כל ההתראות", "Appear offline" : "להופיע במצב בלתי מקוון" },"pluralForm" :"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;" diff --git a/apps/user_status/l10n/hr.js b/apps/user_status/l10n/hr.js index 6ba98a875c5..32026e39816 100644 --- a/apps/user_status/l10n/hr.js +++ b/apps/user_status/l10n/hr.js @@ -15,7 +15,6 @@ OC.L10N.register( "What is your status?" : "Koji je vaš status?", "There was an error saving the status" : "Došlo je do pogreške pri spremanju statusa", "There was an error clearing the status" : "Došlo je do pogreške pri brisanju statusa", - "Set status" : "Postavi status", "Online status" : "Status na mreži", "Status message" : "Poruka statusa", "Clear status message" : "Izbriši poruku statusa", @@ -28,10 +27,12 @@ OC.L10N.register( "Do not disturb" : "Ne ometaj", "Invisible" : "Nevidljiva", "Offline" : "Izvanmrežno", + "Set status" : "Postavi status", "There was an error saving the new status" : "Došlo je do pogreške pri spremanju novog statusa", "30 minutes" : "30 minuta", "1 hour" : "1 sat", "4 hours" : "4 sata", + "Busy" : "Zauzeto", "Mute all notifications" : "Utišaj sve obavijesti", "Appear offline" : "Prikaži izvanmrežno" }, diff --git a/apps/user_status/l10n/hr.json b/apps/user_status/l10n/hr.json index 5d4230ff47b..ba0a7d987f4 100644 --- a/apps/user_status/l10n/hr.json +++ b/apps/user_status/l10n/hr.json @@ -13,7 +13,6 @@ "What is your status?" : "Koji je vaš status?", "There was an error saving the status" : "Došlo je do pogreške pri spremanju statusa", "There was an error clearing the status" : "Došlo je do pogreške pri brisanju statusa", - "Set status" : "Postavi status", "Online status" : "Status na mreži", "Status message" : "Poruka statusa", "Clear status message" : "Izbriši poruku statusa", @@ -26,10 +25,12 @@ "Do not disturb" : "Ne ometaj", "Invisible" : "Nevidljiva", "Offline" : "Izvanmrežno", + "Set status" : "Postavi status", "There was an error saving the new status" : "Došlo je do pogreške pri spremanju novog statusa", "30 minutes" : "30 minuta", "1 hour" : "1 sat", "4 hours" : "4 sata", + "Busy" : "Zauzeto", "Mute all notifications" : "Utišaj sve obavijesti", "Appear offline" : "Prikaži izvanmrežno" },"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;" diff --git a/apps/user_status/l10n/hu.js b/apps/user_status/l10n/hu.js index c24669860aa..9610f72b24e 100644 --- a/apps/user_status/l10n/hu.js +++ b/apps/user_status/l10n/hu.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Hiba történt az állapot mentése során", "There was an error clearing the status" : "Hiba történt az állapot törlése sorá", "There was an error reverting the status" : "Hiba történt az állapot visszaállítása során", - "Set status" : "Állapot beállítása", "Online status" : "Elérhető állapot", "Status message" : "Állapotüzenet", "Set absence period" : "Távolléti időszak beállítása", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Ne zavarjanak", "Invisible" : "Láthatatlan", "Offline" : "Nem kapcsolódott", + "Set status" : "Állapot beállítása", "There was an error saving the new status" : "Hiba történt az új állapot mentése sorá", "30 minutes" : "30 perc", "1 hour" : "1 óra", "4 hours" : "4 óra", + "Busy" : "Foglalt", "Mute all notifications" : "Összes értesítés némítása", "Appear offline" : "Megjelenés nem kapcsolódottként" }, diff --git a/apps/user_status/l10n/hu.json b/apps/user_status/l10n/hu.json index dcbe3b70f3b..9dbf642fc0d 100644 --- a/apps/user_status/l10n/hu.json +++ b/apps/user_status/l10n/hu.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Hiba történt az állapot mentése során", "There was an error clearing the status" : "Hiba történt az állapot törlése sorá", "There was an error reverting the status" : "Hiba történt az állapot visszaállítása során", - "Set status" : "Állapot beállítása", "Online status" : "Elérhető állapot", "Status message" : "Állapotüzenet", "Set absence period" : "Távolléti időszak beállítása", @@ -37,10 +36,12 @@ "Do not disturb" : "Ne zavarjanak", "Invisible" : "Láthatatlan", "Offline" : "Nem kapcsolódott", + "Set status" : "Állapot beállítása", "There was an error saving the new status" : "Hiba történt az új állapot mentése sorá", "30 minutes" : "30 perc", "1 hour" : "1 óra", "4 hours" : "4 óra", + "Busy" : "Foglalt", "Mute all notifications" : "Összes értesítés némítása", "Appear offline" : "Megjelenés nem kapcsolódottként" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/is.js b/apps/user_status/l10n/is.js index 1da4a0c3e5b..1f17415040b 100644 --- a/apps/user_status/l10n/is.js +++ b/apps/user_status/l10n/is.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Það kom upp villa við að vista stöðuna", "There was an error clearing the status" : "Það kom upp villa við að hreinsa stöðuna", "There was an error reverting the status" : "Það kom upp villa við að afturkalla stöðuna", - "Set status" : "Setja stöðu", "Online status" : "Staða á netinu", "Status message" : "Stöðuskilaboð", "Set absence period" : "Setja tímabil fjarveru", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Ónáðið ekki", "Invisible" : "Ósýnilegt", "Offline" : "Ótengdur neti", + "Set status" : "Setja stöðu", "There was an error saving the new status" : "Það kom upp villa við að vista nýju stöðuna", "30 minutes" : "30 mínútur", "1 hour" : "1 klukkustund", "4 hours" : "4 klukkustundir", + "Busy" : "Upptekinn", "Mute all notifications" : "Þagga allar tilkynningar", "Appear offline" : "Birtast ótengt" }, diff --git a/apps/user_status/l10n/is.json b/apps/user_status/l10n/is.json index c299581ccb0..f081ed2745f 100644 --- a/apps/user_status/l10n/is.json +++ b/apps/user_status/l10n/is.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Það kom upp villa við að vista stöðuna", "There was an error clearing the status" : "Það kom upp villa við að hreinsa stöðuna", "There was an error reverting the status" : "Það kom upp villa við að afturkalla stöðuna", - "Set status" : "Setja stöðu", "Online status" : "Staða á netinu", "Status message" : "Stöðuskilaboð", "Set absence period" : "Setja tímabil fjarveru", @@ -37,10 +36,12 @@ "Do not disturb" : "Ónáðið ekki", "Invisible" : "Ósýnilegt", "Offline" : "Ótengdur neti", + "Set status" : "Setja stöðu", "There was an error saving the new status" : "Það kom upp villa við að vista nýju stöðuna", "30 minutes" : "30 mínútur", "1 hour" : "1 klukkustund", "4 hours" : "4 klukkustundir", + "Busy" : "Upptekinn", "Mute all notifications" : "Þagga allar tilkynningar", "Appear offline" : "Birtast ótengt" },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" diff --git a/apps/user_status/l10n/it.js b/apps/user_status/l10n/it.js index b7b216ee702..9917b09972e 100644 --- a/apps/user_status/l10n/it.js +++ b/apps/user_status/l10n/it.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Si è verificato un errore durante il salvataggio dello stato", "There was an error clearing the status" : "Si è verificato un errore durante la rimozione dello stato", "There was an error reverting the status" : "Si è verificato un errore ripristinando lo stato", - "Set status" : "Imposta stato", "Online status" : "Stato in linea", "Status message" : "Messaggio di stato", "Set absence period" : "Imposta periodo di assenza", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Non disturbare", "Invisible" : "Invisibile", "Offline" : "Non in linea", + "Set status" : "Imposta stato", "There was an error saving the new status" : "Si è verificato un errore durante il salvataggio del nuovo stato", "30 minutes" : "30 minuti", "1 hour" : "1 ora", "4 hours" : "4 ore", + "Busy" : "Occupato", "Mute all notifications" : "Silenzia tutte le notifiche", "Appear offline" : "Mostrati non in linea" }, diff --git a/apps/user_status/l10n/it.json b/apps/user_status/l10n/it.json index d28b51d7ba4..96a6af919a5 100644 --- a/apps/user_status/l10n/it.json +++ b/apps/user_status/l10n/it.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Si è verificato un errore durante il salvataggio dello stato", "There was an error clearing the status" : "Si è verificato un errore durante la rimozione dello stato", "There was an error reverting the status" : "Si è verificato un errore ripristinando lo stato", - "Set status" : "Imposta stato", "Online status" : "Stato in linea", "Status message" : "Messaggio di stato", "Set absence period" : "Imposta periodo di assenza", @@ -37,10 +36,12 @@ "Do not disturb" : "Non disturbare", "Invisible" : "Invisibile", "Offline" : "Non in linea", + "Set status" : "Imposta stato", "There was an error saving the new status" : "Si è verificato un errore durante il salvataggio del nuovo stato", "30 minutes" : "30 minuti", "1 hour" : "1 ora", "4 hours" : "4 ore", + "Busy" : "Occupato", "Mute all notifications" : "Silenzia tutte le notifiche", "Appear offline" : "Mostrati non in linea" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" diff --git a/apps/user_status/l10n/ja.js b/apps/user_status/l10n/ja.js index ccadddaaa42..9f56f70053b 100644 --- a/apps/user_status/l10n/ja.js +++ b/apps/user_status/l10n/ja.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "ステータスの保存中にエラーが発生しました", "There was an error clearing the status" : "ステータスの消去中にエラーが発生しました", "There was an error reverting the status" : "ステータスを戻す際にエラーが発生しました", - "Set status" : "ステータスを設定", "Online status" : "オンラインステータス", "Status message" : "状態メッセージ", "Set absence period" : "不在設定をセットする", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "取り込み中", "Invisible" : "ステータスを隠す", "Offline" : "オフライン", + "Set status" : "ステータスを設定", "There was an error saving the new status" : "新しいステータスの保存中にエラーが発生しました", "30 minutes" : "30分", "1 hour" : "1時間", "4 hours" : "4時間", + "Busy" : "ビジー", "Mute all notifications" : "全ての通知をミュート", "Appear offline" : "オフライン" }, diff --git a/apps/user_status/l10n/ja.json b/apps/user_status/l10n/ja.json index b9d4f000f08..a6dc1ec19a3 100644 --- a/apps/user_status/l10n/ja.json +++ b/apps/user_status/l10n/ja.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "ステータスの保存中にエラーが発生しました", "There was an error clearing the status" : "ステータスの消去中にエラーが発生しました", "There was an error reverting the status" : "ステータスを戻す際にエラーが発生しました", - "Set status" : "ステータスを設定", "Online status" : "オンラインステータス", "Status message" : "状態メッセージ", "Set absence period" : "不在設定をセットする", @@ -37,10 +36,12 @@ "Do not disturb" : "取り込み中", "Invisible" : "ステータスを隠す", "Offline" : "オフライン", + "Set status" : "ステータスを設定", "There was an error saving the new status" : "新しいステータスの保存中にエラーが発生しました", "30 minutes" : "30分", "1 hour" : "1時間", "4 hours" : "4時間", + "Busy" : "ビジー", "Mute all notifications" : "全ての通知をミュート", "Appear offline" : "オフライン" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/user_status/l10n/ko.js b/apps/user_status/l10n/ko.js index f6a6012fa9c..3afaa412ee2 100644 --- a/apps/user_status/l10n/ko.js +++ b/apps/user_status/l10n/ko.js @@ -15,7 +15,6 @@ OC.L10N.register( "What is your status?" : "당신의 상태는?", "There was an error saving the status" : "상태 저장에 오류가 발생했습니다.", "There was an error clearing the status" : "상태 해제에 오류가 발생했습니다.", - "Set status" : "상태 설정", "Online status" : "접속 상태", "Status message" : "상태 메시지", "Clear status message" : "상태 메시지 지움", @@ -28,10 +27,12 @@ OC.L10N.register( "Do not disturb" : "방해 금지", "Invisible" : "숨겨짐", "Offline" : "오프라인", + "Set status" : "상태 설정", "There was an error saving the new status" : "새로운 상태 저장에 오류가 발생했습니다.", "30 minutes" : "30 분", "1 hour" : "한 시간", "4 hours" : "4 시간", + "Busy" : "바쁨", "Mute all notifications" : "모든 알림을 음소거", "Appear offline" : "접속 안함으로 표시" }, diff --git a/apps/user_status/l10n/ko.json b/apps/user_status/l10n/ko.json index 2ff1a35aa80..4858bccd4e0 100644 --- a/apps/user_status/l10n/ko.json +++ b/apps/user_status/l10n/ko.json @@ -13,7 +13,6 @@ "What is your status?" : "당신의 상태는?", "There was an error saving the status" : "상태 저장에 오류가 발생했습니다.", "There was an error clearing the status" : "상태 해제에 오류가 발생했습니다.", - "Set status" : "상태 설정", "Online status" : "접속 상태", "Status message" : "상태 메시지", "Clear status message" : "상태 메시지 지움", @@ -26,10 +25,12 @@ "Do not disturb" : "방해 금지", "Invisible" : "숨겨짐", "Offline" : "오프라인", + "Set status" : "상태 설정", "There was an error saving the new status" : "새로운 상태 저장에 오류가 발생했습니다.", "30 minutes" : "30 분", "1 hour" : "한 시간", "4 hours" : "4 시간", + "Busy" : "바쁨", "Mute all notifications" : "모든 알림을 음소거", "Appear offline" : "접속 안함으로 표시" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/user_status/l10n/lt_LT.js b/apps/user_status/l10n/lt_LT.js index 63c56bd0317..b440b3f1c05 100644 --- a/apps/user_status/l10n/lt_LT.js +++ b/apps/user_status/l10n/lt_LT.js @@ -16,7 +16,6 @@ OC.L10N.register( "Predefined statuses" : "Iš anksto apibrėžtos būsenos", "There was an error saving the status" : "Įrašant būseną, įvyko klaida", "There was an error clearing the status" : "Išvalant būseną, įvyko klaida", - "Set status" : "Nustatyti būseną", "Online status" : "Prisijungimo būsena", "Status message" : "Būsenos žinutė", "Your status was set automatically" : "Jūsų būsena buvo nustatyta automatiškai", @@ -30,10 +29,12 @@ OC.L10N.register( "Do not disturb" : "Netrukdyti", "Invisible" : "Nematomas", "Offline" : "Atsijungęs", + "Set status" : "Nustatyti būseną", "There was an error saving the new status" : "Įrašant naują būseną, įvyko klaida", "30 minutes" : "30 minučių", "1 hour" : "1 valanda", "4 hours" : "4 valandos", + "Busy" : "Užimtas laikas", "Mute all notifications" : "Išjungti visus pranešimus", "Appear offline" : "Atrodyti atsijungusiu" }, diff --git a/apps/user_status/l10n/lt_LT.json b/apps/user_status/l10n/lt_LT.json index 4718bc04b57..d1df46a90f2 100644 --- a/apps/user_status/l10n/lt_LT.json +++ b/apps/user_status/l10n/lt_LT.json @@ -14,7 +14,6 @@ "Predefined statuses" : "Iš anksto apibrėžtos būsenos", "There was an error saving the status" : "Įrašant būseną, įvyko klaida", "There was an error clearing the status" : "Išvalant būseną, įvyko klaida", - "Set status" : "Nustatyti būseną", "Online status" : "Prisijungimo būsena", "Status message" : "Būsenos žinutė", "Your status was set automatically" : "Jūsų būsena buvo nustatyta automatiškai", @@ -28,10 +27,12 @@ "Do not disturb" : "Netrukdyti", "Invisible" : "Nematomas", "Offline" : "Atsijungęs", + "Set status" : "Nustatyti būseną", "There was an error saving the new status" : "Įrašant naują būseną, įvyko klaida", "30 minutes" : "30 minučių", "1 hour" : "1 valanda", "4 hours" : "4 valandos", + "Busy" : "Užimtas laikas", "Mute all notifications" : "Išjungti visus pranešimus", "Appear offline" : "Atrodyti atsijungusiu" },"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" diff --git a/apps/user_status/l10n/mk.js b/apps/user_status/l10n/mk.js index ffec459af71..64501b2f6df 100644 --- a/apps/user_status/l10n/mk.js +++ b/apps/user_status/l10n/mk.js @@ -15,7 +15,6 @@ OC.L10N.register( "What is your status?" : "Кој е вашиот статус?", "There was an error saving the status" : "Грешка при зачувување на статус", "There was an error clearing the status" : "Грешка при отстранување на статус", - "Set status" : "Постави статус", "Online status" : "Присутен", "Status message" : "Статус порака", "Clear status message" : "Тргни ја статус пораката", @@ -28,10 +27,12 @@ OC.L10N.register( "Do not disturb" : "Не вознемирувај", "Invisible" : "Невидливо", "Offline" : "Исклучен", + "Set status" : "Постави статус", "There was an error saving the new status" : "Настана грешка при зачувување на нов статус", "30 minutes" : "30 минути", "1 hour" : "1 час", "4 hours" : "4 часа", + "Busy" : "Зафатен", "Mute all notifications" : "Занеми (Mute) ги сите известувања", "Appear offline" : "Прикажи исклучен" }, diff --git a/apps/user_status/l10n/mk.json b/apps/user_status/l10n/mk.json index 57d1ffd1648..393500ad5c5 100644 --- a/apps/user_status/l10n/mk.json +++ b/apps/user_status/l10n/mk.json @@ -13,7 +13,6 @@ "What is your status?" : "Кој е вашиот статус?", "There was an error saving the status" : "Грешка при зачувување на статус", "There was an error clearing the status" : "Грешка при отстранување на статус", - "Set status" : "Постави статус", "Online status" : "Присутен", "Status message" : "Статус порака", "Clear status message" : "Тргни ја статус пораката", @@ -26,10 +25,12 @@ "Do not disturb" : "Не вознемирувај", "Invisible" : "Невидливо", "Offline" : "Исклучен", + "Set status" : "Постави статус", "There was an error saving the new status" : "Настана грешка при зачувување на нов статус", "30 minutes" : "30 минути", "1 hour" : "1 час", "4 hours" : "4 часа", + "Busy" : "Зафатен", "Mute all notifications" : "Занеми (Mute) ги сите известувања", "Appear offline" : "Прикажи исклучен" },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" diff --git a/apps/user_status/l10n/nb.js b/apps/user_status/l10n/nb.js index f0e0951cccd..f627aaa1e60 100644 --- a/apps/user_status/l10n/nb.js +++ b/apps/user_status/l10n/nb.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Det oppsto en feil ved lagring av status", "There was an error clearing the status" : "Det oppsto en feil ved fjerning av status", "There was an error reverting the status" : "Det oppstod en feil under tilbakestilling av statusen", - "Set status" : "Velg status", "Online status" : "Online-status", "Status message" : "Statusmelding", "Set absence period" : "Angi fraværsperiode", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Ikke forstyrr", "Invisible" : "Usynlig", "Offline" : "Frakoblet", + "Set status" : "Velg status", "There was an error saving the new status" : "Det oppsto en feil ved lagring av ny status", "30 minutes" : "30 minutter", "1 hour" : "1 time", "4 hours" : "4 timer", + "Busy" : "Opptatt", "Mute all notifications" : "Demp alle varslinger", "Appear offline" : "Vis som frakoblet" }, diff --git a/apps/user_status/l10n/nb.json b/apps/user_status/l10n/nb.json index f68a51f6e30..4e47d91a20b 100644 --- a/apps/user_status/l10n/nb.json +++ b/apps/user_status/l10n/nb.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Det oppsto en feil ved lagring av status", "There was an error clearing the status" : "Det oppsto en feil ved fjerning av status", "There was an error reverting the status" : "Det oppstod en feil under tilbakestilling av statusen", - "Set status" : "Velg status", "Online status" : "Online-status", "Status message" : "Statusmelding", "Set absence period" : "Angi fraværsperiode", @@ -37,10 +36,12 @@ "Do not disturb" : "Ikke forstyrr", "Invisible" : "Usynlig", "Offline" : "Frakoblet", + "Set status" : "Velg status", "There was an error saving the new status" : "Det oppsto en feil ved lagring av ny status", "30 minutes" : "30 minutter", "1 hour" : "1 time", "4 hours" : "4 timer", + "Busy" : "Opptatt", "Mute all notifications" : "Demp alle varslinger", "Appear offline" : "Vis som frakoblet" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/nl.js b/apps/user_status/l10n/nl.js index 99655a094fc..3a981ec3a3c 100644 --- a/apps/user_status/l10n/nl.js +++ b/apps/user_status/l10n/nl.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Er is een fout opgetreden bij het bewaren van de status", "There was an error clearing the status" : "Er is een fout opgetreden bij het leegmaken van de status", "There was an error reverting the status" : "Er was een fout bij het terugdraaien van de status", - "Set status" : "Status instellen", "Online status" : "Online status", "Status message" : "Statusbericht", "Set absence period" : "Afwezigheidsperiode instellen", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Niet storen", "Invisible" : "Verborgen", "Offline" : "Off-line", + "Set status" : "Status instellen", "There was an error saving the new status" : "Er is een fout opgetreden bij het bewaren van de nieuwe status", "30 minutes" : "30 minuten", "1 hour" : "1 uur", "4 hours" : "4 uur", + "Busy" : "Bezet", "Mute all notifications" : "Onderdruk alle meldingen", "Appear offline" : "Toon afwezig" }, diff --git a/apps/user_status/l10n/nl.json b/apps/user_status/l10n/nl.json index f345b68c6ef..485b773bb85 100644 --- a/apps/user_status/l10n/nl.json +++ b/apps/user_status/l10n/nl.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Er is een fout opgetreden bij het bewaren van de status", "There was an error clearing the status" : "Er is een fout opgetreden bij het leegmaken van de status", "There was an error reverting the status" : "Er was een fout bij het terugdraaien van de status", - "Set status" : "Status instellen", "Online status" : "Online status", "Status message" : "Statusbericht", "Set absence period" : "Afwezigheidsperiode instellen", @@ -37,10 +36,12 @@ "Do not disturb" : "Niet storen", "Invisible" : "Verborgen", "Offline" : "Off-line", + "Set status" : "Status instellen", "There was an error saving the new status" : "Er is een fout opgetreden bij het bewaren van de nieuwe status", "30 minutes" : "30 minuten", "1 hour" : "1 uur", "4 hours" : "4 uur", + "Busy" : "Bezet", "Mute all notifications" : "Onderdruk alle meldingen", "Appear offline" : "Toon afwezig" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/oc.js b/apps/user_status/l10n/oc.js index a7bfb95cad8..bbd00e9e551 100644 --- a/apps/user_status/l10n/oc.js +++ b/apps/user_status/l10n/oc.js @@ -15,7 +15,6 @@ OC.L10N.register( "What is your status?" : "Quin es vòstre estat ?", "There was an error saving the status" : "Error en enregistrant l’estat", "There was an error clearing the status" : "Error en escafant l’estat", - "Set status" : "Definir estat", "Online status" : "Estat en linha", "Status message" : "Messatge d’estat", "Clear status message" : "Escafar messatge d’estat", @@ -28,10 +27,12 @@ OC.L10N.register( "Do not disturb" : "Me desrengar pas", "Invisible" : "Invisible", "Offline" : "Fòra linha", + "Set status" : "Definir estat", "There was an error saving the new status" : "Error en enregistrant l’estat novèl", "30 minutes" : "30 minutas", "1 hour" : "1 ora", "4 hours" : "4 oras", + "Busy" : "Ocupat", "Mute all notifications" : "Amudir totas las notificacions", "Appear offline" : "Aparéisser fòra linha" }, diff --git a/apps/user_status/l10n/oc.json b/apps/user_status/l10n/oc.json index 0e5d9d6e73e..388df700e75 100644 --- a/apps/user_status/l10n/oc.json +++ b/apps/user_status/l10n/oc.json @@ -13,7 +13,6 @@ "What is your status?" : "Quin es vòstre estat ?", "There was an error saving the status" : "Error en enregistrant l’estat", "There was an error clearing the status" : "Error en escafant l’estat", - "Set status" : "Definir estat", "Online status" : "Estat en linha", "Status message" : "Messatge d’estat", "Clear status message" : "Escafar messatge d’estat", @@ -26,10 +25,12 @@ "Do not disturb" : "Me desrengar pas", "Invisible" : "Invisible", "Offline" : "Fòra linha", + "Set status" : "Definir estat", "There was an error saving the new status" : "Error en enregistrant l’estat novèl", "30 minutes" : "30 minutas", "1 hour" : "1 ora", "4 hours" : "4 oras", + "Busy" : "Ocupat", "Mute all notifications" : "Amudir totas las notificacions", "Appear offline" : "Aparéisser fòra linha" },"pluralForm" :"nplurals=2; plural=(n > 1);" diff --git a/apps/user_status/l10n/pl.js b/apps/user_status/l10n/pl.js index bb40d71e254..274b49df1f9 100644 --- a/apps/user_status/l10n/pl.js +++ b/apps/user_status/l10n/pl.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Wystąpił błąd podczas zapisywania statusu", "There was an error clearing the status" : "Wystąpił błąd podczas usuwania statusu", "There was an error reverting the status" : "Podczas przywracania statusu wystąpił błąd", - "Set status" : "Ustaw status", "Online status" : "Status online", "Status message" : "Komunikat statusu", "Set absence period" : "Ustaw okres nieobecności", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Nie przeszkadzać", "Invisible" : "Niewidoczny", "Offline" : "Offline", + "Set status" : "Ustaw status", "There was an error saving the new status" : "Wystąpił błąd podczas zapisywania nowego statusu", "30 minutes" : "30 minut", "1 hour" : "1 godzina", "4 hours" : "4 godziny", + "Busy" : "Brak dostępności", "Mute all notifications" : "Wycisz wszystkie powiadomienia", "Appear offline" : "Widnieje jako offline" }, diff --git a/apps/user_status/l10n/pl.json b/apps/user_status/l10n/pl.json index 4d20b8f85db..3cc7f74d85b 100644 --- a/apps/user_status/l10n/pl.json +++ b/apps/user_status/l10n/pl.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Wystąpił błąd podczas zapisywania statusu", "There was an error clearing the status" : "Wystąpił błąd podczas usuwania statusu", "There was an error reverting the status" : "Podczas przywracania statusu wystąpił błąd", - "Set status" : "Ustaw status", "Online status" : "Status online", "Status message" : "Komunikat statusu", "Set absence period" : "Ustaw okres nieobecności", @@ -37,10 +36,12 @@ "Do not disturb" : "Nie przeszkadzać", "Invisible" : "Niewidoczny", "Offline" : "Offline", + "Set status" : "Ustaw status", "There was an error saving the new status" : "Wystąpił błąd podczas zapisywania nowego statusu", "30 minutes" : "30 minut", "1 hour" : "1 godzina", "4 hours" : "4 godziny", + "Busy" : "Brak dostępności", "Mute all notifications" : "Wycisz wszystkie powiadomienia", "Appear offline" : "Widnieje jako offline" },"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);" diff --git a/apps/user_status/l10n/pt_BR.js b/apps/user_status/l10n/pt_BR.js index 210a4e3c28b..0005887e473 100644 --- a/apps/user_status/l10n/pt_BR.js +++ b/apps/user_status/l10n/pt_BR.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Ocorreu um erro ao salvar o status", "There was an error clearing the status" : "Ocorreu um erro ao limpar o status", "There was an error reverting the status" : "Ocorreu um erro ao reverter o status", - "Set status" : "Definir status", "Online status" : "Status on-line", "Status message" : "Mensagem de status", "Set absence period" : "Definir período de ausência", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Não perturbe", "Invisible" : "Invisível", "Offline" : "Off-line", + "Set status" : "Definir status", "There was an error saving the new status" : "Ocorreu um erro ao salvar o novo status", "30 minutes" : "30 minutos", "1 hour" : "1 hora", "4 hours" : "4 horas", + "Busy" : "Ocupado", "Mute all notifications" : "Silenciar todas as notificações", "Appear offline" : "Aparecer off-line" }, diff --git a/apps/user_status/l10n/pt_BR.json b/apps/user_status/l10n/pt_BR.json index 0450fd6790b..9d233528ee0 100644 --- a/apps/user_status/l10n/pt_BR.json +++ b/apps/user_status/l10n/pt_BR.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Ocorreu um erro ao salvar o status", "There was an error clearing the status" : "Ocorreu um erro ao limpar o status", "There was an error reverting the status" : "Ocorreu um erro ao reverter o status", - "Set status" : "Definir status", "Online status" : "Status on-line", "Status message" : "Mensagem de status", "Set absence period" : "Definir período de ausência", @@ -37,10 +36,12 @@ "Do not disturb" : "Não perturbe", "Invisible" : "Invisível", "Offline" : "Off-line", + "Set status" : "Definir status", "There was an error saving the new status" : "Ocorreu um erro ao salvar o novo status", "30 minutes" : "30 minutos", "1 hour" : "1 hora", "4 hours" : "4 horas", + "Busy" : "Ocupado", "Mute all notifications" : "Silenciar todas as notificações", "Appear offline" : "Aparecer off-line" },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" diff --git a/apps/user_status/l10n/pt_PT.js b/apps/user_status/l10n/pt_PT.js index eaebdc3c7d3..e6b64625619 100644 --- a/apps/user_status/l10n/pt_PT.js +++ b/apps/user_status/l10n/pt_PT.js @@ -15,7 +15,6 @@ OC.L10N.register( "What is your status?" : "Qual é o seu estado?", "There was an error saving the status" : "Ocorreu um erro ao guardar o estado", "There was an error clearing the status" : "Ocorreu um erro ao apagar o estado", - "Set status" : "Definir estado", "Online status" : "Estado online", "Status message" : "Mensagem de estado", "Clear status message" : "Limpar mensagem de estado", @@ -28,10 +27,12 @@ OC.L10N.register( "Do not disturb" : "Não incomodar", "Invisible" : "Invisível ", "Offline" : "Offline", + "Set status" : "Definir estado", "There was an error saving the new status" : "Ocorreu um erro ao guardar o novo estado", "30 minutes" : "30 minutos", "1 hour" : "1 hora", "4 hours" : "4 horas", + "Busy" : "Ocupado", "Mute all notifications" : "Desativar todas as notificações", "Appear offline" : "Aparecer offline" }, diff --git a/apps/user_status/l10n/pt_PT.json b/apps/user_status/l10n/pt_PT.json index a8f1efc2295..17762a3db45 100644 --- a/apps/user_status/l10n/pt_PT.json +++ b/apps/user_status/l10n/pt_PT.json @@ -13,7 +13,6 @@ "What is your status?" : "Qual é o seu estado?", "There was an error saving the status" : "Ocorreu um erro ao guardar o estado", "There was an error clearing the status" : "Ocorreu um erro ao apagar o estado", - "Set status" : "Definir estado", "Online status" : "Estado online", "Status message" : "Mensagem de estado", "Clear status message" : "Limpar mensagem de estado", @@ -26,10 +25,12 @@ "Do not disturb" : "Não incomodar", "Invisible" : "Invisível ", "Offline" : "Offline", + "Set status" : "Definir estado", "There was an error saving the new status" : "Ocorreu um erro ao guardar o novo estado", "30 minutes" : "30 minutos", "1 hour" : "1 hora", "4 hours" : "4 horas", + "Busy" : "Ocupado", "Mute all notifications" : "Desativar todas as notificações", "Appear offline" : "Aparecer offline" },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" diff --git a/apps/user_status/l10n/ro.js b/apps/user_status/l10n/ro.js index 6c232e8450a..3214bdf6d73 100644 --- a/apps/user_status/l10n/ro.js +++ b/apps/user_status/l10n/ro.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "S-a produs o eroare la salvarea stării", "There was an error clearing the status" : "S-a produs o eroare de ștergere a statutului", "There was an error reverting the status" : "Eroare la revenirea la statusul anterior", - "Set status" : "Setează status", "Online status" : "Status online", "Status message" : "Mesaj de status", "Your status was set automatically" : "Statusul a fost setat automat", @@ -37,10 +36,12 @@ OC.L10N.register( "Do not disturb" : "Nu deranja", "Invisible" : "Invizibil", "Offline" : "Offline", + "Set status" : "Setează status", "There was an error saving the new status" : "S-a produs o eroare de salvare a noului status", "30 minutes" : "30 minute", "1 hour" : "1 oră", "4 hours" : "4 ore", + "Busy" : "Ocupat", "Mute all notifications" : "Dezactivați toate notificările", "Appear offline" : "Apari deconectat" }, diff --git a/apps/user_status/l10n/ro.json b/apps/user_status/l10n/ro.json index 61d33f3a032..292a2aaac70 100644 --- a/apps/user_status/l10n/ro.json +++ b/apps/user_status/l10n/ro.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "S-a produs o eroare la salvarea stării", "There was an error clearing the status" : "S-a produs o eroare de ștergere a statutului", "There was an error reverting the status" : "Eroare la revenirea la statusul anterior", - "Set status" : "Setează status", "Online status" : "Status online", "Status message" : "Mesaj de status", "Your status was set automatically" : "Statusul a fost setat automat", @@ -35,10 +34,12 @@ "Do not disturb" : "Nu deranja", "Invisible" : "Invizibil", "Offline" : "Offline", + "Set status" : "Setează status", "There was an error saving the new status" : "S-a produs o eroare de salvare a noului status", "30 minutes" : "30 minute", "1 hour" : "1 oră", "4 hours" : "4 ore", + "Busy" : "Ocupat", "Mute all notifications" : "Dezactivați toate notificările", "Appear offline" : "Apari deconectat" },"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));" diff --git a/apps/user_status/l10n/ru.js b/apps/user_status/l10n/ru.js index 901c313f537..5307a6e7fe3 100644 --- a/apps/user_status/l10n/ru.js +++ b/apps/user_status/l10n/ru.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Произошла ошибка при сохранении статуса", "There was an error clearing the status" : "Произошла ошибка при удалении статуса", "There was an error reverting the status" : "Произошла ошибка при сбросе статуса", - "Set status" : "Установить статус", "Online status" : "Онлайн статус", "Status message" : "Описание статуса", "Set absence period" : "Задать период отсутствия", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Не беспокоить", "Invisible" : "Невидимый", "Offline" : "Не в сети", + "Set status" : "Установить статус", "There was an error saving the new status" : "Произошла ошибка при сохранении нового статуса", "30 minutes" : "30 минут", "1 hour" : "1 час", "4 hours" : "4 часа", + "Busy" : "Занят", "Mute all notifications" : "Отключить все уведомления", "Appear offline" : "\"Не в сети\" для остальных" }, diff --git a/apps/user_status/l10n/ru.json b/apps/user_status/l10n/ru.json index 8a1967e1196..c46c053f5ef 100644 --- a/apps/user_status/l10n/ru.json +++ b/apps/user_status/l10n/ru.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Произошла ошибка при сохранении статуса", "There was an error clearing the status" : "Произошла ошибка при удалении статуса", "There was an error reverting the status" : "Произошла ошибка при сбросе статуса", - "Set status" : "Установить статус", "Online status" : "Онлайн статус", "Status message" : "Описание статуса", "Set absence period" : "Задать период отсутствия", @@ -37,10 +36,12 @@ "Do not disturb" : "Не беспокоить", "Invisible" : "Невидимый", "Offline" : "Не в сети", + "Set status" : "Установить статус", "There was an error saving the new status" : "Произошла ошибка при сохранении нового статуса", "30 minutes" : "30 минут", "1 hour" : "1 час", "4 hours" : "4 часа", + "Busy" : "Занят", "Mute all notifications" : "Отключить все уведомления", "Appear offline" : "\"Не в сети\" для остальных" },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" diff --git a/apps/user_status/l10n/sc.js b/apps/user_status/l10n/sc.js index 48478e8a16b..d4836447296 100644 --- a/apps/user_status/l10n/sc.js +++ b/apps/user_status/l10n/sc.js @@ -14,7 +14,6 @@ OC.L10N.register( "What is your status?" : "Cale est s'istadu tuo?", "There was an error saving the status" : "B'at àpidu un'errore sarvende s'istadu", "There was an error clearing the status" : "B'at àpidu un'errore limpiende s'istadu", - "Set status" : "Cunfigura un'istadu", "Online status" : "Istadu in lìnia", "Status message" : "Messàgiu de istadu", "Clear status message" : "Lìmpia su messàgiu de istadu", @@ -27,10 +26,12 @@ OC.L10N.register( "Do not disturb" : "No istorbes", "Invisible" : "Invisìbile", "Offline" : "Fora de lìnia", + "Set status" : "Cunfigura un'istadu", "There was an error saving the new status" : "B'at àpidu un'errore sarvende s'istadu nou", "30 minutes" : "30 minutos", "1 hour" : "1 ora", "4 hours" : "4 oras", + "Busy" : "Impinnadu", "Mute all notifications" : "Istuda totu is notìficas", "Appear offline" : "Mustra•ti foras de lìnia" }, diff --git a/apps/user_status/l10n/sc.json b/apps/user_status/l10n/sc.json index 69ff42f9824..9bec309186e 100644 --- a/apps/user_status/l10n/sc.json +++ b/apps/user_status/l10n/sc.json @@ -12,7 +12,6 @@ "What is your status?" : "Cale est s'istadu tuo?", "There was an error saving the status" : "B'at àpidu un'errore sarvende s'istadu", "There was an error clearing the status" : "B'at àpidu un'errore limpiende s'istadu", - "Set status" : "Cunfigura un'istadu", "Online status" : "Istadu in lìnia", "Status message" : "Messàgiu de istadu", "Clear status message" : "Lìmpia su messàgiu de istadu", @@ -25,10 +24,12 @@ "Do not disturb" : "No istorbes", "Invisible" : "Invisìbile", "Offline" : "Fora de lìnia", + "Set status" : "Cunfigura un'istadu", "There was an error saving the new status" : "B'at àpidu un'errore sarvende s'istadu nou", "30 minutes" : "30 minutos", "1 hour" : "1 ora", "4 hours" : "4 oras", + "Busy" : "Impinnadu", "Mute all notifications" : "Istuda totu is notìficas", "Appear offline" : "Mustra•ti foras de lìnia" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/sk.js b/apps/user_status/l10n/sk.js index 37a86a35818..9d91578b0f2 100644 --- a/apps/user_status/l10n/sk.js +++ b/apps/user_status/l10n/sk.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Pri ukladaní stavu sa vyskytla chyba", "There was an error clearing the status" : "Pri čistení stavu sa vyskytla chyba", "There was an error reverting the status" : "Pri zmene statusu sa vyskytla chyba", - "Set status" : "Nastaviť stav", "Online status" : "Stav pripojenia", "Status message" : "Správa o stave", "Set absence period" : "Nastaviť dobu neprítomnosti", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Nerušiť", "Invisible" : "Neviditeľnosť", "Offline" : "Offline", + "Set status" : "Nastaviť stav", "There was an error saving the new status" : "Pri ukladaní nového stavu sa vyskytla chyba", "30 minutes" : "30 minút", "1 hour" : "1 hodina", "4 hours" : "4 hodiny", + "Busy" : "Zaneprázdnený", "Mute all notifications" : "Stíšiť všetky upozornenia", "Appear offline" : "V odpojenom režime" }, diff --git a/apps/user_status/l10n/sk.json b/apps/user_status/l10n/sk.json index 8f0bb8ee8dd..dffd39b9e8c 100644 --- a/apps/user_status/l10n/sk.json +++ b/apps/user_status/l10n/sk.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Pri ukladaní stavu sa vyskytla chyba", "There was an error clearing the status" : "Pri čistení stavu sa vyskytla chyba", "There was an error reverting the status" : "Pri zmene statusu sa vyskytla chyba", - "Set status" : "Nastaviť stav", "Online status" : "Stav pripojenia", "Status message" : "Správa o stave", "Set absence period" : "Nastaviť dobu neprítomnosti", @@ -37,10 +36,12 @@ "Do not disturb" : "Nerušiť", "Invisible" : "Neviditeľnosť", "Offline" : "Offline", + "Set status" : "Nastaviť stav", "There was an error saving the new status" : "Pri ukladaní nového stavu sa vyskytla chyba", "30 minutes" : "30 minút", "1 hour" : "1 hodina", "4 hours" : "4 hodiny", + "Busy" : "Zaneprázdnený", "Mute all notifications" : "Stíšiť všetky upozornenia", "Appear offline" : "V odpojenom režime" },"pluralForm" :"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/user_status/l10n/sl.js b/apps/user_status/l10n/sl.js index a5d93a1a571..0eb3b4a6d14 100644 --- a/apps/user_status/l10n/sl.js +++ b/apps/user_status/l10n/sl.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Prišlo je do napake med shranjevanjem stanja", "There was an error clearing the status" : "Prišlo je do napake med odstranjevanjem stanja", "There was an error reverting the status" : "Prišlo je do napake spreminjanja stanja", - "Set status" : "Nastavi stanje", "Online status" : "Povezano stanje", "Status message" : "Sporočilo stanja", "Your status was set automatically" : "Stanje je določeno samodejno", @@ -37,10 +36,12 @@ OC.L10N.register( "Do not disturb" : "Ne pustim se motiti", "Invisible" : "Drugim neviden", "Offline" : "Brez povezave", + "Set status" : "Nastavi stanje", "There was an error saving the new status" : "Prišlo je do napake med shranjevanjem novega stanja", "30 minutes" : "po 30 minutah", "1 hour" : "po 1 uri", "4 hours" : "po 4 urah", + "Busy" : "Zasedeno", "Mute all notifications" : "Utiša vsa obvestila", "Appear offline" : "Pokaže kot brez povezave" }, diff --git a/apps/user_status/l10n/sl.json b/apps/user_status/l10n/sl.json index 18651f63211..4e0c8582227 100644 --- a/apps/user_status/l10n/sl.json +++ b/apps/user_status/l10n/sl.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Prišlo je do napake med shranjevanjem stanja", "There was an error clearing the status" : "Prišlo je do napake med odstranjevanjem stanja", "There was an error reverting the status" : "Prišlo je do napake spreminjanja stanja", - "Set status" : "Nastavi stanje", "Online status" : "Povezano stanje", "Status message" : "Sporočilo stanja", "Your status was set automatically" : "Stanje je določeno samodejno", @@ -35,10 +34,12 @@ "Do not disturb" : "Ne pustim se motiti", "Invisible" : "Drugim neviden", "Offline" : "Brez povezave", + "Set status" : "Nastavi stanje", "There was an error saving the new status" : "Prišlo je do napake med shranjevanjem novega stanja", "30 minutes" : "po 30 minutah", "1 hour" : "po 1 uri", "4 hours" : "po 4 urah", + "Busy" : "Zasedeno", "Mute all notifications" : "Utiša vsa obvestila", "Appear offline" : "Pokaže kot brez povezave" },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" diff --git a/apps/user_status/l10n/sr.js b/apps/user_status/l10n/sr.js index 09fe505e605..8c94ab10e2e 100644 --- a/apps/user_status/l10n/sr.js +++ b/apps/user_status/l10n/sr.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Дошло је до грешке приликом чувања статуса", "There was an error clearing the status" : "Дошло је до грешке приликом брисања статуса", "There was an error reverting the status" : "Дошло је до грешке приликом враћања претходног статуса", - "Set status" : "Постави статус", "Online status" : "Мрежни статус", "Status message" : "Порука стања", "Set absence period" : "Постави период одсутности", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Не узнемиравај", "Invisible" : "Невидљива", "Offline" : "Ван мреже", + "Set status" : "Постави статус", "There was an error saving the new status" : "Дошло је до грешке приликом чувања новог статуса", "30 minutes" : "30 минута", "1 hour" : "1 сат", "4 hours" : "4 сата", + "Busy" : "Заузет", "Mute all notifications" : "Искључи сва обавештења", "Appear offline" : "Прикажи као ван мреже" }, diff --git a/apps/user_status/l10n/sr.json b/apps/user_status/l10n/sr.json index 07d91be7963..a7953e5e0a3 100644 --- a/apps/user_status/l10n/sr.json +++ b/apps/user_status/l10n/sr.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Дошло је до грешке приликом чувања статуса", "There was an error clearing the status" : "Дошло је до грешке приликом брисања статуса", "There was an error reverting the status" : "Дошло је до грешке приликом враћања претходног статуса", - "Set status" : "Постави статус", "Online status" : "Мрежни статус", "Status message" : "Порука стања", "Set absence period" : "Постави период одсутности", @@ -37,10 +36,12 @@ "Do not disturb" : "Не узнемиравај", "Invisible" : "Невидљива", "Offline" : "Ван мреже", + "Set status" : "Постави статус", "There was an error saving the new status" : "Дошло је до грешке приликом чувања новог статуса", "30 minutes" : "30 минута", "1 hour" : "1 сат", "4 hours" : "4 сата", + "Busy" : "Заузет", "Mute all notifications" : "Искључи сва обавештења", "Appear offline" : "Прикажи као ван мреже" },"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);" diff --git a/apps/user_status/l10n/sr@latin.js b/apps/user_status/l10n/sr@latin.js index 7cfa68f0704..532e6651761 100644 --- a/apps/user_status/l10n/sr@latin.js +++ b/apps/user_status/l10n/sr@latin.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Greška u snimanju statusa", "There was an error clearing the status" : "Greška u brisanju statusa", "There was an error reverting the status" : "Greška u vraćanju statusa", - "Set status" : "Postavi status", "Online status" : "Mrežni status", "Status message" : "Poruka stanja", "Your status was set automatically" : "Vaš status je postavljen automatski", @@ -37,6 +36,7 @@ OC.L10N.register( "Do not disturb" : "Ne uznemiravaj", "Invisible" : "Nevidljiv", "Offline" : "Van mreže", + "Set status" : "Postavi status", "There was an error saving the new status" : "Greška u snimanju novog statusa", "30 minutes" : "30 minuta", "1 hour" : "1 sat", diff --git a/apps/user_status/l10n/sr@latin.json b/apps/user_status/l10n/sr@latin.json index 291cc2acdae..bb642d5708c 100644 --- a/apps/user_status/l10n/sr@latin.json +++ b/apps/user_status/l10n/sr@latin.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Greška u snimanju statusa", "There was an error clearing the status" : "Greška u brisanju statusa", "There was an error reverting the status" : "Greška u vraćanju statusa", - "Set status" : "Postavi status", "Online status" : "Mrežni status", "Status message" : "Poruka stanja", "Your status was set automatically" : "Vaš status je postavljen automatski", @@ -35,6 +34,7 @@ "Do not disturb" : "Ne uznemiravaj", "Invisible" : "Nevidljiv", "Offline" : "Van mreže", + "Set status" : "Postavi status", "There was an error saving the new status" : "Greška u snimanju novog statusa", "30 minutes" : "30 minuta", "1 hour" : "1 sat", diff --git a/apps/user_status/l10n/sv.js b/apps/user_status/l10n/sv.js index 5561854bbe1..acd1b224d4b 100644 --- a/apps/user_status/l10n/sv.js +++ b/apps/user_status/l10n/sv.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Ett fel inträffade när statusen skulle ändras", "There was an error clearing the status" : "Ett fel inträffade när statusen skulle rensas", "There was an error reverting the status" : "Det gick inte att återställa statusen", - "Set status" : "Sätt status", "Online status" : "Online-status", "Status message" : "Statusmeddelande", "Set absence period" : "Ställ in frånvaroperiod", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Stör ej", "Invisible" : "Osynlig", "Offline" : "Frånkopplad", + "Set status" : "Sätt status", "There was an error saving the new status" : "Ett fel inträffade när den nya statusen skulle sparas", "30 minutes" : "30 minuter", "1 hour" : "1 timme", "4 hours" : "4 timmar", + "Busy" : "Upptagen", "Mute all notifications" : "Dölj alla aviseringar", "Appear offline" : "Visa som frånkopplad" }, diff --git a/apps/user_status/l10n/sv.json b/apps/user_status/l10n/sv.json index bf85b5414b9..502baef321b 100644 --- a/apps/user_status/l10n/sv.json +++ b/apps/user_status/l10n/sv.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Ett fel inträffade när statusen skulle ändras", "There was an error clearing the status" : "Ett fel inträffade när statusen skulle rensas", "There was an error reverting the status" : "Det gick inte att återställa statusen", - "Set status" : "Sätt status", "Online status" : "Online-status", "Status message" : "Statusmeddelande", "Set absence period" : "Ställ in frånvaroperiod", @@ -37,10 +36,12 @@ "Do not disturb" : "Stör ej", "Invisible" : "Osynlig", "Offline" : "Frånkopplad", + "Set status" : "Sätt status", "There was an error saving the new status" : "Ett fel inträffade när den nya statusen skulle sparas", "30 minutes" : "30 minuter", "1 hour" : "1 timme", "4 hours" : "4 timmar", + "Busy" : "Upptagen", "Mute all notifications" : "Dölj alla aviseringar", "Appear offline" : "Visa som frånkopplad" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/sw.js b/apps/user_status/l10n/sw.js index eb0aab1c727..e633d96c1dd 100644 --- a/apps/user_status/l10n/sw.js +++ b/apps/user_status/l10n/sw.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Kulikuwa na hitilafu katika kuhifadhi hali", "There was an error clearing the status" : "Kulikuwa na hitilafu katika kufuta hali", "There was an error reverting the status" : "Kulikuwa na hitilafu katika kurejesha hali", - "Set status" : "Panglia hali", "Online status" : "Hali ya mtandaoni", "Status message" : "Hali ya ujumbe", "Set absence period" : "Weka kipindi cha kutokuwepo", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Acha kusumbua", "Invisible" : "Haionekani", "Offline" : "Nje ya mtandao", + "Set status" : "Panglia hali", "There was an error saving the new status" : "Kulikuwa na hitilafu katika kuhifadhi hali mpya", "30 minutes" : "Dakika 30", "1 hour" : "Saa 1", "4 hours" : "Masaa 4", + "Busy" : "Bize", "Mute all notifications" : "Zima arifu zote", "Appear offline" : "Tokea nje ya mtandao" }, diff --git a/apps/user_status/l10n/sw.json b/apps/user_status/l10n/sw.json index 7fb031bbbea..e6b01ce2ac4 100644 --- a/apps/user_status/l10n/sw.json +++ b/apps/user_status/l10n/sw.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Kulikuwa na hitilafu katika kuhifadhi hali", "There was an error clearing the status" : "Kulikuwa na hitilafu katika kufuta hali", "There was an error reverting the status" : "Kulikuwa na hitilafu katika kurejesha hali", - "Set status" : "Panglia hali", "Online status" : "Hali ya mtandaoni", "Status message" : "Hali ya ujumbe", "Set absence period" : "Weka kipindi cha kutokuwepo", @@ -37,10 +36,12 @@ "Do not disturb" : "Acha kusumbua", "Invisible" : "Haionekani", "Offline" : "Nje ya mtandao", + "Set status" : "Panglia hali", "There was an error saving the new status" : "Kulikuwa na hitilafu katika kuhifadhi hali mpya", "30 minutes" : "Dakika 30", "1 hour" : "Saa 1", "4 hours" : "Masaa 4", + "Busy" : "Bize", "Mute all notifications" : "Zima arifu zote", "Appear offline" : "Tokea nje ya mtandao" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/th.js b/apps/user_status/l10n/th.js index 8759327b160..00bdced011d 100644 --- a/apps/user_status/l10n/th.js +++ b/apps/user_status/l10n/th.js @@ -13,7 +13,6 @@ OC.L10N.register( "What is your status?" : "สถานะของคุณ", "There was an error saving the status" : "เกิดข้อผิดพลาดในการบันทึกสถานะ", "There was an error clearing the status" : "เกิดข้อผิดพลาดในการลบสถานะ", - "Set status" : "กำหนดสถานะ", "Online status" : "สถานะออนไลน์", "Status message" : "ข้อความสถานะ", "Clear status message" : "ล้างข้อความสถานะ", @@ -26,6 +25,7 @@ OC.L10N.register( "Do not disturb" : "ห้ามรบกวน", "Invisible" : "ไม่แสดงสถานะ", "Offline" : "ออฟไลน์", + "Set status" : "กำหนดสถานะ", "There was an error saving the new status" : "เกิดข้อผิดพลาดในการบันทึกสถานะใหม่", "30 minutes" : "30 นาที", "1 hour" : "1 ชั่วโมง", diff --git a/apps/user_status/l10n/th.json b/apps/user_status/l10n/th.json index 4455cb346cb..36ca7503b17 100644 --- a/apps/user_status/l10n/th.json +++ b/apps/user_status/l10n/th.json @@ -11,7 +11,6 @@ "What is your status?" : "สถานะของคุณ", "There was an error saving the status" : "เกิดข้อผิดพลาดในการบันทึกสถานะ", "There was an error clearing the status" : "เกิดข้อผิดพลาดในการลบสถานะ", - "Set status" : "กำหนดสถานะ", "Online status" : "สถานะออนไลน์", "Status message" : "ข้อความสถานะ", "Clear status message" : "ล้างข้อความสถานะ", @@ -24,6 +23,7 @@ "Do not disturb" : "ห้ามรบกวน", "Invisible" : "ไม่แสดงสถานะ", "Offline" : "ออฟไลน์", + "Set status" : "กำหนดสถานะ", "There was an error saving the new status" : "เกิดข้อผิดพลาดในการบันทึกสถานะใหม่", "30 minutes" : "30 นาที", "1 hour" : "1 ชั่วโมง", diff --git a/apps/user_status/l10n/tr.js b/apps/user_status/l10n/tr.js index bb0e38051ae..c63ff93c164 100644 --- a/apps/user_status/l10n/tr.js +++ b/apps/user_status/l10n/tr.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Durum kaydedilirken bir sorun çıktı", "There was an error clearing the status" : "Durum kaldırılırken bir sorun çıktı", "There was an error reverting the status" : "Durum geri alınırken bir sorun çıktı", - "Set status" : "Durumu ayarla", "Online status" : "Çevrim içi durumu", "Status message" : "Durum iletisi", "Set absence period" : "Bulunmama aralığını ayarla", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Rahatsız etmeyin", "Invisible" : "Gizli", "Offline" : "Çevrim dışı", + "Set status" : "Durumu ayarla", "There was an error saving the new status" : "Yeni durum kaydedilirken bir sorun çıktı", "30 minutes" : "30 dakika", "1 hour" : "1 saat", "4 hours" : "4 saat", + "Busy" : "Meşgul", "Mute all notifications" : "Tüm bildirimleri kapat", "Appear offline" : "Çevrim dışı görün" }, diff --git a/apps/user_status/l10n/tr.json b/apps/user_status/l10n/tr.json index 1aac3505349..c601fbbd635 100644 --- a/apps/user_status/l10n/tr.json +++ b/apps/user_status/l10n/tr.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Durum kaydedilirken bir sorun çıktı", "There was an error clearing the status" : "Durum kaldırılırken bir sorun çıktı", "There was an error reverting the status" : "Durum geri alınırken bir sorun çıktı", - "Set status" : "Durumu ayarla", "Online status" : "Çevrim içi durumu", "Status message" : "Durum iletisi", "Set absence period" : "Bulunmama aralığını ayarla", @@ -37,10 +36,12 @@ "Do not disturb" : "Rahatsız etmeyin", "Invisible" : "Gizli", "Offline" : "Çevrim dışı", + "Set status" : "Durumu ayarla", "There was an error saving the new status" : "Yeni durum kaydedilirken bir sorun çıktı", "30 minutes" : "30 dakika", "1 hour" : "1 saat", "4 hours" : "4 saat", + "Busy" : "Meşgul", "Mute all notifications" : "Tüm bildirimleri kapat", "Appear offline" : "Çevrim dışı görün" },"pluralForm" :"nplurals=2; plural=(n > 1);" diff --git a/apps/user_status/l10n/ug.js b/apps/user_status/l10n/ug.js index 6b25c2e9221..43c620037e3 100644 --- a/apps/user_status/l10n/ug.js +++ b/apps/user_status/l10n/ug.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "ھالەتنى ساقلاشتا خاتالىق كۆرۈلدى", "There was an error clearing the status" : "ھالەتنى تازىلاشتا خاتالىق كۆرۈلدى", "There was an error reverting the status" : "ھالەتنى ئەسلىگە كەلتۈرۈشتە خاتالىق كۆرۈلدى", - "Set status" : "ھالەت بەلگىلەڭ", "Online status" : "توردىكى ئورنى", "Status message" : "ھالەت ئۇچۇرى", "Set absence period" : "يوقلۇق ۋاقتىنى بەلگىلەڭ", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "ئاۋارە قىلماڭ", "Invisible" : "كۆرۈنمەيدۇ", "Offline" : "تورسىز", + "Set status" : "ھالەت بەلگىلەڭ", "There was an error saving the new status" : "يېڭى ھالەتنى ساقلاشتا خاتالىق كۆرۈلدى", "30 minutes" : "30 مىنۇت", "1 hour" : "1 سائەت", "4 hours" : "4 سائەت", + "Busy" : "ئالدىراش", "Mute all notifications" : "بارلىق ئۇقتۇرۇشلارنى ئاۋازسىز قىلىڭ", "Appear offline" : "تورسىز كۆرۈنۈش" }, diff --git a/apps/user_status/l10n/ug.json b/apps/user_status/l10n/ug.json index b79ee054970..eb439948185 100644 --- a/apps/user_status/l10n/ug.json +++ b/apps/user_status/l10n/ug.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "ھالەتنى ساقلاشتا خاتالىق كۆرۈلدى", "There was an error clearing the status" : "ھالەتنى تازىلاشتا خاتالىق كۆرۈلدى", "There was an error reverting the status" : "ھالەتنى ئەسلىگە كەلتۈرۈشتە خاتالىق كۆرۈلدى", - "Set status" : "ھالەت بەلگىلەڭ", "Online status" : "توردىكى ئورنى", "Status message" : "ھالەت ئۇچۇرى", "Set absence period" : "يوقلۇق ۋاقتىنى بەلگىلەڭ", @@ -37,10 +36,12 @@ "Do not disturb" : "ئاۋارە قىلماڭ", "Invisible" : "كۆرۈنمەيدۇ", "Offline" : "تورسىز", + "Set status" : "ھالەت بەلگىلەڭ", "There was an error saving the new status" : "يېڭى ھالەتنى ساقلاشتا خاتالىق كۆرۈلدى", "30 minutes" : "30 مىنۇت", "1 hour" : "1 سائەت", "4 hours" : "4 سائەت", + "Busy" : "ئالدىراش", "Mute all notifications" : "بارلىق ئۇقتۇرۇشلارنى ئاۋازسىز قىلىڭ", "Appear offline" : "تورسىز كۆرۈنۈش" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/user_status/l10n/uk.js b/apps/user_status/l10n/uk.js index b1069eab6ca..a76a67bb63c 100644 --- a/apps/user_status/l10n/uk.js +++ b/apps/user_status/l10n/uk.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Помилка під час збереження статусу", "There was an error clearing the status" : "Помилка під час очищення статусу", "There was an error reverting the status" : "Помилка при скиданні статусу", - "Set status" : "Встановити статус", "Online status" : "Мій статус доступності", "Status message" : "Повідомлення про статус", "Set absence period" : "Встановити період відсутности", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Не турбувати", "Invisible" : "Невидимка", "Offline" : "Поза мережею", + "Set status" : "Встановити статус", "There was an error saving the new status" : "Помилка під час збереження статусу", "30 minutes" : "30 хвилин", "1 hour" : "1 година", "4 hours" : "4 години", + "Busy" : "Зайнято", "Mute all notifications" : "Вимкнути всі сповіщення", "Appear offline" : "Перебуваю поза мережею" }, diff --git a/apps/user_status/l10n/uk.json b/apps/user_status/l10n/uk.json index b0694d0df3c..66e5f7130d6 100644 --- a/apps/user_status/l10n/uk.json +++ b/apps/user_status/l10n/uk.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Помилка під час збереження статусу", "There was an error clearing the status" : "Помилка під час очищення статусу", "There was an error reverting the status" : "Помилка при скиданні статусу", - "Set status" : "Встановити статус", "Online status" : "Мій статус доступності", "Status message" : "Повідомлення про статус", "Set absence period" : "Встановити період відсутности", @@ -37,10 +36,12 @@ "Do not disturb" : "Не турбувати", "Invisible" : "Невидимка", "Offline" : "Поза мережею", + "Set status" : "Встановити статус", "There was an error saving the new status" : "Помилка під час збереження статусу", "30 minutes" : "30 хвилин", "1 hour" : "1 година", "4 hours" : "4 години", + "Busy" : "Зайнято", "Mute all notifications" : "Вимкнути всі сповіщення", "Appear offline" : "Перебуваю поза мережею" },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" diff --git a/apps/user_status/l10n/uz.js b/apps/user_status/l10n/uz.js index 1afb45d134d..c2ada8c65d0 100644 --- a/apps/user_status/l10n/uz.js +++ b/apps/user_status/l10n/uz.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "Holatni saqlashda xatolik yuz berdi", "There was an error clearing the status" : "Holatni tozalashda xatolik yuz berdi", "There was an error reverting the status" : "Holatni qaytarishda xatolik yuz berdi", - "Set status" : "Holatni belgilash", "Online status" : "Onlayn holat", "Status message" : "Holat xabari", "Set absence period" : "Aloqadan o`chirilgan muddatini belgilang", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "Bezovta qilmang", "Invisible" : "Ko'rinmas", "Offline" : "Offline", + "Set status" : "Holatni belgilash", "There was an error saving the new status" : "Yangi holatni saqlashda xatolik yuz berdi", "30 minutes" : "30 minut", "1 hour" : "1 soat", "4 hours" : "4 soat", + "Busy" : "Band", "Mute all notifications" : "Barcha bildirishnomalarni o'chirish", "Appear offline" : "Oflayn ko'rinishda" }, diff --git a/apps/user_status/l10n/uz.json b/apps/user_status/l10n/uz.json index 8e95679d844..8d4d073a89f 100644 --- a/apps/user_status/l10n/uz.json +++ b/apps/user_status/l10n/uz.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "Holatni saqlashda xatolik yuz berdi", "There was an error clearing the status" : "Holatni tozalashda xatolik yuz berdi", "There was an error reverting the status" : "Holatni qaytarishda xatolik yuz berdi", - "Set status" : "Holatni belgilash", "Online status" : "Onlayn holat", "Status message" : "Holat xabari", "Set absence period" : "Aloqadan o`chirilgan muddatini belgilang", @@ -37,10 +36,12 @@ "Do not disturb" : "Bezovta qilmang", "Invisible" : "Ko'rinmas", "Offline" : "Offline", + "Set status" : "Holatni belgilash", "There was an error saving the new status" : "Yangi holatni saqlashda xatolik yuz berdi", "30 minutes" : "30 minut", "1 hour" : "1 soat", "4 hours" : "4 soat", + "Busy" : "Band", "Mute all notifications" : "Barcha bildirishnomalarni o'chirish", "Appear offline" : "Oflayn ko'rinishda" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/user_status/l10n/vi.js b/apps/user_status/l10n/vi.js index 0835ddfed8a..0c2e8081a8e 100644 --- a/apps/user_status/l10n/vi.js +++ b/apps/user_status/l10n/vi.js @@ -22,7 +22,6 @@ OC.L10N.register( "There was an error saving the status" : "Đã xảy ra lỗi khi lưu trạng thái", "There was an error clearing the status" : "Đã xảy ra lỗi khi xóa trạng thái", "There was an error reverting the status" : "Đã xảy ra lỗi khi hoàn nguyên trạng thái", - "Set status" : "Đặt trạng thái", "Online status" : "Trạng thái trực tuyến", "Status message" : "Thông báo trạng thái", "Your status was set automatically" : "Trạng thái của bạn đã được đặt tự động", @@ -36,10 +35,12 @@ OC.L10N.register( "Do not disturb" : "Đừng làm phiền", "Invisible" : "Vô hình", "Offline" : "Ngoại tuyến", + "Set status" : "Đặt trạng thái", "There was an error saving the new status" : "Đã xảy ra lỗi khi lưu trạng thái mới", "30 minutes" : "30 phút", "1 hour" : "1 tiếng", "4 hours" : "4 tiếng", + "Busy" : "Bận", "Mute all notifications" : "Tắt tiếng tất cả thông báo", "Appear offline" : "Đang offline" }, diff --git a/apps/user_status/l10n/vi.json b/apps/user_status/l10n/vi.json index 42f471f25f4..daf7d940656 100644 --- a/apps/user_status/l10n/vi.json +++ b/apps/user_status/l10n/vi.json @@ -20,7 +20,6 @@ "There was an error saving the status" : "Đã xảy ra lỗi khi lưu trạng thái", "There was an error clearing the status" : "Đã xảy ra lỗi khi xóa trạng thái", "There was an error reverting the status" : "Đã xảy ra lỗi khi hoàn nguyên trạng thái", - "Set status" : "Đặt trạng thái", "Online status" : "Trạng thái trực tuyến", "Status message" : "Thông báo trạng thái", "Your status was set automatically" : "Trạng thái của bạn đã được đặt tự động", @@ -34,10 +33,12 @@ "Do not disturb" : "Đừng làm phiền", "Invisible" : "Vô hình", "Offline" : "Ngoại tuyến", + "Set status" : "Đặt trạng thái", "There was an error saving the new status" : "Đã xảy ra lỗi khi lưu trạng thái mới", "30 minutes" : "30 phút", "1 hour" : "1 tiếng", "4 hours" : "4 tiếng", + "Busy" : "Bận", "Mute all notifications" : "Tắt tiếng tất cả thông báo", "Appear offline" : "Đang offline" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/user_status/l10n/zh_CN.js b/apps/user_status/l10n/zh_CN.js index ae5ce551a02..1bf11fddfff 100644 --- a/apps/user_status/l10n/zh_CN.js +++ b/apps/user_status/l10n/zh_CN.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "保存状态时出错", "There was an error clearing the status" : "清除状态时出错", "There was an error reverting the status" : "还原状态时发生错误", - "Set status" : "设定状态", "Online status" : "在线状态", "Status message" : "状态信息", "Set absence period" : "设置缺勤时段", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "勿扰", "Invisible" : "隐身", "Offline" : "离线", + "Set status" : "设定状态", "There was an error saving the new status" : "保存新状态时出错", "30 minutes" : "30 分钟", "1 hour" : "1小时", "4 hours" : "4小时", + "Busy" : "忙碌", "Mute all notifications" : "静音所有通知", "Appear offline" : "显示为离线" }, diff --git a/apps/user_status/l10n/zh_CN.json b/apps/user_status/l10n/zh_CN.json index a32bbefa3dc..7157edb0884 100644 --- a/apps/user_status/l10n/zh_CN.json +++ b/apps/user_status/l10n/zh_CN.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "保存状态时出错", "There was an error clearing the status" : "清除状态时出错", "There was an error reverting the status" : "还原状态时发生错误", - "Set status" : "设定状态", "Online status" : "在线状态", "Status message" : "状态信息", "Set absence period" : "设置缺勤时段", @@ -37,10 +36,12 @@ "Do not disturb" : "勿扰", "Invisible" : "隐身", "Offline" : "离线", + "Set status" : "设定状态", "There was an error saving the new status" : "保存新状态时出错", "30 minutes" : "30 分钟", "1 hour" : "1小时", "4 hours" : "4小时", + "Busy" : "忙碌", "Mute all notifications" : "静音所有通知", "Appear offline" : "显示为离线" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/user_status/l10n/zh_HK.js b/apps/user_status/l10n/zh_HK.js index a7aabc7d134..0cad7a3e277 100644 --- a/apps/user_status/l10n/zh_HK.js +++ b/apps/user_status/l10n/zh_HK.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "儲存狀態時發生錯誤", "There was an error clearing the status" : "變更狀態時發生錯誤", "There was an error reverting the status" : "恢復狀態時出錯", - "Set status" : "設定狀態", "Online status" : "線上狀態", "Status message" : "狀態訊息", "Set absence period" : "設定缺席時間", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "請勿打擾", "Invisible" : "隱藏", "Offline" : "離線", + "Set status" : "設定狀態", "There was an error saving the new status" : "儲存新狀態時發生錯誤", "30 minutes" : "30分鐘", "1 hour" : "1 小時", "4 hours" : "4 小時", + "Busy" : "忙碌", "Mute all notifications" : "靜音所有通知", "Appear offline" : "顯示為離線" }, diff --git a/apps/user_status/l10n/zh_HK.json b/apps/user_status/l10n/zh_HK.json index bb9d3d42002..dbea763794f 100644 --- a/apps/user_status/l10n/zh_HK.json +++ b/apps/user_status/l10n/zh_HK.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "儲存狀態時發生錯誤", "There was an error clearing the status" : "變更狀態時發生錯誤", "There was an error reverting the status" : "恢復狀態時出錯", - "Set status" : "設定狀態", "Online status" : "線上狀態", "Status message" : "狀態訊息", "Set absence period" : "設定缺席時間", @@ -37,10 +36,12 @@ "Do not disturb" : "請勿打擾", "Invisible" : "隱藏", "Offline" : "離線", + "Set status" : "設定狀態", "There was an error saving the new status" : "儲存新狀態時發生錯誤", "30 minutes" : "30分鐘", "1 hour" : "1 小時", "4 hours" : "4 小時", + "Busy" : "忙碌", "Mute all notifications" : "靜音所有通知", "Appear offline" : "顯示為離線" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/user_status/l10n/zh_TW.js b/apps/user_status/l10n/zh_TW.js index 2ec7311bd73..dbb1627765f 100644 --- a/apps/user_status/l10n/zh_TW.js +++ b/apps/user_status/l10n/zh_TW.js @@ -23,7 +23,6 @@ OC.L10N.register( "There was an error saving the status" : "儲存狀態時發生錯誤", "There was an error clearing the status" : "變更狀態時發生錯誤", "There was an error reverting the status" : "還原狀態時發生錯誤", - "Set status" : "設定狀態", "Online status" : "線上狀態", "Status message" : "狀態訊息", "Set absence period" : "設定缺席時間", @@ -39,10 +38,12 @@ OC.L10N.register( "Do not disturb" : "請勿打擾", "Invisible" : "隱藏", "Offline" : "離線", + "Set status" : "設定狀態", "There was an error saving the new status" : "儲存新狀態時發生錯誤", "30 minutes" : "30 分鐘", "1 hour" : "1 小時", "4 hours" : "4 小時", + "Busy" : "忙碌", "Mute all notifications" : "靜音所有通知", "Appear offline" : "顯示為離線" }, diff --git a/apps/user_status/l10n/zh_TW.json b/apps/user_status/l10n/zh_TW.json index fa6b56296ef..e42a675045d 100644 --- a/apps/user_status/l10n/zh_TW.json +++ b/apps/user_status/l10n/zh_TW.json @@ -21,7 +21,6 @@ "There was an error saving the status" : "儲存狀態時發生錯誤", "There was an error clearing the status" : "變更狀態時發生錯誤", "There was an error reverting the status" : "還原狀態時發生錯誤", - "Set status" : "設定狀態", "Online status" : "線上狀態", "Status message" : "狀態訊息", "Set absence period" : "設定缺席時間", @@ -37,10 +36,12 @@ "Do not disturb" : "請勿打擾", "Invisible" : "隱藏", "Offline" : "離線", + "Set status" : "設定狀態", "There was an error saving the new status" : "儲存新狀態時發生錯誤", "30 minutes" : "30 分鐘", "1 hour" : "1 小時", "4 hours" : "4 小時", + "Busy" : "忙碌", "Mute all notifications" : "靜音所有通知", "Appear offline" : "顯示為離線" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/user_status/lib/Service/PredefinedStatusService.php b/apps/user_status/lib/Service/PredefinedStatusService.php index 6606966acd1..599d5b8b52f 100644 --- a/apps/user_status/lib/Service/PredefinedStatusService.php +++ b/apps/user_status/lib/Service/PredefinedStatusService.php @@ -20,6 +20,7 @@ use OCP\UserStatus\IUserStatus; * @package OCA\UserStatus\Service */ class PredefinedStatusService { + private const BE_RIGHT_BACK = 'be-right-back'; private const MEETING = 'meeting'; private const COMMUTING = 'commuting'; private const SICK_LEAVE = 'sick-leave'; @@ -65,6 +66,15 @@ class PredefinedStatusService { ], ], [ + 'id' => self::BE_RIGHT_BACK, + 'icon' => '⏳', + 'message' => $this->getTranslatedStatusForId(self::BE_RIGHT_BACK), + 'clearAt' => [ + 'type' => 'period', + 'time' => 900, + ], + ], + [ 'id' => self::REMOTE_WORK, 'icon' => '🏡', 'message' => $this->getTranslatedStatusForId(self::REMOTE_WORK), @@ -143,6 +153,9 @@ class PredefinedStatusService { case self::REMOTE_WORK: return '🏡'; + case self::BE_RIGHT_BACK: + return '⏳'; + case self::CALL: return '💬'; @@ -179,6 +192,9 @@ class PredefinedStatusService { case self::CALL: return $this->l10n->t('In a call'); + case self::BE_RIGHT_BACK: + return $this->l10n->t('Be right back'); + default: return null; } @@ -195,6 +211,7 @@ class PredefinedStatusService { self::SICK_LEAVE, self::VACATIONING, self::OUT_OF_OFFICE, + self::BE_RIGHT_BACK, self::REMOTE_WORK, IUserStatus::MESSAGE_CALL, IUserStatus::MESSAGE_AVAILABILITY, diff --git a/apps/user_status/openapi.json b/apps/user_status/openapi.json index 65d9af59fef..d1018fa26e6 100644 --- a/apps/user_status/openapi.json +++ b/apps/user_status/openapi.json @@ -124,8 +124,12 @@ "type": "string" }, "clearAt": { - "$ref": "#/components/schemas/ClearAt", - "nullable": true + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/ClearAt" + } + ] } } }, diff --git a/apps/user_status/src/components/ClearAtSelect.vue b/apps/user_status/src/components/ClearAtSelect.vue index c685e77daa8..91b816dc04a 100644 --- a/apps/user_status/src/components/ClearAtSelect.vue +++ b/apps/user_status/src/components/ClearAtSelect.vue @@ -14,6 +14,7 @@ :value="option" :clearable="false" placement="top" + label-outside @option:selected="select" /> </div> </template> @@ -72,12 +73,9 @@ export default { <style lang="scss" scoped> .clear-at-select { display: flex; - margin-bottom: 10px; + gap: calc(2 * var(--default-grid-baseline)); align-items: center; - - &__label { - margin-inline-end: 12px; - } + margin-block: 0 calc(2 * var(--default-grid-baseline)); &__select { flex-grow: 1; diff --git a/apps/user_status/src/components/OnlineStatusSelect.vue b/apps/user_status/src/components/OnlineStatusSelect.vue index cf34aefef53..0abcc8d68e6 100644 --- a/apps/user_status/src/components/OnlineStatusSelect.vue +++ b/apps/user_status/src/components/OnlineStatusSelect.vue @@ -11,9 +11,10 @@ name="user-status-online" @change="onChange"> <label :for="id" class="user-status-online-select__label"> - {{ label }} <NcUserStatusIcon :status="type" + class="user-status-online-select__icon" aria-hidden="true" /> + {{ label }} <em class="user-status-online-select__subline">{{ subline }}</em> </label> </div> @@ -63,45 +64,42 @@ export default { </script> <style lang="scss" scoped> -@use 'sass:math'; -$icon-size: 24px; -$label-padding: 8px; - .user-status-online-select { &__label { - position: relative; - display: block; - margin: $label-padding; - padding: $label-padding; - padding-inline-start: $icon-size + $label-padding * 2; - border: 2px solid var(--color-main-background); + box-sizing: inherit; + display: grid; + grid-template-columns: var(--default-clickable-area) 1fr 2fr; + align-items: center; + gap: var(--default-grid-baseline); + min-height: var(--default-clickable-area); + padding: var(--default-grid-baseline); border-radius: var(--border-radius-large); background-color: var(--color-background-hover); - background-position: $label-padding center; - background-size: $icon-size; - span, - & { + &, & * { cursor: pointer; } - span { - position: absolute; - top: calc(50% - 10px); - inset-inline-start: 10px; - display: block; - width: $icon-size; - height: $icon-size; + &:hover { + background-color: var(--color-background-dark); } } + &__icon { + flex-shrink: 0; + max-width: 34px; + max-height: 100%; + } + &__input:checked + &__label { outline: 2px solid var(--color-main-text); + background-color: var(--color-background-dark); box-shadow: 0 0 0 4px var(--color-main-background); } &__input:focus-visible + &__label { outline: 2px solid var(--color-primary-element) !important; + background-color: var(--color-background-dark); } &__subline { diff --git a/apps/user_status/src/components/PredefinedStatus.vue b/apps/user_status/src/components/PredefinedStatus.vue index 8ce1acd0411..b12892d4add 100644 --- a/apps/user_status/src/components/PredefinedStatus.vue +++ b/apps/user_status/src/components/PredefinedStatus.vue @@ -81,10 +81,19 @@ export default { flex-basis: 100%; border-radius: var(--border-radius); align-items: center; - min-height: 44px; + min-height: var(--default-clickable-area); + padding-inline: var(--default-grid-baseline); + + &, & * { + cursor: pointer; + } + + &:hover { + background-color: var(--color-background-dark); + } &--icon { - flex-basis: 40px; + flex-basis: var(--default-clickable-area); text-align: center; } @@ -106,11 +115,13 @@ export default { &__label:active { outline: 2px solid var(--color-main-text); box-shadow: 0 0 0 4px var(--color-main-background); + background-color: var(--color-background-dark); border-radius: var(--border-radius-large); } &__input:focus-visible + &__label { outline: 2px solid var(--color-primary-element) !important; + background-color: var(--color-background-dark); border-radius: var(--border-radius-large); } } diff --git a/apps/user_status/src/components/PredefinedStatusesList.vue b/apps/user_status/src/components/PredefinedStatusesList.vue index 0632d13d52c..cdf359dce76 100644 --- a/apps/user_status/src/components/PredefinedStatusesList.vue +++ b/apps/user_status/src/components/PredefinedStatusesList.vue @@ -78,6 +78,7 @@ export default { .predefined-statuses-list { display: flex; flex-direction: column; - margin-bottom: 10px; + gap: var(--default-grid-baseline); + margin-block: 0 calc(2 * var(--default-grid-baseline)); } </style> diff --git a/apps/user_status/src/components/PreviousStatus.vue b/apps/user_status/src/components/PreviousStatus.vue index 221498ed2a2..58d6ebd294b 100644 --- a/apps/user_status/src/components/PreviousStatus.vue +++ b/apps/user_status/src/components/PreviousStatus.vue @@ -65,7 +65,8 @@ export default { flex-basis: 100%; border-radius: var(--border-radius); align-items: center; - min-height: 44px; + min-height: var(--default-clickable-area); + padding-inline: var(--default-grid-baseline); &:hover, &:focus { @@ -77,7 +78,7 @@ export default { } &__icon { - flex-basis: 40px; + flex-basis: var(--default-clickable-area); text-align: center; } diff --git a/apps/user_status/src/components/SetStatusModal.vue b/apps/user_status/src/components/SetStatusModal.vue index bafa9b193a5..8624ed19e94 100644 --- a/apps/user_status/src/components/SetStatusModal.vue +++ b/apps/user_status/src/components/SetStatusModal.vue @@ -5,8 +5,8 @@ <template> <NcModal size="normal" - :name="$t('user_status', 'Set status')" - aria-labelledby="user_status-set-dialog" + label-id="user_status-set-dialog" + dark :set-return-focus="setReturnFocus" @close="closeModal"> <div class="set-status-modal"> @@ -336,6 +336,10 @@ export default { .set-status-modal { padding: 8px 20px 20px 20px; + &, & * { + box-sizing: border-box; + } + &__header { font-size: 21px; text-align: center; @@ -343,12 +347,14 @@ export default { min-height: var(--default-clickable-area); line-height: var(--default-clickable-area); overflow-wrap: break-word; - margin-block: 0 12px; + margin-block: 0 calc(2 * var(--default-grid-baseline)); } &__online-status { - display: grid; - grid-template-columns: 1fr 1fr; + display: flex; + flex-direction: column; + gap: calc(2 * var(--default-grid-baseline)); + margin-block: 0 calc(2 * var(--default-grid-baseline)); } &__custom-input { @@ -357,13 +363,14 @@ export default { align-items: center; gap: var(--default-grid-baseline); width: 100%; - margin-bottom: 10px; + padding-inline-start: var(--default-grid-baseline); + margin-block: 0 calc(2 * var(--default-grid-baseline)); } &__automation-hint { display: flex; width: 100%; - margin-bottom: 10px; + margin-block: 0 calc(2 * var(--default-grid-baseline)); color: var(--color-text-maxcontrast); } diff --git a/apps/user_status/src/services/statusOptionsService.js b/apps/user_status/src/services/statusOptionsService.js index 7280e58ec75..6c23645e5be 100644 --- a/apps/user_status/src/services/statusOptionsService.js +++ b/apps/user_status/src/services/statusOptionsService.js @@ -18,6 +18,9 @@ const getAllStatusOptions = () => { type: 'away', label: t('user_status', 'Away'), }, { + type: 'busy', + label: t('user_status', 'Busy'), + }, { type: 'dnd', label: t('user_status', 'Do not disturb'), subline: t('user_status', 'Mute all notifications'), diff --git a/apps/user_status/tests/Integration/Service/StatusServiceIntegrationTest.php b/apps/user_status/tests/Integration/Service/StatusServiceIntegrationTest.php index 65b07997e82..8a21052b09f 100644 --- a/apps/user_status/tests/Integration/Service/StatusServiceIntegrationTest.php +++ b/apps/user_status/tests/Integration/Service/StatusServiceIntegrationTest.php @@ -136,7 +136,7 @@ class StatusServiceIntegrationTest extends TestCase { ); $this->service->setUserStatus( 'test123', - IUserStatus::AWAY, + IUserStatus::BUSY, IUserStatus::MESSAGE_CALENDAR_BUSY, true, ); @@ -147,12 +147,12 @@ class StatusServiceIntegrationTest extends TestCase { $this->service->setUserStatus( 'test123', - IUserStatus::AWAY, + IUserStatus::BUSY, IUserStatus::MESSAGE_CALL, true, ); self::assertSame( - IUserStatus::AWAY, + IUserStatus::BUSY, $this->service->findByUserId('test123')->getStatus(), ); @@ -182,7 +182,7 @@ class StatusServiceIntegrationTest extends TestCase { $nostatus = $this->service->setUserStatus( 'test123', - IUserStatus::AWAY, + IUserStatus::BUSY, IUserStatus::MESSAGE_CALENDAR_BUSY, true, ); diff --git a/apps/user_status/tests/Unit/Service/PredefinedStatusServiceTest.php b/apps/user_status/tests/Unit/Service/PredefinedStatusServiceTest.php index de5d92055f1..78e4a18d9f1 100644 --- a/apps/user_status/tests/Unit/Service/PredefinedStatusServiceTest.php +++ b/apps/user_status/tests/Unit/Service/PredefinedStatusServiceTest.php @@ -26,7 +26,7 @@ class PredefinedStatusServiceTest extends TestCase { } public function testGetDefaultStatuses(): void { - $this->l10n->expects($this->exactly(7)) + $this->l10n->expects($this->exactly(8)) ->method('t') ->willReturnCallback(function ($text, $parameters = []) { return vsprintf($text, $parameters); @@ -53,6 +53,15 @@ class PredefinedStatusServiceTest extends TestCase { ], ], [ + 'id' => 'be-right-back', + 'icon' => '⏳', + 'message' => 'Be right back', + 'clearAt' => [ + 'type' => 'period', + 'time' => 900, + ], + ], + [ 'id' => 'remote-work', 'icon' => '🏡', 'message' => 'Working remotely', @@ -106,6 +115,7 @@ class PredefinedStatusServiceTest extends TestCase { ['sick-leave', '🤒'], ['vacationing', '🌴'], ['remote-work', '🏡'], + ['be-right-back', '⏳'], ['call', '💬'], ['unknown-id', null], ]; @@ -127,6 +137,7 @@ class PredefinedStatusServiceTest extends TestCase { ['sick-leave', 'Out sick'], ['vacationing', 'Vacationing'], ['remote-work', 'Working remotely'], + ['be-right-back', 'Be right back'], ['call', 'In a call'], ['unknown-id', null], ]; @@ -145,13 +156,14 @@ class PredefinedStatusServiceTest extends TestCase { ['sick-leave', true], ['vacationing', true], ['remote-work', true], + ['be-right-back', true], ['call', true], ['unknown-id', false], ]; } public function testGetDefaultStatusById(): void { - $this->l10n->expects($this->exactly(7)) + $this->l10n->expects($this->exactly(8)) ->method('t') ->willReturnCallback(function ($text, $parameters = []) { return vsprintf($text, $parameters); diff --git a/apps/weather_status/l10n/de.js b/apps/weather_status/l10n/de.js index 0bf7bc0b2aa..650d19e7e5b 100644 --- a/apps/weather_status/l10n/de.js +++ b/apps/weather_status/l10n/de.js @@ -51,7 +51,7 @@ OC.L10N.register( "There was an error getting the weather status information." : "Beim Abrufen der Wetterstatusinformationen ist ein Fehler aufgetreten.", "No weather information found" : "Keine Wetterinformationen gefunden", "Location not found" : "Standort nicht gefunden", - "There was an error setting the location address." : "Es ist ein Fehler beim Festlegen der Standortadresse aufgetreten.", + "There was an error setting the location address." : "Fehler beim Festlegen der Standortadresse aufgetreten.", "There was an error setting the location." : "Es ist ein Fehler beim Festlegen des Standortes aufgetreten.", "There was an error saving the mode." : "Es ist ein Fehler beim Festlegen des Modus aufgetreten.", "There was an error using personal address." : "Es ist ein Fehler beim Verwenden der persönlichen Adresse aufgetreten.", diff --git a/apps/weather_status/l10n/de.json b/apps/weather_status/l10n/de.json index 1797cf35272..64576182a00 100644 --- a/apps/weather_status/l10n/de.json +++ b/apps/weather_status/l10n/de.json @@ -49,7 +49,7 @@ "There was an error getting the weather status information." : "Beim Abrufen der Wetterstatusinformationen ist ein Fehler aufgetreten.", "No weather information found" : "Keine Wetterinformationen gefunden", "Location not found" : "Standort nicht gefunden", - "There was an error setting the location address." : "Es ist ein Fehler beim Festlegen der Standortadresse aufgetreten.", + "There was an error setting the location address." : "Fehler beim Festlegen der Standortadresse aufgetreten.", "There was an error setting the location." : "Es ist ein Fehler beim Festlegen des Standortes aufgetreten.", "There was an error saving the mode." : "Es ist ein Fehler beim Festlegen des Modus aufgetreten.", "There was an error using personal address." : "Es ist ein Fehler beim Verwenden der persönlichen Adresse aufgetreten.", diff --git a/apps/weather_status/l10n/sw.js b/apps/weather_status/l10n/sw.js new file mode 100644 index 00000000000..7928eb4db94 --- /dev/null +++ b/apps/weather_status/l10n/sw.js @@ -0,0 +1,63 @@ +OC.L10N.register( + "weather_status", + { + "Unknown address" : "Anwani isiyojulikana", + "No result." : "Hakuna matokeo", + "Malformed JSON data." : "Takwimu za JSON zilizoharibika.", + "Error" : "Hitilafu", + "Weather status" : "Hali ya hali ya hewa", + "Weather status in your dashboard" : "Hali ya hewa kwenye dashibodi yako", + "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Hali ya hali ya hewa imeunganishwa katika programu ya Dashibodi.\nEneo la kijiografia linaweza kuamuliwa kiotomatiki au kufafanuliwa kwa mikono. Utabiri wa saa 6 kisha utaonyeshwa.\nHali hii pia inaweza kuunganishwa katika maeneo mengine kama vile programu ya Kalenda.", + "{temperature} {unit} clear sky later today" : "{temperature} {unit} anga safi baadaye leo", + "{temperature} {unit} clear sky" : "{temperature} {unit}anga safi ", + "{temperature} {unit} cloudy later today" : "{temperature} {unit}mawingu baadeye leo ", + "{temperature} {unit} cloudy" : "{temperature} {unit}mawingu", + "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} theluji na radi baadaye leo ", + "{temperature} {unit} snow and thunder" : "{temperature} {unit}theluji na radi ", + "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} manyunyu ya theluji na radi baadaye leo", + "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} manyunyu ya theluji na radi ", + "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} manyunyu ya theluji, radi na mwangu hafifu wa ncha za dunia baadaye leo", + "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit}manyunyu ya theluji, radi na mwangu hafifu wa ncha za dunia ", + "{temperature} {unit} snow showers later today" : "{temperature} {unit} manyunyu ya theluji baadaye leo", + "{temperature} {unit} snow showers" : "{temperature} {unit}manyunyu ya theluji ", + "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} manyunyu ya theluji na machweo ya ncha za dunia baadaye leo", + "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit}manyunyu ya theluji na machweo ya ncha za dunia", + "{temperature} {unit} snow later today" : "{temperature} {unit}theluji baadaye leo ", + "{temperature} {unit} snow" : "{temperature} {unit}theluji", + "{temperature} {unit} fair weather later today" : "{temperature} {unit}hali ya hewa nzuri baadaye leo", + "{temperature} {unit} fair weather" : "{temperature} {unit} hali ya hewa nzuri", + "{temperature} {unit} partly cloudy later today" : "{temperature} {unit}mawingu sehemu baadaye leo ", + "{temperature} {unit} partly cloudy" : "{temperature} {unit}mawingu sehemu ", + "{temperature} {unit} foggy later today" : "{temperature} {unit}ukungu baadaye leo ", + "{temperature} {unit} foggy" : "{temperature} {unit}ukungu ", + "{temperature} {unit} light rainfall later today" : "{temperature} {unit}mvua nyepesi baadaye leo ", + "{temperature} {unit} light rainfall" : "{temperature} {unit}mvua nyepesi ", + "{temperature} {unit} rainfall later today" : "{temperature} {unit}mvua baadaye leo ", + "{temperature} {unit} rainfall" : "{temperature} {unit} mvua", + "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} mvua kubwa baadaye leo", + "{temperature} {unit} heavy rainfall" : "{temperature} {unit} mvua kubwa", + "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} mvua ya manyunyu baadaye leo", + "{temperature} {unit} rainfall showers" : "{temperature} {unit}mvua ya manyunyu", + "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} manyunyu ya mvua nyepesi baadaye leo", + "{temperature} {unit} light rainfall showers" : "{temperature} {unit}manyunyu ya mvua nyepesi", + "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} manyunyu ya mvua kubwa leo baadaye", + "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit}manyunyu ya mvua kubwa", + "More weather for {adr}" : " Hali ya hewa zaidi kwa {adr}", + "Loading weather" : "Inapakia hali ya hewa", + "Set location for weather" : "Weka eneo kwa hali ya hewa", + "Remove from favorites" : "Ondoa kutoka katika pendwa", + "Add as favorite" : "Ongeza kama kipendwa", + "You are not logged in." : "Hujaingia kwenye akaunti.", + "There was an error getting the weather status information." : "Kulikuwa na hitilafu kupata taarifa za hali ya hewa.", + "No weather information found" : "Hakuna taarifa za hali ya hewa zilizopatikana", + "Location not found" : "Mahali hapajulikani", + "There was an error setting the location address." : "Kulikuwa na hitilafu katika kuweka anwani ya eneo.", + "There was an error setting the location." : "Kulikuwa na hitilafu katika kuweka eneo.", + "There was an error saving the mode." : "Kulikuwa na hitilafu katika kuhifadhi hali.", + "There was an error using personal address." : "Kulikuwa na hitilafu katika kutumia anwani ya kibinafsi.", + "Unknown weather code" : "Msimbo wa hali ya hewa usiojulikana", + "Detect location" : "Tambua eneo", + "Set custom address" : "Weka anwani maalum", + "Favorites" : "Vipendwa" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/weather_status/l10n/sw.json b/apps/weather_status/l10n/sw.json new file mode 100644 index 00000000000..985b7b4f15f --- /dev/null +++ b/apps/weather_status/l10n/sw.json @@ -0,0 +1,61 @@ +{ "translations": { + "Unknown address" : "Anwani isiyojulikana", + "No result." : "Hakuna matokeo", + "Malformed JSON data." : "Takwimu za JSON zilizoharibika.", + "Error" : "Hitilafu", + "Weather status" : "Hali ya hali ya hewa", + "Weather status in your dashboard" : "Hali ya hewa kwenye dashibodi yako", + "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Hali ya hali ya hewa imeunganishwa katika programu ya Dashibodi.\nEneo la kijiografia linaweza kuamuliwa kiotomatiki au kufafanuliwa kwa mikono. Utabiri wa saa 6 kisha utaonyeshwa.\nHali hii pia inaweza kuunganishwa katika maeneo mengine kama vile programu ya Kalenda.", + "{temperature} {unit} clear sky later today" : "{temperature} {unit} anga safi baadaye leo", + "{temperature} {unit} clear sky" : "{temperature} {unit}anga safi ", + "{temperature} {unit} cloudy later today" : "{temperature} {unit}mawingu baadeye leo ", + "{temperature} {unit} cloudy" : "{temperature} {unit}mawingu", + "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} theluji na radi baadaye leo ", + "{temperature} {unit} snow and thunder" : "{temperature} {unit}theluji na radi ", + "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} manyunyu ya theluji na radi baadaye leo", + "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} manyunyu ya theluji na radi ", + "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} manyunyu ya theluji, radi na mwangu hafifu wa ncha za dunia baadaye leo", + "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit}manyunyu ya theluji, radi na mwangu hafifu wa ncha za dunia ", + "{temperature} {unit} snow showers later today" : "{temperature} {unit} manyunyu ya theluji baadaye leo", + "{temperature} {unit} snow showers" : "{temperature} {unit}manyunyu ya theluji ", + "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} manyunyu ya theluji na machweo ya ncha za dunia baadaye leo", + "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit}manyunyu ya theluji na machweo ya ncha za dunia", + "{temperature} {unit} snow later today" : "{temperature} {unit}theluji baadaye leo ", + "{temperature} {unit} snow" : "{temperature} {unit}theluji", + "{temperature} {unit} fair weather later today" : "{temperature} {unit}hali ya hewa nzuri baadaye leo", + "{temperature} {unit} fair weather" : "{temperature} {unit} hali ya hewa nzuri", + "{temperature} {unit} partly cloudy later today" : "{temperature} {unit}mawingu sehemu baadaye leo ", + "{temperature} {unit} partly cloudy" : "{temperature} {unit}mawingu sehemu ", + "{temperature} {unit} foggy later today" : "{temperature} {unit}ukungu baadaye leo ", + "{temperature} {unit} foggy" : "{temperature} {unit}ukungu ", + "{temperature} {unit} light rainfall later today" : "{temperature} {unit}mvua nyepesi baadaye leo ", + "{temperature} {unit} light rainfall" : "{temperature} {unit}mvua nyepesi ", + "{temperature} {unit} rainfall later today" : "{temperature} {unit}mvua baadaye leo ", + "{temperature} {unit} rainfall" : "{temperature} {unit} mvua", + "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} mvua kubwa baadaye leo", + "{temperature} {unit} heavy rainfall" : "{temperature} {unit} mvua kubwa", + "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} mvua ya manyunyu baadaye leo", + "{temperature} {unit} rainfall showers" : "{temperature} {unit}mvua ya manyunyu", + "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} manyunyu ya mvua nyepesi baadaye leo", + "{temperature} {unit} light rainfall showers" : "{temperature} {unit}manyunyu ya mvua nyepesi", + "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} manyunyu ya mvua kubwa leo baadaye", + "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit}manyunyu ya mvua kubwa", + "More weather for {adr}" : " Hali ya hewa zaidi kwa {adr}", + "Loading weather" : "Inapakia hali ya hewa", + "Set location for weather" : "Weka eneo kwa hali ya hewa", + "Remove from favorites" : "Ondoa kutoka katika pendwa", + "Add as favorite" : "Ongeza kama kipendwa", + "You are not logged in." : "Hujaingia kwenye akaunti.", + "There was an error getting the weather status information." : "Kulikuwa na hitilafu kupata taarifa za hali ya hewa.", + "No weather information found" : "Hakuna taarifa za hali ya hewa zilizopatikana", + "Location not found" : "Mahali hapajulikani", + "There was an error setting the location address." : "Kulikuwa na hitilafu katika kuweka anwani ya eneo.", + "There was an error setting the location." : "Kulikuwa na hitilafu katika kuweka eneo.", + "There was an error saving the mode." : "Kulikuwa na hitilafu katika kuhifadhi hali.", + "There was an error using personal address." : "Kulikuwa na hitilafu katika kutumia anwani ya kibinafsi.", + "Unknown weather code" : "Msimbo wa hali ya hewa usiojulikana", + "Detect location" : "Tambua eneo", + "Set custom address" : "Weka anwani maalum", + "Favorites" : "Vipendwa" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/weather_status/l10n/uk.js b/apps/weather_status/l10n/uk.js index ec68f603865..23ae208a767 100644 --- a/apps/weather_status/l10n/uk.js +++ b/apps/weather_status/l10n/uk.js @@ -7,10 +7,23 @@ OC.L10N.register( "Error" : "Помилка", "Weather status" : "Прогноз погоди", "Weather status in your dashboard" : "Статус погоди на вашій інформаційній панелі", + "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Стан погоди інтегрований в додаток Dashboard.\n Географічне розташування може бути визначено автоматично або вручну. Потім відображається прогноз на 6 годин.\n Цей статус також може бути інтегрований в інші місця, наприклад, в додаток \"Календар\".", "{temperature} {unit} clear sky later today" : "{temperature} {unit} ясне небо пізніше сьогодні", "{temperature} {unit} clear sky" : "{temperature} {unit} ясне небо", "{temperature} {unit} cloudy later today" : "{temperature} {unit} хмарно пізніше сьогодні", "{temperature} {unit} cloudy" : "{temperature} {unit} хмарно", + "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} сніг та грім сьогодні ввечері", + "{temperature} {unit} snow and thunder" : "{temperature} {unit} сніг і грім", + "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} сьогодні ввечері снігопад та грім", + "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} снігові зливи та грім", + "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} сьогодні ввечері снігопади, грім та полярні сутінки", + "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} снігові зливи, грім і полярні сутінки", + "{temperature} {unit} snow showers later today" : "{temperature} {unit} Сьогодні ввечері сніг зі снігом.", + "{temperature} {unit} snow showers" : "{temperature} {unit} снігопади", + "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} Сьогодні ввечері снігопади та полярні сутінки", + "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} снігопади та полярні сутінки", + "{temperature} {unit} snow later today" : "{temperature} {unit} Сьогодні сніг.", + "{temperature} {unit} snow" : "{temperature} {unit} сніг", "{temperature} {unit} fair weather later today" : "{temperature} {unit} гарна погода пізніше сьогодні", "{temperature} {unit} fair weather" : "{temperature} {unit} гарна погода", "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} мінлива хмарність пізніше сьогодні", @@ -42,6 +55,7 @@ OC.L10N.register( "There was an error setting the location." : "Під час встановлення місця розташування сталася помилка.", "There was an error saving the mode." : "Під час збереження режиму сталася помилка.", "There was an error using personal address." : "Під час використання особистої адреси сталася помилка.", + "Unknown weather code" : "Невідомий код погоди", "Detect location" : "Визначити місце розташування", "Set custom address" : "Встановити власну адресу", "Favorites" : "Із зірочкою" diff --git a/apps/weather_status/l10n/uk.json b/apps/weather_status/l10n/uk.json index 0898ec9db07..f38063daf56 100644 --- a/apps/weather_status/l10n/uk.json +++ b/apps/weather_status/l10n/uk.json @@ -5,10 +5,23 @@ "Error" : "Помилка", "Weather status" : "Прогноз погоди", "Weather status in your dashboard" : "Статус погоди на вашій інформаційній панелі", + "Weather status integrated in the Dashboard app.\n The geographic location can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Стан погоди інтегрований в додаток Dashboard.\n Географічне розташування може бути визначено автоматично або вручну. Потім відображається прогноз на 6 годин.\n Цей статус також може бути інтегрований в інші місця, наприклад, в додаток \"Календар\".", "{temperature} {unit} clear sky later today" : "{temperature} {unit} ясне небо пізніше сьогодні", "{temperature} {unit} clear sky" : "{temperature} {unit} ясне небо", "{temperature} {unit} cloudy later today" : "{temperature} {unit} хмарно пізніше сьогодні", "{temperature} {unit} cloudy" : "{temperature} {unit} хмарно", + "{temperature} {unit} snow and thunder later today" : "{temperature} {unit} сніг та грім сьогодні ввечері", + "{temperature} {unit} snow and thunder" : "{temperature} {unit} сніг і грім", + "{temperature} {unit} snow showers and thunder later today" : "{temperature} {unit} сьогодні ввечері снігопад та грім", + "{temperature} {unit} snow showers and thunder" : "{temperature} {unit} снігові зливи та грім", + "{temperature} {unit} snow showers, thunder and polar twilight later today" : "{temperature} {unit} сьогодні ввечері снігопади, грім та полярні сутінки", + "{temperature} {unit} snow showers, thunder and polar twilight" : "{temperature} {unit} снігові зливи, грім і полярні сутінки", + "{temperature} {unit} snow showers later today" : "{temperature} {unit} Сьогодні ввечері сніг зі снігом.", + "{temperature} {unit} snow showers" : "{temperature} {unit} снігопади", + "{temperature} {unit} snow showers and polar twilight later today" : "{temperature} {unit} Сьогодні ввечері снігопади та полярні сутінки", + "{temperature} {unit} snow showers and polar twilight" : "{temperature} {unit} снігопади та полярні сутінки", + "{temperature} {unit} snow later today" : "{temperature} {unit} Сьогодні сніг.", + "{temperature} {unit} snow" : "{temperature} {unit} сніг", "{temperature} {unit} fair weather later today" : "{temperature} {unit} гарна погода пізніше сьогодні", "{temperature} {unit} fair weather" : "{temperature} {unit} гарна погода", "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} мінлива хмарність пізніше сьогодні", @@ -40,6 +53,7 @@ "There was an error setting the location." : "Під час встановлення місця розташування сталася помилка.", "There was an error saving the mode." : "Під час збереження режиму сталася помилка.", "There was an error using personal address." : "Під час використання особистої адреси сталася помилка.", + "Unknown weather code" : "Невідомий код погоди", "Detect location" : "Визначити місце розташування", "Set custom address" : "Встановити власну адресу", "Favorites" : "Із зірочкою" diff --git a/apps/webhook_listeners/l10n/uk.js b/apps/webhook_listeners/l10n/uk.js new file mode 100644 index 00000000000..d6d8d831e70 --- /dev/null +++ b/apps/webhook_listeners/l10n/uk.js @@ -0,0 +1,7 @@ +OC.L10N.register( + "webhook_listeners", + { + "Webhooks" : "Веб-хуки", + "Nextcloud webhook support" : "Підтримка веб-хуків Nextcloud" +}, +"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/apps/webhook_listeners/l10n/uk.json b/apps/webhook_listeners/l10n/uk.json new file mode 100644 index 00000000000..c408d7268fb --- /dev/null +++ b/apps/webhook_listeners/l10n/uk.json @@ -0,0 +1,5 @@ +{ "translations": { + "Webhooks" : "Веб-хуки", + "Nextcloud webhook support" : "Підтримка веб-хуків Nextcloud" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" +}
\ No newline at end of file diff --git a/apps/workflowengine/composer/composer/autoload_classmap.php b/apps/workflowengine/composer/composer/autoload_classmap.php index 0444cce13e7..52d221fb767 100644 --- a/apps/workflowengine/composer/composer/autoload_classmap.php +++ b/apps/workflowengine/composer/composer/autoload_classmap.php @@ -10,6 +10,7 @@ return array( 'OCA\\WorkflowEngine\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php', 'OCA\\WorkflowEngine\\BackgroundJobs\\Rotate' => $baseDir . '/../lib/BackgroundJobs/Rotate.php', 'OCA\\WorkflowEngine\\Check\\AbstractStringCheck' => $baseDir . '/../lib/Check/AbstractStringCheck.php', + 'OCA\\WorkflowEngine\\Check\\Directory' => $baseDir . '/../lib/Check/Directory.php', 'OCA\\WorkflowEngine\\Check\\FileMimeType' => $baseDir . '/../lib/Check/FileMimeType.php', 'OCA\\WorkflowEngine\\Check\\FileName' => $baseDir . '/../lib/Check/FileName.php', 'OCA\\WorkflowEngine\\Check\\FileSize' => $baseDir . '/../lib/Check/FileSize.php', diff --git a/apps/workflowengine/composer/composer/autoload_static.php b/apps/workflowengine/composer/composer/autoload_static.php index 0b9ac89ae30..57b569dbc10 100644 --- a/apps/workflowengine/composer/composer/autoload_static.php +++ b/apps/workflowengine/composer/composer/autoload_static.php @@ -25,6 +25,7 @@ class ComposerStaticInitWorkflowEngine 'OCA\\WorkflowEngine\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php', 'OCA\\WorkflowEngine\\BackgroundJobs\\Rotate' => __DIR__ . '/..' . '/../lib/BackgroundJobs/Rotate.php', 'OCA\\WorkflowEngine\\Check\\AbstractStringCheck' => __DIR__ . '/..' . '/../lib/Check/AbstractStringCheck.php', + 'OCA\\WorkflowEngine\\Check\\Directory' => __DIR__ . '/..' . '/../lib/Check/Directory.php', 'OCA\\WorkflowEngine\\Check\\FileMimeType' => __DIR__ . '/..' . '/../lib/Check/FileMimeType.php', 'OCA\\WorkflowEngine\\Check\\FileName' => __DIR__ . '/..' . '/../lib/Check/FileName.php', 'OCA\\WorkflowEngine\\Check\\FileSize' => __DIR__ . '/..' . '/../lib/Check/FileSize.php', diff --git a/apps/workflowengine/l10n/mk.js b/apps/workflowengine/l10n/mk.js index 357509f3896..a7f641f0aff 100644 --- a/apps/workflowengine/l10n/mk.js +++ b/apps/workflowengine/l10n/mk.js @@ -47,13 +47,19 @@ OC.L10N.register( "Select a file type" : "Изберете вид на датотека", "e.g. httpd/unix-directory" : "Пр. httpd/unix-directory", "Please enter a valid time span" : "Внесете валиден времески осег", + "Android client" : "Android клиент", + "iOS client" : "iOS клиент", "Desktop client" : "Клиент за компјутер", "Select groups" : "Одбери групи", "Groups" : "Групи", + "Select a trigger" : "Избери активатор", + "At least one event must be selected" : "Најмалку едно мора да биде означено", + "Add new flow" : "Додади нов проток", "Active" : "Активно", "Save" : "Зачувај", "When" : "Кога", "and" : "и", + "Add a new filter" : "Додади нов филтер", "Cancel" : "Откажи", "Delete" : "Избриши", "Available flows" : "Достапни протоци", @@ -75,6 +81,7 @@ OC.L10N.register( "less or equals" : "помалку или еднакво", "greater or equals" : "поголемо или еднакво", "greater" : "поголемо", + "Request remote address" : "Барање од надворешна адреса", "matches IPv4" : "се совпаѓањаат IPv4", "does not match IPv4" : "не се совпаѓаат IPv4", "matches IPv6" : "се совпаѓањаат IPv6", @@ -82,8 +89,11 @@ OC.L10N.register( "File system tag" : "Датотека со системска ознака", "is tagged with" : "е означена со", "is not tagged with" : "не е означена со", + "Request URL" : "Барање URL", + "Request time" : "Време на барање", "between" : "помеѓу", "not between" : "не помеѓу", + "Request user agent" : "Барање од кориснички агент", "is member of" : "е член на", "is not member of" : "не е член на" }, diff --git a/apps/workflowengine/l10n/mk.json b/apps/workflowengine/l10n/mk.json index a50e5edf93c..f2ef7213da4 100644 --- a/apps/workflowengine/l10n/mk.json +++ b/apps/workflowengine/l10n/mk.json @@ -45,13 +45,19 @@ "Select a file type" : "Изберете вид на датотека", "e.g. httpd/unix-directory" : "Пр. httpd/unix-directory", "Please enter a valid time span" : "Внесете валиден времески осег", + "Android client" : "Android клиент", + "iOS client" : "iOS клиент", "Desktop client" : "Клиент за компјутер", "Select groups" : "Одбери групи", "Groups" : "Групи", + "Select a trigger" : "Избери активатор", + "At least one event must be selected" : "Најмалку едно мора да биде означено", + "Add new flow" : "Додади нов проток", "Active" : "Активно", "Save" : "Зачувај", "When" : "Кога", "and" : "и", + "Add a new filter" : "Додади нов филтер", "Cancel" : "Откажи", "Delete" : "Избриши", "Available flows" : "Достапни протоци", @@ -73,6 +79,7 @@ "less or equals" : "помалку или еднакво", "greater or equals" : "поголемо или еднакво", "greater" : "поголемо", + "Request remote address" : "Барање од надворешна адреса", "matches IPv4" : "се совпаѓањаат IPv4", "does not match IPv4" : "не се совпаѓаат IPv4", "matches IPv6" : "се совпаѓањаат IPv6", @@ -80,8 +87,11 @@ "File system tag" : "Датотека со системска ознака", "is tagged with" : "е означена со", "is not tagged with" : "не е означена со", + "Request URL" : "Барање URL", + "Request time" : "Време на барање", "between" : "помеѓу", "not between" : "не помеѓу", + "Request user agent" : "Барање од кориснички агент", "is member of" : "е член на", "is not member of" : "не е член на" },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" diff --git a/apps/workflowengine/lib/Check/Directory.php b/apps/workflowengine/lib/Check/Directory.php new file mode 100644 index 00000000000..f7b856a95fe --- /dev/null +++ b/apps/workflowengine/lib/Check/Directory.php @@ -0,0 +1,58 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\WorkflowEngine\Check; + +use OCA\WorkflowEngine\Entity\File; +use OCP\IL10N; +use OCP\WorkflowEngine\IFileCheck; + +class Directory extends AbstractStringCheck implements IFileCheck { + use TFileCheck; + + /** + * @param IL10N $l + */ + public function __construct( + IL10N $l, + ) { + parent::__construct($l); + } + + /** + * @return string + */ + protected function getActualValue(): string { + if ($this->path === null) { + return ''; + } + // files/some/path -> some/path + return preg_replace('/^files\//', '', pathinfo($this->path, PATHINFO_DIRNAME)); + } + + /** + * @param string $operator + * @param string $checkValue + * @param string $actualValue + * @return bool + */ + protected function executeStringCheck($operator, $checkValue, $actualValue) { + if ($operator === 'is' || $operator === '!is') { + $checkValue = ltrim(rtrim($checkValue, '/'), '/'); + } + return parent::executeStringCheck($operator, $checkValue, $actualValue); + } + + public function supportedEntities(): array { + return [ File::class ]; + } + + public function isAvailableForScope(int $scope): bool { + return true; + } +} diff --git a/apps/workflowengine/lib/Manager.php b/apps/workflowengine/lib/Manager.php index 0f41679789d..27b25a2e752 100644 --- a/apps/workflowengine/lib/Manager.php +++ b/apps/workflowengine/lib/Manager.php @@ -8,6 +8,7 @@ namespace OCA\WorkflowEngine; use Doctrine\DBAL\Exception; use OCA\WorkflowEngine\AppInfo\Application; +use OCA\WorkflowEngine\Check\Directory; use OCA\WorkflowEngine\Check\FileMimeType; use OCA\WorkflowEngine\Check\FileName; use OCA\WorkflowEngine\Check\FileSize; @@ -692,6 +693,7 @@ class Manager implements IManager { protected function getBuildInChecks(): array { try { return [ + $this->container->query(Directory::class), $this->container->query(FileMimeType::class), $this->container->query(FileName::class), $this->container->query(FileSize::class), diff --git a/apps/workflowengine/src/components/Checks/file.js b/apps/workflowengine/src/components/Checks/file.js index 568efc81cd3..b2d348e4712 100644 --- a/apps/workflowengine/src/components/Checks/file.js +++ b/apps/workflowengine/src/components/Checks/file.js @@ -32,6 +32,19 @@ const FileChecks = [ }, { + class: 'OCA\\WorkflowEngine\\Check\\Directory', + name: t('workflowengine', 'Directory'), + operators: stringOrRegexOperators, + placeholder: (check) => { + if (check.operator === 'matches' || check.operator === '!matches') { + return '/^myfolder/.+$/i' + } + return 'myfolder/subfolder' + }, + validate: stringValidator, + }, + + { class: 'OCA\\WorkflowEngine\\Check\\FileMimeType', name: t('workflowengine', 'File MIME type'), operators: stringOrRegexOperators, diff --git a/apps/workflowengine/tests/Check/DirectoryTest.php b/apps/workflowengine/tests/Check/DirectoryTest.php new file mode 100644 index 00000000000..6eef082b5e5 --- /dev/null +++ b/apps/workflowengine/tests/Check/DirectoryTest.php @@ -0,0 +1,68 @@ +<?php + +declare(strict_types=1); +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OCA\WorkflowEngine\Tests\Check; + +use OCA\WorkflowEngine\Check\Directory; +use OCA\WorkflowEngine\Entity\File; +use OCP\Files\Storage\IStorage; +use OCP\IL10N; +use Test\TestCase; + +class DirectoryTest extends TestCase { + /** @var IL10N */ + private $l10n; + + /** @var IStorage */ + private $storage; + + /** @var Directory */ + private $directory; + + protected function setUp(): void { + parent::setUp(); + $this->l10n = $this->createMock(IL10N::class); + $this->storage = $this->createMock(IStorage::class); + $this->directory = new Directory($this->l10n); + } + + /** + * @dataProvider dataProviderCheck + */ + public function testExecuteStringCheck(string $operator, string $configuredDirectoryPath, string $filePath, bool $expectedResult): void { + $this->directory->setFileInfo($this->storage, $filePath); + + $result = $this->directory->executeCheck($operator, $configuredDirectoryPath); + + $this->assertEquals($expectedResult, $result); + } + + public function testSupportedEntities(): void { + $this->assertSame([File::class], $this->directory->supportedEntities()); + } + + public function testIsAvailableForScope(): void { + $this->assertTrue($this->directory->isAvailableForScope(1)); + } + + public function dataProviderCheck(): array { + return [ + ['is', 'some/path', 'files/some/path/file.txt', true], + ['is', '/some/path/', 'files/some/path/file.txt', true], + + ['!is', 'some/path', 'files/some/path/file.txt', false], + ['!is', 'some/path/', 'files/someother/path/file.txt', true], + + ['matches', '/^some\/path\/.+$/i', 'files/SomE/PATH/subfolder/file.txt', true], + ['matches', '/some\/path\/.*\/sub2/', 'files/some/path/subfolder1/sub2/anotherfile.pdf', true], + + ['!matches', '/some\/path/', 'files/some/path/file.txt', false], + ['!matches', '/some\/path/', 'files/another/path/file.txt', true], + ]; + } +} |