aboutsummaryrefslogtreecommitdiffstats
path: root/apps/settings
diff options
context:
space:
mode:
Diffstat (limited to 'apps/settings')
-rw-r--r--apps/settings/l10n/de.js3
-rw-r--r--apps/settings/l10n/de.json3
-rw-r--r--apps/settings/l10n/de_DE.js3
-rw-r--r--apps/settings/l10n/de_DE.json3
-rw-r--r--apps/settings/l10n/en_GB.js3
-rw-r--r--apps/settings/l10n/en_GB.json3
-rw-r--r--apps/settings/l10n/es.js17
-rw-r--r--apps/settings/l10n/es.json17
-rw-r--r--apps/settings/l10n/et_EE.js5
-rw-r--r--apps/settings/l10n/et_EE.json5
-rw-r--r--apps/settings/l10n/ga.js3
-rw-r--r--apps/settings/l10n/ga.json3
-rw-r--r--apps/settings/l10n/ja.js3
-rw-r--r--apps/settings/l10n/ja.json3
-rw-r--r--apps/settings/l10n/lv.js6
-rw-r--r--apps/settings/l10n/lv.json6
-rw-r--r--apps/settings/l10n/pt_BR.js1
-rw-r--r--apps/settings/l10n/pt_BR.json1
-rw-r--r--apps/settings/l10n/uk.js3
-rw-r--r--apps/settings/l10n/uk.json3
-rw-r--r--apps/settings/l10n/zh_CN.js9
-rw-r--r--apps/settings/l10n/zh_CN.json9
-rw-r--r--apps/settings/l10n/zh_HK.js3
-rw-r--r--apps/settings/l10n/zh_HK.json3
-rw-r--r--apps/settings/l10n/zh_TW.js1
-rw-r--r--apps/settings/l10n/zh_TW.json1
-rw-r--r--apps/settings/lib/Controller/AISettingsController.php11
-rw-r--r--apps/settings/lib/Controller/UsersController.php7
-rw-r--r--apps/settings/lib/Settings/Admin/ArtificialIntelligence.php6
-rw-r--r--apps/settings/lib/Settings/Personal/PersonalInfo.php1
-rw-r--r--apps/settings/src/components/AdminSettingsSharingForm.vue2
-rw-r--r--apps/settings/src/components/PersonalInfo/BlueskySection.vue64
-rw-r--r--apps/settings/src/constants/AccountPropertyConstants.ts5
-rw-r--r--apps/settings/src/main-personal-info.js3
-rw-r--r--apps/settings/templates/settings/personal/personal.info.php3
-rw-r--r--apps/settings/tests/Controller/UsersControllerTest.php21
-rw-r--r--apps/settings/tests/Mailer/NewUserMailHelperTest.php126
37 files changed, 301 insertions, 68 deletions
diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js
index 3b525970801..72f937b07e7 100644
--- a/apps/settings/l10n/de.js
+++ b/apps/settings/l10n/de.js
@@ -395,6 +395,7 @@ OC.L10N.register(
"Default expiration time of remote shares in days" : "Standardablaufzeit für Remote-Freigaben in Tagen",
"Expire remote shares after x days" : "Remote-Freigaben laufen nach x Tagen ab",
"Set default expiration date for shares via link or mail" : "Standardablaufzeit für Link- oder E-Mail-Freigaben festlegen",
+ "Enforce expiration date for link or mail shares" : "Ablaufdatum für Link- oder E-Mail-Freigaben erzwingen",
"Default expiration time of shares in days" : "Standardablaufzeit für Freigaben in Tagen",
"Privacy settings for sharing" : "Datenschutzeinstellungen bezüglich des Teilens",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "Automatische Vervollständigung des Kontonamens im Freigabedialog und Zugriff auf das Systemadressbuch zulassen",
@@ -618,6 +619,7 @@ OC.L10N.register(
"Your biography. Markdown is supported." : "Deine Biographie. Markdown wird unterstützt.",
"Unable to update date of birth" : "Geburtsdatum konnte nicht aktualisiert werden",
"Enter your date of birth" : "Gib dein Geburtsdatum ein",
+ "Bluesky handle" : "Bluesky-Name",
"You are using {s}{usage}{/s}" : "Du verwendest {s}{usage}{/s}",
"You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Du verwendest {s}{usage}{/s} von {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})",
"You are a member of the following groups:" : "Du bist Mitglied folgender Gruppen:",
@@ -809,6 +811,7 @@ OC.L10N.register(
"Pronouns" : "Pronomen",
"Role" : "Funktion",
"X (formerly Twitter)" : "X (früher Twitter)",
+ "Bluesky" : "Bluesky",
"Website" : "Webseite",
"Profile visibility" : "Sichtbarkeit des Profils",
"Locale" : "Gebietsschema",
diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json
index 0f484bf25f0..d8fe25e0242 100644
--- a/apps/settings/l10n/de.json
+++ b/apps/settings/l10n/de.json
@@ -393,6 +393,7 @@
"Default expiration time of remote shares in days" : "Standardablaufzeit für Remote-Freigaben in Tagen",
"Expire remote shares after x days" : "Remote-Freigaben laufen nach x Tagen ab",
"Set default expiration date for shares via link or mail" : "Standardablaufzeit für Link- oder E-Mail-Freigaben festlegen",
+ "Enforce expiration date for link or mail shares" : "Ablaufdatum für Link- oder E-Mail-Freigaben erzwingen",
"Default expiration time of shares in days" : "Standardablaufzeit für Freigaben in Tagen",
"Privacy settings for sharing" : "Datenschutzeinstellungen bezüglich des Teilens",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "Automatische Vervollständigung des Kontonamens im Freigabedialog und Zugriff auf das Systemadressbuch zulassen",
@@ -616,6 +617,7 @@
"Your biography. Markdown is supported." : "Deine Biographie. Markdown wird unterstützt.",
"Unable to update date of birth" : "Geburtsdatum konnte nicht aktualisiert werden",
"Enter your date of birth" : "Gib dein Geburtsdatum ein",
+ "Bluesky handle" : "Bluesky-Name",
"You are using {s}{usage}{/s}" : "Du verwendest {s}{usage}{/s}",
"You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Du verwendest {s}{usage}{/s} von {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})",
"You are a member of the following groups:" : "Du bist Mitglied folgender Gruppen:",
@@ -807,6 +809,7 @@
"Pronouns" : "Pronomen",
"Role" : "Funktion",
"X (formerly Twitter)" : "X (früher Twitter)",
+ "Bluesky" : "Bluesky",
"Website" : "Webseite",
"Profile visibility" : "Sichtbarkeit des Profils",
"Locale" : "Gebietsschema",
diff --git a/apps/settings/l10n/de_DE.js b/apps/settings/l10n/de_DE.js
index 9d9d37ffdff..c63552725fc 100644
--- a/apps/settings/l10n/de_DE.js
+++ b/apps/settings/l10n/de_DE.js
@@ -395,6 +395,7 @@ OC.L10N.register(
"Default expiration time of remote shares in days" : "Standardablaufzeit für Remote-Freigaben in Tagen",
"Expire remote shares after x days" : "Remote-Freigaben laufen nach x Tagen ab",
"Set default expiration date for shares via link or mail" : "Standardablaufzeit für Link- oder E-Mail-Freigaben festlegen",
+ "Enforce expiration date for link or mail shares" : "Ablaufdatum für Link- oder E-Mail-Freigaben erzwingen",
"Default expiration time of shares in days" : "Standardablaufzeit für Freigaben in Tagen",
"Privacy settings for sharing" : "Datenschutzeinstellungen bezüglich des Teilens",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "Automatische Vervollständigung des Kontonamens im Freigabedialog und Zugriff auf das Systemadressbuch zulassen",
@@ -618,6 +619,7 @@ OC.L10N.register(
"Your biography. Markdown is supported." : "Ihre Biographie. Markdown wird unterstützt.",
"Unable to update date of birth" : "Geburtsdatum konnte nicht aktualisiert werden",
"Enter your date of birth" : "Geben Sie Ihr Geburtsdatum ein",
+ "Bluesky handle" : "Bluesky-Name",
"You are using {s}{usage}{/s}" : "Sie verwenden {s}{usage}{/s}",
"You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Sie verwenden {s}{usage}{/s} von {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})",
"You are a member of the following groups:" : "Sie sind Mitglied folgender Gruppen:",
@@ -809,6 +811,7 @@ OC.L10N.register(
"Pronouns" : "Pronomen",
"Role" : "Funktion",
"X (formerly Twitter)" : "X (früher Twitter)",
+ "Bluesky" : "Bluesky",
"Website" : "Webseite",
"Profile visibility" : "Sichtbarkeit des Profils",
"Locale" : "Gebietsschema",
diff --git a/apps/settings/l10n/de_DE.json b/apps/settings/l10n/de_DE.json
index 5136fbbdf30..9b4008900c1 100644
--- a/apps/settings/l10n/de_DE.json
+++ b/apps/settings/l10n/de_DE.json
@@ -393,6 +393,7 @@
"Default expiration time of remote shares in days" : "Standardablaufzeit für Remote-Freigaben in Tagen",
"Expire remote shares after x days" : "Remote-Freigaben laufen nach x Tagen ab",
"Set default expiration date for shares via link or mail" : "Standardablaufzeit für Link- oder E-Mail-Freigaben festlegen",
+ "Enforce expiration date for link or mail shares" : "Ablaufdatum für Link- oder E-Mail-Freigaben erzwingen",
"Default expiration time of shares in days" : "Standardablaufzeit für Freigaben in Tagen",
"Privacy settings for sharing" : "Datenschutzeinstellungen bezüglich des Teilens",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "Automatische Vervollständigung des Kontonamens im Freigabedialog und Zugriff auf das Systemadressbuch zulassen",
@@ -616,6 +617,7 @@
"Your biography. Markdown is supported." : "Ihre Biographie. Markdown wird unterstützt.",
"Unable to update date of birth" : "Geburtsdatum konnte nicht aktualisiert werden",
"Enter your date of birth" : "Geben Sie Ihr Geburtsdatum ein",
+ "Bluesky handle" : "Bluesky-Name",
"You are using {s}{usage}{/s}" : "Sie verwenden {s}{usage}{/s}",
"You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Sie verwenden {s}{usage}{/s} von {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})",
"You are a member of the following groups:" : "Sie sind Mitglied folgender Gruppen:",
@@ -807,6 +809,7 @@
"Pronouns" : "Pronomen",
"Role" : "Funktion",
"X (formerly Twitter)" : "X (früher Twitter)",
+ "Bluesky" : "Bluesky",
"Website" : "Webseite",
"Profile visibility" : "Sichtbarkeit des Profils",
"Locale" : "Gebietsschema",
diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js
index c5c2d22ec57..14a6f235b7d 100644
--- a/apps/settings/l10n/en_GB.js
+++ b/apps/settings/l10n/en_GB.js
@@ -395,6 +395,7 @@ OC.L10N.register(
"Default expiration time of remote shares in days" : "Default expiration time of remote shares in days",
"Expire remote shares after x days" : "Expire remote shares after x days",
"Set default expiration date for shares via link or mail" : "Set default expiration date for shares via link or mail",
+ "Enforce expiration date for link or mail shares" : "Enforce expiration date for link or mail shares",
"Default expiration time of shares in days" : "Default expiration time of shares in days",
"Privacy settings for sharing" : "Privacy settings for sharing",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "Allow account name autocompletion in share dialog and allow access to the system address book",
@@ -618,6 +619,7 @@ OC.L10N.register(
"Your biography. Markdown is supported." : "Your biography. Markdown is supported.",
"Unable to update date of birth" : "Unable to update date of birth",
"Enter your date of birth" : "Enter your date of birth",
+ "Bluesky handle" : "Bluesky handle",
"You are using {s}{usage}{/s}" : "You are using {s}{usage}{/s}",
"You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})",
"You are a member of the following groups:" : "You are a member of the following groups:",
@@ -809,6 +811,7 @@ OC.L10N.register(
"Pronouns" : "Pronouns",
"Role" : "Role",
"X (formerly Twitter)" : "X (formerly Twitter)",
+ "Bluesky" : "Bluesky",
"Website" : "Website",
"Profile visibility" : "Profile visibility",
"Locale" : "Locale",
diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json
index a4d53a47659..a0ea58dd924 100644
--- a/apps/settings/l10n/en_GB.json
+++ b/apps/settings/l10n/en_GB.json
@@ -393,6 +393,7 @@
"Default expiration time of remote shares in days" : "Default expiration time of remote shares in days",
"Expire remote shares after x days" : "Expire remote shares after x days",
"Set default expiration date for shares via link or mail" : "Set default expiration date for shares via link or mail",
+ "Enforce expiration date for link or mail shares" : "Enforce expiration date for link or mail shares",
"Default expiration time of shares in days" : "Default expiration time of shares in days",
"Privacy settings for sharing" : "Privacy settings for sharing",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "Allow account name autocompletion in share dialog and allow access to the system address book",
@@ -616,6 +617,7 @@
"Your biography. Markdown is supported." : "Your biography. Markdown is supported.",
"Unable to update date of birth" : "Unable to update date of birth",
"Enter your date of birth" : "Enter your date of birth",
+ "Bluesky handle" : "Bluesky handle",
"You are using {s}{usage}{/s}" : "You are using {s}{usage}{/s}",
"You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})",
"You are a member of the following groups:" : "You are a member of the following groups:",
@@ -807,6 +809,7 @@
"Pronouns" : "Pronouns",
"Role" : "Role",
"X (formerly Twitter)" : "X (formerly Twitter)",
+ "Bluesky" : "Bluesky",
"Website" : "Website",
"Profile visibility" : "Profile visibility",
"Locale" : "Locale",
diff --git a/apps/settings/l10n/es.js b/apps/settings/l10n/es.js
index 7e232991ce5..1e6d3d36944 100644
--- a/apps/settings/l10n/es.js
+++ b/apps/settings/l10n/es.js
@@ -314,6 +314,10 @@ OC.L10N.register(
"Architecture" : "Arquitectura",
"64-bit" : "64-bits",
"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!" : "Parece que estás utilizando una versión de PHP de 32 bits. Nextcloud necesita la versión de 64 bits para funcionar correctamente. Por favor, ¡actualiza tu sistema operativo y PHP a 64 bits!",
+ "Task Processing pickup speed" : "Velocidad con la que se cargan las tareas",
+ "_No scheduled tasks in the last %n hour._::_No scheduled tasks in the last %n hours._" : ["No hay tareas programadas en la última %n hora.","No hay tareas programadas en las últimas %n horas.","No hay tareas programadas en las últimas %n horas."],
+ "_The task pickup speed has been ok in the last %n hour._::_The task pickup speed has been ok in the last %n hours._" : ["La velocidad con la que se cargan las tareas ha estado ok en la última %n hora.","La velocidad con la que se cargan las tareas ha estado ok en las últimas %n horas.","La velocidad con la que se cargan las tareas ha estado ok en las últimas %n horas."],
+ "_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._" : ["La velocidad con la que se cargan las tareas se ha ralentizado en la última %n hora. Muchas tareas tomaron más de 4 minutos en cargarse. Considere configurar un worker para que procese estas tareas en segundo plano.","La velocidad con la que se cargan las tareas se ha ralentizado en las últimas %n horas. Muchas tareas tomaron más de 4 minutos en cargarse. Considere configurar un worker para que procese estas tareas en segundo plano.","La velocidad con la que se cargan las tareas se ha ralentizado en las últimas %n horas. Muchas tareas tomaron más de 4 minutos en cargarse. Considere configurar un worker para que procese estas tareas en segundo plano."],
"Temporary space available" : "Espacio temporal disponible",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "Hubo un problema al verificar la ruta temporal de PHP - no fue apropiadamente establecida a un directorio. Valor de retorno: %s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "La función PHP \"disk_free_space\" está deshabilitada, lo que evita que se pueda chequear que hay suficiente espacio libre en los directorios temporales.",
@@ -339,6 +343,7 @@ OC.L10N.register(
"Nextcloud settings" : "Ajustes de Nextcloud",
"Unified task processing" : "Procesamiento unificado de tareas",
"AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "Las tareas de IA pueden ser implementadas por diferentes aplicaciones. Aquí puede definir que app se debería utilizar para cada tarea.",
+ "Allow AI usage for guest users" : "Permitir el uso de la IA para los usuarios invitados",
"Task:" : "Tarea:",
"Enable" : "Activar",
"None of your currently installed apps provide Task processing functionality" : "Ninguna de las aplicaciones que tienes actualmente instaladas proveen la funcionalidad de Tareas",
@@ -361,8 +366,12 @@ OC.L10N.register(
"Allow sharing with groups" : "Permitir compartir con grupos",
"Restrict users to only share with users in their groups" : "Limitar a los usuarios a compartir solo con los usuarios de sus grupos",
"Ignore the following groups when checking group membership" : "Ignorar los siguientes grupos cuando se verifique la pertenencia a grupos",
+ "Allow users to preview files even if download is disabled" : "Permitir a los usuarios obtener una vista previa de los archivos aún si las descargas están deshabilitadas",
+ "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Los usuarios serán capaces de tomar una captura de pantalla o grabarla. Esto no provee ninguna protección definitiva.",
"Allow users to share via link and emails" : "Permitir a los usuarios compartir a través de enlaces y correos electrónicos",
"Allow public uploads" : "Permitir subidas públicas",
+ "Allow public shares to be added to other clouds by federation." : "Permitir que los recursos compartidos públicos sean añadidos a otras nubes a través de la federación.",
+ "This will add share permissions to all newly created link shares." : "Esto añadirá permisos de recurso compartido a todos los enlaces compartidos nuevos.",
"Always ask for a password" : "Pedir siempre la contraseña",
"Enforce password protection" : "Forzar la protección por contraseña.",
"Exclude groups from password requirements" : "Excluir grupos de los requisitos de contraseña",
@@ -386,6 +395,7 @@ OC.L10N.register(
"Default expiration time of remote shares in days" : "Tiempo de caducidad por defecto para nuevos elementos compartidos en remoto, en días",
"Expire remote shares after x days" : "Los recursos compartidos en remoto caducan tras x días",
"Set default expiration date for shares via link or mail" : "Establecer fecha de caducidad por defecto para recursos compartidos por enlace o por correo",
+ "Enforce expiration date for link or mail shares" : "Hacer obligatoria la fecha de expiración para los enlaces compartidos o recursos de correo compartido",
"Default expiration time of shares in days" : "Fecha de caducidad predeterminada de recursos compartidos, en días",
"Privacy settings for sharing" : "Ajustes de privacidad al compartir",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "Permitir el autocompletado del nombre de usuario en el diálogo de compartir y permitir el acceso a la libreta de direcciones del sistema",
@@ -436,7 +446,7 @@ OC.L10N.register(
"Search groups…" : "Buscar grupos…",
"List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Lista de grupos. Esta lista no se muestra completa por razones de rendimiento. Los grupos se cargarán a medida que navegue o busque en la lista.",
"Loading groups…" : "Cargando grupos…",
- "Could not load app discover section" : "No se pudo cargar la sección de descubrir aplicaciones",
+ "Could not load app discover section" : "No se pudo cargar la sección la sección de descubrimiento de la app",
"Could not render element" : "No se pudo renderizar el elemento",
"Nothing to show" : "Nada que mostrar",
"Could not load section content from app store." : "No se pudo cargar el contenido de la sección desde la tienda de aplicaciones.",
@@ -583,9 +593,12 @@ OC.L10N.register(
"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." : "Siempre es bueno crear copias de seguridad de sus datos, en el caso del cifrado, asegúrese de tener una copia de seguridad de las claves de cifrado junto con sus datos.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Consulta la documentación del administrador para saber cómo cifrar manualmente también los archivos existentes.",
"This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final. ¿Realmente quiere activar el cifrado?",
+ "Failed to delete group \"{group}\"" : "Fallo al eliminar el grupo \"{group}\"",
"Please confirm the group removal" : "Por favor, confirme la eliminación del grupo",
+ "You are about to delete the group \"{group}\". The accounts will NOT be deleted." : "Está por eliminar el grupo \"{group}\". Las cuentas NO serán eliminadas.",
"Submit" : "Enviar",
"Rename group" : "Renombrar grupo",
+ "Delete group" : "Eliminar grupo",
"Current password" : "Contraseña actual",
"New password" : "Nueva contraseña",
"Change password" : "Cambiar contraseña",
@@ -640,6 +653,7 @@ OC.L10N.register(
"No locale set" : "No se ha establecido el idioma",
"Your city" : "Su ciudad",
"Your organisation" : "Su organización",
+ "Your phone number" : "Su número telefónico",
"Edit your Profile visibility" : "Editar la visibilidad de tu perfil",
"Unable to update profile enabled state" : "No se pudo actualizar el estado habilitado del perfil",
"Enable profile" : "Habilitar perfil",
@@ -648,6 +662,7 @@ OC.L10N.register(
"she/her" : "ella",
"he/him" : "él",
"they/them" : "elle",
+ "Your pronouns. E.g. {pronounsExample}" : "Sus pronombres. P. ej. {pronounsExample}",
"Your role" : "Su rol",
"Your X (formerly Twitter) handle" : "Tu usuario de X (anteriormente Twitter)",
"Your website" : "La dirección de su sitio web",
diff --git a/apps/settings/l10n/es.json b/apps/settings/l10n/es.json
index e901dcfa7eb..f3e25012a17 100644
--- a/apps/settings/l10n/es.json
+++ b/apps/settings/l10n/es.json
@@ -312,6 +312,10 @@
"Architecture" : "Arquitectura",
"64-bit" : "64-bits",
"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!" : "Parece que estás utilizando una versión de PHP de 32 bits. Nextcloud necesita la versión de 64 bits para funcionar correctamente. Por favor, ¡actualiza tu sistema operativo y PHP a 64 bits!",
+ "Task Processing pickup speed" : "Velocidad con la que se cargan las tareas",
+ "_No scheduled tasks in the last %n hour._::_No scheduled tasks in the last %n hours._" : ["No hay tareas programadas en la última %n hora.","No hay tareas programadas en las últimas %n horas.","No hay tareas programadas en las últimas %n horas."],
+ "_The task pickup speed has been ok in the last %n hour._::_The task pickup speed has been ok in the last %n hours._" : ["La velocidad con la que se cargan las tareas ha estado ok en la última %n hora.","La velocidad con la que se cargan las tareas ha estado ok en las últimas %n horas.","La velocidad con la que se cargan las tareas ha estado ok en las últimas %n horas."],
+ "_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._" : ["La velocidad con la que se cargan las tareas se ha ralentizado en la última %n hora. Muchas tareas tomaron más de 4 minutos en cargarse. Considere configurar un worker para que procese estas tareas en segundo plano.","La velocidad con la que se cargan las tareas se ha ralentizado en las últimas %n horas. Muchas tareas tomaron más de 4 minutos en cargarse. Considere configurar un worker para que procese estas tareas en segundo plano.","La velocidad con la que se cargan las tareas se ha ralentizado en las últimas %n horas. Muchas tareas tomaron más de 4 minutos en cargarse. Considere configurar un worker para que procese estas tareas en segundo plano."],
"Temporary space available" : "Espacio temporal disponible",
"Error while checking the temporary PHP path - it was not properly set to a directory. Returned value: %s" : "Hubo un problema al verificar la ruta temporal de PHP - no fue apropiadamente establecida a un directorio. Valor de retorno: %s",
"The PHP function \"disk_free_space\" is disabled, which prevents the check for enough space in the temporary directories." : "La función PHP \"disk_free_space\" está deshabilitada, lo que evita que se pueda chequear que hay suficiente espacio libre en los directorios temporales.",
@@ -337,6 +341,7 @@
"Nextcloud settings" : "Ajustes de Nextcloud",
"Unified task processing" : "Procesamiento unificado de tareas",
"AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "Las tareas de IA pueden ser implementadas por diferentes aplicaciones. Aquí puede definir que app se debería utilizar para cada tarea.",
+ "Allow AI usage for guest users" : "Permitir el uso de la IA para los usuarios invitados",
"Task:" : "Tarea:",
"Enable" : "Activar",
"None of your currently installed apps provide Task processing functionality" : "Ninguna de las aplicaciones que tienes actualmente instaladas proveen la funcionalidad de Tareas",
@@ -359,8 +364,12 @@
"Allow sharing with groups" : "Permitir compartir con grupos",
"Restrict users to only share with users in their groups" : "Limitar a los usuarios a compartir solo con los usuarios de sus grupos",
"Ignore the following groups when checking group membership" : "Ignorar los siguientes grupos cuando se verifique la pertenencia a grupos",
+ "Allow users to preview files even if download is disabled" : "Permitir a los usuarios obtener una vista previa de los archivos aún si las descargas están deshabilitadas",
+ "Users will still be able to screenshot or record the screen. This does not provide any definitive protection." : "Los usuarios serán capaces de tomar una captura de pantalla o grabarla. Esto no provee ninguna protección definitiva.",
"Allow users to share via link and emails" : "Permitir a los usuarios compartir a través de enlaces y correos electrónicos",
"Allow public uploads" : "Permitir subidas públicas",
+ "Allow public shares to be added to other clouds by federation." : "Permitir que los recursos compartidos públicos sean añadidos a otras nubes a través de la federación.",
+ "This will add share permissions to all newly created link shares." : "Esto añadirá permisos de recurso compartido a todos los enlaces compartidos nuevos.",
"Always ask for a password" : "Pedir siempre la contraseña",
"Enforce password protection" : "Forzar la protección por contraseña.",
"Exclude groups from password requirements" : "Excluir grupos de los requisitos de contraseña",
@@ -384,6 +393,7 @@
"Default expiration time of remote shares in days" : "Tiempo de caducidad por defecto para nuevos elementos compartidos en remoto, en días",
"Expire remote shares after x days" : "Los recursos compartidos en remoto caducan tras x días",
"Set default expiration date for shares via link or mail" : "Establecer fecha de caducidad por defecto para recursos compartidos por enlace o por correo",
+ "Enforce expiration date for link or mail shares" : "Hacer obligatoria la fecha de expiración para los enlaces compartidos o recursos de correo compartido",
"Default expiration time of shares in days" : "Fecha de caducidad predeterminada de recursos compartidos, en días",
"Privacy settings for sharing" : "Ajustes de privacidad al compartir",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "Permitir el autocompletado del nombre de usuario en el diálogo de compartir y permitir el acceso a la libreta de direcciones del sistema",
@@ -434,7 +444,7 @@
"Search groups…" : "Buscar grupos…",
"List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list." : "Lista de grupos. Esta lista no se muestra completa por razones de rendimiento. Los grupos se cargarán a medida que navegue o busque en la lista.",
"Loading groups…" : "Cargando grupos…",
- "Could not load app discover section" : "No se pudo cargar la sección de descubrir aplicaciones",
+ "Could not load app discover section" : "No se pudo cargar la sección la sección de descubrimiento de la app",
"Could not render element" : "No se pudo renderizar el elemento",
"Nothing to show" : "Nada que mostrar",
"Could not load section content from app store." : "No se pudo cargar el contenido de la sección desde la tienda de aplicaciones.",
@@ -581,9 +591,12 @@
"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." : "Siempre es bueno crear copias de seguridad de sus datos, en el caso del cifrado, asegúrese de tener una copia de seguridad de las claves de cifrado junto con sus datos.",
"Refer to the admin documentation on how to manually also encrypt existing files." : "Consulta la documentación del administrador para saber cómo cifrar manualmente también los archivos existentes.",
"This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final. ¿Realmente quiere activar el cifrado?",
+ "Failed to delete group \"{group}\"" : "Fallo al eliminar el grupo \"{group}\"",
"Please confirm the group removal" : "Por favor, confirme la eliminación del grupo",
+ "You are about to delete the group \"{group}\". The accounts will NOT be deleted." : "Está por eliminar el grupo \"{group}\". Las cuentas NO serán eliminadas.",
"Submit" : "Enviar",
"Rename group" : "Renombrar grupo",
+ "Delete group" : "Eliminar grupo",
"Current password" : "Contraseña actual",
"New password" : "Nueva contraseña",
"Change password" : "Cambiar contraseña",
@@ -638,6 +651,7 @@
"No locale set" : "No se ha establecido el idioma",
"Your city" : "Su ciudad",
"Your organisation" : "Su organización",
+ "Your phone number" : "Su número telefónico",
"Edit your Profile visibility" : "Editar la visibilidad de tu perfil",
"Unable to update profile enabled state" : "No se pudo actualizar el estado habilitado del perfil",
"Enable profile" : "Habilitar perfil",
@@ -646,6 +660,7 @@
"she/her" : "ella",
"he/him" : "él",
"they/them" : "elle",
+ "Your pronouns. E.g. {pronounsExample}" : "Sus pronombres. P. ej. {pronounsExample}",
"Your role" : "Su rol",
"Your X (formerly Twitter) handle" : "Tu usuario de X (anteriormente Twitter)",
"Your website" : "La dirección de su sitio web",
diff --git a/apps/settings/l10n/et_EE.js b/apps/settings/l10n/et_EE.js
index dfff7899eb5..20b539dfa9a 100644
--- a/apps/settings/l10n/et_EE.js
+++ b/apps/settings/l10n/et_EE.js
@@ -261,6 +261,7 @@ OC.L10N.register(
"Default expiration time of remote shares in days" : "Kaugserveris asuva jaosmeedia vaikimisi aegumine päevades",
"Expire remote shares after x days" : "Jaosmeedia aegub x päeva möödudes",
"Set default expiration date for shares via link or mail" : "Määra lingi või e-kirjaga jagatava jaosmeedia vaikimisi aegumiskuupäev",
+ "Enforce expiration date for link or mail shares" : "Jõusta lingiga või e-postiga jagamise aegumiskuupäev",
"Default expiration time of shares in days" : "Jaosmeedia vaikimisi aegumine päevades",
"Privacy settings for sharing" : "Jagamise privaatsusseadistused",
"Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Kuva avaliku lingiga üleslaadimise lehel lahtiütluste tekst (vaid siis, kui failide loend on peidetud)",
@@ -473,6 +474,7 @@ OC.L10N.register(
"Your biography. Markdown is supported." : "Teave sinu kohta. Võid kasutada ka markdown-vormingut.",
"Unable to update date of birth" : "Sünnikuupäeva seadistamine ei õnnestu",
"Enter your date of birth" : "Palun sisesta sünnikuupäev",
+ "Bluesky handle" : "Kasutajanimi Bluesky's",
"You are using {s}{usage}{/s}" : "Sa kasutad: {s}{usage}{/s}",
"You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Sa kasutad: {s}{usage}{/s} / {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})",
"You are a member of the following groups:" : "Sa oled nende gruppide liige:",
@@ -492,7 +494,7 @@ OC.L10N.register(
"Unable to delete additional email address" : "Ei õnnestunud kustutada täiendavat e-posti aadressi",
"Primary email for password reset and notifications" : "Põhiline e-postiaadress salasõna lähtestamiseks ja teavituste jaoks",
"No email address set" : "E-posti aadressi pole veel määratud",
- "Your handle" : "Sinu pseudonüüm",
+ "Your handle" : "Sinu kasutajanimi",
"Derived from your locale ({weekDayName})" : "Tuletatud lokaadist ({weekDayName})",
"Unable to update first day of week" : "Nädala esimese päeva uuendamine ei õnnestu",
"Day to use as the first day of week" : "Nädala esimene päev",
@@ -660,6 +662,7 @@ OC.L10N.register(
"Pronouns" : "Asesõna pöördumisel",
"Role" : "Roll",
"X (formerly Twitter)" : "X (varasemalt Twitter)",
+ "Bluesky" : "Bluesky",
"Website" : "Veebileht",
"Profile visibility" : "Profiili nähtavus",
"Locale" : "Kasutuskoht",
diff --git a/apps/settings/l10n/et_EE.json b/apps/settings/l10n/et_EE.json
index e642931fd77..35c365cb068 100644
--- a/apps/settings/l10n/et_EE.json
+++ b/apps/settings/l10n/et_EE.json
@@ -259,6 +259,7 @@
"Default expiration time of remote shares in days" : "Kaugserveris asuva jaosmeedia vaikimisi aegumine päevades",
"Expire remote shares after x days" : "Jaosmeedia aegub x päeva möödudes",
"Set default expiration date for shares via link or mail" : "Määra lingi või e-kirjaga jagatava jaosmeedia vaikimisi aegumiskuupäev",
+ "Enforce expiration date for link or mail shares" : "Jõusta lingiga või e-postiga jagamise aegumiskuupäev",
"Default expiration time of shares in days" : "Jaosmeedia vaikimisi aegumine päevades",
"Privacy settings for sharing" : "Jagamise privaatsusseadistused",
"Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Kuva avaliku lingiga üleslaadimise lehel lahtiütluste tekst (vaid siis, kui failide loend on peidetud)",
@@ -471,6 +472,7 @@
"Your biography. Markdown is supported." : "Teave sinu kohta. Võid kasutada ka markdown-vormingut.",
"Unable to update date of birth" : "Sünnikuupäeva seadistamine ei õnnestu",
"Enter your date of birth" : "Palun sisesta sünnikuupäev",
+ "Bluesky handle" : "Kasutajanimi Bluesky's",
"You are using {s}{usage}{/s}" : "Sa kasutad: {s}{usage}{/s}",
"You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Sa kasutad: {s}{usage}{/s} / {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})",
"You are a member of the following groups:" : "Sa oled nende gruppide liige:",
@@ -490,7 +492,7 @@
"Unable to delete additional email address" : "Ei õnnestunud kustutada täiendavat e-posti aadressi",
"Primary email for password reset and notifications" : "Põhiline e-postiaadress salasõna lähtestamiseks ja teavituste jaoks",
"No email address set" : "E-posti aadressi pole veel määratud",
- "Your handle" : "Sinu pseudonüüm",
+ "Your handle" : "Sinu kasutajanimi",
"Derived from your locale ({weekDayName})" : "Tuletatud lokaadist ({weekDayName})",
"Unable to update first day of week" : "Nädala esimese päeva uuendamine ei õnnestu",
"Day to use as the first day of week" : "Nädala esimene päev",
@@ -658,6 +660,7 @@
"Pronouns" : "Asesõna pöördumisel",
"Role" : "Roll",
"X (formerly Twitter)" : "X (varasemalt Twitter)",
+ "Bluesky" : "Bluesky",
"Website" : "Veebileht",
"Profile visibility" : "Profiili nähtavus",
"Locale" : "Kasutuskoht",
diff --git a/apps/settings/l10n/ga.js b/apps/settings/l10n/ga.js
index 19dd4c69544..291340dc7dd 100644
--- a/apps/settings/l10n/ga.js
+++ b/apps/settings/l10n/ga.js
@@ -395,6 +395,7 @@ OC.L10N.register(
"Default expiration time of remote shares in days" : "Am éagtha réamhshocraithe cianscaireanna i laethanta",
"Expire remote shares after x days" : "Rachaidh cianscaireanna in éag tar éis x lá",
"Set default expiration date for shares via link or mail" : "Socraigh dáta éaga réamhshocraithe le haghaidh scaireanna trí nasc nó trí ríomhphost",
+ "Enforce expiration date for link or mail shares" : "Dáta éaga a fhorfheidhmiú le haghaidh comhroinnt nasc nó ríomhphoist",
"Default expiration time of shares in days" : "Am éagtha réamhshocraithe na scaireanna i laethanta",
"Privacy settings for sharing" : "Socruithe príobháideachais le haghaidh comhroinnte",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "Ceadaigh uathchríochnú ainm an chuntais sa dialóg scaireanna agus ceadaigh rochtain ar leabhar seoltaí an chórais",
@@ -618,6 +619,7 @@ OC.L10N.register(
"Your biography. Markdown is supported." : "Do bheathaisnéis. Tacaítear le Markdown.",
"Unable to update date of birth" : "Ní féidir an dáta breithe a nuashonrú",
"Enter your date of birth" : "Cuir isteach do dháta breithe",
+ "Bluesky handle" : "Láimhseáil Bluesky",
"You are using {s}{usage}{/s}" : "Tá tú ag úsáid {s}{usage}{/s}",
"You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Tá tú ag úsáid{s}{usage}{/s} de {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})",
"You are a member of the following groups:" : "Tá tú i do bhall de na grúpaí seo a leanas:",
@@ -809,6 +811,7 @@ OC.L10N.register(
"Pronouns" : "Forainmneacha",
"Role" : "Ról",
"X (formerly Twitter)" : "X (Twitter roimhe seo)",
+ "Bluesky" : "Bluesky",
"Website" : "Suíomh Gréasáin",
"Profile visibility" : "Infheictheacht próifíle",
"Locale" : "Logán",
diff --git a/apps/settings/l10n/ga.json b/apps/settings/l10n/ga.json
index 49dacb4ad00..7b12208cdba 100644
--- a/apps/settings/l10n/ga.json
+++ b/apps/settings/l10n/ga.json
@@ -393,6 +393,7 @@
"Default expiration time of remote shares in days" : "Am éagtha réamhshocraithe cianscaireanna i laethanta",
"Expire remote shares after x days" : "Rachaidh cianscaireanna in éag tar éis x lá",
"Set default expiration date for shares via link or mail" : "Socraigh dáta éaga réamhshocraithe le haghaidh scaireanna trí nasc nó trí ríomhphost",
+ "Enforce expiration date for link or mail shares" : "Dáta éaga a fhorfheidhmiú le haghaidh comhroinnt nasc nó ríomhphoist",
"Default expiration time of shares in days" : "Am éagtha réamhshocraithe na scaireanna i laethanta",
"Privacy settings for sharing" : "Socruithe príobháideachais le haghaidh comhroinnte",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "Ceadaigh uathchríochnú ainm an chuntais sa dialóg scaireanna agus ceadaigh rochtain ar leabhar seoltaí an chórais",
@@ -616,6 +617,7 @@
"Your biography. Markdown is supported." : "Do bheathaisnéis. Tacaítear le Markdown.",
"Unable to update date of birth" : "Ní féidir an dáta breithe a nuashonrú",
"Enter your date of birth" : "Cuir isteach do dháta breithe",
+ "Bluesky handle" : "Láimhseáil Bluesky",
"You are using {s}{usage}{/s}" : "Tá tú ag úsáid {s}{usage}{/s}",
"You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Tá tú ag úsáid{s}{usage}{/s} de {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})",
"You are a member of the following groups:" : "Tá tú i do bhall de na grúpaí seo a leanas:",
@@ -807,6 +809,7 @@
"Pronouns" : "Forainmneacha",
"Role" : "Ról",
"X (formerly Twitter)" : "X (Twitter roimhe seo)",
+ "Bluesky" : "Bluesky",
"Website" : "Suíomh Gréasáin",
"Profile visibility" : "Infheictheacht próifíle",
"Locale" : "Logán",
diff --git a/apps/settings/l10n/ja.js b/apps/settings/l10n/ja.js
index e23468d6858..4f6207dff4c 100644
--- a/apps/settings/l10n/ja.js
+++ b/apps/settings/l10n/ja.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." : "スクリーンショットや録画は可能です。これは決定的な保護にはなりません。",
"Allow users to share via link and emails" : "URLリンクとメールでの共有を許可する",
"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" : "パスワード要件から除外するグループ",
@@ -393,6 +395,7 @@ OC.L10N.register(
"Default expiration time of remote shares in days" : "リモート共有のデフォルトの有効期限(日単位)",
"Expire remote shares after x days" : "x 日後にリモート共有を無効にする",
"Set default expiration date for shares via link or mail" : "リンクまたはメールでの共有のデフォルトの期限を設定する",
+ "Enforce expiration date for link or mail shares" : "リンクまたはメール共有の有効期限を強制適用する",
"Default expiration time of shares in days" : "共有のデフォルトの有効期限(日単位)",
"Privacy settings for sharing" : "共有のプライバシー設定",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "共有ダイアログでアカウント名の自動入力を許可し、システムのアドレス帳へのアクセスを許可します",
diff --git a/apps/settings/l10n/ja.json b/apps/settings/l10n/ja.json
index 131240c6428..377169a96fc 100644
--- a/apps/settings/l10n/ja.json
+++ b/apps/settings/l10n/ja.json
@@ -368,6 +368,8 @@
"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" : "URLリンクとメールでの共有を許可する",
"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" : "パスワード要件から除外するグループ",
@@ -391,6 +393,7 @@
"Default expiration time of remote shares in days" : "リモート共有のデフォルトの有効期限(日単位)",
"Expire remote shares after x days" : "x 日後にリモート共有を無効にする",
"Set default expiration date for shares via link or mail" : "リンクまたはメールでの共有のデフォルトの期限を設定する",
+ "Enforce expiration date for link or mail shares" : "リンクまたはメール共有の有効期限を強制適用する",
"Default expiration time of shares in days" : "共有のデフォルトの有効期限(日単位)",
"Privacy settings for sharing" : "共有のプライバシー設定",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "共有ダイアログでアカウント名の自動入力を許可し、システムのアドレス帳へのアクセスを許可します",
diff --git a/apps/settings/l10n/lv.js b/apps/settings/l10n/lv.js
index b3bba6519de..72737da6f8f 100644
--- a/apps/settings/l10n/lv.js
+++ b/apps/settings/l10n/lv.js
@@ -91,6 +91,7 @@ OC.L10N.register(
"Featured" : "Izcelta",
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Izceltās lietotnes ir kopienas izstrādātas. Tās sniedz centrālu funkcionalitāte un ir gatavas izmantošanai produkcijā.",
"Download and enable all" : "Lejupielādēt un iespējot visu",
+ "All apps are up-to-date." : "Visas lietotnes ir atjauninātas.",
"Icon" : "Ikona",
"Name" : "Nosaukums",
"Version" : "Versija",
@@ -144,7 +145,7 @@ OC.L10N.register(
"Password confirmation is required" : "Nepieciešams paroles apstiprinājums",
"Server-side encryption" : "Servera šifrēšana",
"Enable server-side encryption" : "Ieslēgt servera šifrēšanu",
- "No encryption module loaded, please enable an encryption module in the app menu." : "Nav ielādēts šifrēšanas moduļis, lūdzu, aktivizējiet šifrēšanas moduli lietotņu izvēlnē.",
+ "No encryption module loaded, please enable an encryption module in the app menu." : "Nav ielādēts neviens šifrēšanas modulis, lūgums iespējot šifrēšanas moduli lietotņu izvēlnē.",
"Select default encryption module:" : "Atlasīt noklusējuma šifrēšanas moduli:",
"Enable encryption" : "Ieslēgt šifrēšanu",
"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." : "Šifrēšana vien negarantē sistēmas drošību. Skatiet dokumentāciju, lai iegūtu papildinformāciju par šifrēšanas lietotnes izmantošanu un atbalstītajiem izmantošanas veidiem.",
@@ -163,7 +164,7 @@ OC.L10N.register(
"You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Tu izmanto {s}{usage}{/s} no {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})",
"You are a member of the following groups:" : "Tu esi zemāk uzskaitīto kopu dalībnieks:",
"This address is not confirmed" : "Šī adrese nav apstiprināta",
- "Primary email for password reset and notifications" : "Primārā e-pasta adrese paroles atjaunošanai un paziņojumiem",
+ "Primary email for password reset and notifications" : "Galvenā e-pasta adrese paroles atiestatīšanai un paziņojumiem",
"No email address set" : "Nav norādīts e-pasts",
"Help translate" : "Palīdzi tulkot",
"Unable to update locale" : "Nevarēja atjaunināt lokalizāciju",
@@ -224,6 +225,7 @@ OC.L10N.register(
"Hide" : "Paslēpt",
"Download and enable" : "Lejupielādēt un iespējot",
"Disable" : "Deaktivēt",
+ "Allow untested app" : "Atļaut nepārbaudītu lietotni",
"Unknown" : "Nezināms",
"Never" : "Nekad",
"Do you really want to wipe your data from this device?" : "Vai tiešām izdzēst datus šajā ierīcē?",
diff --git a/apps/settings/l10n/lv.json b/apps/settings/l10n/lv.json
index 5452dd137a8..a12bc0c0cc2 100644
--- a/apps/settings/l10n/lv.json
+++ b/apps/settings/l10n/lv.json
@@ -89,6 +89,7 @@
"Featured" : "Izcelta",
"Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Izceltās lietotnes ir kopienas izstrādātas. Tās sniedz centrālu funkcionalitāte un ir gatavas izmantošanai produkcijā.",
"Download and enable all" : "Lejupielādēt un iespējot visu",
+ "All apps are up-to-date." : "Visas lietotnes ir atjauninātas.",
"Icon" : "Ikona",
"Name" : "Nosaukums",
"Version" : "Versija",
@@ -142,7 +143,7 @@
"Password confirmation is required" : "Nepieciešams paroles apstiprinājums",
"Server-side encryption" : "Servera šifrēšana",
"Enable server-side encryption" : "Ieslēgt servera šifrēšanu",
- "No encryption module loaded, please enable an encryption module in the app menu." : "Nav ielādēts šifrēšanas moduļis, lūdzu, aktivizējiet šifrēšanas moduli lietotņu izvēlnē.",
+ "No encryption module loaded, please enable an encryption module in the app menu." : "Nav ielādēts neviens šifrēšanas modulis, lūgums iespējot šifrēšanas moduli lietotņu izvēlnē.",
"Select default encryption module:" : "Atlasīt noklusējuma šifrēšanas moduli:",
"Enable encryption" : "Ieslēgt šifrēšanu",
"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." : "Šifrēšana vien negarantē sistēmas drošību. Skatiet dokumentāciju, lai iegūtu papildinformāciju par šifrēšanas lietotnes izmantošanu un atbalstītajiem izmantošanas veidiem.",
@@ -161,7 +162,7 @@
"You are using {s}{usage}{/s} of {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})" : "Tu izmanto {s}{usage}{/s} no {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})",
"You are a member of the following groups:" : "Tu esi zemāk uzskaitīto kopu dalībnieks:",
"This address is not confirmed" : "Šī adrese nav apstiprināta",
- "Primary email for password reset and notifications" : "Primārā e-pasta adrese paroles atjaunošanai un paziņojumiem",
+ "Primary email for password reset and notifications" : "Galvenā e-pasta adrese paroles atiestatīšanai un paziņojumiem",
"No email address set" : "Nav norādīts e-pasts",
"Help translate" : "Palīdzi tulkot",
"Unable to update locale" : "Nevarēja atjaunināt lokalizāciju",
@@ -222,6 +223,7 @@
"Hide" : "Paslēpt",
"Download and enable" : "Lejupielādēt un iespējot",
"Disable" : "Deaktivēt",
+ "Allow untested app" : "Atļaut nepārbaudītu lietotni",
"Unknown" : "Nezināms",
"Never" : "Nekad",
"Do you really want to wipe your data from this device?" : "Vai tiešām izdzēst datus šajā ierīcē?",
diff --git a/apps/settings/l10n/pt_BR.js b/apps/settings/l10n/pt_BR.js
index 848734a4dbb..b676cd4e35b 100644
--- a/apps/settings/l10n/pt_BR.js
+++ b/apps/settings/l10n/pt_BR.js
@@ -395,6 +395,7 @@ OC.L10N.register(
"Default expiration time of remote shares in days" : "Tempo de expiração padrão de compartilhamentos remotos em dias",
"Expire remote shares after x days" : "Expiração de compartilhamentos remotos após x dias",
"Set default expiration date for shares via link or mail" : "Definir a data de expiração padrão para compartilhamentos via link ou e-mail",
+ "Enforce expiration date for link or mail shares" : "Impor data de expiração para compartilhamentos de link ou e-mail",
"Default expiration time of shares in days" : "Tempo de expiração padrão dos compartilhamentos em dias",
"Privacy settings for sharing" : "Configurações de privacidade para compartilhamento",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "Permitir o preenchimento automático de nomes das contas na caixa de diálogo de compartilhamento e permitir o acesso ao catálogo de endereços do sistema",
diff --git a/apps/settings/l10n/pt_BR.json b/apps/settings/l10n/pt_BR.json
index 9ed68c369c2..891f8fa6d5f 100644
--- a/apps/settings/l10n/pt_BR.json
+++ b/apps/settings/l10n/pt_BR.json
@@ -393,6 +393,7 @@
"Default expiration time of remote shares in days" : "Tempo de expiração padrão de compartilhamentos remotos em dias",
"Expire remote shares after x days" : "Expiração de compartilhamentos remotos após x dias",
"Set default expiration date for shares via link or mail" : "Definir a data de expiração padrão para compartilhamentos via link ou e-mail",
+ "Enforce expiration date for link or mail shares" : "Impor data de expiração para compartilhamentos de link ou e-mail",
"Default expiration time of shares in days" : "Tempo de expiração padrão dos compartilhamentos em dias",
"Privacy settings for sharing" : "Configurações de privacidade para compartilhamento",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "Permitir o preenchimento automático de nomes das contas na caixa de diálogo de compartilhamento e permitir o acesso ao catálogo de endereços do sistema",
diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js
index 92fdadf224b..56a8d68be59 100644
--- a/apps/settings/l10n/uk.js
+++ b/apps/settings/l10n/uk.js
@@ -395,6 +395,7 @@ OC.L10N.register(
"Default expiration time of remote shares in days" : "Типовий термін дії спільних ресурсів у днях",
"Expire remote shares after x days" : "Термін дії спільних ресурсів завершується через x днів",
"Set default expiration date for shares via link or mail" : "Встановити типовий термін дії спільних ресурсів за посиланням або електронною поштою",
+ "Enforce expiration date for link or mail shares" : "Застосовувати термін дії для посилань або спільного доступу до пошти",
"Default expiration time of shares in days" : "Типовий термін дії спільних ресурсів у днях",
"Privacy settings for sharing" : "Налаштування конфіденційності для спільного доступу",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "Дозволити автозаповнення імени користувача та доступ до системної адресної книги",
@@ -618,6 +619,7 @@ OC.L10N.register(
"Your biography. Markdown is supported." : "Про вас. Підтримується текстова розмітка.",
"Unable to update date of birth" : "Не вдалося оновити дату народження",
"Enter your date of birth" : "Зазначте дату вашого народження",
+ "Bluesky handle" : "Рукоятка Bluesky",
"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} із {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})",
"You are a member of the following groups:" : "Ви є учасником груп:",
@@ -809,6 +811,7 @@ OC.L10N.register(
"Pronouns" : "Займенники",
"Role" : "Роль",
"X (formerly Twitter)" : "X (раніше відома як Twitter)",
+ "Bluesky" : "Bluesky",
"Website" : "Вебсайт",
"Profile visibility" : "Видимість профілю",
"Locale" : "Локаль",
diff --git a/apps/settings/l10n/uk.json b/apps/settings/l10n/uk.json
index 6ff8ab9eeaa..e0f3c45739e 100644
--- a/apps/settings/l10n/uk.json
+++ b/apps/settings/l10n/uk.json
@@ -393,6 +393,7 @@
"Default expiration time of remote shares in days" : "Типовий термін дії спільних ресурсів у днях",
"Expire remote shares after x days" : "Термін дії спільних ресурсів завершується через x днів",
"Set default expiration date for shares via link or mail" : "Встановити типовий термін дії спільних ресурсів за посиланням або електронною поштою",
+ "Enforce expiration date for link or mail shares" : "Застосовувати термін дії для посилань або спільного доступу до пошти",
"Default expiration time of shares in days" : "Типовий термін дії спільних ресурсів у днях",
"Privacy settings for sharing" : "Налаштування конфіденційності для спільного доступу",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "Дозволити автозаповнення імени користувача та доступ до системної адресної книги",
@@ -616,6 +617,7 @@
"Your biography. Markdown is supported." : "Про вас. Підтримується текстова розмітка.",
"Unable to update date of birth" : "Не вдалося оновити дату народження",
"Enter your date of birth" : "Зазначте дату вашого народження",
+ "Bluesky handle" : "Рукоятка Bluesky",
"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} із {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})",
"You are a member of the following groups:" : "Ви є учасником груп:",
@@ -807,6 +809,7 @@
"Pronouns" : "Займенники",
"Role" : "Роль",
"X (formerly Twitter)" : "X (раніше відома як Twitter)",
+ "Bluesky" : "Bluesky",
"Website" : "Вебсайт",
"Profile visibility" : "Видимість профілю",
"Locale" : "Локаль",
diff --git a/apps/settings/l10n/zh_CN.js b/apps/settings/l10n/zh_CN.js
index 6b9f224f47f..ae8f90baf91 100644
--- a/apps/settings/l10n/zh_CN.js
+++ b/apps/settings/l10n/zh_CN.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." : "用户仍然可以屏幕截图或录制屏幕。这并不能提供任何明确的保护。",
"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" : "不对指定的组执行密码要求",
@@ -393,6 +395,7 @@ OC.L10N.register(
"Default expiration time of remote shares in days" : "远程共享的默认过期时间(天)",
"Expire remote shares after x days" : "远程共享在X天后过期",
"Set default expiration date for shares via link or mail" : "设置通过链接或电子邮件分享的默认过期时间",
+ "Enforce expiration date for link or mail shares" : "强制设置链接或邮件共享的到期日期",
"Default expiration time of shares in days" : "默认的共享过期时间(天)",
"Privacy settings for sharing" : "共享的隐私设置",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "允许在共享对话框中自动完成帐户名称并允许访问系统地址簿",
@@ -667,8 +670,8 @@ OC.L10N.register(
"Unable to update {property}" : "无法更新 {property}",
"No {property} set" : "没有设置 {property}",
"Change scope level of {property}, current scope is {scope}" : "更改 {property} 的范围级别,当前范围为 {scope}",
- "Unable to update federation scope of the primary {property}" : "无法更新主要 {property} 的联盟范围",
- "Unable to update federation scope of additional {property}" : "无法更新额外 {property} 的联盟范围",
+ "Unable to update federation scope of the primary {property}" : "无法更新主 {property} 的联邦范围",
+ "Unable to update federation scope of additional {property}" : "无法更新附加 {property} 的联邦范围",
"Add additional email" : "添加额外的电子邮箱",
"Add" : "添加",
"Create" : "创建",
@@ -812,7 +815,7 @@ 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 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" : "不可用,因为不允许将帐户特定数据发布到查找服务器,如果您有任何疑问,请联系您的系统管理员",
"Discover" : "发现",
"Your apps" : "你的应用",
diff --git a/apps/settings/l10n/zh_CN.json b/apps/settings/l10n/zh_CN.json
index 997db288cc4..46b523ec1a6 100644
--- a/apps/settings/l10n/zh_CN.json
+++ b/apps/settings/l10n/zh_CN.json
@@ -368,6 +368,8 @@
"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" : "不对指定的组执行密码要求",
@@ -391,6 +393,7 @@
"Default expiration time of remote shares in days" : "远程共享的默认过期时间(天)",
"Expire remote shares after x days" : "远程共享在X天后过期",
"Set default expiration date for shares via link or mail" : "设置通过链接或电子邮件分享的默认过期时间",
+ "Enforce expiration date for link or mail shares" : "强制设置链接或邮件共享的到期日期",
"Default expiration time of shares in days" : "默认的共享过期时间(天)",
"Privacy settings for sharing" : "共享的隐私设置",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "允许在共享对话框中自动完成帐户名称并允许访问系统地址簿",
@@ -665,8 +668,8 @@
"Unable to update {property}" : "无法更新 {property}",
"No {property} set" : "没有设置 {property}",
"Change scope level of {property}, current scope is {scope}" : "更改 {property} 的范围级别,当前范围为 {scope}",
- "Unable to update federation scope of the primary {property}" : "无法更新主要 {property} 的联盟范围",
- "Unable to update federation scope of additional {property}" : "无法更新额外 {property} 的联盟范围",
+ "Unable to update federation scope of the primary {property}" : "无法更新主 {property} 的联邦范围",
+ "Unable to update federation scope of additional {property}" : "无法更新附加 {property} 的联邦范围",
"Add additional email" : "添加额外的电子邮箱",
"Add" : "添加",
"Create" : "创建",
@@ -810,7 +813,7 @@
"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 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" : "不可用,因为不允许将帐户特定数据发布到查找服务器,如果您有任何疑问,请联系您的系统管理员",
"Discover" : "发现",
"Your apps" : "你的应用",
diff --git a/apps/settings/l10n/zh_HK.js b/apps/settings/l10n/zh_HK.js
index fe433237b8e..727d9de2a13 100644
--- a/apps/settings/l10n/zh_HK.js
+++ b/apps/settings/l10n/zh_HK.js
@@ -395,6 +395,7 @@ OC.L10N.register(
"Default expiration time of remote shares in days" : "遠端分享默認屆滿時間(天)",
"Expire remote shares after x days" : "x天後遠端分享過期",
"Set default expiration date for shares via link or mail" : "設定透過連結或郵件分享的預設過期日",
+ "Enforce expiration date for link or mail shares" : "強制設定連結或郵件分享的到期日",
"Default expiration time of shares in days" : "分享默認到期時間(天)",
"Privacy settings for sharing" : "分享的隱私設定",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "允許在分享對話方塊中自動補齊帳戶名稱並允許存取系統通訊錄",
@@ -618,6 +619,7 @@ OC.L10N.register(
"Your biography. Markdown is supported." : "您的自傳。支援 Markdown。",
"Unable to update date of birth" : "無法更新出生日期",
"Enter your date of birth" : "輸入您的出生日期",
+ "Bluesky handle" : "Bluesky 別名",
"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},總儲存空間 {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})",
"You are a member of the following groups:" : "你是下列群組的成員︰",
@@ -809,6 +811,7 @@ OC.L10N.register(
"Pronouns" : "代名詞",
"Role" : "角色",
"X (formerly Twitter)" : "X(前身為 Twitter)",
+ "Bluesky" : "Bluesky",
"Website" : "網站",
"Profile visibility" : "個人檔案能見度",
"Locale" : "地區設定",
diff --git a/apps/settings/l10n/zh_HK.json b/apps/settings/l10n/zh_HK.json
index 6e1088a9a7f..f6923e90355 100644
--- a/apps/settings/l10n/zh_HK.json
+++ b/apps/settings/l10n/zh_HK.json
@@ -393,6 +393,7 @@
"Default expiration time of remote shares in days" : "遠端分享默認屆滿時間(天)",
"Expire remote shares after x days" : "x天後遠端分享過期",
"Set default expiration date for shares via link or mail" : "設定透過連結或郵件分享的預設過期日",
+ "Enforce expiration date for link or mail shares" : "強制設定連結或郵件分享的到期日",
"Default expiration time of shares in days" : "分享默認到期時間(天)",
"Privacy settings for sharing" : "分享的隱私設定",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "允許在分享對話方塊中自動補齊帳戶名稱並允許存取系統通訊錄",
@@ -616,6 +617,7 @@
"Your biography. Markdown is supported." : "您的自傳。支援 Markdown。",
"Unable to update date of birth" : "無法更新出生日期",
"Enter your date of birth" : "輸入您的出生日期",
+ "Bluesky handle" : "Bluesky 別名",
"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},總儲存空間 {s}{totalSpace}{/s} ({s}{usageRelative}%{/s})",
"You are a member of the following groups:" : "你是下列群組的成員︰",
@@ -807,6 +809,7 @@
"Pronouns" : "代名詞",
"Role" : "角色",
"X (formerly Twitter)" : "X(前身為 Twitter)",
+ "Bluesky" : "Bluesky",
"Website" : "網站",
"Profile visibility" : "個人檔案能見度",
"Locale" : "地區設定",
diff --git a/apps/settings/l10n/zh_TW.js b/apps/settings/l10n/zh_TW.js
index 503ec672c1e..c9c99e8ab97 100644
--- a/apps/settings/l10n/zh_TW.js
+++ b/apps/settings/l10n/zh_TW.js
@@ -395,6 +395,7 @@ OC.L10N.register(
"Default expiration time of remote shares in days" : "遠端分享預設到期時間(天)",
"Expire remote shares after x days" : "x 天後遠端分享過期",
"Set default expiration date for shares via link or mail" : "設定透過連結或郵件分享的預設過期日",
+ "Enforce expiration date for link or mail shares" : "強制設定連結或郵件分享的到期日",
"Default expiration time of shares in days" : "分享預設到期時間(天)",
"Privacy settings for sharing" : "分享的隱私設定",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "允許在分享對話方塊中自動補齊帳號名稱並允許存取系統通訊錄",
diff --git a/apps/settings/l10n/zh_TW.json b/apps/settings/l10n/zh_TW.json
index 23d6a3cc553..697673f8a55 100644
--- a/apps/settings/l10n/zh_TW.json
+++ b/apps/settings/l10n/zh_TW.json
@@ -393,6 +393,7 @@
"Default expiration time of remote shares in days" : "遠端分享預設到期時間(天)",
"Expire remote shares after x days" : "x 天後遠端分享過期",
"Set default expiration date for shares via link or mail" : "設定透過連結或郵件分享的預設過期日",
+ "Enforce expiration date for link or mail shares" : "強制設定連結或郵件分享的到期日",
"Default expiration time of shares in days" : "分享預設到期時間(天)",
"Privacy settings for sharing" : "分享的隱私設定",
"Allow account name autocompletion in share dialog and allow access to the system address book" : "允許在分享對話方塊中自動補齊帳號名稱並允許存取系統通訊錄",
diff --git a/apps/settings/lib/Controller/AISettingsController.php b/apps/settings/lib/Controller/AISettingsController.php
index a3b0a874987..114cbf61514 100644
--- a/apps/settings/lib/Controller/AISettingsController.php
+++ b/apps/settings/lib/Controller/AISettingsController.php
@@ -12,20 +12,15 @@ use OCA\Settings\Settings\Admin\ArtificialIntelligence;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\Attribute\AuthorizedAdminSetting;
use OCP\AppFramework\Http\DataResponse;
-use OCP\IConfig;
+use OCP\IAppConfig;
use OCP\IRequest;
class AISettingsController extends Controller {
- /**
- * @param string $appName
- * @param IRequest $request
- * @param IConfig $config
- */
public function __construct(
$appName,
IRequest $request,
- private IConfig $config,
+ private IAppConfig $appConfig,
) {
parent::__construct($appName, $request);
}
@@ -43,7 +38,7 @@ class AISettingsController extends Controller {
if (!isset($settings[$key])) {
continue;
}
- $this->config->setAppValue('core', $key, json_encode($settings[$key]));
+ $this->appConfig->setValueString('core', $key, json_encode($settings[$key]), lazy: in_array($key, \OC\TaskProcessing\Manager::LAZY_CONFIG_KEYS, true));
}
return new DataResponse();
diff --git a/apps/settings/lib/Controller/UsersController.php b/apps/settings/lib/Controller/UsersController.php
index 6cd596d6cc8..8efd3eeb8ca 100644
--- a/apps/settings/lib/Controller/UsersController.php
+++ b/apps/settings/lib/Controller/UsersController.php
@@ -319,6 +319,8 @@ class UsersController extends Controller {
* @param string|null $addressScope
* @param string|null $twitter
* @param string|null $twitterScope
+ * @param string|null $bluesky
+ * @param string|null $blueskyScope
* @param string|null $fediverse
* @param string|null $fediverseScope
* @param string|null $birthdate
@@ -342,6 +344,8 @@ class UsersController extends Controller {
?string $addressScope = null,
?string $twitter = null,
?string $twitterScope = null,
+ ?string $bluesky = null,
+ ?string $blueskyScope = null,
?string $fediverse = null,
?string $fediverseScope = null,
?string $birthdate = null,
@@ -386,6 +390,7 @@ class UsersController extends Controller {
IAccountManager::PROPERTY_ADDRESS => ['value' => $address, 'scope' => $addressScope],
IAccountManager::PROPERTY_PHONE => ['value' => $phone, 'scope' => $phoneScope],
IAccountManager::PROPERTY_TWITTER => ['value' => $twitter, 'scope' => $twitterScope],
+ IAccountManager::PROPERTY_BLUESKY => ['value' => $bluesky, 'scope' => $blueskyScope],
IAccountManager::PROPERTY_FEDIVERSE => ['value' => $fediverse, 'scope' => $fediverseScope],
IAccountManager::PROPERTY_BIRTHDATE => ['value' => $birthdate, 'scope' => $birthdateScope],
IAccountManager::PROPERTY_PRONOUNS => ['value' => $pronouns, 'scope' => $pronounsScope],
@@ -428,6 +433,8 @@ class UsersController extends Controller {
'addressScope' => $userAccount->getProperty(IAccountManager::PROPERTY_ADDRESS)->getScope(),
'twitter' => $userAccount->getProperty(IAccountManager::PROPERTY_TWITTER)->getValue(),
'twitterScope' => $userAccount->getProperty(IAccountManager::PROPERTY_TWITTER)->getScope(),
+ 'bluesky' => $userAccount->getProperty(IAccountManager::PROPERTY_BLUESKY)->getValue(),
+ 'blueskyScope' => $userAccount->getProperty(IAccountManager::PROPERTY_BLUESKY)->getScope(),
'fediverse' => $userAccount->getProperty(IAccountManager::PROPERTY_FEDIVERSE)->getValue(),
'fediverseScope' => $userAccount->getProperty(IAccountManager::PROPERTY_FEDIVERSE)->getScope(),
'birthdate' => $userAccount->getProperty(IAccountManager::PROPERTY_BIRTHDATE)->getValue(),
diff --git a/apps/settings/lib/Settings/Admin/ArtificialIntelligence.php b/apps/settings/lib/Settings/Admin/ArtificialIntelligence.php
index 78bec73382d..aaec0049b20 100644
--- a/apps/settings/lib/Settings/Admin/ArtificialIntelligence.php
+++ b/apps/settings/lib/Settings/Admin/ArtificialIntelligence.php
@@ -10,7 +10,7 @@ namespace OCA\Settings\Settings\Admin;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Services\IInitialState;
-use OCP\IConfig;
+use OCP\IAppConfig;
use OCP\IL10N;
use OCP\Settings\IDelegatedSettings;
use OCP\SpeechToText\ISpeechToTextManager;
@@ -28,7 +28,7 @@ use Psr\Log\LoggerInterface;
class ArtificialIntelligence implements IDelegatedSettings {
public function __construct(
- private IConfig $config,
+ private IAppConfig $appConfig,
private IL10N $l,
private IInitialState $initialState,
private ITranslationManager $translationManager,
@@ -145,7 +145,7 @@ class ArtificialIntelligence implements IDelegatedSettings {
];
foreach ($settings as $key => $defaultValue) {
$value = $defaultValue;
- $json = $this->config->getAppValue('core', $key, '');
+ $json = $this->appConfig->getValueString('core', $key, '', lazy: in_array($key, \OC\TaskProcessing\Manager::LAZY_CONFIG_KEYS, true));
if ($json !== '') {
try {
$value = json_decode($json, true, flags: JSON_THROW_ON_ERROR);
diff --git a/apps/settings/lib/Settings/Personal/PersonalInfo.php b/apps/settings/lib/Settings/Personal/PersonalInfo.php
index 84b379f2e87..9a12b18bb5e 100644
--- a/apps/settings/lib/Settings/Personal/PersonalInfo.php
+++ b/apps/settings/lib/Settings/Personal/PersonalInfo.php
@@ -98,6 +98,7 @@ class PersonalInfo implements ISettings {
'location' => $this->getProperty($account, IAccountManager::PROPERTY_ADDRESS),
'website' => $this->getProperty($account, IAccountManager::PROPERTY_WEBSITE),
'twitter' => $this->getProperty($account, IAccountManager::PROPERTY_TWITTER),
+ 'bluesky' => $this->getProperty($account, IAccountManager::PROPERTY_BLUESKY),
'fediverse' => $this->getProperty($account, IAccountManager::PROPERTY_FEDIVERSE),
'languageMap' => $this->getLanguageMap($user),
'localeMap' => $this->getLocaleMap($user),
diff --git a/apps/settings/src/components/AdminSettingsSharingForm.vue b/apps/settings/src/components/AdminSettingsSharingForm.vue
index c582e9febee..b0e142d8480 100644
--- a/apps/settings/src/components/AdminSettingsSharingForm.vue
+++ b/apps/settings/src/components/AdminSettingsSharingForm.vue
@@ -164,7 +164,7 @@
</NcCheckboxRadioSwitch>
<fieldset v-show="settings.allowLinks && settings.defaultExpireDate" id="settings-sharing-api-api-expiration" class="sharing__sub-section">
<NcCheckboxRadioSwitch :checked.sync="settings.enforceExpireDate">
- {{ t('settings', 'Enforce expiration date for remote shares') }}
+ {{ t('settings', 'Enforce expiration date for link or mail shares') }}
</NcCheckboxRadioSwitch>
<NcTextField type="number"
class="sharing__input"
diff --git a/apps/settings/src/components/PersonalInfo/BlueskySection.vue b/apps/settings/src/components/PersonalInfo/BlueskySection.vue
new file mode 100644
index 00000000000..65223d1ab53
--- /dev/null
+++ b/apps/settings/src/components/PersonalInfo/BlueskySection.vue
@@ -0,0 +1,64 @@
+<!--
+ - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
+ - SPDX-License-Identifier: AGPL-3.0-or-later
+-->
+
+<template>
+ <AccountPropertySection v-bind.sync="value"
+ :readable="readable"
+ :on-validate="onValidate"
+ :placeholder="t('settings', 'Bluesky handle')" />
+</template>
+
+<script setup lang="ts">
+import type { AccountProperties } from '../../constants/AccountPropertyConstants.js'
+
+import { loadState } from '@nextcloud/initial-state'
+import { t } from '@nextcloud/l10n'
+import { ref } from 'vue'
+import { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.ts'
+import AccountPropertySection from './shared/AccountPropertySection.vue'
+
+const { bluesky } = loadState<AccountProperties>('settings', 'personalInfoParameters')
+
+const value = ref({ ...bluesky })
+const readable = NAME_READABLE_ENUM[bluesky.name]
+
+/**
+ * Validate that the text might be a bluesky handle
+ * @param text The potential bluesky handle
+ */
+function onValidate(text: string): boolean {
+ if (text === '') return true
+
+ const lowerText = text.toLowerCase()
+
+ if (lowerText === 'bsky.social') {
+ // Standalone bsky.social is invalid
+ return false
+ }
+
+ if (lowerText.endsWith('.bsky.social')) {
+ // Enforce format: exactly one label + '.bsky.social'
+ const parts = lowerText.split('.')
+
+ // Must be in form: [username, 'bsky', 'social']
+ if (parts.length !== 3 || parts[1] !== 'bsky' || parts[2] !== 'social') {
+ return false
+ }
+
+ const username = parts[0]
+ const validateRegex = /^[a-z0-9][a-z0-9-]{2,17}$/
+ return validateRegex.test(username)
+ }
+
+ // Else, treat as a custom domain
+ try {
+ const url = new URL(`https://${text}`)
+ // Ensure the parsed host matches exactly (case-insensitive already)
+ return url.host === lowerText
+ } catch {
+ return false
+ }
+}
+</script>
diff --git a/apps/settings/src/constants/AccountPropertyConstants.ts b/apps/settings/src/constants/AccountPropertyConstants.ts
index 455c210976f..575a2744cc6 100644
--- a/apps/settings/src/constants/AccountPropertyConstants.ts
+++ b/apps/settings/src/constants/AccountPropertyConstants.ts
@@ -28,6 +28,7 @@ export const ACCOUNT_PROPERTY_ENUM = Object.freeze({
PRONOUNS: 'pronouns',
ROLE: 'role',
TWITTER: 'twitter',
+ BLUESKY: 'bluesky',
WEBSITE: 'website',
})
@@ -48,6 +49,7 @@ export const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({
PRONOUNS: t('settings', 'Pronouns'),
ROLE: t('settings', 'Role'),
TWITTER: t('settings', 'X (formerly Twitter)'),
+ BLUESKY: t('settings', 'Bluesky'),
WEBSITE: t('settings', 'Website'),
})
@@ -64,6 +66,7 @@ export const NAME_READABLE_ENUM = Object.freeze({
[ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,
[ACCOUNT_PROPERTY_ENUM.ROLE]: ACCOUNT_PROPERTY_READABLE_ENUM.ROLE,
[ACCOUNT_PROPERTY_ENUM.TWITTER]: ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER,
+ [ACCOUNT_PROPERTY_ENUM.BLUESKY]: ACCOUNT_PROPERTY_READABLE_ENUM.BLUESKY,
[ACCOUNT_PROPERTY_ENUM.FEDIVERSE]: ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE,
[ACCOUNT_PROPERTY_ENUM.WEBSITE]: ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE,
[ACCOUNT_PROPERTY_ENUM.BIRTHDATE]: ACCOUNT_PROPERTY_READABLE_ENUM.BIRTHDATE,
@@ -89,6 +92,7 @@ export const PROPERTY_READABLE_KEYS_ENUM = Object.freeze({
[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED,
[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: ACCOUNT_PROPERTY_ENUM.ROLE,
[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: ACCOUNT_PROPERTY_ENUM.TWITTER,
+ [ACCOUNT_PROPERTY_READABLE_ENUM.BLUESKY]: ACCOUNT_PROPERTY_ENUM.BLUESKY,
[ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE]: ACCOUNT_PROPERTY_ENUM.FEDIVERSE,
[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: ACCOUNT_PROPERTY_ENUM.WEBSITE,
[ACCOUNT_PROPERTY_READABLE_ENUM.BIRTHDATE]: ACCOUNT_PROPERTY_ENUM.BIRTHDATE,
@@ -135,6 +139,7 @@ export const PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM = Object.freeze({
[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],
[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],
[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],
+ [ACCOUNT_PROPERTY_READABLE_ENUM.BLUESKY]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],
[ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],
[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],
[ACCOUNT_PROPERTY_READABLE_ENUM.BIRTHDATE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],
diff --git a/apps/settings/src/main-personal-info.js b/apps/settings/src/main-personal-info.js
index c28f14ee477..5ccfc9848c0 100644
--- a/apps/settings/src/main-personal-info.js
+++ b/apps/settings/src/main-personal-info.js
@@ -27,6 +27,7 @@ import ProfileVisibilitySection from './components/PersonalInfo/ProfileVisibilit
import PronounsSection from './components/PersonalInfo/PronounsSection.vue'
import RoleSection from './components/PersonalInfo/RoleSection.vue'
import TwitterSection from './components/PersonalInfo/TwitterSection.vue'
+import BlueskySection from './components/PersonalInfo/BlueskySection.vue'
import WebsiteSection from './components/PersonalInfo/WebsiteSection.vue'
__webpack_nonce__ = getCSPNonce()
@@ -52,6 +53,7 @@ const LocationView = Vue.extend(LocationSection)
const PhoneView = Vue.extend(PhoneSection)
const PronounsView = Vue.extend(PronounsSection)
const TwitterView = Vue.extend(TwitterSection)
+const BlueskyView = Vue.extend(BlueskySection)
const WebsiteView = Vue.extend(WebsiteSection)
new AvatarView().$mount('#vue-avatar-section')
@@ -62,6 +64,7 @@ new PhoneView().$mount('#vue-phone-section')
new LocationView().$mount('#vue-location-section')
new WebsiteView().$mount('#vue-website-section')
new TwitterView().$mount('#vue-twitter-section')
+new BlueskyView().$mount('#vue-bluesky-section')
new FediverseView().$mount('#vue-fediverse-section')
new LanguageView().$mount('#vue-language-section')
new LocaleView().$mount('#vue-locale-section')
diff --git a/apps/settings/templates/settings/personal/personal.info.php b/apps/settings/templates/settings/personal/personal.info.php
index e622663fba7..38c449a337f 100644
--- a/apps/settings/templates/settings/personal/personal.info.php
+++ b/apps/settings/templates/settings/personal/personal.info.php
@@ -74,6 +74,9 @@ script('settings', [
<div id="vue-twitter-section"></div>
</div>
<div class="personal-settings-setting-box">
+ <div id="vue-bluesky-section"></div>
+ </div>
+ <div class="personal-settings-setting-box">
<div id="vue-fediverse-section"></div>
</div>
<?php if ($_['profileEnabledGlobally']) : ?>
diff --git a/apps/settings/tests/Controller/UsersControllerTest.php b/apps/settings/tests/Controller/UsersControllerTest.php
index 0468ce6814c..1012557bfc4 100644
--- a/apps/settings/tests/Controller/UsersControllerTest.php
+++ b/apps/settings/tests/Controller/UsersControllerTest.php
@@ -202,6 +202,11 @@ class UsersControllerTest extends \Test\TestCase {
'Default twitter',
IAccountManager::SCOPE_LOCAL,
),
+ IAccountManager::PROPERTY_BLUESKY => $this->buildPropertyMock(
+ IAccountManager::PROPERTY_BLUESKY,
+ 'Default bluesky',
+ IAccountManager::SCOPE_LOCAL,
+ ),
IAccountManager::PROPERTY_FEDIVERSE => $this->buildPropertyMock(
IAccountManager::PROPERTY_FEDIVERSE,
'Default fediverse',
@@ -435,6 +440,8 @@ class UsersControllerTest extends \Test\TestCase {
$addressScope = IAccountManager::SCOPE_PUBLISHED;
$twitter = '@nextclouders';
$twitterScope = IAccountManager::SCOPE_PUBLISHED;
+ $bluesky = 'nextclouders.net';
+ $blueskyScope = IAccountManager::SCOPE_PUBLISHED;
$fediverse = '@nextclouders@floss.social';
$fediverseScope = IAccountManager::SCOPE_PUBLISHED;
$birthdate = '2020-01-01';
@@ -458,6 +465,8 @@ class UsersControllerTest extends \Test\TestCase {
$expectedProperties[IAccountManager::PROPERTY_ADDRESS]['scope'] = $addressScope;
$expectedProperties[IAccountManager::PROPERTY_TWITTER]['value'] = $twitter;
$expectedProperties[IAccountManager::PROPERTY_TWITTER]['scope'] = $twitterScope;
+ $expectedProperties[IAccountManager::PROPERTY_BLUESKY]['value'] = $bluesky;
+ $expectedProperties[IAccountManager::PROPERTY_BLUESKY]['scope'] = $blueskyScope;
$expectedProperties[IAccountManager::PROPERTY_FEDIVERSE]['value'] = $fediverse;
$expectedProperties[IAccountManager::PROPERTY_FEDIVERSE]['scope'] = $fediverseScope;
$expectedProperties[IAccountManager::PROPERTY_BIRTHDATE]['value'] = $birthdate;
@@ -486,6 +495,8 @@ class UsersControllerTest extends \Test\TestCase {
$addressScope,
$twitter,
$twitterScope,
+ $bluesky,
+ $blueskyScope,
$fediverse,
$fediverseScope,
$birthdate,
@@ -524,6 +535,8 @@ class UsersControllerTest extends \Test\TestCase {
$addressScope = ($property === 'addressScope') ? $propertyValue : null;
$twitter = ($property === 'twitter') ? $propertyValue : null;
$twitterScope = ($property === 'twitterScope') ? $propertyValue : null;
+ $bluesky = ($property === 'bluesky') ? $propertyValue : null;
+ $blueskyScope = ($property === 'blueskyScope') ? $propertyValue : null;
$fediverse = ($property === 'fediverse') ? $propertyValue : null;
$fediverseScope = ($property === 'fediverseScope') ? $propertyValue : null;
$birthdate = ($property === 'birthdate') ? $propertyValue : null;
@@ -562,6 +575,10 @@ class UsersControllerTest extends \Test\TestCase {
case 'twitterScope':
$propertyId = IAccountManager::PROPERTY_TWITTER;
break;
+ case 'bluesky':
+ case 'blueskyScope':
+ $propertyId = IAccountManager::PROPERTY_BLUESKY;
+ break;
case 'fediverse':
case 'fediverseScope':
$propertyId = IAccountManager::PROPERTY_FEDIVERSE;
@@ -604,6 +621,8 @@ class UsersControllerTest extends \Test\TestCase {
$addressScope,
$twitter,
$twitterScope,
+ $bluesky,
+ $blueskyScope,
$fediverse,
$fediverseScope,
$birthdate,
@@ -628,6 +647,8 @@ class UsersControllerTest extends \Test\TestCase {
['addressScope', IAccountManager::SCOPE_PUBLISHED],
['twitter', '@nextclouders'],
['twitterScope', IAccountManager::SCOPE_PUBLISHED],
+ ['bluesky', 'nextclouders.net'],
+ ['blueskyScope', IAccountManager::SCOPE_PUBLISHED],
['fediverse', '@nextclouders@floss.social'],
['fediverseScope', IAccountManager::SCOPE_PUBLISHED],
['birthdate', '2020-01-01'],
diff --git a/apps/settings/tests/Mailer/NewUserMailHelperTest.php b/apps/settings/tests/Mailer/NewUserMailHelperTest.php
index 55520184fc9..f352a2b733d 100644
--- a/apps/settings/tests/Mailer/NewUserMailHelperTest.php
+++ b/apps/settings/tests/Mailer/NewUserMailHelperTest.php
@@ -256,32 +256,46 @@ class NewUserMailHelperTest extends TestCase {
<tr style="padding:0;text-align:left;vertical-align:top">
<th style="Margin:0;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left">
<center data-parsed="" style="min-width:490px;width:100%">
- <table class="button btn default primary float-center" style="Margin:0 0 30px 0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;margin:0 0 30px 0;margin-right:15px;border-radius:8px;max-width:300px;padding:0;text-align:center;vertical-align:top;width:auto;background:#00679e;background-color:#00679e;color:#fefefe;">
- <tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+ <!--[if (gte mso 9)|(IE)]>
+ <table>
+ <tr>
+ <td>
+ <![endif]-->
+ <table class="button btn default primary float-center" style="Margin:0 0 30px 0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;margin:0 0 30px 0;margin-right:15px;border-radius:8px;max-width:300px;padding:0;text-align:center;vertical-align:top;width:auto;background:#00679e;background-color:#00679e;color:#fefefe;">
<tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border:0 solid #00679e;border-collapse:collapse!important;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <a href="https://example.com/resetPassword/MySuperLongSecureRandomToken" style="Margin:0;border:0 solid #00679e;color:#ffffff;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:regular;line-height:normal;margin:0;padding:8px;text-align:left;outline:1px solid #ffffff;text-decoration:none">Set your password</a>
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+ <tr style="padding:0;text-align:left;vertical-align:top">
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border:0 solid #00679e;border-collapse:collapse!important;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <a href="https://example.com/resetPassword/MySuperLongSecureRandomToken" style="Margin:0;border:0 solid #00679e;color:#ffffff;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:regular;line-height:normal;margin:0;padding:8px;text-align:left;outline:1px solid #ffffff;text-decoration:none">Set your password</a>
+ </td>
+ </tr>
+ </table>
</td>
</tr>
</table>
+ <!--[if (gte mso 9)|(IE)]>
</td>
- </tr>
- </table>
- <table class="button btn default secondary float-center" style="Margin:0 0 30px 0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;background-color: #ccc;margin:0 0 30px 0;max-height:40px;max-width:300px;padding:1px;border-radius:8px;text-align:center;vertical-align:top;width:auto">
- <tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+ <td>
+ <![endif]-->
+ <table class="button btn default secondary float-center" style="Margin:0 0 30px 0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;background-color: #ccc;margin:0 0 30px 0;max-height:40px;max-width:300px;padding:1px;border-radius:8px;text-align:center;vertical-align:top;width:auto">
<tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border:0 solid #777;border-collapse:collapse!important;color:#fefefe;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <a href="https://nextcloud.com/install/#install-clients" style="Margin:0;background-color:#fff;border:0 solid #777;color:#6C6C6C!important;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:regular;line-height:normal;margin:0;border-radius: 7px;padding:8px;text-align:left;text-decoration:none">Install Client</a>
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+ <tr style="padding:0;text-align:left;vertical-align:top">
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border:0 solid #777;border-collapse:collapse!important;color:#fefefe;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <a href="https://nextcloud.com/install/#install-clients" style="Margin:0;background-color:#fff;border:0 solid #777;color:#6C6C6C!important;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:regular;line-height:normal;margin:0;border-radius: 7px;padding:8px;text-align:left;text-decoration:none">Install Client</a>
+ </td>
+ </tr>
+ </table>
</td>
</tr>
</table>
+ <!--[if (gte mso 9)|(IE)]>
</td>
</tr>
</table>
+ <![endif]-->
</center>
</th>
<th class="expander" style="Margin:0;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th>
@@ -496,32 +510,46 @@ EOF;
<tr style="padding:0;text-align:left;vertical-align:top">
<th style="Margin:0;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left">
<center data-parsed="" style="min-width:490px;width:100%">
- <table class="button btn default primary float-center" style="Margin:0 0 30px 0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;margin:0 0 30px 0;margin-right:15px;border-radius:8px;max-width:300px;padding:0;text-align:center;vertical-align:top;width:auto;background:#00679e;background-color:#00679e;color:#fefefe;">
- <tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+ <!--[if (gte mso 9)|(IE)]>
+ <table>
+ <tr>
+ <td>
+ <![endif]-->
+ <table class="button btn default primary float-center" style="Margin:0 0 30px 0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;margin:0 0 30px 0;margin-right:15px;border-radius:8px;max-width:300px;padding:0;text-align:center;vertical-align:top;width:auto;background:#00679e;background-color:#00679e;color:#fefefe;">
<tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border:0 solid #00679e;border-collapse:collapse!important;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <a href="https://example.com/" style="Margin:0;border:0 solid #00679e;color:#ffffff;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:regular;line-height:normal;margin:0;padding:8px;text-align:left;outline:1px solid #ffffff;text-decoration:none">Go to TestCloud</a>
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+ <tr style="padding:0;text-align:left;vertical-align:top">
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border:0 solid #00679e;border-collapse:collapse!important;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <a href="https://example.com/" style="Margin:0;border:0 solid #00679e;color:#ffffff;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:regular;line-height:normal;margin:0;padding:8px;text-align:left;outline:1px solid #ffffff;text-decoration:none">Go to TestCloud</a>
+ </td>
+ </tr>
+ </table>
</td>
</tr>
</table>
+ <!--[if (gte mso 9)|(IE)]>
</td>
- </tr>
- </table>
- <table class="button btn default secondary float-center" style="Margin:0 0 30px 0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;background-color: #ccc;margin:0 0 30px 0;max-height:40px;max-width:300px;padding:1px;border-radius:8px;text-align:center;vertical-align:top;width:auto">
- <tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+ <td>
+ <![endif]-->
+ <table class="button btn default secondary float-center" style="Margin:0 0 30px 0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;background-color: #ccc;margin:0 0 30px 0;max-height:40px;max-width:300px;padding:1px;border-radius:8px;text-align:center;vertical-align:top;width:auto">
<tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border:0 solid #777;border-collapse:collapse!important;color:#fefefe;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <a href="https://nextcloud.com/install/#install-clients" style="Margin:0;background-color:#fff;border:0 solid #777;color:#6C6C6C!important;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:regular;line-height:normal;margin:0;border-radius: 7px;padding:8px;text-align:left;text-decoration:none">Install Client</a>
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+ <tr style="padding:0;text-align:left;vertical-align:top">
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border:0 solid #777;border-collapse:collapse!important;color:#fefefe;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <a href="https://nextcloud.com/install/#install-clients" style="Margin:0;background-color:#fff;border:0 solid #777;color:#6C6C6C!important;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:regular;line-height:normal;margin:0;border-radius: 7px;padding:8px;text-align:left;text-decoration:none">Install Client</a>
+ </td>
+ </tr>
+ </table>
</td>
</tr>
</table>
+ <!--[if (gte mso 9)|(IE)]>
</td>
</tr>
</table>
+ <![endif]-->
</center>
</th>
<th class="expander" style="Margin:0;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th>
@@ -725,32 +753,46 @@ EOF;
<tr style="padding:0;text-align:left;vertical-align:top">
<th style="Margin:0;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left">
<center data-parsed="" style="min-width:490px;width:100%">
- <table class="button btn default primary float-center" style="Margin:0 0 30px 0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;margin:0 0 30px 0;margin-right:15px;border-radius:8px;max-width:300px;padding:0;text-align:center;vertical-align:top;width:auto;background:#00679e;background-color:#00679e;color:#fefefe;">
- <tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+ <!--[if (gte mso 9)|(IE)]>
+ <table>
+ <tr>
+ <td>
+ <![endif]-->
+ <table class="button btn default primary float-center" style="Margin:0 0 30px 0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;margin:0 0 30px 0;margin-right:15px;border-radius:8px;max-width:300px;padding:0;text-align:center;vertical-align:top;width:auto;background:#00679e;background-color:#00679e;color:#fefefe;">
<tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border:0 solid #00679e;border-collapse:collapse!important;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <a href="https://example.com/" style="Margin:0;border:0 solid #00679e;color:#ffffff;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:regular;line-height:normal;margin:0;padding:8px;text-align:left;outline:1px solid #ffffff;text-decoration:none">Go to TestCloud</a>
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+ <tr style="padding:0;text-align:left;vertical-align:top">
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border:0 solid #00679e;border-collapse:collapse!important;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <a href="https://example.com/" style="Margin:0;border:0 solid #00679e;color:#ffffff;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:regular;line-height:normal;margin:0;padding:8px;text-align:left;outline:1px solid #ffffff;text-decoration:none">Go to TestCloud</a>
+ </td>
+ </tr>
+ </table>
</td>
</tr>
</table>
+ <!--[if (gte mso 9)|(IE)]>
</td>
- </tr>
- </table>
- <table class="button btn default secondary float-center" style="Margin:0 0 30px 0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;background-color: #ccc;margin:0 0 30px 0;max-height:40px;max-width:300px;padding:1px;border-radius:8px;text-align:center;vertical-align:top;width:auto">
- <tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+ <td>
+ <![endif]-->
+ <table class="button btn default secondary float-center" style="Margin:0 0 30px 0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;background-color: #ccc;margin:0 0 30px 0;max-height:40px;max-width:300px;padding:1px;border-radius:8px;text-align:center;vertical-align:top;width:auto">
<tr style="padding:0;text-align:left;vertical-align:top">
- <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border:0 solid #777;border-collapse:collapse!important;color:#fefefe;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
- <a href="https://nextcloud.com/install/#install-clients" style="Margin:0;background-color:#fff;border:0 solid #777;color:#6C6C6C!important;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:regular;line-height:normal;margin:0;border-radius: 7px;padding:8px;text-align:left;text-decoration:none">Install Client</a>
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+ <tr style="padding:0;text-align:left;vertical-align:top">
+ <td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border:0 solid #777;border-collapse:collapse!important;color:#fefefe;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:normal;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
+ <a href="https://nextcloud.com/install/#install-clients" style="Margin:0;background-color:#fff;border:0 solid #777;color:#6C6C6C!important;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:regular;line-height:normal;margin:0;border-radius: 7px;padding:8px;text-align:left;text-decoration:none">Install Client</a>
+ </td>
+ </tr>
+ </table>
</td>
</tr>
</table>
+ <!--[if (gte mso 9)|(IE)]>
</td>
</tr>
</table>
+ <![endif]-->
</center>
</th>
<th class="expander" style="Margin:0;color:#0a0a0a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th>