aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/base.php59
-rw-r--r--lib/l10n/ca.js60
-rw-r--r--lib/l10n/ca.json60
-rw-r--r--lib/l10n/es_AR.js4
-rw-r--r--lib/l10n/es_AR.json4
-rw-r--r--lib/l10n/et_EE.js1
-rw-r--r--lib/l10n/et_EE.json1
-rw-r--r--lib/l10n/pt_BR.js52
-rw-r--r--lib/l10n/pt_BR.json52
-rw-r--r--lib/l10n/sk.js2
-rw-r--r--lib/l10n/sk.json2
-rw-r--r--lib/private/AppFramework/Middleware/FlowV2EphemeralSessionsMiddleware.php5
-rw-r--r--lib/private/Files/FilenameValidator.php8
-rw-r--r--lib/private/Files/Type/Detection.php16
14 files changed, 225 insertions, 101 deletions
diff --git a/lib/base.php b/lib/base.php
index 557584782a4..284b4d71085 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -447,6 +447,27 @@ class OC {
* Try to set some values to the required Nextcloud default
*/
public static function setRequiredIniValues(): void {
+ // Don't display errors and log them
+ @ini_set('display_errors', '0');
+ @ini_set('log_errors', '1');
+
+ // Try to configure php to enable big file uploads.
+ // This doesn't work always depending on the webserver and php configuration.
+ // Let's try to overwrite some defaults if they are smaller than 1 hour
+
+ if (intval(@ini_get('max_execution_time') ?: 0) < 3600) {
+ @ini_set('max_execution_time', strval(3600));
+ }
+
+ if (intval(@ini_get('max_input_time') ?: 0) < 3600) {
+ @ini_set('max_input_time', strval(3600));
+ }
+
+ // Try to set the maximum execution time to the largest time limit we have
+ if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
+ @set_time_limit(max(intval(@ini_get('max_execution_time')), intval(@ini_get('max_input_time'))));
+ }
+
@ini_set('default_charset', 'UTF-8');
@ini_set('gd.jpeg_ignore_warning', '1');
}
@@ -545,11 +566,21 @@ class OC {
}
public static function init(): void {
+ // First handle PHP configuration and copy auth headers to the expected
+ // $_SERVER variable before doing anything Server object related
+ self::setRequiredIniValues();
+ self::handleAuthHeaders();
+
// prevent any XML processing from loading external entities
libxml_set_external_entity_loader(static function () {
return null;
});
+ // Set default timezone before the Server object is booted
+ if (!date_default_timezone_set('UTC')) {
+ throw new \RuntimeException('Could not set timezone to UTC');
+ }
+
// calculate the root directories
OC::$SERVERROOT = str_replace("\\", '/', substr(__DIR__, 0, -4));
@@ -607,34 +638,6 @@ class OC {
error_reporting(E_ALL);
}
- // Don't display errors and log them
- @ini_set('display_errors', '0');
- @ini_set('log_errors', '1');
-
- if (!date_default_timezone_set('UTC')) {
- throw new \RuntimeException('Could not set timezone to UTC');
- }
-
-
- //try to configure php to enable big file uploads.
- //this doesn´t work always depending on the webserver and php configuration.
- //Let´s try to overwrite some defaults if they are smaller than 1 hour
-
- if (intval(@ini_get('max_execution_time') ?: 0) < 3600) {
- @ini_set('max_execution_time', strval(3600));
- }
-
- if (intval(@ini_get('max_input_time') ?: 0) < 3600) {
- @ini_set('max_input_time', strval(3600));
- }
-
- //try to set the maximum execution time to the largest time limit we have
- if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) {
- @set_time_limit(max(intval(@ini_get('max_execution_time')), intval(@ini_get('max_input_time'))));
- }
-
- self::setRequiredIniValues();
- self::handleAuthHeaders();
$systemConfig = Server::get(\OC\SystemConfig::class);
self::registerAutoloaderCache($systemConfig);
diff --git a/lib/l10n/ca.js b/lib/l10n/ca.js
index 6491b7aa60d..1ea2550ad48 100644
--- a/lib/l10n/ca.js
+++ b/lib/l10n/ca.js
@@ -43,7 +43,7 @@ OC.L10N.register(
"Wiping of device %s has started" : "S'ha començat a esborrar el dispositiu %s",
"Wiping of device »%s« has started" : "S'ha començat a esborrar el dispositiu «%s»",
"»%s« started remote wipe" : "«%s» ha començat a esborrar dades en remot",
- "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "El dispositiu o aplicació «%s» ha començat a esborrar les dades en remot. Rebreu un altre correu quan s'enllesteixi el procés",
+ "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "El dispositiu o aplicació »%s« ha començat a esborrar les dades en remot. Rebreu un altre correu quan s'enllesteixi el procés",
"Wiping of device %s has finished" : "S'ha acabat d'esborrar el dispositiu %s",
"Wiping of device »%s« has finished" : "S'ha acabat d'esborrar el dispositiu «%s»",
"»%s« finished remote wipe" : "«%s» ha acabat d'esborrar dades en remot",
@@ -103,12 +103,12 @@ OC.L10N.register(
"Failed to create file from template" : "No s'ha pogut crear el fitxer a partir de la plantilla",
"Templates" : "Plantilles",
"Storage %s cannot be moved" : "L'emmagatzematge %s no es pot moure",
- "Moving a share (%s) into a shared folder is not allowed" : "No es permet moure una compartició (%s) a una carpeta compartida",
- "Moving a storage (%s) into a shared folder is not allowed" : "No es permet moure un emmagatzematge (%s) a una carpeta compartida",
- "Moving a share (%s) into another share (%s) is not allowed" : "No es permet moure una compartició (%s) a una altra compartició (%s)",
- "Moving a share (%s) into another storage (%s) is not allowed" : "No es permet moure una compartició (%s) a un altre emmagatzematge (%s)",
- "Moving a storage (%s) into a share (%s) is not allowed" : "No es permet moure un emmagatzematge (%s) a una compartició (%s)",
- "Moving a storage (%s) into another storage (%s) is not allowed" : "No es permet moure un emmagatzematge (%s) a un altre emmagatzematge (%s)",
+ "Moving a share (%s) into a shared folder is not allowed" : "No és permès moure una compartició (%s) a una carpeta compartida",
+ "Moving a storage (%s) into a shared folder is not allowed" : "No és permès moure un emmagatzematge (%s) a una carpeta compartida",
+ "Moving a share (%s) into another share (%s) is not allowed" : "No és permès moure una compartició (%s) a una altra compartició (%s)",
+ "Moving a share (%s) into another storage (%s) is not allowed" : "No és permès moure una compartició (%s) a un altre emmagatzematge (%s)",
+ "Moving a storage (%s) into a share (%s) is not allowed" : "No és permès moure un emmagatzematge (%s) a una compartició (%s)",
+ "Moving a storage (%s) into another storage (%s) is not allowed" : "No és permès moure un emmagatzematge (%s) a un altre emmagatzematge (%s)",
"Path contains invalid segments" : "El camí conté segments no vàlids",
"Filename is a reserved word" : "El nom del fitxer és una paraula reservada",
"Filename contains at least one invalid character" : "El nom del fitxer conté com a mínim un caràcter no vàlid",
@@ -170,13 +170,13 @@ OC.L10N.register(
"%1$s shared %2$s with you and wants to add:" : "%1$s ha compartit %2$s amb tu i vol afegir:",
"%1$s shared %2$s with you and wants to add" : "%1$s ha compartit %2$s amb tu i vol afegir",
"%s added a note to a file shared with you" : "%s ha afegit una nota a un fitxer compartit amb tu",
- "Passwords are enforced for link and mail shares" : "S'apliquen contrasenyes per compartir enllaços i correus",
+ "Passwords are enforced for link and mail shares" : "S'apliquen contrasenyes per compartició d'enllaços i correus",
"Share recipient is not a valid user" : "El destinatari de la compartició no és un usuari vàlid",
"Share recipient is not a valid group" : "El destinatari de la compartició no és un grup vàlid",
"Share recipient should be empty" : "El destinatari de la compartició ha d'estar buit",
- "Share recipient should not be empty" : "El destinatari compartit no ha d'estar buit",
- "Share recipient is not a valid circle" : "El destinatari compartit no és un cercle vàlid",
- "Unknown share type" : "Tipus d'element compartit desconegut",
+ "Share recipient should not be empty" : "El destinatari de la compartició no ha d'estar buit",
+ "Share recipient is not a valid circle" : "El destinatari de la compartició no és un cercle vàlid",
+ "Unknown share type" : "Tipus de compartició desconegut",
"Share initiator must be set" : "S'ha d'establir l'iniciador de la compartició",
"Cannot share with yourself" : "No es pot compartir amb tu mateix",
"Shared path must be set" : "S'ha d'establir un camí compartit",
@@ -184,9 +184,9 @@ OC.L10N.register(
"You cannot share your root folder" : "No podeu compartir la vostra carpeta arrel",
"You are not allowed to share %s" : "No podeu compartir %s",
"Valid permissions are required for sharing" : "Es requereixen permisos vàlids per compartir",
- "File shares cannot have create or delete permissions" : "Els fitxers compartits no poden tenir permisos de creació o supressió",
+ "File shares cannot have create or delete permissions" : "Les comparticions de fitxers no poden tenir permisos de creació o supressió",
"Cannot increase permissions of %s" : "No es poden augmentar els permisos de %s",
- "Shares need at least read permissions" : "Les comparticions necessiten almenys permisos de lectura",
+ "Shares need at least read permissions" : "Les comparticions almenys necessiten permisos de lectura",
"Files cannot be shared with delete permissions" : "No es poden compartir fitxers amb permisos de supressió",
"Files cannot be shared with create permissions" : "No es poden compartir fitxers amb permisos de creació",
"Expiration date is in the past" : "La data de caducitat ja ha passat",
@@ -195,23 +195,23 @@ OC.L10N.register(
"Sharing is only allowed with group members" : "Només es permet l'ús compartit amb membres del grup",
"Sharing %s failed, because this item is already shared with the account %s" : "No s'ha pogut compartir %s perquè l'element ja està compartit amb el compte %s",
"Group sharing is now allowed" : "Ara es permet compartir en grup",
- "Sharing is only allowed within your own groups" : "Només es permet compartir dins dels vostres propis grups",
+ "Sharing is only allowed within your own groups" : "La compartició només és permesa dins dels vostres propis grups",
"Path is already shared with this group" : "El camí ja està compartit amb aquest grup",
- "Link sharing is not allowed" : "No es permet compartir enllaços",
- "Public upload is not allowed" : "No es permet la càrrega pública",
+ "Link sharing is not allowed" : "La compartició d'enllaços no és permesa",
+ "Public upload is not allowed" : "La pujada pública no és permesa",
"Path contains files shared with you" : "El camí conté fitxers compartits amb tu",
"Sharing is disabled" : "S’ha desactivat la compartició",
"Sharing is disabled for you" : "La compartició està desactivada per a tu",
"Cannot share with the share owner" : "No es pot compartir amb el propietari de la compartició",
- "Share does not have a full ID" : "La compartició no té un identificador complet",
+ "Share does not have a full ID" : "La compartició no té un ID complet",
"Cannot change share type" : "No es pot canviar el tipus de compartició",
- "Can only update recipient on user shares" : "Només es pot actualitzar el destinatari en els recursos compartits dels usuaris",
- "Cannot enable sending the password by Talk with an empty password" : "No es pot activar l'enviament de la contrasenya per Parla amb una contrasenya buida",
- "Cannot enable sending the password by Talk without setting a new password" : "No es pot activar l'enviament de la contrasenya per Parla sense establir una nova contrasenya",
- "Cannot disable sending the password by Talk without setting a new password" : "No es pot desactivar l'enviament de la contrasenya per Parla sense establir una nova contrasenya",
- "Share provider does not support accepting" : "El proveïdor de recursos compartits no admet l'acceptació",
- "Cannot change target of link share" : "No es pot canviar el destí de la compartició d'enllaços",
- "Invalid share recipient" : "El destinatari compartit no és vàlid",
+ "Can only update recipient on user shares" : "Només es pot actualitzar el destinatari en les comparticions d'usuaris",
+ "Cannot enable sending the password by Talk with an empty password" : "No es pot habilitar l'enviament de la contrasenya per Converses amb una contrasenya buida",
+ "Cannot enable sending the password by Talk without setting a new password" : "No es pot activar l'enviament de la contrasenya per Converses sense establir una nova contrasenya",
+ "Cannot disable sending the password by Talk without setting a new password" : "No es pot desactivar l'enviament de la contrasenya per Converses sense establir una nova contrasenya",
+ "Share provider does not support accepting" : "El proveïdor de la compartició no admet l'acceptació",
+ "Cannot change target of link share" : "No es pot canviar el destí de l'enllaç de compartició",
+ "Invalid share recipient" : "El destinatari de la compartició no és vàlid",
"Group \"%s\" does not exist" : "El grup \"%s\" no existeix",
"The requested share does not exist anymore" : "L'element compartit sol·licitat ja no existeix",
"The requested share comes from a disabled user" : "L'element compartit sol·licitat prové d'un usuari inhabilitat",
@@ -328,7 +328,7 @@ OC.L10N.register(
"Transcription" : "Transcripció",
"The transcribed text" : "El text transcrit",
"ContextAgent" : "ContextAgent",
- "Chat with an agent" : "Xateja amb un agent",
+ "Chat with an agent" : "Xat amb un agent",
"Chat message" : "Missatge de xat",
"A chat message to send to the agent." : "Un missatge de xat per enviar a l'agent.",
"Confirmation" : "Confirmació",
@@ -363,7 +363,7 @@ OC.L10N.register(
"Output images" : "Imatges de sortida",
"The generated images" : "Les imatges generades",
"Free text to text prompt" : "Text lliure per indicador de text",
- "Runs an arbitrary prompt through a language model that returns a reply" : "Executa una indicació arbitraria mitjançant un model de llenguatge que retorna una resposta",
+ "Runs an arbitrary prompt through a language model that returns a reply" : "Executa una indicació arbitraria mitjançant un model de llengua que retorna una resposta",
"Describe a task that you want the assistant to do or ask a question" : "Descriu una tasca que vols que faci l'assistent o fes una pregunta",
"Generated reply" : "Resposta generada",
"The generated text from the assistant" : "El text generat per l'assistent",
@@ -381,8 +381,8 @@ OC.L10N.register(
"The history of chat messages before the current message, starting with a message by the user" : "L'historial dels missatges de xat abans del missatge actual, començant amb un missatge de l'usuari",
"Response message" : "Missatge de resposta",
"The generated response as part of the conversation" : "La resposta generada com a part de la conversa",
- "Chat with tools" : "Xatejar amb eines",
- "Chat with the language model with tool calling support." : "Xateja amb el model d'idioma amb suport de crida d'eines.",
+ "Chat with tools" : "Xat amb eines",
+ "Chat with the language model with tool calling support." : "Xat amb el model de llengua amb suport de crida d'eines.",
"Tool message" : "Missatge de l'eina",
"The result of tool calls in the last interaction" : "El resultat de les crides d'eines en l'última interacció",
"Available tools" : "Eines disponibles",
@@ -427,13 +427,13 @@ OC.L10N.register(
"Topics" : "Temes",
"The list of extracted topics" : "La llista de temes extrets",
"Translate" : "Tradueix",
- "Translate text from one language to another" : "Tradueix text d'un idioma a un altre",
+ "Translate text from one language to another" : "Tradueix text d'una llengua a un altre",
"Origin text" : "Text d'origen",
"The text to translate" : "El text a traduir",
"Origin language" : "Llengua d'origen",
"The language of the origin text" : "La llengua del text d'origen",
"Target language" : "Llengua de destinació",
- "The desired language to translate the origin text in" : "L'idioma desitjat per traduir el text d'origen",
+ "The desired language to translate the origin text in" : "La llengua desitjada per traduir el text d'origen",
"Result" : "Resultat",
"The translated text" : "Copia el text traduït",
"Free prompt" : "Sol·licitud lliure",
diff --git a/lib/l10n/ca.json b/lib/l10n/ca.json
index edc02e2c5f5..10da3a4f90b 100644
--- a/lib/l10n/ca.json
+++ b/lib/l10n/ca.json
@@ -41,7 +41,7 @@
"Wiping of device %s has started" : "S'ha començat a esborrar el dispositiu %s",
"Wiping of device »%s« has started" : "S'ha començat a esborrar el dispositiu «%s»",
"»%s« started remote wipe" : "«%s» ha començat a esborrar dades en remot",
- "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "El dispositiu o aplicació «%s» ha començat a esborrar les dades en remot. Rebreu un altre correu quan s'enllesteixi el procés",
+ "Device or application »%s« has started the remote wipe process. You will receive another email once the process has finished" : "El dispositiu o aplicació »%s« ha començat a esborrar les dades en remot. Rebreu un altre correu quan s'enllesteixi el procés",
"Wiping of device %s has finished" : "S'ha acabat d'esborrar el dispositiu %s",
"Wiping of device »%s« has finished" : "S'ha acabat d'esborrar el dispositiu «%s»",
"»%s« finished remote wipe" : "«%s» ha acabat d'esborrar dades en remot",
@@ -101,12 +101,12 @@
"Failed to create file from template" : "No s'ha pogut crear el fitxer a partir de la plantilla",
"Templates" : "Plantilles",
"Storage %s cannot be moved" : "L'emmagatzematge %s no es pot moure",
- "Moving a share (%s) into a shared folder is not allowed" : "No es permet moure una compartició (%s) a una carpeta compartida",
- "Moving a storage (%s) into a shared folder is not allowed" : "No es permet moure un emmagatzematge (%s) a una carpeta compartida",
- "Moving a share (%s) into another share (%s) is not allowed" : "No es permet moure una compartició (%s) a una altra compartició (%s)",
- "Moving a share (%s) into another storage (%s) is not allowed" : "No es permet moure una compartició (%s) a un altre emmagatzematge (%s)",
- "Moving a storage (%s) into a share (%s) is not allowed" : "No es permet moure un emmagatzematge (%s) a una compartició (%s)",
- "Moving a storage (%s) into another storage (%s) is not allowed" : "No es permet moure un emmagatzematge (%s) a un altre emmagatzematge (%s)",
+ "Moving a share (%s) into a shared folder is not allowed" : "No és permès moure una compartició (%s) a una carpeta compartida",
+ "Moving a storage (%s) into a shared folder is not allowed" : "No és permès moure un emmagatzematge (%s) a una carpeta compartida",
+ "Moving a share (%s) into another share (%s) is not allowed" : "No és permès moure una compartició (%s) a una altra compartició (%s)",
+ "Moving a share (%s) into another storage (%s) is not allowed" : "No és permès moure una compartició (%s) a un altre emmagatzematge (%s)",
+ "Moving a storage (%s) into a share (%s) is not allowed" : "No és permès moure un emmagatzematge (%s) a una compartició (%s)",
+ "Moving a storage (%s) into another storage (%s) is not allowed" : "No és permès moure un emmagatzematge (%s) a un altre emmagatzematge (%s)",
"Path contains invalid segments" : "El camí conté segments no vàlids",
"Filename is a reserved word" : "El nom del fitxer és una paraula reservada",
"Filename contains at least one invalid character" : "El nom del fitxer conté com a mínim un caràcter no vàlid",
@@ -168,13 +168,13 @@
"%1$s shared %2$s with you and wants to add:" : "%1$s ha compartit %2$s amb tu i vol afegir:",
"%1$s shared %2$s with you and wants to add" : "%1$s ha compartit %2$s amb tu i vol afegir",
"%s added a note to a file shared with you" : "%s ha afegit una nota a un fitxer compartit amb tu",
- "Passwords are enforced for link and mail shares" : "S'apliquen contrasenyes per compartir enllaços i correus",
+ "Passwords are enforced for link and mail shares" : "S'apliquen contrasenyes per compartició d'enllaços i correus",
"Share recipient is not a valid user" : "El destinatari de la compartició no és un usuari vàlid",
"Share recipient is not a valid group" : "El destinatari de la compartició no és un grup vàlid",
"Share recipient should be empty" : "El destinatari de la compartició ha d'estar buit",
- "Share recipient should not be empty" : "El destinatari compartit no ha d'estar buit",
- "Share recipient is not a valid circle" : "El destinatari compartit no és un cercle vàlid",
- "Unknown share type" : "Tipus d'element compartit desconegut",
+ "Share recipient should not be empty" : "El destinatari de la compartició no ha d'estar buit",
+ "Share recipient is not a valid circle" : "El destinatari de la compartició no és un cercle vàlid",
+ "Unknown share type" : "Tipus de compartició desconegut",
"Share initiator must be set" : "S'ha d'establir l'iniciador de la compartició",
"Cannot share with yourself" : "No es pot compartir amb tu mateix",
"Shared path must be set" : "S'ha d'establir un camí compartit",
@@ -182,9 +182,9 @@
"You cannot share your root folder" : "No podeu compartir la vostra carpeta arrel",
"You are not allowed to share %s" : "No podeu compartir %s",
"Valid permissions are required for sharing" : "Es requereixen permisos vàlids per compartir",
- "File shares cannot have create or delete permissions" : "Els fitxers compartits no poden tenir permisos de creació o supressió",
+ "File shares cannot have create or delete permissions" : "Les comparticions de fitxers no poden tenir permisos de creació o supressió",
"Cannot increase permissions of %s" : "No es poden augmentar els permisos de %s",
- "Shares need at least read permissions" : "Les comparticions necessiten almenys permisos de lectura",
+ "Shares need at least read permissions" : "Les comparticions almenys necessiten permisos de lectura",
"Files cannot be shared with delete permissions" : "No es poden compartir fitxers amb permisos de supressió",
"Files cannot be shared with create permissions" : "No es poden compartir fitxers amb permisos de creació",
"Expiration date is in the past" : "La data de caducitat ja ha passat",
@@ -193,23 +193,23 @@
"Sharing is only allowed with group members" : "Només es permet l'ús compartit amb membres del grup",
"Sharing %s failed, because this item is already shared with the account %s" : "No s'ha pogut compartir %s perquè l'element ja està compartit amb el compte %s",
"Group sharing is now allowed" : "Ara es permet compartir en grup",
- "Sharing is only allowed within your own groups" : "Només es permet compartir dins dels vostres propis grups",
+ "Sharing is only allowed within your own groups" : "La compartició només és permesa dins dels vostres propis grups",
"Path is already shared with this group" : "El camí ja està compartit amb aquest grup",
- "Link sharing is not allowed" : "No es permet compartir enllaços",
- "Public upload is not allowed" : "No es permet la càrrega pública",
+ "Link sharing is not allowed" : "La compartició d'enllaços no és permesa",
+ "Public upload is not allowed" : "La pujada pública no és permesa",
"Path contains files shared with you" : "El camí conté fitxers compartits amb tu",
"Sharing is disabled" : "S’ha desactivat la compartició",
"Sharing is disabled for you" : "La compartició està desactivada per a tu",
"Cannot share with the share owner" : "No es pot compartir amb el propietari de la compartició",
- "Share does not have a full ID" : "La compartició no té un identificador complet",
+ "Share does not have a full ID" : "La compartició no té un ID complet",
"Cannot change share type" : "No es pot canviar el tipus de compartició",
- "Can only update recipient on user shares" : "Només es pot actualitzar el destinatari en els recursos compartits dels usuaris",
- "Cannot enable sending the password by Talk with an empty password" : "No es pot activar l'enviament de la contrasenya per Parla amb una contrasenya buida",
- "Cannot enable sending the password by Talk without setting a new password" : "No es pot activar l'enviament de la contrasenya per Parla sense establir una nova contrasenya",
- "Cannot disable sending the password by Talk without setting a new password" : "No es pot desactivar l'enviament de la contrasenya per Parla sense establir una nova contrasenya",
- "Share provider does not support accepting" : "El proveïdor de recursos compartits no admet l'acceptació",
- "Cannot change target of link share" : "No es pot canviar el destí de la compartició d'enllaços",
- "Invalid share recipient" : "El destinatari compartit no és vàlid",
+ "Can only update recipient on user shares" : "Només es pot actualitzar el destinatari en les comparticions d'usuaris",
+ "Cannot enable sending the password by Talk with an empty password" : "No es pot habilitar l'enviament de la contrasenya per Converses amb una contrasenya buida",
+ "Cannot enable sending the password by Talk without setting a new password" : "No es pot activar l'enviament de la contrasenya per Converses sense establir una nova contrasenya",
+ "Cannot disable sending the password by Talk without setting a new password" : "No es pot desactivar l'enviament de la contrasenya per Converses sense establir una nova contrasenya",
+ "Share provider does not support accepting" : "El proveïdor de la compartició no admet l'acceptació",
+ "Cannot change target of link share" : "No es pot canviar el destí de l'enllaç de compartició",
+ "Invalid share recipient" : "El destinatari de la compartició no és vàlid",
"Group \"%s\" does not exist" : "El grup \"%s\" no existeix",
"The requested share does not exist anymore" : "L'element compartit sol·licitat ja no existeix",
"The requested share comes from a disabled user" : "L'element compartit sol·licitat prové d'un usuari inhabilitat",
@@ -326,7 +326,7 @@
"Transcription" : "Transcripció",
"The transcribed text" : "El text transcrit",
"ContextAgent" : "ContextAgent",
- "Chat with an agent" : "Xateja amb un agent",
+ "Chat with an agent" : "Xat amb un agent",
"Chat message" : "Missatge de xat",
"A chat message to send to the agent." : "Un missatge de xat per enviar a l'agent.",
"Confirmation" : "Confirmació",
@@ -361,7 +361,7 @@
"Output images" : "Imatges de sortida",
"The generated images" : "Les imatges generades",
"Free text to text prompt" : "Text lliure per indicador de text",
- "Runs an arbitrary prompt through a language model that returns a reply" : "Executa una indicació arbitraria mitjançant un model de llenguatge que retorna una resposta",
+ "Runs an arbitrary prompt through a language model that returns a reply" : "Executa una indicació arbitraria mitjançant un model de llengua que retorna una resposta",
"Describe a task that you want the assistant to do or ask a question" : "Descriu una tasca que vols que faci l'assistent o fes una pregunta",
"Generated reply" : "Resposta generada",
"The generated text from the assistant" : "El text generat per l'assistent",
@@ -379,8 +379,8 @@
"The history of chat messages before the current message, starting with a message by the user" : "L'historial dels missatges de xat abans del missatge actual, començant amb un missatge de l'usuari",
"Response message" : "Missatge de resposta",
"The generated response as part of the conversation" : "La resposta generada com a part de la conversa",
- "Chat with tools" : "Xatejar amb eines",
- "Chat with the language model with tool calling support." : "Xateja amb el model d'idioma amb suport de crida d'eines.",
+ "Chat with tools" : "Xat amb eines",
+ "Chat with the language model with tool calling support." : "Xat amb el model de llengua amb suport de crida d'eines.",
"Tool message" : "Missatge de l'eina",
"The result of tool calls in the last interaction" : "El resultat de les crides d'eines en l'última interacció",
"Available tools" : "Eines disponibles",
@@ -425,13 +425,13 @@
"Topics" : "Temes",
"The list of extracted topics" : "La llista de temes extrets",
"Translate" : "Tradueix",
- "Translate text from one language to another" : "Tradueix text d'un idioma a un altre",
+ "Translate text from one language to another" : "Tradueix text d'una llengua a un altre",
"Origin text" : "Text d'origen",
"The text to translate" : "El text a traduir",
"Origin language" : "Llengua d'origen",
"The language of the origin text" : "La llengua del text d'origen",
"Target language" : "Llengua de destinació",
- "The desired language to translate the origin text in" : "L'idioma desitjat per traduir el text d'origen",
+ "The desired language to translate the origin text in" : "La llengua desitjada per traduir el text d'origen",
"Result" : "Resultat",
"The translated text" : "Copia el text traduït",
"Free prompt" : "Sol·licitud lliure",
diff --git a/lib/l10n/es_AR.js b/lib/l10n/es_AR.js
index 57202aefb4e..c9f76c540a2 100644
--- a/lib/l10n/es_AR.js
+++ b/lib/l10n/es_AR.js
@@ -52,6 +52,10 @@ OC.L10N.register(
"Address" : "Dirección",
"Profile picture" : "Foto de perfil",
"About" : "Acerca de",
+ "Headline" : "Títular",
+ "Organisation" : "Organización",
+ "Role" : "Rol",
+ "Pronouns" : "Pronombres",
"Additional settings" : "Configuraciones adicionales",
"You need to enter details of an existing account." : "Necesita ingresar los detalles de una cuenta existente.",
"Oracle connection could not be established" : "No fue posible establecer la conexión a Oracle",
diff --git a/lib/l10n/es_AR.json b/lib/l10n/es_AR.json
index 12e375ed0d9..91e3f4b1757 100644
--- a/lib/l10n/es_AR.json
+++ b/lib/l10n/es_AR.json
@@ -50,6 +50,10 @@
"Address" : "Dirección",
"Profile picture" : "Foto de perfil",
"About" : "Acerca de",
+ "Headline" : "Títular",
+ "Organisation" : "Organización",
+ "Role" : "Rol",
+ "Pronouns" : "Pronombres",
"Additional settings" : "Configuraciones adicionales",
"You need to enter details of an existing account." : "Necesita ingresar los detalles de una cuenta existente.",
"Oracle connection could not be established" : "No fue posible establecer la conexión a Oracle",
diff --git a/lib/l10n/et_EE.js b/lib/l10n/et_EE.js
index a793abf9353..adefc8ed808 100644
--- a/lib/l10n/et_EE.js
+++ b/lib/l10n/et_EE.js
@@ -35,6 +35,7 @@ OC.L10N.register(
"seconds ago" : "sekundit tagasi",
"Empty file" : "Tühi fail",
"Dot files are not allowed" : "Punktiga failid pole lubatud",
+ "Filenames must not end with \"%1$s\"." : "Failinimede lõpus ei tohi olla „%1$s“.",
"File already exists" : "Fail on juba olemas",
"Invalid path" : "Vigane kataloogirada",
"Failed to create file from template" : "Ei saa luua mallist faili",
diff --git a/lib/l10n/et_EE.json b/lib/l10n/et_EE.json
index 56dfac3a888..51d86cc0e29 100644
--- a/lib/l10n/et_EE.json
+++ b/lib/l10n/et_EE.json
@@ -33,6 +33,7 @@
"seconds ago" : "sekundit tagasi",
"Empty file" : "Tühi fail",
"Dot files are not allowed" : "Punktiga failid pole lubatud",
+ "Filenames must not end with \"%1$s\"." : "Failinimede lõpus ei tohi olla „%1$s“.",
"File already exists" : "Fail on juba olemas",
"Invalid path" : "Vigane kataloogirada",
"Failed to create file from template" : "Ei saa luua mallist faili",
diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js
index 8eb59927969..92b55232bea 100644
--- a/lib/l10n/pt_BR.js
+++ b/lib/l10n/pt_BR.js
@@ -38,6 +38,7 @@ OC.L10N.register(
"Server version %s or higher is required." : "É requerido um servidor da versão %s ou superior.",
"Server version %s or lower is required." : "É requerido um servidor da versão %s ou abaixo.",
"Logged in account must be an admin, a sub admin or gotten special right to access this setting" : "A conta conectada deve ser um administrador, um subadministrador ou ter direito especial para acessar esta configuração",
+ "Your current IP address doesn't allow you to perform admin actions" : "Seu endereço IP atual não permite que você execute ações administrativas",
"Logged in account must be an admin or sub admin" : "A conta conectada deve ser de um administrador ou subadministrador",
"Logged in account must be an admin" : "A conta logada deve ser de um administrador",
"Wiping of device %s has started" : "Limpeza do dispositivo %s iniciou",
@@ -58,7 +59,11 @@ OC.L10N.register(
"Avatar image is not square" : "A imagem do avatar não é quadrada",
"Files" : "Arquivos",
"View profile" : "Visualizar perfil",
+ "same time" : "mesmo tempo",
"_%nh_::_%nh_" : ["%nh","%nh","%nh"],
+ "_%nm_::_%nm_" : ["%nm","%nm","%nm"],
+ "%s ahead" : "%s à frente",
+ "%s behind" : "%s atrás",
"Local time: %s" : "Hora local: %s",
"today" : "hoje",
"tomorrow" : "amanhã",
@@ -81,6 +86,12 @@ OC.L10N.register(
"seconds ago" : "segundos atrás",
"Empty file" : "Arquivo vazio",
"Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "O módulo com a ID: %s não existe. Por favor, habilite-o nas configurações de seu aplicativo ou contacte o administrador.",
+ "No file conversion providers available" : "Não há provedores de conversão de arquivos disponíveis",
+ "File is too large to convert" : "O arquivo é muito grande para converter",
+ "Destination does not match conversion extension" : "O destino não corresponde à extensão de conversão",
+ "Could not convert file" : "Não foi possível converter o arquivo",
+ "Destination does not exist" : "Destino não existe",
+ "Destination is not creatable" : "Destino não pode ser criado",
"Dot files are not allowed" : "Arquivos Dot não são permitidos",
"\"%1$s\" is a forbidden file or folder name." : "\"%1$s\" é um nome de arquivo ou pasta proibido.",
"\"%1$s\" is a forbidden prefix for file or folder names." : "\"%1$s\" é um prefixo proibido para nomes de arquivos ou pastas.",
@@ -92,6 +103,13 @@ OC.L10N.register(
"Invalid path" : "Diretório inválido",
"Failed to create file from template" : "Falha ao criar arquivo do modelo ",
"Templates" : "Modelos ",
+ "Storage %s cannot be moved" : "O armazenamento %s não pode ser movido",
+ "Moving a share (%s) into a shared folder is not allowed" : "Não é permitido mover um compartilhamento (%s) para uma pasta compartilhada",
+ "Moving a storage (%s) into a shared folder is not allowed" : "Não é permitido mover um armazenamento (%s) para uma pasta compartilhada",
+ "Moving a share (%s) into another share (%s) is not allowed" : "Não é permitido mover um compartilhamento (%s) para outro compartilhamento (%s)",
+ "Moving a share (%s) into another storage (%s) is not allowed" : "Não é permitido mover um compartilhamento (%s) para outro armazenamento (%s)",
+ "Moving a storage (%s) into a share (%s) is not allowed" : "Não é permitido mover um armazenamento (%s) para compartilhamento (%s)",
+ "Moving a storage (%s) into another storage (%s) is not allowed" : "Não é permitido mover um armazenamento (%s) para outro armazenamento (%s)",
"Path contains invalid segments" : "O caminho contém segmentos inválidos",
"Filename is a reserved word" : "Nome do arquivo é uma palavra reservada",
"Filename contains at least one invalid character" : "O nome do arquivo contém pelo menos um caractere inválido ",
@@ -138,6 +156,7 @@ OC.L10N.register(
"Oracle connection could not be established" : "Conexão Oracle não pôde ser estabelecida",
"Oracle Login and/or password not valid" : "Login e/ou senha Oracle inválidos",
"PostgreSQL Login and/or password not valid" : "Login e/ou senha do PostgreSQL inválidos",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk!" : "O Mac OS X não é compatível e %s não funcionará corretamente nessa plataforma. Use-o por sua própria conta e risco!",
"For the best results, please consider using a GNU/Linux server instead." : "Para obter melhores resultados, por favor considere o uso de um servidor GNU/Linux em seu lugar.",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Aparentemente a instância %s está rodando em um ambiente PHP de 32 bits e o open_basedir foi configurado no php.ini. Isto pode gerar problemas com arquivos maiores que 4GB e é altamente não recomendável.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Por favor, remova a configuração de open_basedir de seu php.ini ou mude o PHP para 64bit.",
@@ -167,6 +186,7 @@ OC.L10N.register(
"You cannot share your root folder" : "Você não pode compartilhar sua pasta raiz",
"You are not allowed to share %s" : "Você não tem permissão para compartilhar %s",
"Valid permissions are required for sharing" : "Permissões válidas são necessárias para compartilhamento",
+ "File shares cannot have create or delete permissions" : "Os compartilhamentos de arquivos não podem ter permissões de criação ou exclusão",
"Cannot increase permissions of %s" : "Não foi possível aumentar as permissões de %s",
"Shares need at least read permissions" : "Compartilhamentos precisam pelo menos permissões de leitura",
"Files cannot be shared with delete permissions" : "Arquivos não podem ser compartilhados com permissões de exclusão",
@@ -309,8 +329,20 @@ OC.L10N.register(
"The audio to transcribe" : "O áudio a ser transcrito",
"Transcription" : "Transcrição",
"The transcribed text" : "O texto transcrito",
+ "ContextAgent" : "ContextAgent",
+ "Chat with an agent" : "Conversar com um agente",
"Chat message" : "Mensagem de bate-papo",
+ "A chat message to send to the agent." : "Uma mensagem de bate-papo a ser enviada ao agente",
"Confirmation" : "Confirmação",
+ "Whether to confirm previously requested actions: 0 for denial and 1 for confirmation." : "Se deve confirmar as ações solicitadas anteriormente: 0 para negação e 1 para confirmação.",
+ "Conversation token" : "Token de conversação",
+ "A token representing the conversation." : "Um token que representa a conversa.",
+ "Generated response" : "Gerar reposta",
+ "The response from the chat model." : "A resposta do modelo de bate-papo.",
+ "The new conversation token" : "O novo token de conversa",
+ "Send this along with the next interaction." : "Envie isso junto com a próxima interação.",
+ "Requested actions by the agent" : "Ações solicitadas pelo agente",
+ "Actions that the agent would like to carry out in JSON format." : "Ações que o agente gostaria de realizar no formato JSON.",
"Context write" : "Gravação de contexto",
"Writes text in a given style based on the provided source material." : "Escreve texto em um determinado estilo com base no material de origem fornecido.",
"Writing style" : "Estilo de escrita",
@@ -337,6 +369,12 @@ OC.L10N.register(
"Describe a task that you want the assistant to do or ask a question" : "Descreva uma tarefa que você deseja que o assistente execute ou faça uma pergunta",
"Generated reply" : "Resposta gerada",
"The generated text from the assistant" : "O texto gerado do assistente",
+ "Change Tone" : "Mudar o tom",
+ "Change the tone of a piece of text." : "Alterar o tom de um texto.",
+ "Write a text that you want the assistant to rewrite in another tone." : "Escreva um texto que você deseja que o assistente reescreva em outro tom.",
+ "Desired tone" : "Tom desejado",
+ "In which tone should your text be rewritten?" : "Em qual tom seu texto deve ser reescrito?",
+ "The rewritten text in the desired tone, written by the assistant:" : "O texto reescrito no tom desejado, escrito pelo assistente:",
"Chat" : "Conversa",
"Chat with the assistant" : "Converse com o assistente",
"System prompt" : "Prompt do sistema",
@@ -345,6 +383,15 @@ OC.L10N.register(
"The history of chat messages before the current message, starting with a message by the user" : "O histórico de mensagens de bate-papo antes da mensagem atual, começando com uma mensagem do usuário",
"Response message" : "Mensagem de resposta",
"The generated response as part of the conversation" : "A resposta gerada como parte da conversa",
+ "Chat with tools" : "Conversar com ferramentas",
+ "Chat with the language model with tool calling support." : "Converse com o modelo de linguagem com suporte a tool calling (\"chamadas a ferramentas\").",
+ "Tool message" : "Mensagem da ferramenta",
+ "The result of tool calls in the last interaction" : "O resultado das chamadas de ferramentas na última interação",
+ "Available tools" : "Ferramentas disponíveis",
+ "The available tools in JSON format" : "As ferramentas disponíveis em formato JSON",
+ "The response from the chat model" : "A resposta do modelo de bate-papo",
+ "Tool calls" : "Chamadas de ferramentas",
+ "Tools call instructions from the model in JSON format" : "Instruções de chamada de ferramentas do modelo no formato JSON",
"Formalize text" : "Formalizar texto",
"Takes a text and makes it sound more formal" : "Pega um texto e faz com que ele soe mais formal",
"Write a text that you want the assistant to formalize" : "Escreva um texto que você deseja que o assistente formalize",
@@ -355,7 +402,12 @@ OC.L10N.register(
"Original text" : "Texto original",
"The original text to generate a headline for" : "O texto original para gerar um título para",
"The generated headline" : "O título gerado",
+ "Proofread" : "Revisar",
+ "Proofreads a text and lists corrections" : "Revisa um texto e lista as correções",
"Text" : "Texto",
+ "The text to proofread" : "O texto a ser revisado",
+ "Corrections" : "Correções",
+ "The corrections that should be made in your text" : "As correções que devem ser feitas em seu texto",
"Reformulate text" : "Reformular texto",
"Takes a text and reformulates it" : "Pega um texto e o reformula",
"Write a text that you want the assistant to reformulate" : "Escrever um texto que você deseja que o assistente reformule",
diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json
index c8d14ba3cfe..1d0a4d2e40e 100644
--- a/lib/l10n/pt_BR.json
+++ b/lib/l10n/pt_BR.json
@@ -36,6 +36,7 @@
"Server version %s or higher is required." : "É requerido um servidor da versão %s ou superior.",
"Server version %s or lower is required." : "É requerido um servidor da versão %s ou abaixo.",
"Logged in account must be an admin, a sub admin or gotten special right to access this setting" : "A conta conectada deve ser um administrador, um subadministrador ou ter direito especial para acessar esta configuração",
+ "Your current IP address doesn't allow you to perform admin actions" : "Seu endereço IP atual não permite que você execute ações administrativas",
"Logged in account must be an admin or sub admin" : "A conta conectada deve ser de um administrador ou subadministrador",
"Logged in account must be an admin" : "A conta logada deve ser de um administrador",
"Wiping of device %s has started" : "Limpeza do dispositivo %s iniciou",
@@ -56,7 +57,11 @@
"Avatar image is not square" : "A imagem do avatar não é quadrada",
"Files" : "Arquivos",
"View profile" : "Visualizar perfil",
+ "same time" : "mesmo tempo",
"_%nh_::_%nh_" : ["%nh","%nh","%nh"],
+ "_%nm_::_%nm_" : ["%nm","%nm","%nm"],
+ "%s ahead" : "%s à frente",
+ "%s behind" : "%s atrás",
"Local time: %s" : "Hora local: %s",
"today" : "hoje",
"tomorrow" : "amanhã",
@@ -79,6 +84,12 @@
"seconds ago" : "segundos atrás",
"Empty file" : "Arquivo vazio",
"Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "O módulo com a ID: %s não existe. Por favor, habilite-o nas configurações de seu aplicativo ou contacte o administrador.",
+ "No file conversion providers available" : "Não há provedores de conversão de arquivos disponíveis",
+ "File is too large to convert" : "O arquivo é muito grande para converter",
+ "Destination does not match conversion extension" : "O destino não corresponde à extensão de conversão",
+ "Could not convert file" : "Não foi possível converter o arquivo",
+ "Destination does not exist" : "Destino não existe",
+ "Destination is not creatable" : "Destino não pode ser criado",
"Dot files are not allowed" : "Arquivos Dot não são permitidos",
"\"%1$s\" is a forbidden file or folder name." : "\"%1$s\" é um nome de arquivo ou pasta proibido.",
"\"%1$s\" is a forbidden prefix for file or folder names." : "\"%1$s\" é um prefixo proibido para nomes de arquivos ou pastas.",
@@ -90,6 +101,13 @@
"Invalid path" : "Diretório inválido",
"Failed to create file from template" : "Falha ao criar arquivo do modelo ",
"Templates" : "Modelos ",
+ "Storage %s cannot be moved" : "O armazenamento %s não pode ser movido",
+ "Moving a share (%s) into a shared folder is not allowed" : "Não é permitido mover um compartilhamento (%s) para uma pasta compartilhada",
+ "Moving a storage (%s) into a shared folder is not allowed" : "Não é permitido mover um armazenamento (%s) para uma pasta compartilhada",
+ "Moving a share (%s) into another share (%s) is not allowed" : "Não é permitido mover um compartilhamento (%s) para outro compartilhamento (%s)",
+ "Moving a share (%s) into another storage (%s) is not allowed" : "Não é permitido mover um compartilhamento (%s) para outro armazenamento (%s)",
+ "Moving a storage (%s) into a share (%s) is not allowed" : "Não é permitido mover um armazenamento (%s) para compartilhamento (%s)",
+ "Moving a storage (%s) into another storage (%s) is not allowed" : "Não é permitido mover um armazenamento (%s) para outro armazenamento (%s)",
"Path contains invalid segments" : "O caminho contém segmentos inválidos",
"Filename is a reserved word" : "Nome do arquivo é uma palavra reservada",
"Filename contains at least one invalid character" : "O nome do arquivo contém pelo menos um caractere inválido ",
@@ -136,6 +154,7 @@
"Oracle connection could not be established" : "Conexão Oracle não pôde ser estabelecida",
"Oracle Login and/or password not valid" : "Login e/ou senha Oracle inválidos",
"PostgreSQL Login and/or password not valid" : "Login e/ou senha do PostgreSQL inválidos",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk!" : "O Mac OS X não é compatível e %s não funcionará corretamente nessa plataforma. Use-o por sua própria conta e risco!",
"For the best results, please consider using a GNU/Linux server instead." : "Para obter melhores resultados, por favor considere o uso de um servidor GNU/Linux em seu lugar.",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Aparentemente a instância %s está rodando em um ambiente PHP de 32 bits e o open_basedir foi configurado no php.ini. Isto pode gerar problemas com arquivos maiores que 4GB e é altamente não recomendável.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Por favor, remova a configuração de open_basedir de seu php.ini ou mude o PHP para 64bit.",
@@ -165,6 +184,7 @@
"You cannot share your root folder" : "Você não pode compartilhar sua pasta raiz",
"You are not allowed to share %s" : "Você não tem permissão para compartilhar %s",
"Valid permissions are required for sharing" : "Permissões válidas são necessárias para compartilhamento",
+ "File shares cannot have create or delete permissions" : "Os compartilhamentos de arquivos não podem ter permissões de criação ou exclusão",
"Cannot increase permissions of %s" : "Não foi possível aumentar as permissões de %s",
"Shares need at least read permissions" : "Compartilhamentos precisam pelo menos permissões de leitura",
"Files cannot be shared with delete permissions" : "Arquivos não podem ser compartilhados com permissões de exclusão",
@@ -307,8 +327,20 @@
"The audio to transcribe" : "O áudio a ser transcrito",
"Transcription" : "Transcrição",
"The transcribed text" : "O texto transcrito",
+ "ContextAgent" : "ContextAgent",
+ "Chat with an agent" : "Conversar com um agente",
"Chat message" : "Mensagem de bate-papo",
+ "A chat message to send to the agent." : "Uma mensagem de bate-papo a ser enviada ao agente",
"Confirmation" : "Confirmação",
+ "Whether to confirm previously requested actions: 0 for denial and 1 for confirmation." : "Se deve confirmar as ações solicitadas anteriormente: 0 para negação e 1 para confirmação.",
+ "Conversation token" : "Token de conversação",
+ "A token representing the conversation." : "Um token que representa a conversa.",
+ "Generated response" : "Gerar reposta",
+ "The response from the chat model." : "A resposta do modelo de bate-papo.",
+ "The new conversation token" : "O novo token de conversa",
+ "Send this along with the next interaction." : "Envie isso junto com a próxima interação.",
+ "Requested actions by the agent" : "Ações solicitadas pelo agente",
+ "Actions that the agent would like to carry out in JSON format." : "Ações que o agente gostaria de realizar no formato JSON.",
"Context write" : "Gravação de contexto",
"Writes text in a given style based on the provided source material." : "Escreve texto em um determinado estilo com base no material de origem fornecido.",
"Writing style" : "Estilo de escrita",
@@ -335,6 +367,12 @@
"Describe a task that you want the assistant to do or ask a question" : "Descreva uma tarefa que você deseja que o assistente execute ou faça uma pergunta",
"Generated reply" : "Resposta gerada",
"The generated text from the assistant" : "O texto gerado do assistente",
+ "Change Tone" : "Mudar o tom",
+ "Change the tone of a piece of text." : "Alterar o tom de um texto.",
+ "Write a text that you want the assistant to rewrite in another tone." : "Escreva um texto que você deseja que o assistente reescreva em outro tom.",
+ "Desired tone" : "Tom desejado",
+ "In which tone should your text be rewritten?" : "Em qual tom seu texto deve ser reescrito?",
+ "The rewritten text in the desired tone, written by the assistant:" : "O texto reescrito no tom desejado, escrito pelo assistente:",
"Chat" : "Conversa",
"Chat with the assistant" : "Converse com o assistente",
"System prompt" : "Prompt do sistema",
@@ -343,6 +381,15 @@
"The history of chat messages before the current message, starting with a message by the user" : "O histórico de mensagens de bate-papo antes da mensagem atual, começando com uma mensagem do usuário",
"Response message" : "Mensagem de resposta",
"The generated response as part of the conversation" : "A resposta gerada como parte da conversa",
+ "Chat with tools" : "Conversar com ferramentas",
+ "Chat with the language model with tool calling support." : "Converse com o modelo de linguagem com suporte a tool calling (\"chamadas a ferramentas\").",
+ "Tool message" : "Mensagem da ferramenta",
+ "The result of tool calls in the last interaction" : "O resultado das chamadas de ferramentas na última interação",
+ "Available tools" : "Ferramentas disponíveis",
+ "The available tools in JSON format" : "As ferramentas disponíveis em formato JSON",
+ "The response from the chat model" : "A resposta do modelo de bate-papo",
+ "Tool calls" : "Chamadas de ferramentas",
+ "Tools call instructions from the model in JSON format" : "Instruções de chamada de ferramentas do modelo no formato JSON",
"Formalize text" : "Formalizar texto",
"Takes a text and makes it sound more formal" : "Pega um texto e faz com que ele soe mais formal",
"Write a text that you want the assistant to formalize" : "Escreva um texto que você deseja que o assistente formalize",
@@ -353,7 +400,12 @@
"Original text" : "Texto original",
"The original text to generate a headline for" : "O texto original para gerar um título para",
"The generated headline" : "O título gerado",
+ "Proofread" : "Revisar",
+ "Proofreads a text and lists corrections" : "Revisa um texto e lista as correções",
"Text" : "Texto",
+ "The text to proofread" : "O texto a ser revisado",
+ "Corrections" : "Correções",
+ "The corrections that should be made in your text" : "As correções que devem ser feitas em seu texto",
"Reformulate text" : "Reformular texto",
"Takes a text and reformulates it" : "Pega um texto e o reformula",
"Write a text that you want the assistant to reformulate" : "Escrever um texto que você deseja que o assistente reformule",
diff --git a/lib/l10n/sk.js b/lib/l10n/sk.js
index ddd31dde93a..4415a806550 100644
--- a/lib/l10n/sk.js
+++ b/lib/l10n/sk.js
@@ -38,6 +38,7 @@ OC.L10N.register(
"Server version %s or higher is required." : "Je vyžadovaná verzia servera %s alebo vyššia.",
"Server version %s or lower is required." : "Je vyžadovaná verzia servera %s alebo nižšia.",
"Logged in account must be an admin, a sub admin or gotten special right to access this setting" : "Prihlásený účet musí byť správcom, podadministrátorom alebo musí mať špeciálne právo na prístup k tomuto nastaveniu.",
+ "Your current IP address doesn't allow you to perform admin actions" : "Vaša aktuálna adresa IP vám neumožňuje vykonávať akcie správcu",
"Logged in account must be an admin or sub admin" : "Prihlásený účet musí byť správcom alebo sub správcom.",
"Logged in account must be an admin" : "Prihlásený účet musí byť správcom",
"Wiping of device %s has started" : "Začalo sa mazanie zariadenia %s",
@@ -155,6 +156,7 @@ OC.L10N.register(
"Oracle connection could not be established" : "Nie je možné pripojiť sa k Oracle",
"Oracle Login and/or password not valid" : "Prihlasovacie meno a/alebo heslo pre Oracle databázu je neplatné",
"PostgreSQL Login and/or password not valid" : "Prihlasovacie meno a/alebo heslo pre PostgreSQL databázu je neplatné",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk!" : "Mac OS X nie je podporovaný a %s nebude správne fungovať na tejto platforme. Použitie na vlastné riziko!",
"For the best results, please consider using a GNU/Linux server instead." : "Pre dosiahnutie najlepších výsledkov, prosím zvážte použitie GNU/Linux servera.",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Zdá sa, že táto inštancia %s beží v 32-bitovom prostredí PHP a v php.ini bola nastavená voľba open_basedir. To bude zdrojom problémov so súbormi väčšími ako 4GB a dôrazne sa neodporúča.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Prosím, odstráňte nastavenie open_basedir vo vašom php.ini alebo prejdite na 64-bit PHP.",
diff --git a/lib/l10n/sk.json b/lib/l10n/sk.json
index 626188a2538..057936c2a89 100644
--- a/lib/l10n/sk.json
+++ b/lib/l10n/sk.json
@@ -36,6 +36,7 @@
"Server version %s or higher is required." : "Je vyžadovaná verzia servera %s alebo vyššia.",
"Server version %s or lower is required." : "Je vyžadovaná verzia servera %s alebo nižšia.",
"Logged in account must be an admin, a sub admin or gotten special right to access this setting" : "Prihlásený účet musí byť správcom, podadministrátorom alebo musí mať špeciálne právo na prístup k tomuto nastaveniu.",
+ "Your current IP address doesn't allow you to perform admin actions" : "Vaša aktuálna adresa IP vám neumožňuje vykonávať akcie správcu",
"Logged in account must be an admin or sub admin" : "Prihlásený účet musí byť správcom alebo sub správcom.",
"Logged in account must be an admin" : "Prihlásený účet musí byť správcom",
"Wiping of device %s has started" : "Začalo sa mazanie zariadenia %s",
@@ -153,6 +154,7 @@
"Oracle connection could not be established" : "Nie je možné pripojiť sa k Oracle",
"Oracle Login and/or password not valid" : "Prihlasovacie meno a/alebo heslo pre Oracle databázu je neplatné",
"PostgreSQL Login and/or password not valid" : "Prihlasovacie meno a/alebo heslo pre PostgreSQL databázu je neplatné",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk!" : "Mac OS X nie je podporovaný a %s nebude správne fungovať na tejto platforme. Použitie na vlastné riziko!",
"For the best results, please consider using a GNU/Linux server instead." : "Pre dosiahnutie najlepších výsledkov, prosím zvážte použitie GNU/Linux servera.",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Zdá sa, že táto inštancia %s beží v 32-bitovom prostredí PHP a v php.ini bola nastavená voľba open_basedir. To bude zdrojom problémov so súbormi väčšími ako 4GB a dôrazne sa neodporúča.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Prosím, odstráňte nastavenie open_basedir vo vašom php.ini alebo prejdite na 64-bit PHP.",
diff --git a/lib/private/AppFramework/Middleware/FlowV2EphemeralSessionsMiddleware.php b/lib/private/AppFramework/Middleware/FlowV2EphemeralSessionsMiddleware.php
index d5c73b1f598..c30855a0e98 100644
--- a/lib/private/AppFramework/Middleware/FlowV2EphemeralSessionsMiddleware.php
+++ b/lib/private/AppFramework/Middleware/FlowV2EphemeralSessionsMiddleware.php
@@ -9,6 +9,7 @@ namespace OC\AppFramework\Middleware;
use OC\AppFramework\Utility\ControllerMethodReflector;
use OC\Core\Controller\ClientFlowLoginV2Controller;
+use OC\Core\Controller\TwoFactorChallengeController;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\Attribute\PublicPage;
use OCP\AppFramework\Middleware;
@@ -38,6 +39,10 @@ class FlowV2EphemeralSessionsMiddleware extends Middleware {
return;
}
+ if ($controller instanceof TwoFactorChallengeController) {
+ return;
+ }
+
$reflectionMethod = new ReflectionMethod($controller, $methodName);
if (!empty($reflectionMethod->getAttributes(PublicPage::class))) {
return;
diff --git a/lib/private/Files/FilenameValidator.php b/lib/private/Files/FilenameValidator.php
index fde45068df7..b1979789ec8 100644
--- a/lib/private/Files/FilenameValidator.php
+++ b/lib/private/Files/FilenameValidator.php
@@ -127,9 +127,6 @@ class FilenameValidator implements IFilenameValidator {
if (empty($this->forbiddenCharacters)) {
// Get always forbidden characters
$forbiddenCharacters = str_split(\OCP\Constants::FILENAME_INVALID_CHARS);
- if ($forbiddenCharacters === false) {
- $forbiddenCharacters = [];
- }
// Get admin defined invalid characters
$additionalChars = $this->config->getSystemValue('forbidden_filename_characters', []);
@@ -231,7 +228,8 @@ class FilenameValidator implements IFilenameValidator {
return false;
}
- protected function checkForbiddenName($filename): void {
+ protected function checkForbiddenName(string $filename): void {
+ $filename = mb_strtolower($filename);
if ($this->isForbidden($filename)) {
throw new ReservedWordException($this->l10n->t('"%1$s" is a forbidden file or folder name.', [$filename]));
}
@@ -295,6 +293,6 @@ class FilenameValidator implements IFilenameValidator {
$values = $fallback;
}
- return array_map('mb_strtolower', $values);
+ return array_map(mb_strtolower(...), $values);
}
};
diff --git a/lib/private/Files/Type/Detection.php b/lib/private/Files/Type/Detection.php
index 3676a9b736c..48907b3473f 100644
--- a/lib/private/Files/Type/Detection.php
+++ b/lib/private/Files/Type/Detection.php
@@ -228,18 +228,18 @@ class Detection implements IMimeTypeDetector {
// lets see if it does have mime support
$path = escapeshellarg($path);
$fp = popen("test -f $path && file -b --mime-type $path", 'r');
- $mimeType = fgets($fp);
- pclose($fp);
-
- if ($mimeType !== false) {
- //trim the newline
- $mimeType = trim($mimeType);
- $mimeType = $this->getSecureMimeType($mimeType);
- if ($mimeType !== 'application/octet-stream') {
+ if ($fp !== false) {
+ $mimeType = fgets($fp);
+ pclose($fp);
+ if ($mimeType !== false) {
+ //trim the newline
+ $mimeType = trim($mimeType);
+ $mimeType = $this->getSecureMimeType($mimeType);
return $mimeType;
}
}
}
+
return 'application/octet-stream';
}