summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/base.php13
-rw-r--r--lib/composer/composer/autoload_classmap.php4
-rw-r--r--lib/composer/composer/autoload_static.php4
-rw-r--r--lib/l10n/en_GB.js9
-rw-r--r--lib/l10n/en_GB.json9
-rw-r--r--lib/l10n/es.js11
-rw-r--r--lib/l10n/es.json11
-rw-r--r--lib/l10n/es_CO.js259
-rw-r--r--lib/l10n/es_CO.json257
-rw-r--r--lib/l10n/fi.js7
-rw-r--r--lib/l10n/fi.json7
-rw-r--r--lib/l10n/hu.js17
-rw-r--r--lib/l10n/hu.json17
-rw-r--r--lib/l10n/is.js10
-rw-r--r--lib/l10n/is.json10
-rw-r--r--lib/l10n/pl.js4
-rw-r--r--lib/l10n/pl.json4
-rw-r--r--lib/l10n/ru.js9
-rw-r--r--lib/l10n/ru.json9
-rw-r--r--lib/l10n/sv.js1
-rw-r--r--lib/l10n/sv.json1
-rw-r--r--lib/l10n/zh_TW.js7
-rw-r--r--lib/l10n/zh_TW.json7
-rw-r--r--lib/private/AppFramework/DependencyInjection/DIContainer.php3
-rw-r--r--lib/private/AppFramework/Http.php2
-rw-r--r--lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php10
-rw-r--r--lib/private/Collaboration/Collaborators/SearchResult.php8
-rw-r--r--lib/private/Command/QueueBus.php2
-rw-r--r--lib/private/DB/MDB2SchemaManager.php2
-rw-r--r--lib/private/DB/NoCheckMigrator.php39
-rw-r--r--lib/private/DB/OracleMigrator.php148
-rw-r--r--lib/private/Files/FileInfo.php2
-rw-r--r--lib/private/Files/ObjectStore/ObjectStoreStorage.php10
-rw-r--r--lib/private/Files/ObjectStore/S3ObjectTrait.php13
-rw-r--r--lib/private/Files/Storage/Local.php3
-rw-r--r--lib/private/Files/Type/Detection.php4
-rw-r--r--lib/private/Log.php6
-rw-r--r--lib/private/Mail/Attachment.php78
-rw-r--r--lib/private/Mail/Mailer.php22
-rw-r--r--lib/private/Mail/Message.php12
-rw-r--r--lib/private/Repair.php2
-rw-r--r--lib/private/Repair/NC13/AddLogRotateJob.php47
-rw-r--r--lib/private/Server.php4
-rw-r--r--lib/private/Setup.php5
-rw-r--r--lib/private/Share20/Manager.php2
-rw-r--r--lib/private/SystemConfig.php8
-rw-r--r--lib/private/Tags.php2
-rw-r--r--lib/private/legacy/app.php18
-rw-r--r--lib/private/legacy/image.php2
-rw-r--r--lib/private/legacy/json.php2
-rw-r--r--lib/private/legacy/template.php2
-rw-r--r--lib/private/legacy/template/functions.php2
-rw-r--r--lib/public/App.php3
-rw-r--r--lib/public/AppFramework/Http/DataDisplayResponse.php2
-rw-r--r--lib/public/Files/FileInfo.php2
-rw-r--r--lib/public/IRequest.php10
-rw-r--r--lib/public/Mail/IAttachment.php53
-rw-r--r--lib/public/Mail/IMailer.php17
-rw-r--r--lib/public/Mail/IMessage.php10
-rw-r--r--lib/public/Util.php2
60 files changed, 1114 insertions, 132 deletions
diff --git a/lib/base.php b/lib/base.php
index c76d83cd220..b9862e73194 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -730,7 +730,6 @@ class OC {
self::registerCacheHooks();
self::registerFilesystemHooks();
self::registerShareHooks();
- self::registerLogRotate();
self::registerEncryptionWrapper();
self::registerEncryptionHooks();
self::registerAccountHooks();
@@ -863,18 +862,6 @@ class OC {
}
/**
- * register hooks for the cache
- */
- public static function registerLogRotate() {
- $systemConfig = \OC::$server->getSystemConfig();
- if ($systemConfig->getValue('installed', false) && $systemConfig->getValue('log_rotate_size', false) && !self::checkUpgrade(false)) {
- //don't try to do this before we are properly setup
- //use custom logfile path if defined, otherwise use default of nextcloud.log in data directory
- \OC::$server->getJobList()->add('OC\Log\Rotate');
- }
- }
-
- /**
* register hooks for the filesystem
*/
public static function registerFilesystemHooks() {
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index e522d82edf7..0e550b72532 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -226,6 +226,7 @@ return array(
'OCP\\Lock\\ILockingProvider' => $baseDir . '/lib/public/Lock/ILockingProvider.php',
'OCP\\Lock\\LockedException' => $baseDir . '/lib/public/Lock/LockedException.php',
'OCP\\Lockdown\\ILockdownManager' => $baseDir . '/lib/public/Lockdown/ILockdownManager.php',
+ 'OCP\\Mail\\IAttachment' => $baseDir . '/lib/public/Mail/IAttachment.php',
'OCP\\Mail\\IEMailTemplate' => $baseDir . '/lib/public/Mail/IEMailTemplate.php',
'OCP\\Mail\\IMailer' => $baseDir . '/lib/public/Mail/IMailer.php',
'OCP\\Mail\\IMessage' => $baseDir . '/lib/public/Mail/IMessage.php',
@@ -532,7 +533,6 @@ return array(
'OC\\DB\\Migrator' => $baseDir . '/lib/private/DB/Migrator.php',
'OC\\DB\\MySQLMigrator' => $baseDir . '/lib/private/DB/MySQLMigrator.php',
'OC\\DB\\MySqlTools' => $baseDir . '/lib/private/DB/MySqlTools.php',
- 'OC\\DB\\NoCheckMigrator' => $baseDir . '/lib/private/DB/NoCheckMigrator.php',
'OC\\DB\\OCPostgreSqlPlatform' => $baseDir . '/lib/private/DB/OCPostgreSqlPlatform.php',
'OC\\DB\\OCSqlitePlatform' => $baseDir . '/lib/private/DB/OCSqlitePlatform.php',
'OC\\DB\\OracleConnection' => $baseDir . '/lib/private/DB/OracleConnection.php',
@@ -710,6 +710,7 @@ return array(
'OC\\Log\\File' => $baseDir . '/lib/private/Log/File.php',
'OC\\Log\\Rotate' => $baseDir . '/lib/private/Log/Rotate.php',
'OC\\Log\\Syslog' => $baseDir . '/lib/private/Log/Syslog.php',
+ 'OC\\Mail\\Attachment' => $baseDir . '/lib/private/Mail/Attachment.php',
'OC\\Mail\\EMailTemplate' => $baseDir . '/lib/private/Mail/EMailTemplate.php',
'OC\\Mail\\Mailer' => $baseDir . '/lib/private/Mail/Mailer.php',
'OC\\Mail\\Message' => $baseDir . '/lib/private/Mail/Message.php',
@@ -784,6 +785,7 @@ return array(
'OC\\Repair\\NC12\\InstallCoreBundle' => $baseDir . '/lib/private/Repair/NC12/InstallCoreBundle.php',
'OC\\Repair\\NC12\\RepairIdentityProofKeyFolders' => $baseDir . '/lib/private/Repair/NC12/RepairIdentityProofKeyFolders.php',
'OC\\Repair\\NC12\\UpdateLanguageCodes' => $baseDir . '/lib/private/Repair/NC12/UpdateLanguageCodes.php',
+ 'OC\\Repair\\NC13\\AddLogRotateJob' => $baseDir . '/lib/private/Repair/NC13/AddLogRotateJob.php',
'OC\\Repair\\NC13\\RepairInvalidPaths' => $baseDir . '/lib/private/Repair/NC13/RepairInvalidPaths.php',
'OC\\Repair\\OldGroupMembershipShares' => $baseDir . '/lib/private/Repair/OldGroupMembershipShares.php',
'OC\\Repair\\Owncloud\\DropAccountTermsTable' => $baseDir . '/lib/private/Repair/Owncloud/DropAccountTermsTable.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 4f538e9602e..563c039d033 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -256,6 +256,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Lock\\ILockingProvider' => __DIR__ . '/../../..' . '/lib/public/Lock/ILockingProvider.php',
'OCP\\Lock\\LockedException' => __DIR__ . '/../../..' . '/lib/public/Lock/LockedException.php',
'OCP\\Lockdown\\ILockdownManager' => __DIR__ . '/../../..' . '/lib/public/Lockdown/ILockdownManager.php',
+ 'OCP\\Mail\\IAttachment' => __DIR__ . '/../../..' . '/lib/public/Mail/IAttachment.php',
'OCP\\Mail\\IEMailTemplate' => __DIR__ . '/../../..' . '/lib/public/Mail/IEMailTemplate.php',
'OCP\\Mail\\IMailer' => __DIR__ . '/../../..' . '/lib/public/Mail/IMailer.php',
'OCP\\Mail\\IMessage' => __DIR__ . '/../../..' . '/lib/public/Mail/IMessage.php',
@@ -562,7 +563,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\DB\\Migrator' => __DIR__ . '/../../..' . '/lib/private/DB/Migrator.php',
'OC\\DB\\MySQLMigrator' => __DIR__ . '/../../..' . '/lib/private/DB/MySQLMigrator.php',
'OC\\DB\\MySqlTools' => __DIR__ . '/../../..' . '/lib/private/DB/MySqlTools.php',
- 'OC\\DB\\NoCheckMigrator' => __DIR__ . '/../../..' . '/lib/private/DB/NoCheckMigrator.php',
'OC\\DB\\OCPostgreSqlPlatform' => __DIR__ . '/../../..' . '/lib/private/DB/OCPostgreSqlPlatform.php',
'OC\\DB\\OCSqlitePlatform' => __DIR__ . '/../../..' . '/lib/private/DB/OCSqlitePlatform.php',
'OC\\DB\\OracleConnection' => __DIR__ . '/../../..' . '/lib/private/DB/OracleConnection.php',
@@ -740,6 +740,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Log\\File' => __DIR__ . '/../../..' . '/lib/private/Log/File.php',
'OC\\Log\\Rotate' => __DIR__ . '/../../..' . '/lib/private/Log/Rotate.php',
'OC\\Log\\Syslog' => __DIR__ . '/../../..' . '/lib/private/Log/Syslog.php',
+ 'OC\\Mail\\Attachment' => __DIR__ . '/../../..' . '/lib/private/Mail/Attachment.php',
'OC\\Mail\\EMailTemplate' => __DIR__ . '/../../..' . '/lib/private/Mail/EMailTemplate.php',
'OC\\Mail\\Mailer' => __DIR__ . '/../../..' . '/lib/private/Mail/Mailer.php',
'OC\\Mail\\Message' => __DIR__ . '/../../..' . '/lib/private/Mail/Message.php',
@@ -814,6 +815,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Repair\\NC12\\InstallCoreBundle' => __DIR__ . '/../../..' . '/lib/private/Repair/NC12/InstallCoreBundle.php',
'OC\\Repair\\NC12\\RepairIdentityProofKeyFolders' => __DIR__ . '/../../..' . '/lib/private/Repair/NC12/RepairIdentityProofKeyFolders.php',
'OC\\Repair\\NC12\\UpdateLanguageCodes' => __DIR__ . '/../../..' . '/lib/private/Repair/NC12/UpdateLanguageCodes.php',
+ 'OC\\Repair\\NC13\\AddLogRotateJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC13/AddLogRotateJob.php',
'OC\\Repair\\NC13\\RepairInvalidPaths' => __DIR__ . '/../../..' . '/lib/private/Repair/NC13/RepairInvalidPaths.php',
'OC\\Repair\\OldGroupMembershipShares' => __DIR__ . '/../../..' . '/lib/private/Repair/OldGroupMembershipShares.php',
'OC\\Repair\\Owncloud\\DropAccountTermsTable' => __DIR__ . '/../../..' . '/lib/private/Repair/Owncloud/DropAccountTermsTable.php',
diff --git a/lib/l10n/en_GB.js b/lib/l10n/en_GB.js
index a169502af15..4713820e242 100644
--- a/lib/l10n/en_GB.js
+++ b/lib/l10n/en_GB.js
@@ -31,14 +31,23 @@ OC.L10N.register(
"Invalid image" : "Invalid image",
"Avatar image is not square" : "Avatar image is not square",
"today" : "today",
+ "tomorrow" : "tomorrow",
"yesterday" : "yesterday",
+ "_in %n day_::_in %n days_" : ["in %n day","in %n days"],
"_%n day ago_::_%n days ago_" : ["%n day ago","%n days ago"],
+ "next month" : "next month",
"last month" : "last month",
+ "_in %n month_::_in %n months_" : ["in %n month","in %n months"],
"_%n month ago_::_%n months ago_" : ["%n month ago","%n months ago"],
+ "next year" : "next year",
"last year" : "last year",
+ "_in %n year_::_in %n years_" : ["in %n year","in %n years"],
"_%n year ago_::_%n years ago_" : ["%n year ago","%n years ago"],
+ "_in %n hour_::_in %n hours_" : ["in %n hour","in %n hours"],
"_%n hour ago_::_%n hours ago_" : ["%n hour ago","%n hours ago"],
+ "_in %n minute_::_in %n minutes_" : ["in %n minute","in %n minutes"],
"_%n minute ago_::_%n minutes ago_" : ["%n minute ago","%n minutes ago"],
+ "in a few seconds" : "in a few seconds",
"seconds ago" : "seconds ago",
"Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator.",
"File name is a reserved word" : "File name is a reserved word",
diff --git a/lib/l10n/en_GB.json b/lib/l10n/en_GB.json
index bf08239be71..01590dbb688 100644
--- a/lib/l10n/en_GB.json
+++ b/lib/l10n/en_GB.json
@@ -29,14 +29,23 @@
"Invalid image" : "Invalid image",
"Avatar image is not square" : "Avatar image is not square",
"today" : "today",
+ "tomorrow" : "tomorrow",
"yesterday" : "yesterday",
+ "_in %n day_::_in %n days_" : ["in %n day","in %n days"],
"_%n day ago_::_%n days ago_" : ["%n day ago","%n days ago"],
+ "next month" : "next month",
"last month" : "last month",
+ "_in %n month_::_in %n months_" : ["in %n month","in %n months"],
"_%n month ago_::_%n months ago_" : ["%n month ago","%n months ago"],
+ "next year" : "next year",
"last year" : "last year",
+ "_in %n year_::_in %n years_" : ["in %n year","in %n years"],
"_%n year ago_::_%n years ago_" : ["%n year ago","%n years ago"],
+ "_in %n hour_::_in %n hours_" : ["in %n hour","in %n hours"],
"_%n hour ago_::_%n hours ago_" : ["%n hour ago","%n hours ago"],
+ "_in %n minute_::_in %n minutes_" : ["in %n minute","in %n minutes"],
"_%n minute ago_::_%n minutes ago_" : ["%n minute ago","%n minutes ago"],
+ "in a few seconds" : "in a few seconds",
"seconds ago" : "seconds ago",
"Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator.",
"File name is a reserved word" : "File name is a reserved word",
diff --git a/lib/l10n/es.js b/lib/l10n/es.js
index 14eda42f187..5a50a527131 100644
--- a/lib/l10n/es.js
+++ b/lib/l10n/es.js
@@ -31,14 +31,23 @@ OC.L10N.register(
"Invalid image" : "Imagen inválida",
"Avatar image is not square" : "La imagen de avatar no es cuadrada",
"today" : "hoy",
+ "tomorrow" : "mañana",
"yesterday" : "ayer",
+ "_in %n day_::_in %n days_" : ["dentro de %n día","dentro de %n días"],
"_%n day ago_::_%n days ago_" : ["Hace %n día","hace %n días"],
+ "next month" : "mes siguiente",
"last month" : "mes pasado",
+ "_in %n month_::_in %n months_" : ["dentro de %n mes","dentro de %n meses"],
"_%n month ago_::_%n months ago_" : ["Hace %n mes","Hace %n meses"],
+ "next year" : "año que viene",
"last year" : "año pasado",
+ "_in %n year_::_in %n years_" : ["dentro de %n año","dentro de %n años"],
"_%n year ago_::_%n years ago_" : ["Hace %n año","hace %n años"],
+ "_in %n hour_::_in %n hours_" : ["dentro de %n hora","dentro de %n horas"],
"_%n hour ago_::_%n hours ago_" : ["Hace %n hora","Hace %n horas"],
+ "_in %n minute_::_in %n minutes_" : ["dentro de %n minuto","dentro de %n minutos"],
"_%n minute ago_::_%n minutes ago_" : ["Hace %n minuto","Hace %n minutos"],
+ "in a few seconds" : "en unos segundos",
"seconds ago" : "hace segundos",
"Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con ID %s no existe. Por favor, actívalo en la configuración de apps o contacta con tu administrador.",
"File name is a reserved word" : "El nombre de archivo es una palabra reservada",
@@ -56,7 +65,7 @@ OC.L10N.register(
"Users" : "Usuarios",
"APCu" : "APCu",
"Redis" : "Redis",
- "Basic settings" : "Ajustes Basicas",
+ "Basic settings" : "Ajustes Basicos",
"Sharing" : "Compartir",
"Security" : "Seguridad",
"Encryption" : "Cifrado",
diff --git a/lib/l10n/es.json b/lib/l10n/es.json
index 23227e69ac6..c8ec965fcfe 100644
--- a/lib/l10n/es.json
+++ b/lib/l10n/es.json
@@ -29,14 +29,23 @@
"Invalid image" : "Imagen inválida",
"Avatar image is not square" : "La imagen de avatar no es cuadrada",
"today" : "hoy",
+ "tomorrow" : "mañana",
"yesterday" : "ayer",
+ "_in %n day_::_in %n days_" : ["dentro de %n día","dentro de %n días"],
"_%n day ago_::_%n days ago_" : ["Hace %n día","hace %n días"],
+ "next month" : "mes siguiente",
"last month" : "mes pasado",
+ "_in %n month_::_in %n months_" : ["dentro de %n mes","dentro de %n meses"],
"_%n month ago_::_%n months ago_" : ["Hace %n mes","Hace %n meses"],
+ "next year" : "año que viene",
"last year" : "año pasado",
+ "_in %n year_::_in %n years_" : ["dentro de %n año","dentro de %n años"],
"_%n year ago_::_%n years ago_" : ["Hace %n año","hace %n años"],
+ "_in %n hour_::_in %n hours_" : ["dentro de %n hora","dentro de %n horas"],
"_%n hour ago_::_%n hours ago_" : ["Hace %n hora","Hace %n horas"],
+ "_in %n minute_::_in %n minutes_" : ["dentro de %n minuto","dentro de %n minutos"],
"_%n minute ago_::_%n minutes ago_" : ["Hace %n minuto","Hace %n minutos"],
+ "in a few seconds" : "en unos segundos",
"seconds ago" : "hace segundos",
"Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con ID %s no existe. Por favor, actívalo en la configuración de apps o contacta con tu administrador.",
"File name is a reserved word" : "El nombre de archivo es una palabra reservada",
@@ -54,7 +63,7 @@
"Users" : "Usuarios",
"APCu" : "APCu",
"Redis" : "Redis",
- "Basic settings" : "Ajustes Basicas",
+ "Basic settings" : "Ajustes Basicos",
"Sharing" : "Compartir",
"Security" : "Seguridad",
"Encryption" : "Cifrado",
diff --git a/lib/l10n/es_CO.js b/lib/l10n/es_CO.js
new file mode 100644
index 00000000000..89acfdc93fe
--- /dev/null
+++ b/lib/l10n/es_CO.js
@@ -0,0 +1,259 @@
+OC.L10N.register(
+ "lib",
+ {
+ "Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
+ "See %s" : "Ver %s",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
+ "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Los archivos de la aplicación %$1s no fueron correctamente remplazados. Por favor asegúrarte de que la versión sea compatible con el servidor.",
+ "Sample configuration detected" : "Se ha detectado la configuración de muestra",
+ "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
+ "%1$s and %2$s" : "%1$s y %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s y %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s y %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s y %5$s",
+ "Education Edition" : "Edición Educativa",
+ "Enterprise bundle" : "Paquete empresarial",
+ "Groupware bundle" : "Paquete de Groupware",
+ "Social sharing bundle" : "Paquete para compartir en redes sociales",
+ "PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
+ "PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
+ "%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
+ "The library %s is not available." : "La biblioteca %s no está disponible. ",
+ "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
+ "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
+ "Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
+ "Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
+ "Unknown filetype" : "Tipo de archivo desconocido",
+ "Invalid image" : "Imagen inválida",
+ "Avatar image is not square" : "La imagen del avatar no es un cuadrado",
+ "today" : "hoy",
+ "tomorrow" : "mañana",
+ "yesterday" : "ayer",
+ "_in %n day_::_in %n days_" : ["en %n día","en %n días"],
+ "_%n day ago_::_%n days ago_" : ["hace %n día","hace %n días"],
+ "next month" : "próximo mes",
+ "last month" : "mes pasado",
+ "_in %n month_::_in %n months_" : ["en %n mes","en %n meses"],
+ "_%n month ago_::_%n months ago_" : ["Hace %n mes","Hace %n meses"],
+ "next year" : "próximo año",
+ "last year" : "año pasado",
+ "_in %n year_::_in %n years_" : ["en %n año","en %n años"],
+ "_%n year ago_::_%n years ago_" : ["hace %n año","hace %n años"],
+ "_in %n hour_::_in %n hours_" : ["en %n hora","en %n horas"],
+ "_%n hour ago_::_%n hours ago_" : ["Hace %n hora","Hace %n horas"],
+ "_in %n minute_::_in %n minutes_" : ["en %n minuto","en %n minutos"],
+ "_%n minute ago_::_%n minutes ago_" : ["Hace %n minuto","Hace %n minutos"],
+ "in a few seconds" : "en algunos segundos",
+ "seconds ago" : "hace segundos",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con ID: %sno existe. Por favor hablíitalo en tus configuraciones de aplicación o contacta a tu administrador. ",
+ "File name is a reserved word" : "Nombre de archivo es una palabra reservada",
+ "File name contains at least one invalid character" : "El nombre del archivo contiene al menos un caracter inválido",
+ "File name is too long" : "El nombre del archivo es demasiado largo",
+ "Dot files are not allowed" : "Los archivos Dot no están permitidos",
+ "Empty filename is not allowed" : "El uso de nombres de archivo vacíos no está permitido",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "La aplicación \"%s\" no puede ser instalada porque el archivo appinfo no se puede leer. ",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "La aplicación \"%s\" no puede ser instalada porque no es compatible con esta versión del servidor. ",
+ "This is an automatically sent email, please do not reply." : "Este es un correo enviado automáticamente, por favor no lo contestes. ",
+ "Help" : "Ayuda",
+ "Apps" : "Aplicaciones",
+ "Settings" : "Configuraciones",
+ "Log out" : "Salir",
+ "Users" : "Usuarios",
+ "APCu" : "APCu",
+ "Redis" : "Redis",
+ "Basic settings" : "Configuraciones básicas",
+ "Sharing" : "Compartiendo",
+ "Security" : "Seguridad",
+ "Encryption" : "Encripción",
+ "Additional settings" : "Configuraciones adicionales",
+ "Tips & tricks" : "Consejos & trucos",
+ "Personal info" : "Información personal",
+ "Sync clients" : "Sincronizar clientes",
+ "Unlimited" : "Ilimitado",
+ "__language_name__" : "Español (México)",
+ "Verifying" : "Verficando",
+ "Verifying …" : "Verficando ...",
+ "Verify" : "Verificar",
+ "%s enter the database username and name." : "%s ingresa el usuario y nombre de la base de datos",
+ "%s enter the database username." : "%s ingresa el nombre de usuario de la base de datos.",
+ "%s enter the database name." : "%s ingresar el nombre de la base de datos",
+ "%s you may not use dots in the database name" : "%s no puedes utilizar puntos en el nombre de la base de datos",
+ "Oracle connection could not be established" : "No fue posible establecer la conexión a Oracle",
+ "Oracle username and/or password not valid" : "Usuario y/o contraseña de Oracle inválidos",
+ "PostgreSQL username and/or password not valid" : "El Usuario y/o Contraseña de PostgreSQL inválido(s)",
+ "You need to enter details of an existing account." : "Necesitas ingresar los detalles de una cuenta existente.",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "OS X de Mac no está soportado y %s no funcionará correctamente en esta plataforma ¡Úsalo bajo tu propio riesgo!",
+ "For the best results, please consider using a GNU/Linux server instead." : "Para mejores resultados, por favor cosidera usar en su lugar un servidor GNU/Linux.",
+ "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Al parecer esta instancia %s está corriendo en un ambiente PHP de 32-bits y el open_basedir ha sido configurado en el archivo php.ini. Esto generará problemas con archivos de más de 4GB de tamaño y es altamente desalentado. ",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Por favor elimina el ajuste open_basedir de tu archivo php.ini o cambia a PHP de 64 bits. ",
+ "Set an admin username." : "Establecer un Usuario administrador",
+ "Set an admin password." : "Establecer la contraseña del administrador.",
+ "Can't create or write into the data directory %s" : "No es posible crear o escribir en el directorio de datos %s",
+ "Given database host is invalid and must not contain the port: %s" : "El servidor de base de datos ingresado es inválido y no debe contener el puerto: %s",
+ "Invalid Federated Cloud ID" : "ID Inválido",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
+ "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
+ "You are not allowed to share %s" : "No tienes permitido compartir %s",
+ "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
+ "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
+ "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
+ "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
+ "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
+ "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
+ "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
+ "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
+ "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "El backend %s que comparte debe implementar la interface OCP\\Share_Backend",
+ "Sharing backend %s not found" : "No fue encontrado el Backend que comparte %s ",
+ "Sharing backend for %s not found" : "No fue encontrado el Backend que comparte para %s",
+ "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
+ "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
+ "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Se presentó una falla al compartir %s porque el backend que comparte %s no pudo encontrar su origen",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos",
+ "Can’t increase permissions of %s" : "No es posible incrementar los privilegios de %s",
+ "Files can’t be shared with delete permissions" : "Los archivos no se pueden compartir con permisos de borrado",
+ "Files can’t be shared with create permissions" : "Los archivos no se pueden compartir con permisos de creación",
+ "Expiration date is in the past" : "La fecha de expiración se encuentra en el pasado",
+ "Can’t set expiration date more than %s days in the future" : "No es posible establecer la fecha de expiración más allá de %s días en el futuro",
+ "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
+ "%s shared »%s« with you." : "%s compartió contigo »%s«.",
+ "Click the button below to open it." : "Haz click en el botón inferior para abrirlo. ",
+ "Open »%s«" : "Abrir »%s«",
+ "%s via %s" : "%s por %s",
+ "The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe",
+ "Could not find category \"%s\"" : "No fue posible encontrar la categoria \"%s\"",
+ "Sunday" : "Domingo",
+ "Monday" : "Lunes",
+ "Tuesday" : "Martes",
+ "Wednesday" : "Miércoles",
+ "Thursday" : "Jueves",
+ "Friday" : "Viernes",
+ "Saturday" : "Sábado",
+ "Sun." : "Dom.",
+ "Mon." : "Lun.",
+ "Tue." : "Mar.",
+ "Wed." : "Mie.",
+ "Thu." : "Jue.",
+ "Fri." : "Vie.",
+ "Sat." : "Sab.",
+ "Su" : "Do",
+ "Mo" : "Lu",
+ "Tu" : "Ma",
+ "We" : "Mi",
+ "Th" : "Ju",
+ "Fr" : "Vi",
+ "Sa" : "Sa",
+ "January" : "Enero",
+ "February" : "Febrero",
+ "March" : "Marzo",
+ "April" : "Abril",
+ "May" : "Mayo",
+ "June" : "Junio",
+ "July" : "Julio",
+ "August" : "Agosto",
+ "September" : "Septiembre",
+ "October" : "Octubre",
+ "November" : "Noviembre",
+ "December" : "Diciembre",
+ "Jan." : "Ene.",
+ "Feb." : "Feb.",
+ "Mar." : "Mar.",
+ "Apr." : "Abr.",
+ "May." : "May.",
+ "Jun." : "Jun.",
+ "Jul." : "Jul.",
+ "Aug." : "Ago.",
+ "Sep." : "Sep.",
+ "Oct." : "Oct.",
+ "Nov." : "Nov.",
+ "Dec." : "Dic.",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Sólo se permiten los siguientes caracteres en el usuario: \"a-z\", \"A-Z\", \"0-9\" y \"_.@-'\"",
+ "A valid username must be provided" : "Debes proporcionar un nombre de usuario válido",
+ "Username contains whitespace at the beginning or at the end" : "El usuario contiene un espacio en blanco al inicio o al final",
+ "Username must not consist of dots only" : "El usuario no debe consistir de solo puntos. ",
+ "A valid password must be provided" : "Se debe proporcionar una contraseña válida",
+ "The username is already being used" : "Ese usuario ya está en uso",
+ "Could not create user" : "No fue posible crear el usuario",
+ "User disabled" : "Usuario deshabilitado",
+ "Login canceled by app" : "Inicio de sesión cancelado por la aplicación",
+ "No app name specified" : "No se ha especificado el nombre de la aplicación",
+ "App '%s' could not be installed!" : "¡La aplicación \"%s\" no pudo ser instalada!",
+ "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s ",
+ "a safe home for all your data" : "un lugar seguro para todos tus datos",
+ "File is currently busy, please try again later" : "El archivo se encuentra actualmente en uso, por favor intentalo más tarde. ",
+ "Can't read file" : "No se puede leer el archivo",
+ "Application is not enabled" : "La aplicación está deshabilitada",
+ "Authentication error" : "Error de autenticación",
+ "Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
+ "Unknown user" : "Ususario desconocido",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
+ "Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
+ "Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
+ "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
+ "Setting locale to %s failed" : "Se presentó una falla al establecer la regionalización a %s",
+ "Please install one of these locales on your system and restart your webserver." : "Por favor instala uno de las siguientes configuraciones locales en tu sistema y reinicia tu servidor web",
+ "Please ask your server administrator to install the module." : "Por favor solicita a tu adminsitrador la instalación del módulo. ",
+ "PHP module %s not installed." : "El módulo de PHP %s no está instalado. ",
+ "PHP setting \"%s\" is not set to \"%s\"." : "El ajuste PHP \"%s\" no esta establecido a \"%s\".",
+ "Adjusting this setting in php.ini will make Nextcloud run again" : "El cambiar este ajuste del archivo php.ini hará que Nextcloud corra de nuevo.",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload está establecido como \"%s\" en lugar del valor esperado de \"0\"",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Para corregir este tema, establece <code>mbstring.func_overload</code> a <code>0</code> en tu archivo php.ini",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "Se requiere de por lo menos libxml2 2.7.0. Actualmente %s está instalado. ",
+ "To fix this issue update your libxml2 version and restart your web server." : "Para corregir este tema, por favor actualiza la versión de su libxml2 y reinicia tu servidor web. ",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Al parecer PHP está configurado para quitar los bloques de comentarios internos. Esto hará que varias aplicaciones principales sean inaccesibles. ",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Esto ha sido causado probablemente por un acelerador de caché como Zend OPcache o eAccelerator.",
+ "PHP modules have been installed, but they are still listed as missing?" : "¿Los módulos de PHP han sido instalados, pero se siguen enlistando como faltantes?",
+ "Please ask your server administrator to restart the web server." : "Por favor solicita al administrador reiniciar el servidor web. ",
+ "PostgreSQL >= 9 required" : "Se requiere PostgreSQL >= 9",
+ "Please upgrade your database version" : "Por favor actualiza tu versión de la base de datos",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Por favor cambia los permisos a 0770 para que el directorio no pueda ser enlistado por otros usuarios. ",
+ "Your data directory is readable by other users" : "Tu direcctorio data puede ser leído por otros usuarios",
+ "Your data directory must be an absolute path" : "Tu directorio data debe ser una ruta absoluta",
+ "Check the value of \"datadirectory\" in your configuration" : "Verifica el valor de \"datadirectory\" en tu configuración",
+ "Your data directory is invalid" : "Tu directorio de datos es inválido",
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegurate de que exista una archivo llamado \".ocdata\" en la raíz del directorio de datos. ",
+ "Could not obtain lock type %d on \"%s\"." : "No fue posible obtener el tipo de bloqueo %d en \"%s\". ",
+ "Storage unauthorized. %s" : "Almacenamiento no autorizado. %s",
+ "Storage incomplete configuration. %s" : "Configuración incompleta del almacenamiento. %s",
+ "Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
+ "Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
+ "Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
+ "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Esto generalmente se soluciona %s dándole al servidor web acceso para escribir en el directorio config %s.",
+ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con id: %s no existe. Por favor habilítalo en tus configuraciones de aplicación o contacta a tu administrador. ",
+ "Server settings" : "Configuraciones del servidor",
+ "DB Error: \"%s\"" : "Error de BD: \"%s\"",
+ "Offending command was: \"%s\"" : "El comando infractor fue: \"%s\"",
+ "You need to enter either an existing account or the administrator." : "Necesitas ingresar una cuenta ya existente o la del administrador.",
+ "Offending command was: \"%s\", name: %s, password: %s" : "El comando infractor fue: \"%s\", nombre: %s, contraseña: %s",
+ "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al establecer los permisos para %s, porque los permisos exceden los permisos otorgados a %s",
+ "Setting permissions for %s failed, because the item was not found" : "Se persentó una falla al establecer los permisos para %s, porque no se encontró el elemento ",
+ "Cannot clear expiration date. Shares are required to have an expiration date." : "No ha sido posible borrar la fecha de expiración. Los elelentos compartidos deben tener una fecha de expiración.",
+ "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s",
+ "Files can't be shared with delete permissions" : "No es posible compartir archivos con permisos de borrado",
+ "Files can't be shared with create permissions" : "No es posible compartir archivos con permisos de creación",
+ "Cannot set expiration date more than %s days in the future" : "No es posible establecer la fecha de expiración más allá de %s días en el futuro",
+ "Personal" : "Personal",
+ "Admin" : "Administración",
+ "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Esto se puede arreglar por %s al darle acceso de escritura al servidor web al directorio de las aplicaciones %s o al deshabilitar la tienda de aplicaciones en el archivo de configuración",
+ "Cannot create \"data\" directory (%s)" : "No fue posible crear el directorio de \"datos\" (%s)",
+ "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Esto se puede arreglar generalmente al <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">darle al servidor web accesos al directorio raíz</a>.",
+ "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Los permisos se pueden arreglar generalmente al %s darle al servidor web accesos al direcotiro raíz %s.",
+ "Data directory (%s) is readable by other users" : "El directorio de datos (%s) puede ser leído por otros usuarios",
+ "Data directory (%s) must be an absolute path" : "El directorio de datos (%s) debe ser una ruta absoluta",
+ "Data directory (%s) is invalid" : "El directorio de datos (%s) es inválido",
+ "Please check that the data directory contains a file \".ocdata\" in its root." : "Por favor verifica que el directorio de datos tenga un archivo \".ocdata\" en su raíz. "
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/es_CO.json b/lib/l10n/es_CO.json
new file mode 100644
index 00000000000..0b6be27dfb5
--- /dev/null
+++ b/lib/l10n/es_CO.json
@@ -0,0 +1,257 @@
+{ "translations": {
+ "Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se resuelve dándole al servidor web acceso para escribir en el directorio config. ",
+ "See %s" : "Ver %s",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio config. Por favor ve %s",
+ "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Los archivos de la aplicación %$1s no fueron correctamente remplazados. Por favor asegúrarte de que la versión sea compatible con el servidor.",
+ "Sample configuration detected" : "Se ha detectado la configuración de muestra",
+ "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede arruiniar tu instalacón y no está soportado. Por favor lee la documentación antes de hacer cambios en el archivo config.php",
+ "%1$s and %2$s" : "%1$s y %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s y %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s y %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s y %5$s",
+ "Education Edition" : "Edición Educativa",
+ "Enterprise bundle" : "Paquete empresarial",
+ "Groupware bundle" : "Paquete de Groupware",
+ "Social sharing bundle" : "Paquete para compartir en redes sociales",
+ "PHP %s or higher is required." : "Se requiere de PHP %s o superior.",
+ "PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ",
+ "%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.",
+ "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s",
+ "The command line tool %s could not be found" : "No fue posible encontar la herramienta de línea de comando %s",
+ "The library %s is not available." : "La biblioteca %s no está disponible. ",
+ "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.",
+ "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ",
+ "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s",
+ "Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ",
+ "Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ",
+ "Unknown filetype" : "Tipo de archivo desconocido",
+ "Invalid image" : "Imagen inválida",
+ "Avatar image is not square" : "La imagen del avatar no es un cuadrado",
+ "today" : "hoy",
+ "tomorrow" : "mañana",
+ "yesterday" : "ayer",
+ "_in %n day_::_in %n days_" : ["en %n día","en %n días"],
+ "_%n day ago_::_%n days ago_" : ["hace %n día","hace %n días"],
+ "next month" : "próximo mes",
+ "last month" : "mes pasado",
+ "_in %n month_::_in %n months_" : ["en %n mes","en %n meses"],
+ "_%n month ago_::_%n months ago_" : ["Hace %n mes","Hace %n meses"],
+ "next year" : "próximo año",
+ "last year" : "año pasado",
+ "_in %n year_::_in %n years_" : ["en %n año","en %n años"],
+ "_%n year ago_::_%n years ago_" : ["hace %n año","hace %n años"],
+ "_in %n hour_::_in %n hours_" : ["en %n hora","en %n horas"],
+ "_%n hour ago_::_%n hours ago_" : ["Hace %n hora","Hace %n horas"],
+ "_in %n minute_::_in %n minutes_" : ["en %n minuto","en %n minutos"],
+ "_%n minute ago_::_%n minutes ago_" : ["Hace %n minuto","Hace %n minutos"],
+ "in a few seconds" : "en algunos segundos",
+ "seconds ago" : "hace segundos",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con ID: %sno existe. Por favor hablíitalo en tus configuraciones de aplicación o contacta a tu administrador. ",
+ "File name is a reserved word" : "Nombre de archivo es una palabra reservada",
+ "File name contains at least one invalid character" : "El nombre del archivo contiene al menos un caracter inválido",
+ "File name is too long" : "El nombre del archivo es demasiado largo",
+ "Dot files are not allowed" : "Los archivos Dot no están permitidos",
+ "Empty filename is not allowed" : "El uso de nombres de archivo vacíos no está permitido",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "La aplicación \"%s\" no puede ser instalada porque el archivo appinfo no se puede leer. ",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "La aplicación \"%s\" no puede ser instalada porque no es compatible con esta versión del servidor. ",
+ "This is an automatically sent email, please do not reply." : "Este es un correo enviado automáticamente, por favor no lo contestes. ",
+ "Help" : "Ayuda",
+ "Apps" : "Aplicaciones",
+ "Settings" : "Configuraciones",
+ "Log out" : "Salir",
+ "Users" : "Usuarios",
+ "APCu" : "APCu",
+ "Redis" : "Redis",
+ "Basic settings" : "Configuraciones básicas",
+ "Sharing" : "Compartiendo",
+ "Security" : "Seguridad",
+ "Encryption" : "Encripción",
+ "Additional settings" : "Configuraciones adicionales",
+ "Tips & tricks" : "Consejos & trucos",
+ "Personal info" : "Información personal",
+ "Sync clients" : "Sincronizar clientes",
+ "Unlimited" : "Ilimitado",
+ "__language_name__" : "Español (México)",
+ "Verifying" : "Verficando",
+ "Verifying …" : "Verficando ...",
+ "Verify" : "Verificar",
+ "%s enter the database username and name." : "%s ingresa el usuario y nombre de la base de datos",
+ "%s enter the database username." : "%s ingresa el nombre de usuario de la base de datos.",
+ "%s enter the database name." : "%s ingresar el nombre de la base de datos",
+ "%s you may not use dots in the database name" : "%s no puedes utilizar puntos en el nombre de la base de datos",
+ "Oracle connection could not be established" : "No fue posible establecer la conexión a Oracle",
+ "Oracle username and/or password not valid" : "Usuario y/o contraseña de Oracle inválidos",
+ "PostgreSQL username and/or password not valid" : "El Usuario y/o Contraseña de PostgreSQL inválido(s)",
+ "You need to enter details of an existing account." : "Necesitas ingresar los detalles de una cuenta existente.",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "OS X de Mac no está soportado y %s no funcionará correctamente en esta plataforma ¡Úsalo bajo tu propio riesgo!",
+ "For the best results, please consider using a GNU/Linux server instead." : "Para mejores resultados, por favor cosidera usar en su lugar un servidor GNU/Linux.",
+ "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Al parecer esta instancia %s está corriendo en un ambiente PHP de 32-bits y el open_basedir ha sido configurado en el archivo php.ini. Esto generará problemas con archivos de más de 4GB de tamaño y es altamente desalentado. ",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Por favor elimina el ajuste open_basedir de tu archivo php.ini o cambia a PHP de 64 bits. ",
+ "Set an admin username." : "Establecer un Usuario administrador",
+ "Set an admin password." : "Establecer la contraseña del administrador.",
+ "Can't create or write into the data directory %s" : "No es posible crear o escribir en el directorio de datos %s",
+ "Given database host is invalid and must not contain the port: %s" : "El servidor de base de datos ingresado es inválido y no debe contener el puerto: %s",
+ "Invalid Federated Cloud ID" : "ID Inválido",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i",
+ "Sharing %s failed, because the file does not exist" : "Se presentó una falla al compartir %s porque el archivo no existe",
+ "You are not allowed to share %s" : "No tienes permitido compartir %s",
+ "Sharing %s failed, because you can not share with yourself" : "Se presentó una falla al compartir %s, porque no puedes compartir contigo mismo",
+ "Sharing %s failed, because the user %s does not exist" : "Se presentó una falla al compartir %s porque el usuario %s no existe",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Se presentó una falla al compartir %s porque el usuario %s no es un miembro de ninguno de los grupos de los cuales %s es miembro",
+ "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya había sido compartido con %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Se presento una falla al compartir %s, porque este elemento ya ha sido compartido con el usuario %s",
+ "Sharing %s failed, because the group %s does not exist" : "Se presentó una falla al compartir %s, porque el grupo %s no existe",
+ "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Necesitas proporcionar una contraseña para crear una liga pública, sólo se permiten ligas protegidas. ",
+ "Sharing %s failed, because sharing with links is not allowed" : "Se presentó una falla al compartir %s porque no está permitido compartir con ligas",
+ "Not allowed to create a federated share with the same user" : "No está permitido crear un elemento compartido con el mismo usuario",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor sea inalcanzable por el momento",
+ "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos",
+ "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "El backend %s que comparte debe implementar la interface OCP\\Share_Backend",
+ "Sharing backend %s not found" : "No fue encontrado el Backend que comparte %s ",
+ "Sharing backend for %s not found" : "No fue encontrado el Backend que comparte para %s",
+ "Sharing failed, because the user %s is the original sharer" : "Se presentó una falla al compartir, porque el usuario %s es quien compartió originalmente",
+ "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s",
+ "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debído a que no se permite volver a compartir",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Se presentó una falla al compartir %s porque el backend que comparte %s no pudo encontrar su origen",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Se presentó una falla al compartir %s porque el archivo no se encontró en el caché de archivos",
+ "Can’t increase permissions of %s" : "No es posible incrementar los privilegios de %s",
+ "Files can’t be shared with delete permissions" : "Los archivos no se pueden compartir con permisos de borrado",
+ "Files can’t be shared with create permissions" : "Los archivos no se pueden compartir con permisos de creación",
+ "Expiration date is in the past" : "La fecha de expiración se encuentra en el pasado",
+ "Can’t set expiration date more than %s days in the future" : "No es posible establecer la fecha de expiración más allá de %s días en el futuro",
+ "%s shared »%s« with you" : "%s ha compartido »%s« contigo",
+ "%s shared »%s« with you." : "%s compartió contigo »%s«.",
+ "Click the button below to open it." : "Haz click en el botón inferior para abrirlo. ",
+ "Open »%s«" : "Abrir »%s«",
+ "%s via %s" : "%s por %s",
+ "The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe",
+ "Could not find category \"%s\"" : "No fue posible encontrar la categoria \"%s\"",
+ "Sunday" : "Domingo",
+ "Monday" : "Lunes",
+ "Tuesday" : "Martes",
+ "Wednesday" : "Miércoles",
+ "Thursday" : "Jueves",
+ "Friday" : "Viernes",
+ "Saturday" : "Sábado",
+ "Sun." : "Dom.",
+ "Mon." : "Lun.",
+ "Tue." : "Mar.",
+ "Wed." : "Mie.",
+ "Thu." : "Jue.",
+ "Fri." : "Vie.",
+ "Sat." : "Sab.",
+ "Su" : "Do",
+ "Mo" : "Lu",
+ "Tu" : "Ma",
+ "We" : "Mi",
+ "Th" : "Ju",
+ "Fr" : "Vi",
+ "Sa" : "Sa",
+ "January" : "Enero",
+ "February" : "Febrero",
+ "March" : "Marzo",
+ "April" : "Abril",
+ "May" : "Mayo",
+ "June" : "Junio",
+ "July" : "Julio",
+ "August" : "Agosto",
+ "September" : "Septiembre",
+ "October" : "Octubre",
+ "November" : "Noviembre",
+ "December" : "Diciembre",
+ "Jan." : "Ene.",
+ "Feb." : "Feb.",
+ "Mar." : "Mar.",
+ "Apr." : "Abr.",
+ "May." : "May.",
+ "Jun." : "Jun.",
+ "Jul." : "Jul.",
+ "Aug." : "Ago.",
+ "Sep." : "Sep.",
+ "Oct." : "Oct.",
+ "Nov." : "Nov.",
+ "Dec." : "Dic.",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Sólo se permiten los siguientes caracteres en el usuario: \"a-z\", \"A-Z\", \"0-9\" y \"_.@-'\"",
+ "A valid username must be provided" : "Debes proporcionar un nombre de usuario válido",
+ "Username contains whitespace at the beginning or at the end" : "El usuario contiene un espacio en blanco al inicio o al final",
+ "Username must not consist of dots only" : "El usuario no debe consistir de solo puntos. ",
+ "A valid password must be provided" : "Se debe proporcionar una contraseña válida",
+ "The username is already being used" : "Ese usuario ya está en uso",
+ "Could not create user" : "No fue posible crear el usuario",
+ "User disabled" : "Usuario deshabilitado",
+ "Login canceled by app" : "Inicio de sesión cancelado por la aplicación",
+ "No app name specified" : "No se ha especificado el nombre de la aplicación",
+ "App '%s' could not be installed!" : "¡La aplicación \"%s\" no pudo ser instalada!",
+ "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s ",
+ "a safe home for all your data" : "un lugar seguro para todos tus datos",
+ "File is currently busy, please try again later" : "El archivo se encuentra actualmente en uso, por favor intentalo más tarde. ",
+ "Can't read file" : "No se puede leer el archivo",
+ "Application is not enabled" : "La aplicación está deshabilitada",
+ "Authentication error" : "Error de autenticación",
+ "Token expired. Please reload page." : "La ficha ha expirado. Por favor recarga la página.",
+ "Unknown user" : "Ususario desconocido",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "No cuentas con controladores de base de datos (sqlite, mysql o postgresql) instalados. ",
+ "Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"",
+ "Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio de las aplicaciones o deshabilitando la appstore en el archivo config. Por favor ve %s",
+ "Cannot create \"data\" directory" : "No fue posible crear el directorio \"data\"",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Por lo general esto se puede resolver al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s",
+ "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Por lo general los permisos se pueden corregir al darle al servidor web acceso de escritura al directorio raíz. Por favor ve %s.",
+ "Setting locale to %s failed" : "Se presentó una falla al establecer la regionalización a %s",
+ "Please install one of these locales on your system and restart your webserver." : "Por favor instala uno de las siguientes configuraciones locales en tu sistema y reinicia tu servidor web",
+ "Please ask your server administrator to install the module." : "Por favor solicita a tu adminsitrador la instalación del módulo. ",
+ "PHP module %s not installed." : "El módulo de PHP %s no está instalado. ",
+ "PHP setting \"%s\" is not set to \"%s\"." : "El ajuste PHP \"%s\" no esta establecido a \"%s\".",
+ "Adjusting this setting in php.ini will make Nextcloud run again" : "El cambiar este ajuste del archivo php.ini hará que Nextcloud corra de nuevo.",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload está establecido como \"%s\" en lugar del valor esperado de \"0\"",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Para corregir este tema, establece <code>mbstring.func_overload</code> a <code>0</code> en tu archivo php.ini",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "Se requiere de por lo menos libxml2 2.7.0. Actualmente %s está instalado. ",
+ "To fix this issue update your libxml2 version and restart your web server." : "Para corregir este tema, por favor actualiza la versión de su libxml2 y reinicia tu servidor web. ",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Al parecer PHP está configurado para quitar los bloques de comentarios internos. Esto hará que varias aplicaciones principales sean inaccesibles. ",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Esto ha sido causado probablemente por un acelerador de caché como Zend OPcache o eAccelerator.",
+ "PHP modules have been installed, but they are still listed as missing?" : "¿Los módulos de PHP han sido instalados, pero se siguen enlistando como faltantes?",
+ "Please ask your server administrator to restart the web server." : "Por favor solicita al administrador reiniciar el servidor web. ",
+ "PostgreSQL >= 9 required" : "Se requiere PostgreSQL >= 9",
+ "Please upgrade your database version" : "Por favor actualiza tu versión de la base de datos",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Por favor cambia los permisos a 0770 para que el directorio no pueda ser enlistado por otros usuarios. ",
+ "Your data directory is readable by other users" : "Tu direcctorio data puede ser leído por otros usuarios",
+ "Your data directory must be an absolute path" : "Tu directorio data debe ser una ruta absoluta",
+ "Check the value of \"datadirectory\" in your configuration" : "Verifica el valor de \"datadirectory\" en tu configuración",
+ "Your data directory is invalid" : "Tu directorio de datos es inválido",
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Asegurate de que exista una archivo llamado \".ocdata\" en la raíz del directorio de datos. ",
+ "Could not obtain lock type %d on \"%s\"." : "No fue posible obtener el tipo de bloqueo %d en \"%s\". ",
+ "Storage unauthorized. %s" : "Almacenamiento no autorizado. %s",
+ "Storage incomplete configuration. %s" : "Configuración incompleta del almacenamiento. %s",
+ "Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s",
+ "Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible",
+ "Storage connection timeout. %s" : "El tiempo de la conexión del almacenamiento se agotó. %s",
+ "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Esto generalmente se soluciona %s dándole al servidor web acceso para escribir en el directorio config %s.",
+ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con id: %s no existe. Por favor habilítalo en tus configuraciones de aplicación o contacta a tu administrador. ",
+ "Server settings" : "Configuraciones del servidor",
+ "DB Error: \"%s\"" : "Error de BD: \"%s\"",
+ "Offending command was: \"%s\"" : "El comando infractor fue: \"%s\"",
+ "You need to enter either an existing account or the administrator." : "Necesitas ingresar una cuenta ya existente o la del administrador.",
+ "Offending command was: \"%s\", name: %s, password: %s" : "El comando infractor fue: \"%s\", nombre: %s, contraseña: %s",
+ "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al establecer los permisos para %s, porque los permisos exceden los permisos otorgados a %s",
+ "Setting permissions for %s failed, because the item was not found" : "Se persentó una falla al establecer los permisos para %s, porque no se encontró el elemento ",
+ "Cannot clear expiration date. Shares are required to have an expiration date." : "No ha sido posible borrar la fecha de expiración. Los elelentos compartidos deben tener una fecha de expiración.",
+ "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s",
+ "Files can't be shared with delete permissions" : "No es posible compartir archivos con permisos de borrado",
+ "Files can't be shared with create permissions" : "No es posible compartir archivos con permisos de creación",
+ "Cannot set expiration date more than %s days in the future" : "No es posible establecer la fecha de expiración más allá de %s días en el futuro",
+ "Personal" : "Personal",
+ "Admin" : "Administración",
+ "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Esto se puede arreglar por %s al darle acceso de escritura al servidor web al directorio de las aplicaciones %s o al deshabilitar la tienda de aplicaciones en el archivo de configuración",
+ "Cannot create \"data\" directory (%s)" : "No fue posible crear el directorio de \"datos\" (%s)",
+ "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Esto se puede arreglar generalmente al <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">darle al servidor web accesos al directorio raíz</a>.",
+ "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Los permisos se pueden arreglar generalmente al %s darle al servidor web accesos al direcotiro raíz %s.",
+ "Data directory (%s) is readable by other users" : "El directorio de datos (%s) puede ser leído por otros usuarios",
+ "Data directory (%s) must be an absolute path" : "El directorio de datos (%s) debe ser una ruta absoluta",
+ "Data directory (%s) is invalid" : "El directorio de datos (%s) es inválido",
+ "Please check that the data directory contains a file \".ocdata\" in its root." : "Por favor verifica que el directorio de datos tenga un archivo \".ocdata\" en su raíz. "
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/lib/l10n/fi.js b/lib/l10n/fi.js
index 70aaaaa4600..596daa27fce 100644
--- a/lib/l10n/fi.js
+++ b/lib/l10n/fi.js
@@ -60,6 +60,9 @@ OC.L10N.register(
"Sync clients" : "Synkronointisovellukset",
"Unlimited" : "Rajoittamaton",
"__language_name__" : "suomi",
+ "Verifying" : "Vahvistetaan",
+ "Verifying …" : "Vahvistetaan…",
+ "Verify" : "Vahvista",
"%s enter the database username and name." : "%s anna tietokannan käyttäjätunnus ja nimi.",
"%s enter the database username." : "%s anna tietokannan käyttäjätunnus.",
"%s enter the database name." : "%s anna tietokannan nimi.",
@@ -98,6 +101,9 @@ OC.L10N.register(
"Sharing %s failed, because the file could not be found in the file cache" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei löytynyt tiedostovälimuistista",
"Expiration date is in the past" : "Vanhenemispäivä on menneisyydessä",
"%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi",
+ "%s shared »%s« with you." : "%s jakoi kohteen »%s« kanssasi.",
+ "Click the button below to open it." : "Napsauta alla olevaa painiketta avataksesi sen.",
+ "Open »%s«" : "Avaa »%s«",
"Could not find category \"%s\"" : "Luokkaa \"%s\" ei löytynyt",
"Sunday" : "sunnuntai",
"Monday" : "maanantai",
@@ -150,6 +156,7 @@ OC.L10N.register(
"Username must not consist of dots only" : "Käyttäjänimi ei voi koostua vain pisteistä",
"A valid password must be provided" : "Anna kelvollinen salasana",
"The username is already being used" : "Käyttäjätunnus on jo käytössä",
+ "Could not create user" : "Ei voitu luoda käyttäjää",
"User disabled" : "Käyttäjä poistettu käytöstä",
"Login canceled by app" : "Kirjautuminen peruttiin sovelluksen toimesta",
"No app name specified" : "Sovelluksen nimeä ei määritelty",
diff --git a/lib/l10n/fi.json b/lib/l10n/fi.json
index 6cdb463d154..b29589b0773 100644
--- a/lib/l10n/fi.json
+++ b/lib/l10n/fi.json
@@ -58,6 +58,9 @@
"Sync clients" : "Synkronointisovellukset",
"Unlimited" : "Rajoittamaton",
"__language_name__" : "suomi",
+ "Verifying" : "Vahvistetaan",
+ "Verifying …" : "Vahvistetaan…",
+ "Verify" : "Vahvista",
"%s enter the database username and name." : "%s anna tietokannan käyttäjätunnus ja nimi.",
"%s enter the database username." : "%s anna tietokannan käyttäjätunnus.",
"%s enter the database name." : "%s anna tietokannan nimi.",
@@ -96,6 +99,9 @@
"Sharing %s failed, because the file could not be found in the file cache" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei löytynyt tiedostovälimuistista",
"Expiration date is in the past" : "Vanhenemispäivä on menneisyydessä",
"%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi",
+ "%s shared »%s« with you." : "%s jakoi kohteen »%s« kanssasi.",
+ "Click the button below to open it." : "Napsauta alla olevaa painiketta avataksesi sen.",
+ "Open »%s«" : "Avaa »%s«",
"Could not find category \"%s\"" : "Luokkaa \"%s\" ei löytynyt",
"Sunday" : "sunnuntai",
"Monday" : "maanantai",
@@ -148,6 +154,7 @@
"Username must not consist of dots only" : "Käyttäjänimi ei voi koostua vain pisteistä",
"A valid password must be provided" : "Anna kelvollinen salasana",
"The username is already being used" : "Käyttäjätunnus on jo käytössä",
+ "Could not create user" : "Ei voitu luoda käyttäjää",
"User disabled" : "Käyttäjä poistettu käytöstä",
"Login canceled by app" : "Kirjautuminen peruttiin sovelluksen toimesta",
"No app name specified" : "Sovelluksen nimeä ei määritelty",
diff --git a/lib/l10n/hu.js b/lib/l10n/hu.js
index 80ed2686702..9be41cefd60 100644
--- a/lib/l10n/hu.js
+++ b/lib/l10n/hu.js
@@ -33,17 +33,23 @@ OC.L10N.register(
"today" : "ma",
"tomorrow" : "holnap",
"yesterday" : "tegnap",
+ "_in %n day_::_in %n days_" : ["%n napon belül","%n napon belül"],
"_%n day ago_::_%n days ago_" : ["%n napja","%n napja"],
"next month" : "következő hónap",
"last month" : "múlt hónapban",
+ "_in %n month_::_in %n months_" : ["%n hónapon belül","%n hónapon belül"],
"_%n month ago_::_%n months ago_" : ["%n hónapja","%n hónapja"],
"next year" : "következő évben",
"last year" : "tavaly",
+ "_in %n year_::_in %n years_" : ["%n éven belül","%n éven belül"],
"_%n year ago_::_%n years ago_" : ["%n éve","%n éve"],
+ "_in %n hour_::_in %n hours_" : ["%n órán belül","%n órán belül"],
"_%n hour ago_::_%n hours ago_" : ["%n órája","%n órája"],
+ "_in %n minute_::_in %n minutes_" : ["%n percen belül","%n percen belül"],
"_%n minute ago_::_%n minutes ago_" : ["%n perce","%n perce"],
"in a few seconds" : "pár másodpercen belül",
"seconds ago" : "pár másodperce",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "A(z) %s azonosítójú modul nem létezik. Kérlek engedélyezd az app beállításaidban, vagy lépj kapcsolatba a rendszergazdával.",
"File name is a reserved word" : "A fajl neve egy rezervált szó",
"File name contains at least one invalid character" : "A fájlnév legalább egy érvénytelen karaktert tartalmaz!",
"File name is too long" : "A fájlnév túl hosszú!",
@@ -51,6 +57,7 @@ OC.L10N.register(
"Empty filename is not allowed" : "Üres fájlnév nem engedétlyezett",
"App \"%s\" cannot be installed because appinfo file cannot be read." : "\"%s\" alkalmazás nem lehet telepíteni, mert az appinfo fájl nem olvasható.",
"App \"%s\" cannot be installed because it is not compatible with this version of the server." : "\"%s\" alkalmazás nem lehet telepíteni, mert nem kompatibilis a szerver jelen verziójával.",
+ "This is an automatically sent email, please do not reply." : "Ez egy automatikusan küldött levél, kérlek ne válaszolj rá.",
"Help" : "Súgó",
"Apps" : "Alkalmazások",
"Settings" : "Beállítások",
@@ -78,6 +85,7 @@ OC.L10N.register(
"Oracle connection could not be established" : "Az Oracle kapcsolat nem hozható létre",
"Oracle username and/or password not valid" : "Az Oracle felhasználói név és/vagy jelszó érvénytelen",
"PostgreSQL username and/or password not valid" : "A PostgreSQL felhasználói név és/vagy jelszó érvénytelen",
+ "You need to enter details of an existing account." : "Egy már létező fiók adatait kell megadnod.",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "A Mac OS X nem támogatott és %s nem lesz teljesen működőképes. Csak saját felelősségre használja!",
"For the best results, please consider using a GNU/Linux server instead." : "A legjobb eredmény érdekében érdemes GNU/Linux-alapú szervert használni.",
"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." : "Úgy tűnik, hogy ez a %s példány 32-bites PHP környezetben fut és az open_basedir konfigurálva van a php.ini fájlban. Ez 4 GB-nál nagyobb fájlok esetén problémákat okozhat így erősen ellenjavallt.",
@@ -85,6 +93,7 @@ OC.L10N.register(
"Set an admin username." : "Állítson be egy felhasználói nevet az adminisztrációhoz.",
"Set an admin password." : "Állítson be egy jelszót az adminisztrációhoz.",
"Can't create or write into the data directory %s" : "Nem sikerült létrehozni vagy irni a \"data\" könyvtárba %s",
+ "Given database host is invalid and must not contain the port: %s" : "A megadott adatbázis host nem érvényes, nem tartalmazhatja a portot: %s",
"Invalid Federated Cloud ID" : "Érvénytelen Egyesített Felhő Azonosító",
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s megosztása sikertelen, mert a megosztási alrendszer nem engedi a %l típus megosztását",
"Sharing %s failed, because the file does not exist" : "%s megosztása sikertelen, mert a fájl nem létezik",
@@ -115,11 +124,13 @@ OC.L10N.register(
"Files can’t be shared with delete permissions" : "A fájlok nem megoszthatók törlési joggal",
"Files can’t be shared with create permissions" : "Fájlok nem oszthatók meg létrehozási joggal",
"Expiration date is in the past" : "A lejárati dátum már elmúlt",
+ "Can’t set expiration date more than %s days in the future" : "Nem lehet %s napnál későbbi lejáratot megadni",
"%s shared »%s« with you" : "%s megosztotta veled ezt: »%s«",
"%s shared »%s« with you." : "%s megosztotta »%s«-t veled.",
"Click the button below to open it." : "Kattintson a lenti gombra a megnyitáshoz.",
"Open »%s«" : "»%s« megnyitása",
"%s via %s" : "%s - %s",
+ "The requested share does not exist anymore" : "A kért megosztás már nem létezik",
"Could not find category \"%s\"" : "Ez a kategória nem található: \"%s\"",
"Sunday" : "Vasárnap",
"Monday" : "Hétfő",
@@ -169,8 +180,10 @@ OC.L10N.register(
"Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "A felhasználónévben csak a következő karakterek engedélyezettek: \"a-z\", \"A-Z\", \"0-9\", és \"_.@-'\"",
"A valid username must be provided" : "Érvényes felhasználónevet kell megadnia",
"Username contains whitespace at the beginning or at the end" : "A felhasználónév szóközt tartalmaz az elején vagy a végén",
+ "Username must not consist of dots only" : "A felhasználónév nem állhat csak pontokból",
"A valid password must be provided" : "Érvényes jelszót kell megadnia",
"The username is already being used" : "Ez a bejelentkezési név már foglalt",
+ "Could not create user" : "Nem sikerült létrehozni a felhasználót",
"User disabled" : "Felhasználó letiltva",
"Login canceled by app" : "Bejelentkezés megszakítva az alkalmazás által",
"No app name specified" : "Nincs az alkalmazás név megadva.",
@@ -186,7 +199,10 @@ OC.L10N.register(
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nincs telepítve adatbázis-meghajtóprogram (sqlite, mysql vagy postgresql).",
"Cannot write into \"config\" directory" : "Nem írható a \"config\" könyvtár",
"Cannot write into \"apps\" directory" : "Nem írható az \"apps\" könyvtár",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ez legtöbbször megoldható az app mappára a webszervernek adott írási joggal, vagy a config fájlban az alkalmazástár letiltásával. Lásd: %s",
"Cannot create \"data\" directory" : "\"data\" mappa nem hozható létre",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Ez legtöbbször megoldható a gyökér mappára a webszervernek adott írási joggal. Lásd: %s",
+ "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Ez legtöbbször megoldható a gyökér mappára a webszervernek adott írási joggal. Lásd: %s.",
"Setting locale to %s failed" : "A lokalizáció %s-re való állítása nem sikerült",
"Please install one of these locales on your system and restart your webserver." : "Kérjük állítsa be a következő lokalizációk valamelyikét a rendszeren és indítsa újra a webszervert!",
"Please ask your server administrator to install the module." : "Kérje meg a rendszergazdát, hogy telepítse a modult!",
@@ -208,6 +224,7 @@ OC.L10N.register(
"Your data directory must be an absolute path" : "Az adatkönyvtára abszolút útvonal kell legyen",
"Check the value of \"datadirectory\" in your configuration" : "Ellenőrizd a \"datadirectory\" értékét a konfigurációban",
"Your data directory is invalid" : "Az adatkönyvtárad érvénytelen",
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Győződj meg róla, hogy az adatmappa gyökerében legyen egy \".ocdata\" nevű fájl",
"Could not obtain lock type %d on \"%s\"." : "Nem sikerült %d típusú zárolást elérni itt: \"%s\".",
"Storage unauthorized. %s" : "A tároló jogosulatlan. %s",
"Storage incomplete configuration. %s" : "A tároló beállítása nem teljes. %s",
diff --git a/lib/l10n/hu.json b/lib/l10n/hu.json
index 31542fa6ca3..ca74529e40f 100644
--- a/lib/l10n/hu.json
+++ b/lib/l10n/hu.json
@@ -31,17 +31,23 @@
"today" : "ma",
"tomorrow" : "holnap",
"yesterday" : "tegnap",
+ "_in %n day_::_in %n days_" : ["%n napon belül","%n napon belül"],
"_%n day ago_::_%n days ago_" : ["%n napja","%n napja"],
"next month" : "következő hónap",
"last month" : "múlt hónapban",
+ "_in %n month_::_in %n months_" : ["%n hónapon belül","%n hónapon belül"],
"_%n month ago_::_%n months ago_" : ["%n hónapja","%n hónapja"],
"next year" : "következő évben",
"last year" : "tavaly",
+ "_in %n year_::_in %n years_" : ["%n éven belül","%n éven belül"],
"_%n year ago_::_%n years ago_" : ["%n éve","%n éve"],
+ "_in %n hour_::_in %n hours_" : ["%n órán belül","%n órán belül"],
"_%n hour ago_::_%n hours ago_" : ["%n órája","%n órája"],
+ "_in %n minute_::_in %n minutes_" : ["%n percen belül","%n percen belül"],
"_%n minute ago_::_%n minutes ago_" : ["%n perce","%n perce"],
"in a few seconds" : "pár másodpercen belül",
"seconds ago" : "pár másodperce",
+ "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "A(z) %s azonosítójú modul nem létezik. Kérlek engedélyezd az app beállításaidban, vagy lépj kapcsolatba a rendszergazdával.",
"File name is a reserved word" : "A fajl neve egy rezervált szó",
"File name contains at least one invalid character" : "A fájlnév legalább egy érvénytelen karaktert tartalmaz!",
"File name is too long" : "A fájlnév túl hosszú!",
@@ -49,6 +55,7 @@
"Empty filename is not allowed" : "Üres fájlnév nem engedétlyezett",
"App \"%s\" cannot be installed because appinfo file cannot be read." : "\"%s\" alkalmazás nem lehet telepíteni, mert az appinfo fájl nem olvasható.",
"App \"%s\" cannot be installed because it is not compatible with this version of the server." : "\"%s\" alkalmazás nem lehet telepíteni, mert nem kompatibilis a szerver jelen verziójával.",
+ "This is an automatically sent email, please do not reply." : "Ez egy automatikusan küldött levél, kérlek ne válaszolj rá.",
"Help" : "Súgó",
"Apps" : "Alkalmazások",
"Settings" : "Beállítások",
@@ -76,6 +83,7 @@
"Oracle connection could not be established" : "Az Oracle kapcsolat nem hozható létre",
"Oracle username and/or password not valid" : "Az Oracle felhasználói név és/vagy jelszó érvénytelen",
"PostgreSQL username and/or password not valid" : "A PostgreSQL felhasználói név és/vagy jelszó érvénytelen",
+ "You need to enter details of an existing account." : "Egy már létező fiók adatait kell megadnod.",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "A Mac OS X nem támogatott és %s nem lesz teljesen működőképes. Csak saját felelősségre használja!",
"For the best results, please consider using a GNU/Linux server instead." : "A legjobb eredmény érdekében érdemes GNU/Linux-alapú szervert használni.",
"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." : "Úgy tűnik, hogy ez a %s példány 32-bites PHP környezetben fut és az open_basedir konfigurálva van a php.ini fájlban. Ez 4 GB-nál nagyobb fájlok esetén problémákat okozhat így erősen ellenjavallt.",
@@ -83,6 +91,7 @@
"Set an admin username." : "Állítson be egy felhasználói nevet az adminisztrációhoz.",
"Set an admin password." : "Állítson be egy jelszót az adminisztrációhoz.",
"Can't create or write into the data directory %s" : "Nem sikerült létrehozni vagy irni a \"data\" könyvtárba %s",
+ "Given database host is invalid and must not contain the port: %s" : "A megadott adatbázis host nem érvényes, nem tartalmazhatja a portot: %s",
"Invalid Federated Cloud ID" : "Érvénytelen Egyesített Felhő Azonosító",
"Sharing %s failed, because the backend does not allow shares from type %i" : "%s megosztása sikertelen, mert a megosztási alrendszer nem engedi a %l típus megosztását",
"Sharing %s failed, because the file does not exist" : "%s megosztása sikertelen, mert a fájl nem létezik",
@@ -113,11 +122,13 @@
"Files can’t be shared with delete permissions" : "A fájlok nem megoszthatók törlési joggal",
"Files can’t be shared with create permissions" : "Fájlok nem oszthatók meg létrehozási joggal",
"Expiration date is in the past" : "A lejárati dátum már elmúlt",
+ "Can’t set expiration date more than %s days in the future" : "Nem lehet %s napnál későbbi lejáratot megadni",
"%s shared »%s« with you" : "%s megosztotta veled ezt: »%s«",
"%s shared »%s« with you." : "%s megosztotta »%s«-t veled.",
"Click the button below to open it." : "Kattintson a lenti gombra a megnyitáshoz.",
"Open »%s«" : "»%s« megnyitása",
"%s via %s" : "%s - %s",
+ "The requested share does not exist anymore" : "A kért megosztás már nem létezik",
"Could not find category \"%s\"" : "Ez a kategória nem található: \"%s\"",
"Sunday" : "Vasárnap",
"Monday" : "Hétfő",
@@ -167,8 +178,10 @@
"Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "A felhasználónévben csak a következő karakterek engedélyezettek: \"a-z\", \"A-Z\", \"0-9\", és \"_.@-'\"",
"A valid username must be provided" : "Érvényes felhasználónevet kell megadnia",
"Username contains whitespace at the beginning or at the end" : "A felhasználónév szóközt tartalmaz az elején vagy a végén",
+ "Username must not consist of dots only" : "A felhasználónév nem állhat csak pontokból",
"A valid password must be provided" : "Érvényes jelszót kell megadnia",
"The username is already being used" : "Ez a bejelentkezési név már foglalt",
+ "Could not create user" : "Nem sikerült létrehozni a felhasználót",
"User disabled" : "Felhasználó letiltva",
"Login canceled by app" : "Bejelentkezés megszakítva az alkalmazás által",
"No app name specified" : "Nincs az alkalmazás név megadva.",
@@ -184,7 +197,10 @@
"No database drivers (sqlite, mysql, or postgresql) installed." : "Nincs telepítve adatbázis-meghajtóprogram (sqlite, mysql vagy postgresql).",
"Cannot write into \"config\" directory" : "Nem írható a \"config\" könyvtár",
"Cannot write into \"apps\" directory" : "Nem írható az \"apps\" könyvtár",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "Ez legtöbbször megoldható az app mappára a webszervernek adott írási joggal, vagy a config fájlban az alkalmazástár letiltásával. Lásd: %s",
"Cannot create \"data\" directory" : "\"data\" mappa nem hozható létre",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Ez legtöbbször megoldható a gyökér mappára a webszervernek adott írási joggal. Lásd: %s",
+ "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "Ez legtöbbször megoldható a gyökér mappára a webszervernek adott írási joggal. Lásd: %s.",
"Setting locale to %s failed" : "A lokalizáció %s-re való állítása nem sikerült",
"Please install one of these locales on your system and restart your webserver." : "Kérjük állítsa be a következő lokalizációk valamelyikét a rendszeren és indítsa újra a webszervert!",
"Please ask your server administrator to install the module." : "Kérje meg a rendszergazdát, hogy telepítse a modult!",
@@ -206,6 +222,7 @@
"Your data directory must be an absolute path" : "Az adatkönyvtára abszolút útvonal kell legyen",
"Check the value of \"datadirectory\" in your configuration" : "Ellenőrizd a \"datadirectory\" értékét a konfigurációban",
"Your data directory is invalid" : "Az adatkönyvtárad érvénytelen",
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "Győződj meg róla, hogy az adatmappa gyökerében legyen egy \".ocdata\" nevű fájl",
"Could not obtain lock type %d on \"%s\"." : "Nem sikerült %d típusú zárolást elérni itt: \"%s\".",
"Storage unauthorized. %s" : "A tároló jogosulatlan. %s",
"Storage incomplete configuration. %s" : "A tároló beállítása nem teljes. %s",
diff --git a/lib/l10n/is.js b/lib/l10n/is.js
index 155f3d56a3a..7f3dc4a7075 100644
--- a/lib/l10n/is.js
+++ b/lib/l10n/is.js
@@ -31,14 +31,23 @@ OC.L10N.register(
"Invalid image" : "Ógild mynd",
"Avatar image is not square" : "Auðkennismynd er ekki ferningslaga",
"today" : "í dag",
+ "tomorrow" : "á morgun",
"yesterday" : "í gær",
+ "_in %n day_::_in %n days_" : ["eftir %n dag","eftir %n daga"],
"_%n day ago_::_%n days ago_" : ["fyrir %n degi síðan","fyrir %n dögum síðan"],
+ "next month" : "í næsta mánuði",
"last month" : "í síðasta mánuði",
+ "_in %n month_::_in %n months_" : ["eftir %n mánuð","eftir %n mánuði"],
"_%n month ago_::_%n months ago_" : ["fyrir %n mánuði","fyrir %n mánuðum"],
+ "next year" : "á næsta ári",
"last year" : "síðasta ári",
+ "_in %n year_::_in %n years_" : ["eftir %n ár","eftir %n ár"],
"_%n year ago_::_%n years ago_" : ["fyrir %n degi síðan","fyrir %n árum síðan"],
+ "_in %n hour_::_in %n hours_" : ["eftir %n klukkustund","eftir %n klukkustundir"],
"_%n hour ago_::_%n hours ago_" : ["fyrir %n klukkustund síðan","fyrir %n klukkustundum síðan"],
+ "_in %n minute_::_in %n minutes_" : ["eftir %n mínútu","eftir %n mínútur"],
"_%n minute ago_::_%n minutes ago_" : ["fyrir %n mínútu síðan","fyrir %n mínútum síðan"],
+ "in a few seconds" : "eftir örfáar sekúndur",
"seconds ago" : "sekúndum síðan",
"Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Eining með auðkenni: %s er ekki til. Virkjaðu hana í forritastillingum eða hafðu samband við kerfisstjóra.",
"File name is a reserved word" : "Skráarheiti er þegar frátekið orð",
@@ -84,6 +93,7 @@ OC.L10N.register(
"Set an admin username." : "Stilltu notandanafn kerfisstjóra.",
"Set an admin password." : "Stilltu lykilorð kerfisstjóra.",
"Can't create or write into the data directory %s" : "Gat ekki búið til eða skrifað í gagnamöppuna %s",
+ "Given database host is invalid and must not contain the port: %s" : "Uppgefinn hýsill gagnagrunns er ógildur og má ekki innihalda gáttina: %s",
"Invalid Federated Cloud ID" : "Ógilt skýjasambandsauðkenni (Federated Cloud ID)",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Deiling %s mistókst, því bakvinnslukerfið leyfir ekki sameignir af gerðinni %i",
"Sharing %s failed, because the file does not exist" : "Deiling %s mistókst, því skráin er ekki til",
diff --git a/lib/l10n/is.json b/lib/l10n/is.json
index f106f993f88..ca3c9f19e41 100644
--- a/lib/l10n/is.json
+++ b/lib/l10n/is.json
@@ -29,14 +29,23 @@
"Invalid image" : "Ógild mynd",
"Avatar image is not square" : "Auðkennismynd er ekki ferningslaga",
"today" : "í dag",
+ "tomorrow" : "á morgun",
"yesterday" : "í gær",
+ "_in %n day_::_in %n days_" : ["eftir %n dag","eftir %n daga"],
"_%n day ago_::_%n days ago_" : ["fyrir %n degi síðan","fyrir %n dögum síðan"],
+ "next month" : "í næsta mánuði",
"last month" : "í síðasta mánuði",
+ "_in %n month_::_in %n months_" : ["eftir %n mánuð","eftir %n mánuði"],
"_%n month ago_::_%n months ago_" : ["fyrir %n mánuði","fyrir %n mánuðum"],
+ "next year" : "á næsta ári",
"last year" : "síðasta ári",
+ "_in %n year_::_in %n years_" : ["eftir %n ár","eftir %n ár"],
"_%n year ago_::_%n years ago_" : ["fyrir %n degi síðan","fyrir %n árum síðan"],
+ "_in %n hour_::_in %n hours_" : ["eftir %n klukkustund","eftir %n klukkustundir"],
"_%n hour ago_::_%n hours ago_" : ["fyrir %n klukkustund síðan","fyrir %n klukkustundum síðan"],
+ "_in %n minute_::_in %n minutes_" : ["eftir %n mínútu","eftir %n mínútur"],
"_%n minute ago_::_%n minutes ago_" : ["fyrir %n mínútu síðan","fyrir %n mínútum síðan"],
+ "in a few seconds" : "eftir örfáar sekúndur",
"seconds ago" : "sekúndum síðan",
"Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Eining með auðkenni: %s er ekki til. Virkjaðu hana í forritastillingum eða hafðu samband við kerfisstjóra.",
"File name is a reserved word" : "Skráarheiti er þegar frátekið orð",
@@ -82,6 +91,7 @@
"Set an admin username." : "Stilltu notandanafn kerfisstjóra.",
"Set an admin password." : "Stilltu lykilorð kerfisstjóra.",
"Can't create or write into the data directory %s" : "Gat ekki búið til eða skrifað í gagnamöppuna %s",
+ "Given database host is invalid and must not contain the port: %s" : "Uppgefinn hýsill gagnagrunns er ógildur og má ekki innihalda gáttina: %s",
"Invalid Federated Cloud ID" : "Ógilt skýjasambandsauðkenni (Federated Cloud ID)",
"Sharing %s failed, because the backend does not allow shares from type %i" : "Deiling %s mistókst, því bakvinnslukerfið leyfir ekki sameignir af gerðinni %i",
"Sharing %s failed, because the file does not exist" : "Deiling %s mistókst, því skráin er ekki til",
diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js
index 20965576b7b..888a99486bd 100644
--- a/lib/l10n/pl.js
+++ b/lib/l10n/pl.js
@@ -31,14 +31,18 @@ OC.L10N.register(
"Invalid image" : "Błędne zdjęcie",
"Avatar image is not square" : "Obraz awataru nie jest kwadratowy",
"today" : "dziś",
+ "tomorrow" : "jutro",
"yesterday" : "wczoraj",
"_%n day ago_::_%n days ago_" : ["%d dzień temu","%n dni temu","%n dni temu","%n dni temu"],
+ "next month" : "następny miesiąc",
"last month" : "w zeszłym miesiącu",
"_%n month ago_::_%n months ago_" : ["%n miesiąc temu","%n miesięcy temu","%n miesięcy temu","%n miesięcy temu"],
+ "next year" : "następny rok",
"last year" : "w zeszłym roku",
"_%n year ago_::_%n years ago_" : ["%n rok temu","%n lata temu","%n lat temu","%n lat temu"],
"_%n hour ago_::_%n hours ago_" : ["%n godzinę temu","%n godzin temu","%n godzin temu","%n godzin temu"],
"_%n minute ago_::_%n minutes ago_" : ["%n minute temu","%n minut temu","%n minut temu","%n minut temu"],
+ "in a few seconds" : "w ciągu kilku sekund",
"seconds ago" : "sekund temu",
"Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduł o ID: %s nie istnieje. Proszę włącz go w ustawieniach aplikacji lub skontaktuj się z administratorem.",
"File name is a reserved word" : "Nazwa pliku jest zarezerwowana",
diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json
index 6d4a34b7c6b..4cbac5a5cc4 100644
--- a/lib/l10n/pl.json
+++ b/lib/l10n/pl.json
@@ -29,14 +29,18 @@
"Invalid image" : "Błędne zdjęcie",
"Avatar image is not square" : "Obraz awataru nie jest kwadratowy",
"today" : "dziś",
+ "tomorrow" : "jutro",
"yesterday" : "wczoraj",
"_%n day ago_::_%n days ago_" : ["%d dzień temu","%n dni temu","%n dni temu","%n dni temu"],
+ "next month" : "następny miesiąc",
"last month" : "w zeszłym miesiącu",
"_%n month ago_::_%n months ago_" : ["%n miesiąc temu","%n miesięcy temu","%n miesięcy temu","%n miesięcy temu"],
+ "next year" : "następny rok",
"last year" : "w zeszłym roku",
"_%n year ago_::_%n years ago_" : ["%n rok temu","%n lata temu","%n lat temu","%n lat temu"],
"_%n hour ago_::_%n hours ago_" : ["%n godzinę temu","%n godzin temu","%n godzin temu","%n godzin temu"],
"_%n minute ago_::_%n minutes ago_" : ["%n minute temu","%n minut temu","%n minut temu","%n minut temu"],
+ "in a few seconds" : "w ciągu kilku sekund",
"seconds ago" : "sekund temu",
"Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduł o ID: %s nie istnieje. Proszę włącz go w ustawieniach aplikacji lub skontaktuj się z administratorem.",
"File name is a reserved word" : "Nazwa pliku jest zarezerwowana",
diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js
index 109c0f66938..286a28ff072 100644
--- a/lib/l10n/ru.js
+++ b/lib/l10n/ru.js
@@ -31,14 +31,23 @@ OC.L10N.register(
"Invalid image" : "Изображение повреждено",
"Avatar image is not square" : "Изображение аватара не квадратное",
"today" : "сегодня",
+ "tomorrow" : "завтра",
"yesterday" : "вчера",
+ "_in %n day_::_in %n days_" : ["через %n день","через %n дня","через %n дней","через %n день"],
"_%n day ago_::_%n days ago_" : ["%n день назад","%n дня назад","%n дней назад","%n дней назад"],
+ "next month" : "следующий месяц",
"last month" : "в прошлом месяце",
+ "_in %n month_::_in %n months_" : ["через %n месяц","через %n месяца","через %n месяцев","через %n месяц"],
"_%n month ago_::_%n months ago_" : ["%n месяц назад","%n месяца назад","%n месяцев назад","%n месяцев назад"],
+ "next year" : "следующий год",
"last year" : "в прошлом году",
+ "_in %n year_::_in %n years_" : ["через %n год","через %n года","через %n лет","через %n год"],
"_%n year ago_::_%n years ago_" : ["%n год назад","%n года назад","%n лет назад","%n лет назад"],
+ "_in %n hour_::_in %n hours_" : ["через %n час","через %n часа","через %n часов","через %n час"],
"_%n hour ago_::_%n hours ago_" : ["%n час назад","%n часа назад","%n часов назад","%n часов назад"],
+ "_in %n minute_::_in %n minutes_" : ["через %n минуту","через %n минуты","через %n минут","через %n минуту"],
"_%n minute ago_::_%n minutes ago_" : ["%n минута назад","%n минуты назад","%n минут назад","%n минут назад"],
+ "in a few seconds" : "через несколько секунд",
"seconds ago" : "менее минуты",
"Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Модуль с ID «%s» не существует. Включите его в настройках приложений или обратитесь к администратору.",
"File name is a reserved word" : "Имя файла является зарезервированным словом",
diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json
index 553aa793810..127e31de0b4 100644
--- a/lib/l10n/ru.json
+++ b/lib/l10n/ru.json
@@ -29,14 +29,23 @@
"Invalid image" : "Изображение повреждено",
"Avatar image is not square" : "Изображение аватара не квадратное",
"today" : "сегодня",
+ "tomorrow" : "завтра",
"yesterday" : "вчера",
+ "_in %n day_::_in %n days_" : ["через %n день","через %n дня","через %n дней","через %n день"],
"_%n day ago_::_%n days ago_" : ["%n день назад","%n дня назад","%n дней назад","%n дней назад"],
+ "next month" : "следующий месяц",
"last month" : "в прошлом месяце",
+ "_in %n month_::_in %n months_" : ["через %n месяц","через %n месяца","через %n месяцев","через %n месяц"],
"_%n month ago_::_%n months ago_" : ["%n месяц назад","%n месяца назад","%n месяцев назад","%n месяцев назад"],
+ "next year" : "следующий год",
"last year" : "в прошлом году",
+ "_in %n year_::_in %n years_" : ["через %n год","через %n года","через %n лет","через %n год"],
"_%n year ago_::_%n years ago_" : ["%n год назад","%n года назад","%n лет назад","%n лет назад"],
+ "_in %n hour_::_in %n hours_" : ["через %n час","через %n часа","через %n часов","через %n час"],
"_%n hour ago_::_%n hours ago_" : ["%n час назад","%n часа назад","%n часов назад","%n часов назад"],
+ "_in %n minute_::_in %n minutes_" : ["через %n минуту","через %n минуты","через %n минут","через %n минуту"],
"_%n minute ago_::_%n minutes ago_" : ["%n минута назад","%n минуты назад","%n минут назад","%n минут назад"],
+ "in a few seconds" : "через несколько секунд",
"seconds ago" : "менее минуты",
"Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Модуль с ID «%s» не существует. Включите его в настройках приложений или обратитесь к администратору.",
"File name is a reserved word" : "Имя файла является зарезервированным словом",
diff --git a/lib/l10n/sv.js b/lib/l10n/sv.js
index 364b64aa550..60b29183d4b 100644
--- a/lib/l10n/sv.js
+++ b/lib/l10n/sv.js
@@ -31,6 +31,7 @@ OC.L10N.register(
"Invalid image" : "Ogiltig bild",
"Avatar image is not square" : "Profilbilden är inte fyrkantig",
"today" : "i dag",
+ "tomorrow" : "i morgon",
"yesterday" : "i går",
"_%n day ago_::_%n days ago_" : ["%n dag sedan","%n dagar sedan"],
"last month" : "förra månaden",
diff --git a/lib/l10n/sv.json b/lib/l10n/sv.json
index 1b599ae3e96..36a182c26dd 100644
--- a/lib/l10n/sv.json
+++ b/lib/l10n/sv.json
@@ -29,6 +29,7 @@
"Invalid image" : "Ogiltig bild",
"Avatar image is not square" : "Profilbilden är inte fyrkantig",
"today" : "i dag",
+ "tomorrow" : "i morgon",
"yesterday" : "i går",
"_%n day ago_::_%n days ago_" : ["%n dag sedan","%n dagar sedan"],
"last month" : "förra månaden",
diff --git a/lib/l10n/zh_TW.js b/lib/l10n/zh_TW.js
index 55ebf18c052..be68a268db4 100644
--- a/lib/l10n/zh_TW.js
+++ b/lib/l10n/zh_TW.js
@@ -7,6 +7,8 @@ OC.L10N.register(
"This can usually be fixed by giving the webserver write access to the config directory. See %s" : "允許網頁伺服器寫入 \"config\" 目錄通常可以解決這個問題,詳見 %s",
"Sample configuration detected" : "偵測到範本設定",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "看來您直接複製了範本設定來使用,這可能會毀掉你的安裝,請閱讀說明文件後對 config.php 進行適當的修改",
+ "%1$s and %2$s" : "%1$s 和 %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s 和 %3$s",
"PHP %s or higher is required." : "需要 PHP %s 或更高版本",
"PHP with a version lower than %s is required." : "需要 PHP 版本低於 %s ",
"%sbit or higher PHP required." : "%s 或需要更高階版本的php",
@@ -22,10 +24,15 @@ OC.L10N.register(
"Invalid image" : "無效的圖片",
"Avatar image is not square" : "頭像不是正方形",
"today" : "今天",
+ "tomorrow" : "明天",
"yesterday" : "昨天",
+ "_in %n day_::_in %n days_" : ["在 %n 天內"],
"_%n day ago_::_%n days ago_" : ["%n 天前"],
+ "next month" : "下個月",
"last month" : "上個月",
+ "_in %n month_::_in %n months_" : ["在 %n 月內"],
"_%n month ago_::_%n months ago_" : ["%n 個月前"],
+ "next year" : "明年",
"last year" : "去年",
"_%n year ago_::_%n years ago_" : ["%n 幾年前"],
"_%n hour ago_::_%n hours ago_" : ["%n 小時前"],
diff --git a/lib/l10n/zh_TW.json b/lib/l10n/zh_TW.json
index 103d0e25965..519ca314b93 100644
--- a/lib/l10n/zh_TW.json
+++ b/lib/l10n/zh_TW.json
@@ -5,6 +5,8 @@
"This can usually be fixed by giving the webserver write access to the config directory. See %s" : "允許網頁伺服器寫入 \"config\" 目錄通常可以解決這個問題,詳見 %s",
"Sample configuration detected" : "偵測到範本設定",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "看來您直接複製了範本設定來使用,這可能會毀掉你的安裝,請閱讀說明文件後對 config.php 進行適當的修改",
+ "%1$s and %2$s" : "%1$s 和 %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s 和 %3$s",
"PHP %s or higher is required." : "需要 PHP %s 或更高版本",
"PHP with a version lower than %s is required." : "需要 PHP 版本低於 %s ",
"%sbit or higher PHP required." : "%s 或需要更高階版本的php",
@@ -20,10 +22,15 @@
"Invalid image" : "無效的圖片",
"Avatar image is not square" : "頭像不是正方形",
"today" : "今天",
+ "tomorrow" : "明天",
"yesterday" : "昨天",
+ "_in %n day_::_in %n days_" : ["在 %n 天內"],
"_%n day ago_::_%n days ago_" : ["%n 天前"],
+ "next month" : "下個月",
"last month" : "上個月",
+ "_in %n month_::_in %n months_" : ["在 %n 月內"],
"_%n month ago_::_%n months ago_" : ["%n 個月前"],
+ "next year" : "明年",
"last year" : "去年",
"_%n year ago_::_%n years ago_" : ["%n 幾年前"],
"_%n hour ago_::_%n hours ago_" : ["%n 小時前"],
diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php
index 2290f0d0045..0ea7eed4ae2 100644
--- a/lib/private/AppFramework/DependencyInjection/DIContainer.php
+++ b/lib/private/AppFramework/DependencyInjection/DIContainer.php
@@ -230,7 +230,8 @@ class DIContainer extends SimpleContainer implements IAppContainer {
$app->isAdminUser(),
$server->getContentSecurityPolicyManager(),
$server->getCsrfTokenManager(),
- $server->getContentSecurityPolicyNonceManager()
+ $server->getContentSecurityPolicyNonceManager(),
+ $server->getAppManager()
);
});
diff --git a/lib/private/AppFramework/Http.php b/lib/private/AppFramework/Http.php
index 526509a4583..be1e178a05f 100644
--- a/lib/private/AppFramework/Http.php
+++ b/lib/private/AppFramework/Http.php
@@ -111,7 +111,7 @@ class Http extends BaseHttp {
/**
* Gets the correct header
- * @param Http::CONSTANT $status the constant from the Http class
+ * @param int Http::CONSTANT $status the constant from the Http class
* @param \DateTime $lastModified formatted last modified date
* @param string $ETag the etag
* @return string
diff --git a/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php b/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php
index 4e41c946432..52004987909 100644
--- a/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php
+++ b/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php
@@ -39,6 +39,7 @@ use OC\AppFramework\Utility\ControllerMethodReflector;
use OC\Security\CSP\ContentSecurityPolicyManager;
use OC\Security\CSP\ContentSecurityPolicyNonceManager;
use OC\Security\CSRF\CsrfTokenManager;
+use OCP\App\IAppManager;
use OCP\AppFramework\Http\ContentSecurityPolicy;
use OCP\AppFramework\Http\EmptyContentSecurityPolicy;
use OCP\AppFramework\Http\RedirectResponse;
@@ -87,6 +88,8 @@ class SecurityMiddleware extends Middleware {
private $csrfTokenManager;
/** @var ContentSecurityPolicyNonceManager */
private $cspNonceManager;
+ /** @var IAppManager */
+ private $appManager;
/**
* @param IRequest $request
@@ -101,6 +104,7 @@ class SecurityMiddleware extends Middleware {
* @param ContentSecurityPolicyManager $contentSecurityPolicyManager
* @param CSRFTokenManager $csrfTokenManager
* @param ContentSecurityPolicyNonceManager $cspNonceManager
+ * @param IAppManager $appManager
*/
public function __construct(IRequest $request,
ControllerMethodReflector $reflector,
@@ -113,7 +117,8 @@ class SecurityMiddleware extends Middleware {
$isAdminUser,
ContentSecurityPolicyManager $contentSecurityPolicyManager,
CsrfTokenManager $csrfTokenManager,
- ContentSecurityPolicyNonceManager $cspNonceManager) {
+ ContentSecurityPolicyNonceManager $cspNonceManager,
+ IAppManager $appManager) {
$this->navigationManager = $navigationManager;
$this->request = $request;
$this->reflector = $reflector;
@@ -126,6 +131,7 @@ class SecurityMiddleware extends Middleware {
$this->contentSecurityPolicyManager = $contentSecurityPolicyManager;
$this->csrfTokenManager = $csrfTokenManager;
$this->cspNonceManager = $cspNonceManager;
+ $this->appManager = $appManager;
}
/**
@@ -190,7 +196,7 @@ class SecurityMiddleware extends Middleware {
* The getAppPath() check is here since components such as settings also use the AppFramework and
* therefore won't pass this check.
*/
- if(\OC_App::getAppPath($this->appName) !== false && !\OC_App::isEnabled($this->appName)) {
+ if(\OC_App::getAppPath($this->appName) !== false && !$this->appManager->isEnabledForUser($this->appName)) {
throw new AppNotEnabledException();
}
diff --git a/lib/private/Collaboration/Collaborators/SearchResult.php b/lib/private/Collaboration/Collaborators/SearchResult.php
index 7b32b388203..184c1f69a1b 100644
--- a/lib/private/Collaboration/Collaborators/SearchResult.php
+++ b/lib/private/Collaboration/Collaborators/SearchResult.php
@@ -52,7 +52,7 @@ class SearchResult implements ISearchResult {
$this->exactIdMatches[$type->getLabel()] = 1;
}
- public function hasExactIdMatch(SearchResultType$type) {
+ public function hasExactIdMatch(SearchResultType $type) {
return isset($this->exactIdMatches[$type->getLabel()]);
}
@@ -64,8 +64,10 @@ class SearchResult implements ISearchResult {
$resultArrays = [$this->result['exact'][$type], $this->result[$type]];
foreach($resultArrays as $resultArray) {
- if ($resultArray['value']['shareWith'] === $collaboratorId) {
- return true;
+ foreach ($resultArray as $result) {
+ if ($result['value']['shareWith'] === $collaboratorId) {
+ return true;
+ }
}
}
diff --git a/lib/private/Command/QueueBus.php b/lib/private/Command/QueueBus.php
index 7f2fc88a703..30cdd7740a9 100644
--- a/lib/private/Command/QueueBus.php
+++ b/lib/private/Command/QueueBus.php
@@ -27,7 +27,7 @@ use OCP\Command\ICommand;
class QueueBus implements IBus {
/**
- * @var (ICommand|callable)[]
+ * @var ICommand[]|callable[]
*/
private $queue = [];
diff --git a/lib/private/DB/MDB2SchemaManager.php b/lib/private/DB/MDB2SchemaManager.php
index 89b0d153212..ad3f93a2643 100644
--- a/lib/private/DB/MDB2SchemaManager.php
+++ b/lib/private/DB/MDB2SchemaManager.php
@@ -89,7 +89,7 @@ class MDB2SchemaManager {
} else if ($platform instanceof PostgreSqlPlatform) {
return new PostgreSqlMigrator($this->conn, $random, $config, $dispatcher);
} else {
- return new NoCheckMigrator($this->conn, $random, $config, $dispatcher);
+ return new Migrator($this->conn, $random, $config, $dispatcher);
}
}
diff --git a/lib/private/DB/NoCheckMigrator.php b/lib/private/DB/NoCheckMigrator.php
deleted file mode 100644
index 723653511b9..00000000000
--- a/lib/private/DB/NoCheckMigrator.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Robin Appelman <robin@icewind.nl>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-
-namespace OC\DB;
-
-use Doctrine\DBAL\Schema\Schema;
-
-/**
- * migrator for database platforms that don't support the upgrade check
- *
- * @package OC\DB
- */
-class NoCheckMigrator extends Migrator {
- /**
- * @param \Doctrine\DBAL\Schema\Schema $targetSchema
- * @throws \OC\DB\MigrationException
- */
- public function checkMigrate(Schema $targetSchema) {}
-}
diff --git a/lib/private/DB/OracleMigrator.php b/lib/private/DB/OracleMigrator.php
index 2735529b5e2..f5e06b50d99 100644
--- a/lib/private/DB/OracleMigrator.php
+++ b/lib/private/DB/OracleMigrator.php
@@ -30,8 +30,79 @@ use Doctrine\DBAL\Schema\ColumnDiff;
use Doctrine\DBAL\Schema\Index;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Schema\Table;
+use Doctrine\DBAL\Schema\ForeignKeyConstraint;
+
+class OracleMigrator extends Migrator {
+
+ /**
+ * Quote a column's name but changing the name requires recreating
+ * the column instance and copying over all properties.
+ *
+ * @param Column $column old column
+ * @return Column new column instance with new name
+ */
+ protected function quoteColumn(Column $column) {
+ $newColumn = new Column(
+ $this->connection->quoteIdentifier($column->getName()),
+ $column->getType()
+ );
+ $newColumn->setAutoincrement($column->getAutoincrement());
+ $newColumn->setColumnDefinition($column->getColumnDefinition());
+ $newColumn->setComment($column->getComment());
+ $newColumn->setDefault($column->getDefault());
+ $newColumn->setFixed($column->getFixed());
+ $newColumn->setLength($column->getLength());
+ $newColumn->setNotnull($column->getNotnull());
+ $newColumn->setPrecision($column->getPrecision());
+ $newColumn->setScale($column->getScale());
+ $newColumn->setUnsigned($column->getUnsigned());
+ $newColumn->setPlatformOptions($column->getPlatformOptions());
+ $newColumn->setCustomSchemaOptions($column->getPlatformOptions());
+ return $newColumn;
+ }
+
+ /**
+ * Quote an index's name but changing the name requires recreating
+ * the index instance and copying over all properties.
+ *
+ * @param Index $index old index
+ * @return Index new index instance with new name
+ */
+ protected function quoteIndex($index) {
+ return new Index(
+ //TODO migrate existing uppercase indexes, then $this->connection->quoteIdentifier($index->getName()),
+ $index->getName(),
+ array_map(function($columnName) {
+ return $this->connection->quoteIdentifier($columnName);
+ }, $index->getColumns()),
+ $index->isUnique(),
+ $index->isPrimary(),
+ $index->getFlags(),
+ $index->getOptions()
+ );
+ }
+
+ /**
+ * Quote an ForeignKeyConstraint's name but changing the name requires recreating
+ * the ForeignKeyConstraint instance and copying over all properties.
+ *
+ * @param ForeignKeyConstraint $fkc old fkc
+ * @return ForeignKeyConstraint new fkc instance with new name
+ */
+ protected function quoteForeignKeyConstraint($fkc) {
+ return new ForeignKeyConstraint(
+ array_map(function($columnName) {
+ return $this->connection->quoteIdentifier($columnName);
+ }, $fkc->getLocalColumns()),
+ $this->connection->quoteIdentifier($fkc->getForeignTableName()),
+ array_map(function($columnName) {
+ return $this->connection->quoteIdentifier($columnName);
+ }, $fkc->getForeignColumns()),
+ $fkc->getName(),
+ $fkc->getOptions()
+ );
+ }
-class OracleMigrator extends NoCheckMigrator {
/**
* @param Schema $targetSchema
* @param \Doctrine\DBAL\Connection $connection
@@ -46,37 +117,14 @@ class OracleMigrator extends NoCheckMigrator {
return new Table(
$this->connection->quoteIdentifier($table->getName()),
array_map(function(Column $column) {
- $newColumn = new Column(
- $this->connection->quoteIdentifier($column->getName()),
- $column->getType()
- );
- $newColumn->setAutoincrement($column->getAutoincrement());
- $newColumn->setColumnDefinition($column->getColumnDefinition());
- $newColumn->setComment($column->getComment());
- $newColumn->setDefault($column->getDefault());
- $newColumn->setFixed($column->getFixed());
- $newColumn->setLength($column->getLength());
- $newColumn->setNotnull($column->getNotnull());
- $newColumn->setPrecision($column->getPrecision());
- $newColumn->setScale($column->getScale());
- $newColumn->setUnsigned($column->getUnsigned());
- $newColumn->setPlatformOptions($column->getPlatformOptions());
- $newColumn->setCustomSchemaOptions($column->getPlatformOptions());
- return $newColumn;
+ return $this->quoteColumn($column);
}, $table->getColumns()),
array_map(function(Index $index) {
- return new Index(
- $this->connection->quoteIdentifier($index->getName()),
- array_map(function($columnName) {
- return $this->connection->quoteIdentifier($columnName);
- }, $index->getColumns()),
- $index->isUnique(),
- $index->isPrimary(),
- $index->getFlags(),
- $index->getOptions()
- );
+ return $this->quoteIndex($index);
}, $table->getIndexes()),
- $table->getForeignKeys(),
+ array_map(function(ForeignKeyConstraint $fck) {
+ return $this->quoteForeignKeyConstraint($fck);
+ }, $table->getForeignKeys()),
0,
$table->getOptions()
);
@@ -95,14 +143,56 @@ class OracleMigrator extends NoCheckMigrator {
foreach ($schemaDiff->changedTables as $tableDiff) {
$tableDiff->name = $this->connection->quoteIdentifier($tableDiff->name);
+
+ $tableDiff->addedColumns = array_map(function(Column $column) {
+ return $this->quoteColumn($column);
+ }, $tableDiff->addedColumns);
+
foreach ($tableDiff->changedColumns as $column) {
$column->oldColumnName = $this->connection->quoteIdentifier($column->oldColumnName);
// auto increment is not relevant for oracle and can anyhow not be applied on change
$column->changedProperties = array_diff($column->changedProperties, ['autoincrement', 'unsigned']);
}
+ // remove columns that no longer have changed (because autoincrement and unsigned are not supported)
$tableDiff->changedColumns = array_filter($tableDiff->changedColumns, function (ColumnDiff $column) {
return count($column->changedProperties) > 0;
});
+
+ $tableDiff->removedColumns = array_map(function(Column $column) {
+ return $this->quoteColumn($column);
+ }, $tableDiff->removedColumns);
+
+ $tableDiff->renamedColumns = array_map(function(Column $column) {
+ return $this->quoteColumn($column);
+ }, $tableDiff->renamedColumns);
+
+ $tableDiff->addedIndexes = array_map(function(Index $index) {
+ return $this->quoteIndex($index);
+ }, $tableDiff->addedIndexes);
+
+ $tableDiff->changedIndexes = array_map(function(Index $index) {
+ return $this->quoteIndex($index);
+ }, $tableDiff->changedIndexes);
+
+ $tableDiff->removedIndexes = array_map(function(Index $index) {
+ return $this->quoteIndex($index);
+ }, $tableDiff->removedIndexes);
+
+ $tableDiff->renamedIndexes = array_map(function(Index $index) {
+ return $this->quoteIndex($index);
+ }, $tableDiff->renamedIndexes);
+
+ $tableDiff->addedForeignKeys = array_map(function(ForeignKeyConstraint $fkc) {
+ return $this->quoteForeignKeyConstraint($fkc);
+ }, $tableDiff->addedForeignKeys);
+
+ $tableDiff->changedForeignKeys = array_map(function(ForeignKeyConstraint $fkc) {
+ return $this->quoteForeignKeyConstraint($fkc);
+ }, $tableDiff->changedForeignKeys);
+
+ $tableDiff->removedForeignKeys = array_map(function(ForeignKeyConstraint $fkc) {
+ return $this->quoteForeignKeyConstraint($fkc);
+ }, $tableDiff->removedForeignKeys);
}
return $schemaDiff;
diff --git a/lib/private/Files/FileInfo.php b/lib/private/Files/FileInfo.php
index f5a44ba02ea..7ac0c6e49d5 100644
--- a/lib/private/Files/FileInfo.php
+++ b/lib/private/Files/FileInfo.php
@@ -232,7 +232,7 @@ class FileInfo implements \OCP\Files\FileInfo, \ArrayAccess {
}
/**
- * @return \OCP\Files\FileInfo::TYPE_FILE|\OCP\Files\FileInfo::TYPE_FOLDER
+ * @return string \OCP\Files\FileInfo::TYPE_FILE|\OCP\Files\FileInfo::TYPE_FOLDER
*/
public function getType() {
if (!isset($this->data['type'])) {
diff --git a/lib/private/Files/ObjectStore/ObjectStoreStorage.php b/lib/private/Files/ObjectStore/ObjectStoreStorage.php
index ded69e8079b..15df808684b 100644
--- a/lib/private/Files/ObjectStore/ObjectStoreStorage.php
+++ b/lib/private/Files/ObjectStore/ObjectStoreStorage.php
@@ -390,7 +390,15 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
$stat['size'] = filesize($tmpFile);
$stat['mtime'] = $mTime;
$stat['storage_mtime'] = $mTime;
- $stat['mimetype'] = \OC::$server->getMimeTypeDetector()->detect($tmpFile);
+
+ // run path based detection first, to use file extension because $tmpFile is only a random string
+ $mimetypeDetector = \OC::$server->getMimeTypeDetector();
+ $mimetype = $mimetypeDetector->detectPath($path);
+ if ($mimetype === 'application/octet-stream') {
+ $mimetype = $mimetypeDetector->detect($tmpFile);
+ }
+
+ $stat['mimetype'] = $mimetype;
$stat['etag'] = $this->getETag($path);
$fileId = $this->getCache()->put($path, $stat);
diff --git a/lib/private/Files/ObjectStore/S3ObjectTrait.php b/lib/private/Files/ObjectStore/S3ObjectTrait.php
index 6fb12265cb7..4bfa08a3e59 100644
--- a/lib/private/Files/ObjectStore/S3ObjectTrait.php
+++ b/lib/private/Files/ObjectStore/S3ObjectTrait.php
@@ -49,12 +49,15 @@ trait S3ObjectTrait {
'Bucket' => $this->bucket,
'Key' => $urn
]);
- $command['@http']['stream'] = true;
- $result = $client->execute($command);
- /** @var StreamInterface $body */
- $body = $result['Body'];
+ $request = \Aws\serialize($command);
+ $opts = [
+ 'http' => [
+ 'header' => $request->getHeaders()
+ ]
+ ];
- return $body->detach();
+ $context = stream_context_create($opts);
+ return fopen($request->getUri(), 'r', false, $context);
}
/**
diff --git a/lib/private/Files/Storage/Local.php b/lib/private/Files/Storage/Local.php
index 0577093712e..c9cb6f246d7 100644
--- a/lib/private/Files/Storage/Local.php
+++ b/lib/private/Files/Storage/Local.php
@@ -408,10 +408,11 @@ class Local extends \OC\Files\Storage\Common {
* @param IStorage $sourceStorage
* @param string $sourceInternalPath
* @param string $targetInternalPath
+ * @param bool $preserveMtime
* @return bool
*/
public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = false) {
- if ($sourceStorage->instanceOfStorage('\OC\Files\Storage\Local')) {
+ if ($sourceStorage->instanceOfStorage(Local::class)) {
if ($sourceStorage->instanceOfStorage(Jail::class)) {
/**
* @var \OC\Files\Storage\Wrapper\Jail $sourceStorage
diff --git a/lib/private/Files/Type/Detection.php b/lib/private/Files/Type/Detection.php
index cd4ddc2f067..928c68251cf 100644
--- a/lib/private/Files/Type/Detection.php
+++ b/lib/private/Files/Type/Detection.php
@@ -173,6 +173,10 @@ class Detection implements IMimeTypeDetector {
// note: leading dot doesn't qualify as extension
if (strpos($fileName, '.') > 0) {
+
+ // remove versioning extension: name.v1508946057 and transfer extension: name.ocTransferId2057600214.part
+ $fileName = preg_replace('!((\.v\d+)|((.ocTransferId\d+)?.part))$!', '', $fileName);
+
//try to guess the type by the file extension
$extension = strtolower(strrchr($fileName, '.'));
$extension = substr($extension, 1); //remove leading .
diff --git a/lib/private/Log.php b/lib/private/Log.php
index 39577d2387a..25ff26daffa 100644
--- a/lib/private/Log.php
+++ b/lib/private/Log.php
@@ -69,6 +69,8 @@ class Log implements ILogger {
'loginWithPassword',
'updatePrivateKeyPassword',
'validateUserPass',
+ 'loginWithToken',
+ '\{closure\}',
// TokenProvider
'getToken',
@@ -96,6 +98,10 @@ class Log implements ILogger {
'bind',
'areCredentialsValid',
'invokeLDAPMethod',
+
+ // Encryption
+ 'storeKeyPair',
+ 'setupUser',
];
/**
diff --git a/lib/private/Mail/Attachment.php b/lib/private/Mail/Attachment.php
new file mode 100644
index 00000000000..7b85ad1dbb9
--- /dev/null
+++ b/lib/private/Mail/Attachment.php
@@ -0,0 +1,78 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OC\Mail;
+
+use OCP\Mail\IAttachment;
+
+/**
+ * Class Attachment
+ *
+ * @package OC\Mail
+ * @since 13.0.0
+ */
+class Attachment implements IAttachment {
+
+ /** @var \Swift_Mime_Attachment */
+ protected $swiftAttachment;
+
+ public function __construct(\Swift_Mime_Attachment $attachment) {
+ $this->swiftAttachment = $attachment;
+ }
+
+ /**
+ * @param string $filename
+ * @return $this
+ * @since 13.0.0
+ */
+ public function setFilename($filename) {
+ $this->swiftAttachment->setFilename($filename);
+ return $this;
+ }
+
+ /**
+ * @param string $contentType
+ * @return $this
+ * @since 13.0.0
+ */
+ public function setContentType($contentType) {
+ $this->swiftAttachment->setContentType($contentType);
+ return $this;
+ }
+
+ /**
+ * @param string $body
+ * @return $this
+ * @since 13.0.0
+ */
+ public function setBody($body) {
+ $this->swiftAttachment->setBody($body);
+ return $this;
+ }
+
+ /**
+ * @return \Swift_Mime_Attachment
+ */
+ public function getSwiftAttachment() {
+ return $this->swiftAttachment;
+ }
+
+}
diff --git a/lib/private/Mail/Mailer.php b/lib/private/Mail/Mailer.php
index 43fdb07b810..ad59d640b3e 100644
--- a/lib/private/Mail/Mailer.php
+++ b/lib/private/Mail/Mailer.php
@@ -26,6 +26,7 @@ use OCP\Defaults;
use OCP\IConfig;
use OCP\IL10N;
use OCP\IURLGenerator;
+use OCP\Mail\IAttachment;
use OCP\Mail\IEMailTemplate;
use OCP\Mail\IMailer;
use OCP\ILogger;
@@ -92,6 +93,27 @@ class Mailer implements IMailer {
}
/**
+ * @param string|null $data
+ * @param string|null $filename
+ * @param string|null $contentType
+ * @return IAttachment
+ * @since 13.0.0
+ */
+ public function createAttachment($data = null, $filename = null, $contentType = null) {
+ return new Attachment(\Swift_Attachment::newInstance($data, $filename, $contentType));
+ }
+
+ /**
+ * @param string $path
+ * @param string|null $contentType
+ * @return IAttachment
+ * @since 13.0.0
+ */
+ public function createAttachmentFromPath($path, $contentType = null) {
+ return new Attachment(\Swift_Attachment::fromPath($path, $contentType));
+ }
+
+ /**
* Creates a new email template object
*
* @param string $emailId
diff --git a/lib/private/Mail/Message.php b/lib/private/Mail/Message.php
index b4d1e4dbe7a..dcd4a66e996 100644
--- a/lib/private/Mail/Message.php
+++ b/lib/private/Mail/Message.php
@@ -23,6 +23,7 @@
namespace OC\Mail;
+use OCP\Mail\IAttachment;
use OCP\Mail\IEMailTemplate;
use OCP\Mail\IMessage;
use Swift_Message;
@@ -44,6 +45,17 @@ class Message implements IMessage {
}
/**
+ * @param IAttachment $attachment
+ * @return $this
+ * @since 13.0.0
+ */
+ public function attach(IAttachment $attachment) {
+ /** @var Attachment $attachment */
+ $this->swiftMessage->attach($attachment->getSwiftAttachment());
+ return $this;
+ }
+
+ /**
* SwiftMailer does currently not work with IDN domains, this function therefore converts the domains
* FIXME: Remove this once SwiftMailer supports IDN
*
diff --git a/lib/private/Repair.php b/lib/private/Repair.php
index 80cd3c7fd45..ac824095d53 100644
--- a/lib/private/Repair.php
+++ b/lib/private/Repair.php
@@ -41,6 +41,7 @@ use OC\Repair\NC11\MoveAvatars;
use OC\Repair\NC12\InstallCoreBundle;
use OC\Repair\NC12\UpdateLanguageCodes;
use OC\Repair\NC12\RepairIdentityProofKeyFolders;
+use OC\Repair\NC13\AddLogRotateJob;
use OC\Repair\OldGroupMembershipShares;
use OC\Repair\Owncloud\DropAccountTermsTable;
use OC\Repair\Owncloud\SaveAccountsTableData;
@@ -150,6 +151,7 @@ class Repair implements IOutput{
),
new RepairInvalidPaths(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig()),
new RepairIdentityProofKeyFolders(\OC::$server->getConfig(), \OC::$server->query(Factory::class), \OC::$server->getRootFolder()),
+ new AddLogRotateJob(\OC::$server->getJobList()),
];
}
diff --git a/lib/private/Repair/NC13/AddLogRotateJob.php b/lib/private/Repair/NC13/AddLogRotateJob.php
new file mode 100644
index 00000000000..c65ea47f02b
--- /dev/null
+++ b/lib/private/Repair/NC13/AddLogRotateJob.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * @copyright 2017, Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OC\Repair\NC13;
+
+use OC\Log\Rotate;
+use OCP\BackgroundJob\IJobList;
+use OCP\Migration\IOutput;
+use OCP\Migration\IRepairStep;
+
+class AddLogRotateJob implements IRepairStep {
+
+ /** @var IJobList */
+ private $jobList;
+
+ public function __construct(IJobList $jobList) {
+ $this->jobList = $jobList;
+ }
+
+ public function getName() {
+ return 'Add log rotate job';
+ }
+
+ public function run(IOutput $output) {
+ $this->jobList->add(Rotate::class);
+ }
+
+}
diff --git a/lib/private/Server.php b/lib/private/Server.php
index 1621a194693..c461d3842cd 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -533,8 +533,8 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerService(\OCP\Route\IRouter::class, function (Server $c) {
$cacheFactory = $c->getMemCacheFactory();
$logger = $c->getLogger();
- if ($cacheFactory->isAvailable()) {
- $router = new \OC\Route\CachingRouter($cacheFactory->create('route'), $logger);
+ if ($cacheFactory->isAvailableLowLatency()) {
+ $router = new \OC\Route\CachingRouter($cacheFactory->createLocal('route'), $logger);
} else {
$router = new \OC\Route\Router($logger);
}
diff --git a/lib/private/Setup.php b/lib/private/Setup.php
index 5228d52b05f..4e1e4ece62d 100644
--- a/lib/private/Setup.php
+++ b/lib/private/Setup.php
@@ -44,6 +44,7 @@ use Exception;
use OC\App\AppStore\Bundles\BundleFetcher;
use OC\Authentication\Token\DefaultTokenCleanupJob;
use OC\Authentication\Token\DefaultTokenProvider;
+use OC\Log\Rotate;
use OCP\Defaults;
use OCP\IL10N;
use OCP\ILogger;
@@ -426,7 +427,9 @@ class Setup {
}
public static function installBackgroundJobs() {
- \OC::$server->getJobList()->add(DefaultTokenCleanupJob::class);
+ $jobList = \OC::$server->getJobList();
+ $jobList->add(DefaultTokenCleanupJob::class);
+ $jobList->add(Rotate::class);
}
/**
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index 9245b9d4f51..379d87633ab 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -1395,7 +1395,7 @@ class Manager implements IManager {
/**
* Create a new share
- * @return \OCP\Share\IShare;
+ * @return \OCP\Share\IShare
*/
public function newShare() {
return new \OC\Share20\Share($this->rootFolder, $this->userManager);
diff --git a/lib/private/SystemConfig.php b/lib/private/SystemConfig.php
index 3610486140d..91afbeb8967 100644
--- a/lib/private/SystemConfig.php
+++ b/lib/private/SystemConfig.php
@@ -37,22 +37,30 @@ class SystemConfig {
/** @var array */
protected $sensitiveValues = [
+ 'instanceid' => true,
+ 'trusted_domains' => true,
+ 'datadirectory' => true,
+ 'overwrite.cli.url' => true,
'dbname' => true,
+ 'dbhost' => true,
'dbpassword' => true,
'dbuser' => true,
'mail_from_address' => true,
'mail_domain' => true,
+ 'mail_smtphost' => true,
'mail_smtpname' => true,
'mail_smtppassword' => true,
'passwordsalt' => true,
'secret' => true,
'updater.secret' => true,
+ 'trusted_proxies' => true,
'proxyuserpwd' => true,
'log.condition' => [
'shared_secret' => true,
],
'license-key' => true,
'redis' => [
+ 'host' => true,
'password' => true,
],
'objectstore' => [
diff --git a/lib/private/Tags.php b/lib/private/Tags.php
index b63435ff838..1947f0c07e6 100644
--- a/lib/private/Tags.php
+++ b/lib/private/Tags.php
@@ -140,7 +140,7 @@ class Tags implements \OCP\ITags {
/**
* Check if any tags are saved for this type and user.
*
- * @return boolean.
+ * @return boolean
*/
public function isEmpty() {
return count($this->tags) === 0;
diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php
index efa2afd7356..49fac2f4d96 100644
--- a/lib/private/legacy/app.php
+++ b/lib/private/legacy/app.php
@@ -350,6 +350,7 @@ class OC_App {
*
* @param string $app app
* @return bool
+ * @deprecated 13.0.0 use \OC::$server->getAppManager()->isEnabledForUser($appId)
*
* This function checks whether or not an app is enabled.
*/
@@ -869,21 +870,6 @@ class OC_App {
return $appList;
}
- /**
- * Returns the internal app ID or false
- * @param string $ocsID
- * @return string|false
- */
- public static function getInternalAppIdByOcs($ocsID) {
- if(is_numeric($ocsID)) {
- $idArray = \OC::$server->getAppConfig()->getValues(false, 'ocsid');
- if(array_search($ocsID, $idArray)) {
- return array_search($ocsID, $idArray);
- }
- }
- return false;
- }
-
public static function shouldUpgrade($app) {
$versions = self::getAppVersions();
$currentVersion = OC_App::getAppVersion($app);
@@ -1161,7 +1147,7 @@ class OC_App {
* @return \OC\Files\View|false
*/
public static function getStorage($appId) {
- if (OC_App::isEnabled($appId)) { //sanity check
+ if (\OC::$server->getAppManager()->isEnabledForUser($appId)) { //sanity check
if (\OC::$server->getUserSession()->isLoggedIn()) {
$view = new \OC\Files\View('/' . OC_User::getUser());
if (!$view->file_exists($appId)) {
diff --git a/lib/private/legacy/image.php b/lib/private/legacy/image.php
index 120b19d1cff..cd5ca7bb5ce 100644
--- a/lib/private/legacy/image.php
+++ b/lib/private/legacy/image.php
@@ -431,7 +431,7 @@ class OC_Image implements \OCP\IImage {
* (I'm open for suggestions on better method name ;)
* Fixes orientation based on EXIF data.
*
- * @return bool.
+ * @return bool
*/
public function fixOrientation() {
$o = $this->getOrientation();
diff --git a/lib/private/legacy/json.php b/lib/private/legacy/json.php
index 180dd7c448d..221a0047eb4 100644
--- a/lib/private/legacy/json.php
+++ b/lib/private/legacy/json.php
@@ -55,7 +55,7 @@ class OC_JSON{
* @suppress PhanDeprecatedFunction
*/
public static function checkAppEnabled($app) {
- if( !OC_App::isEnabled($app)) {
+ if( !\OC::$server->getAppManager()->isEnabledForUser($app)) {
$l = \OC::$server->getL10N('lib');
self::error(array( 'data' => array( 'message' => $l->t('Application is not enabled'), 'error' => 'application_not_enabled' )));
exit();
diff --git a/lib/private/legacy/template.php b/lib/private/legacy/template.php
index 8c6185cd556..55df2dece11 100644
--- a/lib/private/legacy/template.php
+++ b/lib/private/legacy/template.php
@@ -297,7 +297,7 @@ class OC_Template extends \OC\Template\Base {
* @suppress PhanAccessMethodInternal
*/
public static function printErrorPage( $error_msg, $hint = '' ) {
- if (\OC_App::isEnabled('theming') && !\OC_App::isAppLoaded('theming')) {
+ if (\OC::$server->getAppManager()->isEnabledForUser('theming') && !\OC_App::isAppLoaded('theming')) {
\OC_App::loadApp('theming');
}
diff --git a/lib/private/legacy/template/functions.php b/lib/private/legacy/template/functions.php
index bca16b48c1a..1ef3541e880 100644
--- a/lib/private/legacy/template/functions.php
+++ b/lib/private/legacy/template/functions.php
@@ -278,7 +278,7 @@ function human_file_size( $bytes ) {
/**
* Strips the timestamp of its time value
* @param int $timestamp UNIX timestamp to strip
- * @return $timestamp without time value
+ * @return int timestamp without time value
*/
function strip_time($timestamp){
$date = new \DateTime("@{$timestamp}");
diff --git a/lib/public/App.php b/lib/public/App.php
index 06dde22b8d1..250d33bf01f 100644
--- a/lib/public/App.php
+++ b/lib/public/App.php
@@ -127,9 +127,10 @@ class App {
*
* This function checks whether or not an app is enabled.
* @since 4.0.0
+ * @deprecated 13.0.0 use \OC::$server->getAppManager()->isEnabledForUser($appId)
*/
public static function isEnabled( $app ) {
- return \OC_App::isEnabled( $app );
+ return \OC::$server->getAppManager()->isEnabledForUser( $app );
}
/**
diff --git a/lib/public/AppFramework/Http/DataDisplayResponse.php b/lib/public/AppFramework/Http/DataDisplayResponse.php
index 820e00ff963..cfc4bd494f2 100644
--- a/lib/public/AppFramework/Http/DataDisplayResponse.php
+++ b/lib/public/AppFramework/Http/DataDisplayResponse.php
@@ -35,7 +35,7 @@ class DataDisplayResponse extends Response {
/**
* response data
- * @var string;
+ * @var string
*/
protected $data;
diff --git a/lib/public/Files/FileInfo.php b/lib/public/Files/FileInfo.php
index f0f21087bbe..0b90fb8fbf2 100644
--- a/lib/public/Files/FileInfo.php
+++ b/lib/public/Files/FileInfo.php
@@ -174,7 +174,7 @@ interface FileInfo {
/**
* Check whether this is a file or a folder
*
- * @return \OCP\Files\FileInfo::TYPE_FILE|\OCP\Files\FileInfo::TYPE_FOLDER
+ * @return string \OCP\Files\FileInfo::TYPE_FILE|\OCP\Files\FileInfo::TYPE_FOLDER
* @since 7.0.0
*/
public function getType();
diff --git a/lib/public/IRequest.php b/lib/public/IRequest.php
index 98d8f5bb83a..262b595acc7 100644
--- a/lib/public/IRequest.php
+++ b/lib/public/IRequest.php
@@ -69,6 +69,11 @@ interface IRequest {
const USER_AGENT_CLIENT_ANDROID = '/^Mozilla\/5\.0 \(Android\) ownCloud\-android.*$/';
/**
+ * @since 13.0.0
+ */
+ const USER_AGENT_TALK_ANDROID = '/^Mozilla\/5\.0 \(Android\) Nextcloud\-Talk v.*$/';
+
+ /**
* @since 9.1.0
*/
const USER_AGENT_CLIENT_DESKTOP = '/^Mozilla\/5\.0 \([A-Za-z ]+\) (mirall|csyncoC)\/.*$/';
@@ -79,6 +84,11 @@ interface IRequest {
const USER_AGENT_CLIENT_IOS = '/^Mozilla\/5\.0 \(iOS\) (ownCloud|Nextcloud)\-iOS.*$/';
/**
+ * @since 13.0.0
+ */
+ const USER_AGENT_TALK_IOS = '/^Mozilla\/5\.0 \(iOS\) Nextcloud\-Talk v.*$/';
+
+ /**
* @param string $name
*
* @return string
diff --git a/lib/public/Mail/IAttachment.php b/lib/public/Mail/IAttachment.php
new file mode 100644
index 00000000000..32348e7a309
--- /dev/null
+++ b/lib/public/Mail/IAttachment.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\Mail;
+
+/**
+ * Interface IAttachment
+ *
+ * @package OCP\Mail
+ * @since 13.0.0
+ */
+interface IAttachment {
+
+ /**
+ * @param string $filename
+ * @return $this
+ * @since 13.0.0
+ */
+ public function setFilename($filename);
+
+ /**
+ * @param string $contentType
+ * @return $this
+ * @since 13.0.0
+ */
+ public function setContentType($contentType);
+
+ /**
+ * @param string $body
+ * @return $this
+ * @since 13.0.0
+ */
+ public function setBody($body);
+
+}
diff --git a/lib/public/Mail/IMailer.php b/lib/public/Mail/IMailer.php
index 35189c22a69..10096548256 100644
--- a/lib/public/Mail/IMailer.php
+++ b/lib/public/Mail/IMailer.php
@@ -54,6 +54,23 @@ interface IMailer {
public function createMessage();
/**
+ * @param string|null $data
+ * @param string|null $filename
+ * @param string|null $contentType
+ * @return IAttachment
+ * @since 13.0.0
+ */
+ public function createAttachment($data = null, $filename = null, $contentType = null);
+
+ /**
+ * @param string $path
+ * @param string|null $contentType
+ * @return IAttachment
+ * @since 13.0.0
+ */
+ public function createAttachmentFromPath($path, $contentType = null);
+
+ /**
* Creates a new email template object
*
* @param string $emailId
diff --git a/lib/public/Mail/IMessage.php b/lib/public/Mail/IMessage.php
index 20e4ea19c4c..e82b4ff93a9 100644
--- a/lib/public/Mail/IMessage.php
+++ b/lib/public/Mail/IMessage.php
@@ -22,12 +22,20 @@
namespace OCP\Mail;
/**
- * Class Message
+ * Interface IMessage
*
* @package OCP\Mail
* @since 13.0.0
*/
interface IMessage {
+
+ /**
+ * @param IAttachment $attachment
+ * @return $this
+ * @since 13.0.0
+ */
+ public function attach(IAttachment $attachment);
+
/**
* Set the from address of this message.
*
diff --git a/lib/public/Util.php b/lib/public/Util.php
index e4ebdb5bfa7..04cdfe216d0 100644
--- a/lib/public/Util.php
+++ b/lib/public/Util.php
@@ -670,7 +670,7 @@ class Util {
* Compare two strings to provide a natural sort
* @param string $a first string to compare
* @param string $b second string to compare
- * @return -1 if $b comes before $a, 1 if $a comes before $b
+ * @return int -1 if $b comes before $a, 1 if $a comes before $b
* or 0 if the strings are identical
* @since 7.0.0
*/