aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/base.php4
-rw-r--r--lib/composer/composer/autoload_classmap.php15
-rw-r--r--lib/composer/composer/autoload_static.php15
-rw-r--r--lib/l10n/bg_BG.js2
-rw-r--r--lib/l10n/bg_BG.json2
-rw-r--r--lib/l10n/ca.js177
-rw-r--r--lib/l10n/ca.json175
-rw-r--r--lib/l10n/el.js200
-rw-r--r--lib/l10n/el.json198
-rw-r--r--lib/l10n/fr.js2
-rw-r--r--lib/l10n/fr.json2
-rw-r--r--lib/l10n/he.js211
-rw-r--r--lib/l10n/he.json209
-rw-r--r--lib/l10n/is.js181
-rw-r--r--lib/l10n/is.json179
-rw-r--r--lib/l10n/pl.js63
-rw-r--r--lib/l10n/pl.json63
-rw-r--r--lib/l10n/sk_SK.js8
-rw-r--r--lib/l10n/sk_SK.json8
-rw-r--r--lib/l10n/zh_CN.js233
-rw-r--r--lib/l10n/zh_CN.json231
-rw-r--r--lib/private/AppFramework/DependencyInjection/DIContainer.php16
-rw-r--r--lib/private/AppFramework/Http/Request.php4
-rw-r--r--lib/private/Authentication/LoginCredentials/Credentials.php72
-rw-r--r--lib/private/Authentication/LoginCredentials/Store.php120
-rw-r--r--lib/private/Console/TimestampFormatter.php4
-rw-r--r--lib/private/Federation/CloudId.php76
-rw-r--r--lib/private/Federation/CloudIdManager.php110
-rw-r--r--lib/private/Files/Notify/Change.php65
-rw-r--r--lib/private/Files/Notify/RenameChange.php52
-rw-r--r--lib/private/Files/Storage/Common.php96
-rw-r--r--lib/private/Files/Storage/DAV.php6
-rw-r--r--lib/private/Files/Storage/Local.php13
-rw-r--r--lib/private/Files/Storage/Storage.php1
-rw-r--r--lib/private/Lockdown/Filesystem/NullStorage.php3
-rw-r--r--lib/private/Log.php3
-rw-r--r--lib/private/Log/File.php4
-rw-r--r--lib/private/NavigationManager.php107
-rw-r--r--lib/private/Repair.php2
-rw-r--r--lib/private/Repair/AvatarPermissions.php116
-rw-r--r--lib/private/Repair/MoveUpdaterStepFile.php2
-rw-r--r--lib/private/Repair/RepairMimeTypes.php14
-rw-r--r--lib/private/Server.php39
-rw-r--r--lib/private/Setup.php23
-rw-r--r--lib/private/Setup/Sqlite.php2
-rw-r--r--lib/private/Share/Helper.php42
-rw-r--r--lib/private/Share20/ProviderFactory.php6
-rw-r--r--lib/private/Template/CSSResourceLocator.php19
-rw-r--r--lib/private/Template/JSConfigHelper.php2
-rwxr-xr-xlib/private/Template/ResourceLocator.php4
-rw-r--r--lib/private/Template/SCSSCacher.php7
-rw-r--r--lib/private/TemplateLayout.php7
-rw-r--r--lib/private/Updater.php38
-rw-r--r--lib/private/User/Session.php22
-rw-r--r--lib/private/User/User.php5
-rw-r--r--lib/private/legacy/template.php6
-rw-r--r--lib/private/legacy/util.php21
-rw-r--r--lib/public/Authentication/Exceptions/CredentialsUnavailableException.php34
-rw-r--r--lib/public/Authentication/LoginCredentials/ICredentials.php58
-rw-r--r--lib/public/Authentication/LoginCredentials/IStore.php44
-rw-r--r--lib/public/Federation/ICloudId.php60
-rw-r--r--lib/public/Federation/ICloudIdManager.php57
-rw-r--r--lib/public/Files/Notify/IChange.php56
-rw-r--r--lib/public/Files/Notify/INotifyHandler.php64
-rw-r--r--lib/public/Files/Notify/IRenameChange.php40
-rw-r--r--lib/public/Files/Storage.php1
-rw-r--r--lib/public/Files/Storage/ILockingStorage.php1
-rw-r--r--lib/public/Files/Storage/INotifyStorage.php13
-rw-r--r--lib/public/IRequest.php2
-rw-r--r--lib/public/IServerContainer.php6
70 files changed, 3442 insertions, 301 deletions
diff --git a/lib/base.php b/lib/base.php
index 3ba0755eaab..9f480c0b0dc 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -281,7 +281,6 @@ class OC {
// render error page
$template = new OC_Template('', 'update.user', 'guest');
OC_Util::addScript('maintenance-check');
- OC_Util::addStyle('guest');
$template->printPage();
die();
}
@@ -355,8 +354,6 @@ class OC {
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 120');
- OC_Util::addStyle('guest');
-
// render error page
$template = new OC_Template('', 'update.use-cli', 'guest');
$template->assign('productName', 'nextcloud'); // for now
@@ -378,7 +375,6 @@ class OC {
$systemConfig->setValue('theme', '');
OC_Util::addScript('config'); // needed for web root
OC_Util::addScript('update');
- OC_Util::addStyle('guest');
/** @var \OC\App\AppManager $appManager */
$appManager = \OC::$server->getAppManager();
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 84b5dc637bc..5bd9da04072 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -54,7 +54,10 @@ return array(
'OCP\\App\\AppPathNotFoundException' => $baseDir . '/lib/public/App/AppPathNotFoundException.php',
'OCP\\App\\IAppManager' => $baseDir . '/lib/public/App/IAppManager.php',
'OCP\\App\\ManagerEvent' => $baseDir . '/lib/public/App/ManagerEvent.php',
+ 'OCP\\Authentication\\Exceptions\\CredentialsUnavailableException' => $baseDir . '/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php',
'OCP\\Authentication\\IApacheBackend' => $baseDir . '/lib/public/Authentication/IApacheBackend.php',
+ 'OCP\\Authentication\\LoginCredentials\\ICredentials' => $baseDir . '/lib/public/Authentication/LoginCredentials/ICredentials.php',
+ 'OCP\\Authentication\\LoginCredentials\\IStore' => $baseDir . '/lib/public/Authentication/LoginCredentials/IStore.php',
'OCP\\Authentication\\TwoFactorAuth\\IProvider' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/IProvider.php',
'OCP\\Authentication\\TwoFactorAuth\\TwoFactorException' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/TwoFactorException.php',
'OCP\\AutoloadNotAllowedException' => $baseDir . '/lib/public/AutoloadNotAllowedException.php',
@@ -95,6 +98,8 @@ return array(
'OCP\\Encryption\\IFile' => $baseDir . '/lib/public/Encryption/IFile.php',
'OCP\\Encryption\\IManager' => $baseDir . '/lib/public/Encryption/IManager.php',
'OCP\\Encryption\\Keys\\IStorage' => $baseDir . '/lib/public/Encryption/Keys/IStorage.php',
+ 'OCP\\Federation\\ICloudId' => $baseDir . '/lib/public/Federation/ICloudId.php',
+ 'OCP\\Federation\\ICloudIdManager' => $baseDir . '/lib/public/Federation/ICloudIdManager.php',
'OCP\\Files' => $baseDir . '/lib/public/Files.php',
'OCP\\Files\\AlreadyExistsException' => $baseDir . '/lib/public/Files/AlreadyExistsException.php',
'OCP\\Files\\Cache\\ICache' => $baseDir . '/lib/public/Files/Cache/ICache.php',
@@ -131,6 +136,9 @@ return array(
'OCP\\Files\\NotEnoughSpaceException' => $baseDir . '/lib/public/Files/NotEnoughSpaceException.php',
'OCP\\Files\\NotFoundException' => $baseDir . '/lib/public/Files/NotFoundException.php',
'OCP\\Files\\NotPermittedException' => $baseDir . '/lib/public/Files/NotPermittedException.php',
+ 'OCP\\Files\\Notify\\IChange' => $baseDir . '/lib/public/Files/Notify/IChange.php',
+ 'OCP\\Files\\Notify\\INotifyHandler' => $baseDir . '/lib/public/Files/Notify/INotifyHandler.php',
+ 'OCP\\Files\\Notify\\IRenameChange' => $baseDir . '/lib/public/Files/Notify/IRenameChange.php',
'OCP\\Files\\ObjectStore\\IObjectStore' => $baseDir . '/lib/public/Files/ObjectStore/IObjectStore.php',
'OCP\\Files\\ReservedWordException' => $baseDir . '/lib/public/Files/ReservedWordException.php',
'OCP\\Files\\SimpleFS\\ISimpleFile' => $baseDir . '/lib/public/Files/SimpleFS/ISimpleFile.php',
@@ -321,6 +329,8 @@ return array(
'OC\\Authentication\\Exceptions\\PasswordlessTokenException' => $baseDir . '/lib/private/Authentication/Exceptions/PasswordlessTokenException.php',
'OC\\Authentication\\Exceptions\\TwoFactorAuthRequiredException' => $baseDir . '/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php',
'OC\\Authentication\\Exceptions\\UserAlreadyLoggedInException' => $baseDir . '/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php',
+ 'OC\\Authentication\\LoginCredentials\\Credentials' => $baseDir . '/lib/private/Authentication/LoginCredentials/Credentials.php',
+ 'OC\\Authentication\\LoginCredentials\\Store' => $baseDir . '/lib/private/Authentication/LoginCredentials/Store.php',
'OC\\Authentication\\Token\\DefaultToken' => $baseDir . '/lib/private/Authentication/Token/DefaultToken.php',
'OC\\Authentication\\Token\\DefaultTokenCleanupJob' => $baseDir . '/lib/private/Authentication/Token/DefaultTokenCleanupJob.php',
'OC\\Authentication\\Token\\DefaultTokenMapper' => $baseDir . '/lib/private/Authentication/Token/DefaultTokenMapper.php',
@@ -489,6 +499,8 @@ return array(
'OC\\Encryption\\Manager' => $baseDir . '/lib/private/Encryption/Manager.php',
'OC\\Encryption\\Update' => $baseDir . '/lib/private/Encryption/Update.php',
'OC\\Encryption\\Util' => $baseDir . '/lib/private/Encryption/Util.php',
+ 'OC\\Federation\\CloudId' => $baseDir . '/lib/private/Federation/CloudId.php',
+ 'OC\\Federation\\CloudIdManager' => $baseDir . '/lib/private/Federation/CloudIdManager.php',
'OC\\Files\\AppData\\AppData' => $baseDir . '/lib/private/Files/AppData/AppData.php',
'OC\\Files\\AppData\\Factory' => $baseDir . '/lib/private/Files/AppData/Factory.php',
'OC\\Files\\Cache\\Cache' => $baseDir . '/lib/private/Files/Cache/Cache.php',
@@ -527,6 +539,8 @@ return array(
'OC\\Files\\Node\\NonExistingFile' => $baseDir . '/lib/private/Files/Node/NonExistingFile.php',
'OC\\Files\\Node\\NonExistingFolder' => $baseDir . '/lib/private/Files/Node/NonExistingFolder.php',
'OC\\Files\\Node\\Root' => $baseDir . '/lib/private/Files/Node/Root.php',
+ 'OC\\Files\\Notify\\Change' => $baseDir . '/lib/private/Files/Notify/Change.php',
+ 'OC\\Files\\Notify\\RenameChange' => $baseDir . '/lib/private/Files/Notify/RenameChange.php',
'OC\\Files\\ObjectStore\\HomeObjectStoreStorage' => $baseDir . '/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php',
'OC\\Files\\ObjectStore\\Mapper' => $baseDir . '/lib/private/Files/ObjectStore/Mapper.php',
'OC\\Files\\ObjectStore\\NoopScanner' => $baseDir . '/lib/private/Files/ObjectStore/NoopScanner.php',
@@ -666,7 +680,6 @@ return array(
'OC\\Repair' => $baseDir . '/lib/private/Repair.php',
'OC\\RepairException' => $baseDir . '/lib/private/RepairException.php',
'OC\\Repair\\AssetCache' => $baseDir . '/lib/private/Repair/AssetCache.php',
- 'OC\\Repair\\AvatarPermissions' => $baseDir . '/lib/private/Repair/AvatarPermissions.php',
'OC\\Repair\\CleanTags' => $baseDir . '/lib/private/Repair/CleanTags.php',
'OC\\Repair\\Collation' => $baseDir . '/lib/private/Repair/Collation.php',
'OC\\Repair\\DropOldJobs' => $baseDir . '/lib/private/Repair/DropOldJobs.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 01edabe6889..475b4c15542 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -84,7 +84,10 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\App\\AppPathNotFoundException' => __DIR__ . '/../../..' . '/lib/public/App/AppPathNotFoundException.php',
'OCP\\App\\IAppManager' => __DIR__ . '/../../..' . '/lib/public/App/IAppManager.php',
'OCP\\App\\ManagerEvent' => __DIR__ . '/../../..' . '/lib/public/App/ManagerEvent.php',
+ 'OCP\\Authentication\\Exceptions\\CredentialsUnavailableException' => __DIR__ . '/../../..' . '/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php',
'OCP\\Authentication\\IApacheBackend' => __DIR__ . '/../../..' . '/lib/public/Authentication/IApacheBackend.php',
+ 'OCP\\Authentication\\LoginCredentials\\ICredentials' => __DIR__ . '/../../..' . '/lib/public/Authentication/LoginCredentials/ICredentials.php',
+ 'OCP\\Authentication\\LoginCredentials\\IStore' => __DIR__ . '/../../..' . '/lib/public/Authentication/LoginCredentials/IStore.php',
'OCP\\Authentication\\TwoFactorAuth\\IProvider' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/IProvider.php',
'OCP\\Authentication\\TwoFactorAuth\\TwoFactorException' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/TwoFactorException.php',
'OCP\\AutoloadNotAllowedException' => __DIR__ . '/../../..' . '/lib/public/AutoloadNotAllowedException.php',
@@ -125,6 +128,8 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Encryption\\IFile' => __DIR__ . '/../../..' . '/lib/public/Encryption/IFile.php',
'OCP\\Encryption\\IManager' => __DIR__ . '/../../..' . '/lib/public/Encryption/IManager.php',
'OCP\\Encryption\\Keys\\IStorage' => __DIR__ . '/../../..' . '/lib/public/Encryption/Keys/IStorage.php',
+ 'OCP\\Federation\\ICloudId' => __DIR__ . '/../../..' . '/lib/public/Federation/ICloudId.php',
+ 'OCP\\Federation\\ICloudIdManager' => __DIR__ . '/../../..' . '/lib/public/Federation/ICloudIdManager.php',
'OCP\\Files' => __DIR__ . '/../../..' . '/lib/public/Files.php',
'OCP\\Files\\AlreadyExistsException' => __DIR__ . '/../../..' . '/lib/public/Files/AlreadyExistsException.php',
'OCP\\Files\\Cache\\ICache' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/ICache.php',
@@ -161,6 +166,9 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Files\\NotEnoughSpaceException' => __DIR__ . '/../../..' . '/lib/public/Files/NotEnoughSpaceException.php',
'OCP\\Files\\NotFoundException' => __DIR__ . '/../../..' . '/lib/public/Files/NotFoundException.php',
'OCP\\Files\\NotPermittedException' => __DIR__ . '/../../..' . '/lib/public/Files/NotPermittedException.php',
+ 'OCP\\Files\\Notify\\IChange' => __DIR__ . '/../../..' . '/lib/public/Files/Notify/IChange.php',
+ 'OCP\\Files\\Notify\\INotifyHandler' => __DIR__ . '/../../..' . '/lib/public/Files/Notify/INotifyHandler.php',
+ 'OCP\\Files\\Notify\\IRenameChange' => __DIR__ . '/../../..' . '/lib/public/Files/Notify/IRenameChange.php',
'OCP\\Files\\ObjectStore\\IObjectStore' => __DIR__ . '/../../..' . '/lib/public/Files/ObjectStore/IObjectStore.php',
'OCP\\Files\\ReservedWordException' => __DIR__ . '/../../..' . '/lib/public/Files/ReservedWordException.php',
'OCP\\Files\\SimpleFS\\ISimpleFile' => __DIR__ . '/../../..' . '/lib/public/Files/SimpleFS/ISimpleFile.php',
@@ -351,6 +359,8 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Authentication\\Exceptions\\PasswordlessTokenException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/PasswordlessTokenException.php',
'OC\\Authentication\\Exceptions\\TwoFactorAuthRequiredException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php',
'OC\\Authentication\\Exceptions\\UserAlreadyLoggedInException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php',
+ 'OC\\Authentication\\LoginCredentials\\Credentials' => __DIR__ . '/../../..' . '/lib/private/Authentication/LoginCredentials/Credentials.php',
+ 'OC\\Authentication\\LoginCredentials\\Store' => __DIR__ . '/../../..' . '/lib/private/Authentication/LoginCredentials/Store.php',
'OC\\Authentication\\Token\\DefaultToken' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/DefaultToken.php',
'OC\\Authentication\\Token\\DefaultTokenCleanupJob' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/DefaultTokenCleanupJob.php',
'OC\\Authentication\\Token\\DefaultTokenMapper' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/DefaultTokenMapper.php',
@@ -519,6 +529,8 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Encryption\\Manager' => __DIR__ . '/../../..' . '/lib/private/Encryption/Manager.php',
'OC\\Encryption\\Update' => __DIR__ . '/../../..' . '/lib/private/Encryption/Update.php',
'OC\\Encryption\\Util' => __DIR__ . '/../../..' . '/lib/private/Encryption/Util.php',
+ 'OC\\Federation\\CloudId' => __DIR__ . '/../../..' . '/lib/private/Federation/CloudId.php',
+ 'OC\\Federation\\CloudIdManager' => __DIR__ . '/../../..' . '/lib/private/Federation/CloudIdManager.php',
'OC\\Files\\AppData\\AppData' => __DIR__ . '/../../..' . '/lib/private/Files/AppData/AppData.php',
'OC\\Files\\AppData\\Factory' => __DIR__ . '/../../..' . '/lib/private/Files/AppData/Factory.php',
'OC\\Files\\Cache\\Cache' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/Cache.php',
@@ -557,6 +569,8 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Files\\Node\\NonExistingFile' => __DIR__ . '/../../..' . '/lib/private/Files/Node/NonExistingFile.php',
'OC\\Files\\Node\\NonExistingFolder' => __DIR__ . '/../../..' . '/lib/private/Files/Node/NonExistingFolder.php',
'OC\\Files\\Node\\Root' => __DIR__ . '/../../..' . '/lib/private/Files/Node/Root.php',
+ 'OC\\Files\\Notify\\Change' => __DIR__ . '/../../..' . '/lib/private/Files/Notify/Change.php',
+ 'OC\\Files\\Notify\\RenameChange' => __DIR__ . '/../../..' . '/lib/private/Files/Notify/RenameChange.php',
'OC\\Files\\ObjectStore\\HomeObjectStoreStorage' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php',
'OC\\Files\\ObjectStore\\Mapper' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/Mapper.php',
'OC\\Files\\ObjectStore\\NoopScanner' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/NoopScanner.php',
@@ -696,7 +710,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Repair' => __DIR__ . '/../../..' . '/lib/private/Repair.php',
'OC\\RepairException' => __DIR__ . '/../../..' . '/lib/private/RepairException.php',
'OC\\Repair\\AssetCache' => __DIR__ . '/../../..' . '/lib/private/Repair/AssetCache.php',
- 'OC\\Repair\\AvatarPermissions' => __DIR__ . '/../../..' . '/lib/private/Repair/AvatarPermissions.php',
'OC\\Repair\\CleanTags' => __DIR__ . '/../../..' . '/lib/private/Repair/CleanTags.php',
'OC\\Repair\\Collation' => __DIR__ . '/../../..' . '/lib/private/Repair/Collation.php',
'OC\\Repair\\DropOldJobs' => __DIR__ . '/../../..' . '/lib/private/Repair/DropOldJobs.php',
diff --git a/lib/l10n/bg_BG.js b/lib/l10n/bg_BG.js
index 955d4e68742..2692a983790 100644
--- a/lib/l10n/bg_BG.js
+++ b/lib/l10n/bg_BG.js
@@ -170,7 +170,7 @@ OC.L10N.register(
"Failed to open archive when installing app" : "Неуспешно отваряне на архив по време на инсталацията на приложението.",
"App does not provide an info.xml file" : "Приложенението не съдържа файла info.xml",
"App can't be installed because of not allowed code in the App" : "Приложението няма да бъде инсталирано, защото съдържа неразрешен код.",
- "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Приложението няма да бъде инсталирано, защото съдържа <shipped>true</shipped>, таг който не е разрешен за не shiped приложения.",
+ "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Приложението няма да бъде инсталирано, защото съдържа етикета <shipped>true</shipped>, който не е разрешен за не shiped приложения.",
"Recommended" : "Препоръчано",
"Storage not available" : "Хранилището не е налично"
},
diff --git a/lib/l10n/bg_BG.json b/lib/l10n/bg_BG.json
index 1f2bcdf9d33..279f13f1bc3 100644
--- a/lib/l10n/bg_BG.json
+++ b/lib/l10n/bg_BG.json
@@ -168,7 +168,7 @@
"Failed to open archive when installing app" : "Неуспешно отваряне на архив по време на инсталацията на приложението.",
"App does not provide an info.xml file" : "Приложенението не съдържа файла info.xml",
"App can't be installed because of not allowed code in the App" : "Приложението няма да бъде инсталирано, защото съдържа неразрешен код.",
- "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Приложението няма да бъде инсталирано, защото съдържа <shipped>true</shipped>, таг който не е разрешен за не shiped приложения.",
+ "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Приложението няма да бъде инсталирано, защото съдържа етикета <shipped>true</shipped>, който не е разрешен за не shiped приложения.",
"Recommended" : "Препоръчано",
"Storage not available" : "Хранилището не е налично"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/lib/l10n/ca.js b/lib/l10n/ca.js
new file mode 100644
index 00000000000..daa9ae7a3d6
--- /dev/null
+++ b/lib/l10n/ca.js
@@ -0,0 +1,177 @@
+OC.L10N.register(
+ "lib",
+ {
+ "Cannot write into \"config\" directory!" : "No es pot escriure a la carpeta \"config\"!",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "Això normalment es pot solucionar donant al servidor web permís d'escriptura a la carpeta de configuració",
+ "See %s" : "Comproveu %s",
+ "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Això normalment es pot solucionar donant a %s permís d'escriptura a la carpeta de configuració %s",
+ "Sample configuration detected" : "Configuració d'exemple detectada",
+ "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" : "S'ha detectat que la configuració d'exemple ha estat copiada. Això no està suportat, i podria corrompre la vostra instalació. Siusplau, llegiu la documentació abans de realitzar canvis a config.php",
+ "%1$s and %2$s" : "%1$s i %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s i %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s i %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s i %5$s",
+ "PHP %s or higher is required." : "Es requereix PHP %s o superior.",
+ "Server version %s or higher is required." : "Es requereix una versió de servidor %s o superior",
+ "Server version %s or lower is required." : "Es requereix una versió de servidor %s o inferior",
+ "Unknown filetype" : "Tipus de fitxer desconegut",
+ "Invalid image" : "Imatge no vàlida",
+ "Avatar image is not square" : "La imatge de perfil no és quadrada",
+ "today" : "avui",
+ "yesterday" : "ahir",
+ "_%n day ago_::_%n days ago_" : ["fa %n dia","fa %n dies"],
+ "last month" : "el mes passat",
+ "_%n month ago_::_%n months ago_" : ["fa %n mes","fa %n mesos"],
+ "last year" : "l'any passat",
+ "_%n year ago_::_%n years ago_" : ["fa %n any","fa %n anys"],
+ "_%n hour ago_::_%n hours ago_" : ["fa %n hora","fa %n hores"],
+ "_%n minute ago_::_%n minutes ago_" : ["fa %n minut","fa %n minuts"],
+ "seconds ago" : "segons enrere",
+ "File name contains at least one invalid character" : "El nom del fitxer conté al menys un caràcter invàlid",
+ "File name is too long" : "el nom del fitxer es massa gran",
+ "APCu" : "APCu",
+ "Redis" : "Redis",
+ "Server settings" : "Configuració del Servidor",
+ "Sharing" : "Compartir",
+ "Encryption" : "Xifrat",
+ "Additional settings" : "Configuració adicional",
+ "Tips & tricks" : "Consells i trucs",
+ "%s enter the database username and name." : "%s escriviu el nom d'usuari i el nom de la base de dades.",
+ "%s enter the database username." : "%s escriviu el nom d'usuari de la base de dades.",
+ "%s enter the database name." : "%s escriviu el nom de la base de dades.",
+ "%s you may not use dots in the database name" : "%s no podeu usar punts en el nom de la base de dades",
+ "Oracle connection could not be established" : "No s'ha pogut establir la connexió Oracle",
+ "Oracle username and/or password not valid" : "Nom d'usuari i/o contrasenya Oracle no vàlids",
+ "DB Error: \"%s\"" : "Error DB: \"%s\"",
+ "Offending command was: \"%s\"" : "L'ordre en conflicte és: \"%s\"",
+ "You need to enter either an existing account or the administrator." : "Heu d'escriure un compte existent o el d'administrador.",
+ "Offending command was: \"%s\", name: %s, password: %s" : "L'ordre en conflicte és: \"%s\", nom: %s, contrasenya: %s",
+ "PostgreSQL username and/or password not valid" : "Nom d'usuari i/o contrasenya PostgreSQL no vàlids",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X no té suport i %s no funcionarà correctament en aquesta plataforma. Useu-ho al vostre risc!",
+ "For the best results, please consider using a GNU/Linux server instead." : "Per millors resultats, millor considereu utilitzar un servidor GNU/Linux.",
+ "Set an admin username." : "Establiu un nom d'usuari per l'administrador.",
+ "Set an admin password." : "Establiu una contrasenya per l'administrador.",
+ "Invalid Federated Cloud ID" : "ID de núvol federat invàlid",
+ "%s shared »%s« with you" : "%s ha compartit »%s« amb tu",
+ "%s via %s" : "%s via %s",
+ "Sharing %s failed, because the file does not exist" : "Ha fallat en compartir %s, perquè el fitxer no existeix",
+ "You are not allowed to share %s" : "No se us permet compartir %s",
+ "Sharing %s failed, because the user %s does not exist" : "Ha fallat en compartir %s, perquè l'usuari %s no existeix",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Ha fallat en compartir %s, perquè l'usuari %s no és membre de cap grup dels que %s és membre",
+ "Sharing %s failed, because this item is already shared with %s" : "Ha fallat en compartir %s, perquè l'element ja està compartit amb %s",
+ "Sharing %s failed, because the group %s does not exist" : "Ha fallat en compartir %s, perquè el grup %s no existeix",
+ "Sharing %s failed, because %s is not a member of the group %s" : "Ha fallat en compartir %s, perquè %s no és membre del grup %s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Heu de proporcionar una contrasenya per crear un enllaç públic. Només es permeten enllaços segurs.",
+ "Sharing %s failed, because sharing with links is not allowed" : "Ha fallat en compartir %s, perquè no es permet compartir amb enllaços",
+ "Not allowed to create a federated share with the same user" : "No està permés crear una compartició federada amb el mateix usuari",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "La compartició de %s ha fallat, no es pot trobar %s, potser el servidor està actualment innacessible.",
+ "Share type %s is not valid for %s" : "La compartició tipus %s no és vàlida per %s",
+ "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Ha fallat en establir els permisos per %s perquè aquests excedeixen els permesos per a %s",
+ "Setting permissions for %s failed, because the item was not found" : "Ha fallat en establir els permisos per %s, perquè no s'ha trobat l'element",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No es pot guardar la data d'expiració. Els fitxers o carpetes compartits no poden expirar més tard de %s després d'haver-se compratit.",
+ "Cannot set expiration date. Expiration date is in the past" : "No es pot guardar la data d'expiració. La data d'expiració ja ha passat.",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "El rerefons de compartició %s ha d'implementar la interfície OCP\\Share_Backend",
+ "Sharing backend %s not found" : "El rerefons de compartició %s no s'ha trobat",
+ "Sharing backend for %s not found" : "El rerefons de compartició per a %s no s'ha trobat",
+ "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Ha fallat en compartir %s perquè els permisos excedeixen els permesos per a %s",
+ "Sharing %s failed, because resharing is not allowed" : "Ha fallat en compartir %s, perquè no es permet compartir de nou",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Ha fallat en compartir %s, perquè el rerefons de compartir per %s no pot trobar la seva font",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Ha fallat en compartir %s, perquè el fitxer no s'ha trobat en el fitxer cau",
+ "Could not find category \"%s\"" : "No s'ha trobat la categoria \"%s\"",
+ "Sunday" : "Diumenge",
+ "Monday" : "Dilluns",
+ "Tuesday" : "Dimarts",
+ "Wednesday" : "Dimecres",
+ "Thursday" : "Dijous",
+ "Friday" : "Divendres",
+ "Saturday" : "Dissabte",
+ "Sun." : "Dg.",
+ "Mon." : "Mon.",
+ "Tue." : "Dm.",
+ "Wed." : "Dc.",
+ "Thu." : "Dj.",
+ "Fri." : "Dv.",
+ "Sat." : "Ds.",
+ "Su" : "Dg",
+ "Mo" : "Dl",
+ "Tu" : "Dm",
+ "We" : "Dc",
+ "Th" : "Dj",
+ "Fr" : "Dv",
+ "Sa" : "Ds",
+ "January" : "Gener",
+ "February" : "Febrer",
+ "March" : "Març",
+ "April" : "Abril",
+ "May" : "Maig",
+ "June" : "Juny",
+ "July" : "Juliol",
+ "August" : "Agost",
+ "September" : "Setembre",
+ "October" : "Octubre",
+ "November" : "Novembre",
+ "December" : "Desembre",
+ "Jan." : "Gen.",
+ "Feb." : "Febr.",
+ "Mar." : "Març",
+ "Apr." : "Abr",
+ "May." : "Maig",
+ "Jun." : "Juny",
+ "Jul." : "Jul.",
+ "Aug." : "Ag.",
+ "Sep." : "Set",
+ "Oct." : "Oct.",
+ "Nov." : "Nov.",
+ "Dec." : "Des.",
+ "Apps" : "Aplicacions",
+ "A valid username must be provided" : "Heu de facilitar un nom d'usuari vàlid",
+ "A valid password must be provided" : "Heu de facilitar una contrasenya vàlida",
+ "The username is already being used" : "El nom d'usuari ja està en ús",
+ "Login canceled by app" : "Accés cancel·lat per l'App",
+ "User disabled" : "Usuari desactivat",
+ "Help" : "Ajuda",
+ "Personal" : "Personal",
+ "Users" : "Usuaris",
+ "Admin" : "Administració",
+ "No app name specified" : "No heu especificat cap nom d'aplicació",
+ "Can't read file" : "No es pot llegir el fitxer",
+ "Application is not enabled" : "L'aplicació no està habilitada",
+ "Authentication error" : "Error d'autenticació",
+ "Token expired. Please reload page." : "El testimoni ha expirat. Torneu a carregar la pàgina.",
+ "Unknown user" : "Usuari desconegut",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "No hi ha instal·lats controladors de bases de dades (sqlite, mysql o postgresql).",
+ "Cannot write into \"config\" directory" : "No es pot escriure a la carpeta \"config\"",
+ "Cannot write into \"apps\" directory" : "No es pot escriure a la carpeta \"apps\"",
+ "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Això normalment es pot solucionar donant a %s permís d'escriptura a la carpeta d'aplicacions %s o inhabilitant la botiga d'aplicacions en el fitxer de configuració.",
+ "Cannot create \"data\" directory (%s)" : "No es pot crear la carpeta \"data\" (%s)",
+ "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Això normalment es pot solucionar donant a %s permís d'escriptura a la carpeta de configuració %s",
+ "Setting locale to %s failed" : "Ha fallat en establir la llengua a %s",
+ "Please install one of these locales on your system and restart your webserver." : "Siusplau, instal·li un d'aquests arxius de localització en el seu sistema, i reinicii el seu servidor web.",
+ "Please ask your server administrator to install the module." : "Demaneu a l'administrador del sistema que instal·li el mòdul.",
+ "PHP module %s not installed." : "El mòdul PHP %s no està instal·lat.",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Això probablement està provocat per una cau/accelerador com Zend OPcache o eAccelerator.",
+ "PHP modules have been installed, but they are still listed as missing?" : "S'han instal·lat mòduls PHP, però encara es llisten com una mancança?",
+ "Please ask your server administrator to restart the web server." : "Demaneu a l'administrador que reinici el servidor web.",
+ "PostgreSQL >= 9 required" : "Es requereix PostgreSQL >= 9",
+ "Please upgrade your database version" : "Actualitzeu la versió de la base de dades",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Canvieu els permisos a 0770 per tal que la carpeta no es pugui llistar per altres usuaris.",
+ "Data directory (%s) is readable by other users" : "La carpeta de dades (%s) és llegible per altres usuaris",
+ "Data directory (%s) is invalid" : "La carpeta de dades (%s) no és vàlida",
+ "Please check that the data directory contains a file \".ocdata\" in its root." : "Comproveu que la carpeta de dades contingui un fitxer \".ocdata\" a la seva arrel.",
+ "Could not obtain lock type %d on \"%s\"." : "No s'ha pogut obtenir un bloqueig tipus %d a \"%s\".",
+ "App directory already exists" : "La carpeta de l'aplicació ja existeix",
+ "Can't create app folder. Please fix permissions. %s" : "No es pot crear la carpeta de l'aplicació. Arregleu els permisos. %s",
+ "No source specified when installing app" : "No heu especificat la font en instal·lar l'aplicació",
+ "No href specified when installing app from http" : "No heu especificat href en instal·lar l'aplicació des de http",
+ "No path specified when installing app from local file" : "No heu seleccionat el camí en instal·lar una aplicació des d'un fitxer local",
+ "Archives of type %s are not supported" : "Els fitxers del tipus %s no són compatibles",
+ "Failed to open archive when installing app" : "Ha fallat l'obertura del fitxer en instal·lar l'aplicació",
+ "App does not provide an info.xml file" : "L'aplicació no proporciona un fitxer info.xml",
+ "App can't be installed because of not allowed code in the App" : "L'aplicació no es pot instal·lar perquè hi ha codi no autoritzat en l'aplicació",
+ "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "L'aplicació no es pot instal·lar perquè conté l'etiqueta <shipped>vertader</shipped> que no es permet per aplicacions no enviades",
+ "Logging" : "Iniciant",
+ "Recommended" : "Recomanat",
+ "Microsoft Windows Platform is not supported" : "La plataforma de Microsoft Windows no està soportat!",
+ "Storage not available" : "Emmagatzemament no disponible"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/ca.json b/lib/l10n/ca.json
new file mode 100644
index 00000000000..f6c692aef0d
--- /dev/null
+++ b/lib/l10n/ca.json
@@ -0,0 +1,175 @@
+{ "translations": {
+ "Cannot write into \"config\" directory!" : "No es pot escriure a la carpeta \"config\"!",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "Això normalment es pot solucionar donant al servidor web permís d'escriptura a la carpeta de configuració",
+ "See %s" : "Comproveu %s",
+ "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Això normalment es pot solucionar donant a %s permís d'escriptura a la carpeta de configuració %s",
+ "Sample configuration detected" : "Configuració d'exemple detectada",
+ "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" : "S'ha detectat que la configuració d'exemple ha estat copiada. Això no està suportat, i podria corrompre la vostra instalació. Siusplau, llegiu la documentació abans de realitzar canvis a config.php",
+ "%1$s and %2$s" : "%1$s i %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s i %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s i %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s i %5$s",
+ "PHP %s or higher is required." : "Es requereix PHP %s o superior.",
+ "Server version %s or higher is required." : "Es requereix una versió de servidor %s o superior",
+ "Server version %s or lower is required." : "Es requereix una versió de servidor %s o inferior",
+ "Unknown filetype" : "Tipus de fitxer desconegut",
+ "Invalid image" : "Imatge no vàlida",
+ "Avatar image is not square" : "La imatge de perfil no és quadrada",
+ "today" : "avui",
+ "yesterday" : "ahir",
+ "_%n day ago_::_%n days ago_" : ["fa %n dia","fa %n dies"],
+ "last month" : "el mes passat",
+ "_%n month ago_::_%n months ago_" : ["fa %n mes","fa %n mesos"],
+ "last year" : "l'any passat",
+ "_%n year ago_::_%n years ago_" : ["fa %n any","fa %n anys"],
+ "_%n hour ago_::_%n hours ago_" : ["fa %n hora","fa %n hores"],
+ "_%n minute ago_::_%n minutes ago_" : ["fa %n minut","fa %n minuts"],
+ "seconds ago" : "segons enrere",
+ "File name contains at least one invalid character" : "El nom del fitxer conté al menys un caràcter invàlid",
+ "File name is too long" : "el nom del fitxer es massa gran",
+ "APCu" : "APCu",
+ "Redis" : "Redis",
+ "Server settings" : "Configuració del Servidor",
+ "Sharing" : "Compartir",
+ "Encryption" : "Xifrat",
+ "Additional settings" : "Configuració adicional",
+ "Tips & tricks" : "Consells i trucs",
+ "%s enter the database username and name." : "%s escriviu el nom d'usuari i el nom de la base de dades.",
+ "%s enter the database username." : "%s escriviu el nom d'usuari de la base de dades.",
+ "%s enter the database name." : "%s escriviu el nom de la base de dades.",
+ "%s you may not use dots in the database name" : "%s no podeu usar punts en el nom de la base de dades",
+ "Oracle connection could not be established" : "No s'ha pogut establir la connexió Oracle",
+ "Oracle username and/or password not valid" : "Nom d'usuari i/o contrasenya Oracle no vàlids",
+ "DB Error: \"%s\"" : "Error DB: \"%s\"",
+ "Offending command was: \"%s\"" : "L'ordre en conflicte és: \"%s\"",
+ "You need to enter either an existing account or the administrator." : "Heu d'escriure un compte existent o el d'administrador.",
+ "Offending command was: \"%s\", name: %s, password: %s" : "L'ordre en conflicte és: \"%s\", nom: %s, contrasenya: %s",
+ "PostgreSQL username and/or password not valid" : "Nom d'usuari i/o contrasenya PostgreSQL no vàlids",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X no té suport i %s no funcionarà correctament en aquesta plataforma. Useu-ho al vostre risc!",
+ "For the best results, please consider using a GNU/Linux server instead." : "Per millors resultats, millor considereu utilitzar un servidor GNU/Linux.",
+ "Set an admin username." : "Establiu un nom d'usuari per l'administrador.",
+ "Set an admin password." : "Establiu una contrasenya per l'administrador.",
+ "Invalid Federated Cloud ID" : "ID de núvol federat invàlid",
+ "%s shared »%s« with you" : "%s ha compartit »%s« amb tu",
+ "%s via %s" : "%s via %s",
+ "Sharing %s failed, because the file does not exist" : "Ha fallat en compartir %s, perquè el fitxer no existeix",
+ "You are not allowed to share %s" : "No se us permet compartir %s",
+ "Sharing %s failed, because the user %s does not exist" : "Ha fallat en compartir %s, perquè l'usuari %s no existeix",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Ha fallat en compartir %s, perquè l'usuari %s no és membre de cap grup dels que %s és membre",
+ "Sharing %s failed, because this item is already shared with %s" : "Ha fallat en compartir %s, perquè l'element ja està compartit amb %s",
+ "Sharing %s failed, because the group %s does not exist" : "Ha fallat en compartir %s, perquè el grup %s no existeix",
+ "Sharing %s failed, because %s is not a member of the group %s" : "Ha fallat en compartir %s, perquè %s no és membre del grup %s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Heu de proporcionar una contrasenya per crear un enllaç públic. Només es permeten enllaços segurs.",
+ "Sharing %s failed, because sharing with links is not allowed" : "Ha fallat en compartir %s, perquè no es permet compartir amb enllaços",
+ "Not allowed to create a federated share with the same user" : "No està permés crear una compartició federada amb el mateix usuari",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "La compartició de %s ha fallat, no es pot trobar %s, potser el servidor està actualment innacessible.",
+ "Share type %s is not valid for %s" : "La compartició tipus %s no és vàlida per %s",
+ "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Ha fallat en establir els permisos per %s perquè aquests excedeixen els permesos per a %s",
+ "Setting permissions for %s failed, because the item was not found" : "Ha fallat en establir els permisos per %s, perquè no s'ha trobat l'element",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No es pot guardar la data d'expiració. Els fitxers o carpetes compartits no poden expirar més tard de %s després d'haver-se compratit.",
+ "Cannot set expiration date. Expiration date is in the past" : "No es pot guardar la data d'expiració. La data d'expiració ja ha passat.",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "El rerefons de compartició %s ha d'implementar la interfície OCP\\Share_Backend",
+ "Sharing backend %s not found" : "El rerefons de compartició %s no s'ha trobat",
+ "Sharing backend for %s not found" : "El rerefons de compartició per a %s no s'ha trobat",
+ "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Ha fallat en compartir %s perquè els permisos excedeixen els permesos per a %s",
+ "Sharing %s failed, because resharing is not allowed" : "Ha fallat en compartir %s, perquè no es permet compartir de nou",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Ha fallat en compartir %s, perquè el rerefons de compartir per %s no pot trobar la seva font",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Ha fallat en compartir %s, perquè el fitxer no s'ha trobat en el fitxer cau",
+ "Could not find category \"%s\"" : "No s'ha trobat la categoria \"%s\"",
+ "Sunday" : "Diumenge",
+ "Monday" : "Dilluns",
+ "Tuesday" : "Dimarts",
+ "Wednesday" : "Dimecres",
+ "Thursday" : "Dijous",
+ "Friday" : "Divendres",
+ "Saturday" : "Dissabte",
+ "Sun." : "Dg.",
+ "Mon." : "Mon.",
+ "Tue." : "Dm.",
+ "Wed." : "Dc.",
+ "Thu." : "Dj.",
+ "Fri." : "Dv.",
+ "Sat." : "Ds.",
+ "Su" : "Dg",
+ "Mo" : "Dl",
+ "Tu" : "Dm",
+ "We" : "Dc",
+ "Th" : "Dj",
+ "Fr" : "Dv",
+ "Sa" : "Ds",
+ "January" : "Gener",
+ "February" : "Febrer",
+ "March" : "Març",
+ "April" : "Abril",
+ "May" : "Maig",
+ "June" : "Juny",
+ "July" : "Juliol",
+ "August" : "Agost",
+ "September" : "Setembre",
+ "October" : "Octubre",
+ "November" : "Novembre",
+ "December" : "Desembre",
+ "Jan." : "Gen.",
+ "Feb." : "Febr.",
+ "Mar." : "Març",
+ "Apr." : "Abr",
+ "May." : "Maig",
+ "Jun." : "Juny",
+ "Jul." : "Jul.",
+ "Aug." : "Ag.",
+ "Sep." : "Set",
+ "Oct." : "Oct.",
+ "Nov." : "Nov.",
+ "Dec." : "Des.",
+ "Apps" : "Aplicacions",
+ "A valid username must be provided" : "Heu de facilitar un nom d'usuari vàlid",
+ "A valid password must be provided" : "Heu de facilitar una contrasenya vàlida",
+ "The username is already being used" : "El nom d'usuari ja està en ús",
+ "Login canceled by app" : "Accés cancel·lat per l'App",
+ "User disabled" : "Usuari desactivat",
+ "Help" : "Ajuda",
+ "Personal" : "Personal",
+ "Users" : "Usuaris",
+ "Admin" : "Administració",
+ "No app name specified" : "No heu especificat cap nom d'aplicació",
+ "Can't read file" : "No es pot llegir el fitxer",
+ "Application is not enabled" : "L'aplicació no està habilitada",
+ "Authentication error" : "Error d'autenticació",
+ "Token expired. Please reload page." : "El testimoni ha expirat. Torneu a carregar la pàgina.",
+ "Unknown user" : "Usuari desconegut",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "No hi ha instal·lats controladors de bases de dades (sqlite, mysql o postgresql).",
+ "Cannot write into \"config\" directory" : "No es pot escriure a la carpeta \"config\"",
+ "Cannot write into \"apps\" directory" : "No es pot escriure a la carpeta \"apps\"",
+ "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Això normalment es pot solucionar donant a %s permís d'escriptura a la carpeta d'aplicacions %s o inhabilitant la botiga d'aplicacions en el fitxer de configuració.",
+ "Cannot create \"data\" directory (%s)" : "No es pot crear la carpeta \"data\" (%s)",
+ "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Això normalment es pot solucionar donant a %s permís d'escriptura a la carpeta de configuració %s",
+ "Setting locale to %s failed" : "Ha fallat en establir la llengua a %s",
+ "Please install one of these locales on your system and restart your webserver." : "Siusplau, instal·li un d'aquests arxius de localització en el seu sistema, i reinicii el seu servidor web.",
+ "Please ask your server administrator to install the module." : "Demaneu a l'administrador del sistema que instal·li el mòdul.",
+ "PHP module %s not installed." : "El mòdul PHP %s no està instal·lat.",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Això probablement està provocat per una cau/accelerador com Zend OPcache o eAccelerator.",
+ "PHP modules have been installed, but they are still listed as missing?" : "S'han instal·lat mòduls PHP, però encara es llisten com una mancança?",
+ "Please ask your server administrator to restart the web server." : "Demaneu a l'administrador que reinici el servidor web.",
+ "PostgreSQL >= 9 required" : "Es requereix PostgreSQL >= 9",
+ "Please upgrade your database version" : "Actualitzeu la versió de la base de dades",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Canvieu els permisos a 0770 per tal que la carpeta no es pugui llistar per altres usuaris.",
+ "Data directory (%s) is readable by other users" : "La carpeta de dades (%s) és llegible per altres usuaris",
+ "Data directory (%s) is invalid" : "La carpeta de dades (%s) no és vàlida",
+ "Please check that the data directory contains a file \".ocdata\" in its root." : "Comproveu que la carpeta de dades contingui un fitxer \".ocdata\" a la seva arrel.",
+ "Could not obtain lock type %d on \"%s\"." : "No s'ha pogut obtenir un bloqueig tipus %d a \"%s\".",
+ "App directory already exists" : "La carpeta de l'aplicació ja existeix",
+ "Can't create app folder. Please fix permissions. %s" : "No es pot crear la carpeta de l'aplicació. Arregleu els permisos. %s",
+ "No source specified when installing app" : "No heu especificat la font en instal·lar l'aplicació",
+ "No href specified when installing app from http" : "No heu especificat href en instal·lar l'aplicació des de http",
+ "No path specified when installing app from local file" : "No heu seleccionat el camí en instal·lar una aplicació des d'un fitxer local",
+ "Archives of type %s are not supported" : "Els fitxers del tipus %s no són compatibles",
+ "Failed to open archive when installing app" : "Ha fallat l'obertura del fitxer en instal·lar l'aplicació",
+ "App does not provide an info.xml file" : "L'aplicació no proporciona un fitxer info.xml",
+ "App can't be installed because of not allowed code in the App" : "L'aplicació no es pot instal·lar perquè hi ha codi no autoritzat en l'aplicació",
+ "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "L'aplicació no es pot instal·lar perquè conté l'etiqueta <shipped>vertader</shipped> que no es permet per aplicacions no enviades",
+ "Logging" : "Iniciant",
+ "Recommended" : "Recomanat",
+ "Microsoft Windows Platform is not supported" : "La plataforma de Microsoft Windows no està soportat!",
+ "Storage not available" : "Emmagatzemament no disponible"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/lib/l10n/el.js b/lib/l10n/el.js
new file mode 100644
index 00000000000..2e8fc517c18
--- /dev/null
+++ b/lib/l10n/el.js
@@ -0,0 +1,200 @@
+OC.L10N.register(
+ "lib",
+ {
+ "Cannot write into \"config\" directory!" : "Αδυναμία εγγραφής στον κατάλογο \"config\"!",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "Αυτό μπορεί συνήθως να διορθωθεί παρέχοντας δικαιώματα εγγραφής για το φάκελο config στο διακομιστή δικτύου",
+ "See %s" : "Δείτε %s",
+ "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Αυτό μπορεί συνήθως να διορθωθεί %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",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s και %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s και %5$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." : "%sbit απαιτείται νεώτερη έκδοση PHP.",
+ "Following databases are supported: %s" : " Υποστηρίζονται οι ακόλουθες βάσεις δεδομένων: %s",
+ "The command line tool %s could not be found" : "Το εργαλείο γραμμής εντολών %s δεν μπορεί να βρεθεί",
+ "The library %s is not available." : "Το %s της βιβλιοθήκης δεν είναι διαθέσιμο.",
+ "Library %s with a version higher than %s is required - available version %s." : "Απαιτείται βιβλιοθήκη %s νεότερη από την έκδοση %s - διαθέσιμη έκδοση %s ",
+ "Library %s with a version lower than %s is required - available version %s." : "Απαιτείται βιβλιοθήκη %s παλαιότερη από την έκδοση %s - διαθέσιμη έκδοση %s ",
+ "Following platforms are supported: %s" : "Οι ακόλουθες πλατφόρμες υποστηρίζονται: %s",
+ "Server version %s or higher is required." : "Απαιτείται έκδοση διακομιστή %s ή νεότερη.",
+ "Server version %s or lower is required." : "Απαιτείται έκδοση διακομιστή %s ή παλαιότερη.",
+ "Unknown filetype" : "Άγνωστος τύπος αρχείου",
+ "Invalid image" : "Μη έγκυρη εικόνα",
+ "today" : "σήμερα",
+ "yesterday" : "χτες",
+ "_%n day ago_::_%n days ago_" : ["%n ημέρα πριν","%n ημέρες πριν"],
+ "last month" : "τελευταίο μήνα",
+ "_%n month ago_::_%n months ago_" : ["πριν %n μήνα","πριν %n μήνες"],
+ "last year" : "τελευταίο χρόνο",
+ "_%n year ago_::_%n years ago_" : ["%n χρόνο πριν","%n χρόνια πριν"],
+ "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" : "Το όνομα αρχείου είναι λέξη που έχει δεσμευτεί",
+ "File name contains at least one invalid character" : "Το όνομα αρχείου περιέχει έναν τουλάχιστον μη έγκυρο χαρακτήρα",
+ "File name is too long" : "Το όνομα αρχείου είνια πολύ μεγάλο",
+ "Dot files are not allowed" : "Δεν επιτρέπονται αρχεία που ξεκινούν από τελεία - Dot ",
+ "Empty filename is not allowed" : "Δεν επιτρέπεται άδειο όνομα αρχείου",
+ "APCu" : "APCu",
+ "Redis" : "Redis",
+ "Server settings" : "Ρυθμίσεις διακομιστή",
+ "Sharing" : "Διαμοιρασμός",
+ "Encryption" : "Κρυπτογράφηση",
+ "Additional settings" : "Επιπρόσθετες ρυθμίσεις",
+ "%s enter the database username." : "%s εισάγετε το όνομα χρήστη της βάσης δεδομένων.",
+ "%s enter the database name." : "%s εισάγετε το όνομα της βάσης δεδομένων.",
+ "%s you may not use dots in the database name" : "%s μάλλον δεν χρησιμοποιείτε τελείες στο όνομα της βάσης δεδομένων",
+ "Oracle connection could not be established" : "Αδυναμία σύνδεσης Oracle",
+ "Oracle username and/or password not valid" : "Μη έγκυρος χρήστης και/ή συνθηματικό της Oracle",
+ "DB Error: \"%s\"" : "Σφάλμα Βάσης Δεδομένων: \"%s\"",
+ "Offending command was: \"%s\"" : "Η εντολη παραβατικοτητας ηταν: \"%s\"",
+ "You need to enter either an existing account or the administrator." : "Χρειάζεται να εισάγετε είτε έναν υπάρχον λογαριασμό ή του διαχειριστή.",
+ "Offending command was: \"%s\", name: %s, password: %s" : "Η εντολη παραβατικοτητας ηταν: \"%s\", ονομα: %s, κωδικος: %s",
+ "PostgreSQL username and/or password not valid" : "Μη έγκυρος χρήστης και/ή συνθηματικό της PostgreSQL",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Το Mac OS X δεν υποστηρίζεται και το %s δεν θα λειτουργήσει σωστά σε αυτή την πλατφόρμα. Χρησιμοποιείτε με δική σας ευθύνη!",
+ "For the best results, please consider using a GNU/Linux server instead." : "Για καλύτερα αποτελέσματα, παρακαλούμε εξετάστε την μετατροπή σε έναν διακομιστή 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." : "Φαίνεται ότι η εγκατάσταση %s εκτελείται σε περιβάλλον 32-bit PHP και η επιλογη open_basedir έχει ρυθμιστεί στο αρχείο php.ini. Αυτό θα οδηγήσει σε προβλήματα με αρχεία πάνω από 4 GB και δεν συνίσταται.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Παρακαλώ αφαιρέστε την ρύθμιση open_basedir μέσα στο αρχείο php.ini ή αλλάξτε σε 64-bit PHP.",
+ "Set an admin username." : "Εισάγετε όνομα χρήστη διαχειριστή.",
+ "Set an admin password." : "Εισάγετε συνθηματικό διαχειριστή.",
+ "Can't create or write into the data directory %s" : "Αδύνατη η δημιουργία ή συγγραφή στον κατάλογο δεδομένων %s",
+ "Invalid Federated Cloud ID" : "Μη έγκυρο Federated Cloud ID",
+ "%s shared »%s« with you" : "Ο %s διαμοιράστηκε μαζί σας το »%s«",
+ "%s via %s" : "%s μέσω %s",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "Αποτυχία διαμοιρασμού %s, γιατί το σύστημα υποστήριξης δεν επιτρέπει κοινόχρηστα τύπου %i",
+ "Sharing %s failed, because the file does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αρχείο δεν υπάρχει",
+ "You are not allowed to share %s" : "Δεν επιτρέπεται να διαμοιράσετε τον πόρο %s",
+ "Sharing %s failed, because you can not share with yourself" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν μπορείτε να διαμοιραστείτε με τον εαυτό σας.",
+ "Sharing %s failed, because the user %s does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν υπάρχει",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν είναι μέλος καμίας ομάδας στην οποία ο χρήστης %s είναι μέλος",
+ "Sharing %s failed, because this item is already shared with %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο ήδη με τον χρήστη %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Αποτυχία διαμοιρασμού με %s, διότι αυτό το αντικείμενο διαμοιράζεται ήδη με τον χρήστη %s",
+ "Sharing %s failed, because the group %s does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί η ομάδα χρηστών %s δεν υπάρχει",
+ "Sharing %s failed, because %s is not a member of the group %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν είναι μέλος της ομάδας %s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Πρέπει να εισάγετε έναν κωδικό για να δημιουργήσετε έναν δημόσιο σύνδεσμο. Μόνο προστατευμένοι σύνδεσμοι επιτρέπονται",
+ "Sharing %s failed, because sharing with links is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο διαμοιρασμός με συνδέσμους",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Αποτυχία διαμοιρασμού %s, δεν βρέθηκε το %s, μπορεί ο διακομιστής να είναι προσωρινά απροσπέλαστος.",
+ "Share type %s is not valid for %s" : "Ο τύπος διαμοιρασμού %s δεν είναι έγκυρος για το %s",
+ "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Ο ορισμός δικαιωμάτων για το %s απέτυχε, γιατί τα δικαιώματα υπερτερούν αυτά που είναι ορισμένα για το %s",
+ "Setting permissions for %s failed, because the item was not found" : "Ο ορισμός δικαιωμάτων για το %s απέτυχε, γιατί το αντικείμενο δεν βρέθηκε",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Δεν μπορεί να οριστεί ημερομηνία λήξης. Οι κοινοποιήσεις δεν μπορεί να λήγουν αργότερα από %s αφού έχουν διαμοιραστεί.",
+ "Cannot set expiration date. Expiration date is in the past" : "Δεν μπορεί να οριστεί ημερομηνία λήξης. Η ημερομηνία λήξης είναι στο παρελθόν",
+ "Cannot clear expiration date. Shares are required to have an expiration date." : "Δεν είναι σαφής η ημερομηνία λήξης. Ο διαμοιρασμός πρέπει να έχει ημερομηνία λήξης",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Το σύστημα διαμοιρασμού %s πρέπει να υλοποιεί την διεπαφή OCP\\Share_Backend",
+ "Sharing backend %s not found" : "Το σύστημα διαμοιρασμού %s δεν βρέθηκε",
+ "Sharing backend for %s not found" : "Το σύστημα διαμοιρασμού για το %s δεν βρέθηκε",
+ "Sharing failed, because the user %s is the original sharer" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο αρχικά από τον ίδιο χρήστη.",
+ "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί τα δικαιώματα υπερτερούν αυτά που είναι ορισμένα για το %s",
+ "Sharing %s failed, because resharing is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο επαναδιαμοιρασμός",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν ήταν δυνατό να εντοπίσει την πηγή το σύστημα διαμοιρασμού για το %s ",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αρχείο δεν βρέθηκε στην προσωρινή αποθήκευση αρχείων",
+ "Could not find category \"%s\"" : "Αδυναμία εύρεσης κατηγορίας \"%s\"",
+ "Sunday" : "Κυριακή",
+ "Monday" : "Δευτέρα",
+ "Tuesday" : "Τρίτη",
+ "Wednesday" : "Τετάρτη",
+ "Thursday" : "Πέμπτη",
+ "Friday" : "Παρασκευή",
+ "Saturday" : "Σάββατο",
+ "Sun." : "Κυρ.",
+ "Mon." : "Δευ.",
+ "Tue." : "Τρί.",
+ "Wed." : "Τετ.",
+ "Thu." : "Πέμ.",
+ "Fri." : "Παρ.",
+ "Sat." : "Σαβ.",
+ "Su" : "Κυ",
+ "Mo" : "Δε",
+ "Tu" : "Τρ",
+ "We" : "Τε",
+ "Th" : "Πε",
+ "Fr" : "Πα",
+ "Sa" : "Σα",
+ "January" : "Ιανουάριος",
+ "February" : "Φεβρουάριος",
+ "March" : "Μάρτιος",
+ "April" : "Απρίλιος",
+ "May" : "Μάϊος",
+ "June" : "Ιούνιος",
+ "July" : "Ιούλιος",
+ "August" : "Αύγουστος",
+ "September" : "Σεπτέμβριος",
+ "October" : "Οκτώβριος",
+ "November" : "Νοέμβριος",
+ "December" : "Δεκέμβριος",
+ "Jan." : "Ιαν.",
+ "Feb." : "Φεβ.",
+ "Mar." : "Μαρ.",
+ "Apr." : "Απρ.",
+ "May." : "Μαι.",
+ "Jun." : "Ιουν.",
+ "Jul." : "Ιουλ.",
+ "Aug." : "Αυγ.",
+ "Sep." : "Σεπ.",
+ "Oct." : "Οκτ.",
+ "Nov." : "Νοε.",
+ "Dec." : "Δεκ.",
+ "Apps" : "Εφαρμογές",
+ "A valid username must be provided" : "Πρέπει να δοθεί έγκυρο όνομα χρήστη",
+ "A valid password must be provided" : "Πρέπει να δοθεί έγκυρο συνθηματικό",
+ "The username is already being used" : "Το όνομα χρήστη είναι κατειλημμένο",
+ "Help" : "Βοήθεια",
+ "Personal" : "Προσωπικά",
+ "Users" : "Χρήστες",
+ "Admin" : "Διαχείριση",
+ "No app name specified" : "Δεν προδιορίστηκε όνομα εφαρμογής",
+ "App '%s' could not be installed!" : "Δεν μπορεί να εγκατασταθεί η εφαρμογή '%s'!",
+ "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Αυτή η εφαρμογή %s δεν μπορεί να εγκατασταθεί διότι δεν πληρούνται οι ακόλουθες εξαρτήσεις: %s",
+ "File is currently busy, please try again later" : "Το αρχείο χρησιμοποιείται αυτή τη στιγμή, παρακαλώ προσπαθήστε αργότερα",
+ "Can't read file" : "Αδυναμία ανάγνωσης αρχείου",
+ "Application is not enabled" : "Δεν ενεργοποιήθηκε η εφαρμογή",
+ "Authentication error" : "Σφάλμα πιστοποίησης",
+ "Token expired. Please reload page." : "Το αναγνωριστικό έληξε. Παρακαλώ φορτώστε ξανά την σελίδα.",
+ "Unknown user" : "Άγνωστος χρήστης",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "Δεν βρέθηκαν εγκατεστημένοι οδηγοί βάσεων δεδομένων (sqlite, mysql, or postgresql).",
+ "Cannot write into \"config\" directory" : "Αδυναμία εγγραφής στον κατάλογο \"config\"",
+ "Cannot write into \"apps\" directory" : "Αδυναμία εγγραφής στον κατάλογο \"apps\"",
+ "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Αυτό μπορεί συνήθως να διορθωθεί %sδίνοντας διακαιώματα εγγραφής για τον κατάλογο εφαρμογών στο διακομιστή δικτύου%s ή απενεργοποιώντας το κέντρο εφαρμογών στο αρχείο config.",
+ "Cannot create \"data\" directory (%s)" : "Αδυναμία δημιουργίας του καταλόγου \"data\" (%s)",
+ "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Τα δικαιώματα πρόσβασης μπορούν συνήθως να διορθωθούν %sδίνοντας δικαιώματα εγγραφής για τον βασικό κατάλογο στο διακομιστή δικτύου%s.",
+ "Setting locale to %s failed" : "Ρύθμιση τοπικών ρυθμίσεων σε %s απέτυχε",
+ "Please install one of these locales on your system and restart your webserver." : "Παρακαλώ να εγκαταστήσετε μία από αυτές τις τοπικές ρυθμίσεις στο σύστημά σας και να επανεκκινήσετε τον διακομιστή δικτύου σας.",
+ "Please ask your server administrator to install the module." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να εγκαταστήσει τη μονάδα.",
+ "PHP module %s not installed." : "Η μονάδα %s PHP δεν είναι εγκατεστημένη. ",
+ "PHP setting \"%s\" is not set to \"%s\"." : "Η ρύθμιση \"%s\"της PHP δεν είναι ορισμένη σε \"%s\".",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "Το mbstring.func_overload έχει ορισθεί σε \"%s\" αντί για την αναμενόμενη τιμή \"0\"",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Για να διορθώσετε αυτό το πρόβλημα ορίστε το <code>mbstring.func_overload</code> σε <code>0</code> στο αρχείο php.ini",
+ "To fix this issue update your libxml2 version and restart your web server." : "Για να διορθώσετε το σφάλμα ενημερώστε την έκδοση του libxml2 και επανεκκινήστε τον διακομιστή.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Η PHP φαίνεται να είναι ρυθμισμένη ώστε να αφαιρεί inline doc blocks. Αυτό θα καταστήσει πολλές βασικές εφαρμογές μη διαθέσιμες.",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Αυτό πιθανόν προκλήθηκε από προσωρινή μνήμη (cache)/επιταχυντή όπως τη Zend OPcache ή τον eAccelerator.",
+ "PHP modules have been installed, but they are still listed as missing?" : "Κάποιες μονάδες PHP έχουν εγκατασταθεί, αλλά είναι ακόμα καταγεγραμμένες ως απούσες;",
+ "Please ask your server administrator to restart the web server." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να επανεκκινήσει το διακομιστή δικτύου σας.",
+ "PostgreSQL >= 9 required" : "Απαιτείται PostgreSQL >= 9",
+ "Please upgrade your database version" : "Παρακαλώ αναβαθμίστε την έκδοση της βάσης δεδομένων σας",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Παρακαλώ αλλάξτε τις ρυθμίσεις σε 0770 έτσι ώστε ο κατάλογος να μην μπορεί να προβάλλεται από άλλους χρήστες.",
+ "Data directory (%s) is readable by other users" : "Ο κατάλογος δεδομένων (%s) είναι διαθέσιμος προς ανάγνωση για άλλους χρήστες",
+ "Data directory (%s) must be an absolute path" : "Κατάλογος δεδομένων (%s) πρεπει να είναι απόλυτη η διαδρομή",
+ "Check the value of \"datadirectory\" in your configuration" : "Ελέγξτε την τιμή του \"Φάκελος Δεδομένων\" στις ρυθμίσεις σας",
+ "Data directory (%s) is invalid" : "Ο κατάλογος δεδομένων (%s) είναι άκυρος",
+ "Please check that the data directory contains a file \".ocdata\" in its root." : "Παρακαλώ ελέγξτε ότι ο κατάλογος δεδομένων περιέχει ένα αρχείο \".ocdata\" στη βάση του.",
+ "Could not obtain lock type %d on \"%s\"." : "Αδυναμία ανάκτησης τύπου κλειδιού %d στο \"%s\".",
+ "4-byte characters are not supported in file names" : "Χαρακτήρες 4-byte δεν υποστηρίζονται σε ονόματα αρχείων",
+ "App directory already exists" : "Ο κατάλογος εφαρμογών υπάρχει ήδη",
+ "Can't create app folder. Please fix permissions. %s" : "Δεν είναι δυνατόν να δημιουργηθεί ο φάκελος εφαρμογής. Παρακαλώ διορθώστε τις άδειες πρόσβασης. %s",
+ "Archive does not contain a directory named %s" : "Το αρχείο δεν περιέχει κατάλογο με το όνομα %s",
+ "No source specified when installing app" : "Δεν προσδιορίστηκε πηγή κατά την εγκατάσταση της εφαρμογής",
+ "No href specified when installing app from http" : "Δεν προσδιορίστηκε href κατά την εγκατάσταση της εφαρμογής μέσω http ",
+ "No path specified when installing app from local file" : "Δεν προσδιορίστηκε μονοπάτι κατά την εγκατάσταση εφαρμογής από τοπικό αρχείο",
+ "Archives of type %s are not supported" : "Συλλογές αρχείων τύπου %s δεν υποστηρίζονται",
+ "Failed to open archive when installing app" : "Αποτυχία ανοίγματος συλλογής αρχείων κατά την εγκατάσταση εφαρμογής",
+ "App does not provide an info.xml file" : "Η εφαρμογή δεν παρέχει αρχείο info.xml",
+ "App can't be installed because of not allowed code in the App" : "Η εφαρμογή δεν μπορεί να εγκατασταθεί λόγω μη-επιτρεπόμενου κώδικα μέσα στην Εφαρμογή",
+ "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Η εφαρμογή δεν μπορεί να εγκατασταθεί επειδή περιέχει την ετικέτα <shipped>σωστή</shipped> που δεν επιτρέπεται για μη-ενσωματωμένες εφαρμογές",
+ "Recommended" : "Προτείνεται",
+ "Microsoft Windows Platform is not supported" : "Η Πλατφόρμα Microsoft Windows δεν υποστηρίζεται",
+ "Storage not available" : "Μη διαθέσιμος αποθηκευτικός χώρος"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/el.json b/lib/l10n/el.json
new file mode 100644
index 00000000000..807a97f3b01
--- /dev/null
+++ b/lib/l10n/el.json
@@ -0,0 +1,198 @@
+{ "translations": {
+ "Cannot write into \"config\" directory!" : "Αδυναμία εγγραφής στον κατάλογο \"config\"!",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "Αυτό μπορεί συνήθως να διορθωθεί παρέχοντας δικαιώματα εγγραφής για το φάκελο config στο διακομιστή δικτύου",
+ "See %s" : "Δείτε %s",
+ "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Αυτό μπορεί συνήθως να διορθωθεί %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",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s και %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s και %5$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." : "%sbit απαιτείται νεώτερη έκδοση PHP.",
+ "Following databases are supported: %s" : " Υποστηρίζονται οι ακόλουθες βάσεις δεδομένων: %s",
+ "The command line tool %s could not be found" : "Το εργαλείο γραμμής εντολών %s δεν μπορεί να βρεθεί",
+ "The library %s is not available." : "Το %s της βιβλιοθήκης δεν είναι διαθέσιμο.",
+ "Library %s with a version higher than %s is required - available version %s." : "Απαιτείται βιβλιοθήκη %s νεότερη από την έκδοση %s - διαθέσιμη έκδοση %s ",
+ "Library %s with a version lower than %s is required - available version %s." : "Απαιτείται βιβλιοθήκη %s παλαιότερη από την έκδοση %s - διαθέσιμη έκδοση %s ",
+ "Following platforms are supported: %s" : "Οι ακόλουθες πλατφόρμες υποστηρίζονται: %s",
+ "Server version %s or higher is required." : "Απαιτείται έκδοση διακομιστή %s ή νεότερη.",
+ "Server version %s or lower is required." : "Απαιτείται έκδοση διακομιστή %s ή παλαιότερη.",
+ "Unknown filetype" : "Άγνωστος τύπος αρχείου",
+ "Invalid image" : "Μη έγκυρη εικόνα",
+ "today" : "σήμερα",
+ "yesterday" : "χτες",
+ "_%n day ago_::_%n days ago_" : ["%n ημέρα πριν","%n ημέρες πριν"],
+ "last month" : "τελευταίο μήνα",
+ "_%n month ago_::_%n months ago_" : ["πριν %n μήνα","πριν %n μήνες"],
+ "last year" : "τελευταίο χρόνο",
+ "_%n year ago_::_%n years ago_" : ["%n χρόνο πριν","%n χρόνια πριν"],
+ "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" : "Το όνομα αρχείου είναι λέξη που έχει δεσμευτεί",
+ "File name contains at least one invalid character" : "Το όνομα αρχείου περιέχει έναν τουλάχιστον μη έγκυρο χαρακτήρα",
+ "File name is too long" : "Το όνομα αρχείου είνια πολύ μεγάλο",
+ "Dot files are not allowed" : "Δεν επιτρέπονται αρχεία που ξεκινούν από τελεία - Dot ",
+ "Empty filename is not allowed" : "Δεν επιτρέπεται άδειο όνομα αρχείου",
+ "APCu" : "APCu",
+ "Redis" : "Redis",
+ "Server settings" : "Ρυθμίσεις διακομιστή",
+ "Sharing" : "Διαμοιρασμός",
+ "Encryption" : "Κρυπτογράφηση",
+ "Additional settings" : "Επιπρόσθετες ρυθμίσεις",
+ "%s enter the database username." : "%s εισάγετε το όνομα χρήστη της βάσης δεδομένων.",
+ "%s enter the database name." : "%s εισάγετε το όνομα της βάσης δεδομένων.",
+ "%s you may not use dots in the database name" : "%s μάλλον δεν χρησιμοποιείτε τελείες στο όνομα της βάσης δεδομένων",
+ "Oracle connection could not be established" : "Αδυναμία σύνδεσης Oracle",
+ "Oracle username and/or password not valid" : "Μη έγκυρος χρήστης και/ή συνθηματικό της Oracle",
+ "DB Error: \"%s\"" : "Σφάλμα Βάσης Δεδομένων: \"%s\"",
+ "Offending command was: \"%s\"" : "Η εντολη παραβατικοτητας ηταν: \"%s\"",
+ "You need to enter either an existing account or the administrator." : "Χρειάζεται να εισάγετε είτε έναν υπάρχον λογαριασμό ή του διαχειριστή.",
+ "Offending command was: \"%s\", name: %s, password: %s" : "Η εντολη παραβατικοτητας ηταν: \"%s\", ονομα: %s, κωδικος: %s",
+ "PostgreSQL username and/or password not valid" : "Μη έγκυρος χρήστης και/ή συνθηματικό της PostgreSQL",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Το Mac OS X δεν υποστηρίζεται και το %s δεν θα λειτουργήσει σωστά σε αυτή την πλατφόρμα. Χρησιμοποιείτε με δική σας ευθύνη!",
+ "For the best results, please consider using a GNU/Linux server instead." : "Για καλύτερα αποτελέσματα, παρακαλούμε εξετάστε την μετατροπή σε έναν διακομιστή 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." : "Φαίνεται ότι η εγκατάσταση %s εκτελείται σε περιβάλλον 32-bit PHP και η επιλογη open_basedir έχει ρυθμιστεί στο αρχείο php.ini. Αυτό θα οδηγήσει σε προβλήματα με αρχεία πάνω από 4 GB και δεν συνίσταται.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Παρακαλώ αφαιρέστε την ρύθμιση open_basedir μέσα στο αρχείο php.ini ή αλλάξτε σε 64-bit PHP.",
+ "Set an admin username." : "Εισάγετε όνομα χρήστη διαχειριστή.",
+ "Set an admin password." : "Εισάγετε συνθηματικό διαχειριστή.",
+ "Can't create or write into the data directory %s" : "Αδύνατη η δημιουργία ή συγγραφή στον κατάλογο δεδομένων %s",
+ "Invalid Federated Cloud ID" : "Μη έγκυρο Federated Cloud ID",
+ "%s shared »%s« with you" : "Ο %s διαμοιράστηκε μαζί σας το »%s«",
+ "%s via %s" : "%s μέσω %s",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "Αποτυχία διαμοιρασμού %s, γιατί το σύστημα υποστήριξης δεν επιτρέπει κοινόχρηστα τύπου %i",
+ "Sharing %s failed, because the file does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αρχείο δεν υπάρχει",
+ "You are not allowed to share %s" : "Δεν επιτρέπεται να διαμοιράσετε τον πόρο %s",
+ "Sharing %s failed, because you can not share with yourself" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν μπορείτε να διαμοιραστείτε με τον εαυτό σας.",
+ "Sharing %s failed, because the user %s does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν υπάρχει",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν είναι μέλος καμίας ομάδας στην οποία ο χρήστης %s είναι μέλος",
+ "Sharing %s failed, because this item is already shared with %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο ήδη με τον χρήστη %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Αποτυχία διαμοιρασμού με %s, διότι αυτό το αντικείμενο διαμοιράζεται ήδη με τον χρήστη %s",
+ "Sharing %s failed, because the group %s does not exist" : "Ο διαμοιρασμός του %s απέτυχε, γιατί η ομάδα χρηστών %s δεν υπάρχει",
+ "Sharing %s failed, because %s is not a member of the group %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί ο χρήστης %s δεν είναι μέλος της ομάδας %s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Πρέπει να εισάγετε έναν κωδικό για να δημιουργήσετε έναν δημόσιο σύνδεσμο. Μόνο προστατευμένοι σύνδεσμοι επιτρέπονται",
+ "Sharing %s failed, because sharing with links is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο διαμοιρασμός με συνδέσμους",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Αποτυχία διαμοιρασμού %s, δεν βρέθηκε το %s, μπορεί ο διακομιστής να είναι προσωρινά απροσπέλαστος.",
+ "Share type %s is not valid for %s" : "Ο τύπος διαμοιρασμού %s δεν είναι έγκυρος για το %s",
+ "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Ο ορισμός δικαιωμάτων για το %s απέτυχε, γιατί τα δικαιώματα υπερτερούν αυτά που είναι ορισμένα για το %s",
+ "Setting permissions for %s failed, because the item was not found" : "Ο ορισμός δικαιωμάτων για το %s απέτυχε, γιατί το αντικείμενο δεν βρέθηκε",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Δεν μπορεί να οριστεί ημερομηνία λήξης. Οι κοινοποιήσεις δεν μπορεί να λήγουν αργότερα από %s αφού έχουν διαμοιραστεί.",
+ "Cannot set expiration date. Expiration date is in the past" : "Δεν μπορεί να οριστεί ημερομηνία λήξης. Η ημερομηνία λήξης είναι στο παρελθόν",
+ "Cannot clear expiration date. Shares are required to have an expiration date." : "Δεν είναι σαφής η ημερομηνία λήξης. Ο διαμοιρασμός πρέπει να έχει ημερομηνία λήξης",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Το σύστημα διαμοιρασμού %s πρέπει να υλοποιεί την διεπαφή OCP\\Share_Backend",
+ "Sharing backend %s not found" : "Το σύστημα διαμοιρασμού %s δεν βρέθηκε",
+ "Sharing backend for %s not found" : "Το σύστημα διαμοιρασμού για το %s δεν βρέθηκε",
+ "Sharing failed, because the user %s is the original sharer" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αντικείμενο είναι διαμοιρασμένο αρχικά από τον ίδιο χρήστη.",
+ "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Ο διαμοιρασμός του %s απέτυχε, γιατί τα δικαιώματα υπερτερούν αυτά που είναι ορισμένα για το %s",
+ "Sharing %s failed, because resharing is not allowed" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν επιτρέπεται ο επαναδιαμοιρασμός",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Ο διαμοιρασμός του %s απέτυχε, γιατί δεν ήταν δυνατό να εντοπίσει την πηγή το σύστημα διαμοιρασμού για το %s ",
+ "Sharing %s failed, because the file could not be found in the file cache" : "Ο διαμοιρασμός του %s απέτυχε, γιατί το αρχείο δεν βρέθηκε στην προσωρινή αποθήκευση αρχείων",
+ "Could not find category \"%s\"" : "Αδυναμία εύρεσης κατηγορίας \"%s\"",
+ "Sunday" : "Κυριακή",
+ "Monday" : "Δευτέρα",
+ "Tuesday" : "Τρίτη",
+ "Wednesday" : "Τετάρτη",
+ "Thursday" : "Πέμπτη",
+ "Friday" : "Παρασκευή",
+ "Saturday" : "Σάββατο",
+ "Sun." : "Κυρ.",
+ "Mon." : "Δευ.",
+ "Tue." : "Τρί.",
+ "Wed." : "Τετ.",
+ "Thu." : "Πέμ.",
+ "Fri." : "Παρ.",
+ "Sat." : "Σαβ.",
+ "Su" : "Κυ",
+ "Mo" : "Δε",
+ "Tu" : "Τρ",
+ "We" : "Τε",
+ "Th" : "Πε",
+ "Fr" : "Πα",
+ "Sa" : "Σα",
+ "January" : "Ιανουάριος",
+ "February" : "Φεβρουάριος",
+ "March" : "Μάρτιος",
+ "April" : "Απρίλιος",
+ "May" : "Μάϊος",
+ "June" : "Ιούνιος",
+ "July" : "Ιούλιος",
+ "August" : "Αύγουστος",
+ "September" : "Σεπτέμβριος",
+ "October" : "Οκτώβριος",
+ "November" : "Νοέμβριος",
+ "December" : "Δεκέμβριος",
+ "Jan." : "Ιαν.",
+ "Feb." : "Φεβ.",
+ "Mar." : "Μαρ.",
+ "Apr." : "Απρ.",
+ "May." : "Μαι.",
+ "Jun." : "Ιουν.",
+ "Jul." : "Ιουλ.",
+ "Aug." : "Αυγ.",
+ "Sep." : "Σεπ.",
+ "Oct." : "Οκτ.",
+ "Nov." : "Νοε.",
+ "Dec." : "Δεκ.",
+ "Apps" : "Εφαρμογές",
+ "A valid username must be provided" : "Πρέπει να δοθεί έγκυρο όνομα χρήστη",
+ "A valid password must be provided" : "Πρέπει να δοθεί έγκυρο συνθηματικό",
+ "The username is already being used" : "Το όνομα χρήστη είναι κατειλημμένο",
+ "Help" : "Βοήθεια",
+ "Personal" : "Προσωπικά",
+ "Users" : "Χρήστες",
+ "Admin" : "Διαχείριση",
+ "No app name specified" : "Δεν προδιορίστηκε όνομα εφαρμογής",
+ "App '%s' could not be installed!" : "Δεν μπορεί να εγκατασταθεί η εφαρμογή '%s'!",
+ "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Αυτή η εφαρμογή %s δεν μπορεί να εγκατασταθεί διότι δεν πληρούνται οι ακόλουθες εξαρτήσεις: %s",
+ "File is currently busy, please try again later" : "Το αρχείο χρησιμοποιείται αυτή τη στιγμή, παρακαλώ προσπαθήστε αργότερα",
+ "Can't read file" : "Αδυναμία ανάγνωσης αρχείου",
+ "Application is not enabled" : "Δεν ενεργοποιήθηκε η εφαρμογή",
+ "Authentication error" : "Σφάλμα πιστοποίησης",
+ "Token expired. Please reload page." : "Το αναγνωριστικό έληξε. Παρακαλώ φορτώστε ξανά την σελίδα.",
+ "Unknown user" : "Άγνωστος χρήστης",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "Δεν βρέθηκαν εγκατεστημένοι οδηγοί βάσεων δεδομένων (sqlite, mysql, or postgresql).",
+ "Cannot write into \"config\" directory" : "Αδυναμία εγγραφής στον κατάλογο \"config\"",
+ "Cannot write into \"apps\" directory" : "Αδυναμία εγγραφής στον κατάλογο \"apps\"",
+ "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Αυτό μπορεί συνήθως να διορθωθεί %sδίνοντας διακαιώματα εγγραφής για τον κατάλογο εφαρμογών στο διακομιστή δικτύου%s ή απενεργοποιώντας το κέντρο εφαρμογών στο αρχείο config.",
+ "Cannot create \"data\" directory (%s)" : "Αδυναμία δημιουργίας του καταλόγου \"data\" (%s)",
+ "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Τα δικαιώματα πρόσβασης μπορούν συνήθως να διορθωθούν %sδίνοντας δικαιώματα εγγραφής για τον βασικό κατάλογο στο διακομιστή δικτύου%s.",
+ "Setting locale to %s failed" : "Ρύθμιση τοπικών ρυθμίσεων σε %s απέτυχε",
+ "Please install one of these locales on your system and restart your webserver." : "Παρακαλώ να εγκαταστήσετε μία από αυτές τις τοπικές ρυθμίσεις στο σύστημά σας και να επανεκκινήσετε τον διακομιστή δικτύου σας.",
+ "Please ask your server administrator to install the module." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να εγκαταστήσει τη μονάδα.",
+ "PHP module %s not installed." : "Η μονάδα %s PHP δεν είναι εγκατεστημένη. ",
+ "PHP setting \"%s\" is not set to \"%s\"." : "Η ρύθμιση \"%s\"της PHP δεν είναι ορισμένη σε \"%s\".",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "Το mbstring.func_overload έχει ορισθεί σε \"%s\" αντί για την αναμενόμενη τιμή \"0\"",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Για να διορθώσετε αυτό το πρόβλημα ορίστε το <code>mbstring.func_overload</code> σε <code>0</code> στο αρχείο php.ini",
+ "To fix this issue update your libxml2 version and restart your web server." : "Για να διορθώσετε το σφάλμα ενημερώστε την έκδοση του libxml2 και επανεκκινήστε τον διακομιστή.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Η PHP φαίνεται να είναι ρυθμισμένη ώστε να αφαιρεί inline doc blocks. Αυτό θα καταστήσει πολλές βασικές εφαρμογές μη διαθέσιμες.",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Αυτό πιθανόν προκλήθηκε από προσωρινή μνήμη (cache)/επιταχυντή όπως τη Zend OPcache ή τον eAccelerator.",
+ "PHP modules have been installed, but they are still listed as missing?" : "Κάποιες μονάδες PHP έχουν εγκατασταθεί, αλλά είναι ακόμα καταγεγραμμένες ως απούσες;",
+ "Please ask your server administrator to restart the web server." : "Παρακαλώ ζητήστε από το διαχειριστή του διακομιστή σας να επανεκκινήσει το διακομιστή δικτύου σας.",
+ "PostgreSQL >= 9 required" : "Απαιτείται PostgreSQL >= 9",
+ "Please upgrade your database version" : "Παρακαλώ αναβαθμίστε την έκδοση της βάσης δεδομένων σας",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Παρακαλώ αλλάξτε τις ρυθμίσεις σε 0770 έτσι ώστε ο κατάλογος να μην μπορεί να προβάλλεται από άλλους χρήστες.",
+ "Data directory (%s) is readable by other users" : "Ο κατάλογος δεδομένων (%s) είναι διαθέσιμος προς ανάγνωση για άλλους χρήστες",
+ "Data directory (%s) must be an absolute path" : "Κατάλογος δεδομένων (%s) πρεπει να είναι απόλυτη η διαδρομή",
+ "Check the value of \"datadirectory\" in your configuration" : "Ελέγξτε την τιμή του \"Φάκελος Δεδομένων\" στις ρυθμίσεις σας",
+ "Data directory (%s) is invalid" : "Ο κατάλογος δεδομένων (%s) είναι άκυρος",
+ "Please check that the data directory contains a file \".ocdata\" in its root." : "Παρακαλώ ελέγξτε ότι ο κατάλογος δεδομένων περιέχει ένα αρχείο \".ocdata\" στη βάση του.",
+ "Could not obtain lock type %d on \"%s\"." : "Αδυναμία ανάκτησης τύπου κλειδιού %d στο \"%s\".",
+ "4-byte characters are not supported in file names" : "Χαρακτήρες 4-byte δεν υποστηρίζονται σε ονόματα αρχείων",
+ "App directory already exists" : "Ο κατάλογος εφαρμογών υπάρχει ήδη",
+ "Can't create app folder. Please fix permissions. %s" : "Δεν είναι δυνατόν να δημιουργηθεί ο φάκελος εφαρμογής. Παρακαλώ διορθώστε τις άδειες πρόσβασης. %s",
+ "Archive does not contain a directory named %s" : "Το αρχείο δεν περιέχει κατάλογο με το όνομα %s",
+ "No source specified when installing app" : "Δεν προσδιορίστηκε πηγή κατά την εγκατάσταση της εφαρμογής",
+ "No href specified when installing app from http" : "Δεν προσδιορίστηκε href κατά την εγκατάσταση της εφαρμογής μέσω http ",
+ "No path specified when installing app from local file" : "Δεν προσδιορίστηκε μονοπάτι κατά την εγκατάσταση εφαρμογής από τοπικό αρχείο",
+ "Archives of type %s are not supported" : "Συλλογές αρχείων τύπου %s δεν υποστηρίζονται",
+ "Failed to open archive when installing app" : "Αποτυχία ανοίγματος συλλογής αρχείων κατά την εγκατάσταση εφαρμογής",
+ "App does not provide an info.xml file" : "Η εφαρμογή δεν παρέχει αρχείο info.xml",
+ "App can't be installed because of not allowed code in the App" : "Η εφαρμογή δεν μπορεί να εγκατασταθεί λόγω μη-επιτρεπόμενου κώδικα μέσα στην Εφαρμογή",
+ "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Η εφαρμογή δεν μπορεί να εγκατασταθεί επειδή περιέχει την ετικέτα <shipped>σωστή</shipped> που δεν επιτρέπεται για μη-ενσωματωμένες εφαρμογές",
+ "Recommended" : "Προτείνεται",
+ "Microsoft Windows Platform is not supported" : "Η Πλατφόρμα Microsoft Windows δεν υποστηρίζεται",
+ "Storage not available" : "Μη διαθέσιμος αποθηκευτικός χώρος"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js
index c473cc18a71..96d77556deb 100644
--- a/lib/l10n/fr.js
+++ b/lib/l10n/fr.js
@@ -57,7 +57,7 @@ OC.L10N.register(
"Oracle username and/or password not valid" : "Nom d'utilisateur et/ou mot de passe de la base Oracle non valide(s)",
"DB Error: \"%s\"" : "Erreur de la base de données : \"%s\"",
"Offending command was: \"%s\"" : "La requête en cause est : \"%s\"",
- "You need to enter either an existing account or the administrator." : "Vous devez spécifier le nom d'un compte existant, ou celui de l'administrateur.",
+ "You need to enter either an existing account or the administrator." : "Vous devez indiquer un compte existant ou celui de l'administrateur.",
"Offending command was: \"%s\", name: %s, password: %s" : "La requête en cause est : \"%s\", nom : %s, mot de passe : %s",
"PostgreSQL username and/or password not valid" : "Nom d'utilisateur et/ou mot de passe de la base PostgreSQL non valide(s)",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X n'est pas pris en charge et %s ne fonctionnera pas correctement sur cette plate-forme. Son utilisation est à vos risques et périls !",
diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json
index 121c031e5a0..a9b89108b70 100644
--- a/lib/l10n/fr.json
+++ b/lib/l10n/fr.json
@@ -55,7 +55,7 @@
"Oracle username and/or password not valid" : "Nom d'utilisateur et/ou mot de passe de la base Oracle non valide(s)",
"DB Error: \"%s\"" : "Erreur de la base de données : \"%s\"",
"Offending command was: \"%s\"" : "La requête en cause est : \"%s\"",
- "You need to enter either an existing account or the administrator." : "Vous devez spécifier le nom d'un compte existant, ou celui de l'administrateur.",
+ "You need to enter either an existing account or the administrator." : "Vous devez indiquer un compte existant ou celui de l'administrateur.",
"Offending command was: \"%s\", name: %s, password: %s" : "La requête en cause est : \"%s\", nom : %s, mot de passe : %s",
"PostgreSQL username and/or password not valid" : "Nom d'utilisateur et/ou mot de passe de la base PostgreSQL non valide(s)",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X n'est pas pris en charge et %s ne fonctionnera pas correctement sur cette plate-forme. Son utilisation est à vos risques et périls !",
diff --git a/lib/l10n/he.js b/lib/l10n/he.js
new file mode 100644
index 00000000000..209214a7862
--- /dev/null
+++ b/lib/l10n/he.js
@@ -0,0 +1,211 @@
+OC.L10N.register(
+ "lib",
+ {
+ "Cannot write into \"config\" directory!" : "לא ניתן לכתוב לתיקיית \"config\"!",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "בדרך כלל ניתן לפתור את הבעיה על ידי כך שנותנים ל- webserver הרשאות כניסה לתיקיית confg",
+ "See %s" : "ניתן לראות %s",
+ "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "בדרך כלל ניתן לפתור את הבעיה על ידי כך ש- %s נותן ל- webserver הרשאות כניסה לתיקיית 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",
+ "PHP %s or higher is required." : "נדרש PHP בגרסת %s ומעלה.",
+ "PHP with a version lower than %s is required." : "נדרש PHP בגרסה נמוכה מ- %s.",
+ "%sbit or higher PHP required." : "נדרש PHP בגרסת %s ומעלה.",
+ "Following databases are supported: %s" : "מסדי הנתונים הבאים נתמכים: %s",
+ "The command line tool %s could not be found" : "כלי שורת הפקודה %s לא אותר",
+ "The library %s is not available." : "הספריה %s אינה זמינה.",
+ "Library %s with a version higher than %s is required - available version %s." : "ספריה %s בגרסה גבוהה מ- %s נדרשת - גרסה זמינה %s.",
+ "Library %s with a version lower than %s is required - available version %s." : "ספריה %s בגרסה נמוכה מ- %s נדרשת - גרסה זמינה %s.",
+ "Following platforms are supported: %s" : "הפלטפורמות הבאות נתמכות: %s",
+ "Unknown filetype" : "סוג קובץ לא מוכר",
+ "Invalid image" : "תמונה לא חוקית",
+ "today" : "היום",
+ "yesterday" : "אתמול",
+ "_%n day ago_::_%n days ago_" : ["לפני %n יום","לפני %n ימים"],
+ "last month" : "חודש שעבר",
+ "last year" : "שנה שעברה",
+ "_%n year ago_::_%n years ago_" : ["לפני %n שנה","לפני %n שנים"],
+ "seconds ago" : "שניות",
+ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "מודול עם זהות: %s אינו קיים. יש לאפשר את זה בהגדרות היישומים או ליצור קשר עם המנהל.",
+ "File name is a reserved word" : "שם קובץ הנו מילה שמורה",
+ "File name contains at least one invalid character" : "שם קובץ כולל לפחות תו אחד לא חוקי",
+ "File name is too long" : "שם קובץ ארוך מדי",
+ "Dot files are not allowed" : "קבצי Dot אינם מותרים",
+ "Empty filename is not allowed" : "שם קובץ ריק אינו מאושר",
+ "Server settings" : "הגדרות שרת",
+ "Sharing" : "שיתוף",
+ "Tips & tricks" : "טיפים וטריקים",
+ "%s enter the database username and name." : "%s יש להכניס את שם המשתמש ושם מסד הנתונים.",
+ "%s enter the database username." : "%s נכנס למסד נתוני שמות המשתמשים.",
+ "%s enter the database name." : "%s נכנס למסד נתוני השמות.",
+ "%s you may not use dots in the database name" : "%s לא ניתן להשתמש בנקודות בשם מסד הנתונים",
+ "Oracle connection could not be established" : "לא ניתן היה ליצור חיבור Oracle",
+ "Oracle username and/or password not valid" : "שם משתמש ו/או סיסמת Oracle אינם תקפים",
+ "DB Error: \"%s\"" : "שגיאת מסד נתונים: \"%s\"",
+ "Offending command was: \"%s\"" : "הפקודה המזיקה הייתה: \"%s\"",
+ "You need to enter either an existing account or the administrator." : "יש להכניס חשבון קיים או מנהל.",
+ "Offending command was: \"%s\", name: %s, password: %s" : "הפקודה המזיקה הייתה: \"%s\", שם: %s, סיסמא: %s",
+ "PostgreSQL username and/or password not valid" : "שם משתמש ו/או סיסמת PostgreSQL אינם תקפים",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X אינו נתמך ו- %s לא יעבוד כשורה בפלטפורמה זו. ניתן לקחת סיכון ולהשתמש באחריותך! ",
+ "For the best results, please consider using a GNU/Linux server instead." : "לתוצאות הכי טובות, יש לשקול שימוש בשרת 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." : "נראה ש- %s עובד על בסיס סביבת 32-bit PHP ושה- open_basedir הוגדר בקובץ php.ini. מצב זה יוביל לבעיות עם קבצים הגדולים מ- 4 GB ואינו מומלץ לחלוטין.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "יש להסיר את הגדרת open_basedir מתוך קובץ php.ini או להחליף לסביבת 64-bit PHP.",
+ "Set an admin username." : "קביעת שם משתמש מנהל",
+ "Set an admin password." : "קביעת סיסמת מנהל",
+ "Can't create or write into the data directory %s" : "לא ניתן ליצור או לכתוב לתוך תיקיית הנתונים %s",
+ "Invalid Federated Cloud ID" : "זיהוי ענן מאוגד לא חוקי",
+ "%s shared »%s« with you" : "%s שיתף/שיתפה איתך את »%s«",
+ "%s via %s" : "%s על בסיס %s",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "השיתוף %s נכשל, כיוון שהצד האחורי אינו מאפשר שיתופים מסוג %i",
+ "Sharing %s failed, because the file does not exist" : "השיתוף %s נכשל, כיוון שהקובץ אינו קיים",
+ "You are not allowed to share %s" : "אינך רשאי/ת לשתף %s",
+ "Sharing %s failed, because you can not share with yourself" : "השיתוף %s נכשל, כיוון שלא ניתן לשתף עם עצמך",
+ "Sharing %s failed, because the user %s does not exist" : "השיתוף %s נכשל, כיוון שהמשתמש %s אינו קיים",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "השיתוף %s נכשל, כיוון שהמשתמש %s אינו חבר בקבוצות ש- %s חבר ב-",
+ "Sharing %s failed, because this item is already shared with %s" : "שיתוף %s נכשל, כיוון שפריט זה כבר משותף עם %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "השיתוף %s נכשל, כיוון שהפריט כבר משותף עם משתמש %s",
+ "Sharing %s failed, because the group %s does not exist" : "השיתוף %s נכשל, כיוון שהקבוצה %s אינה קיימת",
+ "Sharing %s failed, because %s is not a member of the group %s" : "השיתוף %s נכשל, כיוון ש- %s אינו חבר בקבוצה %s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "יש לספק סיסמא ליצירת קישור ציבורי, רק קישורים מוגנים מותרים",
+ "Sharing %s failed, because sharing with links is not allowed" : "השיתוף %s נכשל, כיוון ששיתוף עם קישור אינו מותר",
+ "Not allowed to create a federated share with the same user" : "אסור ליצור שיתוף מאוגד עם אותו משתמש",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "שיתוף %s נכשל, לא ניתן לאתר %s, ייתכן שהשרת לא ניתן להשגה כרגע.",
+ "Share type %s is not valid for %s" : "שיתוף מסוג %s אינו תקף ל- %s",
+ "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "הגדרת הרשאות ל- %s נכשלה, כיוון שההרשאות עולים על האישורים שניתנו ל- %s",
+ "Setting permissions for %s failed, because the item was not found" : "הגדרת הרשאות ל- %s נכשלה, כיוון שהפריט לא נמצא",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "לא ניתן לקבוע תאריך תפוגה. שיתופים אינם יכולים לפוג תוקף מאוחר יותר מ- %s לאחר ששותפו",
+ "Cannot set expiration date. Expiration date is in the past" : "לא ניתן לקבוע תאריך תפוגה. תאריך התפוגה הנו בעבר",
+ "Cannot clear expiration date. Shares are required to have an expiration date." : "לא ניתן לבטל תאריך תפוגה. שיתופים חייבים להכיל תאריך תפוגה.",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "צד אחורי לשיתוף %s חייב ליישם את ממשק OCP\\Share_Backend",
+ "Sharing backend %s not found" : "צד אחורי לשיתוף %s לא נמצא",
+ "Sharing backend for %s not found" : "צד אחורי לשיתוף של %s לא נמצא",
+ "Sharing failed, because the user %s is the original sharer" : "שיתוף נכשל, כיוון שמשתמש %s הנו המשתף המקורי",
+ "Sharing %s failed, because the permissions exceed permissions granted to %s" : "השיתוף %s נכשל, כיוון שההרשאות עלו על ההרשאות שניתנו ל- %s",
+ "Sharing %s failed, because resharing is not allowed" : "השיתוף %s נכשל, כיוון ששיתוף מחודש אסור",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "השיתוף %s נכשל, כיוון שבצד אחורי לשיתוף עבור %s לא ניתן היה לאתר את מקורו",
+ "Sharing %s failed, because the file could not be found in the file cache" : "השיתוף %s נכשל, כייון שלא ניתן היה למצוא את הקובץ בזכרון המטמון",
+ "Cannot increase permissions of %s" : "לא ניתן להגדיל את ההיתרים של %s",
+ "Files can't be shared with delete permissions" : "קובץ לא ניתן לשיתוף בפעולת מחיקת הרשאות",
+ "Files can't be shared with create permissions" : "קובץ לא ניתן לשיתוף בפעולת יצירת הרשאות",
+ "Expiration date is in the past" : "תאריך תפוגה הנו בעבר",
+ "Cannot set expiration date more than %s days in the future" : "לא ניתן להגדיר את תאריך התפוגה מעל %s ימים בעתיד",
+ "Could not find category \"%s\"" : "לא ניתן למצוא את הקטגוריה „%s“",
+ "Sunday" : "יום ראשון",
+ "Monday" : "יום שני",
+ "Tuesday" : "יום שלישי",
+ "Wednesday" : "יום רביעי",
+ "Thursday" : "יום חמישי",
+ "Friday" : "יום שישי",
+ "Saturday" : "שבת",
+ "Sun." : "ראשון",
+ "Mon." : "שני",
+ "Tue." : "שלישי",
+ "Wed." : "רביעי",
+ "Thu." : "חמישי",
+ "Fri." : "שישי",
+ "Sat." : "שבת",
+ "Su" : "א",
+ "Mo" : "ב",
+ "Tu" : "ג",
+ "We" : "ד",
+ "Th" : "ה",
+ "Fr" : "ו",
+ "Sa" : "ש",
+ "January" : "ינואר",
+ "February" : "פברואר",
+ "March" : "מרץ",
+ "April" : "אפריל",
+ "May" : "מאי",
+ "June" : "יוני",
+ "July" : "יולי",
+ "August" : "אוגוסט",
+ "September" : "ספטמבר",
+ "October" : "אוקטובר",
+ "November" : "נובמבר",
+ "December" : "דצמבר",
+ "Jan." : "ינו׳",
+ "Feb." : "פבר׳",
+ "Mar." : "מרץ",
+ "Apr." : "אפר׳",
+ "May." : "מאי",
+ "Jun." : "יונ׳",
+ "Jul." : "יול׳",
+ "Aug." : "אוג׳",
+ "Sep." : "ספט׳",
+ "Oct." : "אוק׳",
+ "Nov." : "נוב׳",
+ "Dec." : "דצמ׳",
+ "Apps" : "יישומים",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "רק התווים הבאים מאושרים לשם משתמש: \"a-z\", \"A-Z\", \"0-9\", וגם \"_.@-'\"",
+ "A valid username must be provided" : "יש לספק שם משתמש תקני",
+ "Username contains whitespace at the beginning or at the end" : "שם המשתמש מכיל רווח בתחילתו או בסופו",
+ "A valid password must be provided" : "יש לספק ססמה תקנית",
+ "The username is already being used" : "השם משתמש כבר בשימוש",
+ "Login canceled by app" : "התחברות בוטלה על ידי יישום",
+ "User disabled" : "משתמש מנוטרל",
+ "Help" : "עזרה",
+ "Personal" : "אישי",
+ "Users" : "משתמשים",
+ "Admin" : "מנהל",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "יישום \"%s\" לא ניתן להתקנה כיוון שקובץ appinfo לא ניתן לקריאה.",
+ "No app name specified" : "לא הוגדר שם יישום",
+ "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "היישום \"%s\" לא ניתן להתקנה כיוון שיחסי התלות הבאים אינם מתקיימים: %s",
+ "a safe home for all your data" : "בית בטוח עבור כל המידע שלך",
+ "File is currently busy, please try again later" : "הקובץ בשימוש כרגע, יש לנסות שוב מאוחר יותר",
+ "Can't read file" : "לא ניתן לקרוא קובץ",
+ "Application is not enabled" : "יישומים אינם מופעלים",
+ "Authentication error" : "שגיאת הזדהות",
+ "Token expired. Please reload page." : "פג תוקף. נא לטעון שוב את הדף.",
+ "Unknown user" : "משתמש לא ידוע",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "לא מותקנים דרייברים למסד הנתונים (sqlite, mysql, או postgresql).",
+ "Cannot write into \"config\" directory" : "לא ניתן לכתוב לתיקיית \"config\"!",
+ "Cannot write into \"apps\" directory" : "לא ניתן לכתוב לתיקיית \"apps\"",
+ "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "בדרך כלל ניתן להסתדר על ידי %s מתן הרשאות כתיבה בשרת האינטרנט לתיקיית היישומים %s או נטרול חנות היישומים בקובץ ה- config.",
+ "Cannot create \"data\" directory (%s)" : "לא ניתן ליצור תיקיית \"data\" (%s)",
+ "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "זה בדרך כלל ניתן לתיקון על ידי <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">מתן הרשאות כתיבה בשרת לתיקיית הבסיס directory</a>.",
+ "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "הרשאות ניתנות בדרך כלל לתיקון על ידי %s מתן לשרת האינטרנט גישת כתיבה לתיקיית הבסיס %s.",
+ "Setting locale to %s failed" : "הגדרת שפה ל- %s נכשלה",
+ "Please install one of these locales on your system and restart your webserver." : "יש להתקין אחת מהשפות על המערכת שלך ולהפעיל מחדש את שרת האינטרנט.",
+ "Please ask your server administrator to install the module." : "יש לבקש ממנהל השרת שלך להתקין את המודול.",
+ "PHP module %s not installed." : "מודול PHP %s אינו מותקן.",
+ "PHP setting \"%s\" is not set to \"%s\"." : "הגדרות PHP \"%s\" אינם מוגדרות ל- \"%s\"",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload מוגדר ל- \"%s\" במקום הערך המצופה \"0\"",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "לתיקון בעיה זו יש להגדיר <code>mbstring.func_overload</code> כ- <code>0</code> iבקובץ ה- php.ini שלך",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "libxml2 2.7.0 נדרש לכל הפחות. כרגע %s מותקן.",
+ "To fix this issue update your libxml2 version and restart your web server." : "לתיקון הבעיה יש לעדכן את גרסת ה- libxml2 שלך ולהפעיל מחדש את שרת האינטרנט שלך.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP ככל הנראה מוגדר ל- strip inline doc blocks. זה יגרום למספר יישומי ליבה לא להיות נגישים.",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "זה ככל הנראה נגרם על ידי מאיץ/מטמון כמו Zend OPcache או eAccelerator.",
+ "PHP modules have been installed, but they are still listed as missing?" : "מודולי PHP הותקנו, אך עדיין רשומים כחסרים?",
+ "Please ask your server administrator to restart the web server." : "יש לבקש ממנהל השרת שלך להפעיל מחדש את שרת האינטרנט.",
+ "PostgreSQL >= 9 required" : "נדרש PostgreSQL >= 9",
+ "Please upgrade your database version" : "יש לשדרג את גרסת מסד הנתונים שלך",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "יש לשנות את ההרשאות ל- 0770 כך שהתיקייה לא תרשם על ידי משתמשים אחרים.",
+ "Data directory (%s) is readable by other users" : "תיקיית המידע (%s) ניתנת לקריאה על ידי משתמשים אחרים",
+ "Data directory (%s) must be an absolute path" : "תיקיית המידע (%s) חייבת להיות כנתיב אבסולוטי",
+ "Check the value of \"datadirectory\" in your configuration" : "יש לבדוק את הערך \"datadirectory\" בהגדרות התצורה שלך",
+ "Data directory (%s) is invalid" : "תיקיית מידע (%s) אינה חוקית",
+ "Please check that the data directory contains a file \".ocdata\" in its root." : "יש לוודא שתיקיית המידע כוללת קובץ \".ocdata\" בנתיב הבסיס שלה",
+ "Could not obtain lock type %d on \"%s\"." : "לא ניתן היה להשיג סוג נעילה %d ב- \"%s\".",
+ "Storage unauthorized. %s" : "אחסון לא מורשה. %s",
+ "Storage incomplete configuration. %s" : "תצורה לא מושלמת של האחסון. %s",
+ "Storage connection error. %s" : "שגיאת חיבור אחסון. %s",
+ "Storage connection timeout. %s" : "פסק זמן חיבור אחסון. %s",
+ "4-byte characters are not supported in file names" : "תווי 4-byte אינם נתמכים בשמות קבצים",
+ "App directory already exists" : "תיקיית יישום כבר קיימת",
+ "Can't create app folder. Please fix permissions. %s" : "לא ניתן ליצור תיקיית יישום. יש לתקן הרשאות. %s",
+ "Archive does not contain a directory named %s" : "הארכיב לא כולל שם תיקייה %s",
+ "No source specified when installing app" : "לא נקבע מקור בתהליך התקנת היישום",
+ "No href specified when installing app from http" : "לא נקבע href בתהליך התקנת היישום מהאינטרנט",
+ "No path specified when installing app from local file" : "לא נקבע נתיב בתהליך התקנת היישום מקובץ מקומי",
+ "Archives of type %s are not supported" : "ארכיבים מסוג %s אינם נתמכים",
+ "Failed to open archive when installing app" : "פתיחת ארכיב נכשלה בתהליך התקנת היישום",
+ "App does not provide an info.xml file" : "היישום לא סיפק קובץ info.xml",
+ "App cannot be installed because appinfo file cannot be read." : "היישום לא ניתן להתקנה כיוון שקובץ appinfo לא ניתן לקריאה.",
+ "Signature could not get checked. Please contact the app developer and check your admin screen." : "חתימה לא ניתנת לבדיקה. יש ליצור קשר עם מפתח היישום ולבדוק את מסך הניהול.",
+ "App can't be installed because of not allowed code in the App" : "היישום לא ניתן להתקנה בשל קוד אסור ביישום",
+ "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "יישום לא ניתן להתקנה כייון שכולל תווית <shipped>אמת</shipped> tag שאינו מאושר ליישומים שאינם נשלחים",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "לא ניתן להתקין את היישום כיוון שהגרסה בקובץ info.xml אינה תואמת לגרסה שמתקבלת מחנות היישומים",
+ "Recommended" : "מומלץ",
+ "Microsoft Windows Platform is not supported" : "מערכת הפעלה חלונות אינה נתמכת",
+ "Storage not available" : "אחסון לא זמין"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/he.json b/lib/l10n/he.json
new file mode 100644
index 00000000000..7d156e37d3c
--- /dev/null
+++ b/lib/l10n/he.json
@@ -0,0 +1,209 @@
+{ "translations": {
+ "Cannot write into \"config\" directory!" : "לא ניתן לכתוב לתיקיית \"config\"!",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "בדרך כלל ניתן לפתור את הבעיה על ידי כך שנותנים ל- webserver הרשאות כניסה לתיקיית confg",
+ "See %s" : "ניתן לראות %s",
+ "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "בדרך כלל ניתן לפתור את הבעיה על ידי כך ש- %s נותן ל- webserver הרשאות כניסה לתיקיית 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",
+ "PHP %s or higher is required." : "נדרש PHP בגרסת %s ומעלה.",
+ "PHP with a version lower than %s is required." : "נדרש PHP בגרסה נמוכה מ- %s.",
+ "%sbit or higher PHP required." : "נדרש PHP בגרסת %s ומעלה.",
+ "Following databases are supported: %s" : "מסדי הנתונים הבאים נתמכים: %s",
+ "The command line tool %s could not be found" : "כלי שורת הפקודה %s לא אותר",
+ "The library %s is not available." : "הספריה %s אינה זמינה.",
+ "Library %s with a version higher than %s is required - available version %s." : "ספריה %s בגרסה גבוהה מ- %s נדרשת - גרסה זמינה %s.",
+ "Library %s with a version lower than %s is required - available version %s." : "ספריה %s בגרסה נמוכה מ- %s נדרשת - גרסה זמינה %s.",
+ "Following platforms are supported: %s" : "הפלטפורמות הבאות נתמכות: %s",
+ "Unknown filetype" : "סוג קובץ לא מוכר",
+ "Invalid image" : "תמונה לא חוקית",
+ "today" : "היום",
+ "yesterday" : "אתמול",
+ "_%n day ago_::_%n days ago_" : ["לפני %n יום","לפני %n ימים"],
+ "last month" : "חודש שעבר",
+ "last year" : "שנה שעברה",
+ "_%n year ago_::_%n years ago_" : ["לפני %n שנה","לפני %n שנים"],
+ "seconds ago" : "שניות",
+ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "מודול עם זהות: %s אינו קיים. יש לאפשר את זה בהגדרות היישומים או ליצור קשר עם המנהל.",
+ "File name is a reserved word" : "שם קובץ הנו מילה שמורה",
+ "File name contains at least one invalid character" : "שם קובץ כולל לפחות תו אחד לא חוקי",
+ "File name is too long" : "שם קובץ ארוך מדי",
+ "Dot files are not allowed" : "קבצי Dot אינם מותרים",
+ "Empty filename is not allowed" : "שם קובץ ריק אינו מאושר",
+ "Server settings" : "הגדרות שרת",
+ "Sharing" : "שיתוף",
+ "Tips & tricks" : "טיפים וטריקים",
+ "%s enter the database username and name." : "%s יש להכניס את שם המשתמש ושם מסד הנתונים.",
+ "%s enter the database username." : "%s נכנס למסד נתוני שמות המשתמשים.",
+ "%s enter the database name." : "%s נכנס למסד נתוני השמות.",
+ "%s you may not use dots in the database name" : "%s לא ניתן להשתמש בנקודות בשם מסד הנתונים",
+ "Oracle connection could not be established" : "לא ניתן היה ליצור חיבור Oracle",
+ "Oracle username and/or password not valid" : "שם משתמש ו/או סיסמת Oracle אינם תקפים",
+ "DB Error: \"%s\"" : "שגיאת מסד נתונים: \"%s\"",
+ "Offending command was: \"%s\"" : "הפקודה המזיקה הייתה: \"%s\"",
+ "You need to enter either an existing account or the administrator." : "יש להכניס חשבון קיים או מנהל.",
+ "Offending command was: \"%s\", name: %s, password: %s" : "הפקודה המזיקה הייתה: \"%s\", שם: %s, סיסמא: %s",
+ "PostgreSQL username and/or password not valid" : "שם משתמש ו/או סיסמת PostgreSQL אינם תקפים",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X אינו נתמך ו- %s לא יעבוד כשורה בפלטפורמה זו. ניתן לקחת סיכון ולהשתמש באחריותך! ",
+ "For the best results, please consider using a GNU/Linux server instead." : "לתוצאות הכי טובות, יש לשקול שימוש בשרת 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." : "נראה ש- %s עובד על בסיס סביבת 32-bit PHP ושה- open_basedir הוגדר בקובץ php.ini. מצב זה יוביל לבעיות עם קבצים הגדולים מ- 4 GB ואינו מומלץ לחלוטין.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "יש להסיר את הגדרת open_basedir מתוך קובץ php.ini או להחליף לסביבת 64-bit PHP.",
+ "Set an admin username." : "קביעת שם משתמש מנהל",
+ "Set an admin password." : "קביעת סיסמת מנהל",
+ "Can't create or write into the data directory %s" : "לא ניתן ליצור או לכתוב לתוך תיקיית הנתונים %s",
+ "Invalid Federated Cloud ID" : "זיהוי ענן מאוגד לא חוקי",
+ "%s shared »%s« with you" : "%s שיתף/שיתפה איתך את »%s«",
+ "%s via %s" : "%s על בסיס %s",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "השיתוף %s נכשל, כיוון שהצד האחורי אינו מאפשר שיתופים מסוג %i",
+ "Sharing %s failed, because the file does not exist" : "השיתוף %s נכשל, כיוון שהקובץ אינו קיים",
+ "You are not allowed to share %s" : "אינך רשאי/ת לשתף %s",
+ "Sharing %s failed, because you can not share with yourself" : "השיתוף %s נכשל, כיוון שלא ניתן לשתף עם עצמך",
+ "Sharing %s failed, because the user %s does not exist" : "השיתוף %s נכשל, כיוון שהמשתמש %s אינו קיים",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "השיתוף %s נכשל, כיוון שהמשתמש %s אינו חבר בקבוצות ש- %s חבר ב-",
+ "Sharing %s failed, because this item is already shared with %s" : "שיתוף %s נכשל, כיוון שפריט זה כבר משותף עם %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "השיתוף %s נכשל, כיוון שהפריט כבר משותף עם משתמש %s",
+ "Sharing %s failed, because the group %s does not exist" : "השיתוף %s נכשל, כיוון שהקבוצה %s אינה קיימת",
+ "Sharing %s failed, because %s is not a member of the group %s" : "השיתוף %s נכשל, כיוון ש- %s אינו חבר בקבוצה %s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "יש לספק סיסמא ליצירת קישור ציבורי, רק קישורים מוגנים מותרים",
+ "Sharing %s failed, because sharing with links is not allowed" : "השיתוף %s נכשל, כיוון ששיתוף עם קישור אינו מותר",
+ "Not allowed to create a federated share with the same user" : "אסור ליצור שיתוף מאוגד עם אותו משתמש",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "שיתוף %s נכשל, לא ניתן לאתר %s, ייתכן שהשרת לא ניתן להשגה כרגע.",
+ "Share type %s is not valid for %s" : "שיתוף מסוג %s אינו תקף ל- %s",
+ "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "הגדרת הרשאות ל- %s נכשלה, כיוון שההרשאות עולים על האישורים שניתנו ל- %s",
+ "Setting permissions for %s failed, because the item was not found" : "הגדרת הרשאות ל- %s נכשלה, כיוון שהפריט לא נמצא",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "לא ניתן לקבוע תאריך תפוגה. שיתופים אינם יכולים לפוג תוקף מאוחר יותר מ- %s לאחר ששותפו",
+ "Cannot set expiration date. Expiration date is in the past" : "לא ניתן לקבוע תאריך תפוגה. תאריך התפוגה הנו בעבר",
+ "Cannot clear expiration date. Shares are required to have an expiration date." : "לא ניתן לבטל תאריך תפוגה. שיתופים חייבים להכיל תאריך תפוגה.",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "צד אחורי לשיתוף %s חייב ליישם את ממשק OCP\\Share_Backend",
+ "Sharing backend %s not found" : "צד אחורי לשיתוף %s לא נמצא",
+ "Sharing backend for %s not found" : "צד אחורי לשיתוף של %s לא נמצא",
+ "Sharing failed, because the user %s is the original sharer" : "שיתוף נכשל, כיוון שמשתמש %s הנו המשתף המקורי",
+ "Sharing %s failed, because the permissions exceed permissions granted to %s" : "השיתוף %s נכשל, כיוון שההרשאות עלו על ההרשאות שניתנו ל- %s",
+ "Sharing %s failed, because resharing is not allowed" : "השיתוף %s נכשל, כיוון ששיתוף מחודש אסור",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "השיתוף %s נכשל, כיוון שבצד אחורי לשיתוף עבור %s לא ניתן היה לאתר את מקורו",
+ "Sharing %s failed, because the file could not be found in the file cache" : "השיתוף %s נכשל, כייון שלא ניתן היה למצוא את הקובץ בזכרון המטמון",
+ "Cannot increase permissions of %s" : "לא ניתן להגדיל את ההיתרים של %s",
+ "Files can't be shared with delete permissions" : "קובץ לא ניתן לשיתוף בפעולת מחיקת הרשאות",
+ "Files can't be shared with create permissions" : "קובץ לא ניתן לשיתוף בפעולת יצירת הרשאות",
+ "Expiration date is in the past" : "תאריך תפוגה הנו בעבר",
+ "Cannot set expiration date more than %s days in the future" : "לא ניתן להגדיר את תאריך התפוגה מעל %s ימים בעתיד",
+ "Could not find category \"%s\"" : "לא ניתן למצוא את הקטגוריה „%s“",
+ "Sunday" : "יום ראשון",
+ "Monday" : "יום שני",
+ "Tuesday" : "יום שלישי",
+ "Wednesday" : "יום רביעי",
+ "Thursday" : "יום חמישי",
+ "Friday" : "יום שישי",
+ "Saturday" : "שבת",
+ "Sun." : "ראשון",
+ "Mon." : "שני",
+ "Tue." : "שלישי",
+ "Wed." : "רביעי",
+ "Thu." : "חמישי",
+ "Fri." : "שישי",
+ "Sat." : "שבת",
+ "Su" : "א",
+ "Mo" : "ב",
+ "Tu" : "ג",
+ "We" : "ד",
+ "Th" : "ה",
+ "Fr" : "ו",
+ "Sa" : "ש",
+ "January" : "ינואר",
+ "February" : "פברואר",
+ "March" : "מרץ",
+ "April" : "אפריל",
+ "May" : "מאי",
+ "June" : "יוני",
+ "July" : "יולי",
+ "August" : "אוגוסט",
+ "September" : "ספטמבר",
+ "October" : "אוקטובר",
+ "November" : "נובמבר",
+ "December" : "דצמבר",
+ "Jan." : "ינו׳",
+ "Feb." : "פבר׳",
+ "Mar." : "מרץ",
+ "Apr." : "אפר׳",
+ "May." : "מאי",
+ "Jun." : "יונ׳",
+ "Jul." : "יול׳",
+ "Aug." : "אוג׳",
+ "Sep." : "ספט׳",
+ "Oct." : "אוק׳",
+ "Nov." : "נוב׳",
+ "Dec." : "דצמ׳",
+ "Apps" : "יישומים",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "רק התווים הבאים מאושרים לשם משתמש: \"a-z\", \"A-Z\", \"0-9\", וגם \"_.@-'\"",
+ "A valid username must be provided" : "יש לספק שם משתמש תקני",
+ "Username contains whitespace at the beginning or at the end" : "שם המשתמש מכיל רווח בתחילתו או בסופו",
+ "A valid password must be provided" : "יש לספק ססמה תקנית",
+ "The username is already being used" : "השם משתמש כבר בשימוש",
+ "Login canceled by app" : "התחברות בוטלה על ידי יישום",
+ "User disabled" : "משתמש מנוטרל",
+ "Help" : "עזרה",
+ "Personal" : "אישי",
+ "Users" : "משתמשים",
+ "Admin" : "מנהל",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "יישום \"%s\" לא ניתן להתקנה כיוון שקובץ appinfo לא ניתן לקריאה.",
+ "No app name specified" : "לא הוגדר שם יישום",
+ "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "היישום \"%s\" לא ניתן להתקנה כיוון שיחסי התלות הבאים אינם מתקיימים: %s",
+ "a safe home for all your data" : "בית בטוח עבור כל המידע שלך",
+ "File is currently busy, please try again later" : "הקובץ בשימוש כרגע, יש לנסות שוב מאוחר יותר",
+ "Can't read file" : "לא ניתן לקרוא קובץ",
+ "Application is not enabled" : "יישומים אינם מופעלים",
+ "Authentication error" : "שגיאת הזדהות",
+ "Token expired. Please reload page." : "פג תוקף. נא לטעון שוב את הדף.",
+ "Unknown user" : "משתמש לא ידוע",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "לא מותקנים דרייברים למסד הנתונים (sqlite, mysql, או postgresql).",
+ "Cannot write into \"config\" directory" : "לא ניתן לכתוב לתיקיית \"config\"!",
+ "Cannot write into \"apps\" directory" : "לא ניתן לכתוב לתיקיית \"apps\"",
+ "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "בדרך כלל ניתן להסתדר על ידי %s מתן הרשאות כתיבה בשרת האינטרנט לתיקיית היישומים %s או נטרול חנות היישומים בקובץ ה- config.",
+ "Cannot create \"data\" directory (%s)" : "לא ניתן ליצור תיקיית \"data\" (%s)",
+ "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "זה בדרך כלל ניתן לתיקון על ידי <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">מתן הרשאות כתיבה בשרת לתיקיית הבסיס directory</a>.",
+ "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "הרשאות ניתנות בדרך כלל לתיקון על ידי %s מתן לשרת האינטרנט גישת כתיבה לתיקיית הבסיס %s.",
+ "Setting locale to %s failed" : "הגדרת שפה ל- %s נכשלה",
+ "Please install one of these locales on your system and restart your webserver." : "יש להתקין אחת מהשפות על המערכת שלך ולהפעיל מחדש את שרת האינטרנט.",
+ "Please ask your server administrator to install the module." : "יש לבקש ממנהל השרת שלך להתקין את המודול.",
+ "PHP module %s not installed." : "מודול PHP %s אינו מותקן.",
+ "PHP setting \"%s\" is not set to \"%s\"." : "הגדרות PHP \"%s\" אינם מוגדרות ל- \"%s\"",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload מוגדר ל- \"%s\" במקום הערך המצופה \"0\"",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "לתיקון בעיה זו יש להגדיר <code>mbstring.func_overload</code> כ- <code>0</code> iבקובץ ה- php.ini שלך",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "libxml2 2.7.0 נדרש לכל הפחות. כרגע %s מותקן.",
+ "To fix this issue update your libxml2 version and restart your web server." : "לתיקון הבעיה יש לעדכן את גרסת ה- libxml2 שלך ולהפעיל מחדש את שרת האינטרנט שלך.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP ככל הנראה מוגדר ל- strip inline doc blocks. זה יגרום למספר יישומי ליבה לא להיות נגישים.",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "זה ככל הנראה נגרם על ידי מאיץ/מטמון כמו Zend OPcache או eAccelerator.",
+ "PHP modules have been installed, but they are still listed as missing?" : "מודולי PHP הותקנו, אך עדיין רשומים כחסרים?",
+ "Please ask your server administrator to restart the web server." : "יש לבקש ממנהל השרת שלך להפעיל מחדש את שרת האינטרנט.",
+ "PostgreSQL >= 9 required" : "נדרש PostgreSQL >= 9",
+ "Please upgrade your database version" : "יש לשדרג את גרסת מסד הנתונים שלך",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "יש לשנות את ההרשאות ל- 0770 כך שהתיקייה לא תרשם על ידי משתמשים אחרים.",
+ "Data directory (%s) is readable by other users" : "תיקיית המידע (%s) ניתנת לקריאה על ידי משתמשים אחרים",
+ "Data directory (%s) must be an absolute path" : "תיקיית המידע (%s) חייבת להיות כנתיב אבסולוטי",
+ "Check the value of \"datadirectory\" in your configuration" : "יש לבדוק את הערך \"datadirectory\" בהגדרות התצורה שלך",
+ "Data directory (%s) is invalid" : "תיקיית מידע (%s) אינה חוקית",
+ "Please check that the data directory contains a file \".ocdata\" in its root." : "יש לוודא שתיקיית המידע כוללת קובץ \".ocdata\" בנתיב הבסיס שלה",
+ "Could not obtain lock type %d on \"%s\"." : "לא ניתן היה להשיג סוג נעילה %d ב- \"%s\".",
+ "Storage unauthorized. %s" : "אחסון לא מורשה. %s",
+ "Storage incomplete configuration. %s" : "תצורה לא מושלמת של האחסון. %s",
+ "Storage connection error. %s" : "שגיאת חיבור אחסון. %s",
+ "Storage connection timeout. %s" : "פסק זמן חיבור אחסון. %s",
+ "4-byte characters are not supported in file names" : "תווי 4-byte אינם נתמכים בשמות קבצים",
+ "App directory already exists" : "תיקיית יישום כבר קיימת",
+ "Can't create app folder. Please fix permissions. %s" : "לא ניתן ליצור תיקיית יישום. יש לתקן הרשאות. %s",
+ "Archive does not contain a directory named %s" : "הארכיב לא כולל שם תיקייה %s",
+ "No source specified when installing app" : "לא נקבע מקור בתהליך התקנת היישום",
+ "No href specified when installing app from http" : "לא נקבע href בתהליך התקנת היישום מהאינטרנט",
+ "No path specified when installing app from local file" : "לא נקבע נתיב בתהליך התקנת היישום מקובץ מקומי",
+ "Archives of type %s are not supported" : "ארכיבים מסוג %s אינם נתמכים",
+ "Failed to open archive when installing app" : "פתיחת ארכיב נכשלה בתהליך התקנת היישום",
+ "App does not provide an info.xml file" : "היישום לא סיפק קובץ info.xml",
+ "App cannot be installed because appinfo file cannot be read." : "היישום לא ניתן להתקנה כיוון שקובץ appinfo לא ניתן לקריאה.",
+ "Signature could not get checked. Please contact the app developer and check your admin screen." : "חתימה לא ניתנת לבדיקה. יש ליצור קשר עם מפתח היישום ולבדוק את מסך הניהול.",
+ "App can't be installed because of not allowed code in the App" : "היישום לא ניתן להתקנה בשל קוד אסור ביישום",
+ "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "יישום לא ניתן להתקנה כייון שכולל תווית <shipped>אמת</shipped> tag שאינו מאושר ליישומים שאינם נשלחים",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "לא ניתן להתקין את היישום כיוון שהגרסה בקובץ info.xml אינה תואמת לגרסה שמתקבלת מחנות היישומים",
+ "Recommended" : "מומלץ",
+ "Microsoft Windows Platform is not supported" : "מערכת הפעלה חלונות אינה נתמכת",
+ "Storage not available" : "אחסון לא זמין"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/lib/l10n/is.js b/lib/l10n/is.js
new file mode 100644
index 00000000000..30750dcccee
--- /dev/null
+++ b/lib/l10n/is.js
@@ -0,0 +1,181 @@
+OC.L10N.register(
+ "lib",
+ {
+ "Cannot write into \"config\" directory!" : "Get ekki skrifað í \"config\" möppuna!",
+ "See %s" : "Skoðaðu %s",
+ "%1$s and %2$s" : "%1$s og %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s og %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s og %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s og %5$s",
+ "PHP %s or higher is required." : "Krafist er PHP %s eða hærra.",
+ "PHP with a version lower than %s is required." : "Krafist er PHP útgáfu %s eða lægri.",
+ "%sbit or higher PHP required." : "Krafist er PHP %sbita eða hærra.",
+ "Following databases are supported: %s" : "Eftirfarandi gagnagrunnar eru studdir: %s",
+ "The command line tool %s could not be found" : "Skipanalínutólið \"%s\" fannst ekki",
+ "The library %s is not available." : "Aðgerðasafnið %s er ekki tiltækt.",
+ "Following platforms are supported: %s" : "Eftirfarandi stýrikerfi eru studd: %s",
+ "Server version %s or higher is required." : "Krafist er þjóns af útgáfu %s eða hærra.",
+ "Server version %s or lower is required." : "Krafist er þjóns af útgáfu %s eða lægri.",
+ "Unknown filetype" : "Óþekkt skráategund",
+ "Invalid image" : "Ógild mynd",
+ "Avatar image is not square" : "Auðkennismynd er ekki ferningslaga",
+ "today" : "í dag",
+ "yesterday" : "í gær",
+ "_%n day ago_::_%n days ago_" : ["fyrir %n degi síðan","fyrir %n dögum síðan"],
+ "last month" : "í síðasta mánuði",
+ "_%n month ago_::_%n months ago_" : ["fyrir %n mánuði","fyrir %n mánuðum"],
+ "last year" : "síðasta ári",
+ "_%n year ago_::_%n years ago_" : ["fyrir %n degi síðan","fyrir %n árum síðan"],
+ "_%n hour ago_::_%n hours ago_" : ["fyrir %n klukkustund síðan","fyrir %n klukkustundum síðan"],
+ "_%n minute ago_::_%n minutes ago_" : ["fyrir %n mínútu síðan","fyrir %n mínútum síðan"],
+ "seconds ago" : "sekúndum síðan",
+ "File name is a reserved word" : "Skráarheiti er þegar frátekið orð",
+ "File name contains at least one invalid character" : "Skráarheitið inniheldur að minnsta kosti einn ógildan staf",
+ "File name is too long" : "Skráarheiti er of langt",
+ "Dot files are not allowed" : "Skrár með punkti eru ekki leyfðar",
+ "Empty filename is not allowed" : "Autt skráarheiti er ekki leyft.",
+ "APCu" : "APCu",
+ "Redis" : "Redis",
+ "Server settings" : "Stillingar þjóns",
+ "Sharing" : "Deiling",
+ "Encryption" : "Dulritun",
+ "Additional settings" : "Valfrjálsar stillingar",
+ "Tips & tricks" : "Ábendingar og góð ráð",
+ "%s enter the database username and name." : "%s settu inn notandanafn og nafn á gagnagrunni.",
+ "%s enter the database username." : "%s settu inn notandanafn í gagnagrunni.",
+ "%s enter the database name." : "%s settu inn nafn á gagnagrunni.",
+ "%s you may not use dots in the database name" : "%s þú mátt ekki nota punkta í nafni á gagnagrunni",
+ "Oracle connection could not be established" : "Ekki tókst að koma tengingu á við Oracle",
+ "Oracle username and/or password not valid" : "Notandanafn eða lykilorð Oracle er ekki gilt",
+ "DB Error: \"%s\"" : "Gagnagrunnsvilla: \"%s\"",
+ "Offending command was: \"%s\"" : "Saknæma skipunin var: \"%s\"",
+ "Offending command was: \"%s\", name: %s, password: %s" : "Saknæma skipunin var: \"%s\", nafn: %s, lykilorð: %s",
+ "PostgreSQL username and/or password not valid" : "Notandanafn eða lykilorð PostgreSQL er ekki gilt",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X er ekki stutt og %s mun ekki vinna eðlilega á þessu stýrikerfi. Notaðu þetta því á þína eigin ábyrgð! ",
+ "For the best results, please consider using a GNU/Linux server instead." : "Fyrir bestu útkomu ættirðu að íhuga að nota GNU/Linux þjón í staðinn.",
+ "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",
+ "Invalid Federated Cloud ID" : "Ógilt skýjasambandsauðkenni (Federated Cloud ID)",
+ "%s shared »%s« with you" : "%s deildi »%s« með þér",
+ "%s via %s" : "%s með %s",
+ "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",
+ "You are not allowed to share %s" : "Þú hefur ekki heimild til að deila %s",
+ "Sharing %s failed, because you can not share with yourself" : "Deiling %s mistókst, því þú getur ekki deilt með sjálfum þér",
+ "Sharing %s failed, because the user %s does not exist" : "Deiling %s mistókst, því notandinn %s er ekki til",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Deiling %s mistókst, því notandinn %s er ekki meðlimur í neinum hópi sem %s er meðlimur í",
+ "Sharing %s failed, because this item is already shared with %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með notandanum %s",
+ "Sharing %s failed, because the group %s does not exist" : "Deiling %s mistókst, því hópurinn %s er ekki til",
+ "Sharing %s failed, because %s is not a member of the group %s" : "Deiling %s mistókst, því %s er ekki meðlimur í hópnum %s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Þú verður að setja inn lykilorð til að útbúa opinberan tengil, aðeins verndaðir tenglar eru leyfðir",
+ "Sharing %s failed, because sharing with links is not allowed" : "Deiling %s mistókst, því deiling með tenglum er ekki leyfð",
+ "Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deiling %s mistókst, gat ekki fundið %s, hugsanlega er þjónninn ekki tiltækur í augnablikinu.",
+ "Share type %s is not valid for %s" : "Deiling af gerðinni %s er ekki gild fyrir %s",
+ "Cannot set expiration date. Expiration date is in the past" : "Get ekki stillt gildistímann. Gildistíminn er þegar runninn út",
+ "Sharing backend %s not found" : "Deilingarbakendinn %s fannst ekki",
+ "Sharing backend for %s not found" : "Deilingarbakendi fyrir %s fannst ekki",
+ "Sharing failed, because the user %s is the original sharer" : "Deiling %s mistókst, því notandinn %s er upprunalegur deilandi",
+ "Sharing %s failed, because resharing is not allowed" : "Deiling %s mistókst, því endurdeiling er ekki leyfð",
+ "Cannot increase permissions of %s" : "Get ekki aukið aðgangsheimildir %s",
+ "Expiration date is in the past" : "Gildistíminn er þegar runninn út",
+ "Cannot set expiration date more than %s days in the future" : "Ekki er hægt að setja lokadagsetningu meira en %s daga fram í tímann",
+ "Could not find category \"%s\"" : "Fann ekki flokkinn \"%s\"",
+ "Sunday" : "Sunnudagur",
+ "Monday" : "Mánudagur",
+ "Tuesday" : "Þriðjudagur",
+ "Wednesday" : "Miðvikudagur",
+ "Thursday" : "Fimmtudagur",
+ "Friday" : "Föstudagur",
+ "Saturday" : "Laugardagur",
+ "Sun." : "Sun.",
+ "Mon." : "Mán.",
+ "Tue." : "Þri.",
+ "Wed." : "Mið.",
+ "Thu." : "Fim.",
+ "Fri." : "Fös.",
+ "Sat." : "Lau.",
+ "Su" : "Su",
+ "Mo" : "Má",
+ "Tu" : "Þr",
+ "We" : "Mi",
+ "Th" : "Fi",
+ "Fr" : "Fö",
+ "Sa" : "La",
+ "January" : "Janúar",
+ "February" : "Febrúar",
+ "March" : "Mars",
+ "April" : "Apríl",
+ "May" : "Maí",
+ "June" : "Júní",
+ "July" : "Júlí",
+ "August" : "Ágúst",
+ "September" : "September",
+ "October" : "Október",
+ "November" : "Nóvember",
+ "December" : "Desember",
+ "Jan." : "Jan.",
+ "Feb." : "Feb.",
+ "Mar." : "Mar.",
+ "Apr." : "Apr.",
+ "May." : "Maí.",
+ "Jun." : "Jún.",
+ "Jul." : "Júl.",
+ "Aug." : "Ágú.",
+ "Sep." : "Sep.",
+ "Oct." : "Okt.",
+ "Nov." : "Nóv.",
+ "Dec." : "Des.",
+ "Apps" : "Forrit",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Einungis eru leyfilegir eftirfarandi stafir í notandanafni: \"a-z\", \"A-Z\", \"0-9\", og \"_.@-'\"",
+ "A valid username must be provided" : "Skráðu inn gilt notandanafn",
+ "Username contains whitespace at the beginning or at the end" : "Notandanafnið inniheldur orðabil í upphafi eða enda",
+ "A valid password must be provided" : "Skráðu inn gilt lykilorð",
+ "The username is already being used" : "Notandanafnið er þegar í notkun",
+ "Login canceled by app" : "Forrit hætti við innskráningu",
+ "User disabled" : "Notandi óvirkur",
+ "Help" : "Hjálp",
+ "Personal" : "Um mig",
+ "Users" : "Notendur",
+ "Admin" : "Stjórnun",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "Ekki er hægt að setja upp \"%s\" forritið vegna þess að ekki var hægt að lesa appinfo-skrána.",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Ekki var hægt að setja upp forritið \"%s\" vegna þess að það er ekki samhæft þessari útgáfu vefþjónsins.",
+ "No app name specified" : "Ekkert heiti forrits tilgreint",
+ "App '%s' could not be installed!" : "Ekki var hægt að setja upp '%s' forritið!",
+ "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Ekki var hægt að setja upp \"%s\" forritið þar sem eftirfarandi kerfiskröfur eru ekki uppfylltar: %s",
+ "a safe home for all your data" : "öruggur staður fyrir öll gögnin þín",
+ "File is currently busy, please try again later" : "Skráin er upptekin í augnablikinu, reyndu aftur síðar",
+ "Can't read file" : "Get ekki lesið skrána",
+ "Application is not enabled" : "Forrit ekki virkt",
+ "Authentication error" : "Villa við auðkenningu",
+ "Token expired. Please reload page." : "Kenniteikn er útrunnið. Þú ættir að hlaða síðunni aftur inn.",
+ "Unknown user" : "Óþekktur notandi",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "Engir reklar fyrir gagnagrunn eru uppsettir (sqlite, mysql eða postgresql).",
+ "Cannot write into \"config\" directory" : "Get ekki skrifað í \"config\" möppuna",
+ "Cannot write into \"apps\" directory" : "Get ekki skrifað í \"apps\" möppuna",
+ "Cannot create \"data\" directory (%s)" : "Get ekki búið til \"data\" möppu (%s)",
+ "Setting locale to %s failed" : "Mistókst að setja upp staðfærsluna %s",
+ "Please ask your server administrator to install the module." : "Biddu kerfisstjórann þinn um að setja eininguna upp.",
+ "PHP module %s not installed." : "PHP-einingin %s er ekki uppsett.",
+ "PHP setting \"%s\" is not set to \"%s\"." : "PHP-stillingin \"%s\" er ekki sett á \"%s\".",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Þessu veldur væntanlega biðminni/hraðall á borð við Zend OPcache eða eAccelerator.",
+ "Please ask your server administrator to restart the web server." : "Biddu kerfisstjórann þinn um að endurræsa vefþjóninn.",
+ "PostgreSQL >= 9 required" : "Krefst PostgreSQL >= 9",
+ "Please upgrade your database version" : "Uppfærðu útgáfu gagnagrunnsins",
+ "Data directory (%s) is readable by other users" : "Gagnamappa (%s) er lesanleg fyrir aðra notendur",
+ "Data directory (%s) must be an absolute path" : "Gagnamappan (%s) verður að vera algild slóð",
+ "Check the value of \"datadirectory\" in your configuration" : "Athugaðu gildi \"datadirectory\" í uppsetningunni þinni",
+ "Data directory (%s) is invalid" : "Gagnamappa (%s) er ógild",
+ "Storage unauthorized. %s" : "Gagnageymsla ekki auðkennd. %s",
+ "Storage incomplete configuration. %s" : "Ófullgerð uppsetning gagnageymslu. %s",
+ "Storage connection error. %s" : "Villa í tengingu við gagnageymslu. %s",
+ "Storage connection timeout. %s" : "Gagnageymsla féll á tíma. %s",
+ "4-byte characters are not supported in file names" : "4-bæta stafir eru ekki leyfilegir í skráaheitum",
+ "Logging" : "Skráning annáls",
+ "Recommended" : "Mælt með",
+ "Microsoft Windows Platform is not supported" : "Ekki er stuðningur við Microsoft Windows stýrikerfið",
+ "Storage not available" : "Gagnageymsla ekki tiltæk"
+},
+"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/lib/l10n/is.json b/lib/l10n/is.json
new file mode 100644
index 00000000000..28709e70c14
--- /dev/null
+++ b/lib/l10n/is.json
@@ -0,0 +1,179 @@
+{ "translations": {
+ "Cannot write into \"config\" directory!" : "Get ekki skrifað í \"config\" möppuna!",
+ "See %s" : "Skoðaðu %s",
+ "%1$s and %2$s" : "%1$s og %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s og %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s og %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s og %5$s",
+ "PHP %s or higher is required." : "Krafist er PHP %s eða hærra.",
+ "PHP with a version lower than %s is required." : "Krafist er PHP útgáfu %s eða lægri.",
+ "%sbit or higher PHP required." : "Krafist er PHP %sbita eða hærra.",
+ "Following databases are supported: %s" : "Eftirfarandi gagnagrunnar eru studdir: %s",
+ "The command line tool %s could not be found" : "Skipanalínutólið \"%s\" fannst ekki",
+ "The library %s is not available." : "Aðgerðasafnið %s er ekki tiltækt.",
+ "Following platforms are supported: %s" : "Eftirfarandi stýrikerfi eru studd: %s",
+ "Server version %s or higher is required." : "Krafist er þjóns af útgáfu %s eða hærra.",
+ "Server version %s or lower is required." : "Krafist er þjóns af útgáfu %s eða lægri.",
+ "Unknown filetype" : "Óþekkt skráategund",
+ "Invalid image" : "Ógild mynd",
+ "Avatar image is not square" : "Auðkennismynd er ekki ferningslaga",
+ "today" : "í dag",
+ "yesterday" : "í gær",
+ "_%n day ago_::_%n days ago_" : ["fyrir %n degi síðan","fyrir %n dögum síðan"],
+ "last month" : "í síðasta mánuði",
+ "_%n month ago_::_%n months ago_" : ["fyrir %n mánuði","fyrir %n mánuðum"],
+ "last year" : "síðasta ári",
+ "_%n year ago_::_%n years ago_" : ["fyrir %n degi síðan","fyrir %n árum síðan"],
+ "_%n hour ago_::_%n hours ago_" : ["fyrir %n klukkustund síðan","fyrir %n klukkustundum síðan"],
+ "_%n minute ago_::_%n minutes ago_" : ["fyrir %n mínútu síðan","fyrir %n mínútum síðan"],
+ "seconds ago" : "sekúndum síðan",
+ "File name is a reserved word" : "Skráarheiti er þegar frátekið orð",
+ "File name contains at least one invalid character" : "Skráarheitið inniheldur að minnsta kosti einn ógildan staf",
+ "File name is too long" : "Skráarheiti er of langt",
+ "Dot files are not allowed" : "Skrár með punkti eru ekki leyfðar",
+ "Empty filename is not allowed" : "Autt skráarheiti er ekki leyft.",
+ "APCu" : "APCu",
+ "Redis" : "Redis",
+ "Server settings" : "Stillingar þjóns",
+ "Sharing" : "Deiling",
+ "Encryption" : "Dulritun",
+ "Additional settings" : "Valfrjálsar stillingar",
+ "Tips & tricks" : "Ábendingar og góð ráð",
+ "%s enter the database username and name." : "%s settu inn notandanafn og nafn á gagnagrunni.",
+ "%s enter the database username." : "%s settu inn notandanafn í gagnagrunni.",
+ "%s enter the database name." : "%s settu inn nafn á gagnagrunni.",
+ "%s you may not use dots in the database name" : "%s þú mátt ekki nota punkta í nafni á gagnagrunni",
+ "Oracle connection could not be established" : "Ekki tókst að koma tengingu á við Oracle",
+ "Oracle username and/or password not valid" : "Notandanafn eða lykilorð Oracle er ekki gilt",
+ "DB Error: \"%s\"" : "Gagnagrunnsvilla: \"%s\"",
+ "Offending command was: \"%s\"" : "Saknæma skipunin var: \"%s\"",
+ "Offending command was: \"%s\", name: %s, password: %s" : "Saknæma skipunin var: \"%s\", nafn: %s, lykilorð: %s",
+ "PostgreSQL username and/or password not valid" : "Notandanafn eða lykilorð PostgreSQL er ekki gilt",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X er ekki stutt og %s mun ekki vinna eðlilega á þessu stýrikerfi. Notaðu þetta því á þína eigin ábyrgð! ",
+ "For the best results, please consider using a GNU/Linux server instead." : "Fyrir bestu útkomu ættirðu að íhuga að nota GNU/Linux þjón í staðinn.",
+ "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",
+ "Invalid Federated Cloud ID" : "Ógilt skýjasambandsauðkenni (Federated Cloud ID)",
+ "%s shared »%s« with you" : "%s deildi »%s« með þér",
+ "%s via %s" : "%s með %s",
+ "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",
+ "You are not allowed to share %s" : "Þú hefur ekki heimild til að deila %s",
+ "Sharing %s failed, because you can not share with yourself" : "Deiling %s mistókst, því þú getur ekki deilt með sjálfum þér",
+ "Sharing %s failed, because the user %s does not exist" : "Deiling %s mistókst, því notandinn %s er ekki til",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Deiling %s mistókst, því notandinn %s er ekki meðlimur í neinum hópi sem %s er meðlimur í",
+ "Sharing %s failed, because this item is already shared with %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með notandanum %s",
+ "Sharing %s failed, because the group %s does not exist" : "Deiling %s mistókst, því hópurinn %s er ekki til",
+ "Sharing %s failed, because %s is not a member of the group %s" : "Deiling %s mistókst, því %s er ekki meðlimur í hópnum %s",
+ "You need to provide a password to create a public link, only protected links are allowed" : "Þú verður að setja inn lykilorð til að útbúa opinberan tengil, aðeins verndaðir tenglar eru leyfðir",
+ "Sharing %s failed, because sharing with links is not allowed" : "Deiling %s mistókst, því deiling með tenglum er ekki leyfð",
+ "Not allowed to create a federated share with the same user" : "Ekki er heimilt að búa til skýjasambandssameign með sama notanda",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deiling %s mistókst, gat ekki fundið %s, hugsanlega er þjónninn ekki tiltækur í augnablikinu.",
+ "Share type %s is not valid for %s" : "Deiling af gerðinni %s er ekki gild fyrir %s",
+ "Cannot set expiration date. Expiration date is in the past" : "Get ekki stillt gildistímann. Gildistíminn er þegar runninn út",
+ "Sharing backend %s not found" : "Deilingarbakendinn %s fannst ekki",
+ "Sharing backend for %s not found" : "Deilingarbakendi fyrir %s fannst ekki",
+ "Sharing failed, because the user %s is the original sharer" : "Deiling %s mistókst, því notandinn %s er upprunalegur deilandi",
+ "Sharing %s failed, because resharing is not allowed" : "Deiling %s mistókst, því endurdeiling er ekki leyfð",
+ "Cannot increase permissions of %s" : "Get ekki aukið aðgangsheimildir %s",
+ "Expiration date is in the past" : "Gildistíminn er þegar runninn út",
+ "Cannot set expiration date more than %s days in the future" : "Ekki er hægt að setja lokadagsetningu meira en %s daga fram í tímann",
+ "Could not find category \"%s\"" : "Fann ekki flokkinn \"%s\"",
+ "Sunday" : "Sunnudagur",
+ "Monday" : "Mánudagur",
+ "Tuesday" : "Þriðjudagur",
+ "Wednesday" : "Miðvikudagur",
+ "Thursday" : "Fimmtudagur",
+ "Friday" : "Föstudagur",
+ "Saturday" : "Laugardagur",
+ "Sun." : "Sun.",
+ "Mon." : "Mán.",
+ "Tue." : "Þri.",
+ "Wed." : "Mið.",
+ "Thu." : "Fim.",
+ "Fri." : "Fös.",
+ "Sat." : "Lau.",
+ "Su" : "Su",
+ "Mo" : "Má",
+ "Tu" : "Þr",
+ "We" : "Mi",
+ "Th" : "Fi",
+ "Fr" : "Fö",
+ "Sa" : "La",
+ "January" : "Janúar",
+ "February" : "Febrúar",
+ "March" : "Mars",
+ "April" : "Apríl",
+ "May" : "Maí",
+ "June" : "Júní",
+ "July" : "Júlí",
+ "August" : "Ágúst",
+ "September" : "September",
+ "October" : "Október",
+ "November" : "Nóvember",
+ "December" : "Desember",
+ "Jan." : "Jan.",
+ "Feb." : "Feb.",
+ "Mar." : "Mar.",
+ "Apr." : "Apr.",
+ "May." : "Maí.",
+ "Jun." : "Jún.",
+ "Jul." : "Júl.",
+ "Aug." : "Ágú.",
+ "Sep." : "Sep.",
+ "Oct." : "Okt.",
+ "Nov." : "Nóv.",
+ "Dec." : "Des.",
+ "Apps" : "Forrit",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Einungis eru leyfilegir eftirfarandi stafir í notandanafni: \"a-z\", \"A-Z\", \"0-9\", og \"_.@-'\"",
+ "A valid username must be provided" : "Skráðu inn gilt notandanafn",
+ "Username contains whitespace at the beginning or at the end" : "Notandanafnið inniheldur orðabil í upphafi eða enda",
+ "A valid password must be provided" : "Skráðu inn gilt lykilorð",
+ "The username is already being used" : "Notandanafnið er þegar í notkun",
+ "Login canceled by app" : "Forrit hætti við innskráningu",
+ "User disabled" : "Notandi óvirkur",
+ "Help" : "Hjálp",
+ "Personal" : "Um mig",
+ "Users" : "Notendur",
+ "Admin" : "Stjórnun",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "Ekki er hægt að setja upp \"%s\" forritið vegna þess að ekki var hægt að lesa appinfo-skrána.",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Ekki var hægt að setja upp forritið \"%s\" vegna þess að það er ekki samhæft þessari útgáfu vefþjónsins.",
+ "No app name specified" : "Ekkert heiti forrits tilgreint",
+ "App '%s' could not be installed!" : "Ekki var hægt að setja upp '%s' forritið!",
+ "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Ekki var hægt að setja upp \"%s\" forritið þar sem eftirfarandi kerfiskröfur eru ekki uppfylltar: %s",
+ "a safe home for all your data" : "öruggur staður fyrir öll gögnin þín",
+ "File is currently busy, please try again later" : "Skráin er upptekin í augnablikinu, reyndu aftur síðar",
+ "Can't read file" : "Get ekki lesið skrána",
+ "Application is not enabled" : "Forrit ekki virkt",
+ "Authentication error" : "Villa við auðkenningu",
+ "Token expired. Please reload page." : "Kenniteikn er útrunnið. Þú ættir að hlaða síðunni aftur inn.",
+ "Unknown user" : "Óþekktur notandi",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "Engir reklar fyrir gagnagrunn eru uppsettir (sqlite, mysql eða postgresql).",
+ "Cannot write into \"config\" directory" : "Get ekki skrifað í \"config\" möppuna",
+ "Cannot write into \"apps\" directory" : "Get ekki skrifað í \"apps\" möppuna",
+ "Cannot create \"data\" directory (%s)" : "Get ekki búið til \"data\" möppu (%s)",
+ "Setting locale to %s failed" : "Mistókst að setja upp staðfærsluna %s",
+ "Please ask your server administrator to install the module." : "Biddu kerfisstjórann þinn um að setja eininguna upp.",
+ "PHP module %s not installed." : "PHP-einingin %s er ekki uppsett.",
+ "PHP setting \"%s\" is not set to \"%s\"." : "PHP-stillingin \"%s\" er ekki sett á \"%s\".",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Þessu veldur væntanlega biðminni/hraðall á borð við Zend OPcache eða eAccelerator.",
+ "Please ask your server administrator to restart the web server." : "Biddu kerfisstjórann þinn um að endurræsa vefþjóninn.",
+ "PostgreSQL >= 9 required" : "Krefst PostgreSQL >= 9",
+ "Please upgrade your database version" : "Uppfærðu útgáfu gagnagrunnsins",
+ "Data directory (%s) is readable by other users" : "Gagnamappa (%s) er lesanleg fyrir aðra notendur",
+ "Data directory (%s) must be an absolute path" : "Gagnamappan (%s) verður að vera algild slóð",
+ "Check the value of \"datadirectory\" in your configuration" : "Athugaðu gildi \"datadirectory\" í uppsetningunni þinni",
+ "Data directory (%s) is invalid" : "Gagnamappa (%s) er ógild",
+ "Storage unauthorized. %s" : "Gagnageymsla ekki auðkennd. %s",
+ "Storage incomplete configuration. %s" : "Ófullgerð uppsetning gagnageymslu. %s",
+ "Storage connection error. %s" : "Villa í tengingu við gagnageymslu. %s",
+ "Storage connection timeout. %s" : "Gagnageymsla féll á tíma. %s",
+ "4-byte characters are not supported in file names" : "4-bæta stafir eru ekki leyfilegir í skráaheitum",
+ "Logging" : "Skráning annáls",
+ "Recommended" : "Mælt með",
+ "Microsoft Windows Platform is not supported" : "Ekki er stuðningur við Microsoft Windows stýrikerfið",
+ "Storage not available" : "Gagnageymsla ekki tiltæk"
+},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
+} \ No newline at end of file
diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js
index e345d5a079f..1969342dfec 100644
--- a/lib/l10n/pl.js
+++ b/lib/l10n/pl.js
@@ -5,10 +5,16 @@ OC.L10N.register(
"This can usually be fixed by giving the webserver write access to the config directory" : "Można to zwykle rozwiązać przez dodanie serwerowi www uprawnień zapisu do katalogu config.",
"See %s" : "Zobacz %s",
"This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Można to zwykle rozwiązać przez %sdodanie serwerowi www uprawnień zapisu do katalogu config%s.",
+ "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Pliki aplikacji %1$s nie zostały zastąpione prawidłowo. Upewnij się, że to jest wersja kompatybilna z serwerem.",
"Sample configuration detected" : "Wykryto przykładową konfigurację",
"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" : "Wykryto skopiowanie przykładowej konfiguracji. To może popsuć Twoją instalację i nie jest wspierane. Proszę przeczytać dokumentację przed dokonywaniem zmian w config.php",
+ "%1$s and %2$s" : "%1$s i %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s i %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s i %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s i %5$s",
"PHP %s or higher is required." : "PHP %s lub wyższe jest wymagane.",
"PHP with a version lower than %s is required." : "Wersja PHP jest niższa niż %s, która jest wymagana.",
+ "%sbit or higher PHP required." : "%sbit lub wyższe PHP jest wymagane.",
"Following databases are supported: %s" : "Obsługiwane są następujące bazy danych: %s",
"The command line tool %s could not be found" : "Narzędzie konsoli %s nie zostało znalezione",
"The library %s is not available." : "Biblioteka %s nie jest dostępna.",
@@ -22,18 +28,19 @@ OC.L10N.register(
"Avatar image is not square" : "Obraz awataru nie jest kwadratowy",
"today" : "dziś",
"yesterday" : "wczoraj",
- "_%n day ago_::_%n days ago_" : ["%d dzień temu","%n dni temu","%n dni temu"],
+ "_%n day ago_::_%n days ago_" : ["%d dzień temu","%n dni temu","%n dni temu","%n dni temu"],
"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 month ago_::_%n months ago_" : ["%n miesiąc temu","%n miesięcy temu","%n miesięcy temu","%n miesięcy temu"],
"last year" : "w zeszłym roku",
- "_%n year ago_::_%n years ago_" : ["%n rok temu","%n lata temu","%n lat temu"],
- "_%n hour ago_::_%n hours ago_" : ["%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 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"],
"seconds ago" : "sekund temu",
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduł z id: %s nie istnieje. Należy go włączyć w ustawieniach aplikacji lub skontaktować się z administratorem.",
"File name is a reserved word" : "Nazwa pliku jest zarezerwowana",
"File name contains at least one invalid character" : "Nazwa pliku zawiera co najmniej jeden nieprawidłowy znak",
"File name is too long" : "Nazwa pliku zbyt długa",
+ "Dot files are not allowed" : "Pliki z kropką są nie dozwolone",
"Empty filename is not allowed" : "Pusta nazwa nie jest dozwolona.",
"APCu" : "APCu",
"Redis" : "Redis",
@@ -42,9 +49,10 @@ OC.L10N.register(
"Encryption" : "Szyfrowanie",
"Additional settings" : "Ustawienia dodatkowe",
"Tips & tricks" : "Porady i wskazówki",
- "%s enter the database username." : "%s wpisz nazwę użytkownika do bazy",
- "%s enter the database name." : "%s wpisz nazwę bazy.",
- "%s you may not use dots in the database name" : "%s nie można używać kropki w nazwie bazy danych",
+ "%s enter the database username and name." : "Podaj nazwę bazy danych i nazwę użytkownika %s",
+ "%s enter the database username." : "Podaj nazwę użytkownika %s",
+ "%s enter the database name." : "Podaj nazwę bazy danych %s",
+ "%s you may not use dots in the database name" : "Nie możesz używać kropek w nazwie bazy danych %s",
"Oracle connection could not be established" : "Nie można ustanowić połączenia z bazą Oracle",
"Oracle username and/or password not valid" : "Oracle: Nazwa użytkownika i/lub hasło jest niepoprawne",
"DB Error: \"%s\"" : "Błąd DB: \"%s\"",
@@ -54,36 +62,47 @@ OC.L10N.register(
"PostgreSQL username and/or password not valid" : "PostgreSQL: Nazwa użytkownika i/lub hasło jest niepoprawne",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nie jest wspierany i %s nie będzie działać poprawnie na tej platformie. Używasz na własne ryzyko!",
"For the best results, please consider using a GNU/Linux server instead." : "Aby uzyskać najlepsze rezultaty, rozważ w to miejsce użycie serwera 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." : "Wydaje się, że ta %s instancja używa PHP 32-bitowego środowiska i opcja open_basedir została ustawiona w php.ini. Spowoduje to problemy z plikami większymi niż 4 GB i jest wysoce niezalecane.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Proszę usunąć ustawienie open_basedir ze swojego php.ini albo przestaw na PHP 64-bitowe.",
"Set an admin username." : "Ustaw nazwę administratora.",
"Set an admin password." : "Ustaw hasło administratora.",
"Can't create or write into the data directory %s" : "Nie można tworzyć ani zapisywać w katalogu %s",
"Invalid Federated Cloud ID" : "Nieprawidłowy ID Stowarzyszonej Chmury",
- "%s shared »%s« with you" : "%s Współdzielone »%s« z tobą",
+ "%s shared »%s« with you" : "%s współdzieli »%s« z tobą",
"%s via %s" : "%s przez %s",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "Współdzielenie %s nie udało się, ponieważ backend nie pozwala na współdzielenie takiego typu jak %i.",
"Sharing %s failed, because the file does not exist" : "Wspóldzielenie %s nie powiodło się. ponieważ plik nie istnieje",
"You are not allowed to share %s" : "Nie masz uprawnień aby udostępnić %s",
+ "Sharing %s failed, because you can not share with yourself" : "Współdzielenie %s nie udało się, ponieważ nie możesz współdzielić sam ze sobą",
"Sharing %s failed, because the user %s does not exist" : "Współdzielenie %s nie powiodło się, ponieważ użytkownik %s nie istnieje",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Współdzielenie %s nie powiodło się, ponieważ użytkownik %s nie jest członkiem żadnej grupy której członkiem jest %s",
"Sharing %s failed, because this item is already shared with %s" : "Współdzielenie %s nie powiodło się, ponieważ element jest już współdzielony z %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Współdzielenie %s nie udało się, ponieważ ten obiekt już jest współdzielony z użytkownikiem %s",
"Sharing %s failed, because the group %s does not exist" : "Współdzielenie %s nie powiodło się, ponieważ grupa %s nie istnieje",
"Sharing %s failed, because %s is not a member of the group %s" : "Współdzielenie %s nie powiodło się, ponieważ %s nie jest członkiem grupy %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Musisz zapewnić hasło aby utworzyć link publiczny, dozwolone są tylko linki chronione",
"Sharing %s failed, because sharing with links is not allowed" : "Współdzielenie %s nie powiodło się, ponieważ współdzielenie z linkami nie jest dozwolone",
+ "Not allowed to create a federated share with the same user" : "Nie jest dozwolone tworzenie współdzielenia stowarzyszonego z tym samym użytkownikiem",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Współdzielenie %s nie powiodło się, nie można odnaleźć %s. Prawdopobnie serwer nie jest teraz osiągalny.",
"Share type %s is not valid for %s" : "Typ udziału %s nie jest właściwy dla %s",
"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Ustawienie uprawnień dla %s nie powiodło się, ponieważ uprawnienia wykraczają poza przydzielone %s",
"Setting permissions for %s failed, because the item was not found" : "Ustawienie uprawnień dla %s nie powiodło się, ponieważ element nie został znaleziony",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nie można ustawić daty wygaśnięcia. Udziały nie mogą wygasać później niż %s od momentu udostępnienia",
"Cannot set expiration date. Expiration date is in the past" : "Nie można ustawić daty wygaśnięcia. Data wygaśnięcia jest w przeszłości.",
+ "Cannot clear expiration date. Shares are required to have an expiration date." : "Nie można wyczyścić daty wygaśnięcia. Współudziały muszą posiadać datę wygaśnięcia.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Zaplecze do współdzielenia %s musi implementować interfejs OCP\\Share_Backend",
"Sharing backend %s not found" : "Zaplecze %s do współdzielenia nie zostało znalezione",
"Sharing backend for %s not found" : "Zaplecze do współdzielenia %s nie zostało znalezione",
+ "Sharing failed, because the user %s is the original sharer" : "Współdzielenie z użytkownikiem %s się nie udało, ponieważ już jest współdzielenie z tym użytkownikiem.",
"Sharing %s failed, because the permissions exceed permissions granted to %s" : "Współdzielenie %s nie powiodło się, ponieważ uprawnienia przekraczają te udzielone %s",
"Sharing %s failed, because resharing is not allowed" : "Współdzielenie %s nie powiodło się, ponieważ ponowne współdzielenie nie jest dozwolone",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Współdzielenie %s nie powiodło się, ponieważ zaplecze współdzielenia dla %s nie mogło znaleźć jego źródła",
"Sharing %s failed, because the file could not be found in the file cache" : "Współdzielenie %s nie powiodło się, ponieważ plik nie może zostać odnaleziony w buforze plików",
"Cannot increase permissions of %s" : "Nie można zwiększyć uprawnienia %s",
+ "Files can't be shared with delete permissions" : "Pliki nie mogą być współdzielone z uprawnieniami kasowania",
+ "Files can't be shared with create permissions" : "Pliki nie mogą być współdzielony z uprawnieniami tworzenia",
"Expiration date is in the past" : "Data ważności jest przeszła",
+ "Cannot set expiration date more than %s days in the future" : "Nie można utworzyć daty wygaśnięcia na %s dni do przodu",
"Could not find category \"%s\"" : "Nie można odnaleźć kategorii \"%s\"",
"Sunday" : "Niedziela",
"Monday" : "Poniedziałek",
@@ -133,6 +152,7 @@ OC.L10N.register(
"Apps" : "Aplikacje",
"Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "W nazwie użytkownika dozwolone są tylko następujące znaki : \"a-z\", \"A-Z\", \"0-9\" i \"_.@-'\"",
"A valid username must be provided" : "Należy podać prawidłową nazwę użytkownika",
+ "Username contains whitespace at the beginning or at the end" : "Nazwa użytkownika zawiera spację na początku albo na końcu",
"A valid password must be provided" : "Należy podać prawidłowe hasło",
"The username is already being used" : "Ta nazwa użytkownika jest już używana",
"Login canceled by app" : "Zalogowanie anulowane przez aplikację",
@@ -141,8 +161,12 @@ OC.L10N.register(
"Personal" : "Osobiste",
"Users" : "Użytkownicy",
"Admin" : "Administrator",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "Aplikacja \"%s\" nie może zostać zainstalowana, ponieważ plik informacyjny nie może zostać odczytany.",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Aplikacja \"%s\" nie może zostać zainstalowana, ponieważ jest niekompatybilna z obecną wersją serwera.",
"No app name specified" : "Nie określono nazwy aplikacji",
"App '%s' could not be installed!" : "Aplikacja '%s' nie mogła zostać zainstalowana!",
+ "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Aplikacja \"%s\" nie może zostać zainstalowana, ponieważ następujące zależności nie zostały spełnione: %s",
+ "a safe home for all your data" : "Bezpieczny dom dla twoich danych",
"File is currently busy, please try again later" : "Plik jest obecnie niedostępny, proszę spróbować ponownie później",
"Can't read file" : "Nie można odczytać pliku.",
"Application is not enabled" : "Aplikacja nie jest włączona",
@@ -154,11 +178,19 @@ OC.L10N.register(
"Cannot write into \"apps\" directory" : "Nie można zapisać do katalogu \"apps\"",
"This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Można to zwykle rozwiązać przez %sdodanie serwerowi www uprawnień zapisu do katalogu apps%s lub wyłączenie appstore w pliku konfiguracyjnym.",
"Cannot create \"data\" directory (%s)" : "Nie można utworzyć katalogu \"data\" (%s)",
+ "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Z reguły to może zostać naprawione <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">poprzez danie serwerowi web praw zapisu do katalogu domowego aplikacji</a>.",
"Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Problemy z uprawnieniami można zwykle naprawić przez %sdodanie serwerowi www uprawnień zapisu do katalogu głównego%s.",
"Setting locale to %s failed" : "Nie udało się zmienić języka na %s",
"Please install one of these locales on your system and restart your webserver." : "Proszę zainstalować jedno z poniższych locale w Twoim systemie i uruchomić ponownie serwer www.",
"Please ask your server administrator to install the module." : "Proszę poproś administratora serwera aby zainstalował ten moduł.",
"PHP module %s not installed." : "Moduł PHP %s nie jest zainstalowany.",
+ "PHP setting \"%s\" is not set to \"%s\"." : "Ustawienie PHP \"%s\" nie jest ustawione na \"%s\".",
+ "Adjusting this setting in php.ini will make Nextcloud run again" : "Modyfikacja tego w php.ini spowoduje, że Nextcloud ponownie będzie działał",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload jest ustawione na \"%s\" zamiast oczekiwanej wartości \"0\"",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Aby naprawić ten problem ustaw <code>mbstring.func_overload</code> na <code>0</code> w swoim php.ini.",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "Wymagana wersja libxml2 to przynajmniej 2.7.0. Obecnie jest zainstalowana wersja %s.",
+ "To fix this issue update your libxml2 version and restart your web server." : "Aby naprawić ten problem zaktualizuj swoją wersję libxml2 i zrestartuj serwer web.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Najwidoczniej PHP jest tak ustawione, aby wycinać bloki wklejonych dokumentów. Może to spowodować, że niektóre wbudowane aplikacje będą niedostępne.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dzieje się tak prawdopodobnie przez cache lub akcelerator taki jak Zend OPcache lub eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Moduły PHP zostały zainstalowane, ale nadal brakuje ich na liście?",
"Please ask your server administrator to restart the web server." : "Poproś administratora serwera o restart serwera www.",
@@ -166,9 +198,16 @@ OC.L10N.register(
"Please upgrade your database version" : "Uaktualnij wersję bazy danych",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Zmień uprawnienia na 0770, żeby ukryć zawartość katalogu przed innymi użytkownikami.",
"Data directory (%s) is readable by other users" : "Katalog danych (%s) jest możliwy do odczytania przez innych użytkowników",
+ "Data directory (%s) must be an absolute path" : "Katalog danych (%s) musi być ścieżką absolutną",
+ "Check the value of \"datadirectory\" in your configuration" : "Sprawdź wartość \"datadirectory\" w swojej konfiguracji",
"Data directory (%s) is invalid" : "Katalog danych (%s) jest nieprawidłowy",
"Please check that the data directory contains a file \".ocdata\" in its root." : "Sprawdź, czy katalog danych zawiera plik \".ocdata\".",
"Could not obtain lock type %d on \"%s\"." : "Nie można uzyskać blokady typu %d na \"%s\".",
+ "Storage unauthorized. %s" : "Magazyn nieautoryzowany. %s",
+ "Storage incomplete configuration. %s" : "Niekompletna konfiguracja magazynu. %s",
+ "Storage connection error. %s" : "Błąd połączenia magazynu. %s",
+ "Storage is temporarily not available" : "Magazyn jest tymczasowo niedostępny",
+ "Storage connection timeout. %s" : "Limit czasu połączenia do magazynu został przekroczony. %s",
"4-byte characters are not supported in file names" : "Znaki 4-bajtowe są niedozwolone w nazwach plików",
"App directory already exists" : "Katalog aplikacji już isnieje",
"Can't create app folder. Please fix permissions. %s" : "Nie mogę utworzyć katalogu aplikacji. Proszę popraw uprawnienia. %s",
@@ -179,12 +218,16 @@ OC.L10N.register(
"Archives of type %s are not supported" : "Typ archiwum %s nie jest obsługiwany",
"Failed to open archive when installing app" : "Nie udało się otworzyć archiwum podczas instalacji aplikacji",
"App does not provide an info.xml file" : "Aplikacja nie posiada pliku info.xml",
+ "App cannot be installed because appinfo file cannot be read." : "Aplikacja nie może zostać zainstalowana, ponieważ plik z informacjami o aplikacji nie może zostać odczytany.",
"Signature could not get checked. Please contact the app developer and check your admin screen." : "Sygnatura nie mogła zostać sprawdzona. Proszę o skontaktownie się z twórcą aplikacji i sprawdzenie panelu administratora.",
"App can't be installed because of not allowed code in the App" : "Aplikacja nie może być zainstalowany ponieważ nie dopuszcza kod w aplikacji",
+ "App can't be installed because it is not compatible with this version of the server" : "Aplikacja nie może zostać zainstalowane, ponieważ jest niekompatybilna z tą wersją serwera",
"App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Aplikacja nie może być zainstalowana ponieważ true tag nie jest <shipped>true</shipped> , co nie jest dozwolone dla aplikacji nie wysłanych",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Aplikacja nie może zostać zainstalowana, ponieważ wersja w info.xml nie jest taka sama jak wersja raportowana ze sklepu aplikacji",
"Logging" : "Logowanie",
"Recommended" : "Polecane",
"Microsoft Windows Platform is not supported" : "Platforma Microsoft Windows nie jest wspierana",
+ "Running Nextcloud Server on the Microsoft Windows platform is not supported. We suggest you use a Linux server in a virtual machine if you have no option for migrating the server itself." : "Uruchomienie serwera Nextcloud na platformie Microsoft Windows nie jest wspierane. Jeśli nie masz możliwości migracji samego systemu sugerujemy, żebyś użył wirtualnego serwera z Linuksem.",
"Storage not available" : "Pamięć nie dostępna"
},
-"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
+"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json
index 7414b134f53..b3d9a8ff619 100644
--- a/lib/l10n/pl.json
+++ b/lib/l10n/pl.json
@@ -3,10 +3,16 @@
"This can usually be fixed by giving the webserver write access to the config directory" : "Można to zwykle rozwiązać przez dodanie serwerowi www uprawnień zapisu do katalogu config.",
"See %s" : "Zobacz %s",
"This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Można to zwykle rozwiązać przez %sdodanie serwerowi www uprawnień zapisu do katalogu config%s.",
+ "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Pliki aplikacji %1$s nie zostały zastąpione prawidłowo. Upewnij się, że to jest wersja kompatybilna z serwerem.",
"Sample configuration detected" : "Wykryto przykładową konfigurację",
"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" : "Wykryto skopiowanie przykładowej konfiguracji. To może popsuć Twoją instalację i nie jest wspierane. Proszę przeczytać dokumentację przed dokonywaniem zmian w config.php",
+ "%1$s and %2$s" : "%1$s i %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s i %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s i %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s i %5$s",
"PHP %s or higher is required." : "PHP %s lub wyższe jest wymagane.",
"PHP with a version lower than %s is required." : "Wersja PHP jest niższa niż %s, która jest wymagana.",
+ "%sbit or higher PHP required." : "%sbit lub wyższe PHP jest wymagane.",
"Following databases are supported: %s" : "Obsługiwane są następujące bazy danych: %s",
"The command line tool %s could not be found" : "Narzędzie konsoli %s nie zostało znalezione",
"The library %s is not available." : "Biblioteka %s nie jest dostępna.",
@@ -20,18 +26,19 @@
"Avatar image is not square" : "Obraz awataru nie jest kwadratowy",
"today" : "dziś",
"yesterday" : "wczoraj",
- "_%n day ago_::_%n days ago_" : ["%d dzień temu","%n dni temu","%n dni temu"],
+ "_%n day ago_::_%n days ago_" : ["%d dzień temu","%n dni temu","%n dni temu","%n dni temu"],
"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 month ago_::_%n months ago_" : ["%n miesiąc temu","%n miesięcy temu","%n miesięcy temu","%n miesięcy temu"],
"last year" : "w zeszłym roku",
- "_%n year ago_::_%n years ago_" : ["%n rok temu","%n lata temu","%n lat temu"],
- "_%n hour ago_::_%n hours ago_" : ["%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 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"],
"seconds ago" : "sekund temu",
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduł z id: %s nie istnieje. Należy go włączyć w ustawieniach aplikacji lub skontaktować się z administratorem.",
"File name is a reserved word" : "Nazwa pliku jest zarezerwowana",
"File name contains at least one invalid character" : "Nazwa pliku zawiera co najmniej jeden nieprawidłowy znak",
"File name is too long" : "Nazwa pliku zbyt długa",
+ "Dot files are not allowed" : "Pliki z kropką są nie dozwolone",
"Empty filename is not allowed" : "Pusta nazwa nie jest dozwolona.",
"APCu" : "APCu",
"Redis" : "Redis",
@@ -40,9 +47,10 @@
"Encryption" : "Szyfrowanie",
"Additional settings" : "Ustawienia dodatkowe",
"Tips & tricks" : "Porady i wskazówki",
- "%s enter the database username." : "%s wpisz nazwę użytkownika do bazy",
- "%s enter the database name." : "%s wpisz nazwę bazy.",
- "%s you may not use dots in the database name" : "%s nie można używać kropki w nazwie bazy danych",
+ "%s enter the database username and name." : "Podaj nazwę bazy danych i nazwę użytkownika %s",
+ "%s enter the database username." : "Podaj nazwę użytkownika %s",
+ "%s enter the database name." : "Podaj nazwę bazy danych %s",
+ "%s you may not use dots in the database name" : "Nie możesz używać kropek w nazwie bazy danych %s",
"Oracle connection could not be established" : "Nie można ustanowić połączenia z bazą Oracle",
"Oracle username and/or password not valid" : "Oracle: Nazwa użytkownika i/lub hasło jest niepoprawne",
"DB Error: \"%s\"" : "Błąd DB: \"%s\"",
@@ -52,36 +60,47 @@
"PostgreSQL username and/or password not valid" : "PostgreSQL: Nazwa użytkownika i/lub hasło jest niepoprawne",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nie jest wspierany i %s nie będzie działać poprawnie na tej platformie. Używasz na własne ryzyko!",
"For the best results, please consider using a GNU/Linux server instead." : "Aby uzyskać najlepsze rezultaty, rozważ w to miejsce użycie serwera 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." : "Wydaje się, że ta %s instancja używa PHP 32-bitowego środowiska i opcja open_basedir została ustawiona w php.ini. Spowoduje to problemy z plikami większymi niż 4 GB i jest wysoce niezalecane.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Proszę usunąć ustawienie open_basedir ze swojego php.ini albo przestaw na PHP 64-bitowe.",
"Set an admin username." : "Ustaw nazwę administratora.",
"Set an admin password." : "Ustaw hasło administratora.",
"Can't create or write into the data directory %s" : "Nie można tworzyć ani zapisywać w katalogu %s",
"Invalid Federated Cloud ID" : "Nieprawidłowy ID Stowarzyszonej Chmury",
- "%s shared »%s« with you" : "%s Współdzielone »%s« z tobą",
+ "%s shared »%s« with you" : "%s współdzieli »%s« z tobą",
"%s via %s" : "%s przez %s",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "Współdzielenie %s nie udało się, ponieważ backend nie pozwala na współdzielenie takiego typu jak %i.",
"Sharing %s failed, because the file does not exist" : "Wspóldzielenie %s nie powiodło się. ponieważ plik nie istnieje",
"You are not allowed to share %s" : "Nie masz uprawnień aby udostępnić %s",
+ "Sharing %s failed, because you can not share with yourself" : "Współdzielenie %s nie udało się, ponieważ nie możesz współdzielić sam ze sobą",
"Sharing %s failed, because the user %s does not exist" : "Współdzielenie %s nie powiodło się, ponieważ użytkownik %s nie istnieje",
"Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "Współdzielenie %s nie powiodło się, ponieważ użytkownik %s nie jest członkiem żadnej grupy której członkiem jest %s",
"Sharing %s failed, because this item is already shared with %s" : "Współdzielenie %s nie powiodło się, ponieważ element jest już współdzielony z %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "Współdzielenie %s nie udało się, ponieważ ten obiekt już jest współdzielony z użytkownikiem %s",
"Sharing %s failed, because the group %s does not exist" : "Współdzielenie %s nie powiodło się, ponieważ grupa %s nie istnieje",
"Sharing %s failed, because %s is not a member of the group %s" : "Współdzielenie %s nie powiodło się, ponieważ %s nie jest członkiem grupy %s",
"You need to provide a password to create a public link, only protected links are allowed" : "Musisz zapewnić hasło aby utworzyć link publiczny, dozwolone są tylko linki chronione",
"Sharing %s failed, because sharing with links is not allowed" : "Współdzielenie %s nie powiodło się, ponieważ współdzielenie z linkami nie jest dozwolone",
+ "Not allowed to create a federated share with the same user" : "Nie jest dozwolone tworzenie współdzielenia stowarzyszonego z tym samym użytkownikiem",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Współdzielenie %s nie powiodło się, nie można odnaleźć %s. Prawdopobnie serwer nie jest teraz osiągalny.",
"Share type %s is not valid for %s" : "Typ udziału %s nie jest właściwy dla %s",
"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Ustawienie uprawnień dla %s nie powiodło się, ponieważ uprawnienia wykraczają poza przydzielone %s",
"Setting permissions for %s failed, because the item was not found" : "Ustawienie uprawnień dla %s nie powiodło się, ponieważ element nie został znaleziony",
"Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Nie można ustawić daty wygaśnięcia. Udziały nie mogą wygasać później niż %s od momentu udostępnienia",
"Cannot set expiration date. Expiration date is in the past" : "Nie można ustawić daty wygaśnięcia. Data wygaśnięcia jest w przeszłości.",
+ "Cannot clear expiration date. Shares are required to have an expiration date." : "Nie można wyczyścić daty wygaśnięcia. Współudziały muszą posiadać datę wygaśnięcia.",
"Sharing backend %s must implement the interface OCP\\Share_Backend" : "Zaplecze do współdzielenia %s musi implementować interfejs OCP\\Share_Backend",
"Sharing backend %s not found" : "Zaplecze %s do współdzielenia nie zostało znalezione",
"Sharing backend for %s not found" : "Zaplecze do współdzielenia %s nie zostało znalezione",
+ "Sharing failed, because the user %s is the original sharer" : "Współdzielenie z użytkownikiem %s się nie udało, ponieważ już jest współdzielenie z tym użytkownikiem.",
"Sharing %s failed, because the permissions exceed permissions granted to %s" : "Współdzielenie %s nie powiodło się, ponieważ uprawnienia przekraczają te udzielone %s",
"Sharing %s failed, because resharing is not allowed" : "Współdzielenie %s nie powiodło się, ponieważ ponowne współdzielenie nie jest dozwolone",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "Współdzielenie %s nie powiodło się, ponieważ zaplecze współdzielenia dla %s nie mogło znaleźć jego źródła",
"Sharing %s failed, because the file could not be found in the file cache" : "Współdzielenie %s nie powiodło się, ponieważ plik nie może zostać odnaleziony w buforze plików",
"Cannot increase permissions of %s" : "Nie można zwiększyć uprawnienia %s",
+ "Files can't be shared with delete permissions" : "Pliki nie mogą być współdzielone z uprawnieniami kasowania",
+ "Files can't be shared with create permissions" : "Pliki nie mogą być współdzielony z uprawnieniami tworzenia",
"Expiration date is in the past" : "Data ważności jest przeszła",
+ "Cannot set expiration date more than %s days in the future" : "Nie można utworzyć daty wygaśnięcia na %s dni do przodu",
"Could not find category \"%s\"" : "Nie można odnaleźć kategorii \"%s\"",
"Sunday" : "Niedziela",
"Monday" : "Poniedziałek",
@@ -131,6 +150,7 @@
"Apps" : "Aplikacje",
"Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "W nazwie użytkownika dozwolone są tylko następujące znaki : \"a-z\", \"A-Z\", \"0-9\" i \"_.@-'\"",
"A valid username must be provided" : "Należy podać prawidłową nazwę użytkownika",
+ "Username contains whitespace at the beginning or at the end" : "Nazwa użytkownika zawiera spację na początku albo na końcu",
"A valid password must be provided" : "Należy podać prawidłowe hasło",
"The username is already being used" : "Ta nazwa użytkownika jest już używana",
"Login canceled by app" : "Zalogowanie anulowane przez aplikację",
@@ -139,8 +159,12 @@
"Personal" : "Osobiste",
"Users" : "Użytkownicy",
"Admin" : "Administrator",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "Aplikacja \"%s\" nie może zostać zainstalowana, ponieważ plik informacyjny nie może zostać odczytany.",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Aplikacja \"%s\" nie może zostać zainstalowana, ponieważ jest niekompatybilna z obecną wersją serwera.",
"No app name specified" : "Nie określono nazwy aplikacji",
"App '%s' could not be installed!" : "Aplikacja '%s' nie mogła zostać zainstalowana!",
+ "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Aplikacja \"%s\" nie może zostać zainstalowana, ponieważ następujące zależności nie zostały spełnione: %s",
+ "a safe home for all your data" : "Bezpieczny dom dla twoich danych",
"File is currently busy, please try again later" : "Plik jest obecnie niedostępny, proszę spróbować ponownie później",
"Can't read file" : "Nie można odczytać pliku.",
"Application is not enabled" : "Aplikacja nie jest włączona",
@@ -152,11 +176,19 @@
"Cannot write into \"apps\" directory" : "Nie można zapisać do katalogu \"apps\"",
"This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Można to zwykle rozwiązać przez %sdodanie serwerowi www uprawnień zapisu do katalogu apps%s lub wyłączenie appstore w pliku konfiguracyjnym.",
"Cannot create \"data\" directory (%s)" : "Nie można utworzyć katalogu \"data\" (%s)",
+ "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Z reguły to może zostać naprawione <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">poprzez danie serwerowi web praw zapisu do katalogu domowego aplikacji</a>.",
"Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Problemy z uprawnieniami można zwykle naprawić przez %sdodanie serwerowi www uprawnień zapisu do katalogu głównego%s.",
"Setting locale to %s failed" : "Nie udało się zmienić języka na %s",
"Please install one of these locales on your system and restart your webserver." : "Proszę zainstalować jedno z poniższych locale w Twoim systemie i uruchomić ponownie serwer www.",
"Please ask your server administrator to install the module." : "Proszę poproś administratora serwera aby zainstalował ten moduł.",
"PHP module %s not installed." : "Moduł PHP %s nie jest zainstalowany.",
+ "PHP setting \"%s\" is not set to \"%s\"." : "Ustawienie PHP \"%s\" nie jest ustawione na \"%s\".",
+ "Adjusting this setting in php.ini will make Nextcloud run again" : "Modyfikacja tego w php.ini spowoduje, że Nextcloud ponownie będzie działał",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload jest ustawione na \"%s\" zamiast oczekiwanej wartości \"0\"",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Aby naprawić ten problem ustaw <code>mbstring.func_overload</code> na <code>0</code> w swoim php.ini.",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "Wymagana wersja libxml2 to przynajmniej 2.7.0. Obecnie jest zainstalowana wersja %s.",
+ "To fix this issue update your libxml2 version and restart your web server." : "Aby naprawić ten problem zaktualizuj swoją wersję libxml2 i zrestartuj serwer web.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Najwidoczniej PHP jest tak ustawione, aby wycinać bloki wklejonych dokumentów. Może to spowodować, że niektóre wbudowane aplikacje będą niedostępne.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dzieje się tak prawdopodobnie przez cache lub akcelerator taki jak Zend OPcache lub eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Moduły PHP zostały zainstalowane, ale nadal brakuje ich na liście?",
"Please ask your server administrator to restart the web server." : "Poproś administratora serwera o restart serwera www.",
@@ -164,9 +196,16 @@
"Please upgrade your database version" : "Uaktualnij wersję bazy danych",
"Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Zmień uprawnienia na 0770, żeby ukryć zawartość katalogu przed innymi użytkownikami.",
"Data directory (%s) is readable by other users" : "Katalog danych (%s) jest możliwy do odczytania przez innych użytkowników",
+ "Data directory (%s) must be an absolute path" : "Katalog danych (%s) musi być ścieżką absolutną",
+ "Check the value of \"datadirectory\" in your configuration" : "Sprawdź wartość \"datadirectory\" w swojej konfiguracji",
"Data directory (%s) is invalid" : "Katalog danych (%s) jest nieprawidłowy",
"Please check that the data directory contains a file \".ocdata\" in its root." : "Sprawdź, czy katalog danych zawiera plik \".ocdata\".",
"Could not obtain lock type %d on \"%s\"." : "Nie można uzyskać blokady typu %d na \"%s\".",
+ "Storage unauthorized. %s" : "Magazyn nieautoryzowany. %s",
+ "Storage incomplete configuration. %s" : "Niekompletna konfiguracja magazynu. %s",
+ "Storage connection error. %s" : "Błąd połączenia magazynu. %s",
+ "Storage is temporarily not available" : "Magazyn jest tymczasowo niedostępny",
+ "Storage connection timeout. %s" : "Limit czasu połączenia do magazynu został przekroczony. %s",
"4-byte characters are not supported in file names" : "Znaki 4-bajtowe są niedozwolone w nazwach plików",
"App directory already exists" : "Katalog aplikacji już isnieje",
"Can't create app folder. Please fix permissions. %s" : "Nie mogę utworzyć katalogu aplikacji. Proszę popraw uprawnienia. %s",
@@ -177,12 +216,16 @@
"Archives of type %s are not supported" : "Typ archiwum %s nie jest obsługiwany",
"Failed to open archive when installing app" : "Nie udało się otworzyć archiwum podczas instalacji aplikacji",
"App does not provide an info.xml file" : "Aplikacja nie posiada pliku info.xml",
+ "App cannot be installed because appinfo file cannot be read." : "Aplikacja nie może zostać zainstalowana, ponieważ plik z informacjami o aplikacji nie może zostać odczytany.",
"Signature could not get checked. Please contact the app developer and check your admin screen." : "Sygnatura nie mogła zostać sprawdzona. Proszę o skontaktownie się z twórcą aplikacji i sprawdzenie panelu administratora.",
"App can't be installed because of not allowed code in the App" : "Aplikacja nie może być zainstalowany ponieważ nie dopuszcza kod w aplikacji",
+ "App can't be installed because it is not compatible with this version of the server" : "Aplikacja nie może zostać zainstalowane, ponieważ jest niekompatybilna z tą wersją serwera",
"App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Aplikacja nie może być zainstalowana ponieważ true tag nie jest <shipped>true</shipped> , co nie jest dozwolone dla aplikacji nie wysłanych",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Aplikacja nie może zostać zainstalowana, ponieważ wersja w info.xml nie jest taka sama jak wersja raportowana ze sklepu aplikacji",
"Logging" : "Logowanie",
"Recommended" : "Polecane",
"Microsoft Windows Platform is not supported" : "Platforma Microsoft Windows nie jest wspierana",
+ "Running Nextcloud Server on the Microsoft Windows platform is not supported. We suggest you use a Linux server in a virtual machine if you have no option for migrating the server itself." : "Uruchomienie serwera Nextcloud na platformie Microsoft Windows nie jest wspierane. Jeśli nie masz możliwości migracji samego systemu sugerujemy, żebyś użył wirtualnego serwera z Linuksem.",
"Storage not available" : "Pamięć nie dostępna"
-},"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
+},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/lib/l10n/sk_SK.js b/lib/l10n/sk_SK.js
index 0e4854cdef0..e723baebea4 100644
--- a/lib/l10n/sk_SK.js
+++ b/lib/l10n/sk_SK.js
@@ -8,8 +8,13 @@ OC.L10N.register(
"The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Súbory aplikácie %$1s nebolo možné úspešne nahradiť. Uistite sa, že verzia je kompatibilná s verziou servera.",
"Sample configuration detected" : "Detekovaná bola vzorová konfigurácia",
"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" : "Zistilo sa, že konfigurácia bola skopírovaná zo vzorových súborov. Takáto konfigurácia nie je podporovaná a môže poškodiť vašu inštaláciu. Prečítajte si dokumentáciu pred vykonaním zmien v config.php",
+ "%1$s and %2$s" : "%1$s a %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s a %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s a %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s a %5$s",
"PHP %s or higher is required." : "Požadovaná verzia PHP %s alebo vyššia.",
"PHP with a version lower than %s is required." : "PHP je vyžadované vo vyššej verzii ako %s.",
+ "%sbit or higher PHP required." : "%sbit alebo vyššie PHP je vyžadované.",
"Following databases are supported: %s" : "Podporované sú tieto databázy: %s",
"The command line tool %s could not be found" : "Nástroj príkazového riadka %s nebol nájdený",
"The library %s is not available." : "Knižnica %s je nedostupná.",
@@ -20,6 +25,7 @@ OC.L10N.register(
"Server version %s or lower is required." : "Je vyžadovaná verzia servera %s alebo nižšia.",
"Unknown filetype" : "Neznámy typ súboru",
"Invalid image" : "Chybný obrázok",
+ "Avatar image is not square" : "Obrázok avatara nie je štvorcový",
"today" : "dnes",
"yesterday" : "včera",
"_%n day ago_::_%n days ago_" : ["včera","pred %n dňami","pred %n dňami"],
@@ -193,6 +199,8 @@ OC.L10N.register(
"Data directory (%s) is invalid" : "Priečinok dát (%s) je neplatný",
"Please check that the data directory contains a file \".ocdata\" in its root." : "Prosím, skontrolujte, či priečinok dát obsahuje súbor \".ocdata\".",
"Could not obtain lock type %d on \"%s\"." : "Nepodarilo sa získať zámok typu %d na „%s“.",
+ "Storage connection error. %s" : "Chyba pripojenia k úložisku. %s",
+ "Storage is temporarily not available" : "Úložisko je dočasne nedostupné",
"4-byte characters are not supported in file names" : "V názve súbou nie sú podporované 4-bajtové znaky.",
"App directory already exists" : "Aplikačný priečinok už existuje",
"Can't create app folder. Please fix permissions. %s" : "Nemožno vytvoriť aplikačný priečinok. Prosím upravte povolenia. %s",
diff --git a/lib/l10n/sk_SK.json b/lib/l10n/sk_SK.json
index ddd42d62b8e..7deb8eb8ad8 100644
--- a/lib/l10n/sk_SK.json
+++ b/lib/l10n/sk_SK.json
@@ -6,8 +6,13 @@
"The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Súbory aplikácie %$1s nebolo možné úspešne nahradiť. Uistite sa, že verzia je kompatibilná s verziou servera.",
"Sample configuration detected" : "Detekovaná bola vzorová konfigurácia",
"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" : "Zistilo sa, že konfigurácia bola skopírovaná zo vzorových súborov. Takáto konfigurácia nie je podporovaná a môže poškodiť vašu inštaláciu. Prečítajte si dokumentáciu pred vykonaním zmien v config.php",
+ "%1$s and %2$s" : "%1$s a %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s a %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s a %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s a %5$s",
"PHP %s or higher is required." : "Požadovaná verzia PHP %s alebo vyššia.",
"PHP with a version lower than %s is required." : "PHP je vyžadované vo vyššej verzii ako %s.",
+ "%sbit or higher PHP required." : "%sbit alebo vyššie PHP je vyžadované.",
"Following databases are supported: %s" : "Podporované sú tieto databázy: %s",
"The command line tool %s could not be found" : "Nástroj príkazového riadka %s nebol nájdený",
"The library %s is not available." : "Knižnica %s je nedostupná.",
@@ -18,6 +23,7 @@
"Server version %s or lower is required." : "Je vyžadovaná verzia servera %s alebo nižšia.",
"Unknown filetype" : "Neznámy typ súboru",
"Invalid image" : "Chybný obrázok",
+ "Avatar image is not square" : "Obrázok avatara nie je štvorcový",
"today" : "dnes",
"yesterday" : "včera",
"_%n day ago_::_%n days ago_" : ["včera","pred %n dňami","pred %n dňami"],
@@ -191,6 +197,8 @@
"Data directory (%s) is invalid" : "Priečinok dát (%s) je neplatný",
"Please check that the data directory contains a file \".ocdata\" in its root." : "Prosím, skontrolujte, či priečinok dát obsahuje súbor \".ocdata\".",
"Could not obtain lock type %d on \"%s\"." : "Nepodarilo sa získať zámok typu %d na „%s“.",
+ "Storage connection error. %s" : "Chyba pripojenia k úložisku. %s",
+ "Storage is temporarily not available" : "Úložisko je dočasne nedostupné",
"4-byte characters are not supported in file names" : "V názve súbou nie sú podporované 4-bajtové znaky.",
"App directory already exists" : "Aplikačný priečinok už existuje",
"Can't create app folder. Please fix permissions. %s" : "Nemožno vytvoriť aplikačný priečinok. Prosím upravte povolenia. %s",
diff --git a/lib/l10n/zh_CN.js b/lib/l10n/zh_CN.js
new file mode 100644
index 00000000000..e2c683b68bb
--- /dev/null
+++ b/lib/l10n/zh_CN.js
@@ -0,0 +1,233 @@
+OC.L10N.register(
+ "lib",
+ {
+ "Cannot write into \"config\" directory!" : "无法写入 \"config\" 目录!",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "您可以设置 Web 服务器对 config 目录的写权限修复这个问题",
+ "See %s" : "查看 %s",
+ "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "您可以由 %s 设置 Web 服务器对 config 目录 %s 的写权限修复这个问题",
+ "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "应用 %$1s 的文件替换不正确. 请确认版本与当前服务器兼容.",
+ "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 的样例文件直接复制使用. 这可能会破坏您的安装. 在对 config.php 进行修改之前请先阅读相关文档.",
+ "%1$s and %2$s" : "%1$s 和 %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s 和 %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s 和 %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s 和 %5$s",
+ "PHP %s or higher is required." : "要求 PHP 版本 %s 或者更高。",
+ "PHP with a version lower than %s is required." : "需要版本低于 %s 的PHP.",
+ "%sbit or higher PHP required." : "需要 %s 或更高版本的 PHP",
+ "Following databases are supported: %s" : "支持以下数据库: %s",
+ "The command line tool %s could not be found" : "命令行工具 %s 未找到",
+ "The library %s is not available." : "库文件 %s 不可用",
+ "Library %s with a version higher than %s is required - available version %s." : "%s 需要 %s 或更高的版本 - 可用版本 %s.",
+ "Library %s with a version lower than %s is required - available version %s." : "%s 需要 %s 或更低的版本 - 可用版本 %s.",
+ "Following platforms are supported: %s" : "支持以下平台:%s",
+ "Server version %s or higher is required." : "需要服务器版本 %s 或更高版本。",
+ "Server version %s or lower is required." : "需要服务器版本 %s 或更低版本。",
+ "Unknown filetype" : "未知的文件类型",
+ "Invalid image" : "无效的图像",
+ "Avatar image is not square" : "头像图像不是正方形",
+ "today" : "今天",
+ "yesterday" : "昨天",
+ "_%n day ago_::_%n days ago_" : ["%n 天前"],
+ "last month" : "上月",
+ "_%n month ago_::_%n months ago_" : ["%n 月前"],
+ "last year" : "去年",
+ "_%n year ago_::_%n years ago_" : ["%n 年前"],
+ "_%n hour ago_::_%n hours ago_" : ["%n 小时前"],
+ "_%n minute ago_::_%n minutes ago_" : ["%n 分钟前"],
+ "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" : "文件名包含敏感字符",
+ "File name contains at least one invalid character" : "文件名中存在至少一个非法字符",
+ "File name is too long" : "文件名过长",
+ "Dot files are not allowed" : ".文件 不被允许",
+ "Empty filename is not allowed" : "不允许使用空名称。",
+ "APCu" : "APCu",
+ "Redis" : "Redis",
+ "Server settings" : "服务器设置",
+ "Sharing" : "分享",
+ "Encryption" : "加密",
+ "Additional settings" : "其他设置",
+ "Tips & tricks" : "小提示",
+ "%s enter the database username and name." : "%s 输入数据库用户名和名称.",
+ "%s enter the database username." : "%s 输入数据库用户名。",
+ "%s enter the database name." : "%s 输入数据库名称。",
+ "%s you may not use dots in the database name" : "%s 您不能在数据库名称中使用英文句号。",
+ "Oracle connection could not be established" : "不能建立甲骨文连接",
+ "Oracle username and/or password not valid" : "Oracle 数据库用户名和/或密码无效",
+ "DB Error: \"%s\"" : "数据库错误:\"%s\"",
+ "Offending command was: \"%s\"" : "冲突命令为:\"%s\"",
+ "You need to enter either an existing account or the administrator." : "你需要输入一个数据库中已有的账户或管理员账户。",
+ "Offending command was: \"%s\", name: %s, password: %s" : "冲突命令为:\"%s\",名称:%s,密码:%s",
+ "PostgreSQL username and/or password not valid" : "PostgreSQL 数据库用户名和/或密码无效",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X 不被支持并且 %s 在这个平台上无法正常工作。请自行承担风险!",
+ "For the best results, please consider using a GNU/Linux server instead." : "为了达到最好的效果,请考虑使用 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." : "看起来这个 %s 实例运行在32位PHP环境中并且已在php.ini中配置open_basedir。这将在文件超过4GB时出现问题,我们极力反对这样做。",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "请删除php.ini中的open_basedir设置或切换到64位PHP。",
+ "Set an admin username." : "请设置一个管理员用户名。",
+ "Set an admin password." : "请设置一个管理员密码。",
+ "Can't create or write into the data directory %s" : "无法创建或写入数据目录 %s",
+ "Invalid Federated Cloud ID" : "无效的联合云ID",
+ "%s shared »%s« with you" : "%s 向您分享了 »%s«",
+ "%s via %s" : "%s 通过 %s",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "分享 %s 失败, 因为后端不允许分享 %i 类型",
+ "Sharing %s failed, because the file does not exist" : "分享 %s 失败, 因为文件不存在.",
+ "You are not allowed to share %s" : "您无权分享 %s",
+ "Sharing %s failed, because you can not share with yourself" : "分享 %s 失败, 因为您不能分享给自己",
+ "Sharing %s failed, because the user %s does not exist" : "分享 %s 失败, 因为用户 %s 不存在",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "分享 %s 失败, 因为用户 %s 不是 %s 所属的任何组的用户",
+ "Sharing %s failed, because this item is already shared with %s" : "分享 %s 失败, 因为该项已经分享给用户 %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "分享 %s 失败, 因为该项已经分享给用户 %s",
+ "Sharing %s failed, because the group %s does not exist" : "分享 %s 失败, 因为 %s 分组不存在",
+ "Sharing %s failed, because %s is not a member of the group %s" : "分享 %s 失败, 因为 %s 不是 %s 分组的成员",
+ "You need to provide a password to create a public link, only protected links are allowed" : "链接分享需要密码, 您需要提供一个密码以创建公开连接",
+ "Sharing %s failed, because sharing with links is not allowed" : "分享 %s 失败, 因为不允许使用链接分享",
+ "Not allowed to create a federated share with the same user" : "不能给你自己分享文件",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "分享 %s 失败, 无法找到 %s, 该服务当前无法连接.",
+ "Share type %s is not valid for %s" : "%s 不是 %s 的合法共享类型",
+ "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "设置 %s 权限失败,因为权限超出了 %s 已有权限。",
+ "Setting permissions for %s failed, because the item was not found" : "设置 %s 的权限失败,因为未找到到对应项",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "无法设置过期时间. 过期时间不能晚于其分享时间 %s",
+ "Cannot set expiration date. Expiration date is in the past" : "无法设置过期时间. 过期时间不能为过去",
+ "Cannot clear expiration date. Shares are required to have an expiration date." : "无法清除过期时间. 每个分享必须有一个过期时间",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "分享后端 %s 必须实现 OCP\\Share_Backend 接口",
+ "Sharing backend %s not found" : "%s 的分享后端未找到",
+ "Sharing backend for %s not found" : "%s 的分享后端未找到",
+ "Sharing failed, because the user %s is the original sharer" : "分享失败, 因为用户 %s 是原始的分享者.",
+ "Sharing %s failed, because the permissions exceed permissions granted to %s" : "分享 %s 失败, 因为权限超过了 %s 的已有权限",
+ "Sharing %s failed, because resharing is not allowed" : "分享 %s 失败, 因为不允许二次共享",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "分享 %s 失败, 因为无法找到 %s 分享后端的来源",
+ "Sharing %s failed, because the file could not be found in the file cache" : "分享 %s 失败, 因为文件缓存中找不到该文件",
+ "Cannot increase permissions of %s" : "无法提升 %s 的权限",
+ "Files can't be shared with delete permissions" : "无法分享有删除权限的文件",
+ "Files can't be shared with create permissions" : "无法分享有创建权限的文件",
+ "Expiration date is in the past" : "到期日期已过.",
+ "Cannot set expiration date more than %s days in the future" : "无法将过期日期设置为超过 %s 天.",
+ "Could not find category \"%s\"" : "无法找到分类 \"%s\"",
+ "Sunday" : "星期日",
+ "Monday" : "星期一",
+ "Tuesday" : "星期二",
+ "Wednesday" : "星期三",
+ "Thursday" : "星期四",
+ "Friday" : "星期五",
+ "Saturday" : "星期六",
+ "Sun." : "周日",
+ "Mon." : "周一",
+ "Tue." : "周二",
+ "Wed." : "周三",
+ "Thu." : "周四",
+ "Fri." : "周五",
+ "Sat." : "周六",
+ "Su" : "日",
+ "Mo" : "一",
+ "Tu" : "二",
+ "We" : "三",
+ "Th" : "四",
+ "Fr" : "五",
+ "Sa" : "六",
+ "January" : "一月",
+ "February" : "二月",
+ "March" : "三月",
+ "April" : "四月",
+ "May" : "五月",
+ "June" : "六月",
+ "July" : "七月",
+ "August" : "八月",
+ "September" : "九月",
+ "October" : "十月",
+ "November" : "十一月",
+ "December" : "十二月",
+ "Jan." : "一月",
+ "Feb." : "二月",
+ "Mar." : "三月",
+ "Apr." : "四月",
+ "May." : "五月",
+ "Jun." : "六月",
+ "Jul." : "七月",
+ "Aug." : "八月",
+ "Sep." : "九月",
+ "Oct." : "十月",
+ "Nov." : "十一月",
+ "Dec." : "十二月",
+ "Apps" : "应用",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "在用户名中只允许使用以下字符:“a-z”,“A-Z”,“0-9”和\"_.@-'\"",
+ "A valid username must be provided" : "必须提供合法的用户名",
+ "Username contains whitespace at the beginning or at the end" : "用户名在开头或结尾处包含空格",
+ "A valid password must be provided" : "必须提供合法的密码",
+ "The username is already being used" : "用户名已被使用",
+ "Login canceled by app" : "已通过应用取消登录",
+ "User disabled" : "用户已禁用",
+ "Help" : "帮助",
+ "Personal" : "个人",
+ "Users" : "用户",
+ "Admin" : "管理",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "无法安装应用\"%s\",因为无法读取appinfo文件.",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "应用程式 \"%s\" 无法安装,因为它与这个版本的服务器不兼容.",
+ "No app name specified" : "没有指定的 App 名称",
+ "App '%s' could not be installed!" : "应用程序 '%s' 无法被安装!",
+ "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "应用程序 \"%s\" 无法被安装,因为为满足下列依赖关系: %s",
+ "a safe home for all your data" : "给您所有的数据一个安全的家",
+ "File is currently busy, please try again later" : "文件当前正忙,请稍后再试",
+ "Can't read file" : "无法读取文件",
+ "Application is not enabled" : "应用程序未启用",
+ "Authentication error" : "认证出错",
+ "Token expired. Please reload page." : "Token 过期,请刷新页面。",
+ "Unknown user" : "未知用户",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "没有安装数据库驱动 (SQLite、MySQL 或 PostgreSQL)。",
+ "Cannot write into \"config\" directory" : "无法写入“config”目录",
+ "Cannot write into \"apps\" directory" : "无法写入“apps”目录",
+ "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "您可以由 %s 设置 Web 服务器对应用目录 %s 的写权限或在配置文件中禁用应用商店可以修复这个问题.",
+ "Cannot create \"data\" directory (%s)" : "无法创建“apps”目录 (%s)",
+ "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "点击 <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">设置 Web 服务器对根目录的写入权限</a> 可修复这个问题.",
+ "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "您可以由 %s 设置 Web 服务器对根目录 %s 的写权限可以修复这个问题.",
+ "Setting locale to %s failed" : "设置语言为 %s 失败",
+ "Please install one of these locales on your system and restart your webserver." : "请在您的系统中安装下述一种语言并重启 Web 服务器.",
+ "Please ask your server administrator to install the module." : "请联系服务器管理员安装模块.",
+ "PHP module %s not installed." : "PHP %s 模块未安装.",
+ "PHP setting \"%s\" is not set to \"%s\"." : "PHP 选项 \"%s\" 未设置为 \"%s\".",
+ "Adjusting this setting in php.ini will make Nextcloud run again" : "在 php.ini 中调整该设置将导致 Nextcloud 重新运行",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload 当前设置为 \"%s\", 预期值为 \"0\"",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "请在 php.ini 中设置 <code>mbstring.func_overload</code> 为 <code>0</code> 以解决该问题",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "至少需要 libxml2 2.7.0. 当前安装 %s.",
+ "To fix this issue update your libxml2 version and restart your web server." : "升级您的 libxml2 版本然后重启 Web 服务器以解决该问题.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP 被设置为移除内联块, 这将导致多个核心应用无法访问.",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "这可能由缓存/加速器导致的, 例如 Zend OPcache 或 eAccelerator.",
+ "PHP modules have been installed, but they are still listed as missing?" : "PHP 模块已经安装, 但仍然显示未安装?",
+ "Please ask your server administrator to restart the web server." : "请联系服务器管理员重启 Web 服务器.",
+ "PostgreSQL >= 9 required" : "要求 PostgreSQL >= 9",
+ "Please upgrade your database version" : "请升级您的数据库版本",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "请更改权限为 0770 以避免其他用户查看目录.",
+ "Data directory (%s) is readable by other users" : "数据目录 (%s) 能被其他用户读取",
+ "Data directory (%s) must be an absolute path" : "数据目录 (%s) 必须为绝对路径",
+ "Check the value of \"datadirectory\" in your configuration" : "请检查配置文件中 \"datadirectory\" 的值",
+ "Data directory (%s) is invalid" : "数据目录 (%s) 无效",
+ "Please check that the data directory contains a file \".ocdata\" in its root." : "请检查根目录下 data 目录中包含名为 \".ocdata\" 的文件.",
+ "Could not obtain lock type %d on \"%s\"." : "无法在 \"%s\" 上获取锁类型 %d.",
+ "Storage unauthorized. %s" : "存储认证失败. %s",
+ "Storage incomplete configuration. %s" : "存储未完成配置. %s",
+ "Storage connection error. %s" : "存储连接错误. %s",
+ "Storage is temporarily not available" : "存储暂时不可用",
+ "Storage connection timeout. %s" : "存储连接超时. %s",
+ "4-byte characters are not supported in file names" : "文件名中不支持 4 字节字符",
+ "App directory already exists" : "应用目录已经存在",
+ "Can't create app folder. Please fix permissions. %s" : "无法创建应用文件夹. 请修改权限. %s",
+ "Archive does not contain a directory named %s" : "压缩文件中不包含目录 %s",
+ "No source specified when installing app" : "安装应用时未指定来源",
+ "No href specified when installing app from http" : "从 http 安装应用时未指定链接",
+ "No path specified when installing app from local file" : "从本地文件安装应用时未指定路径",
+ "Archives of type %s are not supported" : "不支持 %s 的压缩格式",
+ "Failed to open archive when installing app" : "安装应用时打开文件失败",
+ "App does not provide an info.xml file" : "应用未提供 info.xml 文件",
+ "App cannot be installed because appinfo file cannot be read." : "无法安装应用, 因为无法读取应用信息文件",
+ "Signature could not get checked. Please contact the app developer and check your admin screen." : "签名检查失败. 请联系应用开发者并检查您的管理界面",
+ "App can't be installed because of not allowed code in the App" : "无法安装应用, 因为应用中包含不允许的代码",
+ "App can't be installed because it is not compatible with this version of the server" : "无法安装应用, 因为应用不兼容当前服务器的版本",
+ "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "无法安装应用, 因为应用包含 <shipped>true</shipped> 标签",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "无法安装应用, 因为 info.xml 中的版本与应用市场中的版本不同",
+ "Logging" : "日志",
+ "Recommended" : "推荐",
+ "Microsoft Windows Platform is not supported" : "不支持 Microsoft Windows 平台",
+ "Running Nextcloud Server on the Microsoft Windows platform is not supported. We suggest you use a Linux server in a virtual machine if you have no option for migrating the server itself." : "不支持在 Microsoft Windows 平台运行 Nextcloud 服务器. 如果您没有迁移服务器的计划, 我们建议您在虚拟机中使用 Linux 服务器.",
+ "Storage not available" : "存储空间不可用"
+},
+"nplurals=1; plural=0;");
diff --git a/lib/l10n/zh_CN.json b/lib/l10n/zh_CN.json
new file mode 100644
index 00000000000..f5b88f87ad9
--- /dev/null
+++ b/lib/l10n/zh_CN.json
@@ -0,0 +1,231 @@
+{ "translations": {
+ "Cannot write into \"config\" directory!" : "无法写入 \"config\" 目录!",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "您可以设置 Web 服务器对 config 目录的写权限修复这个问题",
+ "See %s" : "查看 %s",
+ "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "您可以由 %s 设置 Web 服务器对 config 目录 %s 的写权限修复这个问题",
+ "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "应用 %$1s 的文件替换不正确. 请确认版本与当前服务器兼容.",
+ "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 的样例文件直接复制使用. 这可能会破坏您的安装. 在对 config.php 进行修改之前请先阅读相关文档.",
+ "%1$s and %2$s" : "%1$s 和 %2$s",
+ "%1$s, %2$s and %3$s" : "%1$s, %2$s 和 %3$s",
+ "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s 和 %4$s",
+ "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s 和 %5$s",
+ "PHP %s or higher is required." : "要求 PHP 版本 %s 或者更高。",
+ "PHP with a version lower than %s is required." : "需要版本低于 %s 的PHP.",
+ "%sbit or higher PHP required." : "需要 %s 或更高版本的 PHP",
+ "Following databases are supported: %s" : "支持以下数据库: %s",
+ "The command line tool %s could not be found" : "命令行工具 %s 未找到",
+ "The library %s is not available." : "库文件 %s 不可用",
+ "Library %s with a version higher than %s is required - available version %s." : "%s 需要 %s 或更高的版本 - 可用版本 %s.",
+ "Library %s with a version lower than %s is required - available version %s." : "%s 需要 %s 或更低的版本 - 可用版本 %s.",
+ "Following platforms are supported: %s" : "支持以下平台:%s",
+ "Server version %s or higher is required." : "需要服务器版本 %s 或更高版本。",
+ "Server version %s or lower is required." : "需要服务器版本 %s 或更低版本。",
+ "Unknown filetype" : "未知的文件类型",
+ "Invalid image" : "无效的图像",
+ "Avatar image is not square" : "头像图像不是正方形",
+ "today" : "今天",
+ "yesterday" : "昨天",
+ "_%n day ago_::_%n days ago_" : ["%n 天前"],
+ "last month" : "上月",
+ "_%n month ago_::_%n months ago_" : ["%n 月前"],
+ "last year" : "去年",
+ "_%n year ago_::_%n years ago_" : ["%n 年前"],
+ "_%n hour ago_::_%n hours ago_" : ["%n 小时前"],
+ "_%n minute ago_::_%n minutes ago_" : ["%n 分钟前"],
+ "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" : "文件名包含敏感字符",
+ "File name contains at least one invalid character" : "文件名中存在至少一个非法字符",
+ "File name is too long" : "文件名过长",
+ "Dot files are not allowed" : ".文件 不被允许",
+ "Empty filename is not allowed" : "不允许使用空名称。",
+ "APCu" : "APCu",
+ "Redis" : "Redis",
+ "Server settings" : "服务器设置",
+ "Sharing" : "分享",
+ "Encryption" : "加密",
+ "Additional settings" : "其他设置",
+ "Tips & tricks" : "小提示",
+ "%s enter the database username and name." : "%s 输入数据库用户名和名称.",
+ "%s enter the database username." : "%s 输入数据库用户名。",
+ "%s enter the database name." : "%s 输入数据库名称。",
+ "%s you may not use dots in the database name" : "%s 您不能在数据库名称中使用英文句号。",
+ "Oracle connection could not be established" : "不能建立甲骨文连接",
+ "Oracle username and/or password not valid" : "Oracle 数据库用户名和/或密码无效",
+ "DB Error: \"%s\"" : "数据库错误:\"%s\"",
+ "Offending command was: \"%s\"" : "冲突命令为:\"%s\"",
+ "You need to enter either an existing account or the administrator." : "你需要输入一个数据库中已有的账户或管理员账户。",
+ "Offending command was: \"%s\", name: %s, password: %s" : "冲突命令为:\"%s\",名称:%s,密码:%s",
+ "PostgreSQL username and/or password not valid" : "PostgreSQL 数据库用户名和/或密码无效",
+ "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X 不被支持并且 %s 在这个平台上无法正常工作。请自行承担风险!",
+ "For the best results, please consider using a GNU/Linux server instead." : "为了达到最好的效果,请考虑使用 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." : "看起来这个 %s 实例运行在32位PHP环境中并且已在php.ini中配置open_basedir。这将在文件超过4GB时出现问题,我们极力反对这样做。",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "请删除php.ini中的open_basedir设置或切换到64位PHP。",
+ "Set an admin username." : "请设置一个管理员用户名。",
+ "Set an admin password." : "请设置一个管理员密码。",
+ "Can't create or write into the data directory %s" : "无法创建或写入数据目录 %s",
+ "Invalid Federated Cloud ID" : "无效的联合云ID",
+ "%s shared »%s« with you" : "%s 向您分享了 »%s«",
+ "%s via %s" : "%s 通过 %s",
+ "Sharing %s failed, because the backend does not allow shares from type %i" : "分享 %s 失败, 因为后端不允许分享 %i 类型",
+ "Sharing %s failed, because the file does not exist" : "分享 %s 失败, 因为文件不存在.",
+ "You are not allowed to share %s" : "您无权分享 %s",
+ "Sharing %s failed, because you can not share with yourself" : "分享 %s 失败, 因为您不能分享给自己",
+ "Sharing %s failed, because the user %s does not exist" : "分享 %s 失败, 因为用户 %s 不存在",
+ "Sharing %s failed, because the user %s is not a member of any groups that %s is a member of" : "分享 %s 失败, 因为用户 %s 不是 %s 所属的任何组的用户",
+ "Sharing %s failed, because this item is already shared with %s" : "分享 %s 失败, 因为该项已经分享给用户 %s",
+ "Sharing %s failed, because this item is already shared with user %s" : "分享 %s 失败, 因为该项已经分享给用户 %s",
+ "Sharing %s failed, because the group %s does not exist" : "分享 %s 失败, 因为 %s 分组不存在",
+ "Sharing %s failed, because %s is not a member of the group %s" : "分享 %s 失败, 因为 %s 不是 %s 分组的成员",
+ "You need to provide a password to create a public link, only protected links are allowed" : "链接分享需要密码, 您需要提供一个密码以创建公开连接",
+ "Sharing %s failed, because sharing with links is not allowed" : "分享 %s 失败, 因为不允许使用链接分享",
+ "Not allowed to create a federated share with the same user" : "不能给你自己分享文件",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "分享 %s 失败, 无法找到 %s, 该服务当前无法连接.",
+ "Share type %s is not valid for %s" : "%s 不是 %s 的合法共享类型",
+ "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "设置 %s 权限失败,因为权限超出了 %s 已有权限。",
+ "Setting permissions for %s failed, because the item was not found" : "设置 %s 的权限失败,因为未找到到对应项",
+ "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "无法设置过期时间. 过期时间不能晚于其分享时间 %s",
+ "Cannot set expiration date. Expiration date is in the past" : "无法设置过期时间. 过期时间不能为过去",
+ "Cannot clear expiration date. Shares are required to have an expiration date." : "无法清除过期时间. 每个分享必须有一个过期时间",
+ "Sharing backend %s must implement the interface OCP\\Share_Backend" : "分享后端 %s 必须实现 OCP\\Share_Backend 接口",
+ "Sharing backend %s not found" : "%s 的分享后端未找到",
+ "Sharing backend for %s not found" : "%s 的分享后端未找到",
+ "Sharing failed, because the user %s is the original sharer" : "分享失败, 因为用户 %s 是原始的分享者.",
+ "Sharing %s failed, because the permissions exceed permissions granted to %s" : "分享 %s 失败, 因为权限超过了 %s 的已有权限",
+ "Sharing %s failed, because resharing is not allowed" : "分享 %s 失败, 因为不允许二次共享",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "分享 %s 失败, 因为无法找到 %s 分享后端的来源",
+ "Sharing %s failed, because the file could not be found in the file cache" : "分享 %s 失败, 因为文件缓存中找不到该文件",
+ "Cannot increase permissions of %s" : "无法提升 %s 的权限",
+ "Files can't be shared with delete permissions" : "无法分享有删除权限的文件",
+ "Files can't be shared with create permissions" : "无法分享有创建权限的文件",
+ "Expiration date is in the past" : "到期日期已过.",
+ "Cannot set expiration date more than %s days in the future" : "无法将过期日期设置为超过 %s 天.",
+ "Could not find category \"%s\"" : "无法找到分类 \"%s\"",
+ "Sunday" : "星期日",
+ "Monday" : "星期一",
+ "Tuesday" : "星期二",
+ "Wednesday" : "星期三",
+ "Thursday" : "星期四",
+ "Friday" : "星期五",
+ "Saturday" : "星期六",
+ "Sun." : "周日",
+ "Mon." : "周一",
+ "Tue." : "周二",
+ "Wed." : "周三",
+ "Thu." : "周四",
+ "Fri." : "周五",
+ "Sat." : "周六",
+ "Su" : "日",
+ "Mo" : "一",
+ "Tu" : "二",
+ "We" : "三",
+ "Th" : "四",
+ "Fr" : "五",
+ "Sa" : "六",
+ "January" : "一月",
+ "February" : "二月",
+ "March" : "三月",
+ "April" : "四月",
+ "May" : "五月",
+ "June" : "六月",
+ "July" : "七月",
+ "August" : "八月",
+ "September" : "九月",
+ "October" : "十月",
+ "November" : "十一月",
+ "December" : "十二月",
+ "Jan." : "一月",
+ "Feb." : "二月",
+ "Mar." : "三月",
+ "Apr." : "四月",
+ "May." : "五月",
+ "Jun." : "六月",
+ "Jul." : "七月",
+ "Aug." : "八月",
+ "Sep." : "九月",
+ "Oct." : "十月",
+ "Nov." : "十一月",
+ "Dec." : "十二月",
+ "Apps" : "应用",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "在用户名中只允许使用以下字符:“a-z”,“A-Z”,“0-9”和\"_.@-'\"",
+ "A valid username must be provided" : "必须提供合法的用户名",
+ "Username contains whitespace at the beginning or at the end" : "用户名在开头或结尾处包含空格",
+ "A valid password must be provided" : "必须提供合法的密码",
+ "The username is already being used" : "用户名已被使用",
+ "Login canceled by app" : "已通过应用取消登录",
+ "User disabled" : "用户已禁用",
+ "Help" : "帮助",
+ "Personal" : "个人",
+ "Users" : "用户",
+ "Admin" : "管理",
+ "App \"%s\" cannot be installed because appinfo file cannot be read." : "无法安装应用\"%s\",因为无法读取appinfo文件.",
+ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "应用程式 \"%s\" 无法安装,因为它与这个版本的服务器不兼容.",
+ "No app name specified" : "没有指定的 App 名称",
+ "App '%s' could not be installed!" : "应用程序 '%s' 无法被安装!",
+ "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "应用程序 \"%s\" 无法被安装,因为为满足下列依赖关系: %s",
+ "a safe home for all your data" : "给您所有的数据一个安全的家",
+ "File is currently busy, please try again later" : "文件当前正忙,请稍后再试",
+ "Can't read file" : "无法读取文件",
+ "Application is not enabled" : "应用程序未启用",
+ "Authentication error" : "认证出错",
+ "Token expired. Please reload page." : "Token 过期,请刷新页面。",
+ "Unknown user" : "未知用户",
+ "No database drivers (sqlite, mysql, or postgresql) installed." : "没有安装数据库驱动 (SQLite、MySQL 或 PostgreSQL)。",
+ "Cannot write into \"config\" directory" : "无法写入“config”目录",
+ "Cannot write into \"apps\" directory" : "无法写入“apps”目录",
+ "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "您可以由 %s 设置 Web 服务器对应用目录 %s 的写权限或在配置文件中禁用应用商店可以修复这个问题.",
+ "Cannot create \"data\" directory (%s)" : "无法创建“apps”目录 (%s)",
+ "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "点击 <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">设置 Web 服务器对根目录的写入权限</a> 可修复这个问题.",
+ "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "您可以由 %s 设置 Web 服务器对根目录 %s 的写权限可以修复这个问题.",
+ "Setting locale to %s failed" : "设置语言为 %s 失败",
+ "Please install one of these locales on your system and restart your webserver." : "请在您的系统中安装下述一种语言并重启 Web 服务器.",
+ "Please ask your server administrator to install the module." : "请联系服务器管理员安装模块.",
+ "PHP module %s not installed." : "PHP %s 模块未安装.",
+ "PHP setting \"%s\" is not set to \"%s\"." : "PHP 选项 \"%s\" 未设置为 \"%s\".",
+ "Adjusting this setting in php.ini will make Nextcloud run again" : "在 php.ini 中调整该设置将导致 Nextcloud 重新运行",
+ "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload 当前设置为 \"%s\", 预期值为 \"0\"",
+ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "请在 php.ini 中设置 <code>mbstring.func_overload</code> 为 <code>0</code> 以解决该问题",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "至少需要 libxml2 2.7.0. 当前安装 %s.",
+ "To fix this issue update your libxml2 version and restart your web server." : "升级您的 libxml2 版本然后重启 Web 服务器以解决该问题.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP 被设置为移除内联块, 这将导致多个核心应用无法访问.",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "这可能由缓存/加速器导致的, 例如 Zend OPcache 或 eAccelerator.",
+ "PHP modules have been installed, but they are still listed as missing?" : "PHP 模块已经安装, 但仍然显示未安装?",
+ "Please ask your server administrator to restart the web server." : "请联系服务器管理员重启 Web 服务器.",
+ "PostgreSQL >= 9 required" : "要求 PostgreSQL >= 9",
+ "Please upgrade your database version" : "请升级您的数据库版本",
+ "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "请更改权限为 0770 以避免其他用户查看目录.",
+ "Data directory (%s) is readable by other users" : "数据目录 (%s) 能被其他用户读取",
+ "Data directory (%s) must be an absolute path" : "数据目录 (%s) 必须为绝对路径",
+ "Check the value of \"datadirectory\" in your configuration" : "请检查配置文件中 \"datadirectory\" 的值",
+ "Data directory (%s) is invalid" : "数据目录 (%s) 无效",
+ "Please check that the data directory contains a file \".ocdata\" in its root." : "请检查根目录下 data 目录中包含名为 \".ocdata\" 的文件.",
+ "Could not obtain lock type %d on \"%s\"." : "无法在 \"%s\" 上获取锁类型 %d.",
+ "Storage unauthorized. %s" : "存储认证失败. %s",
+ "Storage incomplete configuration. %s" : "存储未完成配置. %s",
+ "Storage connection error. %s" : "存储连接错误. %s",
+ "Storage is temporarily not available" : "存储暂时不可用",
+ "Storage connection timeout. %s" : "存储连接超时. %s",
+ "4-byte characters are not supported in file names" : "文件名中不支持 4 字节字符",
+ "App directory already exists" : "应用目录已经存在",
+ "Can't create app folder. Please fix permissions. %s" : "无法创建应用文件夹. 请修改权限. %s",
+ "Archive does not contain a directory named %s" : "压缩文件中不包含目录 %s",
+ "No source specified when installing app" : "安装应用时未指定来源",
+ "No href specified when installing app from http" : "从 http 安装应用时未指定链接",
+ "No path specified when installing app from local file" : "从本地文件安装应用时未指定路径",
+ "Archives of type %s are not supported" : "不支持 %s 的压缩格式",
+ "Failed to open archive when installing app" : "安装应用时打开文件失败",
+ "App does not provide an info.xml file" : "应用未提供 info.xml 文件",
+ "App cannot be installed because appinfo file cannot be read." : "无法安装应用, 因为无法读取应用信息文件",
+ "Signature could not get checked. Please contact the app developer and check your admin screen." : "签名检查失败. 请联系应用开发者并检查您的管理界面",
+ "App can't be installed because of not allowed code in the App" : "无法安装应用, 因为应用中包含不允许的代码",
+ "App can't be installed because it is not compatible with this version of the server" : "无法安装应用, 因为应用不兼容当前服务器的版本",
+ "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "无法安装应用, 因为应用包含 <shipped>true</shipped> 标签",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "无法安装应用, 因为 info.xml 中的版本与应用市场中的版本不同",
+ "Logging" : "日志",
+ "Recommended" : "推荐",
+ "Microsoft Windows Platform is not supported" : "不支持 Microsoft Windows 平台",
+ "Running Nextcloud Server on the Microsoft Windows platform is not supported. We suggest you use a Linux server in a virtual machine if you have no option for migrating the server itself." : "不支持在 Microsoft Windows 平台运行 Nextcloud 服务器. 如果您没有迁移服务器的计划, 我们建议您在虚拟机中使用 Linux 服务器.",
+ "Storage not available" : "存储空间不可用"
+},"pluralForm" :"nplurals=1; plural=0;"
+} \ No newline at end of file
diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php
index 57499f3ffe8..ec36aab75d9 100644
--- a/lib/private/AppFramework/DependencyInjection/DIContainer.php
+++ b/lib/private/AppFramework/DependencyInjection/DIContainer.php
@@ -49,6 +49,7 @@ use OC\RichObjectStrings\Validator;
use OC\Security\Bruteforce\Throttler;
use OCP\AppFramework\IApi;
use OCP\AppFramework\IAppContainer;
+use OCP\Federation\ICloudIdManager;
use OCP\Files\IAppData;
use OCP\Files\Mount\IMountManager;
use OCP\RichObjectStrings\IValidator;
@@ -93,6 +94,10 @@ class DIContainer extends SimpleContainer implements IAppContainer {
return new Output($this->getServer()->getWebRoot());
});
+ $this->registerService(\OCP\Authentication\LoginCredentials\IStore::class, function() {
+ return $this->getServer()->query(\OCP\Authentication\LoginCredentials\IStore::class);
+ });
+
$this->registerService('OCP\\IAvatarManager', function($c) {
return $this->getServer()->getAvatarManager();
});
@@ -148,6 +153,10 @@ class DIContainer extends SimpleContainer implements IAppContainer {
return $this->getServer()->getQueryLogger();
});
+ $this->registerService(ICloudIdManager::class, function($c) {
+ return $this->getServer()->getCloudIdManager();
+ });
+
$this->registerService('OCP\\Files\\IMimeTypeDetector', function($c) {
return $this->getServer()->getMimeTypeDetector();
});
@@ -338,6 +347,13 @@ class DIContainer extends SimpleContainer implements IAppContainer {
return $c->query(Validator::class);
});
+ $this->registerService(\OC\Security\IdentityProof\Manager::class, function ($c) {
+ return new \OC\Security\IdentityProof\Manager(
+ $this->getServer()->getAppDataDir('identityproof'),
+ $this->getServer()->getCrypto()
+ );
+ });
+
/**
* App Framework APIs
diff --git a/lib/private/AppFramework/Http/Request.php b/lib/private/AppFramework/Http/Request.php
index 62d7fc7ed30..be35f4d172f 100644
--- a/lib/private/AppFramework/Http/Request.php
+++ b/lib/private/AppFramework/Http/Request.php
@@ -72,7 +72,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
/**
* @deprecated use \OCP\IRequest::USER_AGENT_CLIENT_IOS instead
*/
- const USER_AGENT_OWNCLOUD_IOS = '/^Mozilla\/5\.0 \(iOS\) ownCloud\-iOS.*$/';
+ const USER_AGENT_OWNCLOUD_IOS = '/^Mozilla\/5\.0 \(iOS\) (ownCloud|Nextcloud)\-iOS.*$/';
/**
* @deprecated use \OCP\IRequest::USER_AGENT_CLIENT_ANDROID instead
*/
@@ -490,7 +490,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
* @return bool
*/
private function cookieCheckRequired() {
- if($this->getCookie(session_name()) === null && $this->getCookie('oc_token') === null) {
+ if($this->getCookie(session_name()) === null && $this->getCookie('nc_token') === null) {
return false;
}
diff --git a/lib/private/Authentication/LoginCredentials/Credentials.php b/lib/private/Authentication/LoginCredentials/Credentials.php
new file mode 100644
index 00000000000..9314b7489db
--- /dev/null
+++ b/lib/private/Authentication/LoginCredentials/Credentials.php
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @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\Authentication\LoginCredentials;
+
+use OCP\Authentication\LoginCredentials\ICredentials;
+
+class Credentials implements ICredentials {
+
+ /** @var string */
+ private $uid;
+
+ /** @var string */
+ private $loginName;
+
+ /** @var string */
+ private $password;
+
+ /**
+ * @param string $uid
+ * @param string $loginName
+ * @param string $password
+ */
+ public function __construct($uid, $loginName, $password) {
+ $this->uid = $uid;
+ $this->loginName = $loginName;
+ $this->password = $password;
+ }
+
+ /**
+ * @return string
+ */
+ public function getUID() {
+ return $this->uid;
+ }
+
+ /**
+ * @return string
+ */
+ public function getLoginName() {
+ return $this->loginName;
+ }
+
+ /**
+ * @return string
+ */
+ public function getPassword() {
+ return $this->password;
+ }
+
+}
diff --git a/lib/private/Authentication/LoginCredentials/Store.php b/lib/private/Authentication/LoginCredentials/Store.php
new file mode 100644
index 00000000000..e44c88c7aea
--- /dev/null
+++ b/lib/private/Authentication/LoginCredentials/Store.php
@@ -0,0 +1,120 @@
+<?php
+
+/**
+ * @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @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\Authentication\LoginCredentials;
+
+use OC\Authentication\Exceptions\InvalidTokenException;
+use OC\Authentication\Exceptions\PasswordlessTokenException;
+use OC\Authentication\Token\IProvider;
+use OCP\Authentication\Exceptions\CredentialsUnavailableException;
+use OCP\Authentication\LoginCredentials\ICredentials;
+use OCP\Authentication\LoginCredentials\IStore;
+use OCP\ILogger;
+use OCP\ISession;
+use OCP\Session\Exceptions\SessionNotAvailableException;
+use OCP\Util;
+
+class Store implements IStore {
+
+ /** @var ISession */
+ private $session;
+
+ /** @var ILogger */
+ private $logger;
+
+ /** @var IProvider|null */
+ private $tokenProvider;
+
+ /**
+ * @param ISession $session
+ * @param ILogger $logger
+ * @param IProvider $tokenProvider
+ */
+ public function __construct(ISession $session, ILogger $logger, IProvider $tokenProvider = null) {
+ $this->session = $session;
+ $this->logger = $logger;
+ $this->tokenProvider = $tokenProvider;
+
+ Util::connectHook('OC_User', 'post_login', $this, 'authenticate');
+ }
+
+ /**
+ * Hook listener on post login
+ *
+ * @param array $params
+ */
+ public function authenticate(array $params) {
+ $this->session->set('login_credentials', json_encode($params));
+ }
+
+ /**
+ * Replace the session implementation
+ *
+ * @param ISession $session
+ */
+ public function setSession(ISession $session) {
+ $this->session = $session;
+ }
+
+ /**
+ * @since 12
+ *
+ * @return ICredentials the login credentials of the current user
+ * @throws CredentialsUnavailableException
+ */
+ public function getLoginCredentials() {
+ if (is_null($this->tokenProvider)) {
+ throw new CredentialsUnavailableException();
+ }
+
+ $trySession = false;
+ try {
+ $sessionId = $this->session->getId();
+ $token = $this->tokenProvider->getToken($sessionId);
+
+ $uid = $token->getUID();
+ $user = $token->getLoginName();
+ $password = $this->tokenProvider->getPassword($token, $sessionId);
+
+ return new Credentials($uid, $user, $password);
+ } catch (SessionNotAvailableException $ex) {
+ $this->logger->debug('could not get login credentials because session is unavailable', ['app' => 'core']);
+ } catch (InvalidTokenException $ex) {
+ $this->logger->debug('could not get login credentials because the token is invalid', ['app' => 'core']);
+ $trySession = true;
+ } catch (PasswordlessTokenException $ex) {
+ $this->logger->debug('could not get login credentials because the token has no password', ['app' => 'core']);
+ $trySession = true;
+ }
+
+ if ($trySession && $this->session->exists('login_credentials')) {
+ $creds = json_decode($this->session->get('login_credentials'));
+ return new Credentials($creds->uid, $creds->uid, $creds->password);
+ }
+
+ // If we reach this line, an exception was thrown.
+ throw new CredentialsUnavailableException();
+ }
+
+}
diff --git a/lib/private/Console/TimestampFormatter.php b/lib/private/Console/TimestampFormatter.php
index 5b292439a4c..66dd38e6ac3 100644
--- a/lib/private/Console/TimestampFormatter.php
+++ b/lib/private/Console/TimestampFormatter.php
@@ -97,11 +97,11 @@ class TimestampFormatter implements OutputFormatterInterface {
*/
public function format($message) {
- $timeZone = $this->config->getSystemValue('logtimezone', null);
+ $timeZone = $this->config->getSystemValue('logtimezone', 'UTC');
$timeZone = $timeZone !== null ? new \DateTimeZone($timeZone) : null;
$time = new \DateTime('now', $timeZone);
- $timestampInfo = $time->format($this->config->getSystemValue('logdateformat', 'c'));
+ $timestampInfo = $time->format($this->config->getSystemValue('logdateformat', \DateTime::ATOM));
return $timestampInfo . ' ' . $this->formatter->format($message);
}
diff --git a/lib/private/Federation/CloudId.php b/lib/private/Federation/CloudId.php
new file mode 100644
index 00000000000..6ba4ff9166b
--- /dev/null
+++ b/lib/private/Federation/CloudId.php
@@ -0,0 +1,76 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017, Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * 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\Federation;
+
+use OCP\Federation\ICloudId;
+
+class CloudId implements ICloudId {
+ /** @var string */
+ private $id;
+ /** @var string */
+ private $user;
+ /** @var string */
+ private $remote;
+
+ /**
+ * CloudId constructor.
+ *
+ * @param string $id
+ * @param string $user
+ * @param string $remote
+ */
+ public function __construct($id, $user, $remote) {
+ $this->id = $id;
+ $this->user = $user;
+ $this->remote = $remote;
+ }
+
+ /**
+ * The full remote cloud id
+ *
+ * @return string
+ */
+ public function getId() {
+ return $this->id;
+ }
+
+ public function getDisplayId() {
+ return str_replace('https://', '', str_replace('http://', '', $this->getId()));
+ }
+
+ /**
+ * The username on the remote server
+ *
+ * @return string
+ */
+ public function getUser() {
+ return $this->user;
+ }
+
+ /**
+ * The base address of the remote server
+ *
+ * @return string
+ */
+ public function getRemote() {
+ return $this->remote;
+ }
+}
diff --git a/lib/private/Federation/CloudIdManager.php b/lib/private/Federation/CloudIdManager.php
new file mode 100644
index 00000000000..46d90f7ab92
--- /dev/null
+++ b/lib/private/Federation/CloudIdManager.php
@@ -0,0 +1,110 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017, Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * 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\Federation;
+
+use OCP\Federation\ICloudId;
+use OCP\Federation\ICloudIdManager;
+
+class CloudIdManager implements ICloudIdManager {
+ /**
+ * @param string $cloudId
+ * @return ICloudId
+ * @throws \InvalidArgumentException
+ */
+ public function resolveCloudId($cloudId) {
+ // TODO magic here to get the url and user instead of just splitting on @
+
+ if (!$this->isValidCloudId($cloudId)) {
+ throw new \InvalidArgumentException('Invalid cloud id');
+ }
+
+ // Find the first character that is not allowed in user names
+ $id = $this->fixRemoteURL($cloudId);
+ $posSlash = strpos($id, '/');
+ $posColon = strpos($id, ':');
+
+ if ($posSlash === false && $posColon === false) {
+ $invalidPos = strlen($id);
+ } else if ($posSlash === false) {
+ $invalidPos = $posColon;
+ } else if ($posColon === false) {
+ $invalidPos = $posSlash;
+ } else {
+ $invalidPos = min($posSlash, $posColon);
+ }
+
+ // Find the last @ before $invalidPos
+ $pos = $lastAtPos = 0;
+ while ($lastAtPos !== false && $lastAtPos <= $invalidPos) {
+ $pos = $lastAtPos;
+ $lastAtPos = strpos($id, '@', $pos + 1);
+ }
+
+ if ($pos !== false) {
+ $user = substr($id, 0, $pos);
+ $remote = substr($id, $pos + 1);
+ if (!empty($user) && !empty($remote)) {
+ return new CloudId($id, $user, $remote);
+ }
+ }
+ throw new \InvalidArgumentException('Invalid cloud id');
+ }
+
+ /**
+ * @param string $user
+ * @param string $remote
+ * @return CloudId
+ */
+ public function getCloudId($user, $remote) {
+ // TODO check what the correct url is for remote (asking the remote)
+ return new CloudId($user. '@' . $remote, $user, $remote);
+ }
+
+ /**
+ * Strips away a potential file names and trailing slashes:
+ * - http://localhost
+ * - http://localhost/
+ * - http://localhost/index.php
+ * - http://localhost/index.php/s/{shareToken}
+ *
+ * all return: http://localhost
+ *
+ * @param string $remote
+ * @return string
+ */
+ protected function fixRemoteURL($remote) {
+ $remote = str_replace('\\', '/', $remote);
+ if ($fileNamePosition = strpos($remote, '/index.php')) {
+ $remote = substr($remote, 0, $fileNamePosition);
+ }
+ $remote = rtrim($remote, '/');
+
+ return $remote;
+ }
+
+ /**
+ * @param string $cloudId
+ * @return bool
+ */
+ public function isValidCloudId($cloudId) {
+ return strpos($cloudId, '@') !== false;
+ }
+}
diff --git a/lib/private/Files/Notify/Change.php b/lib/private/Files/Notify/Change.php
new file mode 100644
index 00000000000..78cc007b27d
--- /dev/null
+++ b/lib/private/Files/Notify/Change.php
@@ -0,0 +1,65 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
+ *
+ * @author Robin Appelman <robin@icewind.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\Files\Notify;
+
+use OCP\Files\Notify\IChange;
+
+class Change implements IChange {
+ /** @var int */
+ private $type;
+
+ /** @var string */
+ private $path;
+
+ /**
+ * Change constructor.
+ *
+ * @param int $type
+ * @param string $path
+ */
+ public function __construct($type, $path) {
+ $this->type = $type;
+ $this->path = $path;
+ }
+
+ /**
+ * Get the type of the change
+ *
+ * @return int IChange::ADDED, IChange::REMOVED, IChange::MODIFIED or IChange::RENAMED
+ */
+ public function getType() {
+ return $this->type;
+ }
+
+ /**
+ * Get the path of the file that was changed relative to the root of the storage
+ *
+ * Note, for rename changes this path is the old path for the file
+ *
+ * @return mixed
+ */
+ public function getPath() {
+ return $this->path;
+ }
+}
diff --git a/lib/private/Files/Notify/RenameChange.php b/lib/private/Files/Notify/RenameChange.php
new file mode 100644
index 00000000000..b83dffa0cb2
--- /dev/null
+++ b/lib/private/Files/Notify/RenameChange.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
+ *
+ * @author Robin Appelman <robin@icewind.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\Files\Notify;
+
+use OCP\Files\Notify\IRenameChange;
+
+class RenameChange extends Change implements IRenameChange {
+ /** @var string */
+ private $targetPath;
+
+ /**
+ * Change constructor.
+ *
+ * @param int $type
+ * @param string $path
+ * @param string $targetPath
+ */
+ public function __construct($type, $path, $targetPath) {
+ parent::__construct($type, $path);
+ $this->targetPath = $targetPath;
+ }
+
+ /**
+ * Get the new path of the renamed file relative to the storage root
+ *
+ * @return string
+ */
+ public function getTargetPath() {
+ return $this->targetPath;
+ }
+}
diff --git a/lib/private/Files/Storage/Common.php b/lib/private/Files/Storage/Common.php
index 5561f6a889b..6e5799be34c 100644
--- a/lib/private/Files/Storage/Common.php
+++ b/lib/private/Files/Storage/Common.php
@@ -53,6 +53,7 @@ use OCP\Files\InvalidPathException;
use OCP\Files\ReservedWordException;
use OCP\Files\Storage\ILockingStorage;
use OCP\Lock\ILockingProvider;
+use OCP\Lock\LockedException;
/**
* Storage backend class for providing common filesystem operation methods
@@ -79,6 +80,9 @@ abstract class Common implements Storage, ILockingStorage {
protected $mountOptions = [];
protected $owner = null;
+ private $shouldLogLocks = null;
+ private $logger;
+
public function __construct($parameters) {
}
@@ -436,10 +440,14 @@ abstract class Common implements Storage, ILockingStorage {
* @return bool
*/
public function test() {
- if ($this->stat('')) {
- return true;
+ try {
+ if ($this->stat('')) {
+ return true;
+ }
+ return false;
+ } catch (\Exception $e) {
+ return false;
}
- return false;
}
/**
@@ -677,25 +685,101 @@ abstract class Common implements Storage, ILockingStorage {
* @throws \OCP\Lock\LockedException
*/
public function acquireLock($path, $type, ILockingProvider $provider) {
- $provider->acquireLock('files/' . md5($this->getId() . '::' . trim($path, '/')), $type);
+ $logger = $this->getLockLogger();
+ if ($logger) {
+ $typeString = ($type === ILockingProvider::LOCK_SHARED) ? 'shared' : 'exclusive';
+ $logger->info(
+ sprintf(
+ 'acquire %s lock on "%s" on storage "%s"',
+ $typeString,
+ $path,
+ $this->getId()
+ ),
+ [
+ 'app' => 'locking',
+ ]
+ );
+ }
+ try {
+ $provider->acquireLock('files/' . md5($this->getId() . '::' . trim($path, '/')), $type);
+ } catch (LockedException $e) {
+ if ($logger) {
+ $logger->logException($e);
+ }
+ throw $e;
+ }
}
/**
* @param string $path
* @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
* @param \OCP\Lock\ILockingProvider $provider
+ * @throws \OCP\Lock\LockedException
*/
public function releaseLock($path, $type, ILockingProvider $provider) {
- $provider->releaseLock('files/' . md5($this->getId() . '::' . trim($path, '/')), $type);
+ $logger = $this->getLockLogger();
+ if ($logger) {
+ $typeString = ($type === ILockingProvider::LOCK_SHARED) ? 'shared' : 'exclusive';
+ $logger->info(
+ sprintf(
+ 'release %s lock on "%s" on storage "%s"',
+ $typeString,
+ $path,
+ $this->getId()
+ ),
+ [
+ 'app' => 'locking',
+ ]
+ );
+ }
+ try {
+ $provider->releaseLock('files/' . md5($this->getId() . '::' . trim($path, '/')), $type);
+ } catch (LockedException $e) {
+ if ($logger) {
+ $logger->logException($e);
+ }
+ throw $e;
+ }
}
/**
* @param string $path
* @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
* @param \OCP\Lock\ILockingProvider $provider
+ * @throws \OCP\Lock\LockedException
*/
public function changeLock($path, $type, ILockingProvider $provider) {
- $provider->changeLock('files/' . md5($this->getId() . '::' . trim($path, '/')), $type);
+ $logger = $this->getLockLogger();
+ if ($logger) {
+ $typeString = ($type === ILockingProvider::LOCK_SHARED) ? 'shared' : 'exclusive';
+ $logger->info(
+ sprintf(
+ 'change lock on "%s" to %s on storage "%s"',
+ $path,
+ $typeString,
+ $this->getId()
+ ),
+ [
+ 'app' => 'locking',
+ ]
+ );
+ }
+ try {
+ $provider->changeLock('files/' . md5($this->getId() . '::' . trim($path, '/')), $type);
+ } catch (LockedException $e) {
+ if ($logger) {
+ $logger->logException($e);
+ }
+ throw $e;
+ }
+ }
+
+ private function getLockLogger() {
+ if (is_null($this->shouldLogLocks)) {
+ $this->shouldLogLocks = \OC::$server->getConfig()->getSystemValue('filelocking.debug', false);
+ $this->logger = $this->shouldLogLocks ? \OC::$server->getLogger() : null;
+ }
+ return $this->logger;
}
/**
diff --git a/lib/private/Files/Storage/DAV.php b/lib/private/Files/Storage/DAV.php
index abe219f99f2..31f87d16b04 100644
--- a/lib/private/Files/Storage/DAV.php
+++ b/lib/private/Files/Storage/DAV.php
@@ -203,7 +203,7 @@ class DAV extends Common {
try {
$response = $this->client->propFind(
$this->encodePath($path),
- [],
+ ['{DAV:}href'],
1
);
if ($response === false) {
@@ -569,8 +569,8 @@ class DAV extends Common {
public function stat($path) {
try {
$response = $this->propfind($path);
- if ($response === false) {
- return [];
+ if (!$response) {
+ return false;
}
return [
'mtime' => strtotime($response['{DAV:}getlastmodified']),
diff --git a/lib/private/Files/Storage/Local.php b/lib/private/Files/Storage/Local.php
index 4fe7dcafbbf..80d48680be1 100644
--- a/lib/private/Files/Storage/Local.php
+++ b/lib/private/Files/Storage/Local.php
@@ -205,18 +205,7 @@ class Local extends \OC\Files\Storage\Common {
}
public function file_get_contents($path) {
- // file_get_contents() has a memory leak: https://bugs.php.net/bug.php?id=61961
- $fileName = $this->getSourcePath($path);
-
- $fileSize = filesize($fileName);
- if ($fileSize === 0) {
- return '';
- }
-
- $handle = fopen($fileName, 'rb');
- $content = fread($handle, $fileSize);
- fclose($handle);
- return $content;
+ return file_get_contents($this->getSourcePath($path));
}
public function file_put_contents($path, $data) {
diff --git a/lib/private/Files/Storage/Storage.php b/lib/private/Files/Storage/Storage.php
index 49a714587a7..281a8284107 100644
--- a/lib/private/Files/Storage/Storage.php
+++ b/lib/private/Files/Storage/Storage.php
@@ -107,6 +107,7 @@ interface Storage extends \OCP\Files\Storage {
* @param string $path The path of the file to release the lock for
* @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
* @param \OCP\Lock\ILockingProvider $provider
+ * @throws \OCP\Lock\LockedException
*/
public function releaseLock($path, $type, ILockingProvider $provider);
diff --git a/lib/private/Lockdown/Filesystem/NullStorage.php b/lib/private/Lockdown/Filesystem/NullStorage.php
index 967b6d2c6e7..ea911b90064 100644
--- a/lib/private/Lockdown/Filesystem/NullStorage.php
+++ b/lib/private/Lockdown/Filesystem/NullStorage.php
@@ -20,6 +20,7 @@
namespace OC\Lockdown\Filesystem;
use Icewind\Streams\IteratorDirectory;
+use OC\Files\FileInfo;
use OC\Files\Storage\Common;
class NullStorage extends Common {
@@ -128,7 +129,7 @@ class NullStorage extends Common {
}
public function free_space($path) {
- return 0;
+ return FileInfo::SPACE_UNKNOWN;
}
public function touch($path, $mtime = null) {
diff --git a/lib/private/Log.php b/lib/private/Log.php
index fddd3593127..bcaa788603a 100644
--- a/lib/private/Log.php
+++ b/lib/private/Log.php
@@ -88,7 +88,8 @@ class Log implements ILogger {
'decrypt',
//LoginController
- 'tryLogin'
+ 'tryLogin',
+ 'confirmPassword',
];
/**
diff --git a/lib/private/Log/File.php b/lib/private/Log/File.php
index 904aa1d93f1..be8b72b3a3f 100644
--- a/lib/private/Log/File.php
+++ b/lib/private/Log/File.php
@@ -75,8 +75,8 @@ class File {
$config = \OC::$server->getSystemConfig();
// default to ISO8601
- $format = $config->getValue('logdateformat', 'c');
- $logTimeZone = $config->getValue( "logtimezone", 'UTC' );
+ $format = $config->getValue('logdateformat', \DateTime::ATOM);
+ $logTimeZone = $config->getValue('logtimezone', 'UTC');
try {
$timezone = new \DateTimeZone($logTimeZone);
} catch (\Exception $e) {
diff --git a/lib/private/NavigationManager.php b/lib/private/NavigationManager.php
index 3e9ddfc6466..f7bc02943a3 100644
--- a/lib/private/NavigationManager.php
+++ b/lib/private/NavigationManager.php
@@ -1,6 +1,6 @@
<?php
/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @copyright Copyright (c) 2016, ownCloud GmbH
*
* @author Bart Visscher <bartv@thisnet.nl>
* @author Joas Schilling <coding@schilljs.com>
@@ -26,13 +26,46 @@
namespace OC;
+use OC\App\AppManager;
+use OCP\App\IAppManager;
+use OCP\IGroupManager;
+use OCP\INavigationManager;
+use OCP\IURLGenerator;
+use OCP\IUserSession;
+use OCP\L10N\IFactory;
+
/**
* Manages the ownCloud navigation
*/
-class NavigationManager implements \OCP\INavigationManager {
- protected $entries = array();
- protected $closureEntries = array();
+
+class NavigationManager implements INavigationManager {
+ protected $entries = [];
+ protected $closureEntries = [];
protected $activeEntry;
+ /** @var bool */
+ protected $init = false;
+ /** @var IAppManager|AppManager */
+ protected $appManager;
+ /** @var IURLGenerator */
+ private $urlGenerator;
+ /** @var IFactory */
+ private $l10nFac;
+ /** @var IUserSession */
+ private $userSession;
+ /** @var IGroupManager */
+ private $groupManager;
+
+ public function __construct(IAppManager $appManager = null,
+ IURLGenerator $urlGenerator = null,
+ IFactory $l10nFac = null,
+ IUserSession $userSession = null,
+ IGroupManager$groupManager = null) {
+ $this->appManager = $appManager;
+ $this->urlGenerator = $urlGenerator;
+ $this->l10nFac = $l10nFac;
+ $this->userSession = $userSession;
+ $this->groupManager = $groupManager;
+ }
/**
* Creates a new navigation entry
@@ -60,6 +93,7 @@ class NavigationManager implements \OCP\INavigationManager {
* @return array an array of the added entries
*/
public function getAll() {
+ $this->init();
foreach ($this->closureEntries as $c) {
$this->add($c());
}
@@ -71,8 +105,9 @@ class NavigationManager implements \OCP\INavigationManager {
* removes all the entries
*/
public function clear() {
- $this->entries = array();
- $this->closureEntries = array();
+ $this->entries = [];
+ $this->closureEntries = [];
+ $this->init = false;
}
/**
@@ -93,4 +128,64 @@ class NavigationManager implements \OCP\INavigationManager {
public function getActiveEntry() {
return $this->activeEntry;
}
+
+ private function init() {
+ if ($this->init) {
+ return;
+ }
+ $this->init = true;
+ if (is_null($this->appManager)) {
+ return;
+ }
+ foreach ($this->appManager->getInstalledApps() as $app) {
+ // load plugins and collections from info.xml
+ $info = $this->appManager->getAppInfo($app);
+ if (!isset($info['navigation'])) {
+ continue;
+ }
+ $nav = $info['navigation'];
+ if (!isset($nav['name'])) {
+ continue;
+ }
+ if (!isset($nav['route'])) {
+ continue;
+ }
+ $role = isset($nav['@attributes']['role']) ? $nav['@attributes']['role'] : 'all';
+ if ($role === 'admin' && !$this->isAdmin()) {
+ continue;
+ }
+ $l = $this->l10nFac->get($app);
+ $order = isset($nav['order']) ? $nav['order'] : 100;
+ $route = $this->urlGenerator->linkToRoute($nav['route']);
+ $icon = isset($nav['icon']) ? $nav['icon'] : 'app.svg';
+ foreach ([$icon, "$app.svg"] as $i) {
+ try {
+ $icon = $this->urlGenerator->imagePath($app, $i);
+ break;
+ } catch (\RuntimeException $ex) {
+ // no icon? - ignore it then
+ }
+ }
+ if (is_null($icon)) {
+ $icon = $this->urlGenerator->imagePath('core', 'default-app-icon');
+ }
+
+ $this->add([
+ 'id' => $app,
+ 'order' => $order,
+ 'href' => $route,
+ 'icon' => $icon,
+ 'name' => $l->t($nav['name']),
+ ]);
+ }
+ }
+
+ private function isAdmin() {
+ $user = $this->userSession->getUser();
+ if ($user !== null) {
+ return $this->groupManager->isAdmin($user->getUID());
+ }
+ return false;
+ }
+
}
diff --git a/lib/private/Repair.php b/lib/private/Repair.php
index f1bf586b49d..e8d466cd844 100644
--- a/lib/private/Repair.php
+++ b/lib/private/Repair.php
@@ -31,7 +31,6 @@
namespace OC;
use OC\Repair\AssetCache;
-use OC\Repair\AvatarPermissions;
use OC\Repair\CleanTags;
use OC\Repair\Collation;
use OC\Repair\DropOldJobs;
@@ -142,7 +141,6 @@ class Repair implements IOutput{
new RepairInvalidShares(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()),
new SharePropagation(\OC::$server->getConfig()),
new RemoveOldShares(\OC::$server->getDatabaseConnection()),
- new AvatarPermissions(\OC::$server->getDatabaseConnection()),
new RemoveRootShares(\OC::$server->getDatabaseConnection(), \OC::$server->getUserManager(), \OC::$server->getLazyRootFolder()),
new RepairUnmergedShares(
\OC::$server->getConfig(),
diff --git a/lib/private/Repair/AvatarPermissions.php b/lib/private/Repair/AvatarPermissions.php
deleted file mode 100644
index 9d75062358c..00000000000
--- a/lib/private/Repair/AvatarPermissions.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Roeland Jago Douma <roeland@famdouma.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\Repair;
-
-use Doctrine\DBAL\Platforms\OraclePlatform;
-use OCP\IDBConnection;
-use OCP\Migration\IOutput;
-use OCP\Migration\IRepairStep;
-
-/**
- * Class AvatarPermissions
- *
- * @package OC\Repair
- */
-class AvatarPermissions implements IRepairStep {
- /** @var IDBConnection */
- private $connection;
-
- /**
- * AvatarPermissions constructor.
- *
- * @param IDBConnection $connection
- */
- public function __construct(IDBConnection $connection) {
- $this->connection = $connection;
- }
-
- /**
- * @return string
- */
- public function getName() {
- return 'Fix permissions so avatars can be stored again';
- }
-
- /**
- * @param IOutput $output
- */
- public function run(IOutput $output) {
- $output->startProgress(2);
- $this->fixUserRootPermissions();
- $output->advance();
- $this->fixAvatarPermissions();
- $output->finishProgress();
- }
-
- /**
- * Make sure all user roots have permissions 23 (all but share)
- */
- protected function fixUserRootPermissions() {
- $qb = $this->connection->getQueryBuilder();
- $qb2 = $this->connection->getQueryBuilder();
-
- $qb->select('numeric_id')
- ->from('storages')
- ->where($qb->expr()->like('id', $qb2->createParameter('like')));
-
- if ($this->connection->getDatabasePlatform() instanceof OraclePlatform) {
- // '' is null on oracle
- $path = $qb2->expr()->isNull('path');
- } else {
- $path = $qb2->expr()->eq('path', $qb2->createNamedParameter(''));
- }
-
- $qb2->update('filecache')
- ->set('permissions', $qb2->createNamedParameter(23))
- ->where($path)
- ->andWhere($qb2->expr()->in('storage', $qb2->createFunction($qb->getSQL())))
- ->andWhere($qb2->expr()->neq('permissions', $qb2->createNamedParameter(23)))
- ->setParameter('like', 'home::%');
-
-
- $qb2->execute();
- }
-
- /**
- * Make sure all avatar files in the user roots have permission 27
- */
- protected function fixAvatarPermissions() {
- $qb = $this->connection->getQueryBuilder();
- $qb2 = $this->connection->getQueryBuilder();
-
- $qb->select('numeric_id')
- ->from('storages')
- ->where($qb->expr()->like('id', $qb2->createParameter('like')));
-
- $qb2->update('filecache')
- ->set('permissions', $qb2->createNamedParameter(27))
- ->where($qb2->expr()->like('path', $qb2->createNamedParameter('avatar.%')))
- ->andWhere($qb2->expr()->in('storage', $qb2->createFunction($qb->getSQL())))
- ->andWhere($qb2->expr()->neq('permissions', $qb2->createNamedParameter(27)))
- ->setParameter('like', 'home::%');
-
- $qb2->execute();
- }
-
-}
-
diff --git a/lib/private/Repair/MoveUpdaterStepFile.php b/lib/private/Repair/MoveUpdaterStepFile.php
index fabaff40d24..feb8a291282 100644
--- a/lib/private/Repair/MoveUpdaterStepFile.php
+++ b/lib/private/Repair/MoveUpdaterStepFile.php
@@ -44,7 +44,7 @@ class MoveUpdaterStepFile implements IRepairStep {
public function run(IOutput $output) {
- $dataDir = $this->config->getSystemValue('datadirectory', \OC::$SERVERROOT);
+ $dataDir = $this->config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data');
$instanceId = $this->config->getSystemValue('instanceid', null);
if(!is_string($instanceId) || empty($instanceId)) {
diff --git a/lib/private/Repair/RepairMimeTypes.php b/lib/private/Repair/RepairMimeTypes.php
index 86427af4c47..fbf446a681c 100644
--- a/lib/private/Repair/RepairMimeTypes.php
+++ b/lib/private/Repair/RepairMimeTypes.php
@@ -308,6 +308,16 @@ class RepairMimeTypes implements IRepairStep {
self::updateMimetypes($updatedMimetypes);
}
+ private function introduceWindowsProgramTypes() {
+ $updatedMimetypes = array(
+ 'htaccess' => 'text/plain',
+ 'bat' => 'application/x-msdos-program',
+ 'cmd' => 'application/cmd',
+ );
+
+ $this->updateMimetypes($updatedMimetypes);
+ }
+
/**
* Fix mime types
*/
@@ -377,5 +387,9 @@ class RepairMimeTypes implements IRepairStep {
$out->info('Fixed richdocuments additional office mime types');
}
}
+
+ if (version_compare($ocVersionFromBeforeUpdate, '12.0.0.13', '<') && $this->introduceWindowsProgramTypes()) {
+ $out->info('Fixed windows program mime types');
+ }
}
}
diff --git a/lib/private/Server.php b/lib/private/Server.php
index 8528d5e7b32..bcbe23b0181 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -46,11 +46,13 @@ use OC\App\AppStore\Fetcher\AppFetcher;
use OC\App\AppStore\Fetcher\CategoryFetcher;
use OC\AppFramework\Http\Request;
use OC\AppFramework\Utility\TimeFactory;
+use OC\Authentication\LoginCredentials\Store;
use OC\Command\AsyncBus;
use OC\Diagnostics\EventLogger;
use OC\Diagnostics\NullEventLogger;
use OC\Diagnostics\NullQueryLogger;
use OC\Diagnostics\QueryLogger;
+use OC\Federation\CloudIdManager;
use OC\Files\Config\UserMountCache;
use OC\Files\Config\UserMountCacheListener;
use OC\Files\Mount\CacheMountProvider;
@@ -89,6 +91,8 @@ use OC\Security\TrustedDomainHelper;
use OC\Session\CryptoWrapper;
use OC\Tagging\TagMapper;
use OCA\Theming\ThemingDefaults;
+use OCP\Federation\ICloudIdManager;
+use OCP\Authentication\LoginCredentials\IStore;
use OCP\IL10N;
use OCP\IServerContainer;
use OCP\RichObjectStrings\IValidator;
@@ -246,6 +250,17 @@ class Server extends ServerContainer implements IServerContainer {
});
return $groupManager;
});
+ $this->registerService(Store::class, function(Server $c) {
+ $session = $c->getSession();
+ if (\OC::$server->getSystemConfig()->getValue('installed', false)) {
+ $tokenProvider = $c->query('OC\Authentication\Token\IProvider');
+ } else {
+ $tokenProvider = null;
+ }
+ $logger = $c->getLogger();
+ return new Store($session, $logger, $tokenProvider);
+ });
+ $this->registerAlias(IStore::class, Store::class);
$this->registerService('OC\Authentication\Token\DefaultTokenMapper', function (Server $c) {
$dbConnection = $c->getDatabaseConnection();
return new Authentication\Token\DefaultTokenMapper($dbConnection);
@@ -316,8 +331,12 @@ class Server extends ServerContainer implements IServerContainer {
return new \OC\Authentication\TwoFactorAuth\Manager($c->getAppManager(), $c->getSession(), $c->getConfig(), $c->getActivityManager(), $c->getLogger());
});
- $this->registerService('NavigationManager', function ($c) {
- return new \OC\NavigationManager();
+ $this->registerService('NavigationManager', function (Server $c) {
+ return new \OC\NavigationManager($c->getAppManager(),
+ $c->getURLGenerator(),
+ $c->getL10NFactory(),
+ $c->getUserSession(),
+ $c->getGroupManager());
});
$this->registerService('AllConfig', function (Server $c) {
return new \OC\AllConfig(
@@ -377,7 +396,7 @@ class Server extends ServerContainer implements IServerContainer {
$version = implode(',', $v);
$instanceId = \OC_Util::getInstanceId();
$path = \OC::$SERVERROOT;
- $prefix = md5($instanceId . '-' . $version . '-' . $path);
+ $prefix = md5($instanceId . '-' . $version . '-' . $path . '-' . \OC::$WEBROOT);
return new \OC\Memcache\Factory($prefix, $c->getLogger(),
$config->getSystemValue('memcache.local', null),
$config->getSystemValue('memcache.distributed', null),
@@ -808,6 +827,10 @@ class Server extends ServerContainer implements IServerContainer {
return new LockdownManager();
});
+ $this->registerService(ICloudIdManager::class, function (Server $c) {
+ return new CloudIdManager();
+ });
+
/* To trick DI since we don't extend the DIContainer here */
$this->registerService(CleanPreviewsBackgroundJob::class, function (Server $c) {
return new CleanPreviewsBackgroundJob(
@@ -996,7 +1019,8 @@ class Server extends ServerContainer implements IServerContainer {
*/
public function setSession(\OCP\ISession $session) {
$this->query(SessionStorage::class)->setSession($session);
- return $this->query('UserSession')->setSession($session);
+ $this->query('UserSession')->setSession($session);
+ $this->query(Store::class)->setSession($session);
}
/**
@@ -1552,4 +1576,11 @@ class Server extends ServerContainer implements IServerContainer {
public function getLockdownManager() {
return $this->query('LockdownManager');
}
+
+ /**
+ * @return \OCP\Federation\ICloudIdManager
+ */
+ public function getCloudIdManager() {
+ return $this->query(ICloudIdManager::class);
+ }
}
diff --git a/lib/private/Setup.php b/lib/private/Setup.php
index 81a5343fe21..321e8ea4c66 100644
--- a/lib/private/Setup.php
+++ b/lib/private/Setup.php
@@ -125,8 +125,8 @@ class Setup {
public function getSupportedDatabases($allowAllDatabases = false) {
$availableDatabases = array(
'sqlite' => array(
- 'type' => 'class',
- 'call' => 'SQLite3',
+ 'type' => 'pdo',
+ 'call' => 'sqlite',
'name' => 'SQLite'
),
'mysql' => array(
@@ -163,9 +163,7 @@ class Setup {
$type = $availableDatabases[$database]['type'];
$call = $availableDatabases[$database]['call'];
- if($type === 'class') {
- $working = $this->class_exists($call);
- } elseif ($type === 'function') {
+ if ($type === 'function') {
$working = $this->is_callable($call);
} elseif($type === 'pdo') {
$working = in_array($call, $this->getAvailableDbDriversForPdo(), TRUE);
@@ -359,6 +357,7 @@ class Setup {
$config = \OC::$server->getConfig();
$config->setAppValue('core', 'installedat', microtime(true));
$config->setAppValue('core', 'lastupdatedat', microtime(true));
+ $config->setAppValue('core', 'vendor', $this->getVendor());
$group =\OC::$server->getGroupManager()->createGroup('admin');
$group->addUser($user);
@@ -499,4 +498,18 @@ class Setup {
file_put_contents($baseDir . '/.htaccess', $content);
file_put_contents($baseDir . '/index.html', '');
}
+
+ /**
+ * Return vendor from which this version was published
+ *
+ * @return string Get the vendor
+ *
+ * Copy of \OC\Updater::getVendor()
+ */
+ private function getVendor() {
+ // this should really be a JSON file
+ require \OC::$SERVERROOT . '/version.php';
+ /** @var string $vendor */
+ return (string) $vendor;
+ }
}
diff --git a/lib/private/Setup/Sqlite.php b/lib/private/Setup/Sqlite.php
index 63b970be42e..4d860103b60 100644
--- a/lib/private/Setup/Sqlite.php
+++ b/lib/private/Setup/Sqlite.php
@@ -33,7 +33,7 @@ class Sqlite extends AbstractDatabase {
}
public function setupDatabase($username) {
- $datadir = \OC::$server->getSystemConfig()->getValue('datadirectory');
+ $datadir = \OC::$server->getSystemConfig()->getValue('datadirectory', \OC::$SERVERROOT . '/data');
//delete the old sqlite database first, might cause infinte loops otherwise
if(file_exists("$datadir/owncloud.db")) {
diff --git a/lib/private/Share/Helper.php b/lib/private/Share/Helper.php
index 20aaa793728..a1a56077d40 100644
--- a/lib/private/Share/Helper.php
+++ b/lib/private/Share/Helper.php
@@ -249,46 +249,14 @@ class Helper extends \OC\Share\Constants {
* @throws HintException
*/
public static function splitUserRemote($id) {
- if (strpos($id, '@') === false) {
+ try {
+ $cloudId = \OC::$server->getCloudIdManager()->resolveCloudId($id);
+ return [$cloudId->getUser(), $cloudId->getRemote()];
+ } catch (\InvalidArgumentException $e) {
$l = \OC::$server->getL10N('core');
$hint = $l->t('Invalid Federated Cloud ID');
- throw new HintException('Invalid Federated Cloud ID', $hint);
+ throw new HintException('Invalid Federated Cloud ID', $hint, 0, $e);
}
-
- // Find the first character that is not allowed in user names
- $id = str_replace('\\', '/', $id);
- $posSlash = strpos($id, '/');
- $posColon = strpos($id, ':');
-
- if ($posSlash === false && $posColon === false) {
- $invalidPos = strlen($id);
- } else if ($posSlash === false) {
- $invalidPos = $posColon;
- } else if ($posColon === false) {
- $invalidPos = $posSlash;
- } else {
- $invalidPos = min($posSlash, $posColon);
- }
-
- // Find the last @ before $invalidPos
- $pos = $lastAtPos = 0;
- while ($lastAtPos !== false && $lastAtPos <= $invalidPos) {
- $pos = $lastAtPos;
- $lastAtPos = strpos($id, '@', $pos + 1);
- }
-
- if ($pos !== false) {
- $user = substr($id, 0, $pos);
- $remote = substr($id, $pos + 1);
- $remote = self::fixRemoteURL($remote);
- if (!empty($user) && !empty($remote)) {
- return array($user, $remote);
- }
- }
-
- $l = \OC::$server->getL10N('core');
- $hint = $l->t('Invalid Federated Cloud ID');
- throw new HintException('Invalid Fededrated Cloud ID', $hint);
}
/**
diff --git a/lib/private/Share20/ProviderFactory.php b/lib/private/Share20/ProviderFactory.php
index 3f277a852b3..87d9d221810 100644
--- a/lib/private/Share20/ProviderFactory.php
+++ b/lib/private/Share20/ProviderFactory.php
@@ -96,7 +96,8 @@ class ProviderFactory implements IProviderFactory {
$l = $this->serverContainer->getL10N('federatedfilessharing');
$addressHandler = new AddressHandler(
$this->serverContainer->getURLGenerator(),
- $l
+ $l,
+ $this->serverContainer->getCloudIdManager()
);
$discoveryManager = new DiscoveryManager(
$this->serverContainer->getMemCacheFactory(),
@@ -121,7 +122,8 @@ class ProviderFactory implements IProviderFactory {
$this->serverContainer->getLogger(),
$this->serverContainer->getLazyRootFolder(),
$this->serverContainer->getConfig(),
- $this->serverContainer->getUserManager()
+ $this->serverContainer->getUserManager(),
+ $this->serverContainer->getCloudIdManager()
);
}
diff --git a/lib/private/Template/CSSResourceLocator.php b/lib/private/Template/CSSResourceLocator.php
index 6af4e319e36..3a474a1ecfd 100644
--- a/lib/private/Template/CSSResourceLocator.php
+++ b/lib/private/Template/CSSResourceLocator.php
@@ -49,20 +49,22 @@ class CSSResourceLocator extends ResourceLocator {
* @param string $style
*/
public function doFind($style) {
+ $app = substr($style, 0, strpos($style, '/'));
if (strpos($style, '3rdparty') === 0
&& $this->appendIfExist($this->thirdpartyroot, $style.'.css')
- || $this->cacheAndAppendScssIfExist($this->serverroot, $style.'.scss')
+ || $this->cacheAndAppendScssIfExist($this->serverroot, $style.'.scss', $app)
|| $this->cacheAndAppendScssIfExist($this->serverroot, 'core/'.$style.'.scss')
|| $this->appendIfExist($this->serverroot, $style.'.css')
|| $this->appendIfExist($this->serverroot, 'core/'.$style.'.css')
) {
return;
}
- $app = substr($style, 0, strpos($style, '/'));
$style = substr($style, strpos($style, '/')+1);
$app_path = \OC_App::getAppPath($app);
$app_url = \OC_App::getAppWebPath($app);
- $this->append($app_path, $style.'.css', $app_url);
+ if(!$this->cacheAndAppendScssIfExist($app_path, $style.'.scss', $app)) {
+ $this->append($app_path, $style.'.css', $app_url);
+ }
}
/**
@@ -80,21 +82,20 @@ class CSSResourceLocator extends ResourceLocator {
*
* @param string $root path to check
* @param string $file the filename
- * @param string|null $webRoot base for path, default map $root to $webRoot
* @return bool True if the resource was found and cached, false otherwise
*/
- protected function cacheAndAppendScssIfExist($root, $file, $webRoot = null) {
+ protected function cacheAndAppendScssIfExist($root, $file, $app = 'core') {
if (is_file($root.'/'.$file)) {
if($this->scssCacher !== null) {
- if($this->scssCacher->process($root, $file)) {
- $this->append($root, $this->scssCacher->getCachedSCSS('core', $file), $webRoot, false);
+ if($this->scssCacher->process($root, $file, $app)) {
+ $this->append($root, $this->scssCacher->getCachedSCSS($app, $file), false);
return true;
} else {
- $this->logger->error('Failed to compile and/or save '.$root.'/'.$file, ['app' => 'core']);
+ $this->logger->warning('Failed to compile and/or save '.$root.'/'.$file, ['app' => 'core']);
return false;
}
} else {
- $this->logger->error('Scss is disabled for '.$root.'/'.$file.', ignoring', ['app' => 'core']);
+ $this->logger->debug('Scss is disabled for '.$root.'/'.$file.', ignoring', ['app' => 'core']);
return true;
}
}
diff --git a/lib/private/Template/JSConfigHelper.php b/lib/private/Template/JSConfigHelper.php
index f17c6a16194..1c241989fd2 100644
--- a/lib/private/Template/JSConfigHelper.php
+++ b/lib/private/Template/JSConfigHelper.php
@@ -204,7 +204,7 @@ class JSConfigHelper {
'session_keepalive' => $this->config->getSystemValue('session_keepalive', true),
'version' => implode('.', \OCP\Util::getVersion()),
'versionstring' => \OC_Util::getVersionString(),
- 'enable_avatars' => $this->config->getSystemValue('enable_avatars', true) === true,
+ 'enable_avatars' => true, // here for legacy reasons - to not crash existing code that relies on this value
'lost_password_link'=> $this->config->getSystemValue('lost_password_link', null),
'modRewriteWorking' => (\OC::$server->getConfig()->getSystemValue('htaccess.IgnoreFrontController', false) === true || getenv('front_controller_active') === 'true'),
]),
diff --git a/lib/private/Template/ResourceLocator.php b/lib/private/Template/ResourceLocator.php
index 420317d27ac..e22ebdcab7d 100755
--- a/lib/private/Template/ResourceLocator.php
+++ b/lib/private/Template/ResourceLocator.php
@@ -75,7 +75,7 @@ abstract class ResourceLocator {
$this->doFind($resource);
} catch (ResourceNotFoundException $e) {
$resourceApp = substr($resource, 0, strpos($resource, '/'));
- $this->logger->error('Could not find resource file "' . $e->getResourcePath() . '"', ['app' => $resourceApp]);
+ $this->logger->debug('Could not find resource file "' . $e->getResourcePath() . '"', ['app' => $resourceApp]);
}
}
if (!empty($this->theme)) {
@@ -84,7 +84,7 @@ abstract class ResourceLocator {
$this->doFindTheme($resource);
} catch (ResourceNotFoundException $e) {
$resourceApp = substr($resource, 0, strpos($resource, '/'));
- $this->logger->error('Could not find resource file "' . $e->getResourcePath() . '"', ['app' => $resourceApp]);
+ $this->logger->debug('Could not find resource file "' . $e->getResourcePath() . '"', ['app' => $resourceApp]);
}
}
}
diff --git a/lib/private/Template/SCSSCacher.php b/lib/private/Template/SCSSCacher.php
index 0c1711b9fb7..d6f5a2c6fd3 100644
--- a/lib/private/Template/SCSSCacher.php
+++ b/lib/private/Template/SCSSCacher.php
@@ -63,9 +63,10 @@ class SCSSCacher {
* Process the caching process if needed
* @param string $root Root path to the nextcloud installation
* @param string $file
+ * @param string $app The app name
* @return boolean
*/
- public function process($root, $file) {
+ public function process($root, $file, $app) {
$path = explode('/', $root . '/' . $file);
$fileNameSCSS = array_pop($path);
@@ -78,10 +79,10 @@ class SCSSCacher {
$webDir = implode('/', $webDir);
try {
- $folder = $this->appData->getFolder('core');
+ $folder = $this->appData->getFolder($app);
} catch(NotFoundException $e) {
// creating css appdata folder
- $folder = $this->appData->newFolder('core');
+ $folder = $this->appData->newFolder($app);
}
if($this->isCached($fileNameCSS, $fileNameSCSS, $folder, $path)) {
diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php
index 7ded109f76b..f1621363237 100644
--- a/lib/private/TemplateLayout.php
+++ b/lib/private/TemplateLayout.php
@@ -100,7 +100,6 @@ class TemplateLayout extends \OC_Template {
$this->assign('user_displayname', $userDisplayName);
$this->assign('user_uid', \OC_User::getUser());
$this->assign('appsmanagement_active', $appsMgmtActive);
- $this->assign('enableAvatars', $this->config->getSystemValue('enable_avatars', true) === true);
if (\OC_User::getUser() === false) {
$this->assign('userAvatarSet', false);
@@ -164,11 +163,15 @@ class TemplateLayout extends \OC_Template {
// Do not load scss for update, errors, installation or login page
if(\OC::$server->getSystemConfig()->getValue('installed', false)
&& !\OCP\Util::needUpgrade()
- && strpos(\OC::$server->getRequest()->getRequestUri(), \OC::$server->getURLGenerator()->linkToRoute('core.login.tryLogin')) !== 0) {
+ && !preg_match('/^\/login/', \OC::$server->getRequest()->getPathInfo())) {
$cssFiles = self::findStylesheetFiles(\OC_Util::$styles);
} else {
+ // If we ignore the scss compiler,
+ // we need to load the guest css fallback
+ \OC_Util::addStyle('guest');
$cssFiles = self::findStylesheetFiles(\OC_Util::$styles, false);
}
+
$this->assign('cssfiles', array());
$this->assign('printcssfiles', []);
$this->assign('versionHash', self::$versionHash);
diff --git a/lib/private/Updater.php b/lib/private/Updater.php
index a66d49941cd..30a9a80cef4 100644
--- a/lib/private/Updater.php
+++ b/lib/private/Updater.php
@@ -157,13 +157,13 @@ class Updater extends BasicEmitter {
/**
* Return version from which this version is allowed to upgrade from
*
- * @return string allowed previous version
+ * @return array allowed previous versions per vendor
*/
- private function getAllowedPreviousVersion() {
+ private function getAllowedPreviousVersions() {
// this should really be a JSON file
require \OC::$SERVERROOT . '/version.php';
/** @var array $OC_VersionCanBeUpgradedFrom */
- return implode('.', $OC_VersionCanBeUpgradedFrom);
+ return $OC_VersionCanBeUpgradedFrom;
}
/**
@@ -182,26 +182,22 @@ class Updater extends BasicEmitter {
* Whether an upgrade to a specified version is possible
* @param string $oldVersion
* @param string $newVersion
- * @param string $allowedPreviousVersion
+ * @param array $allowedPreviousVersions
* @return bool
*/
- public function isUpgradePossible($oldVersion, $newVersion, $allowedPreviousVersion) {
- $allowedUpgrade = (version_compare($allowedPreviousVersion, $oldVersion, '<=')
- && (version_compare($oldVersion, $newVersion, '<=') || $this->config->getSystemValue('debug', false)));
-
- if ($allowedUpgrade) {
- return $allowedUpgrade;
+ public function isUpgradePossible($oldVersion, $newVersion, array $allowedPreviousVersions) {
+ $version = explode('.', $oldVersion);
+ $majorMinor = $version[0] . '.' . $version[1];
+
+ $currentVendor = $this->config->getAppValue('core', 'vendor', '');
+ if ($currentVendor === 'nextcloud') {
+ return isset($allowedPreviousVersions[$currentVendor][$majorMinor])
+ && (version_compare($oldVersion, $newVersion, '<=') ||
+ $this->config->getSystemValue('debug', false));
}
- // Upgrade not allowed, someone switching vendor?
- if ($this->getVendor() !== $this->config->getAppValue('core', 'vendor', '')) {
- $oldVersion = explode('.', $oldVersion);
- $newVersion = explode('.', $newVersion);
-
- return $oldVersion[0] === $newVersion[0] && $oldVersion[1] === $newVersion[1];
- }
-
- return false;
+ // Check if the instance can be migrated
+ return isset($allowedPreviousVersions[$currentVendor][$majorMinor]);
}
/**
@@ -215,8 +211,8 @@ class Updater extends BasicEmitter {
*/
private function doUpgrade($currentVersion, $installedVersion) {
// Stop update if the update is over several major versions
- $allowedPreviousVersion = $this->getAllowedPreviousVersion();
- if (!self::isUpgradePossible($installedVersion, $currentVersion, $allowedPreviousVersion)) {
+ $allowedPreviousVersions = $this->getAllowedPreviousVersions();
+ if (!$this->isUpgradePossible($installedVersion, $currentVersion, $allowedPreviousVersions)) {
throw new \Exception('Updates between multiple major versions and downgrades are unsupported.');
}
diff --git a/lib/private/User/Session.php b/lib/private/User/Session.php
index 9cc42e671a8..705ca95210a 100644
--- a/lib/private/User/Session.php
+++ b/lib/private/User/Session.php
@@ -284,6 +284,19 @@ class Session implements IUserSession, Emitter {
}
/**
+ * set the token id
+ *
+ * @param int|null $token that was used to log in
+ */
+ protected function setToken($token) {
+ if ($token === null) {
+ $this->session->remove('token-id');
+ } else {
+ $this->session->set('token-id', $token);
+ }
+ }
+
+ /**
* try to log in with the provided credentials
*
* @param string $uid
@@ -473,6 +486,7 @@ class Session implements IUserSession, Emitter {
if ($user->isEnabled()) {
$this->setUser($user);
$this->setLoginName($uid);
+ $this->setToken(null);
$firstTimeLogin = $user->updateLastLoginTimestamp();
$this->manager->emit('\OC\User', 'postLogin', [$user, $password]);
if ($this->isLoggedIn()) {
@@ -495,7 +509,7 @@ class Session implements IUserSession, Emitter {
*
* @param string $token
* @return boolean
- * @throws LoginException if an app canceld the login process or the user is not enabled
+ * @throws LoginException if an app canceled the login process or the user is not enabled
*/
private function loginWithToken($token) {
try {
@@ -530,6 +544,7 @@ class Session implements IUserSession, Emitter {
//login
$this->setUser($user);
$this->setLoginName($dbToken->getLoginName());
+ $this->setToken($dbToken->getId());
\OC::$server->getLockdownManager()->setToken($dbToken);
$this->manager->emit('\OC\User', 'postLogin', array($user, $password));
@@ -740,10 +755,12 @@ class Session implements IUserSession, Emitter {
}
$this->setMagicInCookie($user->getUID(), $newToken);
+ $token = $this->tokenProvider->getToken($sessionId);
//login
$this->setUser($user);
- $this->setLoginName($this->tokenProvider->getToken($sessionId)->getLoginName());
+ $this->setLoginName($token->getLoginName());
+ $this->setToken($token->getId());
$user->updateLastLoginTimestamp();
$this->manager->emit('\OC\User', 'postRememberedLogin', [$user]);
return true;
@@ -773,6 +790,7 @@ class Session implements IUserSession, Emitter {
}
$this->setUser(null);
$this->setLoginName(null);
+ $this->setToken(null);
$this->unsetMagicInCookie();
$this->session->clear();
}
diff --git a/lib/private/User/User.php b/lib/private/User/User.php
index 4b37efe0705..961f70f8a8e 100644
--- a/lib/private/User/User.php
+++ b/lib/private/User/User.php
@@ -267,7 +267,7 @@ class User implements IUser {
if ($this->backend->implementsActions(Backend::GET_HOME) and $home = $this->backend->getHome($this->uid)) {
$this->home = $home;
} elseif ($this->config) {
- $this->home = $this->config->getSystemValue('datadirectory') . '/' . $this->uid;
+ $this->home = $this->config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . '/' . $this->uid;
} else {
$this->home = \OC::$SERVERROOT . '/data/' . $this->uid;
}
@@ -411,7 +411,8 @@ class User implements IUser {
public function getCloudId() {
$uid = $this->getUID();
$server = $this->urlGenerator->getAbsoluteURL('/');
- return $uid . '@' . rtrim( $this->removeProtocolFromUrl($server), '/');
+ $server = rtrim( $this->removeProtocolFromUrl($server), '/');
+ return \OC::$server->getCloudIdManager()->getCloudId($uid, $server)->getId();
}
/**
diff --git a/lib/private/legacy/template.php b/lib/private/legacy/template.php
index a07bf214f34..09e3d130f49 100644
--- a/lib/private/legacy/template.php
+++ b/lib/private/legacy/template.php
@@ -121,10 +121,8 @@ class OC_Template extends \OC\Template\Base {
OC_Util::addStyle("styles",null,true);
// avatars
- if (\OC::$server->getSystemConfig()->getValue('enable_avatars', true) === true) {
- \OC_Util::addScript('jquery.avatar', null, true);
- \OC_Util::addScript('placeholder', null, true);
- }
+ \OC_Util::addScript('jquery.avatar', null, true);
+ \OC_Util::addScript('placeholder', null, true);
OC_Util::addVendorScript('select2/select2');
OC_Util::addVendorStyle('select2/select2', null, true);
diff --git a/lib/private/legacy/util.php b/lib/private/legacy/util.php
index d97ba37c4c0..5ef1130d361 100644
--- a/lib/private/legacy/util.php
+++ b/lib/private/legacy/util.php
@@ -1002,27 +1002,6 @@ class OC_Util {
}
/**
- * Check if it is allowed to remember login.
- *
- * @note Every app can set 'rememberlogin' to 'false' to disable the remember login feature
- *
- * @return bool
- */
- public static function rememberLoginAllowed() {
-
- $apps = OC_App::getEnabledApps();
-
- foreach ($apps as $app) {
- $appInfo = OC_App::getAppInfo($app);
- if (isset($appInfo['rememberlogin']) && $appInfo['rememberlogin'] === 'false') {
- return false;
- }
-
- }
- return true;
- }
-
- /**
* Check if the user is a subadmin, redirects to home if not
*
* @return null|boolean $groups where the current user is subadmin
diff --git a/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php b/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php
new file mode 100644
index 00000000000..9f9e38103f7
--- /dev/null
+++ b/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php
@@ -0,0 +1,34 @@
+<?php
+
+/**
+ * @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @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\Authentication\Exceptions;
+
+use Exception;
+
+/**
+ * @since 12
+ */
+class CredentialsUnavailableException extends Exception {
+
+}
diff --git a/lib/public/Authentication/LoginCredentials/ICredentials.php b/lib/public/Authentication/LoginCredentials/ICredentials.php
new file mode 100644
index 00000000000..c5ef9574398
--- /dev/null
+++ b/lib/public/Authentication/LoginCredentials/ICredentials.php
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @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\Authentication\LoginCredentials;
+
+/**
+ * @since 12
+ */
+interface ICredentials {
+
+ /**
+ * Get the user UID
+ *
+ * @since 12
+ *
+ * @return string
+ */
+ public function getUID();
+
+ /**
+ * Get the login name the users used to login
+ *
+ * @since 12
+ *
+ * @return string
+ */
+ public function getLoginName();
+
+ /**
+ * Get the password
+ *
+ * @since 12
+ *
+ * @return string
+ */
+ public function getPassword();
+}
diff --git a/lib/public/Authentication/LoginCredentials/IStore.php b/lib/public/Authentication/LoginCredentials/IStore.php
new file mode 100644
index 00000000000..4787b16d982
--- /dev/null
+++ b/lib/public/Authentication/LoginCredentials/IStore.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @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\Authentication\LoginCredentials;
+
+use OCP\Authentication\Exceptions\CredentialsUnavailableException;
+
+/**
+ * @since 12
+ */
+interface IStore {
+
+ /**
+ * Get login credentials of the currently logged in user
+ *
+ * @since 12
+ *
+ * @throws CredentialsUnavailableException
+ * @return ICredentials the login credentials of the current user
+ */
+ public function getLoginCredentials();
+
+}
diff --git a/lib/public/Federation/ICloudId.php b/lib/public/Federation/ICloudId.php
new file mode 100644
index 00000000000..f9c84a2fd07
--- /dev/null
+++ b/lib/public/Federation/ICloudId.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017, Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * 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 OCP\Federation;
+
+/**
+ * Parsed federated cloud id
+ *
+ * @since 12.0.0
+ */
+interface ICloudId {
+ /**
+ * The remote cloud id
+ *
+ * @return string
+ * @since 12.0.0
+ */
+ public function getId();
+
+ /**
+ * Get a clean representation of the cloud id for display
+ *
+ * @return string
+ * @since 12.0.0
+ */
+ public function getDisplayId();
+
+ /**
+ * The username on the remote server
+ *
+ * @return string
+ * @since 12.0.0
+ */
+ public function getUser();
+
+ /**
+ * The base address of the remote server
+ *
+ * @return string
+ * @since 12.0.0
+ */
+ public function getRemote();
+}
diff --git a/lib/public/Federation/ICloudIdManager.php b/lib/public/Federation/ICloudIdManager.php
new file mode 100644
index 00000000000..7be8f08c6b7
--- /dev/null
+++ b/lib/public/Federation/ICloudIdManager.php
@@ -0,0 +1,57 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017, Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * 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 OCP\Federation;
+
+/**
+ * Interface for resolving federated cloud ids
+ *
+ * @since 12.0.0
+ */
+interface ICloudIdManager {
+ /**
+ * @param string $cloudId
+ * @return ICloudId
+ *
+ * @since 12.0.0
+ */
+ public function resolveCloudId($cloudId);
+
+ /**
+ * Get the cloud id for a remote user
+ *
+ * @param string $user
+ * @param string $remote
+ * @return ICloudId
+ *
+ * @since 12.0.0
+ */
+ public function getCloudId($user, $remote);
+
+ /**
+ * Check if the input is a correctly formatted cloud id
+ *
+ * @param string $cloudId
+ * @return bool
+ *
+ * @since 12.0.0
+ */
+ public function isValidCloudId($cloudId);
+}
diff --git a/lib/public/Files/Notify/IChange.php b/lib/public/Files/Notify/IChange.php
new file mode 100644
index 00000000000..1e6aaa8abe0
--- /dev/null
+++ b/lib/public/Files/Notify/IChange.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
+ *
+ * @author Robin Appelman <robin@icewind.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 OCP\Files\Notify;
+
+/**
+ * Represents a detected change in the storage
+ *
+ * @since 12.0.0
+ */
+interface IChange {
+ const ADDED = 1;
+ const REMOVED = 2;
+ const MODIFIED = 3;
+ const RENAMED = 4;
+
+ /**
+ * Get the type of the change
+ *
+ * @return int IChange::ADDED, IChange::REMOVED, IChange::MODIFIED or IChange::RENAMED
+ *
+ * @since 12.0.0
+ */
+ public function getType();
+
+ /**
+ * Get the path of the file that was changed relative to the root of the storage
+ *
+ * Note, for rename changes this path is the old path for the file
+ *
+ * @return mixed
+ *
+ * @since 12.0.0
+ */
+ public function getPath();
+}
diff --git a/lib/public/Files/Notify/INotifyHandler.php b/lib/public/Files/Notify/INotifyHandler.php
new file mode 100644
index 00000000000..7e0e6a610d8
--- /dev/null
+++ b/lib/public/Files/Notify/INotifyHandler.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
+ *
+ * @author Robin Appelman <robin@icewind.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 OCP\Files\Notify;
+
+/**
+ * Provides access to detected changes in the storage by either actively listening
+ * or getting the list of changes that happened in the background
+ *
+ * @since 12.0.0
+ */
+interface INotifyHandler {
+ /**
+ * Start listening for update notifications
+ *
+ * The provided callback will be called for every incoming notification with the following parameters
+ * - IChange|IRenameChange $change
+ *
+ * Note that this call is blocking and will not exit on it's own, to stop listening for notifications return `false` from the callback
+ *
+ * @param callable $callback
+ *
+ * @since 12.0.0
+ */
+ public function listen(callable $callback);
+
+ /**
+ * Get all changes detected since the start of the notify process or the last call to getChanges
+ *
+ * @return IChange[]
+ *
+ * @since 12.0.0
+ */
+ public function getChanges();
+
+ /**
+ * Stop listening for changes
+ *
+ * Note that any pending changes will be discarded
+ *
+ * @since 12.0.0
+ */
+ public function stop();
+}
diff --git a/lib/public/Files/Notify/IRenameChange.php b/lib/public/Files/Notify/IRenameChange.php
new file mode 100644
index 00000000000..c95499a7e74
--- /dev/null
+++ b/lib/public/Files/Notify/IRenameChange.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl>
+ *
+ * @author Robin Appelman <robin@icewind.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 OCP\Files\Notify;
+
+/**
+ * Represents a detected rename change
+ *
+ * @since 12.0.0
+ */
+interface IRenameChange extends IChange {
+ /**
+ * Get the new path of the renamed file relative to the storage root
+ *
+ * @return string
+ *
+ * @since 12.0.0
+ */
+ public function getTargetPath();
+}
diff --git a/lib/public/Files/Storage.php b/lib/public/Files/Storage.php
index cf67879908c..1532c84b621 100644
--- a/lib/public/Files/Storage.php
+++ b/lib/public/Files/Storage.php
@@ -425,6 +425,7 @@ interface Storage extends IStorage {
* @param string $path The path of the file to acquire the lock for
* @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
* @param \OCP\Lock\ILockingProvider $provider
+ * @throws \OCP\Lock\LockedException
* @since 8.1.0
*/
public function releaseLock($path, $type, ILockingProvider $provider);
diff --git a/lib/public/Files/Storage/ILockingStorage.php b/lib/public/Files/Storage/ILockingStorage.php
index 635c607537f..ac61e9a062e 100644
--- a/lib/public/Files/Storage/ILockingStorage.php
+++ b/lib/public/Files/Storage/ILockingStorage.php
@@ -46,6 +46,7 @@ interface ILockingStorage {
* @param string $path The path of the file to acquire the lock for
* @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
* @param \OCP\Lock\ILockingProvider $provider
+ * @throws \OCP\Lock\LockedException
* @since 9.0.0
*/
public function releaseLock($path, $type, ILockingProvider $provider);
diff --git a/lib/public/Files/Storage/INotifyStorage.php b/lib/public/Files/Storage/INotifyStorage.php
index e99124abdfd..c6fdd44724f 100644
--- a/lib/public/Files/Storage/INotifyStorage.php
+++ b/lib/public/Files/Storage/INotifyStorage.php
@@ -23,6 +23,8 @@
namespace OCP\Files\Storage;
+use OCP\Files\Notify\INotifyHandler;
+
/**
* Storage backend that support active notifications
*
@@ -48,6 +50,17 @@ interface INotifyStorage {
* @param callable $callback
*
* @since 9.1.0
+ * @deprecated 12.0.0 use INotifyStorage::notify()->listen() instead
*/
public function listen($path, callable $callback);
+
+ /**
+ * Start the notification handler for this storage
+ *
+ * @param $path
+ * @return INotifyHandler
+ *
+ * @since 12.0.0
+ */
+ public function notify($path);
}
diff --git a/lib/public/IRequest.php b/lib/public/IRequest.php
index b36a934b0c2..98d8f5bb83a 100644
--- a/lib/public/IRequest.php
+++ b/lib/public/IRequest.php
@@ -76,7 +76,7 @@ interface IRequest {
/**
* @since 9.1.0
*/
- const USER_AGENT_CLIENT_IOS = '/^Mozilla\/5\.0 \(iOS\) ownCloud\-iOS.*$/';
+ const USER_AGENT_CLIENT_IOS = '/^Mozilla\/5\.0 \(iOS\) (ownCloud|Nextcloud)\-iOS.*$/';
/**
* @param string $name
diff --git a/lib/public/IServerContainer.php b/lib/public/IServerContainer.php
index 87628be01f7..02a092ea660 100644
--- a/lib/public/IServerContainer.php
+++ b/lib/public/IServerContainer.php
@@ -525,4 +525,10 @@ interface IServerContainer {
* @since 8.0.0
*/
public function getDateTimeFormatter();
+
+ /**
+ * @return \OCP\Federation\ICloudIdManager
+ * @since 12.0.0
+ */
+ public function getCloudIdManager();
}