Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 573099c47d | |||
| ab40d76c99 |
@@ -107,7 +107,7 @@ jobs:
|
||||
echo "$FILEPATH:"
|
||||
docker exec --user 33 apache cat $FILEPATH
|
||||
|
||||
smb-kerberos-sso-summary:
|
||||
sftp-summary:
|
||||
runs-on: ubuntu-latest-low
|
||||
needs: [changes, files-external-smb-kerberos]
|
||||
|
||||
|
||||
@@ -16,8 +16,6 @@ use OCP\Files\File;
|
||||
use OCP\Files\Folder;
|
||||
use OCP\Files\IRootFolder;
|
||||
use OCP\Files\NotFoundException;
|
||||
use OCP\IConfig;
|
||||
use OCP\Server;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class UploadCleanup extends TimedJob {
|
||||
@@ -49,9 +47,8 @@ class UploadCleanup extends TimedJob {
|
||||
return;
|
||||
}
|
||||
|
||||
// Remove if all files have an mtime of more than a day or configured TTL
|
||||
$ttl = Server::get(IConfig::class)->getSystemValueInt('cache_chunk_gc_ttl', 60 * 60 * 24);
|
||||
$time = $this->time->getTime() - $ttl;
|
||||
// Remove if all files have an mtime of more than a day
|
||||
$time = $this->time->getTime() - 60 * 60 * 24;
|
||||
|
||||
if (!($uploadFolder instanceof Folder)) {
|
||||
$this->logger->error('Found a file inside the uploads folder. Uid: ' . $uid . ' folder: ' . $folder);
|
||||
@@ -64,6 +61,8 @@ class UploadCleanup extends TimedJob {
|
||||
|
||||
/** @var File[] $files */
|
||||
$files = $uploadFolder->getDirectoryListing();
|
||||
|
||||
// The folder has to be more than a day old
|
||||
$initial = $uploadFolder->getMTime() < $time;
|
||||
|
||||
$expire = array_reduce($files, function (bool $carry, File $file) use ($time) {
|
||||
|
||||
@@ -180,6 +180,7 @@ class ServerFactory {
|
||||
$server->addPlugin(new SharesPlugin(
|
||||
$tree,
|
||||
$this->userSession,
|
||||
$userFolder,
|
||||
\OCP\Server::get(\OCP\Share\IManager::class)
|
||||
));
|
||||
$server->addPlugin(new CommentPropertiesPlugin(\OCP\Server::get(ICommentsManager::class), $this->userSession));
|
||||
|
||||
@@ -32,7 +32,12 @@ class SharesPlugin extends \Sabre\DAV\ServerPlugin {
|
||||
public const SHARETYPES_PROPERTYNAME = '{http://owncloud.org/ns}share-types';
|
||||
public const SHAREES_PROPERTYNAME = '{http://nextcloud.org/ns}sharees';
|
||||
|
||||
private \Sabre\DAV\Server $server;
|
||||
/**
|
||||
* Reference to main server object
|
||||
*
|
||||
* @var \Sabre\DAV\Server
|
||||
*/
|
||||
private $server;
|
||||
private string $userId;
|
||||
|
||||
/** @var IShare[][] */
|
||||
@@ -49,7 +54,8 @@ class SharesPlugin extends \Sabre\DAV\ServerPlugin {
|
||||
|
||||
public function __construct(
|
||||
private Tree $tree,
|
||||
IUserSession $userSession,
|
||||
private IUserSession $userSession,
|
||||
private Folder $userFolder,
|
||||
private IManager $shareManager,
|
||||
) {
|
||||
$this->userId = $userSession->getUser()->getUID();
|
||||
@@ -200,7 +206,10 @@ class SharesPlugin extends \Sabre\DAV\ServerPlugin {
|
||||
|
||||
$propFind->handle(self::SHARETYPES_PROPERTYNAME, function () use ($sabreNode): ShareTypeList {
|
||||
$shares = $this->getShares($sabreNode);
|
||||
$shareTypes = array_unique(array_map(static fn (IShare $share): int => $share->getShareType(), $shares));
|
||||
|
||||
$shareTypes = array_unique(array_map(function (IShare $share) {
|
||||
return $share->getShareType();
|
||||
}, $shares));
|
||||
|
||||
return new ShareTypeList($shareTypes);
|
||||
});
|
||||
|
||||
@@ -336,6 +336,7 @@ class Server {
|
||||
$this->server->addPlugin(new SharesPlugin(
|
||||
$this->server->tree,
|
||||
$userSession,
|
||||
$userFolder,
|
||||
$shareManager,
|
||||
));
|
||||
$this->server->addPlugin(new CommentPropertiesPlugin(
|
||||
|
||||
@@ -27,6 +27,7 @@ class SharesPluginTest extends \Test\TestCase {
|
||||
private \Sabre\DAV\Server $server;
|
||||
private \Sabre\DAV\Tree&MockObject $tree;
|
||||
private \OCP\Share\IManager&MockObject $shareManager;
|
||||
private Folder&MockObject $userFolder;
|
||||
private SharesPlugin $plugin;
|
||||
|
||||
protected function setUp(): void {
|
||||
@@ -42,10 +43,12 @@ class SharesPluginTest extends \Test\TestCase {
|
||||
$userSession->expects($this->once())
|
||||
->method('getUser')
|
||||
->willReturn($user);
|
||||
$this->userFolder = $this->createMock(Folder::class);
|
||||
|
||||
$this->plugin = new SharesPlugin(
|
||||
$this->tree,
|
||||
$userSession,
|
||||
$this->userFolder,
|
||||
$this->shareManager
|
||||
);
|
||||
$this->plugin->initialize($this->server);
|
||||
|
||||
@@ -42,23 +42,15 @@ OC.L10N.register(
|
||||
"Enable recovery key" : "Wiederherstellungsschlüssel aktivieren",
|
||||
"The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten." : "Der Wiederherstellungsschlüssel ist ein zusätzlicher Verschlüsselungsschlüssel, der zur Verschlüsselung von Dateien verwendet wird. Er wird verwendet, um Dateien aus einem Konto wiederherzustellen, wenn das Passwort vergessen wurde.",
|
||||
"Recovery key password" : "Passwort für den Wiederherstellungsschlüsse",
|
||||
"Passwords do not match fields" : "Passwortfelder stimmen nicht überein",
|
||||
"Repeat recovery key password" : "Passwort für den Wiederherstellungsschlüssel wiederholen",
|
||||
"An error occurred while updating the recovery key settings. Please try again." : "Beim Aktualisieren der Einstellungen der Wiederherstellungsschlüssel ist ein Fehler aufgetreten. Bitte erneut versuchen.",
|
||||
"Change recovery key password" : "Passwort für den Wiederherstellungsschlüssel ändern",
|
||||
"Old recovery key password" : "Altes Passwort für den Wiederherstellungsschlüssel",
|
||||
"New recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel",
|
||||
"Repeat new recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel wiederholen",
|
||||
"An error occurred while changing the recovery key password. Please try again." : "Beim Aktualisieren der Wiederherstellungsschlüsselpassworts ist ein Fehler aufgetreten. Bitte erneut versuchen.",
|
||||
"Update private key password" : "Passwort des privaten Schlüssels aktualisieren",
|
||||
"Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password." : "Dein privates Schlüsselpasswort stimmt nicht mehr mit Ihrem Anmeldepasswort überein. Lege dein altes privates Schlüsselkennwort auf dein aktuelles Anmeldekennwort fest.",
|
||||
"If you do not remember your old password you can ask your administrator to recover your files." : "Wenn du dich nicht mehr an dein altes Passwort erinnern kannst, kannst du deine Administration bitten, deine Dateien wiederherzustellen.",
|
||||
"Old log-in password" : "Altes Anmelde-Passwort",
|
||||
"Current log-in password" : "Aktuelles Passwort",
|
||||
"Update" : "Aktualisieren",
|
||||
"Updating recovery keys. This can take some time…" : "Aktualisieren der Wiederherstellungsschlüssel. Das kann einige Zeit dauern …",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option hast du die Möglichkeit, wieder auf deine verschlüsselten Dateien zugreifen zu können, wenn du dein Passwort verloren hast.",
|
||||
"Enable password recovery" : "Passwort-Wiederherstellung aktivieren",
|
||||
"Default encryption module" : "Standard-Verschlüsselungsmodul",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselungs-App ist aktiviert, aber die Schlüssel sind noch nicht initialisiert. Bitte melde ab- und wieder anmelden",
|
||||
"Basic encryption module" : "Basisverschlüsselungsmodul",
|
||||
|
||||
@@ -40,23 +40,15 @@
|
||||
"Enable recovery key" : "Wiederherstellungsschlüssel aktivieren",
|
||||
"The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten." : "Der Wiederherstellungsschlüssel ist ein zusätzlicher Verschlüsselungsschlüssel, der zur Verschlüsselung von Dateien verwendet wird. Er wird verwendet, um Dateien aus einem Konto wiederherzustellen, wenn das Passwort vergessen wurde.",
|
||||
"Recovery key password" : "Passwort für den Wiederherstellungsschlüsse",
|
||||
"Passwords do not match fields" : "Passwortfelder stimmen nicht überein",
|
||||
"Repeat recovery key password" : "Passwort für den Wiederherstellungsschlüssel wiederholen",
|
||||
"An error occurred while updating the recovery key settings. Please try again." : "Beim Aktualisieren der Einstellungen der Wiederherstellungsschlüssel ist ein Fehler aufgetreten. Bitte erneut versuchen.",
|
||||
"Change recovery key password" : "Passwort für den Wiederherstellungsschlüssel ändern",
|
||||
"Old recovery key password" : "Altes Passwort für den Wiederherstellungsschlüssel",
|
||||
"New recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel",
|
||||
"Repeat new recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel wiederholen",
|
||||
"An error occurred while changing the recovery key password. Please try again." : "Beim Aktualisieren der Wiederherstellungsschlüsselpassworts ist ein Fehler aufgetreten. Bitte erneut versuchen.",
|
||||
"Update private key password" : "Passwort des privaten Schlüssels aktualisieren",
|
||||
"Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password." : "Dein privates Schlüsselpasswort stimmt nicht mehr mit Ihrem Anmeldepasswort überein. Lege dein altes privates Schlüsselkennwort auf dein aktuelles Anmeldekennwort fest.",
|
||||
"If you do not remember your old password you can ask your administrator to recover your files." : "Wenn du dich nicht mehr an dein altes Passwort erinnern kannst, kannst du deine Administration bitten, deine Dateien wiederherzustellen.",
|
||||
"Old log-in password" : "Altes Anmelde-Passwort",
|
||||
"Current log-in password" : "Aktuelles Passwort",
|
||||
"Update" : "Aktualisieren",
|
||||
"Updating recovery keys. This can take some time…" : "Aktualisieren der Wiederherstellungsschlüssel. Das kann einige Zeit dauern …",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option hast du die Möglichkeit, wieder auf deine verschlüsselten Dateien zugreifen zu können, wenn du dein Passwort verloren hast.",
|
||||
"Enable password recovery" : "Passwort-Wiederherstellung aktivieren",
|
||||
"Default encryption module" : "Standard-Verschlüsselungsmodul",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselungs-App ist aktiviert, aber die Schlüssel sind noch nicht initialisiert. Bitte melde ab- und wieder anmelden",
|
||||
"Basic encryption module" : "Basisverschlüsselungsmodul",
|
||||
|
||||
@@ -42,23 +42,15 @@ OC.L10N.register(
|
||||
"Enable recovery key" : "Wiederherstellungsschlüssel aktivieren",
|
||||
"The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten." : "Der Wiederherstellungsschlüssel ist ein zusätzlicher Verschlüsselungsschlüssel, der zur Verschlüsselung von Dateien verwendet wird. Er wird verwendet, um Dateien aus einem Konto wiederherzustellen, wenn das Passwort vergessen wurde.",
|
||||
"Recovery key password" : "Passwort für den Wiederherstellungsschlüssel",
|
||||
"Passwords do not match fields" : "Passwortfelder stimmen nicht überein",
|
||||
"Repeat recovery key password" : "Passwort für den Wiederherstellungsschlüssel wiederholen",
|
||||
"An error occurred while updating the recovery key settings. Please try again." : "Beim Aktualisieren der Einstellungen für Wiederherstellungsschlüssel ist ein Fehler aufgetreten. Bitte erneut versuchen.",
|
||||
"Change recovery key password" : "Passwort für den Wiederherstellungsschlüssel ändern",
|
||||
"Old recovery key password" : "Altes Passwort für den Wiederherstellungsschlüssel",
|
||||
"New recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel",
|
||||
"Repeat new recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel wiederholen",
|
||||
"An error occurred while changing the recovery key password. Please try again." : "Beim Aktualisieren des Wiederherstellungsschlüsselpassworts ist ein Fehler aufgetreten. Bitte erneut versuchen.",
|
||||
"Update private key password" : "Passwort des privaten Schlüssels aktualisieren",
|
||||
"Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password." : "Ihr privates Schlüsselpasswort stimmt nicht mehr mit Ihrem Anmeldepasswort überein. Legen Sie Ihr altes privates Schlüsselkennwort auf Ihr aktuelles Anmeldekennwort fest.",
|
||||
"If you do not remember your old password you can ask your administrator to recover your files." : "Wenn Sie sich nicht mehr an Ihr altes Passwort erinnern, können Sie Ihre Administration bitten, Ihre Dateien wiederherzustellen.",
|
||||
"Old log-in password" : "Altes Anmelde-Passwort",
|
||||
"Current log-in password" : "Aktuelles Anmeldepasswort",
|
||||
"Update" : "Aktualisieren",
|
||||
"Updating recovery keys. This can take some time…" : "Aktualisieren der Wiederherstellungsschlüssel. Das kann einige Zeit dauern …",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option haben Sie die Möglichkeit, wieder auf Ihre verschlüsselten Dateien zugreifen zu können, wenn Sie Ihr Passwort verloren haben.",
|
||||
"Enable password recovery" : "Passwort-Wiederherstellung aktivieren",
|
||||
"Default encryption module" : "Standard-Verschlüsselungsmodul",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselungs-App ist aktiviert, aber die Schlüssel sind noch nicht initialisiert. Bitte melden Sie sich ab und wieder an",
|
||||
"Basic encryption module" : "Basisverschlüsselungsmodul",
|
||||
|
||||
@@ -40,23 +40,15 @@
|
||||
"Enable recovery key" : "Wiederherstellungsschlüssel aktivieren",
|
||||
"The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten." : "Der Wiederherstellungsschlüssel ist ein zusätzlicher Verschlüsselungsschlüssel, der zur Verschlüsselung von Dateien verwendet wird. Er wird verwendet, um Dateien aus einem Konto wiederherzustellen, wenn das Passwort vergessen wurde.",
|
||||
"Recovery key password" : "Passwort für den Wiederherstellungsschlüssel",
|
||||
"Passwords do not match fields" : "Passwortfelder stimmen nicht überein",
|
||||
"Repeat recovery key password" : "Passwort für den Wiederherstellungsschlüssel wiederholen",
|
||||
"An error occurred while updating the recovery key settings. Please try again." : "Beim Aktualisieren der Einstellungen für Wiederherstellungsschlüssel ist ein Fehler aufgetreten. Bitte erneut versuchen.",
|
||||
"Change recovery key password" : "Passwort für den Wiederherstellungsschlüssel ändern",
|
||||
"Old recovery key password" : "Altes Passwort für den Wiederherstellungsschlüssel",
|
||||
"New recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel",
|
||||
"Repeat new recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel wiederholen",
|
||||
"An error occurred while changing the recovery key password. Please try again." : "Beim Aktualisieren des Wiederherstellungsschlüsselpassworts ist ein Fehler aufgetreten. Bitte erneut versuchen.",
|
||||
"Update private key password" : "Passwort des privaten Schlüssels aktualisieren",
|
||||
"Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password." : "Ihr privates Schlüsselpasswort stimmt nicht mehr mit Ihrem Anmeldepasswort überein. Legen Sie Ihr altes privates Schlüsselkennwort auf Ihr aktuelles Anmeldekennwort fest.",
|
||||
"If you do not remember your old password you can ask your administrator to recover your files." : "Wenn Sie sich nicht mehr an Ihr altes Passwort erinnern, können Sie Ihre Administration bitten, Ihre Dateien wiederherzustellen.",
|
||||
"Old log-in password" : "Altes Anmelde-Passwort",
|
||||
"Current log-in password" : "Aktuelles Anmeldepasswort",
|
||||
"Update" : "Aktualisieren",
|
||||
"Updating recovery keys. This can take some time…" : "Aktualisieren der Wiederherstellungsschlüssel. Das kann einige Zeit dauern …",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option haben Sie die Möglichkeit, wieder auf Ihre verschlüsselten Dateien zugreifen zu können, wenn Sie Ihr Passwort verloren haben.",
|
||||
"Enable password recovery" : "Passwort-Wiederherstellung aktivieren",
|
||||
"Default encryption module" : "Standard-Verschlüsselungsmodul",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselungs-App ist aktiviert, aber die Schlüssel sind noch nicht initialisiert. Bitte melden Sie sich ab und wieder an",
|
||||
"Basic encryption module" : "Basisverschlüsselungsmodul",
|
||||
|
||||
@@ -42,23 +42,15 @@ OC.L10N.register(
|
||||
"Enable recovery key" : "Activar a chave de recuperación",
|
||||
"The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten." : "A chave de recuperación é unha chave de cifraxe adicional que se usa para cifrar ficheiros. Utilízase para recuperar ficheiros dunha conta se se esquece o contrasinal.",
|
||||
"Recovery key password" : "Contrasinal da chave de recuperación",
|
||||
"Passwords do not match fields" : "Os contrasinais non coinciden cos campos",
|
||||
"Repeat recovery key password" : "Repita o contrasinal da chave de recuperación",
|
||||
"An error occurred while updating the recovery key settings. Please try again." : "Produciuse un erro ao actualizar os axustes da chave de recuperación. Ténteo de novo.",
|
||||
"Change recovery key password" : "Cambiar o contrasinal da chave de la recuperación",
|
||||
"Old recovery key password" : "Contrasinal antigo da chave de recuperación",
|
||||
"New recovery key password" : "Novo contrasinal da chave de recuperación",
|
||||
"Repeat new recovery key password" : "Repita o novo contrasinal da chave de recuperación",
|
||||
"An error occurred while changing the recovery key password. Please try again." : "Produciuse un erro ao cambiar o contrasinal da chave de recuperación. Ténteo de novo.",
|
||||
"Update private key password" : "Actualizar o contrasinal da chave privada",
|
||||
"Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password." : "O seu contrasinal de chave privada xa non coincide co seu contrasinal de acceso. Defina o seu antigo contrasinal de chave privada como o seu contrasinal de acceso actual.",
|
||||
"If you do not remember your old password you can ask your administrator to recover your files." : "Se non lembra o seu contrasinal antigo pode pedirllo á administración desta instancia. para recuperar os seus ficheiros.",
|
||||
"Old log-in password" : "Contrasinal antigo de acceso",
|
||||
"Current log-in password" : "Contrasinal actual de acceso",
|
||||
"Update" : "Actualizar",
|
||||
"Updating recovery keys. This can take some time…" : "Actualizando as chaves de recuperación. Isto pode levar algún tempo…",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ao activar esta opción permitiráselle volver obter acceso aos ficheiros cifrados no caso de perda do contrasinal",
|
||||
"Enable password recovery" : "Activar o contrasinal de recuperación",
|
||||
"Default encryption module" : "Módulo predeterminado de cifraxe",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "A aplicación de cifraxe está activada, mais as súas chaves non foron preparadas, saia da sesión e volva acceder de novo",
|
||||
"Basic encryption module" : "Módulo básico de cifraxe",
|
||||
|
||||
@@ -40,23 +40,15 @@
|
||||
"Enable recovery key" : "Activar a chave de recuperación",
|
||||
"The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten." : "A chave de recuperación é unha chave de cifraxe adicional que se usa para cifrar ficheiros. Utilízase para recuperar ficheiros dunha conta se se esquece o contrasinal.",
|
||||
"Recovery key password" : "Contrasinal da chave de recuperación",
|
||||
"Passwords do not match fields" : "Os contrasinais non coinciden cos campos",
|
||||
"Repeat recovery key password" : "Repita o contrasinal da chave de recuperación",
|
||||
"An error occurred while updating the recovery key settings. Please try again." : "Produciuse un erro ao actualizar os axustes da chave de recuperación. Ténteo de novo.",
|
||||
"Change recovery key password" : "Cambiar o contrasinal da chave de la recuperación",
|
||||
"Old recovery key password" : "Contrasinal antigo da chave de recuperación",
|
||||
"New recovery key password" : "Novo contrasinal da chave de recuperación",
|
||||
"Repeat new recovery key password" : "Repita o novo contrasinal da chave de recuperación",
|
||||
"An error occurred while changing the recovery key password. Please try again." : "Produciuse un erro ao cambiar o contrasinal da chave de recuperación. Ténteo de novo.",
|
||||
"Update private key password" : "Actualizar o contrasinal da chave privada",
|
||||
"Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password." : "O seu contrasinal de chave privada xa non coincide co seu contrasinal de acceso. Defina o seu antigo contrasinal de chave privada como o seu contrasinal de acceso actual.",
|
||||
"If you do not remember your old password you can ask your administrator to recover your files." : "Se non lembra o seu contrasinal antigo pode pedirllo á administración desta instancia. para recuperar os seus ficheiros.",
|
||||
"Old log-in password" : "Contrasinal antigo de acceso",
|
||||
"Current log-in password" : "Contrasinal actual de acceso",
|
||||
"Update" : "Actualizar",
|
||||
"Updating recovery keys. This can take some time…" : "Actualizando as chaves de recuperación. Isto pode levar algún tempo…",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ao activar esta opción permitiráselle volver obter acceso aos ficheiros cifrados no caso de perda do contrasinal",
|
||||
"Enable password recovery" : "Activar o contrasinal de recuperación",
|
||||
"Default encryption module" : "Módulo predeterminado de cifraxe",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "A aplicación de cifraxe está activada, mais as súas chaves non foron preparadas, saia da sesión e volva acceder de novo",
|
||||
"Basic encryption module" : "Módulo básico de cifraxe",
|
||||
|
||||
@@ -42,23 +42,15 @@ OC.L10N.register(
|
||||
"Enable recovery key" : "Ativar chave de recuperação",
|
||||
"The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten." : "A chave de recuperação é uma chave de criptografia adicional usada para criptografar arquivos. É usado para recuperar arquivos de uma conta se a senha for esquecida.",
|
||||
"Recovery key password" : "Senha da chave de recuperação",
|
||||
"Passwords do not match fields" : "As senhas não correspondem aos campos",
|
||||
"Repeat recovery key password" : "Repita a senha da chave de recuperação",
|
||||
"An error occurred while updating the recovery key settings. Please try again." : "Ocorreu um erro ao atualizar as configurações da chave de recuperação. Tente novamente.",
|
||||
"Change recovery key password" : "Alterar a senha da chave de recuperação",
|
||||
"Old recovery key password" : "Senha da chave de recuperação antiga",
|
||||
"New recovery key password" : "Senha nova da chave de recuperação",
|
||||
"Repeat new recovery key password" : "Repita a senha nova da chave de recuperação",
|
||||
"An error occurred while changing the recovery key password. Please try again." : "Ocorreu um erro ao alterar a senha da chave de recuperação. Tente novamente.",
|
||||
"Update private key password" : "Atualizar senha da chave privada",
|
||||
"Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password." : "A senha da sua chave privada não corresponde mais à sua senha de login. Defina a senha antiga da sua chave privada como a sua senha de login atual.",
|
||||
"If you do not remember your old password you can ask your administrator to recover your files." : "Se não se lembrar da senha antiga, peça ao administrador para recuperar seus arquivos.",
|
||||
"Old log-in password" : "Senha antiga de login",
|
||||
"Current log-in password" : "Senha atual de login",
|
||||
"Update" : "Atualizar",
|
||||
"Updating recovery keys. This can take some time…" : "Atualizando as chaves de recuperação. Isso pode demorar algum tempo…",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ativar essa opção vai permitir que você obtenha novamente acesso aos seus arquivos criptografados em caso de perda de senha",
|
||||
"Enable password recovery" : "Ativar recuperação de senha",
|
||||
"Default encryption module" : "Módulo de criptografia padrão",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "O aplicativo de criptografia está habilitado, mas suas chaves não foram inicializadas. Por favor, saia e entre novamente.",
|
||||
"Basic encryption module" : "Módulo de criptografia básico",
|
||||
|
||||
@@ -40,23 +40,15 @@
|
||||
"Enable recovery key" : "Ativar chave de recuperação",
|
||||
"The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten." : "A chave de recuperação é uma chave de criptografia adicional usada para criptografar arquivos. É usado para recuperar arquivos de uma conta se a senha for esquecida.",
|
||||
"Recovery key password" : "Senha da chave de recuperação",
|
||||
"Passwords do not match fields" : "As senhas não correspondem aos campos",
|
||||
"Repeat recovery key password" : "Repita a senha da chave de recuperação",
|
||||
"An error occurred while updating the recovery key settings. Please try again." : "Ocorreu um erro ao atualizar as configurações da chave de recuperação. Tente novamente.",
|
||||
"Change recovery key password" : "Alterar a senha da chave de recuperação",
|
||||
"Old recovery key password" : "Senha da chave de recuperação antiga",
|
||||
"New recovery key password" : "Senha nova da chave de recuperação",
|
||||
"Repeat new recovery key password" : "Repita a senha nova da chave de recuperação",
|
||||
"An error occurred while changing the recovery key password. Please try again." : "Ocorreu um erro ao alterar a senha da chave de recuperação. Tente novamente.",
|
||||
"Update private key password" : "Atualizar senha da chave privada",
|
||||
"Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password." : "A senha da sua chave privada não corresponde mais à sua senha de login. Defina a senha antiga da sua chave privada como a sua senha de login atual.",
|
||||
"If you do not remember your old password you can ask your administrator to recover your files." : "Se não se lembrar da senha antiga, peça ao administrador para recuperar seus arquivos.",
|
||||
"Old log-in password" : "Senha antiga de login",
|
||||
"Current log-in password" : "Senha atual de login",
|
||||
"Update" : "Atualizar",
|
||||
"Updating recovery keys. This can take some time…" : "Atualizando as chaves de recuperação. Isso pode demorar algum tempo…",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ativar essa opção vai permitir que você obtenha novamente acesso aos seus arquivos criptografados em caso de perda de senha",
|
||||
"Enable password recovery" : "Ativar recuperação de senha",
|
||||
"Default encryption module" : "Módulo de criptografia padrão",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "O aplicativo de criptografia está habilitado, mas suas chaves não foram inicializadas. Por favor, saia e entre novamente.",
|
||||
"Basic encryption module" : "Módulo de criptografia básico",
|
||||
|
||||
@@ -27,8 +27,6 @@ OC.L10N.register(
|
||||
"Bad Signature" : "Má Assinatura",
|
||||
"Missing Signature" : "Assinatura em Falta",
|
||||
"one-time password for server-side-encryption" : "palavra-passe de utilização única para a encriptação do lado do servidor",
|
||||
"Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Não é possível desencriptar este ficheiro, provavelmente é um ficheiro partilhado. Por favor, peça ao proprietário do ficheiro para voltar a partilhar o ficheiro consigo.",
|
||||
"Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Não é possível ler este ficheiro, provavelmente isto é um ficheiro compartilhado. Por favor, peça ao dono do ficheiro para voltar a partilhar o ficheiro consigo.",
|
||||
"This app provides the (default) cryptography implementation for Nextcloud's Server-side Encryption (SSE) feature.\n\n\t\t\t**Encryption Details**\n\t\t\t* **Cipher Mode:** AES-256-CTR (default)\n\t\t\t* **Authentication:** HMAC-SHA256\n\n\t\t\t**Important Warnings**\n\t\t\t* **DANGER:** Do not disable this application until all files have been decrypted (`occ encryption:decrypt-all`).\n\t\t\t* **WARNING**: Reverting to non-encrypted file storage after activation requires command-line access. The action is permanent via the Web UI.\"\n\n\t\t\t**Notes for Existing Files**\n\t\t\t* By default, enabling SSE does not encrypt existing files; only new files will be encrypted.\n\t\t\t* To encrypt all existing files, use the command `occ encryption:encrypt-all`.\n\n\t\t\t**Before You Begin**\n\t\t\t* **Read the Documentation:** Before you enable SSE, encrypt existing files, or disable SSE, it is critical to \n\t\t\t\tread the documentation to understand implications and the appropriate procedures to avoid data loss." : "Esta aplicação fornece a implementação de encriptação (padrão) para a funcionalidade de Encriptação do Lado do Servidor (SSE) do Nextcloud.\n\n\t\t\t**Detalhes da Encriptação**\n\t\t\t* **Modo de Encriptação:** AES-256-CTR (padrão)\n\t\t\t* **Autenticação:** HMAC-SHA256\n\t\t\t**Avisos Importantes**\n\t\t\t* **PERIGO:** Não desative esta aplicação até que todos os ficheiros tenham sido desencriptados (`occ encryption:decrypt-all`).\n\t\t\t* **AVISO**: Reverter para o armazenamento de ficheiros não encriptados após a ativação requer acesso à linha de comandos. A ação é permanente através da interface web.\n\n\t\t\t**Observações para Ficheiros Existentes**\n\t\t\t* Por predefinição, a ativação do SSE não encripta os ficheiros existentes; apenas os novos ficheiros serão encriptados.\n\t\t\t* Para encriptar todos os ficheiros existentes, utilize o comando `occ encryption:encrypt-all`.\n\t\t\t**Antes de Começar**\n\t\t\t* **Leia a Documentação:** Antes de ativar o SSE, encriptar os ficheiros existentes ou desativar o SSE, é fundamental \n\t\t\t\tler a documentação para compreender as implicações e os procedimentos adequados para evitar a perda de dados.",
|
||||
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Ativando esta opção todos os ficheiros armazenados no armazenamento principal serão encriptados, senão serão encriptados todos os ficheiros no armazenamento externo",
|
||||
"Encrypt the home storage" : "Encriptar o armazenamento do início",
|
||||
|
||||
@@ -25,8 +25,6 @@
|
||||
"Bad Signature" : "Má Assinatura",
|
||||
"Missing Signature" : "Assinatura em Falta",
|
||||
"one-time password for server-side-encryption" : "palavra-passe de utilização única para a encriptação do lado do servidor",
|
||||
"Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Não é possível desencriptar este ficheiro, provavelmente é um ficheiro partilhado. Por favor, peça ao proprietário do ficheiro para voltar a partilhar o ficheiro consigo.",
|
||||
"Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Não é possível ler este ficheiro, provavelmente isto é um ficheiro compartilhado. Por favor, peça ao dono do ficheiro para voltar a partilhar o ficheiro consigo.",
|
||||
"This app provides the (default) cryptography implementation for Nextcloud's Server-side Encryption (SSE) feature.\n\n\t\t\t**Encryption Details**\n\t\t\t* **Cipher Mode:** AES-256-CTR (default)\n\t\t\t* **Authentication:** HMAC-SHA256\n\n\t\t\t**Important Warnings**\n\t\t\t* **DANGER:** Do not disable this application until all files have been decrypted (`occ encryption:decrypt-all`).\n\t\t\t* **WARNING**: Reverting to non-encrypted file storage after activation requires command-line access. The action is permanent via the Web UI.\"\n\n\t\t\t**Notes for Existing Files**\n\t\t\t* By default, enabling SSE does not encrypt existing files; only new files will be encrypted.\n\t\t\t* To encrypt all existing files, use the command `occ encryption:encrypt-all`.\n\n\t\t\t**Before You Begin**\n\t\t\t* **Read the Documentation:** Before you enable SSE, encrypt existing files, or disable SSE, it is critical to \n\t\t\t\tread the documentation to understand implications and the appropriate procedures to avoid data loss." : "Esta aplicação fornece a implementação de encriptação (padrão) para a funcionalidade de Encriptação do Lado do Servidor (SSE) do Nextcloud.\n\n\t\t\t**Detalhes da Encriptação**\n\t\t\t* **Modo de Encriptação:** AES-256-CTR (padrão)\n\t\t\t* **Autenticação:** HMAC-SHA256\n\t\t\t**Avisos Importantes**\n\t\t\t* **PERIGO:** Não desative esta aplicação até que todos os ficheiros tenham sido desencriptados (`occ encryption:decrypt-all`).\n\t\t\t* **AVISO**: Reverter para o armazenamento de ficheiros não encriptados após a ativação requer acesso à linha de comandos. A ação é permanente através da interface web.\n\n\t\t\t**Observações para Ficheiros Existentes**\n\t\t\t* Por predefinição, a ativação do SSE não encripta os ficheiros existentes; apenas os novos ficheiros serão encriptados.\n\t\t\t* Para encriptar todos os ficheiros existentes, utilize o comando `occ encryption:encrypt-all`.\n\t\t\t**Antes de Começar**\n\t\t\t* **Leia a Documentação:** Antes de ativar o SSE, encriptar os ficheiros existentes ou desativar o SSE, é fundamental \n\t\t\t\tler a documentação para compreender as implicações e os procedimentos adequados para evitar a perda de dados.",
|
||||
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Ativando esta opção todos os ficheiros armazenados no armazenamento principal serão encriptados, senão serão encriptados todos os ficheiros no armazenamento externo",
|
||||
"Encrypt the home storage" : "Encriptar o armazenamento do início",
|
||||
|
||||
@@ -42,23 +42,15 @@ OC.L10N.register(
|
||||
"Enable recovery key" : "啟用還原金鑰",
|
||||
"The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten." : "還原金鑰是用於加密檔案的額外加密金鑰。其用於忘記密碼時從帳號還原檔案。",
|
||||
"Recovery key password" : "還原金鑰密碼",
|
||||
"Passwords do not match fields" : "密碼與欄位不符",
|
||||
"Repeat recovery key password" : "再次輸入還原金鑰密碼",
|
||||
"An error occurred while updating the recovery key settings. Please try again." : "更新備援金鑰設定時發生錯誤。請再試一次。",
|
||||
"Change recovery key password" : "變更備援金鑰密碼",
|
||||
"Old recovery key password" : "舊的還原金鑰密碼",
|
||||
"New recovery key password" : "新的還原金鑰密碼",
|
||||
"Repeat new recovery key password" : "再次輸入新的還原金鑰密碼",
|
||||
"An error occurred while changing the recovery key password. Please try again." : "變更備援金鑰密碼時發生錯誤。請再試一次。",
|
||||
"Update private key password" : "更新私鑰密碼",
|
||||
"Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password." : "您的私鑰密碼不再與您的登入密碼相符。請將舊的私鑰密碼設定為您目前的登入密碼。",
|
||||
"If you do not remember your old password you can ask your administrator to recover your files." : "如果您忘記舊密碼,可以請求管理員協助取回檔案。",
|
||||
"Old log-in password" : "舊登入密碼",
|
||||
"Current log-in password" : "目前登入密碼",
|
||||
"Update" : "更新",
|
||||
"Updating recovery keys. This can take some time…" : "正在更新備援金鑰。這可能需要一點時間……",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "啟用此選項,讓您可以在忘記密碼的情況下,取回對您已加密檔案的存取權",
|
||||
"Enable password recovery" : "啟用密碼還原",
|
||||
"Default encryption module" : "預設加密模組",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "已啟用加密應用程式,但您的金鑰並未初始化,請登出並再次登入",
|
||||
"Basic encryption module" : "基本加密模組",
|
||||
|
||||
@@ -40,23 +40,15 @@
|
||||
"Enable recovery key" : "啟用還原金鑰",
|
||||
"The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten." : "還原金鑰是用於加密檔案的額外加密金鑰。其用於忘記密碼時從帳號還原檔案。",
|
||||
"Recovery key password" : "還原金鑰密碼",
|
||||
"Passwords do not match fields" : "密碼與欄位不符",
|
||||
"Repeat recovery key password" : "再次輸入還原金鑰密碼",
|
||||
"An error occurred while updating the recovery key settings. Please try again." : "更新備援金鑰設定時發生錯誤。請再試一次。",
|
||||
"Change recovery key password" : "變更備援金鑰密碼",
|
||||
"Old recovery key password" : "舊的還原金鑰密碼",
|
||||
"New recovery key password" : "新的還原金鑰密碼",
|
||||
"Repeat new recovery key password" : "再次輸入新的還原金鑰密碼",
|
||||
"An error occurred while changing the recovery key password. Please try again." : "變更備援金鑰密碼時發生錯誤。請再試一次。",
|
||||
"Update private key password" : "更新私鑰密碼",
|
||||
"Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password." : "您的私鑰密碼不再與您的登入密碼相符。請將舊的私鑰密碼設定為您目前的登入密碼。",
|
||||
"If you do not remember your old password you can ask your administrator to recover your files." : "如果您忘記舊密碼,可以請求管理員協助取回檔案。",
|
||||
"Old log-in password" : "舊登入密碼",
|
||||
"Current log-in password" : "目前登入密碼",
|
||||
"Update" : "更新",
|
||||
"Updating recovery keys. This can take some time…" : "正在更新備援金鑰。這可能需要一點時間……",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "啟用此選項,讓您可以在忘記密碼的情況下,取回對您已加密檔案的存取權",
|
||||
"Enable password recovery" : "啟用密碼還原",
|
||||
"Default encryption module" : "預設加密模組",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "已啟用加密應用程式,但您的金鑰並未初始化,請登出並再次登入",
|
||||
"Basic encryption module" : "基本加密模組",
|
||||
|
||||
@@ -317,7 +317,7 @@ describe('Delete action execute tests', () => {
|
||||
source: 'https://cloud.domain.com/remote.php/dav/files/test/foobar.txt',
|
||||
owner: 'test',
|
||||
mime: 'text/plain',
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.WRITE | Permission.DELETE,
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.DELETE,
|
||||
root: '/files/test',
|
||||
})
|
||||
|
||||
@@ -348,7 +348,7 @@ describe('Delete action execute tests', () => {
|
||||
source: 'https://cloud.domain.com/remote.php/dav/files/test/foo.txt',
|
||||
owner: 'test',
|
||||
mime: 'text/plain',
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.WRITE | Permission.DELETE,
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.DELETE,
|
||||
root: '/files/test',
|
||||
})
|
||||
|
||||
@@ -357,7 +357,7 @@ describe('Delete action execute tests', () => {
|
||||
source: 'https://cloud.domain.com/remote.php/dav/files/test/bar.txt',
|
||||
owner: 'test',
|
||||
mime: 'text/plain',
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.WRITE | Permission.DELETE,
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.DELETE,
|
||||
root: '/files/test',
|
||||
})
|
||||
|
||||
@@ -394,7 +394,7 @@ describe('Delete action execute tests', () => {
|
||||
source: 'https://cloud.domain.com/remote.php/dav/files/test/foo.txt',
|
||||
owner: 'test',
|
||||
mime: 'text/plain',
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.WRITE | Permission.DELETE,
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.DELETE,
|
||||
root: '/files/test',
|
||||
})
|
||||
|
||||
@@ -403,7 +403,7 @@ describe('Delete action execute tests', () => {
|
||||
source: 'https://cloud.domain.com/remote.php/dav/files/test/bar.txt',
|
||||
owner: 'test',
|
||||
mime: 'text/plain',
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.WRITE | Permission.DELETE,
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.DELETE,
|
||||
root: '/files/test',
|
||||
})
|
||||
|
||||
@@ -412,7 +412,7 @@ describe('Delete action execute tests', () => {
|
||||
source: 'https://cloud.domain.com/remote.php/dav/files/test/baz.txt',
|
||||
owner: 'test',
|
||||
mime: 'text/plain',
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.WRITE | Permission.DELETE,
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.DELETE,
|
||||
root: '/files/test',
|
||||
})
|
||||
|
||||
@@ -421,7 +421,7 @@ describe('Delete action execute tests', () => {
|
||||
source: 'https://cloud.domain.com/remote.php/dav/files/test/qux.txt',
|
||||
owner: 'test',
|
||||
mime: 'text/plain',
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.WRITE | Permission.DELETE,
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.DELETE,
|
||||
root: '/files/test',
|
||||
})
|
||||
|
||||
@@ -430,7 +430,7 @@ describe('Delete action execute tests', () => {
|
||||
source: 'https://cloud.domain.com/remote.php/dav/files/test/quux.txt',
|
||||
owner: 'test',
|
||||
mime: 'text/plain',
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.WRITE | Permission.DELETE,
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.DELETE,
|
||||
root: '/files/test',
|
||||
})
|
||||
|
||||
@@ -482,7 +482,7 @@ describe('Delete action execute tests', () => {
|
||||
source: 'https://cloud.domain.com/remote.php/dav/files/test/foo.txt',
|
||||
owner: 'test',
|
||||
mime: 'text/plain',
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.WRITE | Permission.DELETE,
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.DELETE,
|
||||
root: '/files/test',
|
||||
})
|
||||
|
||||
@@ -491,7 +491,7 @@ describe('Delete action execute tests', () => {
|
||||
source: 'https://cloud.domain.com/remote.php/dav/files/test/bar.txt',
|
||||
owner: 'test',
|
||||
mime: 'text/plain',
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.WRITE | Permission.DELETE,
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.DELETE,
|
||||
root: '/files/test',
|
||||
})
|
||||
|
||||
@@ -529,7 +529,7 @@ describe('Delete action execute tests', () => {
|
||||
source: 'https://cloud.domain.com/remote.php/dav/files/test/foobar.txt',
|
||||
owner: 'test',
|
||||
mime: 'text/plain',
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.WRITE | Permission.DELETE,
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.DELETE,
|
||||
root: '/files/test',
|
||||
})
|
||||
|
||||
@@ -569,7 +569,7 @@ describe('Delete action execute tests', () => {
|
||||
source: 'https://cloud.domain.com/remote.php/dav/files/test/foo.txt',
|
||||
owner: 'test',
|
||||
mime: 'text/plain',
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.WRITE | Permission.DELETE,
|
||||
permissions: Permission.READ | Permission.UPDATE | Permission.DELETE,
|
||||
root: '/files/test',
|
||||
})
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ describe('Open locally action conditions tests', () => {
|
||||
})
|
||||
|
||||
describe('Open locally action enabled tests', () => {
|
||||
test('Enabled for file with WRITE permission', () => {
|
||||
test('Enabled for file with UPDATE permission', () => {
|
||||
const file = new File({
|
||||
id: 1,
|
||||
source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
|
||||
@@ -130,7 +130,7 @@ describe('Open locally action enabled tests', () => {
|
||||
})).toBe(false)
|
||||
})
|
||||
|
||||
test('Disabled without WRITE permissions', () => {
|
||||
test('Disabled without UPDATE permissions', () => {
|
||||
const file = new File({
|
||||
id: 1,
|
||||
source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
|
||||
|
||||
@@ -48,7 +48,7 @@ export function isSyncable(node: Node): boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
if ((node.permissions & Permission.WRITE) === 0) {
|
||||
if ((node.permissions & Permission.UPDATE) === 0) {
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
@@ -84,20 +84,15 @@ OC.L10N.register(
|
||||
"External storage support" : "Unterstützung für externen Speicher",
|
||||
"Adds basic external storage support" : "Fügt grundlegende Unterstützung für externen Speicher hinzu",
|
||||
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Diese Anwendung ermöglicht es der Administration, Verbindungen zu externen Speicheranbietern wie FTP-Servern, S3- oder SWIFT-Objektspeichern, anderen Nextcloud-Servern, WebDAV-Servern und weiteren zu konfigurieren. Die Administration kann auswählen, welche Arten von Speicherorten aktiviert werden sollen, und kann diese Speicherorte für ein Konto, eine Gruppe oder das gesamte System einbinden. Nutzende sehen einen neuen Ordner in ihrem Nextcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen und ihn verwenden können. Externer Speicher ermöglicht es Personen auch, Dateien, die in diesen externen Speicherorten gespeichert sind, freizugeben. In diesen Fällen werden die Anmeldeinformationen des Dateibesitzers verwendet, wenn der Empfänger die Datei aus dem externen Speicher anfordert, um sicherzustellen, dass der Empfänger auf die freigegebene Datei zugreifen kann.\n\nExterner Speicher kann über die grafische Benutzeroberfläche oder über die Befehlszeile konfiguriert werden. Diese zweite Option bietet der Administration mehr Flexibilität bei der Konfiguration von Massenspeicher-Einhängepunkten und der Festlegung von Einhängeprioritäten. Weitere Informationen findest du in der Dokumentation zur externen Speicher-GUI und der Dokumentation zur externen Speicher-Konfigurationsdatei.",
|
||||
"Edit storage" : "Speicher bearbeiten",
|
||||
"Add storage" : "Speicher hinzufügen",
|
||||
"Folder name" : "Ordnername",
|
||||
"Authentication" : "Authentifizierung",
|
||||
"Cancel" : "Abbrechen",
|
||||
"Edit" : "Bearbeiten",
|
||||
"Create" : "Erstellen",
|
||||
"Restrict to" : "Beschränken auf",
|
||||
"Storage configuration" : "Speicherkonfiguration",
|
||||
"Never" : "Nie",
|
||||
"Once every direct access" : "Einmal bei jedem Direktzugriff",
|
||||
"Always" : "Immer",
|
||||
"Mount options" : "Einhänge-Optionen",
|
||||
"Check filesystem changes" : "Dateisystemänderungen prüfen",
|
||||
"Read only" : "Schreibgeschützt",
|
||||
"Enable previews" : "Vorschau aktivieren",
|
||||
"Enable sharing" : "Teilen aktivieren",
|
||||
@@ -105,19 +100,11 @@ OC.L10N.register(
|
||||
"Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)",
|
||||
"External storages" : "Externe Speicher",
|
||||
"Status" : "Status",
|
||||
"Restricted to" : "Beschränkt auf",
|
||||
"Actions" : "Aktionen",
|
||||
"Checking …" : "Überprüfe …",
|
||||
"Recheck status" : "Erneute Statusüberprüfung",
|
||||
"Delete" : "Löschen",
|
||||
"System provided storage" : "Vom System bereitgestellter Speicher",
|
||||
"Saved" : "Gespeichert",
|
||||
"Error while saving" : "Fehler beim Speichern",
|
||||
"Saved allowed backends" : "Zugelassene Backends gespeichert",
|
||||
"Failed to save allowed backends" : "Zugelassene Backends konnten nicht gespeichert werden",
|
||||
"Advanced options for external storage mounts" : "Erweiterte Optionen für externen Speicher",
|
||||
"Allow people to mount external storage" : "Personen erlauben, externen Speicher einzubinden",
|
||||
"External storage backends people are allowed to mount" : "Externe Speicher-Backends dürfen von Benutzern eingehängt werden",
|
||||
"Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares",
|
||||
"Key size" : "Schlüsselgröße",
|
||||
"Generate keys" : "Schlüssel erzeugen",
|
||||
@@ -126,16 +113,6 @@ OC.L10N.register(
|
||||
"To access the storage, you need to provide the authentication credentials." : "Um auf den Speicher zuzugreifen, müssen die Authentifizierungsdaten angegeben werden.",
|
||||
"Enter the storage login" : "Speicher-Login eingeben",
|
||||
"Enter the storage password" : "Speicher-Passwort eingeben",
|
||||
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices." : "Externer Speicher ermöglicht es, externe Speicherdienste und -geräte als sekundären Nextcloud-Speicher zu einzuhängen.",
|
||||
"You may also allow people to mount their own external storage services." : "Es kann Benutzern auch erlaubt werden, ihre eigenen externen Speicherdienste einzuhängen.",
|
||||
"The cURL support in PHP is not enabled or installed." : "Die cURL-Unterstützung in PHP ist nicht aktiviert oder installiert.",
|
||||
"The FTP support in PHP is not enabled or installed." : "Die FTP-Unterstützung in PHP ist nicht aktiviert oder installiert.",
|
||||
"{module} is not installed." : "{module} ist nicht installiert.",
|
||||
"Dependant backends" : "Abhängige Backends",
|
||||
"No external storage configured or you do not have the permission to configure them" : "Kein externer Speicher eingerichtet oder du hast nicht die Berechtigung, ihn zu konfigurieren",
|
||||
"Add external storage" : "Externen Speicher hinzufügen",
|
||||
"Global credentials saved" : "Globale Anmeldeinformationen gespeichert",
|
||||
"Could not save global credentials" : "Globale Anmeldeinformationen konnten nicht gespeichert werden",
|
||||
"Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Authentifizierung bei mehreren externen Speichern verwendet werden, die dieselben Anmeldeinformationen haben.",
|
||||
"Saving …" : "Speichere …",
|
||||
"Save" : "Speichern",
|
||||
@@ -164,8 +141,6 @@ OC.L10N.register(
|
||||
"System" : "System",
|
||||
"Connected" : "Benötigt keine Übersetzung. Für Android wird nur die formelle Übersetzung verwendet (de_DE).",
|
||||
"Error" : "Fehler",
|
||||
"Indeterminate" : "Unbestimmt",
|
||||
"Incomplete configuration" : "Unvollständige Einrichtung",
|
||||
"Unauthorized" : "Nicht autorisiert",
|
||||
"Network error" : "Netzwerkfehler",
|
||||
"Grant access" : "Zugriff gewähren",
|
||||
|
||||
@@ -82,20 +82,15 @@
|
||||
"External storage support" : "Unterstützung für externen Speicher",
|
||||
"Adds basic external storage support" : "Fügt grundlegende Unterstützung für externen Speicher hinzu",
|
||||
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Diese Anwendung ermöglicht es der Administration, Verbindungen zu externen Speicheranbietern wie FTP-Servern, S3- oder SWIFT-Objektspeichern, anderen Nextcloud-Servern, WebDAV-Servern und weiteren zu konfigurieren. Die Administration kann auswählen, welche Arten von Speicherorten aktiviert werden sollen, und kann diese Speicherorte für ein Konto, eine Gruppe oder das gesamte System einbinden. Nutzende sehen einen neuen Ordner in ihrem Nextcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen und ihn verwenden können. Externer Speicher ermöglicht es Personen auch, Dateien, die in diesen externen Speicherorten gespeichert sind, freizugeben. In diesen Fällen werden die Anmeldeinformationen des Dateibesitzers verwendet, wenn der Empfänger die Datei aus dem externen Speicher anfordert, um sicherzustellen, dass der Empfänger auf die freigegebene Datei zugreifen kann.\n\nExterner Speicher kann über die grafische Benutzeroberfläche oder über die Befehlszeile konfiguriert werden. Diese zweite Option bietet der Administration mehr Flexibilität bei der Konfiguration von Massenspeicher-Einhängepunkten und der Festlegung von Einhängeprioritäten. Weitere Informationen findest du in der Dokumentation zur externen Speicher-GUI und der Dokumentation zur externen Speicher-Konfigurationsdatei.",
|
||||
"Edit storage" : "Speicher bearbeiten",
|
||||
"Add storage" : "Speicher hinzufügen",
|
||||
"Folder name" : "Ordnername",
|
||||
"Authentication" : "Authentifizierung",
|
||||
"Cancel" : "Abbrechen",
|
||||
"Edit" : "Bearbeiten",
|
||||
"Create" : "Erstellen",
|
||||
"Restrict to" : "Beschränken auf",
|
||||
"Storage configuration" : "Speicherkonfiguration",
|
||||
"Never" : "Nie",
|
||||
"Once every direct access" : "Einmal bei jedem Direktzugriff",
|
||||
"Always" : "Immer",
|
||||
"Mount options" : "Einhänge-Optionen",
|
||||
"Check filesystem changes" : "Dateisystemänderungen prüfen",
|
||||
"Read only" : "Schreibgeschützt",
|
||||
"Enable previews" : "Vorschau aktivieren",
|
||||
"Enable sharing" : "Teilen aktivieren",
|
||||
@@ -103,19 +98,11 @@
|
||||
"Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)",
|
||||
"External storages" : "Externe Speicher",
|
||||
"Status" : "Status",
|
||||
"Restricted to" : "Beschränkt auf",
|
||||
"Actions" : "Aktionen",
|
||||
"Checking …" : "Überprüfe …",
|
||||
"Recheck status" : "Erneute Statusüberprüfung",
|
||||
"Delete" : "Löschen",
|
||||
"System provided storage" : "Vom System bereitgestellter Speicher",
|
||||
"Saved" : "Gespeichert",
|
||||
"Error while saving" : "Fehler beim Speichern",
|
||||
"Saved allowed backends" : "Zugelassene Backends gespeichert",
|
||||
"Failed to save allowed backends" : "Zugelassene Backends konnten nicht gespeichert werden",
|
||||
"Advanced options for external storage mounts" : "Erweiterte Optionen für externen Speicher",
|
||||
"Allow people to mount external storage" : "Personen erlauben, externen Speicher einzubinden",
|
||||
"External storage backends people are allowed to mount" : "Externe Speicher-Backends dürfen von Benutzern eingehängt werden",
|
||||
"Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares",
|
||||
"Key size" : "Schlüsselgröße",
|
||||
"Generate keys" : "Schlüssel erzeugen",
|
||||
@@ -124,16 +111,6 @@
|
||||
"To access the storage, you need to provide the authentication credentials." : "Um auf den Speicher zuzugreifen, müssen die Authentifizierungsdaten angegeben werden.",
|
||||
"Enter the storage login" : "Speicher-Login eingeben",
|
||||
"Enter the storage password" : "Speicher-Passwort eingeben",
|
||||
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices." : "Externer Speicher ermöglicht es, externe Speicherdienste und -geräte als sekundären Nextcloud-Speicher zu einzuhängen.",
|
||||
"You may also allow people to mount their own external storage services." : "Es kann Benutzern auch erlaubt werden, ihre eigenen externen Speicherdienste einzuhängen.",
|
||||
"The cURL support in PHP is not enabled or installed." : "Die cURL-Unterstützung in PHP ist nicht aktiviert oder installiert.",
|
||||
"The FTP support in PHP is not enabled or installed." : "Die FTP-Unterstützung in PHP ist nicht aktiviert oder installiert.",
|
||||
"{module} is not installed." : "{module} ist nicht installiert.",
|
||||
"Dependant backends" : "Abhängige Backends",
|
||||
"No external storage configured or you do not have the permission to configure them" : "Kein externer Speicher eingerichtet oder du hast nicht die Berechtigung, ihn zu konfigurieren",
|
||||
"Add external storage" : "Externen Speicher hinzufügen",
|
||||
"Global credentials saved" : "Globale Anmeldeinformationen gespeichert",
|
||||
"Could not save global credentials" : "Globale Anmeldeinformationen konnten nicht gespeichert werden",
|
||||
"Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Authentifizierung bei mehreren externen Speichern verwendet werden, die dieselben Anmeldeinformationen haben.",
|
||||
"Saving …" : "Speichere …",
|
||||
"Save" : "Speichern",
|
||||
@@ -162,8 +139,6 @@
|
||||
"System" : "System",
|
||||
"Connected" : "Benötigt keine Übersetzung. Für Android wird nur die formelle Übersetzung verwendet (de_DE).",
|
||||
"Error" : "Fehler",
|
||||
"Indeterminate" : "Unbestimmt",
|
||||
"Incomplete configuration" : "Unvollständige Einrichtung",
|
||||
"Unauthorized" : "Nicht autorisiert",
|
||||
"Network error" : "Netzwerkfehler",
|
||||
"Grant access" : "Zugriff gewähren",
|
||||
|
||||
@@ -84,20 +84,15 @@ OC.L10N.register(
|
||||
"External storage support" : "Unterstützung für externen Speicher",
|
||||
"Adds basic external storage support" : "Fügt grundlegende Unterstützung für externen Speicher hinzu",
|
||||
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Diese Anwendung ermöglicht es der Administration, Verbindungen zu externen Speicheranbietern wie FTP-Servern, S3- oder SWIFT-Objektspeichern, anderen Nextcloud-Servern, WebDAV-Servern und weiteren zu konfigurieren. Die Administration kann auswählen, welche Arten von Speicherorten aktiviert werden sollen, und kann diese Speicherorte für ein Konto, eine Gruppe oder das gesamte System einbinden. Benutzer sehen einen neuen Ordner in ihrem Nextcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen und ihn verwenden können. Externer Speicher ermöglicht es Personen auch, Dateien, die in diesen externen Speicherorten gespeichert sind, freizugeben. In diesen Fällen werden die Anmeldeinformationen des Dateibesitzers verwendet, wenn der Empfänger die Datei aus dem externen Speicher anfordert, um sicherzustellen, dass der Empfänger auf die freigegebene Datei zugreifen kann.\n\nExterner Speicher kann über die grafische Benutzeroberfläche oder über die Befehlszeile konfiguriert werden. Diese zweite Option bietet der Administration mehr Flexibilität bei der Konfiguration von Massenspeicher-Einhängepunkten und der Festlegung von Einhängeprioritäten. Weitere Informationen finden Sie in der Dokumentation zur externen Speicher-GUI und der Dokumentation zur externen Speicher-Konfigurationsdatei.",
|
||||
"Edit storage" : "Speicher bearbeiten",
|
||||
"Add storage" : "Speicher hinzufügen",
|
||||
"Folder name" : "Ordnername",
|
||||
"Authentication" : "Authentifizierung",
|
||||
"Cancel" : "Abbrechen",
|
||||
"Edit" : "Bearbeiten",
|
||||
"Create" : "Erstellen",
|
||||
"Restrict to" : "Beschränken auf",
|
||||
"Storage configuration" : "Speicherkonfiguration",
|
||||
"Never" : "Nie",
|
||||
"Once every direct access" : "Einmal bei jedem Direktzugriff",
|
||||
"Always" : "Immer",
|
||||
"Mount options" : "Einhänge-Optionen",
|
||||
"Check filesystem changes" : "Dateisystemänderungen prüfen",
|
||||
"Read only" : "Schreibgeschützt",
|
||||
"Enable previews" : "Vorschau aktivieren",
|
||||
"Enable sharing" : "Teilen aktivieren",
|
||||
@@ -105,19 +100,11 @@ OC.L10N.register(
|
||||
"Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)",
|
||||
"External storages" : "Externe Speicher",
|
||||
"Status" : "Status",
|
||||
"Restricted to" : "Beschränkt auf",
|
||||
"Actions" : "Aktionen",
|
||||
"Checking …" : "Überprüfe …",
|
||||
"Recheck status" : "Erneute Statusüberprüfung",
|
||||
"Delete" : "Löschen",
|
||||
"System provided storage" : "Vom System bereitgestellter Speicher",
|
||||
"Saved" : "Gespeichert",
|
||||
"Error while saving" : "Fehler beim Speichern",
|
||||
"Saved allowed backends" : "Zugelassene Backends gespeichert",
|
||||
"Failed to save allowed backends" : "Zugelassene Backends konnten nicht gespeichert werden",
|
||||
"Advanced options for external storage mounts" : "Erweiterte Optionen für externen Speicher",
|
||||
"Allow people to mount external storage" : "Personen erlauben, externen Speicher einzubinden",
|
||||
"External storage backends people are allowed to mount" : "Externe Speicher-Backends dürfen von Benutzern eingehängt werden",
|
||||
"Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares",
|
||||
"Key size" : "Schlüsselgröße",
|
||||
"Generate keys" : "Schlüssel erzeugen",
|
||||
@@ -126,16 +113,6 @@ OC.L10N.register(
|
||||
"To access the storage, you need to provide the authentication credentials." : "Um auf den Speicher zuzugreifen, müssen Sie die Authentifizierungsdaten angeben.",
|
||||
"Enter the storage login" : "Speicher-Login eingeben",
|
||||
"Enter the storage password" : "Speicher-Passwort eingeben",
|
||||
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices." : "Externer Speicher ermöglicht es, externe Speicherdienste und -geräte als sekundären Nextcloud-Speicher zu einzuhängen.",
|
||||
"You may also allow people to mount their own external storage services." : "Es kann Benutzern auch erlaubt werden, ihre eigenen externen Speicherdienste zu installieren.",
|
||||
"The cURL support in PHP is not enabled or installed." : "Die cURL-Unterstützung in PHP ist nicht aktiviert oder installiert.",
|
||||
"The FTP support in PHP is not enabled or installed." : "Die FTP-Unterstützung in PHP ist nicht aktiviert oder installiert.",
|
||||
"{module} is not installed." : "{module} ist nicht installiert.",
|
||||
"Dependant backends" : "Abhängige Backends",
|
||||
"No external storage configured or you do not have the permission to configure them" : "Kein externer Speicher eingerichtet oder Sie haben nicht die Berechtigung, ihn zu konfigurieren",
|
||||
"Add external storage" : "Externen Speicher hinzufügen",
|
||||
"Global credentials saved" : "Globale Anmeldeinformationen gespeichert",
|
||||
"Could not save global credentials" : "Globale Anmeldeinformationen konnten nicht gespeichert werden",
|
||||
"Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Authentifizierung bei mehreren externen Speichern verwendet werden, die dieselben Anmeldeinformationen haben.",
|
||||
"Saving …" : "Speichere …",
|
||||
"Save" : "Speichern",
|
||||
@@ -151,7 +128,6 @@ OC.L10N.register(
|
||||
"Open in Files" : "In Dateien öffnen",
|
||||
"External mount error" : "Fehler beim Einbinden des externen Speichers",
|
||||
"There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Bei diesem externen Speicher ist ein Fehler aufgetreten. Möchten Sie die Mount-Punkt-Konfiguration auf der Einstellungsseite überprüfen?",
|
||||
"Open settings" : "Einstellungen öffnen",
|
||||
"Ignore" : "Ignorieren",
|
||||
"List of external storage." : "Liste der externen Speicher.",
|
||||
"There is no external storage configured. You can configure them in your Personal settings." : "Es ist kein externer Speicher eingerichtet. Sie können diese in Ihren persönlichen Einstellungen konfigurieren.",
|
||||
@@ -164,8 +140,6 @@ OC.L10N.register(
|
||||
"System" : "System",
|
||||
"Connected" : "Verbunden",
|
||||
"Error" : "Fehler",
|
||||
"Indeterminate" : "Unbestimmt",
|
||||
"Incomplete configuration" : "Unvollständige Einrichtung",
|
||||
"Unauthorized" : "Nicht autorisiert",
|
||||
"Network error" : "Netzwerkfehler",
|
||||
"Grant access" : "Zugriff gestatten",
|
||||
|
||||
@@ -82,20 +82,15 @@
|
||||
"External storage support" : "Unterstützung für externen Speicher",
|
||||
"Adds basic external storage support" : "Fügt grundlegende Unterstützung für externen Speicher hinzu",
|
||||
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Diese Anwendung ermöglicht es der Administration, Verbindungen zu externen Speicheranbietern wie FTP-Servern, S3- oder SWIFT-Objektspeichern, anderen Nextcloud-Servern, WebDAV-Servern und weiteren zu konfigurieren. Die Administration kann auswählen, welche Arten von Speicherorten aktiviert werden sollen, und kann diese Speicherorte für ein Konto, eine Gruppe oder das gesamte System einbinden. Benutzer sehen einen neuen Ordner in ihrem Nextcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen und ihn verwenden können. Externer Speicher ermöglicht es Personen auch, Dateien, die in diesen externen Speicherorten gespeichert sind, freizugeben. In diesen Fällen werden die Anmeldeinformationen des Dateibesitzers verwendet, wenn der Empfänger die Datei aus dem externen Speicher anfordert, um sicherzustellen, dass der Empfänger auf die freigegebene Datei zugreifen kann.\n\nExterner Speicher kann über die grafische Benutzeroberfläche oder über die Befehlszeile konfiguriert werden. Diese zweite Option bietet der Administration mehr Flexibilität bei der Konfiguration von Massenspeicher-Einhängepunkten und der Festlegung von Einhängeprioritäten. Weitere Informationen finden Sie in der Dokumentation zur externen Speicher-GUI und der Dokumentation zur externen Speicher-Konfigurationsdatei.",
|
||||
"Edit storage" : "Speicher bearbeiten",
|
||||
"Add storage" : "Speicher hinzufügen",
|
||||
"Folder name" : "Ordnername",
|
||||
"Authentication" : "Authentifizierung",
|
||||
"Cancel" : "Abbrechen",
|
||||
"Edit" : "Bearbeiten",
|
||||
"Create" : "Erstellen",
|
||||
"Restrict to" : "Beschränken auf",
|
||||
"Storage configuration" : "Speicherkonfiguration",
|
||||
"Never" : "Nie",
|
||||
"Once every direct access" : "Einmal bei jedem Direktzugriff",
|
||||
"Always" : "Immer",
|
||||
"Mount options" : "Einhänge-Optionen",
|
||||
"Check filesystem changes" : "Dateisystemänderungen prüfen",
|
||||
"Read only" : "Schreibgeschützt",
|
||||
"Enable previews" : "Vorschau aktivieren",
|
||||
"Enable sharing" : "Teilen aktivieren",
|
||||
@@ -103,19 +98,11 @@
|
||||
"Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)",
|
||||
"External storages" : "Externe Speicher",
|
||||
"Status" : "Status",
|
||||
"Restricted to" : "Beschränkt auf",
|
||||
"Actions" : "Aktionen",
|
||||
"Checking …" : "Überprüfe …",
|
||||
"Recheck status" : "Erneute Statusüberprüfung",
|
||||
"Delete" : "Löschen",
|
||||
"System provided storage" : "Vom System bereitgestellter Speicher",
|
||||
"Saved" : "Gespeichert",
|
||||
"Error while saving" : "Fehler beim Speichern",
|
||||
"Saved allowed backends" : "Zugelassene Backends gespeichert",
|
||||
"Failed to save allowed backends" : "Zugelassene Backends konnten nicht gespeichert werden",
|
||||
"Advanced options for external storage mounts" : "Erweiterte Optionen für externen Speicher",
|
||||
"Allow people to mount external storage" : "Personen erlauben, externen Speicher einzubinden",
|
||||
"External storage backends people are allowed to mount" : "Externe Speicher-Backends dürfen von Benutzern eingehängt werden",
|
||||
"Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares",
|
||||
"Key size" : "Schlüsselgröße",
|
||||
"Generate keys" : "Schlüssel erzeugen",
|
||||
@@ -124,16 +111,6 @@
|
||||
"To access the storage, you need to provide the authentication credentials." : "Um auf den Speicher zuzugreifen, müssen Sie die Authentifizierungsdaten angeben.",
|
||||
"Enter the storage login" : "Speicher-Login eingeben",
|
||||
"Enter the storage password" : "Speicher-Passwort eingeben",
|
||||
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices." : "Externer Speicher ermöglicht es, externe Speicherdienste und -geräte als sekundären Nextcloud-Speicher zu einzuhängen.",
|
||||
"You may also allow people to mount their own external storage services." : "Es kann Benutzern auch erlaubt werden, ihre eigenen externen Speicherdienste zu installieren.",
|
||||
"The cURL support in PHP is not enabled or installed." : "Die cURL-Unterstützung in PHP ist nicht aktiviert oder installiert.",
|
||||
"The FTP support in PHP is not enabled or installed." : "Die FTP-Unterstützung in PHP ist nicht aktiviert oder installiert.",
|
||||
"{module} is not installed." : "{module} ist nicht installiert.",
|
||||
"Dependant backends" : "Abhängige Backends",
|
||||
"No external storage configured or you do not have the permission to configure them" : "Kein externer Speicher eingerichtet oder Sie haben nicht die Berechtigung, ihn zu konfigurieren",
|
||||
"Add external storage" : "Externen Speicher hinzufügen",
|
||||
"Global credentials saved" : "Globale Anmeldeinformationen gespeichert",
|
||||
"Could not save global credentials" : "Globale Anmeldeinformationen konnten nicht gespeichert werden",
|
||||
"Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Authentifizierung bei mehreren externen Speichern verwendet werden, die dieselben Anmeldeinformationen haben.",
|
||||
"Saving …" : "Speichere …",
|
||||
"Save" : "Speichern",
|
||||
@@ -149,7 +126,6 @@
|
||||
"Open in Files" : "In Dateien öffnen",
|
||||
"External mount error" : "Fehler beim Einbinden des externen Speichers",
|
||||
"There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Bei diesem externen Speicher ist ein Fehler aufgetreten. Möchten Sie die Mount-Punkt-Konfiguration auf der Einstellungsseite überprüfen?",
|
||||
"Open settings" : "Einstellungen öffnen",
|
||||
"Ignore" : "Ignorieren",
|
||||
"List of external storage." : "Liste der externen Speicher.",
|
||||
"There is no external storage configured. You can configure them in your Personal settings." : "Es ist kein externer Speicher eingerichtet. Sie können diese in Ihren persönlichen Einstellungen konfigurieren.",
|
||||
@@ -162,8 +138,6 @@
|
||||
"System" : "System",
|
||||
"Connected" : "Verbunden",
|
||||
"Error" : "Fehler",
|
||||
"Indeterminate" : "Unbestimmt",
|
||||
"Incomplete configuration" : "Unvollständige Einrichtung",
|
||||
"Unauthorized" : "Nicht autorisiert",
|
||||
"Network error" : "Netzwerkfehler",
|
||||
"Grant access" : "Zugriff gestatten",
|
||||
|
||||
@@ -83,20 +83,15 @@ OC.L10N.register(
|
||||
"External storage" : "Väline andmehoidla",
|
||||
"External storage support" : "Väliste andmehoidlate tugi",
|
||||
"Adds basic external storage support" : "Lisab väliste andmehoidlate toe põhivariandi",
|
||||
"Edit storage" : "Muuda andmeruumi",
|
||||
"Add storage" : "Lisa andmehoidla",
|
||||
"Folder name" : "Kausta nimi",
|
||||
"Authentication" : "Autentimine",
|
||||
"Cancel" : "Katkesta",
|
||||
"Edit" : "Muuda",
|
||||
"Create" : "Lisa",
|
||||
"Restrict to" : "Seadista piiranguks",
|
||||
"Storage configuration" : "Andmeruumi seadistus",
|
||||
"Never" : "Mitte kunagi",
|
||||
"Once every direct access" : "Kord iga otsese pöördumise korral",
|
||||
"Always" : "Alati",
|
||||
"Mount options" : "Haakimise valikud",
|
||||
"Check filesystem changes" : "Kontrolli muudatusi failisüsteemis",
|
||||
"Read only" : "kirjutuskaitstud",
|
||||
"Enable previews" : "Luba eelvaated",
|
||||
"Enable sharing" : "Luba jagamine",
|
||||
@@ -104,19 +99,11 @@ OC.L10N.register(
|
||||
"Compatibility with Mac NFD encoding (slow)" : "Ühilduvus Mac NFD kodeeringuga (aeglane)",
|
||||
"External storages" : "Välised andmehoidlad",
|
||||
"Status" : "Olek",
|
||||
"Restricted to" : "Piirangus on määratud",
|
||||
"Actions" : "Tegevused",
|
||||
"Checking …" : "Kontrollin…",
|
||||
"Recheck status" : "Kontrolli olekut uuesti",
|
||||
"Delete" : "Kustuta",
|
||||
"System provided storage" : "Süsteemi tagatud andmeruum",
|
||||
"Saved" : "Salvestatud",
|
||||
"Error while saving" : "Viga salvestamisel",
|
||||
"Saved allowed backends" : "Lubatud taustateenused on salvestatud",
|
||||
"Failed to save allowed backends" : "Lubatud taustateenuste salvestamine ei õnnestunud",
|
||||
"Advanced options for external storage mounts" : "Väliste andmeruumide haakimise täiendava seadistamise valikud",
|
||||
"Allow people to mount external storage" : "Luba kõigil haakida välist andmeruumi",
|
||||
"External storage backends people are allowed to mount" : "Väliste andmeruumide taustateenused, mida kasutajad võivad haakida",
|
||||
"Error generating key pair" : "Viga võtmepaari loomisel",
|
||||
"Key size" : "Võtme pikkus",
|
||||
"Generate keys" : "Loo võtmed",
|
||||
@@ -125,17 +112,6 @@ OC.L10N.register(
|
||||
"To access the storage, you need to provide the authentication credentials." : "Selle andmeruumi jaoks pead autentimiseks lisama kasutajanime ja salasõna.",
|
||||
"Enter the storage login" : "Sisesta andmeruumi kasutajatunnus",
|
||||
"Enter the storage password" : "Sisesta andmeruumi kasutaja salasõna",
|
||||
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices." : "Väline andmeruum võimaldab sul haakida väliseid andmekandjaid, -teenuseid ja seadmeid Nextcloudi teiese andmeruumina.",
|
||||
"You may also allow people to mount their own external storage services." : "Sa võid lubada kõigil kasutajatel haakida nende endi määratud välist andmeruumi või vastavaid teenuseid.",
|
||||
"The cURL support in PHP is not enabled or installed." : "cURL-i tugi pole PHP-s kasutusel või paigaldatud.",
|
||||
"The FTP support in PHP is not enabled or installed." : "FTP tugi pole PHP-s kasutusel või paigaldatud.",
|
||||
"{module} is not installed." : "{module} pole paigaldatud",
|
||||
"Dependant backends" : "Sõltuvad taustateenused",
|
||||
"No external storage configured or you do not have the permission to configure them" : "Ühtegi välist andmeruumi pole seadistatud või sul pole õigust seda teha",
|
||||
"Add external storage" : "Lisa väline andmeruum",
|
||||
"Global credentials saved" : "Üldine kasutajanimi/salasõna on salvestatud",
|
||||
"Could not save global credentials" : "Üldise kasutajanime/salasõna salvestamine ei õnnestunud",
|
||||
"Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Üldine kasutajanimi/salasõna on kasutatavad, kui mitu välist andmeruumi teenust pruugivad sama autentimist.",
|
||||
"Saving …" : "Salvestan…",
|
||||
"Save" : "Salvesta",
|
||||
"Unable to update this external storage config. {statusMessage}" : "Selle välise andmeruumi seadistusi pole võimalik uuendada. {statusMessage}",
|
||||
@@ -151,7 +127,7 @@ OC.L10N.register(
|
||||
"External mount error" : "Viga välise andmeruumi haakimisel",
|
||||
"There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Selle välise andmeruumiga tekkis viga. Kas sa tahaksid seadistustest kontrollida haakepunkti konfiguratsiooni?",
|
||||
"Open settings" : "Ava seadistused",
|
||||
"Ignore" : "Eira",
|
||||
"Ignore" : "Ignoreeri",
|
||||
"List of external storage." : "Väliste andmeruumide loend.",
|
||||
"There is no external storage configured. You can configure them in your Personal settings." : "Ühtegi välist andmeruumi pole seadistatud. Saad seda teha isiklikest seadistustest.",
|
||||
"There is no external storage configured and you don't have the permission to configure them." : "Ühtegi välist andmeruumi pole seadistatud ja sul pole õigust seda teha.",
|
||||
@@ -161,10 +137,7 @@ OC.L10N.register(
|
||||
"Scope" : "Skoop",
|
||||
"Personal" : "Isiklik",
|
||||
"System" : "Süsteem",
|
||||
"Connected" : "Ühendatud",
|
||||
"Error" : "Viga",
|
||||
"Indeterminate" : "Ebamäärane",
|
||||
"Incomplete configuration" : "Poolik seadistus",
|
||||
"Unauthorized" : "Autentimata",
|
||||
"Network error" : "Võrguühenduse viga:",
|
||||
"Grant access" : "Anna ligipääs",
|
||||
|
||||
@@ -81,20 +81,15 @@
|
||||
"External storage" : "Väline andmehoidla",
|
||||
"External storage support" : "Väliste andmehoidlate tugi",
|
||||
"Adds basic external storage support" : "Lisab väliste andmehoidlate toe põhivariandi",
|
||||
"Edit storage" : "Muuda andmeruumi",
|
||||
"Add storage" : "Lisa andmehoidla",
|
||||
"Folder name" : "Kausta nimi",
|
||||
"Authentication" : "Autentimine",
|
||||
"Cancel" : "Katkesta",
|
||||
"Edit" : "Muuda",
|
||||
"Create" : "Lisa",
|
||||
"Restrict to" : "Seadista piiranguks",
|
||||
"Storage configuration" : "Andmeruumi seadistus",
|
||||
"Never" : "Mitte kunagi",
|
||||
"Once every direct access" : "Kord iga otsese pöördumise korral",
|
||||
"Always" : "Alati",
|
||||
"Mount options" : "Haakimise valikud",
|
||||
"Check filesystem changes" : "Kontrolli muudatusi failisüsteemis",
|
||||
"Read only" : "kirjutuskaitstud",
|
||||
"Enable previews" : "Luba eelvaated",
|
||||
"Enable sharing" : "Luba jagamine",
|
||||
@@ -102,19 +97,11 @@
|
||||
"Compatibility with Mac NFD encoding (slow)" : "Ühilduvus Mac NFD kodeeringuga (aeglane)",
|
||||
"External storages" : "Välised andmehoidlad",
|
||||
"Status" : "Olek",
|
||||
"Restricted to" : "Piirangus on määratud",
|
||||
"Actions" : "Tegevused",
|
||||
"Checking …" : "Kontrollin…",
|
||||
"Recheck status" : "Kontrolli olekut uuesti",
|
||||
"Delete" : "Kustuta",
|
||||
"System provided storage" : "Süsteemi tagatud andmeruum",
|
||||
"Saved" : "Salvestatud",
|
||||
"Error while saving" : "Viga salvestamisel",
|
||||
"Saved allowed backends" : "Lubatud taustateenused on salvestatud",
|
||||
"Failed to save allowed backends" : "Lubatud taustateenuste salvestamine ei õnnestunud",
|
||||
"Advanced options for external storage mounts" : "Väliste andmeruumide haakimise täiendava seadistamise valikud",
|
||||
"Allow people to mount external storage" : "Luba kõigil haakida välist andmeruumi",
|
||||
"External storage backends people are allowed to mount" : "Väliste andmeruumide taustateenused, mida kasutajad võivad haakida",
|
||||
"Error generating key pair" : "Viga võtmepaari loomisel",
|
||||
"Key size" : "Võtme pikkus",
|
||||
"Generate keys" : "Loo võtmed",
|
||||
@@ -123,17 +110,6 @@
|
||||
"To access the storage, you need to provide the authentication credentials." : "Selle andmeruumi jaoks pead autentimiseks lisama kasutajanime ja salasõna.",
|
||||
"Enter the storage login" : "Sisesta andmeruumi kasutajatunnus",
|
||||
"Enter the storage password" : "Sisesta andmeruumi kasutaja salasõna",
|
||||
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices." : "Väline andmeruum võimaldab sul haakida väliseid andmekandjaid, -teenuseid ja seadmeid Nextcloudi teiese andmeruumina.",
|
||||
"You may also allow people to mount their own external storage services." : "Sa võid lubada kõigil kasutajatel haakida nende endi määratud välist andmeruumi või vastavaid teenuseid.",
|
||||
"The cURL support in PHP is not enabled or installed." : "cURL-i tugi pole PHP-s kasutusel või paigaldatud.",
|
||||
"The FTP support in PHP is not enabled or installed." : "FTP tugi pole PHP-s kasutusel või paigaldatud.",
|
||||
"{module} is not installed." : "{module} pole paigaldatud",
|
||||
"Dependant backends" : "Sõltuvad taustateenused",
|
||||
"No external storage configured or you do not have the permission to configure them" : "Ühtegi välist andmeruumi pole seadistatud või sul pole õigust seda teha",
|
||||
"Add external storage" : "Lisa väline andmeruum",
|
||||
"Global credentials saved" : "Üldine kasutajanimi/salasõna on salvestatud",
|
||||
"Could not save global credentials" : "Üldise kasutajanime/salasõna salvestamine ei õnnestunud",
|
||||
"Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Üldine kasutajanimi/salasõna on kasutatavad, kui mitu välist andmeruumi teenust pruugivad sama autentimist.",
|
||||
"Saving …" : "Salvestan…",
|
||||
"Save" : "Salvesta",
|
||||
"Unable to update this external storage config. {statusMessage}" : "Selle välise andmeruumi seadistusi pole võimalik uuendada. {statusMessage}",
|
||||
@@ -149,7 +125,7 @@
|
||||
"External mount error" : "Viga välise andmeruumi haakimisel",
|
||||
"There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Selle välise andmeruumiga tekkis viga. Kas sa tahaksid seadistustest kontrollida haakepunkti konfiguratsiooni?",
|
||||
"Open settings" : "Ava seadistused",
|
||||
"Ignore" : "Eira",
|
||||
"Ignore" : "Ignoreeri",
|
||||
"List of external storage." : "Väliste andmeruumide loend.",
|
||||
"There is no external storage configured. You can configure them in your Personal settings." : "Ühtegi välist andmeruumi pole seadistatud. Saad seda teha isiklikest seadistustest.",
|
||||
"There is no external storage configured and you don't have the permission to configure them." : "Ühtegi välist andmeruumi pole seadistatud ja sul pole õigust seda teha.",
|
||||
@@ -159,10 +135,7 @@
|
||||
"Scope" : "Skoop",
|
||||
"Personal" : "Isiklik",
|
||||
"System" : "Süsteem",
|
||||
"Connected" : "Ühendatud",
|
||||
"Error" : "Viga",
|
||||
"Indeterminate" : "Ebamäärane",
|
||||
"Incomplete configuration" : "Poolik seadistus",
|
||||
"Unauthorized" : "Autentimata",
|
||||
"Network error" : "Võrguühenduse viga:",
|
||||
"Grant access" : "Anna ligipääs",
|
||||
|
||||
@@ -84,20 +84,15 @@ OC.L10N.register(
|
||||
"External storage support" : "Compatibilidade de almacenamento externo",
|
||||
"Adds basic external storage support" : "Engade compatibilidade básica de almacenamento externo",
|
||||
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permítelle á administración da instancia configurar conexións a provedores externos de almacenamento, como servidores FTP, almacenamento de obxectos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e máis. A administración da instancia pode escoller que tipos de almacenamento activar e pode montar estas localizacións de almacenamento para unha conta, un grupo ou o todo o sistema. Os usuarios verán aparecer un novo cartafol no seu directorio raíz de Nextcloud, ao que poden acceder e que poden usar como calquera outro cartafol de Nextcloud. Almacenamento externo tamén lle permite á xente compartir os ficheiros almacenados nestas localizacións externas. Nestes casos, úsanse as credenciais para o propietario dos ficheiros cando o receptor solicita o ficheiro do almacenamento externo, asegurando así que o receptor poida acceder ao ficheiro compartido.\n\nAlmacenamento externo pódese configurar usando a GUI ou coa liña de ordes. A segunda opción fornece ao usuario avanzado máis flexibilidade para configurar montaxes de almacenamento externo en bloque e para configurar prioridades de montaxe. Ten dispoñíbel máis información na documentación da GUI do almacenamento externo e na documentación do ficheiro de configuración do almacenamento externo.",
|
||||
"Edit storage" : "Editar o almacenamento",
|
||||
"Add storage" : "Engadir almacenamento",
|
||||
"Folder name" : "Nome do cartafol",
|
||||
"Authentication" : "Autenticación",
|
||||
"Cancel" : "Cancelar",
|
||||
"Edit" : "Editar",
|
||||
"Create" : "Crear",
|
||||
"Restrict to" : "Restrinxir a",
|
||||
"Storage configuration" : "Configuración do almacenamento",
|
||||
"Never" : "Nunca",
|
||||
"Once every direct access" : "Unha vez cada acceso directo",
|
||||
"Always" : "Sempre",
|
||||
"Mount options" : "Opcións de montaxe",
|
||||
"Check filesystem changes" : "Comprobar os cambios no sistema de ficheiros",
|
||||
"Read only" : "Só lectura",
|
||||
"Enable previews" : "Activar as vistas previas",
|
||||
"Enable sharing" : "Activar as comparticións",
|
||||
@@ -105,19 +100,11 @@ OC.L10N.register(
|
||||
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidade coa codificación Mac MFD (lenta)",
|
||||
"External storages" : "Almacenamentos externos",
|
||||
"Status" : "Estado",
|
||||
"Restricted to" : "Restrinxido a",
|
||||
"Actions" : "Accións",
|
||||
"Checking …" : "Comprobando…",
|
||||
"Recheck status" : "Volver comprobar o estado",
|
||||
"Delete" : "Eliminar",
|
||||
"System provided storage" : "Almacenamento fornecido polo sistema",
|
||||
"Saved" : "Gardado",
|
||||
"Error while saving" : "Produciuse un erro ao gardar",
|
||||
"Saved allowed backends" : "Gardar as infraestruturas permitidas",
|
||||
"Failed to save allowed backends" : "Produciuse un fallo ao gardar as infraestruturas permitidas",
|
||||
"Advanced options for external storage mounts" : "Opcións avanzadas para montaxes de almacenamento externo",
|
||||
"Allow people to mount external storage" : "Permitirlle á xente montar almacenamento externo",
|
||||
"External storage backends people are allowed to mount" : "Infraestruturas de almacenamento externo que a xente pode montar",
|
||||
"Error generating key pair" : "Produciuse un erro ao xerar o par de chaves",
|
||||
"Key size" : "Tamaño da chave",
|
||||
"Generate keys" : "Xerar chaves",
|
||||
@@ -126,16 +113,6 @@ OC.L10N.register(
|
||||
"To access the storage, you need to provide the authentication credentials." : "Para acceder ao almacenamento, cómpre fornecer as credenciais de autenticación.",
|
||||
"Enter the storage login" : "Introduza o acceso ao almacenamento",
|
||||
"Enter the storage password" : "Introduza o contrasinal do almacenamento",
|
||||
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices." : "A aplicación Almacenamento externo permítelle montar servizos e dispositivos de almacenamento externo como dispositivos de almacenamento secundarios de Nextcloud.",
|
||||
"You may also allow people to mount their own external storage services." : "Tamén pode permitirlle que a xente monte os seus propios servizos de almacenamento externo.",
|
||||
"The cURL support in PHP is not enabled or installed." : "A compatibilidade de cURL en PHP non está activada ou instalada.",
|
||||
"The FTP support in PHP is not enabled or installed." : "A compatibilidade de FTP en PHP non está activada ou instalada.",
|
||||
"{module} is not installed." : "{module} non está instalado.",
|
||||
"Dependant backends" : "Infraestruturas dependentes",
|
||||
"No external storage configured or you do not have the permission to configure them" : "Non hai ningún almacenamento externo configurado ou Vde. non ten permiso para configuralos",
|
||||
"Add external storage" : "Engadir almacenamento externo",
|
||||
"Global credentials saved" : "Gardáronse as credenciais globais",
|
||||
"Could not save global credentials" : "Non foi posíbel gardar as credenciais globais",
|
||||
"Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Poden empregarse credenciais globais para autenticar con múltiples almacenamentos externos que teñan as mesmas credenciais.",
|
||||
"Saving …" : "Gardando…",
|
||||
"Save" : "Gardar",
|
||||
@@ -151,7 +128,6 @@ OC.L10N.register(
|
||||
"Open in Files" : "Abrir en Ficheiros",
|
||||
"External mount error" : "Produciuse un erro de montaxe externo",
|
||||
"There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Produciuse un erro con este almacenamento externo. Quere revisar esta configuración do punto de montaxe na páxina de axustes?",
|
||||
"Open settings" : "Abrir os axustes",
|
||||
"Ignore" : "Ignorar",
|
||||
"List of external storage." : "Lista de almacenamento externo.",
|
||||
"There is no external storage configured. You can configure them in your Personal settings." : "Non hai ningún almacenamento externo configurado. Pode configuralos nos seus axustes persoais.",
|
||||
@@ -164,8 +140,6 @@ OC.L10N.register(
|
||||
"System" : "Sistema",
|
||||
"Connected" : "Conectado",
|
||||
"Error" : "Erro",
|
||||
"Indeterminate" : "Indeterminado",
|
||||
"Incomplete configuration" : "Configuración incompleta",
|
||||
"Unauthorized" : "Non autorizado.",
|
||||
"Network error" : "Produciuse un erro na rede",
|
||||
"Grant access" : "Permitir o acceso",
|
||||
|
||||
@@ -82,20 +82,15 @@
|
||||
"External storage support" : "Compatibilidade de almacenamento externo",
|
||||
"Adds basic external storage support" : "Engade compatibilidade básica de almacenamento externo",
|
||||
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permítelle á administración da instancia configurar conexións a provedores externos de almacenamento, como servidores FTP, almacenamento de obxectos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e máis. A administración da instancia pode escoller que tipos de almacenamento activar e pode montar estas localizacións de almacenamento para unha conta, un grupo ou o todo o sistema. Os usuarios verán aparecer un novo cartafol no seu directorio raíz de Nextcloud, ao que poden acceder e que poden usar como calquera outro cartafol de Nextcloud. Almacenamento externo tamén lle permite á xente compartir os ficheiros almacenados nestas localizacións externas. Nestes casos, úsanse as credenciais para o propietario dos ficheiros cando o receptor solicita o ficheiro do almacenamento externo, asegurando así que o receptor poida acceder ao ficheiro compartido.\n\nAlmacenamento externo pódese configurar usando a GUI ou coa liña de ordes. A segunda opción fornece ao usuario avanzado máis flexibilidade para configurar montaxes de almacenamento externo en bloque e para configurar prioridades de montaxe. Ten dispoñíbel máis información na documentación da GUI do almacenamento externo e na documentación do ficheiro de configuración do almacenamento externo.",
|
||||
"Edit storage" : "Editar o almacenamento",
|
||||
"Add storage" : "Engadir almacenamento",
|
||||
"Folder name" : "Nome do cartafol",
|
||||
"Authentication" : "Autenticación",
|
||||
"Cancel" : "Cancelar",
|
||||
"Edit" : "Editar",
|
||||
"Create" : "Crear",
|
||||
"Restrict to" : "Restrinxir a",
|
||||
"Storage configuration" : "Configuración do almacenamento",
|
||||
"Never" : "Nunca",
|
||||
"Once every direct access" : "Unha vez cada acceso directo",
|
||||
"Always" : "Sempre",
|
||||
"Mount options" : "Opcións de montaxe",
|
||||
"Check filesystem changes" : "Comprobar os cambios no sistema de ficheiros",
|
||||
"Read only" : "Só lectura",
|
||||
"Enable previews" : "Activar as vistas previas",
|
||||
"Enable sharing" : "Activar as comparticións",
|
||||
@@ -103,19 +98,11 @@
|
||||
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidade coa codificación Mac MFD (lenta)",
|
||||
"External storages" : "Almacenamentos externos",
|
||||
"Status" : "Estado",
|
||||
"Restricted to" : "Restrinxido a",
|
||||
"Actions" : "Accións",
|
||||
"Checking …" : "Comprobando…",
|
||||
"Recheck status" : "Volver comprobar o estado",
|
||||
"Delete" : "Eliminar",
|
||||
"System provided storage" : "Almacenamento fornecido polo sistema",
|
||||
"Saved" : "Gardado",
|
||||
"Error while saving" : "Produciuse un erro ao gardar",
|
||||
"Saved allowed backends" : "Gardar as infraestruturas permitidas",
|
||||
"Failed to save allowed backends" : "Produciuse un fallo ao gardar as infraestruturas permitidas",
|
||||
"Advanced options for external storage mounts" : "Opcións avanzadas para montaxes de almacenamento externo",
|
||||
"Allow people to mount external storage" : "Permitirlle á xente montar almacenamento externo",
|
||||
"External storage backends people are allowed to mount" : "Infraestruturas de almacenamento externo que a xente pode montar",
|
||||
"Error generating key pair" : "Produciuse un erro ao xerar o par de chaves",
|
||||
"Key size" : "Tamaño da chave",
|
||||
"Generate keys" : "Xerar chaves",
|
||||
@@ -124,16 +111,6 @@
|
||||
"To access the storage, you need to provide the authentication credentials." : "Para acceder ao almacenamento, cómpre fornecer as credenciais de autenticación.",
|
||||
"Enter the storage login" : "Introduza o acceso ao almacenamento",
|
||||
"Enter the storage password" : "Introduza o contrasinal do almacenamento",
|
||||
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices." : "A aplicación Almacenamento externo permítelle montar servizos e dispositivos de almacenamento externo como dispositivos de almacenamento secundarios de Nextcloud.",
|
||||
"You may also allow people to mount their own external storage services." : "Tamén pode permitirlle que a xente monte os seus propios servizos de almacenamento externo.",
|
||||
"The cURL support in PHP is not enabled or installed." : "A compatibilidade de cURL en PHP non está activada ou instalada.",
|
||||
"The FTP support in PHP is not enabled or installed." : "A compatibilidade de FTP en PHP non está activada ou instalada.",
|
||||
"{module} is not installed." : "{module} non está instalado.",
|
||||
"Dependant backends" : "Infraestruturas dependentes",
|
||||
"No external storage configured or you do not have the permission to configure them" : "Non hai ningún almacenamento externo configurado ou Vde. non ten permiso para configuralos",
|
||||
"Add external storage" : "Engadir almacenamento externo",
|
||||
"Global credentials saved" : "Gardáronse as credenciais globais",
|
||||
"Could not save global credentials" : "Non foi posíbel gardar as credenciais globais",
|
||||
"Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Poden empregarse credenciais globais para autenticar con múltiples almacenamentos externos que teñan as mesmas credenciais.",
|
||||
"Saving …" : "Gardando…",
|
||||
"Save" : "Gardar",
|
||||
@@ -149,7 +126,6 @@
|
||||
"Open in Files" : "Abrir en Ficheiros",
|
||||
"External mount error" : "Produciuse un erro de montaxe externo",
|
||||
"There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Produciuse un erro con este almacenamento externo. Quere revisar esta configuración do punto de montaxe na páxina de axustes?",
|
||||
"Open settings" : "Abrir os axustes",
|
||||
"Ignore" : "Ignorar",
|
||||
"List of external storage." : "Lista de almacenamento externo.",
|
||||
"There is no external storage configured. You can configure them in your Personal settings." : "Non hai ningún almacenamento externo configurado. Pode configuralos nos seus axustes persoais.",
|
||||
@@ -162,8 +138,6 @@
|
||||
"System" : "Sistema",
|
||||
"Connected" : "Conectado",
|
||||
"Error" : "Erro",
|
||||
"Indeterminate" : "Indeterminado",
|
||||
"Incomplete configuration" : "Configuración incompleta",
|
||||
"Unauthorized" : "Non autorizado.",
|
||||
"Network error" : "Produciuse un erro na rede",
|
||||
"Grant access" : "Permitir o acceso",
|
||||
|
||||
@@ -84,20 +84,15 @@ OC.L10N.register(
|
||||
"External storage support" : "Suporte a armazenamento externo",
|
||||
"Adds basic external storage support" : "Adiciona suporte básico para armazenamento externo",
|
||||
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Este aplicativo permite que os administradores configurem conexões com provedores de armazenamento externos, como servidores FTP, armazenamentos de objetos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e muito mais. A administração pode escolher quais tipos de armazenamento a serem ativados e pode montar estes locais de armazenamento para uma conta, um grupo ou todo o sistema. Os usuários verão uma nova pasta aparecer em seu diretório raiz Nextcloud, que eles podem acessar e usar como qualquer outra pasta do Nextcloud. O armazenamento externo também permite que as pessoas compartilhem arquivos armazenados nestes locais externos. Nesses casos, as credenciais do proprietário do arquivo são usadas quando o destinatário solicita o arquivo do armazenamento externo, garantindo assim que o destinatário possa acessar o arquivo compartilhado. \n\nO armazenamento externo pode ser configurado usando a GUI ou na linha de comando. Esta segunda opção fornece à administração mais flexibilidade para configurar montagens de armazenamento externo em massa e definir prioridades de montagem. Mais informações estão disponíveis na documentação da GUI de armazenamento externo e na documentação do arquivo de configuração de armazenamento externo.",
|
||||
"Edit storage" : "Editar armazenamento",
|
||||
"Add storage" : "Adic. armazenamento",
|
||||
"Folder name" : "Nome da pasta",
|
||||
"Authentication" : "Autenticação",
|
||||
"Cancel" : "Cancelar",
|
||||
"Edit" : "Editar",
|
||||
"Create" : "Criar",
|
||||
"Restrict to" : "Restringir a",
|
||||
"Storage configuration" : "Configuração do armazenamento",
|
||||
"Never" : "Nunca",
|
||||
"Once every direct access" : "Uma vez a cada acesso direto",
|
||||
"Always" : "Sempre",
|
||||
"Mount options" : "Opções de montagem",
|
||||
"Check filesystem changes" : "Verifique as alterações no sistema de arquivos",
|
||||
"Read only" : "Somente leitura",
|
||||
"Enable previews" : "Ativar visualizações prévias",
|
||||
"Enable sharing" : "Ativar compartilhamento",
|
||||
@@ -105,19 +100,11 @@ OC.L10N.register(
|
||||
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação Mac NFD (lento)",
|
||||
"External storages" : "Armazenamentos externos",
|
||||
"Status" : "Status",
|
||||
"Restricted to" : "Restrito a",
|
||||
"Actions" : "Ações",
|
||||
"Checking …" : "Verificando …",
|
||||
"Recheck status" : "Reverificar status",
|
||||
"Delete" : "Excluir",
|
||||
"System provided storage" : "Armazenamento fornecido pelo sistema",
|
||||
"Saved" : "Salvo",
|
||||
"Error while saving" : "Erro ao salvar",
|
||||
"Saved allowed backends" : "Back-ends permitidos salvos",
|
||||
"Failed to save allowed backends" : "Falha ao salvar os back-ends permitidos",
|
||||
"Advanced options for external storage mounts" : "Opções avançadas para montagens de armazenamento externo",
|
||||
"Allow people to mount external storage" : "Permitir que as pessoas montem armazenamento externo",
|
||||
"External storage backends people are allowed to mount" : "Back-ends de armazenamento externo que as pessoas têm permissão para montar",
|
||||
"Error generating key pair" : "Erro ao gerar o par de chaves",
|
||||
"Key size" : "Tamanho da chave",
|
||||
"Generate keys" : "Gerar chaves",
|
||||
@@ -126,16 +113,6 @@ OC.L10N.register(
|
||||
"To access the storage, you need to provide the authentication credentials." : "Para acessar o armazenamento, você precisa fornecer as credenciais de autenticação.",
|
||||
"Enter the storage login" : "Digite o nome de login de armazenamento",
|
||||
"Enter the storage password" : "Digite a senha de armazenamento",
|
||||
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices." : "O armazenamento externo permite que você monte serviços e dispositivos de armazenamento externo como dispositivos de armazenamento secundários do Nextcloud.",
|
||||
"You may also allow people to mount their own external storage services." : "Você também pode permitir que as pessoas montem seus próprios serviços de armazenamento externo.",
|
||||
"The cURL support in PHP is not enabled or installed." : "O suporte cURL no PHP não está habilitado ou instalado.",
|
||||
"The FTP support in PHP is not enabled or installed." : "O suporte FTP no PHP não está habilitado ou instalado.",
|
||||
"{module} is not installed." : "{module} não está instalado.",
|
||||
"Dependant backends" : "Back-ends dependentes",
|
||||
"No external storage configured or you do not have the permission to configure them" : "Nenhum armazenamento externo configurado ou você não tem permissão para configurá-los",
|
||||
"Add external storage" : "Adicionar armazenamento externo",
|
||||
"Global credentials saved" : "Credenciais globais salvas",
|
||||
"Could not save global credentials" : "Não foi possível salvar as credenciais globais",
|
||||
"Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Credenciais globais podem ser usadas para autenticar com vários armazenamentos externos que possuem as mesmas credenciais.",
|
||||
"Saving …" : "Salvando …",
|
||||
"Save" : "Salvar",
|
||||
@@ -164,8 +141,6 @@ OC.L10N.register(
|
||||
"System" : "Sistema",
|
||||
"Connected" : "Conectado",
|
||||
"Error" : "Erro",
|
||||
"Indeterminate" : "Indeterminado",
|
||||
"Incomplete configuration" : "Configuração incompleta",
|
||||
"Unauthorized" : "Não Autorizado",
|
||||
"Network error" : "Erro de rede",
|
||||
"Grant access" : "Garantir acesso",
|
||||
|
||||
@@ -82,20 +82,15 @@
|
||||
"External storage support" : "Suporte a armazenamento externo",
|
||||
"Adds basic external storage support" : "Adiciona suporte básico para armazenamento externo",
|
||||
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Este aplicativo permite que os administradores configurem conexões com provedores de armazenamento externos, como servidores FTP, armazenamentos de objetos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e muito mais. A administração pode escolher quais tipos de armazenamento a serem ativados e pode montar estes locais de armazenamento para uma conta, um grupo ou todo o sistema. Os usuários verão uma nova pasta aparecer em seu diretório raiz Nextcloud, que eles podem acessar e usar como qualquer outra pasta do Nextcloud. O armazenamento externo também permite que as pessoas compartilhem arquivos armazenados nestes locais externos. Nesses casos, as credenciais do proprietário do arquivo são usadas quando o destinatário solicita o arquivo do armazenamento externo, garantindo assim que o destinatário possa acessar o arquivo compartilhado. \n\nO armazenamento externo pode ser configurado usando a GUI ou na linha de comando. Esta segunda opção fornece à administração mais flexibilidade para configurar montagens de armazenamento externo em massa e definir prioridades de montagem. Mais informações estão disponíveis na documentação da GUI de armazenamento externo e na documentação do arquivo de configuração de armazenamento externo.",
|
||||
"Edit storage" : "Editar armazenamento",
|
||||
"Add storage" : "Adic. armazenamento",
|
||||
"Folder name" : "Nome da pasta",
|
||||
"Authentication" : "Autenticação",
|
||||
"Cancel" : "Cancelar",
|
||||
"Edit" : "Editar",
|
||||
"Create" : "Criar",
|
||||
"Restrict to" : "Restringir a",
|
||||
"Storage configuration" : "Configuração do armazenamento",
|
||||
"Never" : "Nunca",
|
||||
"Once every direct access" : "Uma vez a cada acesso direto",
|
||||
"Always" : "Sempre",
|
||||
"Mount options" : "Opções de montagem",
|
||||
"Check filesystem changes" : "Verifique as alterações no sistema de arquivos",
|
||||
"Read only" : "Somente leitura",
|
||||
"Enable previews" : "Ativar visualizações prévias",
|
||||
"Enable sharing" : "Ativar compartilhamento",
|
||||
@@ -103,19 +98,11 @@
|
||||
"Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação Mac NFD (lento)",
|
||||
"External storages" : "Armazenamentos externos",
|
||||
"Status" : "Status",
|
||||
"Restricted to" : "Restrito a",
|
||||
"Actions" : "Ações",
|
||||
"Checking …" : "Verificando …",
|
||||
"Recheck status" : "Reverificar status",
|
||||
"Delete" : "Excluir",
|
||||
"System provided storage" : "Armazenamento fornecido pelo sistema",
|
||||
"Saved" : "Salvo",
|
||||
"Error while saving" : "Erro ao salvar",
|
||||
"Saved allowed backends" : "Back-ends permitidos salvos",
|
||||
"Failed to save allowed backends" : "Falha ao salvar os back-ends permitidos",
|
||||
"Advanced options for external storage mounts" : "Opções avançadas para montagens de armazenamento externo",
|
||||
"Allow people to mount external storage" : "Permitir que as pessoas montem armazenamento externo",
|
||||
"External storage backends people are allowed to mount" : "Back-ends de armazenamento externo que as pessoas têm permissão para montar",
|
||||
"Error generating key pair" : "Erro ao gerar o par de chaves",
|
||||
"Key size" : "Tamanho da chave",
|
||||
"Generate keys" : "Gerar chaves",
|
||||
@@ -124,16 +111,6 @@
|
||||
"To access the storage, you need to provide the authentication credentials." : "Para acessar o armazenamento, você precisa fornecer as credenciais de autenticação.",
|
||||
"Enter the storage login" : "Digite o nome de login de armazenamento",
|
||||
"Enter the storage password" : "Digite a senha de armazenamento",
|
||||
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices." : "O armazenamento externo permite que você monte serviços e dispositivos de armazenamento externo como dispositivos de armazenamento secundários do Nextcloud.",
|
||||
"You may also allow people to mount their own external storage services." : "Você também pode permitir que as pessoas montem seus próprios serviços de armazenamento externo.",
|
||||
"The cURL support in PHP is not enabled or installed." : "O suporte cURL no PHP não está habilitado ou instalado.",
|
||||
"The FTP support in PHP is not enabled or installed." : "O suporte FTP no PHP não está habilitado ou instalado.",
|
||||
"{module} is not installed." : "{module} não está instalado.",
|
||||
"Dependant backends" : "Back-ends dependentes",
|
||||
"No external storage configured or you do not have the permission to configure them" : "Nenhum armazenamento externo configurado ou você não tem permissão para configurá-los",
|
||||
"Add external storage" : "Adicionar armazenamento externo",
|
||||
"Global credentials saved" : "Credenciais globais salvas",
|
||||
"Could not save global credentials" : "Não foi possível salvar as credenciais globais",
|
||||
"Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Credenciais globais podem ser usadas para autenticar com vários armazenamentos externos que possuem as mesmas credenciais.",
|
||||
"Saving …" : "Salvando …",
|
||||
"Save" : "Salvar",
|
||||
@@ -162,8 +139,6 @@
|
||||
"System" : "Sistema",
|
||||
"Connected" : "Conectado",
|
||||
"Error" : "Erro",
|
||||
"Indeterminate" : "Indeterminado",
|
||||
"Incomplete configuration" : "Configuração incompleta",
|
||||
"Unauthorized" : "Não Autorizado",
|
||||
"Network error" : "Erro de rede",
|
||||
"Grant access" : "Garantir acesso",
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
OC.L10N.register(
|
||||
"files_external",
|
||||
{
|
||||
"Invalid backend or authentication mechanism class" : "แบ็กเอนด์หรือกลไกการรับรองความถูกต้องไม่ถูกต้อง",
|
||||
"Invalid mount point" : "จุดเชื่อมต่อไม่ถูกต้อง",
|
||||
"Objectstore forbidden" : "ที่เก็บวัตถุไม่ได้รับอนุญาต",
|
||||
"Invalid storage backend \"%s\"" : "แบ็กเอนด์การจัดเก็บข้อมูล \"%s\" ไม่ถูกต้อง",
|
||||
"Not permitted to use backend \"%s\"" : "ไม่อนุญาตให้ใช้แบ็กเอนด์ \"%s\"",
|
||||
"Not permitted to use authentication mechanism \"%s\"" : "ไม่อนุญาตให้ใช้กลไกตรวจสอบการรับรองความถูกต้อง \"%s\"",
|
||||
"Unsatisfied backend parameters" : "พารามิเตอร์แบ็กเอนด์ไม่เพียงพอ",
|
||||
"Unsatisfied authentication mechanism parameters" : "พารามิเตอร์การรับรองความถูกต้องไม่เพียงพอ",
|
||||
"Insufficient data: %s" : "ข้อมูลไม่เพียงพอ: %s",
|
||||
"Access key" : "คีย์การเข้าถึง",
|
||||
"Secret key" : "คีย์ลับ",
|
||||
"Builtin" : "ในตัว",
|
||||
"None" : "ไม่มี",
|
||||
"Login" : "เข้าสู่ระบบ",
|
||||
"Password" : "รหัสผ่าน",
|
||||
"Tenant name" : "ชื่อผู้เช่า",
|
||||
"Identity endpoint URL" : "ตัวตนของ URL ปลายทาง",
|
||||
"Domain" : "โดเมน",
|
||||
"Rackspace" : "Rackspace",
|
||||
"API key" : "รหัส API",
|
||||
"Log-in credentials, save in database" : "ข้อมูลประจำตัวสำหรับเข้าสู่ระบบ บันทึกในฐานข้อมูล",
|
||||
"Log-in credentials, save in session" : "ข้อมูลประจำตัวสำหรับเข้าสู่ระบบ, บันทึกในเซสชัน",
|
||||
"RSA public key" : "คีย์สาธารณะ RSA",
|
||||
"Public key" : "คีย์สาธารณะ",
|
||||
"Bucket" : "Bucket",
|
||||
"Hostname" : "ชื่อโฮสต์",
|
||||
"Port" : "พอร์ต",
|
||||
"Region" : "พื้นที่",
|
||||
"Enable SSL" : "เปิดใช้งาน SSL",
|
||||
"Enable Path Style" : "เปิดใช้งานสไตล์เส้นทาง",
|
||||
"WebDAV" : "WebDAV",
|
||||
"URL" : "URL",
|
||||
"Remote subfolder" : "โฟลเดอร์ย่อยรีโมท",
|
||||
"Secure https://" : "โหมดปลอดภัย https://",
|
||||
"FTP" : "FTP",
|
||||
"Host" : "โฮสต์",
|
||||
"Secure ftps://" : "โหมดปลอดภัย ftps://",
|
||||
"Local" : "ต้นทาง",
|
||||
"Location" : "ตำแหน่ง",
|
||||
"SFTP" : "SFTP",
|
||||
"Root" : "รูท",
|
||||
"SFTP with secret key login" : "SFTP เข้าสู่ระบบด้วยคีย์ลับ",
|
||||
"Share" : "แชร์",
|
||||
"Show hidden files" : "แสดงไฟล์ที่ซ่อนอยู่",
|
||||
"OpenStack Object Storage" : "ที่เก็บวัตถุ OpenStack",
|
||||
"Service name" : "ชื่อบริการ",
|
||||
"Request timeout (seconds)" : "หมดเวลาคำขอ (วินาที)",
|
||||
"External storage" : "พื้นที่จัดเก็บข้อมูลภายนอก",
|
||||
"Add storage" : "เพิ่มพื้นที่จัดเก็บข้อมูล",
|
||||
"Folder name" : "ชื่อโฟลเดอร์",
|
||||
"Authentication" : "การรับรองความถูกต้อง",
|
||||
"Cancel" : "Cancel",
|
||||
"Edit" : "แก้ไข",
|
||||
"Create" : "สร้าง",
|
||||
"Never" : "ไม่เคย",
|
||||
"Once every direct access" : "ทุก ๆ การเข้าถึงโดยตรง",
|
||||
"Always" : "เสมอ",
|
||||
"Enable previews" : "เปิดใช้งานการแสดงตัวอย่าง",
|
||||
"Enable sharing" : "เปิดให้สามารถแชร์ได้",
|
||||
"Enable encryption" : "เปิดใช้งานการเข้ารหัส",
|
||||
"Status" : "สถานะ",
|
||||
"Actions" : "การกระทำ",
|
||||
"Delete" : "ลบ",
|
||||
"Saved" : "บันทึกแล้ว",
|
||||
"Error generating key pair" : "ข้อผิดพลาดในการสร้างคู่ของคีย์",
|
||||
"Generate keys" : "สร้างคีย์",
|
||||
"Confirm" : "ยืนยัน",
|
||||
"Save" : "บันทึก",
|
||||
"External mount error" : "ข้อผิดพลาดจุดเชื่อมต่อภายนอก",
|
||||
"Storage type" : "ชนิดการจัดเก็บข้อมูล",
|
||||
"Unknown" : "ไม่ทราบ",
|
||||
"Scope" : "ขอบเขต",
|
||||
"Personal" : "ส่วนตัว",
|
||||
"System" : "ระบบ",
|
||||
"Error" : "ข้อผิดพลาด",
|
||||
"Grant access" : "อนุญาตให้เข้าถึง",
|
||||
"Error configuring OAuth1" : "ข้อผิดพลาดในการกำหนดค่า OAuth1",
|
||||
"Please provide a valid app key and secret." : "โปรดระบุคีย์และรหัสลับของแอปให้ถูกต้อง",
|
||||
"Error configuring OAuth2" : "ข้อผิดพลาดในการกำหนดค่า OAuth2",
|
||||
"%s" : "%s",
|
||||
"OAuth1" : "OAuth1",
|
||||
"App key" : "คีย์แอป",
|
||||
"App secret" : "ข้อมูลลับแอป",
|
||||
"OAuth2" : "OAuth2",
|
||||
"Client ID" : "รหัสไคลเอ็นต์",
|
||||
"Client secret" : "ข้อมูลลับไคลเอ็นต์",
|
||||
"Check for changes" : "ตรวจสอบการเปลี่ยนแปลง",
|
||||
"Admin defined" : "กำหนดโดยผู้ดูแลระบบ",
|
||||
"Saving …" : "กำลังบันทึก …",
|
||||
"Open documentation" : "เปิดเอกสารประกอบ",
|
||||
"Configuration" : "การกำหนดค่า",
|
||||
"Available for" : "ใช้ได้สำหรับ",
|
||||
"Advanced settings" : "การตั้งค่าขั้นสูง"
|
||||
},
|
||||
"nplurals=1; plural=0;");
|
||||
@@ -0,0 +1,96 @@
|
||||
{ "translations": {
|
||||
"Invalid backend or authentication mechanism class" : "แบ็กเอนด์หรือกลไกการรับรองความถูกต้องไม่ถูกต้อง",
|
||||
"Invalid mount point" : "จุดเชื่อมต่อไม่ถูกต้อง",
|
||||
"Objectstore forbidden" : "ที่เก็บวัตถุไม่ได้รับอนุญาต",
|
||||
"Invalid storage backend \"%s\"" : "แบ็กเอนด์การจัดเก็บข้อมูล \"%s\" ไม่ถูกต้อง",
|
||||
"Not permitted to use backend \"%s\"" : "ไม่อนุญาตให้ใช้แบ็กเอนด์ \"%s\"",
|
||||
"Not permitted to use authentication mechanism \"%s\"" : "ไม่อนุญาตให้ใช้กลไกตรวจสอบการรับรองความถูกต้อง \"%s\"",
|
||||
"Unsatisfied backend parameters" : "พารามิเตอร์แบ็กเอนด์ไม่เพียงพอ",
|
||||
"Unsatisfied authentication mechanism parameters" : "พารามิเตอร์การรับรองความถูกต้องไม่เพียงพอ",
|
||||
"Insufficient data: %s" : "ข้อมูลไม่เพียงพอ: %s",
|
||||
"Access key" : "คีย์การเข้าถึง",
|
||||
"Secret key" : "คีย์ลับ",
|
||||
"Builtin" : "ในตัว",
|
||||
"None" : "ไม่มี",
|
||||
"Login" : "เข้าสู่ระบบ",
|
||||
"Password" : "รหัสผ่าน",
|
||||
"Tenant name" : "ชื่อผู้เช่า",
|
||||
"Identity endpoint URL" : "ตัวตนของ URL ปลายทาง",
|
||||
"Domain" : "โดเมน",
|
||||
"Rackspace" : "Rackspace",
|
||||
"API key" : "รหัส API",
|
||||
"Log-in credentials, save in database" : "ข้อมูลประจำตัวสำหรับเข้าสู่ระบบ บันทึกในฐานข้อมูล",
|
||||
"Log-in credentials, save in session" : "ข้อมูลประจำตัวสำหรับเข้าสู่ระบบ, บันทึกในเซสชัน",
|
||||
"RSA public key" : "คีย์สาธารณะ RSA",
|
||||
"Public key" : "คีย์สาธารณะ",
|
||||
"Bucket" : "Bucket",
|
||||
"Hostname" : "ชื่อโฮสต์",
|
||||
"Port" : "พอร์ต",
|
||||
"Region" : "พื้นที่",
|
||||
"Enable SSL" : "เปิดใช้งาน SSL",
|
||||
"Enable Path Style" : "เปิดใช้งานสไตล์เส้นทาง",
|
||||
"WebDAV" : "WebDAV",
|
||||
"URL" : "URL",
|
||||
"Remote subfolder" : "โฟลเดอร์ย่อยรีโมท",
|
||||
"Secure https://" : "โหมดปลอดภัย https://",
|
||||
"FTP" : "FTP",
|
||||
"Host" : "โฮสต์",
|
||||
"Secure ftps://" : "โหมดปลอดภัย ftps://",
|
||||
"Local" : "ต้นทาง",
|
||||
"Location" : "ตำแหน่ง",
|
||||
"SFTP" : "SFTP",
|
||||
"Root" : "รูท",
|
||||
"SFTP with secret key login" : "SFTP เข้าสู่ระบบด้วยคีย์ลับ",
|
||||
"Share" : "แชร์",
|
||||
"Show hidden files" : "แสดงไฟล์ที่ซ่อนอยู่",
|
||||
"OpenStack Object Storage" : "ที่เก็บวัตถุ OpenStack",
|
||||
"Service name" : "ชื่อบริการ",
|
||||
"Request timeout (seconds)" : "หมดเวลาคำขอ (วินาที)",
|
||||
"External storage" : "พื้นที่จัดเก็บข้อมูลภายนอก",
|
||||
"Add storage" : "เพิ่มพื้นที่จัดเก็บข้อมูล",
|
||||
"Folder name" : "ชื่อโฟลเดอร์",
|
||||
"Authentication" : "การรับรองความถูกต้อง",
|
||||
"Cancel" : "Cancel",
|
||||
"Edit" : "แก้ไข",
|
||||
"Create" : "สร้าง",
|
||||
"Never" : "ไม่เคย",
|
||||
"Once every direct access" : "ทุก ๆ การเข้าถึงโดยตรง",
|
||||
"Always" : "เสมอ",
|
||||
"Enable previews" : "เปิดใช้งานการแสดงตัวอย่าง",
|
||||
"Enable sharing" : "เปิดให้สามารถแชร์ได้",
|
||||
"Enable encryption" : "เปิดใช้งานการเข้ารหัส",
|
||||
"Status" : "สถานะ",
|
||||
"Actions" : "การกระทำ",
|
||||
"Delete" : "ลบ",
|
||||
"Saved" : "บันทึกแล้ว",
|
||||
"Error generating key pair" : "ข้อผิดพลาดในการสร้างคู่ของคีย์",
|
||||
"Generate keys" : "สร้างคีย์",
|
||||
"Confirm" : "ยืนยัน",
|
||||
"Save" : "บันทึก",
|
||||
"External mount error" : "ข้อผิดพลาดจุดเชื่อมต่อภายนอก",
|
||||
"Storage type" : "ชนิดการจัดเก็บข้อมูล",
|
||||
"Unknown" : "ไม่ทราบ",
|
||||
"Scope" : "ขอบเขต",
|
||||
"Personal" : "ส่วนตัว",
|
||||
"System" : "ระบบ",
|
||||
"Error" : "ข้อผิดพลาด",
|
||||
"Grant access" : "อนุญาตให้เข้าถึง",
|
||||
"Error configuring OAuth1" : "ข้อผิดพลาดในการกำหนดค่า OAuth1",
|
||||
"Please provide a valid app key and secret." : "โปรดระบุคีย์และรหัสลับของแอปให้ถูกต้อง",
|
||||
"Error configuring OAuth2" : "ข้อผิดพลาดในการกำหนดค่า OAuth2",
|
||||
"%s" : "%s",
|
||||
"OAuth1" : "OAuth1",
|
||||
"App key" : "คีย์แอป",
|
||||
"App secret" : "ข้อมูลลับแอป",
|
||||
"OAuth2" : "OAuth2",
|
||||
"Client ID" : "รหัสไคลเอ็นต์",
|
||||
"Client secret" : "ข้อมูลลับไคลเอ็นต์",
|
||||
"Check for changes" : "ตรวจสอบการเปลี่ยนแปลง",
|
||||
"Admin defined" : "กำหนดโดยผู้ดูแลระบบ",
|
||||
"Saving …" : "กำลังบันทึก …",
|
||||
"Open documentation" : "เปิดเอกสารประกอบ",
|
||||
"Configuration" : "การกำหนดค่า",
|
||||
"Available for" : "ใช้ได้สำหรับ",
|
||||
"Advanced settings" : "การตั้งค่าขั้นสูง"
|
||||
},"pluralForm" :"nplurals=1; plural=0;"
|
||||
}
|
||||
@@ -84,20 +84,15 @@ OC.L10N.register(
|
||||
"External storage support" : "外部儲存空間支援",
|
||||
"Adds basic external storage support" : "新增基本的外部儲存空間支援",
|
||||
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "此應用程式讓管理員可以設定到外部儲存空間提供者的連線,如 FTP 伺服器、S3 或 SWIFT 物件儲存、其他 Nextcloud 伺服器、WebDAV 伺服器與更多。管理員可以選擇要啟用的儲存空間類型,並可以為使用者、群組或整個系統掛載這些儲存位置。使用者將會在他們的 Nextcloud 根目錄看到一個新的資料夾,他們可以像其他 Nextcloud 資料夾那樣存取並使用該資料夾。外部儲存空間也允許使用者分享儲存在這些外部空間的檔案。在這種情況下,當收件者從外部儲存空間請求檔案時,將使用檔案擁有者的憑證來確保收件者可以存取被分享的檔案。\n\n可以使用圖形使用者介面或命令列設定外部儲存空間。後者提供了管理員更大的彈性,可用於設定大容量儲存空間的掛載並設定掛載屬性。更多資訊可在外部儲存空間圖形化使用者介面的文件與外部儲存空間設定檔文件中檢視。",
|
||||
"Edit storage" : "編輯儲存空間",
|
||||
"Add storage" : "新增儲存空間",
|
||||
"Folder name" : "資料夾名稱",
|
||||
"Authentication" : "認證",
|
||||
"Cancel" : "取消",
|
||||
"Edit" : "編輯",
|
||||
"Create" : "建立",
|
||||
"Restrict to" : "限制為",
|
||||
"Storage configuration" : "儲存空間組態",
|
||||
"Never" : "永不",
|
||||
"Once every direct access" : "在每次進行存取動作時",
|
||||
"Always" : "總是",
|
||||
"Mount options" : "掛載選項",
|
||||
"Check filesystem changes" : "檢查檔案系統變更",
|
||||
"Read only" : "唯讀",
|
||||
"Enable previews" : "啟用預覽",
|
||||
"Enable sharing" : "啟用分享",
|
||||
@@ -105,19 +100,11 @@ OC.L10N.register(
|
||||
"Compatibility with Mac NFD encoding (slow)" : "與 Mac NFD 編碼相容(較慢)",
|
||||
"External storages" : "外部儲存空間",
|
||||
"Status" : "狀態",
|
||||
"Restricted to" : "已限制為",
|
||||
"Actions" : "動作",
|
||||
"Checking …" : "正在檢查……",
|
||||
"Recheck status" : "重新檢查狀態",
|
||||
"Delete" : "刪除",
|
||||
"System provided storage" : "系統提供的儲存空間",
|
||||
"Saved" : "已儲存",
|
||||
"Error while saving" : "儲存時發生錯誤",
|
||||
"Saved allowed backends" : "已儲存允許的後端",
|
||||
"Failed to save allowed backends" : "儲存允許的後端失敗",
|
||||
"Advanced options for external storage mounts" : "外部儲存空間掛載的進階選項",
|
||||
"Allow people to mount external storage" : "允許使用者自行掛載外部儲存空間",
|
||||
"External storage backends people are allowed to mount" : "允許使用者掛載的外部儲存空間後端",
|
||||
"Error generating key pair" : "生成金鑰對時發生錯誤",
|
||||
"Key size" : "金鑰尺寸",
|
||||
"Generate keys" : "生成金鑰",
|
||||
@@ -126,16 +113,6 @@ OC.L10N.register(
|
||||
"To access the storage, you need to provide the authentication credentials." : "要存取儲存空間,您必須提供驗證憑證。",
|
||||
"Enter the storage login" : "輸入儲存空間登入帳號",
|
||||
"Enter the storage password" : "輸入儲存空間密碼",
|
||||
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices." : "外部儲存空間讓您可以掛載外部儲存空間服務與裝置來作為次要的 Nextcloud 儲存裝置。",
|
||||
"You may also allow people to mount their own external storage services." : "您亦可允許使用者掛載其自身的外部儲存服務。",
|
||||
"The cURL support in PHP is not enabled or installed." : "PHP 的 cURL 支援未啟用或安裝。",
|
||||
"The FTP support in PHP is not enabled or installed." : "PHP 的 FTP 支援未啟用或安裝。",
|
||||
"{module} is not installed." : "未安裝 {module}。",
|
||||
"Dependant backends" : "依賴後端",
|
||||
"No external storage configured or you do not have the permission to configure them" : "未設定外部儲存空間組態,或您無權設定",
|
||||
"Add external storage" : "新增外部儲存空間",
|
||||
"Global credentials saved" : "已儲存全域憑證",
|
||||
"Could not save global credentials" : "無法儲存全域憑證",
|
||||
"Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "全域憑證可用於認證多個有相同憑證的外部儲存空間。",
|
||||
"Saving …" : "正在儲存 …",
|
||||
"Save" : "儲存",
|
||||
@@ -151,7 +128,6 @@ OC.L10N.register(
|
||||
"Open in Files" : "以「檔案」開啟",
|
||||
"External mount error" : "外部掛載錯誤",
|
||||
"There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "此外部儲存空間有錯誤。您想要在設定頁面中檢閱此掛載點的組態設定嗎?",
|
||||
"Open settings" : "開啟設定",
|
||||
"Ignore" : "忽略",
|
||||
"List of external storage." : "外部儲存空間清單。",
|
||||
"There is no external storage configured. You can configure them in your Personal settings." : "未設定外部儲存空間組態。您可以在「個人設定」中設定它們。",
|
||||
@@ -164,8 +140,6 @@ OC.L10N.register(
|
||||
"System" : "系統",
|
||||
"Connected" : "已連線",
|
||||
"Error" : "錯誤",
|
||||
"Indeterminate" : "不確定",
|
||||
"Incomplete configuration" : "組態不完整",
|
||||
"Unauthorized" : "Unauthorized",
|
||||
"Network error" : "網路錯誤",
|
||||
"Grant access" : "授予存取權",
|
||||
|
||||
@@ -82,20 +82,15 @@
|
||||
"External storage support" : "外部儲存空間支援",
|
||||
"Adds basic external storage support" : "新增基本的外部儲存空間支援",
|
||||
"This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "此應用程式讓管理員可以設定到外部儲存空間提供者的連線,如 FTP 伺服器、S3 或 SWIFT 物件儲存、其他 Nextcloud 伺服器、WebDAV 伺服器與更多。管理員可以選擇要啟用的儲存空間類型,並可以為使用者、群組或整個系統掛載這些儲存位置。使用者將會在他們的 Nextcloud 根目錄看到一個新的資料夾,他們可以像其他 Nextcloud 資料夾那樣存取並使用該資料夾。外部儲存空間也允許使用者分享儲存在這些外部空間的檔案。在這種情況下,當收件者從外部儲存空間請求檔案時,將使用檔案擁有者的憑證來確保收件者可以存取被分享的檔案。\n\n可以使用圖形使用者介面或命令列設定外部儲存空間。後者提供了管理員更大的彈性,可用於設定大容量儲存空間的掛載並設定掛載屬性。更多資訊可在外部儲存空間圖形化使用者介面的文件與外部儲存空間設定檔文件中檢視。",
|
||||
"Edit storage" : "編輯儲存空間",
|
||||
"Add storage" : "新增儲存空間",
|
||||
"Folder name" : "資料夾名稱",
|
||||
"Authentication" : "認證",
|
||||
"Cancel" : "取消",
|
||||
"Edit" : "編輯",
|
||||
"Create" : "建立",
|
||||
"Restrict to" : "限制為",
|
||||
"Storage configuration" : "儲存空間組態",
|
||||
"Never" : "永不",
|
||||
"Once every direct access" : "在每次進行存取動作時",
|
||||
"Always" : "總是",
|
||||
"Mount options" : "掛載選項",
|
||||
"Check filesystem changes" : "檢查檔案系統變更",
|
||||
"Read only" : "唯讀",
|
||||
"Enable previews" : "啟用預覽",
|
||||
"Enable sharing" : "啟用分享",
|
||||
@@ -103,19 +98,11 @@
|
||||
"Compatibility with Mac NFD encoding (slow)" : "與 Mac NFD 編碼相容(較慢)",
|
||||
"External storages" : "外部儲存空間",
|
||||
"Status" : "狀態",
|
||||
"Restricted to" : "已限制為",
|
||||
"Actions" : "動作",
|
||||
"Checking …" : "正在檢查……",
|
||||
"Recheck status" : "重新檢查狀態",
|
||||
"Delete" : "刪除",
|
||||
"System provided storage" : "系統提供的儲存空間",
|
||||
"Saved" : "已儲存",
|
||||
"Error while saving" : "儲存時發生錯誤",
|
||||
"Saved allowed backends" : "已儲存允許的後端",
|
||||
"Failed to save allowed backends" : "儲存允許的後端失敗",
|
||||
"Advanced options for external storage mounts" : "外部儲存空間掛載的進階選項",
|
||||
"Allow people to mount external storage" : "允許使用者自行掛載外部儲存空間",
|
||||
"External storage backends people are allowed to mount" : "允許使用者掛載的外部儲存空間後端",
|
||||
"Error generating key pair" : "生成金鑰對時發生錯誤",
|
||||
"Key size" : "金鑰尺寸",
|
||||
"Generate keys" : "生成金鑰",
|
||||
@@ -124,16 +111,6 @@
|
||||
"To access the storage, you need to provide the authentication credentials." : "要存取儲存空間,您必須提供驗證憑證。",
|
||||
"Enter the storage login" : "輸入儲存空間登入帳號",
|
||||
"Enter the storage password" : "輸入儲存空間密碼",
|
||||
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices." : "外部儲存空間讓您可以掛載外部儲存空間服務與裝置來作為次要的 Nextcloud 儲存裝置。",
|
||||
"You may also allow people to mount their own external storage services." : "您亦可允許使用者掛載其自身的外部儲存服務。",
|
||||
"The cURL support in PHP is not enabled or installed." : "PHP 的 cURL 支援未啟用或安裝。",
|
||||
"The FTP support in PHP is not enabled or installed." : "PHP 的 FTP 支援未啟用或安裝。",
|
||||
"{module} is not installed." : "未安裝 {module}。",
|
||||
"Dependant backends" : "依賴後端",
|
||||
"No external storage configured or you do not have the permission to configure them" : "未設定外部儲存空間組態,或您無權設定",
|
||||
"Add external storage" : "新增外部儲存空間",
|
||||
"Global credentials saved" : "已儲存全域憑證",
|
||||
"Could not save global credentials" : "無法儲存全域憑證",
|
||||
"Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "全域憑證可用於認證多個有相同憑證的外部儲存空間。",
|
||||
"Saving …" : "正在儲存 …",
|
||||
"Save" : "儲存",
|
||||
@@ -149,7 +126,6 @@
|
||||
"Open in Files" : "以「檔案」開啟",
|
||||
"External mount error" : "外部掛載錯誤",
|
||||
"There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "此外部儲存空間有錯誤。您想要在設定頁面中檢閱此掛載點的組態設定嗎?",
|
||||
"Open settings" : "開啟設定",
|
||||
"Ignore" : "忽略",
|
||||
"List of external storage." : "外部儲存空間清單。",
|
||||
"There is no external storage configured. You can configure them in your Personal settings." : "未設定外部儲存空間組態。您可以在「個人設定」中設定它們。",
|
||||
@@ -162,8 +138,6 @@
|
||||
"System" : "系統",
|
||||
"Connected" : "已連線",
|
||||
"Error" : "錯誤",
|
||||
"Indeterminate" : "不確定",
|
||||
"Incomplete configuration" : "組態不完整",
|
||||
"Unauthorized" : "Unauthorized",
|
||||
"Network error" : "網路錯誤",
|
||||
"Grant access" : "授予存取權",
|
||||
|
||||
@@ -70,6 +70,7 @@ return array(
|
||||
'OCA\\Files_Sharing\\Listener\\LoadPublicFileRequestAuthListener' => $baseDir . '/../lib/Listener/LoadPublicFileRequestAuthListener.php',
|
||||
'OCA\\Files_Sharing\\Listener\\LoadSidebarListener' => $baseDir . '/../lib/Listener/LoadSidebarListener.php',
|
||||
'OCA\\Files_Sharing\\Listener\\ShareInteractionListener' => $baseDir . '/../lib/Listener/ShareInteractionListener.php',
|
||||
'OCA\\Files_Sharing\\Listener\\SharesUpdatedListener' => $baseDir . '/../lib/Listener/SharesUpdatedListener.php',
|
||||
'OCA\\Files_Sharing\\Listener\\UserAddedToGroupListener' => $baseDir . '/../lib/Listener/UserAddedToGroupListener.php',
|
||||
'OCA\\Files_Sharing\\Listener\\UserShareAcceptanceListener' => $baseDir . '/../lib/Listener/UserShareAcceptanceListener.php',
|
||||
'OCA\\Files_Sharing\\Middleware\\OCSShareAPIMiddleware' => $baseDir . '/../lib/Middleware/OCSShareAPIMiddleware.php',
|
||||
@@ -96,6 +97,7 @@ return array(
|
||||
'OCA\\Files_Sharing\\Settings\\Personal' => $baseDir . '/../lib/Settings/Personal.php',
|
||||
'OCA\\Files_Sharing\\ShareBackend\\File' => $baseDir . '/../lib/ShareBackend/File.php',
|
||||
'OCA\\Files_Sharing\\ShareBackend\\Folder' => $baseDir . '/../lib/ShareBackend/Folder.php',
|
||||
'OCA\\Files_Sharing\\ShareTargetValidator' => $baseDir . '/../lib/ShareTargetValidator.php',
|
||||
'OCA\\Files_Sharing\\SharedMount' => $baseDir . '/../lib/SharedMount.php',
|
||||
'OCA\\Files_Sharing\\SharedStorage' => $baseDir . '/../lib/SharedStorage.php',
|
||||
'OCA\\Files_Sharing\\SharesReminderJob' => $baseDir . '/../lib/SharesReminderJob.php',
|
||||
|
||||
@@ -85,6 +85,7 @@ class ComposerStaticInitFiles_Sharing
|
||||
'OCA\\Files_Sharing\\Listener\\LoadPublicFileRequestAuthListener' => __DIR__ . '/..' . '/../lib/Listener/LoadPublicFileRequestAuthListener.php',
|
||||
'OCA\\Files_Sharing\\Listener\\LoadSidebarListener' => __DIR__ . '/..' . '/../lib/Listener/LoadSidebarListener.php',
|
||||
'OCA\\Files_Sharing\\Listener\\ShareInteractionListener' => __DIR__ . '/..' . '/../lib/Listener/ShareInteractionListener.php',
|
||||
'OCA\\Files_Sharing\\Listener\\SharesUpdatedListener' => __DIR__ . '/..' . '/../lib/Listener/SharesUpdatedListener.php',
|
||||
'OCA\\Files_Sharing\\Listener\\UserAddedToGroupListener' => __DIR__ . '/..' . '/../lib/Listener/UserAddedToGroupListener.php',
|
||||
'OCA\\Files_Sharing\\Listener\\UserShareAcceptanceListener' => __DIR__ . '/..' . '/../lib/Listener/UserShareAcceptanceListener.php',
|
||||
'OCA\\Files_Sharing\\Middleware\\OCSShareAPIMiddleware' => __DIR__ . '/..' . '/../lib/Middleware/OCSShareAPIMiddleware.php',
|
||||
@@ -111,6 +112,7 @@ class ComposerStaticInitFiles_Sharing
|
||||
'OCA\\Files_Sharing\\Settings\\Personal' => __DIR__ . '/..' . '/../lib/Settings/Personal.php',
|
||||
'OCA\\Files_Sharing\\ShareBackend\\File' => __DIR__ . '/..' . '/../lib/ShareBackend/File.php',
|
||||
'OCA\\Files_Sharing\\ShareBackend\\Folder' => __DIR__ . '/..' . '/../lib/ShareBackend/Folder.php',
|
||||
'OCA\\Files_Sharing\\ShareTargetValidator' => __DIR__ . '/..' . '/../lib/ShareTargetValidator.php',
|
||||
'OCA\\Files_Sharing\\SharedMount' => __DIR__ . '/..' . '/../lib/SharedMount.php',
|
||||
'OCA\\Files_Sharing\\SharedStorage' => __DIR__ . '/..' . '/../lib/SharedStorage.php',
|
||||
'OCA\\Files_Sharing\\SharesReminderJob' => __DIR__ . '/..' . '/../lib/SharesReminderJob.php',
|
||||
|
||||
@@ -14,6 +14,7 @@ use OCA\Files\Event\LoadAdditionalScriptsEvent;
|
||||
use OCA\Files\Event\LoadSidebar;
|
||||
use OCA\Files_Sharing\Capabilities;
|
||||
use OCA\Files_Sharing\Config\ConfigLexicon;
|
||||
use OCA\Files_Sharing\Event\UserShareAccessUpdatedEvent;
|
||||
use OCA\Files_Sharing\External\Manager;
|
||||
use OCA\Files_Sharing\External\MountProvider as ExternalMountProvider;
|
||||
use OCA\Files_Sharing\Helper;
|
||||
@@ -24,6 +25,7 @@ use OCA\Files_Sharing\Listener\LoadAdditionalListener;
|
||||
use OCA\Files_Sharing\Listener\LoadPublicFileRequestAuthListener;
|
||||
use OCA\Files_Sharing\Listener\LoadSidebarListener;
|
||||
use OCA\Files_Sharing\Listener\ShareInteractionListener;
|
||||
use OCA\Files_Sharing\Listener\SharesUpdatedListener;
|
||||
use OCA\Files_Sharing\Listener\UserAddedToGroupListener;
|
||||
use OCA\Files_Sharing\Listener\UserShareAcceptanceListener;
|
||||
use OCA\Files_Sharing\Middleware\OCSShareAPIMiddleware;
|
||||
@@ -49,9 +51,11 @@ use OCP\Files\Events\Node\BeforeNodeReadEvent;
|
||||
use OCP\Group\Events\GroupChangedEvent;
|
||||
use OCP\Group\Events\GroupDeletedEvent;
|
||||
use OCP\Group\Events\UserAddedEvent;
|
||||
use OCP\Group\Events\UserRemovedEvent;
|
||||
use OCP\IDBConnection;
|
||||
use OCP\IGroup;
|
||||
use OCP\Share\Events\ShareCreatedEvent;
|
||||
use OCP\Share\Events\ShareDeletedEvent;
|
||||
use OCP\User\Events\UserChangedEvent;
|
||||
use OCP\User\Events\UserDeletedEvent;
|
||||
use OCP\Util;
|
||||
@@ -109,6 +113,13 @@ class Application extends App implements IBootstrap {
|
||||
// File request auth
|
||||
$context->registerEventListener(BeforeTemplateRenderedEvent::class, LoadPublicFileRequestAuthListener::class);
|
||||
|
||||
// Update mounts
|
||||
$context->registerEventListener(ShareCreatedEvent::class, SharesUpdatedListener::class);
|
||||
$context->registerEventListener(ShareDeletedEvent::class, SharesUpdatedListener::class);
|
||||
$context->registerEventListener(UserAddedEvent::class, SharesUpdatedListener::class);
|
||||
$context->registerEventListener(UserRemovedEvent::class, SharesUpdatedListener::class);
|
||||
$context->registerEventListener(UserShareAccessUpdatedEvent::class, SharesUpdatedListener::class);
|
||||
|
||||
$context->registerConfigLexicon(ConfigLexicon::class);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2025 Robin Appelman <robin@icewind.nl>
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace OCA\Files_Sharing\Listener;
|
||||
|
||||
use OCA\Files_Sharing\Event\UserShareAccessUpdatedEvent;
|
||||
use OCA\Files_Sharing\MountProvider;
|
||||
use OCA\Files_Sharing\ShareTargetValidator;
|
||||
use OCP\EventDispatcher\Event;
|
||||
use OCP\EventDispatcher\IEventListener;
|
||||
use OCP\Files\Config\ICachedMountInfo;
|
||||
use OCP\Files\Config\IUserMountCache;
|
||||
use OCP\Files\Storage\IStorageFactory;
|
||||
use OCP\Group\Events\UserAddedEvent;
|
||||
use OCP\Group\Events\UserRemovedEvent;
|
||||
use OCP\IUser;
|
||||
use OCP\Share\Events\ShareCreatedEvent;
|
||||
use OCP\Share\Events\ShareDeletedEvent;
|
||||
use OCP\Share\IManager;
|
||||
|
||||
/**
|
||||
* Listen to various events that can change what shares a user has access to
|
||||
*
|
||||
* @template-implements IEventListener<UserAddedEvent|UserRemovedEvent|ShareCreatedEvent|ShareDeletedEvent|UserShareAccessUpdatedEvent>
|
||||
*/
|
||||
class SharesUpdatedListener implements IEventListener {
|
||||
public function __construct(
|
||||
private readonly IManager $shareManager,
|
||||
private readonly IUserMountCache $userMountCache,
|
||||
private readonly MountProvider $shareMountProvider,
|
||||
private readonly ShareTargetValidator $shareTargetValidator,
|
||||
private readonly IStorageFactory $storageFactory,
|
||||
) {
|
||||
}
|
||||
|
||||
public function handle(Event $event): void {
|
||||
if ($event instanceof UserAddedEvent || $event instanceof UserRemovedEvent || $event instanceof UserShareAccessUpdatedEvent) {
|
||||
$this->updateForUser($event->getUser());
|
||||
}
|
||||
if ($event instanceof ShareCreatedEvent || $event instanceof ShareDeletedEvent) {
|
||||
foreach ($this->shareManager->getUsersForShare($event->getShare()) as $user) {
|
||||
$this->updateForUser($user);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function updateForUser(IUser $user): void {
|
||||
$cachedMounts = $this->userMountCache->getMountsForUser($user);
|
||||
$shareMounts = array_filter($cachedMounts, fn (ICachedMountInfo $mount) => $mount->getMountProvider() === MountProvider::class);
|
||||
$mountPoints = array_map(fn (ICachedMountInfo $mount) => $mount->getMountPoint(), $cachedMounts);
|
||||
$mountsByPath = array_combine($mountPoints, $cachedMounts);
|
||||
|
||||
$shares = $this->shareMountProvider->getSuperSharesForUser($user);
|
||||
|
||||
$mountsChanged = count($shares) !== count($shareMounts);
|
||||
foreach ($shares as &$share) {
|
||||
[$parentShare, $groupedShares] = $share;
|
||||
$mountPoint = '/' . $user->getUID() . '/files/' . trim($parentShare->getTarget(), '/') . '/';
|
||||
$mountKey = $parentShare->getNodeId() . '::' . $mountPoint;
|
||||
if (!isset($cachedMounts[$mountKey])) {
|
||||
$mountsChanged = true;
|
||||
$this->shareTargetValidator->verifyMountPoint($user, $parentShare, $mountsByPath, $groupedShares);
|
||||
}
|
||||
}
|
||||
|
||||
if ($mountsChanged) {
|
||||
$newMounts = $this->shareMountProvider->getMountsFromSuperShares($user, $shares, $this->storageFactory);
|
||||
$this->userMountCache->registerMounts($user, $newMounts, [MountProvider::class]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ use OC\Files\View;
|
||||
use OCA\Files_Sharing\Event\ShareMountedEvent;
|
||||
use OCP\Cache\CappedMemoryCache;
|
||||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\Files\Config\IAuthoritativeMountProvider;
|
||||
use OCP\Files\Config\IMountProvider;
|
||||
use OCP\Files\Mount\IMountManager;
|
||||
use OCP\Files\Mount\IMountPoint;
|
||||
@@ -26,7 +27,7 @@ use OCP\Share\IShare;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use function count;
|
||||
|
||||
class MountProvider implements IMountProvider {
|
||||
class MountProvider implements IMountProvider, IAuthoritativeMountProvider {
|
||||
/**
|
||||
* @param IConfig $config
|
||||
* @param IManager $shareManager
|
||||
@@ -50,6 +51,14 @@ class MountProvider implements IMountProvider {
|
||||
* @return IMountPoint[]
|
||||
*/
|
||||
public function getMountsForUser(IUser $user, IStorageFactory $loader) {
|
||||
return $this->getMountsFromSuperShares($user, $this->getSuperSharesForUser($user), $loader);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param IUser $user
|
||||
* @return list<array{IShare, array<IShare>}> Tuple of [superShare, groupedShares]
|
||||
*/
|
||||
public function getSuperSharesForUser(IUser $user): array {
|
||||
$userId = $user->getUID();
|
||||
$shares = array_merge(
|
||||
$this->shareManager->getSharedWith($userId, IShare::TYPE_USER, null, -1),
|
||||
@@ -60,9 +69,7 @@ class MountProvider implements IMountProvider {
|
||||
);
|
||||
|
||||
$shares = $this->filterShares($shares, $userId);
|
||||
$superShares = $this->buildSuperShares($shares, $user);
|
||||
|
||||
return $this->getMountsFromSuperShares($userId, $superShares, $loader, $user);
|
||||
return $this->buildSuperShares($shares, $user);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -245,18 +252,18 @@ class MountProvider implements IMountProvider {
|
||||
}
|
||||
/**
|
||||
* @param string $userId
|
||||
* @param array $superShares
|
||||
* @param list<array{IShare, array<IShare>}> $superShares
|
||||
* @param IStorageFactory $loader
|
||||
* @param IUser $user
|
||||
* @return array
|
||||
* @throws Exception
|
||||
*/
|
||||
private function getMountsFromSuperShares(
|
||||
string $userId,
|
||||
public function getMountsFromSuperShares(
|
||||
IUser $user,
|
||||
array $superShares,
|
||||
IStorageFactory $loader,
|
||||
IUser $user,
|
||||
): array {
|
||||
$userId = $user->getUID();
|
||||
$allMounts = $this->mountManager->getAll();
|
||||
$mounts = [];
|
||||
$view = new View('/' . $userId . '/files');
|
||||
@@ -289,7 +296,6 @@ class MountProvider implements IMountProvider {
|
||||
$shareId = (int)$parentShare->getId();
|
||||
$mount = new SharedMount(
|
||||
'\OCA\Files_Sharing\SharedStorage',
|
||||
$allMounts,
|
||||
[
|
||||
'user' => $userId,
|
||||
// parent share
|
||||
@@ -300,11 +306,8 @@ class MountProvider implements IMountProvider {
|
||||
'sharingDisabledForUser' => $sharingDisabledForUser
|
||||
],
|
||||
$loader,
|
||||
$view,
|
||||
$foldersExistCache,
|
||||
$this->eventDispatcher,
|
||||
$user,
|
||||
$shareId <= $maxValidatedShare,
|
||||
);
|
||||
|
||||
$newMaxValidatedShare = max($shareId, $newMaxValidatedShare);
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2025 Robin Appelman <robin@icewind.nl>
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace OCA\Files_Sharing;
|
||||
|
||||
use OC\Files\Filesystem;
|
||||
use OC\Files\SetupManager;
|
||||
use OC\Files\View;
|
||||
use OCP\Cache\CappedMemoryCache;
|
||||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\Files\Config\ICachedMountInfo;
|
||||
use OCP\Files\Mount\IMountManager;
|
||||
use OCP\Files\Mount\IMountPoint;
|
||||
use OCP\IUser;
|
||||
use OCP\Share\Events\VerifyMountPointEvent;
|
||||
use OCP\Share\IManager;
|
||||
use OCP\Share\IShare;
|
||||
|
||||
/**
|
||||
* Validate that mount target is valid
|
||||
*/
|
||||
class ShareTargetValidator {
|
||||
private CappedMemoryCache $folderExistsCache;
|
||||
|
||||
public function __construct(
|
||||
private readonly IManager $shareManager,
|
||||
private readonly IEventDispatcher $eventDispatcher,
|
||||
private readonly SetupManager $setupManager,
|
||||
private readonly IMountManager $mountManager,
|
||||
) {
|
||||
$this->folderExistsCache = new CappedMemoryCache();
|
||||
}
|
||||
|
||||
private function getViewForUser(IUser $user): View {
|
||||
/**
|
||||
* @psalm-suppress InternalClass
|
||||
* @psalm-suppress InternalMethod
|
||||
*/
|
||||
return new View('/' . $user->getUID() . '/files');
|
||||
}
|
||||
|
||||
/**
|
||||
* check if the parent folder exists otherwise move the mount point up
|
||||
*
|
||||
* @param array<string, ICachedMountInfo> $allCachedMounts Other mounts for the user, indexed by path
|
||||
* @param IShare[] $childShares
|
||||
* @return string
|
||||
*/
|
||||
public function verifyMountPoint(
|
||||
IUser $user,
|
||||
IShare &$share,
|
||||
array $allCachedMounts,
|
||||
array $childShares,
|
||||
): string {
|
||||
$mountPoint = basename($share->getTarget());
|
||||
$parent = dirname($share->getTarget());
|
||||
|
||||
$recipientView = $this->getViewForUser($user);
|
||||
$event = new VerifyMountPointEvent($share, $recipientView, $parent);
|
||||
$this->eventDispatcher->dispatchTyped($event);
|
||||
$parent = $event->getParent();
|
||||
|
||||
/** @psalm-suppress InternalMethod */
|
||||
$absoluteParent = $recipientView->getAbsolutePath($parent);
|
||||
$this->setupManager->setupForPath($absoluteParent);
|
||||
$parentMount = $this->mountManager->find($absoluteParent);
|
||||
|
||||
$cached = $this->folderExistsCache->get($parent);
|
||||
if ($cached) {
|
||||
$parentExists = $cached;
|
||||
} else {
|
||||
$parentCache = $parentMount->getStorage()->getCache();
|
||||
$parentExists = $parentCache->inCache($parentMount->getInternalPath($absoluteParent));
|
||||
$this->folderExistsCache->set($parent, $parentExists);
|
||||
}
|
||||
if (!$parentExists) {
|
||||
$parent = Helper::getShareFolder($recipientView, $user->getUID());
|
||||
/** @psalm-suppress InternalMethod */
|
||||
$absoluteParent = $recipientView->getAbsolutePath($parent);
|
||||
}
|
||||
|
||||
$newAbsoluteMountPoint = $this->generateUniqueTarget(
|
||||
Filesystem::normalizePath($absoluteParent . '/' . $mountPoint),
|
||||
$parentMount,
|
||||
$allCachedMounts,
|
||||
);
|
||||
|
||||
/** @psalm-suppress InternalMethod */
|
||||
$newMountPoint = $recipientView->getRelativePath($newAbsoluteMountPoint);
|
||||
if ($newMountPoint === null) {
|
||||
return $share->getTarget();
|
||||
}
|
||||
|
||||
if ($newMountPoint !== $share->getTarget()) {
|
||||
$this->updateFileTarget($user, $newMountPoint, $share, $childShares);
|
||||
}
|
||||
|
||||
return $newMountPoint;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param ICachedMountInfo[] $allCachedMounts
|
||||
*/
|
||||
private function generateUniqueTarget(string $absolutePath, IMountPoint $parentMount, array $allCachedMounts): string {
|
||||
$pathInfo = pathinfo($absolutePath);
|
||||
$ext = isset($pathInfo['extension']) ? '.' . $pathInfo['extension'] : '';
|
||||
$name = $pathInfo['filename'];
|
||||
$dir = $pathInfo['dirname'];
|
||||
|
||||
$i = 2;
|
||||
$parentCache = $parentMount->getStorage()->getCache();
|
||||
$internalPath = $parentMount->getInternalPath($absolutePath);
|
||||
while ($parentCache->inCache($internalPath) || isset($allCachedMounts[$absolutePath . '/'])) {
|
||||
$absolutePath = Filesystem::normalizePath($dir . '/' . $name . ' (' . $i . ')' . $ext);
|
||||
$internalPath = $parentMount->getInternalPath($absolutePath);
|
||||
$i++;
|
||||
}
|
||||
|
||||
return $absolutePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* update fileTarget in the database if the mount point changed
|
||||
*
|
||||
* @param IShare[] $childShares
|
||||
*/
|
||||
private function updateFileTarget(IUser $user, string $newPath, IShare &$share, array $childShares) {
|
||||
$share->setTarget($newPath);
|
||||
|
||||
foreach ($childShares as $tmpShare) {
|
||||
$tmpShare->setTarget($newPath);
|
||||
$this->shareManager->moveShare($tmpShare, $user->getUID());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,16 +11,13 @@ namespace OCA\Files_Sharing;
|
||||
use OC\Files\Filesystem;
|
||||
use OC\Files\Mount\MountPoint;
|
||||
use OC\Files\Mount\MoveableMount;
|
||||
use OC\Files\View;
|
||||
use OCA\Files_Sharing\Exceptions\BrokenPath;
|
||||
use OCP\Cache\CappedMemoryCache;
|
||||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\Files\Events\InvalidateMountCacheEvent;
|
||||
use OCP\Files\Storage\IStorageFactory;
|
||||
use OCP\IDBConnection;
|
||||
use OCP\IUser;
|
||||
use OCP\Server;
|
||||
use OCP\Share\Events\VerifyMountPointEvent;
|
||||
use OCP\Share\IShare;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
@@ -41,73 +38,19 @@ class SharedMount extends MountPoint implements MoveableMount, ISharedMountPoint
|
||||
|
||||
public function __construct(
|
||||
$storage,
|
||||
array $mountpoints,
|
||||
$arguments,
|
||||
IStorageFactory $loader,
|
||||
private View $recipientView,
|
||||
CappedMemoryCache $folderExistCache,
|
||||
private IEventDispatcher $eventDispatcher,
|
||||
private IUser $user,
|
||||
bool $alreadyVerified,
|
||||
) {
|
||||
$this->superShare = $arguments['superShare'];
|
||||
$this->groupedShares = $arguments['groupedShares'];
|
||||
|
||||
$absMountPoint = '/' . $user->getUID() . '/files/' . trim($this->superShare->getTarget(), '/') . '/';
|
||||
|
||||
// after the mountpoint is verified for the first time, only new mountpoints (e.g. groupfolders can overwrite the target)
|
||||
if (!$alreadyVerified || isset($mountpoints[$absMountPoint])) {
|
||||
$newMountPoint = $this->verifyMountPoint($this->superShare, $mountpoints, $folderExistCache);
|
||||
$absMountPoint = '/' . $user->getUID() . '/files/' . trim($newMountPoint, '/') . '/';
|
||||
}
|
||||
|
||||
parent::__construct($storage, $absMountPoint, $arguments, $loader, null, null, MountProvider::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* check if the parent folder exists otherwise move the mount point up
|
||||
*
|
||||
* @param IShare $share
|
||||
* @param SharedMount[] $mountpoints
|
||||
* @param CappedMemoryCache<bool> $folderExistCache
|
||||
* @return string
|
||||
*/
|
||||
private function verifyMountPoint(
|
||||
IShare $share,
|
||||
array $mountpoints,
|
||||
CappedMemoryCache $folderExistCache,
|
||||
) {
|
||||
$mountPoint = basename($share->getTarget());
|
||||
$parent = dirname($share->getTarget());
|
||||
|
||||
$event = new VerifyMountPointEvent($share, $this->recipientView, $parent);
|
||||
$this->eventDispatcher->dispatchTyped($event);
|
||||
$parent = $event->getParent();
|
||||
|
||||
$cached = $folderExistCache->get($parent);
|
||||
if ($cached) {
|
||||
$parentExists = $cached;
|
||||
} else {
|
||||
$parentExists = $this->recipientView->is_dir($parent);
|
||||
$folderExistCache->set($parent, $parentExists);
|
||||
}
|
||||
if (!$parentExists) {
|
||||
$parent = Helper::getShareFolder($this->recipientView, $this->user->getUID());
|
||||
}
|
||||
|
||||
$newMountPoint = $this->generateUniqueTarget(
|
||||
Filesystem::normalizePath($parent . '/' . $mountPoint),
|
||||
$this->recipientView,
|
||||
$mountpoints
|
||||
);
|
||||
|
||||
if ($newMountPoint !== $share->getTarget()) {
|
||||
$this->updateFileTarget($newMountPoint, $share);
|
||||
}
|
||||
|
||||
return $newMountPoint;
|
||||
}
|
||||
|
||||
/**
|
||||
* update fileTarget in the database if the mount point changed
|
||||
*
|
||||
@@ -126,30 +69,6 @@ class SharedMount extends MountPoint implements MoveableMount, ISharedMountPoint
|
||||
$this->eventDispatcher->dispatchTyped(new InvalidateMountCacheEvent($this->user));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $path
|
||||
* @param View $view
|
||||
* @param SharedMount[] $mountpoints
|
||||
* @return mixed
|
||||
*/
|
||||
private function generateUniqueTarget($path, $view, array $mountpoints) {
|
||||
$pathinfo = pathinfo($path);
|
||||
$ext = isset($pathinfo['extension']) ? '.' . $pathinfo['extension'] : '';
|
||||
$name = $pathinfo['filename'];
|
||||
$dir = $pathinfo['dirname'];
|
||||
|
||||
$i = 2;
|
||||
$absolutePath = $this->recipientView->getAbsolutePath($path) . '/';
|
||||
while ($view->file_exists($path) || isset($mountpoints[$absolutePath])) {
|
||||
$path = Filesystem::normalizePath($dir . '/' . $name . ' (' . $i . ')' . $ext);
|
||||
$absolutePath = $this->recipientView->getAbsolutePath($path) . '/';
|
||||
$i++;
|
||||
}
|
||||
|
||||
return $path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format a path to be relative to the /user/files/ directory
|
||||
*
|
||||
@@ -267,4 +186,8 @@ class SharedMount extends MountPoint implements MoveableMount, ISharedMountPoint
|
||||
public function getMountType() {
|
||||
return 'shared';
|
||||
}
|
||||
|
||||
public function getUser(): IUser {
|
||||
return $this->user;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -826,6 +826,8 @@ class ApiTest extends TestCase {
|
||||
$share3->setStatus(IShare::STATUS_ACCEPTED);
|
||||
$this->shareManager->updateShare($share3);
|
||||
|
||||
$this->logout();
|
||||
|
||||
// $request = $this->createRequest(['path' => $this->subfolder]);
|
||||
$ocs = $this->createOCS(self::TEST_FILES_SHARING_API_USER2);
|
||||
$result1 = $ocs->getShares('false', 'false', 'false', $this->subfolder);
|
||||
|
||||
@@ -9,7 +9,6 @@ namespace OCA\Files_Sharing\Tests;
|
||||
|
||||
use OC\Files\Cache\Cache;
|
||||
use OC\Files\Filesystem;
|
||||
use OC\Files\SetupManager;
|
||||
use OC\Files\Storage\Storage;
|
||||
use OC\Files\Storage\Temporary;
|
||||
use OC\Files\Storage\Wrapper\Jail;
|
||||
@@ -17,7 +16,6 @@ use OC\Files\View;
|
||||
use OCA\Files_Sharing\SharedStorage;
|
||||
use OCP\Constants;
|
||||
use OCP\Files\Cache\IWatcher;
|
||||
use OCP\Files\IRootFolder;
|
||||
use OCP\IUserManager;
|
||||
use OCP\Server;
|
||||
use OCP\Share\IShare;
|
||||
@@ -426,7 +424,8 @@ class CacheTest extends TestCase {
|
||||
$share = $this->shareManager->createShare($share);
|
||||
$share->setStatus(IShare::STATUS_ACCEPTED);
|
||||
$this->shareManager->updateShare($share);
|
||||
Server::get(SetupManager::class)->tearDown();
|
||||
|
||||
\OC_Util::tearDownFS();
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||
$this->assertTrue(Filesystem::file_exists('/test.txt'));
|
||||
@@ -457,7 +456,7 @@ class CacheTest extends TestCase {
|
||||
$share = $this->shareManager->createShare($share);
|
||||
$share->setStatus(IShare::STATUS_ACCEPTED);
|
||||
$this->shareManager->updateShare($share);
|
||||
Server::get(SetupManager::class)->tearDown();
|
||||
\OC_Util::tearDownFS();
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||
$this->assertTrue(Filesystem::file_exists('/foo'));
|
||||
@@ -485,7 +484,7 @@ class CacheTest extends TestCase {
|
||||
$share = $this->shareManager->createShare($share);
|
||||
$share->setStatus(IShare::STATUS_ACCEPTED);
|
||||
$this->shareManager->updateShare($share);
|
||||
Server::get(SetupManager::class)->tearDown();
|
||||
\OC_Util::tearDownFS();
|
||||
|
||||
[$sourceStorage] = Filesystem::resolvePath('/' . self::TEST_FILES_SHARING_API_USER1 . '/files/foo');
|
||||
|
||||
@@ -522,7 +521,7 @@ class CacheTest extends TestCase {
|
||||
$share = $this->shareManager->createShare($share);
|
||||
$share->setStatus(IShare::STATUS_ACCEPTED);
|
||||
$this->shareManager->updateShare($share);
|
||||
Server::get(SetupManager::class)->tearDown();
|
||||
\OC_Util::tearDownFS();
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||
$this->assertEquals('foo', Filesystem::file_get_contents('/sub/foo.txt'));
|
||||
@@ -561,7 +560,7 @@ class CacheTest extends TestCase {
|
||||
$share = $this->shareManager->createShare($share);
|
||||
$share->setStatus(IShare::STATUS_ACCEPTED);
|
||||
$this->shareManager->updateShare($share);
|
||||
Server::get(SetupManager::class)->tearDown();
|
||||
\OC_Util::tearDownFS();
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
@@ -572,7 +571,7 @@ class CacheTest extends TestCase {
|
||||
$this->assertCount(1, $results);
|
||||
}
|
||||
|
||||
public function testWatcherRootChange(): void {
|
||||
public function testWatcherRootChange() {
|
||||
$sourceStorage = new Temporary();
|
||||
$sourceStorage->mkdir('shared');
|
||||
$sourceStorage->file_put_contents('shared/foo.txt', 'foo');
|
||||
@@ -582,8 +581,7 @@ class CacheTest extends TestCase {
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||
|
||||
$rootFolder = Server::get(IRootFolder::class)
|
||||
->getUserFolder(self::TEST_FILES_SHARING_API_USER1);
|
||||
$rootFolder = \OC::$server->getUserFolder(self::TEST_FILES_SHARING_API_USER1);
|
||||
$node = $rootFolder->get('foo/shared');
|
||||
$this->assertEquals(3, $node->getSize());
|
||||
|
||||
@@ -596,14 +594,14 @@ class CacheTest extends TestCase {
|
||||
$share = $this->shareManager->createShare($share);
|
||||
$share->setStatus(IShare::STATUS_ACCEPTED);
|
||||
$this->shareManager->updateShare($share);
|
||||
Server::get(SetupManager::class)->tearDown();
|
||||
\OC_Util::tearDownFS();
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
$this->assertTrue($sourceStorage->rmdir('shared'));
|
||||
$view = Filesystem::getView();
|
||||
|
||||
$this->assertFalse(Server::get(IRootFolder::class)
|
||||
->getUserFolder(self::TEST_FILES_SHARING_API_USER2)
|
||||
->nodeExists('shared'));
|
||||
$sourceStorage->rmdir('shared');
|
||||
|
||||
$this->assertFalse($view->getFileInfo('shared'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2025 Robin Appelman <robin@icewind.nl>
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace OCA\Files_Sharing\Tests;
|
||||
|
||||
use OCA\Files_Sharing\ShareTargetValidator;
|
||||
use OCP\Constants;
|
||||
use OCP\Files\Config\ICachedMountInfo;
|
||||
use OCP\Files\Folder;
|
||||
use OCP\IUser;
|
||||
use OCP\Server;
|
||||
use OCP\Share\IShare;
|
||||
|
||||
#[\PHPUnit\Framework\Attributes\Group('DB')]
|
||||
class ShareTargetValidatorTest extends TestCase {
|
||||
private ShareTargetValidator $targetValidator;
|
||||
|
||||
private IUser $user2;
|
||||
protected string $folder2;
|
||||
|
||||
protected function setUp(): void {
|
||||
parent::setUp();
|
||||
|
||||
$this->folder = '/folder_share_storage_test';
|
||||
$this->folder2 = '/folder_share_storage_test2';
|
||||
|
||||
$this->filename = '/share-api-storage.txt';
|
||||
|
||||
|
||||
$this->view->mkdir($this->folder);
|
||||
$this->view->mkdir($this->folder2);
|
||||
|
||||
// save file with content
|
||||
$this->view->file_put_contents($this->filename, 'root file');
|
||||
$this->view->file_put_contents($this->folder . $this->filename, 'file in subfolder');
|
||||
$this->view->file_put_contents($this->folder2 . $this->filename, 'file in subfolder2');
|
||||
|
||||
$this->targetValidator = Server::get(ShareTargetValidator::class);
|
||||
$this->user2 = $this->createMock(IUser::class);
|
||||
$this->user2->method('getUID')
|
||||
->willReturn(self::TEST_FILES_SHARING_API_USER2);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* test if the mount point moves up if the parent folder no longer exists
|
||||
*/
|
||||
public function testShareMountLoseParentFolder(): void {
|
||||
// share to user
|
||||
$share = $this->share(
|
||||
IShare::TYPE_USER,
|
||||
$this->folder,
|
||||
self::TEST_FILES_SHARING_API_USER1,
|
||||
self::TEST_FILES_SHARING_API_USER2,
|
||||
Constants::PERMISSION_ALL);
|
||||
$this->shareManager->acceptShare($share, self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
$share->setTarget('/foo/bar' . $this->folder);
|
||||
$this->shareManager->moveShare($share, self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
$share = $this->shareManager->getShareById($share->getFullId());
|
||||
$this->assertSame('/foo/bar' . $this->folder, $share->getTarget());
|
||||
|
||||
$this->targetValidator->verifyMountPoint($this->user2, $share, [], [$share]);
|
||||
|
||||
$share = $this->shareManager->getShareById($share->getFullId());
|
||||
$this->assertSame($this->folder, $share->getTarget());
|
||||
|
||||
//cleanup
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||
$this->shareManager->deleteShare($share);
|
||||
$this->view->unlink($this->folder);
|
||||
}
|
||||
|
||||
/**
|
||||
* test if the mount point gets renamed if a folder exists at the target
|
||||
*/
|
||||
public function testShareMountOverFolder(): void {
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||
$this->view2->mkdir('bar');
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||
|
||||
// share to user
|
||||
$share = $this->share(
|
||||
IShare::TYPE_USER,
|
||||
$this->folder,
|
||||
self::TEST_FILES_SHARING_API_USER1,
|
||||
self::TEST_FILES_SHARING_API_USER2,
|
||||
Constants::PERMISSION_ALL);
|
||||
$this->shareManager->acceptShare($share, self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
$share->setTarget('/bar');
|
||||
$this->shareManager->moveShare($share, self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
$share = $this->shareManager->getShareById($share->getFullId());
|
||||
|
||||
$this->targetValidator->verifyMountPoint($this->user2, $share, [], [$share]);
|
||||
|
||||
$share = $this->shareManager->getShareById($share->getFullId());
|
||||
$this->assertSame('/bar (2)', $share->getTarget());
|
||||
|
||||
//cleanup
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||
$this->shareManager->deleteShare($share);
|
||||
$this->view->unlink($this->folder);
|
||||
}
|
||||
|
||||
/**
|
||||
* test if the mount point gets renamed if another share exists at the target
|
||||
*/
|
||||
public function testShareMountOverShare(): void {
|
||||
// share to user
|
||||
$share2 = $this->share(
|
||||
IShare::TYPE_USER,
|
||||
$this->folder2,
|
||||
self::TEST_FILES_SHARING_API_USER1,
|
||||
self::TEST_FILES_SHARING_API_USER2,
|
||||
Constants::PERMISSION_ALL);
|
||||
$this->shareManager->acceptShare($share2, self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
$conflictingMount = $this->createMock(ICachedMountInfo::class);
|
||||
$this->targetValidator->verifyMountPoint($this->user2, $share2, [
|
||||
'/' . $this->user2->getUID() . '/files' . $this->folder2 . '/' => $conflictingMount
|
||||
], [$share2]);
|
||||
|
||||
$share2 = $this->shareManager->getShareById($share2->getFullId());
|
||||
|
||||
$this->assertSame("{$this->folder2} (2)", $share2->getTarget());
|
||||
|
||||
//cleanup
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||
$this->shareManager->deleteShare($share2);
|
||||
$this->view->unlink($this->folder);
|
||||
}
|
||||
}
|
||||
@@ -8,12 +8,8 @@
|
||||
namespace OCA\Files_Sharing\Tests;
|
||||
|
||||
use OC\Files\Filesystem;
|
||||
use OC\Files\View;
|
||||
use OC\Memcache\ArrayCache;
|
||||
use OCA\Files_Sharing\MountProvider;
|
||||
use OCA\Files_Sharing\SharedMount;
|
||||
use OCP\Constants;
|
||||
use OCP\ICacheFactory;
|
||||
use OCP\IDBConnection;
|
||||
use OCP\IGroupManager;
|
||||
use OCP\IUserManager;
|
||||
@@ -25,14 +21,10 @@ use OCP\Share\IShare;
|
||||
*/
|
||||
#[\PHPUnit\Framework\Attributes\Group('SLOWDB')]
|
||||
class SharedMountTest extends TestCase {
|
||||
private IGroupManager $groupManager;
|
||||
private IUserManager $userManager;
|
||||
|
||||
/** @var IGroupManager */
|
||||
private $groupManager;
|
||||
|
||||
/** @var IUserManager */
|
||||
private $userManager;
|
||||
|
||||
private $folder2;
|
||||
private string $folder2;
|
||||
|
||||
protected function setUp(): void {
|
||||
parent::setUp();
|
||||
@@ -68,78 +60,6 @@ class SharedMountTest extends TestCase {
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* test if the mount point moves up if the parent folder no longer exists
|
||||
*/
|
||||
public function testShareMountLoseParentFolder(): void {
|
||||
|
||||
// share to user
|
||||
$share = $this->share(
|
||||
IShare::TYPE_USER,
|
||||
$this->folder,
|
||||
self::TEST_FILES_SHARING_API_USER1,
|
||||
self::TEST_FILES_SHARING_API_USER2,
|
||||
Constants::PERMISSION_ALL);
|
||||
$this->shareManager->acceptShare($share, self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
$share->setTarget('/foo/bar' . $this->folder);
|
||||
$this->shareManager->moveShare($share, self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
$share = $this->shareManager->getShareById($share->getFullId());
|
||||
$this->assertSame('/foo/bar' . $this->folder, $share->getTarget());
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||
// share should have moved up
|
||||
|
||||
$share = $this->shareManager->getShareById($share->getFullId());
|
||||
$this->assertSame($this->folder, $share->getTarget());
|
||||
|
||||
//cleanup
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||
$this->shareManager->deleteShare($share);
|
||||
$this->view->unlink($this->folder);
|
||||
}
|
||||
|
||||
public function testDeleteParentOfMountPoint(): void {
|
||||
// share to user
|
||||
$share = $this->share(
|
||||
IShare::TYPE_USER,
|
||||
$this->folder,
|
||||
self::TEST_FILES_SHARING_API_USER1,
|
||||
self::TEST_FILES_SHARING_API_USER2,
|
||||
Constants::PERMISSION_ALL
|
||||
);
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||
$user2View = new View('/' . self::TEST_FILES_SHARING_API_USER2 . '/files');
|
||||
$this->assertTrue($user2View->file_exists($this->folder));
|
||||
|
||||
// create a local folder
|
||||
$result = $user2View->mkdir('localfolder');
|
||||
$this->assertTrue($result);
|
||||
|
||||
// move mount point to local folder
|
||||
$result = $user2View->rename($this->folder, '/localfolder/' . $this->folder);
|
||||
$this->assertTrue($result);
|
||||
|
||||
// mount point in the root folder should no longer exist
|
||||
$this->assertFalse($user2View->is_dir($this->folder));
|
||||
|
||||
// delete the local folder
|
||||
$result = $user2View->unlink('/localfolder');
|
||||
$this->assertTrue($result);
|
||||
|
||||
//enforce reload of the mount points
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
//mount point should be back at the root
|
||||
$this->assertTrue($user2View->is_dir($this->folder));
|
||||
|
||||
//cleanup
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||
$this->view->unlink($this->folder);
|
||||
}
|
||||
|
||||
public function testMoveSharedFile(): void {
|
||||
$share = $this->share(
|
||||
IShare::TYPE_USER,
|
||||
@@ -313,111 +233,6 @@ class SharedMountTest extends TestCase {
|
||||
$testGroup->removeUser($user2);
|
||||
$testGroup->removeUser($user3);
|
||||
}
|
||||
|
||||
/**
|
||||
* test if the mount point gets renamed if a folder exists at the target
|
||||
*/
|
||||
public function testShareMountOverFolder(): void {
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||
$this->view2->mkdir('bar');
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||
|
||||
// share to user
|
||||
$share = $this->share(
|
||||
IShare::TYPE_USER,
|
||||
$this->folder,
|
||||
self::TEST_FILES_SHARING_API_USER1,
|
||||
self::TEST_FILES_SHARING_API_USER2,
|
||||
Constants::PERMISSION_ALL);
|
||||
$this->shareManager->acceptShare($share, self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
$share->setTarget('/bar');
|
||||
$this->shareManager->moveShare($share, self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
$share = $this->shareManager->getShareById($share->getFullId());
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||
// share should have been moved
|
||||
|
||||
$share = $this->shareManager->getShareById($share->getFullId());
|
||||
$this->assertSame('/bar (2)', $share->getTarget());
|
||||
|
||||
//cleanup
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||
$this->shareManager->deleteShare($share);
|
||||
$this->view->unlink($this->folder);
|
||||
}
|
||||
|
||||
/**
|
||||
* test if the mount point gets renamed if another share exists at the target
|
||||
*/
|
||||
public function testShareMountOverShare(): void {
|
||||
// create a shared cache
|
||||
$caches = [];
|
||||
$cacheFactory = $this->createMock(ICacheFactory::class);
|
||||
$cacheFactory->method('createLocal')
|
||||
->willReturnCallback(function (string $prefix) use (&$caches) {
|
||||
if (!isset($caches[$prefix])) {
|
||||
$caches[$prefix] = new ArrayCache($prefix);
|
||||
}
|
||||
return $caches[$prefix];
|
||||
});
|
||||
$cacheFactory->method('createDistributed')
|
||||
->willReturnCallback(function (string $prefix) use (&$caches) {
|
||||
if (!isset($caches[$prefix])) {
|
||||
$caches[$prefix] = new ArrayCache($prefix);
|
||||
}
|
||||
return $caches[$prefix];
|
||||
});
|
||||
|
||||
// hack to overwrite the cache factory, we can't use the proper "overwriteService" since the mount provider is created before this test is called
|
||||
$mountProvider = Server::get(MountProvider::class);
|
||||
$reflectionClass = new \ReflectionClass($mountProvider);
|
||||
$reflectionCacheFactory = $reflectionClass->getProperty('cacheFactory');
|
||||
$reflectionCacheFactory->setValue($mountProvider, $cacheFactory);
|
||||
|
||||
// share to user
|
||||
$share = $this->share(
|
||||
IShare::TYPE_USER,
|
||||
$this->folder,
|
||||
self::TEST_FILES_SHARING_API_USER1,
|
||||
self::TEST_FILES_SHARING_API_USER2,
|
||||
Constants::PERMISSION_ALL);
|
||||
$this->shareManager->acceptShare($share, self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
$share->setTarget('/foobar');
|
||||
$this->shareManager->moveShare($share, self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
|
||||
// share to user
|
||||
$share2 = $this->share(
|
||||
IShare::TYPE_USER,
|
||||
$this->folder2,
|
||||
self::TEST_FILES_SHARING_API_USER1,
|
||||
self::TEST_FILES_SHARING_API_USER2,
|
||||
Constants::PERMISSION_ALL);
|
||||
$this->shareManager->acceptShare($share2, self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
$share2->setTarget('/foobar');
|
||||
$this->shareManager->moveShare($share2, self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||
// one of the shares should have been moved
|
||||
|
||||
$share = $this->shareManager->getShareById($share->getFullId());
|
||||
$share2 = $this->shareManager->getShareById($share2->getFullId());
|
||||
|
||||
// we don't know or care which share got the "(2)" just that one of them did
|
||||
$this->assertNotEquals($share->getTarget(), $share2->getTarget());
|
||||
$this->assertSame('/foobar', min($share->getTarget(), $share2->getTarget()));
|
||||
$this->assertSame('/foobar (2)', max($share->getTarget(), $share2->getTarget()));
|
||||
|
||||
//cleanup
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||
$this->shareManager->deleteShare($share);
|
||||
$this->view->unlink($this->folder);
|
||||
}
|
||||
}
|
||||
|
||||
class DummyTestClassSharedMount extends SharedMount {
|
||||
|
||||
@@ -10,7 +10,6 @@ namespace OCA\Files_Sharing\Tests;
|
||||
use OC\Files\Cache\FailedCache;
|
||||
use OC\Files\Filesystem;
|
||||
use OC\Files\Storage\FailedStorage;
|
||||
use OC\Files\Storage\Storage;
|
||||
use OC\Files\Storage\Temporary;
|
||||
use OC\Files\View;
|
||||
use OCA\Files_Sharing\SharedStorage;
|
||||
@@ -60,51 +59,6 @@ class SharedStorageTest extends TestCase {
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* if the parent of the mount point is gone then the mount point should move up
|
||||
*/
|
||||
public function testParentOfMountPointIsGone(): void {
|
||||
|
||||
// share to user
|
||||
$share = $this->share(
|
||||
IShare::TYPE_USER,
|
||||
$this->folder,
|
||||
self::TEST_FILES_SHARING_API_USER1,
|
||||
self::TEST_FILES_SHARING_API_USER2,
|
||||
Constants::PERMISSION_ALL
|
||||
);
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||
$user2View = new View('/' . self::TEST_FILES_SHARING_API_USER2 . '/files');
|
||||
$this->assertTrue($user2View->file_exists($this->folder));
|
||||
|
||||
// create a local folder
|
||||
$result = $user2View->mkdir('localfolder');
|
||||
$this->assertTrue($result);
|
||||
|
||||
// move mount point to local folder
|
||||
$result = $user2View->rename($this->folder, '/localfolder/' . $this->folder);
|
||||
$this->assertTrue($result);
|
||||
|
||||
// mount point in the root folder should no longer exist
|
||||
$this->assertFalse($user2View->is_dir($this->folder));
|
||||
|
||||
// delete the local folder
|
||||
/** @var Storage $storage */
|
||||
[$storage, $internalPath] = Filesystem::resolvePath('/' . self::TEST_FILES_SHARING_API_USER2 . '/files/localfolder');
|
||||
$storage->rmdir($internalPath);
|
||||
|
||||
//enforce reload of the mount points
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
//mount point should be back at the root
|
||||
$this->assertTrue($user2View->is_dir($this->folder));
|
||||
|
||||
//cleanup
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||
$this->view->unlink($this->folder);
|
||||
}
|
||||
|
||||
public function testRenamePartFile(): void {
|
||||
|
||||
// share to user
|
||||
@@ -466,57 +420,6 @@ class SharedStorageTest extends TestCase {
|
||||
$this->shareManager->deleteShare($share);
|
||||
}
|
||||
|
||||
public function testNameConflict(): void {
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||
$view1 = new View('/' . self::TEST_FILES_SHARING_API_USER1 . '/files');
|
||||
$view1->mkdir('foo');
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER3);
|
||||
$view3 = new View('/' . self::TEST_FILES_SHARING_API_USER3 . '/files');
|
||||
$view3->mkdir('foo');
|
||||
|
||||
// share a folder with the same name from two different users to the same user
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||
|
||||
$share1 = $this->share(
|
||||
IShare::TYPE_GROUP,
|
||||
'foo',
|
||||
self::TEST_FILES_SHARING_API_USER1,
|
||||
self::TEST_FILES_SHARING_API_GROUP1,
|
||||
Constants::PERMISSION_ALL
|
||||
);
|
||||
$this->shareManager->acceptShare($share1, self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER3);
|
||||
|
||||
$share2 = $this->share(
|
||||
IShare::TYPE_GROUP,
|
||||
'foo',
|
||||
self::TEST_FILES_SHARING_API_USER3,
|
||||
self::TEST_FILES_SHARING_API_GROUP1,
|
||||
Constants::PERMISSION_ALL
|
||||
);
|
||||
$this->shareManager->acceptShare($share2, self::TEST_FILES_SHARING_API_USER2);
|
||||
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||
$view2 = new View('/' . self::TEST_FILES_SHARING_API_USER2 . '/files');
|
||||
|
||||
$this->assertTrue($view2->file_exists('/foo'));
|
||||
$this->assertTrue($view2->file_exists('/foo (2)'));
|
||||
|
||||
$mount = $view2->getMount('/foo');
|
||||
$this->assertInstanceOf('\OCA\Files_Sharing\SharedMount', $mount);
|
||||
/** @var SharedStorage $storage */
|
||||
$storage = $mount->getStorage();
|
||||
|
||||
$this->assertEquals(self::TEST_FILES_SHARING_API_USER1, $storage->getOwner(''));
|
||||
|
||||
$this->shareManager->deleteShare($share1);
|
||||
$this->shareManager->deleteShare($share2);
|
||||
}
|
||||
|
||||
public function testOwnerPermissions(): void {
|
||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||
|
||||
|
||||
@@ -104,6 +104,8 @@ class VersioningTest extends \Test\TestCase {
|
||||
\OC::registerShareHooks(Server::get(SystemConfig::class));
|
||||
\OC::$server->boot();
|
||||
|
||||
// ensure both users have an up-to-date state
|
||||
self::loginHelper(self::TEST_VERSIONS_USER2);
|
||||
self::loginHelper(self::TEST_VERSIONS_USER);
|
||||
$this->rootView = new View();
|
||||
if (!$this->rootView->file_exists(self::USERS_VERSIONS_ROOT)) {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
{"version":3,"sourceRoot":"","sources":["settings.scss","../../../core/css/variables.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA,GCEA;AAAA;AAAA;AAAA,GCFA;AAAA;AAAA;AAAA,GFUC,0BACC,WAKF,OACC,WAID,4BE2BC,2CFvBD,mBEuBC,kDFnBD,qBEmBC,yCFfD,0BEeC,wCFXD,oEEWC,2CFPD,oCACC,oBACA,0BACA,+BACA,mBAGD,4BACC,oBACA,kCAGD,yBACC,WAIA,wCACC,kBACA,yDACC,gBAIA,mOACC,WAKH,uCACC,aAGD,sCACC,WAED,uDACC,WAKD,gBACC,WAIF,mBACC,aACA,aACA,iBACA,uEACA,qBAEA,4BACC,kBACA,SAEA,+BACC,mBAIA,qCACC,iBAKH,kCACC,sBACA,mBACA,gBAGD,mGACC,4BACA,0BACA,WAMF,oBACC,kBACA,wCACC,0BAIF,aACC,oBACA,4CACA,kFACA,8CACA,wCACA,2CACA,8CACA,6CACA,mBACA,yCAEA,sCAEC,oDAGD,+CAEC,6DACA,oDAGD,6BACC,qCACA,WACA,YAIF,6BACC,oBACA,kCAEA,mCACC,WAIA,oCACC,kBACA,oBACA,iBACA,2BACA,WACA,mBACA,QAEA,0CACC,mBACA,uBACA,gBAKD,gIACC,kBACA,qBACA,UACA,oBACA,YAKH,qCACC,kBACA,wBACA,MACA,SAEA,yCACC,qBAIF,4CACC,eAGD,4CACC,sBACA,WACA,YACA,YAMF,qBACC,aACA,sBACA,SACA,YAEA,uBACC,aAGD,uCACC,sBACA,cACA,yBAIF,gBACC,YAIA,2BACC,kCAGD,mBACC,YAIF,sCAEC,aAGD,eACC,WAGD,YACC,qBAIA,aACC,WACA,yBACA,YAGD,WACC,WACA,yBACA,YAMD,oBACC,sBAGD,iBACC,eAOD,oBACC,gBAGD,wBACC,yBAGD,oDACC,WACA,YACA,wCAOD,oBACC,UACA,cACA,gBACA,uBAGD,2BACC,UAKD,oCAEC,cAKD,wEAEC,aAIF,gBACC,kBACA,QACA,mBAEA,sBACC,YAGD,sBACC,iBAKF,WACC,WAEA,cACC,WACA,UACA,uBACA,4CACA,iBACA,mBAGD,cACC,4CACA,UACA,uBACA,iBACA,mBAKD,gBACC,0BACA,cACA,eACA,uBACA,gBAGD,wBACC,0BAEA,gCACC,kBAIF,sCACC,kBAGD,sDAEC,cACA,eACA,eAEA,0EACC,UACA,qBACA,uBACA,gBAIF,8BACC,eAGD,kCACC,wBACA,cAIF,2BACC,mBAMA,oBACC,mBACA,sBACA,WAGD,gCACC,0BAIA,gGACC,cAOH,SACC,gBAEA,0BACC,4CAID,YACC,oBACA,mBACA,uBACA,eACA,iBACA,gBACA,aAEA,uBACC,aACA,mBACA,uBACA,oCACA,qCACA,yDACA,sBACA,oCAKF,WACC,kBACA,kBACA,oCACA,gBAKF,KACC,mBACA,mBAGD,SACC,aAGD,mBACC,mBAGD,eACC,gBAIA,sBACC,aAGD,YACC,oBAGD,kBACC,0BAGD,yBACC,0BAGD,sBACC,0BAGD,oCACC,uBAIF,yCACC,uBAGD,wBACC,qBAGD,2BACC,wBAEA,gBACA,aACA,yBACA,sBAKD,WACC,kBACA,2BACA,WAGD,2DAGC,qBAIA,mCACC,qBACA,YACA,eAGD,+EAEC,YAIF,yBACC,mCACC,YACA,iBACA,cACA,iDAIF,eACC,WAGD,SACC,yBAGD,QACC,qBACA,YACA,WACA,2BAEA,gBACC,kBAIF,qBACC,sBACA,qBACA,YACA,iBAGD,kBACC,qBACA,gBAIA,aACC,sCACA,mCAGD,WACC,oCAGD,mBACC,sCACA,oBAMF,8CACC,yBACA,YAGD,wBACC,WACA,YACA,mBACA,kBACA,+DAGD,SACC,UAGD,eACC,oCACA,wBAGD,UACI,+CAGJ,2BACE,GACE,YAGJ,mCACE,GACE,WAKH,wBACC,qBACA,eACA,mCACA","file":"settings.css"}
|
||||
{"version":3,"sourceRoot":"","sources":["settings.scss","../../../core/css/variables.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA,GCEA;AAAA;AAAA;AAAA,GCFA;AAAA;AAAA;AAAA,GFUC,0BACC,WAKF,OACC,WAID,4BE2BC,2CFvBD,mBEuBC,kDFnBD,qBEmBC,yCFfD,0BEeC,wCFXD,oEEWC,2CFPD,oCACC,oBACA,0BACA,+BACA,mBAGD,4BACC,oBACA,kCAGD,yBACC,WAIA,wCACC,kBACA,yDACC,gBAIA,mOACC,WAKH,uCACC,aAGD,sCACC,WAED,uDACC,WAKD,gBACC,WAIF,mBACC,aACA,aACA,iBACA,uEACA,qBAEA,4BACC,kBACA,SAEA,+BACC,mBAIA,qCACC,iBAKH,kCACC,sBACA,mBACA,gBAGD,mGACC,4BACA,0BACA,WAMF,oBACC,kBACA,wCACC,0BAIF,aACC,oBACA,4CACA,kFACA,8CACA,wCACA,2CACA,8CACA,6CACA,mBACA,yCAEA,sCAEC,oDAGD,+CAEC,6DACA,oDAGD,6BACC,qCACA,WACA,YAIF,6BACC,oBACA,kCAEA,mCACC,WAIA,oCACC,kBACA,oBACA,iBACA,2BACA,WACA,mBACA,QAEA,0CACC,mBACA,uBACA,gBAKD,gIACC,kBACA,qBACA,UACA,oBACA,YAKH,qCACC,kBACA,wBACA,MACA,SAEA,yCACC,qBAIF,4CACC,eAGD,4CACC,sBACA,WACA,YACA,YAMF,qBACC,aACA,sBACA,SACA,YAEA,uBACC,aAGD,uCACC,sBACA,cACA,yBAIF,gBACC,YAIA,2BACC,kCAGD,mBACC,YAIF,sCAEC,aAGD,eACC,WAGD,YACC,qBAIA,aACC,WACA,yBACA,YAGD,WACC,WACA,yBACA,YAMD,oBACC,sBAGD,iBACC,eAKD,iCACC,aACA,eACA,sBACA,SACA,gDACC,aACA,eACA,sBACA,sDACC,oBAIF,kGACC,cACA,YACA,gBAKA,iEACC,kBACA,UAED,+EACC,oBACA,oBACA,wBACA,qBAIF,wCACC,WAGD,iDACC,qBAGD,sDACC,kBACA,qBACA,WACA,0BACA,eACA,gBACA,WAQF,oBACC,gBAGD,wBACC,yBAGD,oDACC,WACA,YACA,wCAOD,oBACC,UACA,cACA,gBACA,uBAGD,2BACC,UAKD,oCAEC,cAKD,wEAEC,aAIF,gBACC,kBACA,QACA,mBAEA,sBACC,YAGD,sBACC,iBAKF,WACC,WAEA,cACC,WACA,UACA,uBACA,4CACA,iBACA,mBAGD,cACC,4CACA,UACA,uBACA,iBACA,mBAKD,gBACC,0BACA,cACA,eACA,uBACA,gBAGD,wBACC,0BAEA,gCACC,kBAIF,sCACC,kBAGD,sDAEC,cACA,eACA,eAEA,0EACC,UACA,qBACA,uBACA,gBAIF,8BACC,eAGD,kCACC,wBACA,cAIF,2BACC,mBAMA,oBACC,mBACA,sBACA,WAGD,gCACC,0BAIA,gGACC,cAOH,SACC,gBAEA,0BACC,4CAID,YACC,oBACA,mBACA,uBACA,eACA,iBACA,gBACA,aAEA,uBACC,aACA,mBACA,uBACA,oCACA,qCACA,yDACA,sBACA,oCAKF,WACC,kBACA,kBACA,oCACA,gBAKF,KACC,mBACA,mBAGD,SACC,aAGD,mBACC,mBAGD,eACC,gBAIA,sBACC,aAGD,YACC,oBAGD,kBACC,0BAGD,yBACC,0BAGD,sBACC,0BAGD,oCACC,uBAIF,yCACC,uBAGD,wBACC,qBAGD,2BACC,wBAEA,gBACA,aACA,yBACA,sBAKD,WACC,kBACA,2BACA,WAGD,2DAGC,qBAIA,mCACC,qBACA,YACA,eAGD,+EAEC,YAIF,yBACC,mCACC,YACA,iBACA,cACA,iDAIF,eACC,WAGD,SACC,yBAGD,QACC,qBACA,YACA,WACA,2BAEA,gBACC,kBAIF,qBACC,sBACA,qBACA,YACA,iBAGD,kBACC,qBACA,gBAIA,aACC,sCACA,mCAGD,WACC,oCAGD,mBACC,sCACA,oBAMF,8CACC,yBACA,YAGD,wBACC,WACA,YACA,mBACA,kBACA,+DAGD,SACC,UAGD,eACC,oCACA,wBAGD,UACI,+CAGJ,2BACE,GACE,YAGJ,mCACE,GACE,WAKH,wBACC,qBACA,eACA,mCACA","file":"settings.css"}
|
||||
@@ -291,6 +291,61 @@ table.nostyle {
|
||||
}
|
||||
}
|
||||
|
||||
#security-password {
|
||||
#passwordform {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: column;
|
||||
gap: 1rem;
|
||||
.input-control {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: column;
|
||||
label {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
#pass1, .personal-show-container {
|
||||
flex-shrink: 1;
|
||||
width: 300px;
|
||||
min-width: 150px;
|
||||
}
|
||||
|
||||
// Extremely fragile code, to be replaced by PasswordField component soon
|
||||
.personal-show-container {
|
||||
#pass2 {
|
||||
position: relative;
|
||||
top: 0.5rem;
|
||||
}
|
||||
.personal-show-label {
|
||||
top: 34px !important;
|
||||
margin-inline-end: 0;
|
||||
margin-top: 0 !important;
|
||||
inset-inline-end: 3px;
|
||||
}
|
||||
}
|
||||
|
||||
#pass2 {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.password-state {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.strengthify-wrapper {
|
||||
position: absolute;
|
||||
inset-inline-start: 0;
|
||||
width: 100%;
|
||||
border-radius: 0 0 2px 2px;
|
||||
margin-top: 5px;
|
||||
overflow: hidden;
|
||||
height: 3px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Two-Factor Authentication (2FA) */
|
||||
|
||||
#two-factor-auth {
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
/* global OC */
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-FileCopyrightText: 2011-2016 ownCloud, Inc.
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
if ($('#pass2').length) {
|
||||
$('#pass2').showPassword().keyup()
|
||||
}
|
||||
|
||||
const removeloader = function() {
|
||||
setTimeout(function() {
|
||||
if ($('.password-state').length > 0) {
|
||||
$('.password-state').remove()
|
||||
}
|
||||
}, 5000)
|
||||
}
|
||||
|
||||
$('#passwordbutton').click(function() {
|
||||
if ($('#pass1').val() !== '' && $('#pass2').val() !== '') {
|
||||
// Serialize the data
|
||||
const post = $('#passwordform').serialize()
|
||||
$('#passwordchanged').hide()
|
||||
$('#passworderror').hide()
|
||||
$('#passwordbutton').attr('disabled', 'disabled')
|
||||
$('#passwordbutton').after("<span class='password-loading icon icon-loading-small-dark password-state'></span>")
|
||||
$('.personal-show-label').hide()
|
||||
// Ajax foo
|
||||
$.post(OC.generateUrl('/settings/personal/changepassword'), post, function(data) {
|
||||
if (data.status === 'success') {
|
||||
$('#passwordbutton').after("<span class='checkmark icon icon-checkmark password-state'></span>")
|
||||
removeloader()
|
||||
$('#pass1').val('')
|
||||
$('#pass2').val('').change()
|
||||
}
|
||||
if (typeof (data.data) !== 'undefined') {
|
||||
OC.msg.finishedSaving('#password-error-msg', data)
|
||||
} else {
|
||||
OC.msg.finishedSaving(
|
||||
'#password-error-msg',
|
||||
{
|
||||
status: 'error',
|
||||
data: {
|
||||
message: t('settings', 'Unable to change password'),
|
||||
},
|
||||
},
|
||||
)
|
||||
}
|
||||
$('.personal-show-label').show()
|
||||
$('.password-loading').remove()
|
||||
$('#passwordbutton').removeAttr('disabled')
|
||||
})
|
||||
return false
|
||||
} else {
|
||||
OC.msg.finishedSaving(
|
||||
'#password-error-msg',
|
||||
{
|
||||
status: 'error',
|
||||
data: {
|
||||
message: t('settings', 'Unable to change password'),
|
||||
},
|
||||
},
|
||||
)
|
||||
return false
|
||||
}
|
||||
})
|
||||
|
||||
$('#pass2').strengthify({
|
||||
zxcvbn: OC.linkTo('core', 'vendor/zxcvbn/dist/zxcvbn.js'),
|
||||
titles: [
|
||||
t('settings', 'Very weak password'),
|
||||
t('settings', 'Weak password'),
|
||||
t('settings', 'So-so password'),
|
||||
t('settings', 'Good password'),
|
||||
t('settings', 'Strong password'),
|
||||
],
|
||||
drawTitles: true,
|
||||
$addAfter: $('input[name="newpassword-clone"]'),
|
||||
nonce: btoa(OC.requestToken),
|
||||
})
|
||||
})
|
||||
@@ -40,8 +40,6 @@ OC.L10N.register(
|
||||
"Settings" : "Seaded",
|
||||
"Could not remove app." : "Rakenduse eemaldamine ei õnnestunud.",
|
||||
"Could not update app." : "Rakenduse uuendamine ei õnnestunud.",
|
||||
"One time login" : "Ühekordne sisselogimise võimalus",
|
||||
"QR Code login" : "QR-koodiga sisselogimine",
|
||||
"Wrong password" : "Vale salasõna",
|
||||
"Unable to change personal password" : "Isikliku salasõna muutmine ei õnnestu",
|
||||
"Saved" : "Salvestatud",
|
||||
|
||||
@@ -38,8 +38,6 @@
|
||||
"Settings" : "Seaded",
|
||||
"Could not remove app." : "Rakenduse eemaldamine ei õnnestunud.",
|
||||
"Could not update app." : "Rakenduse uuendamine ei õnnestunud.",
|
||||
"One time login" : "Ühekordne sisselogimise võimalus",
|
||||
"QR Code login" : "QR-koodiga sisselogimine",
|
||||
"Wrong password" : "Vale salasõna",
|
||||
"Unable to change personal password" : "Isikliku salasõna muutmine ei õnnestu",
|
||||
"Saved" : "Salvestatud",
|
||||
|
||||
@@ -21,13 +21,10 @@ OC.L10N.register(
|
||||
"Security" : "Segurança",
|
||||
"You successfully logged in using two-factor authentication (%1$s)" : "Autenticado com sucesso utilizando autenticação de dois fatores (%1$s)",
|
||||
"A login attempt using two-factor authentication failed (%1$s)" : "Tentativa falhada de autenticação utilizando dois fatores (%1$s)",
|
||||
"Remote wipe was started on %1$s" : "Eliminação remota iniciada em %1$s ",
|
||||
"Remote wipe has finished on %1$s" : "Eliminação remota terminou em %1$s",
|
||||
"Your <strong>password</strong> or <strong>email</strong> was modified" : "A <strong>password</strong> ou <strong>email</strong> foram modificados",
|
||||
"Settings" : "Configurações",
|
||||
"Could not remove app." : "Não foi possível remover a aplicação",
|
||||
"Could not update app." : "Não foi possível atualizar a aplicação",
|
||||
"QR Code login" : "Iniciar sessão com código QR",
|
||||
"Wrong password" : "Palavra-passe errada",
|
||||
"Unable to change personal password" : "Não foi possível mudar a palavra-passe pessoal",
|
||||
"Saved" : "Guardado",
|
||||
@@ -42,16 +39,11 @@ OC.L10N.register(
|
||||
"If you received this email, the email configuration seems to be correct." : "Se recebeu este email, a configuração do serviço de email deverá estar correta.",
|
||||
"Email could not be sent. Check your mail server log" : "O email não pode ser enviado. Por favor verifique os logs do seu servidor de e-mail.",
|
||||
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu um problema ao enviar o e-mail. Por favor verifique as suas definições. (Erro: %s)",
|
||||
"Recently active" : "Ativo recentemente",
|
||||
"Disabled accounts" : "Contas desativadas",
|
||||
"Invalid account" : "Conta inválida",
|
||||
"Invalid mail address" : "Endereço de correio eletrónico inválido",
|
||||
"Settings saved" : "Definições guardadas",
|
||||
"Unable to change full name" : "Não foi possível alterar o seu nome completo",
|
||||
"Unable to change email address" : "Não foi possível alterar o seu endereço de e-mail",
|
||||
"Unable to set invalid phone number" : "Número de telefone inválido",
|
||||
"Unable to set invalid website" : "Website inválido",
|
||||
"Some account data was invalid" : "Alguns dados são inválidos",
|
||||
"In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Por forma a validar a sua conta de Twitter, por favor publique o seguinte Twitter ( garanta que a publicação não contém quebras de linha):",
|
||||
"In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Por forma de validar o Website, por favor publique o conteúdo seguinte na sua raiz em 'well-known/CloudIdVerificationCode.txt' (garanta que o texto completo se encontra numa única linha):",
|
||||
"%1$s changed your password on %2$s." : "%1$s modificou a sua senha em %2$s.",
|
||||
@@ -69,7 +61,6 @@ OC.L10N.register(
|
||||
"Welcome aboard" : "Bem-vindo a bordo",
|
||||
"Welcome aboard %s" : "Bem-vindo a bordo %s",
|
||||
"Welcome to your %s account, you can add, protect, and share your data." : "Bem-vindo à conta %s, aqui pode adicionar, proteger e partilhar os seus dados.",
|
||||
"Your Login is: %s" : "O seu Login é: %s",
|
||||
"Set your password" : "Escolher senha",
|
||||
"Go to %s" : "Ir para %s",
|
||||
"Install Client" : "Instalar Cliente",
|
||||
@@ -142,7 +133,6 @@ OC.L10N.register(
|
||||
"Description" : "Descrição",
|
||||
"View in store" : "Ver na loja",
|
||||
"Visit website" : "Visitar o website",
|
||||
"Usage documentation" : "Documentação de utilização",
|
||||
"Admin documentation" : "Documentação de administrador",
|
||||
"Developer documentation" : "Documentação de programador",
|
||||
"Details" : "Detalhes",
|
||||
@@ -220,15 +210,11 @@ OC.L10N.register(
|
||||
"Help translate" : "Ajude a traduzir",
|
||||
"Week starts on {firstDayOfWeek}" : "Semana começa em {firstDayOfWeek}",
|
||||
"Your phone number" : "O seu número de telefone",
|
||||
"Edit your Profile visibility" : "Editar a visibilidade do seu Perfil",
|
||||
"Enable profile" : "Ativar perfil",
|
||||
"Add" : "Adicionar",
|
||||
"Create" : "Criar",
|
||||
"Change" : "Mudar",
|
||||
"Delete" : "Eliminar",
|
||||
"Reshare" : "Partilhar novamente",
|
||||
"Enabled applications" : "Aplicações ativadas",
|
||||
"Disabled applications" : "Aplicações desativadas",
|
||||
"Setup warnings" : "Configurar avisos",
|
||||
"Display name" : "Nome a exibir",
|
||||
"Email" : "Email",
|
||||
@@ -241,9 +227,6 @@ OC.L10N.register(
|
||||
"Storage location" : "Localização do armazenamento",
|
||||
"Last login" : "Último início de sessão",
|
||||
"{size} used" : "{size} utilizado",
|
||||
"Delete account" : "Remover conta",
|
||||
"Disable account" : "Desativar conta",
|
||||
"Enable account" : "Ativar conta",
|
||||
"Done" : "Concluído",
|
||||
"Edit" : "Editar",
|
||||
"Visibility" : "Visibilidade",
|
||||
@@ -319,10 +302,6 @@ OC.L10N.register(
|
||||
"Unable to retrieve the group list" : "Não foi possível recolher a lista de grupo",
|
||||
"This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta app não tem a versão mínima do Nextcloud atribuída. Isto será um erro no futuro.",
|
||||
"This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta app não tem a versão máxima do Nextcloud atribuída. Isto será um erro no futuro.",
|
||||
"Loading accounts …" : "A carregar contas ...",
|
||||
"Loading account …" : "A carregar a conta ...",
|
||||
"Adding your device …" : "A adicionar o seu dispositivo ...",
|
||||
"Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Por favor, verifique novamente os <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guias de instalação ↗</a> e procure erros ou avisos no <a href=\"%2$s\">registo</a>.",
|
||||
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Verificar a segurança do seu Nextcloud através da nossa <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">ferramenta de análise de segurança</a>. "
|
||||
"Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Por favor, verifique novamente os <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guias de instalação ↗</a> e procure erros ou avisos no <a href=\"%2$s\">registo</a>."
|
||||
},
|
||||
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -19,13 +19,10 @@
|
||||
"Security" : "Segurança",
|
||||
"You successfully logged in using two-factor authentication (%1$s)" : "Autenticado com sucesso utilizando autenticação de dois fatores (%1$s)",
|
||||
"A login attempt using two-factor authentication failed (%1$s)" : "Tentativa falhada de autenticação utilizando dois fatores (%1$s)",
|
||||
"Remote wipe was started on %1$s" : "Eliminação remota iniciada em %1$s ",
|
||||
"Remote wipe has finished on %1$s" : "Eliminação remota terminou em %1$s",
|
||||
"Your <strong>password</strong> or <strong>email</strong> was modified" : "A <strong>password</strong> ou <strong>email</strong> foram modificados",
|
||||
"Settings" : "Configurações",
|
||||
"Could not remove app." : "Não foi possível remover a aplicação",
|
||||
"Could not update app." : "Não foi possível atualizar a aplicação",
|
||||
"QR Code login" : "Iniciar sessão com código QR",
|
||||
"Wrong password" : "Palavra-passe errada",
|
||||
"Unable to change personal password" : "Não foi possível mudar a palavra-passe pessoal",
|
||||
"Saved" : "Guardado",
|
||||
@@ -40,16 +37,11 @@
|
||||
"If you received this email, the email configuration seems to be correct." : "Se recebeu este email, a configuração do serviço de email deverá estar correta.",
|
||||
"Email could not be sent. Check your mail server log" : "O email não pode ser enviado. Por favor verifique os logs do seu servidor de e-mail.",
|
||||
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu um problema ao enviar o e-mail. Por favor verifique as suas definições. (Erro: %s)",
|
||||
"Recently active" : "Ativo recentemente",
|
||||
"Disabled accounts" : "Contas desativadas",
|
||||
"Invalid account" : "Conta inválida",
|
||||
"Invalid mail address" : "Endereço de correio eletrónico inválido",
|
||||
"Settings saved" : "Definições guardadas",
|
||||
"Unable to change full name" : "Não foi possível alterar o seu nome completo",
|
||||
"Unable to change email address" : "Não foi possível alterar o seu endereço de e-mail",
|
||||
"Unable to set invalid phone number" : "Número de telefone inválido",
|
||||
"Unable to set invalid website" : "Website inválido",
|
||||
"Some account data was invalid" : "Alguns dados são inválidos",
|
||||
"In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Por forma a validar a sua conta de Twitter, por favor publique o seguinte Twitter ( garanta que a publicação não contém quebras de linha):",
|
||||
"In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Por forma de validar o Website, por favor publique o conteúdo seguinte na sua raiz em 'well-known/CloudIdVerificationCode.txt' (garanta que o texto completo se encontra numa única linha):",
|
||||
"%1$s changed your password on %2$s." : "%1$s modificou a sua senha em %2$s.",
|
||||
@@ -67,7 +59,6 @@
|
||||
"Welcome aboard" : "Bem-vindo a bordo",
|
||||
"Welcome aboard %s" : "Bem-vindo a bordo %s",
|
||||
"Welcome to your %s account, you can add, protect, and share your data." : "Bem-vindo à conta %s, aqui pode adicionar, proteger e partilhar os seus dados.",
|
||||
"Your Login is: %s" : "O seu Login é: %s",
|
||||
"Set your password" : "Escolher senha",
|
||||
"Go to %s" : "Ir para %s",
|
||||
"Install Client" : "Instalar Cliente",
|
||||
@@ -140,7 +131,6 @@
|
||||
"Description" : "Descrição",
|
||||
"View in store" : "Ver na loja",
|
||||
"Visit website" : "Visitar o website",
|
||||
"Usage documentation" : "Documentação de utilização",
|
||||
"Admin documentation" : "Documentação de administrador",
|
||||
"Developer documentation" : "Documentação de programador",
|
||||
"Details" : "Detalhes",
|
||||
@@ -218,15 +208,11 @@
|
||||
"Help translate" : "Ajude a traduzir",
|
||||
"Week starts on {firstDayOfWeek}" : "Semana começa em {firstDayOfWeek}",
|
||||
"Your phone number" : "O seu número de telefone",
|
||||
"Edit your Profile visibility" : "Editar a visibilidade do seu Perfil",
|
||||
"Enable profile" : "Ativar perfil",
|
||||
"Add" : "Adicionar",
|
||||
"Create" : "Criar",
|
||||
"Change" : "Mudar",
|
||||
"Delete" : "Eliminar",
|
||||
"Reshare" : "Partilhar novamente",
|
||||
"Enabled applications" : "Aplicações ativadas",
|
||||
"Disabled applications" : "Aplicações desativadas",
|
||||
"Setup warnings" : "Configurar avisos",
|
||||
"Display name" : "Nome a exibir",
|
||||
"Email" : "Email",
|
||||
@@ -239,9 +225,6 @@
|
||||
"Storage location" : "Localização do armazenamento",
|
||||
"Last login" : "Último início de sessão",
|
||||
"{size} used" : "{size} utilizado",
|
||||
"Delete account" : "Remover conta",
|
||||
"Disable account" : "Desativar conta",
|
||||
"Enable account" : "Ativar conta",
|
||||
"Done" : "Concluído",
|
||||
"Edit" : "Editar",
|
||||
"Visibility" : "Visibilidade",
|
||||
@@ -317,10 +300,6 @@
|
||||
"Unable to retrieve the group list" : "Não foi possível recolher a lista de grupo",
|
||||
"This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta app não tem a versão mínima do Nextcloud atribuída. Isto será um erro no futuro.",
|
||||
"This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta app não tem a versão máxima do Nextcloud atribuída. Isto será um erro no futuro.",
|
||||
"Loading accounts …" : "A carregar contas ...",
|
||||
"Loading account …" : "A carregar a conta ...",
|
||||
"Adding your device …" : "A adicionar o seu dispositivo ...",
|
||||
"Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Por favor, verifique novamente os <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guias de instalação ↗</a> e procure erros ou avisos no <a href=\"%2$s\">registo</a>.",
|
||||
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Verificar a segurança do seu Nextcloud através da nossa <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">ferramenta de análise de segurança</a>. "
|
||||
"Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Por favor, verifique novamente os <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guias de instalação ↗</a> e procure erros ou avisos no <a href=\"%2$s\">registo</a>."
|
||||
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -56,10 +56,9 @@ class MailSettingsController extends Controller {
|
||||
string $mail_smtpmode,
|
||||
string $mail_smtpsecure,
|
||||
string $mail_smtphost,
|
||||
?bool $mail_smtpauth,
|
||||
?string $mail_smtpauth,
|
||||
string $mail_smtpport,
|
||||
string $mail_sendmailmode,
|
||||
?bool $mail_noverify = null,
|
||||
): DataResponse {
|
||||
$mail_smtpauth = $mail_smtpauth == '1';
|
||||
|
||||
@@ -77,15 +76,6 @@ class MailSettingsController extends Controller {
|
||||
$configs[$key] = empty($value) ? null : $value;
|
||||
}
|
||||
|
||||
if ($mail_noverify !== null) {
|
||||
$options = $this->config->getSystemValue('mail_smtpstreamoptions', []);
|
||||
$options['ssl'] ??= [];
|
||||
$options['ssl']['allow_self_signed'] = $mail_noverify;
|
||||
$options['ssl']['verify_peer'] = !$mail_noverify;
|
||||
$options['ssl']['verify_peer_name'] = !$mail_noverify;
|
||||
$configs['mail_smtpstreamoptions'] = $options;
|
||||
}
|
||||
|
||||
// Delete passwords from config in case no auth is specified
|
||||
if (!$mail_smtpauth) {
|
||||
$configs['mail_smtpname'] = null;
|
||||
@@ -101,18 +91,23 @@ class MailSettingsController extends Controller {
|
||||
|
||||
/**
|
||||
* Store the credentials used for SMTP in the config
|
||||
*
|
||||
* @param string $mail_smtpname
|
||||
* @param string $mail_smtppassword
|
||||
* @return DataResponse
|
||||
*/
|
||||
#[AuthorizedAdminSetting(settings: Overview::class)]
|
||||
#[PasswordConfirmationRequired]
|
||||
public function storeCredentials(string $mail_smtpname, ?string $mail_smtppassword): DataResponse {
|
||||
public function storeCredentials($mail_smtpname, $mail_smtppassword) {
|
||||
if ($mail_smtppassword === '********') {
|
||||
return new DataResponse($this->l10n->t('Invalid SMTP password.'), Http::STATUS_BAD_REQUEST);
|
||||
}
|
||||
|
||||
if ($mail_smtppassword !== null) {
|
||||
$this->config->setSystemValue('mail_smtppassword', $mail_smtppassword);
|
||||
}
|
||||
$this->config->setSystemValue('mail_smtpname', $mail_smtpname);
|
||||
$this->config->setSystemValues([
|
||||
'mail_smtpname' => $mail_smtpname,
|
||||
'mail_smtppassword' => $mail_smtppassword,
|
||||
]);
|
||||
|
||||
$this->config->setAppValue('core', 'emailTestSuccessful', '0');
|
||||
|
||||
return new DataResponse();
|
||||
|
||||
@@ -7,22 +7,20 @@
|
||||
namespace OCA\Settings\Settings\Admin;
|
||||
|
||||
use OCP\AppFramework\Http\TemplateResponse;
|
||||
use OCP\AppFramework\Services\IInitialState;
|
||||
use OCP\IBinaryFinder;
|
||||
use OCP\IConfig;
|
||||
use OCP\IL10N;
|
||||
use OCP\IURLGenerator;
|
||||
use OCP\Server;
|
||||
use OCP\Settings\IDelegatedSettings;
|
||||
use OCP\Util;
|
||||
|
||||
class Mail implements IDelegatedSettings {
|
||||
|
||||
/**
|
||||
* @param IConfig $config
|
||||
* @param IL10N $l
|
||||
*/
|
||||
public function __construct(
|
||||
private IConfig $config,
|
||||
private IL10N $l,
|
||||
private IInitialState $initialState,
|
||||
private IURLGenerator $urlGenerator,
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -32,59 +30,30 @@ class Mail implements IDelegatedSettings {
|
||||
public function getForm() {
|
||||
$finder = Server::get(IBinaryFinder::class);
|
||||
|
||||
$smtpModeOptions = [
|
||||
['label' => 'SMTP', 'id' => 'smtp'],
|
||||
];
|
||||
if ($finder->findBinaryPath('sendmail') !== false) {
|
||||
$smtpModeOptions[] = ['label' => 'Sendmail', 'id' => 'sendmail'];
|
||||
}
|
||||
if ($finder->findBinaryPath('qmail') !== false) {
|
||||
$smtpModeOptions[] = ['label' => 'qmail', 'id' => 'qmail'];
|
||||
}
|
||||
|
||||
$this->initialState->provideInitialState('settingsAdminMail', [
|
||||
'configIsReadonly' => $this->config->getSystemValueBool('config_is_read_only', false),
|
||||
'docUrl' => $this->urlGenerator->linkToDocs('admin-email'),
|
||||
|
||||
'smtpModeOptions' => $smtpModeOptions,
|
||||
'smtpEncryptionOptions' => [
|
||||
['label' => $this->l->t('None / STARTTLS'), 'id' => ''],
|
||||
['label' => 'SSL/TLS', 'id' => 'ssl'],
|
||||
],
|
||||
'smtpSendmailModeOptions' => [
|
||||
['label' => 'smtp (-bs)', 'id' => 'smtp'],
|
||||
['label' => 'pipe (-t -i)', 'id' => 'pipe'],
|
||||
],
|
||||
]);
|
||||
|
||||
$smtpPassword = $this->config->getSystemValue('mail_smtppassword', '');
|
||||
if ($smtpPassword !== '') {
|
||||
$smtpPassword = '********';
|
||||
}
|
||||
|
||||
$smtpMode = $this->config->getSystemValue('mail_smtpmode', '');
|
||||
if ($smtpMode === '' || $smtpMode === 'php') {
|
||||
$smtpMode = 'smtp';
|
||||
}
|
||||
|
||||
$smtpOptions = $this->config->getSystemValue('mail_smtpstreamoptions', []);
|
||||
$this->initialState->provideInitialState('settingsAdminMailConfig', [
|
||||
$parameters = [
|
||||
// Mail
|
||||
'sendmail_is_available' => $finder->findBinaryPath('sendmail') !== false,
|
||||
'mail_domain' => $this->config->getSystemValue('mail_domain', ''),
|
||||
'mail_from_address' => $this->config->getSystemValue('mail_from_address', ''),
|
||||
'mail_smtpmode' => $smtpMode,
|
||||
'mail_smtpmode' => $this->config->getSystemValue('mail_smtpmode', ''),
|
||||
'mail_smtpsecure' => $this->config->getSystemValue('mail_smtpsecure', ''),
|
||||
'mail_smtphost' => $this->config->getSystemValue('mail_smtphost', ''),
|
||||
'mail_smtpport' => $this->config->getSystemValue('mail_smtpport', ''),
|
||||
'mail_smtpauth' => $this->config->getSystemValue('mail_smtpauth', false),
|
||||
'mail_smtpname' => $this->config->getSystemValue('mail_smtpname', ''),
|
||||
'mail_smtppassword' => $smtpPassword,
|
||||
'mail_smtppassword' => $this->config->getSystemValue('mail_smtppassword', ''),
|
||||
'mail_sendmailmode' => $this->config->getSystemValue('mail_sendmailmode', 'smtp'),
|
||||
];
|
||||
|
||||
'mail_noverify' => $smtpOptions['ssl']['allow_self_signed'] ?? false,
|
||||
]);
|
||||
if ($parameters['mail_smtppassword'] !== '') {
|
||||
$parameters['mail_smtppassword'] = '********';
|
||||
}
|
||||
|
||||
Util::addScript('settings', 'vue-settings-admin-mail');
|
||||
return new TemplateResponse('settings', 'settings/admin/additional-mail', renderAs: '');
|
||||
if ($parameters['mail_smtpmode'] === '' || $parameters['mail_smtpmode'] === 'php') {
|
||||
$parameters['mail_smtpmode'] = 'smtp';
|
||||
}
|
||||
|
||||
return new TemplateResponse('settings', 'settings/admin/additional-mail', $parameters, '');
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
/*!
|
||||
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import Vue from 'vue'
|
||||
import AdminSettingsMailServer from './views/AdminSettingsMailServer.vue'
|
||||
|
||||
const app = new Vue(AdminSettingsMailServer)
|
||||
app.$mount('#vue-admin-settings-mail')
|
||||
@@ -1,8 +1,7 @@
|
||||
/*!
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import Vue from 'vue'
|
||||
import AdminSettingsSharing from './views/AdminSettingsSharing.vue'
|
||||
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import axios from '@nextcloud/axios'
|
||||
import { generateUrl } from '@nextcloud/router'
|
||||
import $ from 'jquery'
|
||||
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
$('#loglevel').change(function() {
|
||||
$.post(generateUrl('/settings/admin/log/level'), { level: $(this).val() }, () => {
|
||||
OC.Log.reload()
|
||||
})
|
||||
})
|
||||
|
||||
$('#mail_smtpauth').change(function() {
|
||||
if (!this.checked) {
|
||||
$('#mail_credentials').addClass('hidden')
|
||||
} else {
|
||||
$('#mail_credentials').removeClass('hidden')
|
||||
}
|
||||
})
|
||||
|
||||
$('#mail_smtpmode').change(function() {
|
||||
if ($(this).val() !== 'smtp') {
|
||||
$('#setting_smtpauth').addClass('hidden')
|
||||
$('#setting_smtphost').addClass('hidden')
|
||||
$('#mail_smtpsecure_label').addClass('hidden')
|
||||
$('#mail_smtpsecure').addClass('hidden')
|
||||
$('#mail_credentials').addClass('hidden')
|
||||
$('#mail_sendmailmode_label, #mail_sendmailmode').removeClass('hidden')
|
||||
} else {
|
||||
$('#setting_smtpauth').removeClass('hidden')
|
||||
$('#setting_smtphost').removeClass('hidden')
|
||||
$('#mail_smtpsecure_label').removeClass('hidden')
|
||||
$('#mail_smtpsecure').removeClass('hidden')
|
||||
if ($('#mail_smtpauth').is(':checked')) {
|
||||
$('#mail_credentials').removeClass('hidden')
|
||||
}
|
||||
$('#mail_sendmailmode_label, #mail_sendmailmode').addClass('hidden')
|
||||
}
|
||||
})
|
||||
|
||||
const changeEmailSettings = function() {
|
||||
if (OC.PasswordConfirmation.requiresPasswordConfirmation()) {
|
||||
OC.PasswordConfirmation.requirePasswordConfirmation(changeEmailSettings)
|
||||
return
|
||||
}
|
||||
|
||||
OC.msg.startSaving('#mail_settings_msg')
|
||||
axios.post(generateUrl('/settings/admin/mailsettings'), $('#mail_general_settings_form').serialize())
|
||||
.then(() => {
|
||||
OC.msg.finishedSuccess('#mail_settings_msg', t('settings', 'Saved'))
|
||||
}).catch((error) => {
|
||||
OC.msg.finishedError('#mail_settings_msg', error)
|
||||
})
|
||||
}
|
||||
|
||||
const toggleEmailCredentials = function() {
|
||||
if (OC.PasswordConfirmation.requiresPasswordConfirmation()) {
|
||||
OC.PasswordConfirmation.requirePasswordConfirmation(toggleEmailCredentials)
|
||||
return
|
||||
}
|
||||
|
||||
OC.msg.startSaving('#mail_settings_msg')
|
||||
axios.post(generateUrl('/settings/admin/mailsettings/credentials'), $('#mail_credentials_settings').serialize())
|
||||
.then(() => {
|
||||
OC.msg.finishedSuccess('#mail_settings_msg', t('settings', 'Saved'))
|
||||
}).catch((error) => {
|
||||
OC.msg.finishedError('#mail_settings_msg', error)
|
||||
})
|
||||
}
|
||||
|
||||
$('#mail_general_settings_form').change(changeEmailSettings)
|
||||
$('#mail_credentials_settings_submit').click(toggleEmailCredentials)
|
||||
$('#mail_smtppassword').click(() => {
|
||||
if (this.type === 'text' && this.value === '********') {
|
||||
this.type = 'password'
|
||||
this.value = ''
|
||||
}
|
||||
})
|
||||
|
||||
$('#sendtestemail').click((event) => {
|
||||
event.preventDefault()
|
||||
OC.msg.startAction('#sendtestmail_msg', t('settings', 'Sending…'))
|
||||
|
||||
axios.post(generateUrl('/settings/admin/mailtest'))
|
||||
.then(() => {
|
||||
OC.msg.finishedSuccess('#sendtestmail_msg', t('settings', 'Email sent'))
|
||||
}).catch((error) => {
|
||||
OC.msg.finishedError('#sendtestmail_msg', error.response.data)
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -2,85 +2,86 @@
|
||||
- SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
|
||||
- SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
-->
|
||||
|
||||
<script setup lang="ts">
|
||||
import axios from '@nextcloud/axios'
|
||||
import { showError, showSuccess } from '@nextcloud/dialogs'
|
||||
import { t } from '@nextcloud/l10n'
|
||||
import { generateUrl } from '@nextcloud/router'
|
||||
import { NcFormBox } from '@nextcloud/vue'
|
||||
import { ref } from 'vue'
|
||||
import NcButton from '@nextcloud/vue/components/NcButton'
|
||||
import NcPasswordField from '@nextcloud/vue/components/NcPasswordField'
|
||||
import NcSettingsSection from '@nextcloud/vue/components/NcSettingsSection'
|
||||
|
||||
const passwordform = ref<HTMLFormElement>()
|
||||
|
||||
const oldPass = ref('')
|
||||
const newPass = ref('')
|
||||
|
||||
/**
|
||||
* Change the user's password
|
||||
*/
|
||||
async function changePassword() {
|
||||
const { data } = await axios.post(generateUrl('/settings/personal/changepassword'), {
|
||||
oldpassword: oldPass.value,
|
||||
newpassword: newPass.value,
|
||||
})
|
||||
if (data.status === 'error') {
|
||||
showError(data.data.message)
|
||||
} else {
|
||||
showSuccess(data.data.message)
|
||||
oldPass.value = ''
|
||||
newPass.value = ''
|
||||
passwordform.value?.reset()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<NcSettingsSection :name="t('settings', 'Password')">
|
||||
<form
|
||||
ref="passwordform"
|
||||
:class="$style.passwordSection__form"
|
||||
@submit.prevent="changePassword">
|
||||
<NcFormBox>
|
||||
<NcPasswordField
|
||||
v-model="oldPass"
|
||||
:label="t('settings', 'Current password')"
|
||||
name="oldpassword"
|
||||
autocomplete="current-password"
|
||||
autocapitalize="none"
|
||||
required
|
||||
spellcheck="false" />
|
||||
<form id="passwordform" method="POST" @submit.prevent="changePassword">
|
||||
<NcPasswordField
|
||||
id="old-pass"
|
||||
v-model="oldPass"
|
||||
:label="t('settings', 'Current password')"
|
||||
name="oldpassword"
|
||||
autocomplete="current-password"
|
||||
autocapitalize="none"
|
||||
spellcheck="false" />
|
||||
|
||||
<NcPasswordField
|
||||
v-model="newPass"
|
||||
check-password-strength
|
||||
:label="t('settings', 'New password')"
|
||||
:maxlength="469"
|
||||
name="newpassword"
|
||||
autocomplete="new-password"
|
||||
autocapitalize="none"
|
||||
required
|
||||
spellcheck="false" />
|
||||
</NcFormBox>
|
||||
<NcPasswordField
|
||||
id="new-pass"
|
||||
v-model="newPass"
|
||||
:label="t('settings', 'New password')"
|
||||
:maxlength="469"
|
||||
autocomplete="new-password"
|
||||
autocapitalize="none"
|
||||
spellcheck="false"
|
||||
:check-password-strength="true" />
|
||||
|
||||
<NcButton
|
||||
type="submit"
|
||||
variant="primary"
|
||||
wide>
|
||||
type="submit"
|
||||
:disabled="newPass.length === 0 || oldPass.length === 0">
|
||||
{{ t('settings', 'Change password') }}
|
||||
</NcButton>
|
||||
</form>
|
||||
</NcSettingsSection>
|
||||
</template>
|
||||
|
||||
<style module>
|
||||
.passwordSection__form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: calc(2 * var(--default-grid-baseline));
|
||||
max-width: 300px !important;
|
||||
<script>
|
||||
import axios from '@nextcloud/axios'
|
||||
import { showError, showSuccess } from '@nextcloud/dialogs'
|
||||
import { generateUrl } from '@nextcloud/router'
|
||||
import NcButton from '@nextcloud/vue/components/NcButton'
|
||||
import NcPasswordField from '@nextcloud/vue/components/NcPasswordField'
|
||||
import NcSettingsSection from '@nextcloud/vue/components/NcSettingsSection'
|
||||
|
||||
export default {
|
||||
name: 'PasswordSection',
|
||||
components: {
|
||||
NcSettingsSection,
|
||||
NcButton,
|
||||
NcPasswordField,
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
oldPass: '',
|
||||
newPass: '',
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
changePassword() {
|
||||
axios.post(generateUrl('/settings/personal/changepassword'), {
|
||||
oldpassword: this.oldPass,
|
||||
newpassword: this.newPass,
|
||||
})
|
||||
.then((res) => res.data)
|
||||
.then((data) => {
|
||||
if (data.status === 'error') {
|
||||
this.errorMessage = data.data.message
|
||||
showError(data.data.message)
|
||||
} else {
|
||||
showSuccess(data.data.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
#passwordform {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 1rem;
|
||||
max-width: 400px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,265 +0,0 @@
|
||||
<!--
|
||||
- SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
|
||||
- SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
-->
|
||||
|
||||
<script setup lang="ts">
|
||||
import axios, { isAxiosError } from '@nextcloud/axios'
|
||||
import { showError, showSuccess } from '@nextcloud/dialogs'
|
||||
import { loadState } from '@nextcloud/initial-state'
|
||||
import { t } from '@nextcloud/l10n'
|
||||
import { confirmPassword } from '@nextcloud/password-confirmation'
|
||||
import { generateUrl } from '@nextcloud/router'
|
||||
import { NcButton, NcCheckboxRadioSwitch, NcLoadingIcon, NcPasswordField } from '@nextcloud/vue'
|
||||
import { computed, ref } from 'vue'
|
||||
import NcFormBox from '@nextcloud/vue/components/NcFormBox'
|
||||
import NcFormGroup from '@nextcloud/vue/components/NcFormGroup'
|
||||
import NcNoteCard from '@nextcloud/vue/components/NcNoteCard'
|
||||
import NcSelect from '@nextcloud/vue/components/NcSelect'
|
||||
import NcSettingsSection from '@nextcloud/vue/components/NcSettingsSection'
|
||||
import NcTextField from '@nextcloud/vue/components/NcTextField'
|
||||
import logger from '../logger.ts'
|
||||
|
||||
const settingsAdminMail = loadState<{
|
||||
configIsReadonly: boolean
|
||||
docUrl: string
|
||||
smtpModeOptions: { label: string, id: string }[]
|
||||
smtpEncryptionOptions: { label: string, id: string }[]
|
||||
smtpSendmailModeOptions: { label: string, id: string }[]
|
||||
}>('settings', 'settingsAdminMail')
|
||||
|
||||
const initialConfig = loadState<{
|
||||
mail_domain: string
|
||||
mail_from_address: string
|
||||
mail_smtpmode: string
|
||||
mail_smtpsecure: string
|
||||
mail_smtphost: string
|
||||
mail_smtpport: string
|
||||
mail_smtpauth: boolean
|
||||
mail_smtpname: string
|
||||
mail_smtppassword: string
|
||||
mail_sendmailmode: string
|
||||
|
||||
mail_noverify: boolean
|
||||
}>('settings', 'settingsAdminMailConfig')
|
||||
const mailConfig = ref({ ...initialConfig })
|
||||
|
||||
const smtpMode = computed({
|
||||
get() {
|
||||
return settingsAdminMail.smtpModeOptions.find((option) => option.id === mailConfig.value.mail_smtpmode)
|
||||
},
|
||||
set(value) {
|
||||
mailConfig.value.mail_smtpmode = value?.id ?? ''
|
||||
},
|
||||
})
|
||||
const smtpEncryption = computed({
|
||||
get() {
|
||||
return settingsAdminMail.smtpEncryptionOptions.find((option) => option.id === mailConfig.value.mail_smtpsecure)
|
||||
},
|
||||
set(value) {
|
||||
mailConfig.value.mail_smtpsecure = value?.id ?? ''
|
||||
},
|
||||
})
|
||||
const smtpSendmailMode = computed({
|
||||
get() {
|
||||
return settingsAdminMail.smtpSendmailModeOptions.find((option) => option.id === mailConfig.value.mail_sendmailmode)
|
||||
},
|
||||
set(value) {
|
||||
mailConfig.value.mail_sendmailmode = value?.id ?? ''
|
||||
},
|
||||
})
|
||||
|
||||
const hasPasswordChanges = computed(() => mailConfig.value.mail_smtppassword !== '********')
|
||||
const hasCredentialChanges = computed(() => hasPasswordChanges.value || mailConfig.value.mail_smtpname !== initialConfig.mail_smtpname)
|
||||
|
||||
const isSaving = ref(false)
|
||||
const isSendingTestEmail = ref(false)
|
||||
const testEmailError = ref('')
|
||||
|
||||
/**
|
||||
* Send a test email to verify the email settings
|
||||
*/
|
||||
async function testEmail() {
|
||||
testEmailError.value = ''
|
||||
isSendingTestEmail.value = true
|
||||
try {
|
||||
await axios.post(generateUrl('/settings/admin/mailtest'))
|
||||
showSuccess(t('settings', 'Email sent successfully'))
|
||||
} catch (error) {
|
||||
logger.error('Error sending test email', { error })
|
||||
showError(t('settings', 'Failed to send email'))
|
||||
|
||||
if (isAxiosError(error) && typeof error.response?.data === 'string') {
|
||||
testEmailError.value = error.response.data
|
||||
}
|
||||
} finally {
|
||||
isSendingTestEmail.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Submit the mail settings form
|
||||
*/
|
||||
async function onSubmit() {
|
||||
await confirmPassword()
|
||||
|
||||
isSaving.value = true
|
||||
try {
|
||||
if (mailConfig.value.mail_smtpauth && hasCredentialChanges.value) {
|
||||
await axios.post(generateUrl('/settings/admin/mailsettings/credentials'), {
|
||||
mail_smtppassword: hasPasswordChanges.value ? mailConfig.value.mail_smtppassword : undefined,
|
||||
mail_smtpname: mailConfig.value.mail_smtpname,
|
||||
})
|
||||
}
|
||||
|
||||
const config: Record<string, string | boolean> = { ...mailConfig.value }
|
||||
delete config.mail_smtppassword
|
||||
delete config.mail_smtpname
|
||||
await axios.post(generateUrl('/settings/admin/mailsettings'), config)
|
||||
|
||||
testEmailError.value = ''
|
||||
} catch (error) {
|
||||
logger.error('Error saving email settings', { error })
|
||||
showError(t('settings', 'Failed to save email settings'))
|
||||
return
|
||||
} finally {
|
||||
isSaving.value = false
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<NcSettingsSection
|
||||
:doc-url="settingsAdminMail.docUrl"
|
||||
:name="t('settings', 'Email server')"
|
||||
:description="t('settings', 'It is important to set up this server to be able to send emails, like for password reset and notifications.')">
|
||||
<NcNoteCard v-if="settingsAdminMail.configIsReadonly" type="info">
|
||||
{{ t('settings', 'The server configuration is read-only so the mail settings cannot be changed using the web interface.') }}
|
||||
</NcNoteCard>
|
||||
|
||||
<NcNoteCard v-if="smtpMode?.id === 'null'" type="info">
|
||||
{{ t('settings', 'Mail delivery is disabled by instance config "{config}".', { config: 'mail_smtpmode' }) }}
|
||||
</NcNoteCard>
|
||||
|
||||
<form v-else :class="$style.adminSettingsMailServer__form" @submit.prevent="onSubmit">
|
||||
<NcFormBox>
|
||||
<NcSelect
|
||||
v-model="smtpMode"
|
||||
:input-label="t('settings', 'Send mode')"
|
||||
:options="settingsAdminMail.smtpModeOptions"
|
||||
required />
|
||||
|
||||
<NcSelect
|
||||
v-if="smtpMode?.id === 'smtp'"
|
||||
v-model="smtpEncryption"
|
||||
:input-label="t('settings', 'Encryption')"
|
||||
:options="settingsAdminMail.smtpEncryptionOptions"
|
||||
required />
|
||||
<NcSelect
|
||||
v-else-if="smtpMode?.id === 'sendmail'"
|
||||
v-model="smtpSendmailMode"
|
||||
:input-label="t('settings', 'Sendmail mode')"
|
||||
:options="settingsAdminMail.smtpSendmailModeOptions"
|
||||
required />
|
||||
|
||||
<NcCheckboxRadioSwitch v-model="mailConfig.mail_noverify" type="switch">
|
||||
{{ t('settings', 'Disable certificate verification (insecure)') }}
|
||||
</NcCheckboxRadioSwitch>
|
||||
</NcFormBox>
|
||||
|
||||
<NcFormGroup :label="t('settings', 'From address')">
|
||||
<NcFormBox row>
|
||||
<NcTextField v-model="mailConfig.mail_from_address" :label="t('settings', 'Email')" />
|
||||
<NcTextField v-model="mailConfig.mail_domain" :label="t('settings', 'Domain')">
|
||||
<template #icon>
|
||||
<div style="line-height: 1;">
|
||||
@
|
||||
</div>
|
||||
</template>
|
||||
</NcTextField>
|
||||
</NcFormBox>
|
||||
</NcFormGroup>
|
||||
|
||||
<NcFormGroup v-show="smtpMode?.id === 'smtp'" :label="t('settings', 'Server address')">
|
||||
<NcFormBox row>
|
||||
<NcTextField
|
||||
v-model="mailConfig.mail_smtphost"
|
||||
:label="t('settings', 'Host')"
|
||||
name="mail_smtphost" />
|
||||
<NcTextField
|
||||
v-model="mailConfig.mail_smtpport"
|
||||
:label="t('settings', 'Port')"
|
||||
type="number"
|
||||
max="65535"
|
||||
min="1"
|
||||
name="mail_smtpport">
|
||||
<template #icon>
|
||||
<div style="line-height: 1;">
|
||||
:
|
||||
</div>
|
||||
</template>
|
||||
</NcTextField>
|
||||
</NcFormBox>
|
||||
</NcFormGroup>
|
||||
|
||||
<NcFormGroup v-show="smtpMode?.id === 'smtp'" :label="t('settings', 'Authentication')">
|
||||
<NcCheckboxRadioSwitch v-model="mailConfig.mail_smtpauth" type="switch">
|
||||
{{ t('settings', 'Authentication required') }}
|
||||
</NcCheckboxRadioSwitch>
|
||||
|
||||
<NcFormBox v-show="mailConfig.mail_smtpauth">
|
||||
<NcTextField
|
||||
v-model="mailConfig.mail_smtpname"
|
||||
:label="t('settings', 'Login')"
|
||||
name="mail_smtpname" />
|
||||
<NcPasswordField
|
||||
v-model="mailConfig.mail_smtppassword"
|
||||
:label="t('settings', 'Password')"
|
||||
:show-trailing-button="hasPasswordChanges"
|
||||
name="mail_smtppassword" />
|
||||
</NcFormBox>
|
||||
</NcFormGroup>
|
||||
|
||||
<div :class="$style.adminSettingsMailServer__formAction">
|
||||
<NcButton
|
||||
:disabled="isSendingTestEmail"
|
||||
variant="success"
|
||||
@click="testEmail">
|
||||
<template v-if="isSendingTestEmail" #icon>
|
||||
<NcLoadingIcon />
|
||||
</template>
|
||||
{{ isSendingTestEmail ? t('settings', 'Sending test email…') : t('settings', 'Send test email') }}
|
||||
</NcButton>
|
||||
<NcButton
|
||||
:disabled="isSaving"
|
||||
type="submit"
|
||||
variant="primary">
|
||||
<template v-if="isSaving" #icon>
|
||||
<NcLoadingIcon />
|
||||
</template>
|
||||
{{ isSaving ? t('settings', 'Saving…') : t('settings', 'Save settings') }}
|
||||
</NcButton>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<NcNoteCard v-if="testEmailError" type="error">
|
||||
{{ testEmailError }}
|
||||
</NcNoteCard>
|
||||
</NcSettingsSection>
|
||||
</template>
|
||||
|
||||
<style module>
|
||||
.adminSettingsMailServer__form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: calc(2.5 * var(--default-grid-baseline));
|
||||
|
||||
max-width: 600px !important;
|
||||
}
|
||||
|
||||
.adminSettingsMailServer__formAction {
|
||||
display: flex;
|
||||
justify-content: end;
|
||||
gap: var(--default-grid-baseline);
|
||||
}
|
||||
</style>
|
||||
@@ -3,6 +3,152 @@
|
||||
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
/** @var \OCP\IL10N $l */
|
||||
/** @var array $_ */
|
||||
|
||||
$mail_smtpauthtype = [
|
||||
'LOGIN' => $l->t('Login')
|
||||
];
|
||||
|
||||
$mail_smtpsecure = [
|
||||
'' => $l->t('None/STARTTLS'),
|
||||
'ssl' => $l->t('SSL')
|
||||
];
|
||||
|
||||
$mail_smtpmode = [
|
||||
['smtp', 'SMTP'],
|
||||
];
|
||||
if ($_['sendmail_is_available']) {
|
||||
$mail_smtpmode[] = ['sendmail', 'Sendmail'];
|
||||
}
|
||||
if ($_['mail_smtpmode'] === 'qmail') {
|
||||
$mail_smtpmode[] = ['qmail', 'qmail'];
|
||||
}
|
||||
|
||||
$mail_sendmailmode = [
|
||||
'smtp' => 'smtp (-bs)',
|
||||
'pipe' => 'pipe (-t -i)'
|
||||
];
|
||||
|
||||
?>
|
||||
|
||||
<div id="vue-admin-settings-mail"></div>
|
||||
<div class="section" id="mail_general_settings">
|
||||
<?php if ($_['mail_smtpmode'] === 'null') { ?>
|
||||
<h2><?php p($l->t('Email server'));?></h2>
|
||||
|
||||
<p>
|
||||
<?php p($l->t('Mail delivery is disabled by instance config "%s".', ['mail_smtpmode'])); ?>
|
||||
</p>
|
||||
<?php } else { ?>
|
||||
<form id="mail_general_settings_form" class="mail_settings">
|
||||
<h2><?php p($l->t('Email server'));?></h2>
|
||||
<a target="_blank"
|
||||
rel="noreferrer noopener" class="icon-info"
|
||||
title="<?php p($l->t('Open documentation'));?>"
|
||||
href="<?php p(link_to_docs('admin-email')); ?>"
|
||||
aria-label="<?php p($l->t('Open documentation'));?>"></a>
|
||||
<p class="settings-hint">
|
||||
<?php p($l->t('It is important to set up this server to be able to send emails, like for password reset and notifications.')); ?>
|
||||
</p>
|
||||
<p><span id="mail_settings_msg" class="msg"></span></p>
|
||||
|
||||
<p>
|
||||
<label for="mail_smtpmode"><?php p($l->t('Send mode')); ?></label>
|
||||
<select name="mail_smtpmode" id="mail_smtpmode">
|
||||
<?php foreach ($mail_smtpmode as $smtpmode):
|
||||
$selected = '';
|
||||
if ($smtpmode[0] == $_['mail_smtpmode']):
|
||||
$selected = 'selected="selected"';
|
||||
endif; ?>
|
||||
<option value="<?php p($smtpmode[0])?>" <?php p($selected) ?>><?php p($smtpmode[1]) ?></option>
|
||||
<?php endforeach;?>
|
||||
</select>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<label id="mail_smtpsecure_label" for="mail_smtpsecure"
|
||||
<?php if ($_['mail_smtpmode'] !== 'smtp') {
|
||||
print_unescaped(' class="hidden"');
|
||||
} ?>>
|
||||
<?php p($l->t('Encryption')); ?>
|
||||
</label>
|
||||
<select name="mail_smtpsecure" id="mail_smtpsecure"
|
||||
<?php if ($_['mail_smtpmode'] !== 'smtp') {
|
||||
print_unescaped(' class="hidden"');
|
||||
} ?>>
|
||||
<?php foreach ($mail_smtpsecure as $secure => $name):
|
||||
$selected = '';
|
||||
if ($secure == $_['mail_smtpsecure']):
|
||||
$selected = 'selected="selected"';
|
||||
endif; ?>
|
||||
<option value="<?php p($secure)?>" <?php p($selected) ?>><?php p($name) ?></option>
|
||||
<?php endforeach;?>
|
||||
</select>
|
||||
</p>
|
||||
|
||||
<p class="<?= $_['mail_smtpmode'] !== 'sendmail' ? 'hidden' : '' ?>">
|
||||
<label id="mail_sendmailmode_label" for="mail_sendmailmode">
|
||||
<?php p($l->t('Sendmail mode')); ?>
|
||||
</label>
|
||||
<select name="mail_sendmailmode" id="mail_sendmailmode">
|
||||
<?php foreach ($mail_sendmailmode as $sendmailmodeValue => $sendmailmodeLabel): ?>
|
||||
<option value="<?php p($sendmailmodeValue)?>" <?= $sendmailmodeValue === $_['mail_sendmailmode'] ? 'selected="selected"' : '' ?>><?php p($sendmailmodeLabel) ?></option>
|
||||
<?php endforeach;?>
|
||||
</select>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<label for="mail_from_address"><?php p($l->t('From address')); ?></label>
|
||||
<input type="text" name="mail_from_address" id="mail_from_address" placeholder="<?php p($l->t('Email'))?>"
|
||||
value="<?php p($_['mail_from_address']) ?>" />@
|
||||
<input type="text" name="mail_domain" id="mail_domain" placeholder="example.com"
|
||||
value="<?php p($_['mail_domain']) ?>" />
|
||||
</p>
|
||||
|
||||
<p id="setting_smtphost" <?php if ($_['mail_smtpmode'] !== 'smtp') {
|
||||
print_unescaped(' class="hidden"');
|
||||
} ?>>
|
||||
<label for="mail_smtphost"><?php p($l->t('Server address')); ?></label>
|
||||
<input type="text" name="mail_smtphost" id="mail_smtphost" placeholder="smtp.example.com"
|
||||
value="<?php p($_['mail_smtphost']) ?>" />
|
||||
:
|
||||
<input type="text" inputmode="numeric" name="mail_smtpport" id="mail_smtpport" placeholder="<?php p($l->t('Port'))?>"
|
||||
value="<?php p($_['mail_smtpport']) ?>" />
|
||||
</p>
|
||||
<p id='setting_smtpauth' <?php if ($_['mail_smtpmode'] !== 'smtp') {
|
||||
print_unescaped(' class="hidden"');
|
||||
} ?>>
|
||||
<label for='mail_smtpauthtype'><?php p($l->t('Authentication')); ?></label>
|
||||
<select name="mail_smtpauthtype" id="mail_smtpauthtype" class="hidden">
|
||||
<?php foreach ($mail_smtpauthtype as $authtype => $name): ?>
|
||||
<option value="<?php p($authtype) ?>"><?php p($name) ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
|
||||
<input type="checkbox" name="mail_smtpauth" id="mail_smtpauth" class="checkbox" value="1"
|
||||
<?php if ($_['mail_smtpauth']) {
|
||||
print_unescaped('checked="checked"');
|
||||
} ?> />
|
||||
<label for="mail_smtpauth"><?php p($l->t('Authentication required')); ?></label>
|
||||
</p>
|
||||
</form>
|
||||
<form class="mail_settings" id="mail_credentials_settings">
|
||||
<p id="mail_credentials" <?php if (!$_['mail_smtpauth'] || $_['mail_smtpmode'] !== 'smtp') {
|
||||
print_unescaped(' class="hidden"');
|
||||
} ?>>
|
||||
<label for="mail_smtpname"><?php p($l->t('Credentials')); ?></label>
|
||||
<input type="text" name="mail_smtpname" id="mail_smtpname" placeholder="<?php p($l->t('SMTP Login'))?>"
|
||||
value="<?php p($_['mail_smtpname']) ?>" />
|
||||
<input type="text" name="mail_smtppassword" id="mail_smtppassword" autocomplete="off"
|
||||
placeholder="<?php p($l->t('SMTP Password'))?>" value="<?php p($_['mail_smtppassword']) ?>" />
|
||||
<input id="mail_credentials_settings_submit" type="button" value="<?php p($l->t('Save')) ?>">
|
||||
</p>
|
||||
</form>
|
||||
|
||||
<br />
|
||||
<em><?php p($l->t('Test and verify email settings')); ?></em>
|
||||
<input type="submit" name="sendtestemail" id="sendtestemail" value="<?php p($l->t('Send email')); ?>"/>
|
||||
<span id="sendtestmail_msg" class="msg"></span>
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
|
||||
style('settings', 'settings');
|
||||
\OCP\Util::addScript('settings', 'legacy-admin');
|
||||
?>
|
||||
|
||||
<div id="app-navigation">
|
||||
|
||||
@@ -95,7 +95,7 @@ class MailSettingsControllerTest extends \Test\TestCase {
|
||||
'smtp',
|
||||
'ssl',
|
||||
'mx.nextcloud.org',
|
||||
true,
|
||||
'1',
|
||||
'25',
|
||||
'smtp'
|
||||
);
|
||||
@@ -108,7 +108,7 @@ class MailSettingsControllerTest extends \Test\TestCase {
|
||||
'smtp',
|
||||
'ssl',
|
||||
'mx.nextcloud.org',
|
||||
false,
|
||||
'0',
|
||||
'25',
|
||||
'smtp'
|
||||
);
|
||||
@@ -116,30 +116,16 @@ class MailSettingsControllerTest extends \Test\TestCase {
|
||||
}
|
||||
|
||||
public function testStoreCredentials(): void {
|
||||
$calls = [];
|
||||
$this->config
|
||||
->expects($this->exactly(2))
|
||||
->method('setSystemValue')
|
||||
->willReturnCallback(function (string $key, ?string $value) use (&$calls): void {
|
||||
$calls[] = [$key, $value];
|
||||
});
|
||||
->expects($this->once())
|
||||
->method('setSystemValues')
|
||||
->with([
|
||||
'mail_smtpname' => 'UsernameToStore',
|
||||
'mail_smtppassword' => 'PasswordToStore',
|
||||
]);
|
||||
|
||||
$response = $this->mailController->storeCredentials('UsernameToStore', 'PasswordToStore');
|
||||
$this->assertSame(Http::STATUS_OK, $response->getStatus());
|
||||
self::assertEqualsCanonicalizing([
|
||||
['mail_smtpname', 'UsernameToStore'],
|
||||
['mail_smtppassword', 'PasswordToStore'],
|
||||
], $calls);
|
||||
}
|
||||
|
||||
public function testStoreCredentialsWithoutPassword(): void {
|
||||
$this->config
|
||||
->expects($this->exactly(1))
|
||||
->method('setSystemValue')
|
||||
->with('mail_smtpname', 'UsernameToStore');
|
||||
|
||||
$response = $this->mailController->storeCredentials('UsernameToStore', null);
|
||||
$this->assertSame(Http::STATUS_OK, $response->getStatus());
|
||||
}
|
||||
|
||||
public function testSendTestMail(): void {
|
||||
|
||||
@@ -8,11 +8,9 @@ namespace OCA\Settings\Tests\Settings\Admin;
|
||||
|
||||
use OCA\Settings\Settings\Admin\Mail;
|
||||
use OCP\AppFramework\Http\TemplateResponse;
|
||||
use OCP\AppFramework\Services\IInitialState;
|
||||
use OCP\IBinaryFinder;
|
||||
use OCP\IConfig;
|
||||
use OCP\IL10N;
|
||||
use OCP\IURLGenerator;
|
||||
use PHPUnit\Framework\MockObject\MockObject;
|
||||
use Test\TestCase;
|
||||
|
||||
@@ -21,22 +19,15 @@ class MailTest extends TestCase {
|
||||
private Mail $admin;
|
||||
private IConfig&MockObject $config;
|
||||
private IL10N&MockObject $l10n;
|
||||
private IURLGenerator&MockObject $urlGenerator;
|
||||
private IInitialState&MockObject $initialState;
|
||||
|
||||
protected function setUp(): void {
|
||||
parent::setUp();
|
||||
$this->config = $this->createMock(IConfig::class);
|
||||
$this->l10n = $this->createMock(IL10N::class);
|
||||
$this->l10n->method('t')->willReturnArgument(0);
|
||||
$this->urlGenerator = $this->createMock(IURLGenerator::class);
|
||||
$this->initialState = $this->createMock(IInitialState::class);
|
||||
|
||||
$this->admin = new Mail(
|
||||
$this->config,
|
||||
$this->l10n,
|
||||
$this->initialState,
|
||||
$this->urlGenerator,
|
||||
$this->l10n
|
||||
);
|
||||
}
|
||||
|
||||
@@ -50,12 +41,10 @@ class MailTest extends TestCase {
|
||||
#[\PHPUnit\Framework\Attributes\DataProvider('dataGetForm')]
|
||||
public function testGetForm(bool $sendmail) {
|
||||
$finder = $this->createMock(IBinaryFinder::class);
|
||||
$finder->expects(self::atLeastOnce())
|
||||
$finder->expects(self::once())
|
||||
->method('findBinaryPath')
|
||||
->willReturnMap([
|
||||
['qmail', false],
|
||||
['sendmail', $sendmail ? '/usr/bin/sendmail' : false],
|
||||
]);
|
||||
->with('sendmail')
|
||||
->willReturn($sendmail ? '/usr/bin/sendmail': false);
|
||||
$this->overwriteService(IBinaryFinder::class, $finder);
|
||||
|
||||
$this->config
|
||||
@@ -74,37 +63,11 @@ class MailTest extends TestCase {
|
||||
['mail_sendmailmode', 'smtp', 'smtp'],
|
||||
]);
|
||||
|
||||
$initialState = [];
|
||||
$this->initialState->method('provideInitialState')
|
||||
->willReturnCallback(function (string $key, array $data) use (&$initialState): void {
|
||||
$initialState[$key] = $data;
|
||||
});
|
||||
|
||||
$expected = new TemplateResponse(
|
||||
'settings',
|
||||
'settings/admin/additional-mail',
|
||||
renderAs: ''
|
||||
);
|
||||
|
||||
$this->assertEquals($expected, $this->admin->getForm());
|
||||
self::assertEquals([
|
||||
'settingsAdminMail' => [
|
||||
'configIsReadonly' => false,
|
||||
'docUrl' => '',
|
||||
'smtpModeOptions' => [
|
||||
['label' => 'SMTP', 'id' => 'smtp'],
|
||||
...($sendmail ? [['label' => 'Sendmail', 'id' => 'sendmail']] : [])
|
||||
],
|
||||
'smtpEncryptionOptions' => [
|
||||
['label' => 'None / STARTTLS', 'id' => ''],
|
||||
['label' => 'SSL/TLS', 'id' => 'ssl'],
|
||||
],
|
||||
'smtpSendmailModeOptions' => [
|
||||
['label' => 'smtp (-bs)', 'id' => 'smtp'],
|
||||
['label' => 'pipe (-t -i)', 'id' => 'pipe'],
|
||||
],
|
||||
],
|
||||
'settingsAdminMailConfig' => [
|
||||
[
|
||||
'sendmail_is_available' => $sendmail,
|
||||
'mail_domain' => 'mx.nextcloud.com',
|
||||
'mail_from_address' => 'no-reply@nextcloud.com',
|
||||
'mail_smtpmode' => 'smtp',
|
||||
@@ -115,9 +78,11 @@ class MailTest extends TestCase {
|
||||
'mail_smtpname' => 'smtp.sender.com',
|
||||
'mail_smtppassword' => '********',
|
||||
'mail_sendmailmode' => 'smtp',
|
||||
'mail_noverify' => false,
|
||||
],
|
||||
], $initialState);
|
||||
''
|
||||
);
|
||||
|
||||
$this->assertEquals($expected, $this->admin->getForm());
|
||||
}
|
||||
|
||||
public function testGetSection(): void {
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"sharebymail",
|
||||
{
|
||||
"Shared with {email}" : "Partilhado com {email}",
|
||||
"Shared with {email} by {actor}" : "Partilhado com {email} por {actor}",
|
||||
"Unshared from {email}" : "Despartilhado de {email}",
|
||||
"Unshared from {email} by {actor}" : "Despartilhado de {email} para {actor}",
|
||||
"Password for mail share sent to {email}" : "Palavra-chave da partilha por email enviada para {email}",
|
||||
"Password for mail share sent to you" : "Palavra-chave da partilha por email enviada para si",
|
||||
"You shared {file} with {email} by mail" : "Partilhou {file} com {email} por e-mail",
|
||||
"{actor} shared {file} with {email} by mail" : "{actor} partilhou {file} com {email} por e-mail",
|
||||
"You unshared {file} from {email} by mail" : "Despartilhaste {file} de {email} por email",
|
||||
"{actor} unshared {file} from {email} by mail" : "{actor} despartilhado {file} de {email} por email",
|
||||
"Password to access {file} was sent to {email}" : "Palavra-chave de acesso a {file} enviada para {email}",
|
||||
"Password to access {file} was sent to you" : "Palavra-chave de acesso a {file} enviada para si",
|
||||
"Share by mail" : "Partilhado por e-mail",
|
||||
"Failed to send share by email" : "Falhou o envio da partilha por email.",
|
||||
"%1$s shared %2$s with you" : "%1$s partilhou %2$s consigo",
|
||||
"%1$s via %2$s" : "%1$s via %2$s",
|
||||
"%1$s shared %2$s with you. You should have already received a separate mail with a link to access it." : "%1$s partilhou »%2$s« consigo. Já deveria ter recebido um e-mail separado com um link para aceder ao conteúdo.",
|
||||
"It is protected with the following password:" : "Está protegido com a seguinte palavra-chave:",
|
||||
"%1$s shared %2$s with you and wants to add:" : "%1$s partilhado »%2$s« consigo e quer adicionar:",
|
||||
"%1$s shared %2$s with you and wants to add" : "%1$s partilhado »%2$s« consigo e quer adicionar:",
|
||||
"%s added a note to a file shared with you" : "»%s« adicionou uma nota a um ficheiro partilhado consigo",
|
||||
"You just shared %1$s with %2$s. The share was already sent to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Acabou de partilhar »%1$s« com %2$s. A partilha já foi enviada ao destinatário. Devido às políticas de segurança definidas pelo administrador de %3$s cada partilha necessita de ser protegida por palavra-passe e não é permitido enviar a palavra-passe diretamente ao destinatário. Portanto, precisa de encaminhar a palavra-passe manualmente para o destinatário.",
|
||||
"Password to access %1$s shared by you with %2$s" : "Palavra-passe para aceder a »%1$s« partilhado por si com %2$s",
|
||||
"This is the password:" : "Esta é a palavra passe: ",
|
||||
"You can choose a different password at any time in the share dialog." : "Pode escolher uma palavra-chave diferente a qualquer altura utilizando a caixa de diálogo \"partilha\".",
|
||||
"Could not find share" : "Não foi possível encontrar a partilha",
|
||||
"Send password by mail" : "Enviar palavra-chave por e-mail"
|
||||
},
|
||||
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
@@ -1,30 +0,0 @@
|
||||
{ "translations": {
|
||||
"Shared with {email}" : "Partilhado com {email}",
|
||||
"Shared with {email} by {actor}" : "Partilhado com {email} por {actor}",
|
||||
"Unshared from {email}" : "Despartilhado de {email}",
|
||||
"Unshared from {email} by {actor}" : "Despartilhado de {email} para {actor}",
|
||||
"Password for mail share sent to {email}" : "Palavra-chave da partilha por email enviada para {email}",
|
||||
"Password for mail share sent to you" : "Palavra-chave da partilha por email enviada para si",
|
||||
"You shared {file} with {email} by mail" : "Partilhou {file} com {email} por e-mail",
|
||||
"{actor} shared {file} with {email} by mail" : "{actor} partilhou {file} com {email} por e-mail",
|
||||
"You unshared {file} from {email} by mail" : "Despartilhaste {file} de {email} por email",
|
||||
"{actor} unshared {file} from {email} by mail" : "{actor} despartilhado {file} de {email} por email",
|
||||
"Password to access {file} was sent to {email}" : "Palavra-chave de acesso a {file} enviada para {email}",
|
||||
"Password to access {file} was sent to you" : "Palavra-chave de acesso a {file} enviada para si",
|
||||
"Share by mail" : "Partilhado por e-mail",
|
||||
"Failed to send share by email" : "Falhou o envio da partilha por email.",
|
||||
"%1$s shared %2$s with you" : "%1$s partilhou %2$s consigo",
|
||||
"%1$s via %2$s" : "%1$s via %2$s",
|
||||
"%1$s shared %2$s with you. You should have already received a separate mail with a link to access it." : "%1$s partilhou »%2$s« consigo. Já deveria ter recebido um e-mail separado com um link para aceder ao conteúdo.",
|
||||
"It is protected with the following password:" : "Está protegido com a seguinte palavra-chave:",
|
||||
"%1$s shared %2$s with you and wants to add:" : "%1$s partilhado »%2$s« consigo e quer adicionar:",
|
||||
"%1$s shared %2$s with you and wants to add" : "%1$s partilhado »%2$s« consigo e quer adicionar:",
|
||||
"%s added a note to a file shared with you" : "»%s« adicionou uma nota a um ficheiro partilhado consigo",
|
||||
"You just shared %1$s with %2$s. The share was already sent to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Acabou de partilhar »%1$s« com %2$s. A partilha já foi enviada ao destinatário. Devido às políticas de segurança definidas pelo administrador de %3$s cada partilha necessita de ser protegida por palavra-passe e não é permitido enviar a palavra-passe diretamente ao destinatário. Portanto, precisa de encaminhar a palavra-passe manualmente para o destinatário.",
|
||||
"Password to access %1$s shared by you with %2$s" : "Palavra-passe para aceder a »%1$s« partilhado por si com %2$s",
|
||||
"This is the password:" : "Esta é a palavra passe: ",
|
||||
"You can choose a different password at any time in the share dialog." : "Pode escolher uma palavra-chave diferente a qualquer altura utilizando a caixa de diálogo \"partilha\".",
|
||||
"Could not find share" : "Não foi possível encontrar a partilha",
|
||||
"Send password by mail" : "Enviar palavra-chave por e-mail"
|
||||
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
Generated
+92
-79
@@ -19,7 +19,7 @@
|
||||
"@nextcloud/capabilities": "^1.2.1",
|
||||
"@nextcloud/dialogs": "^7.1.0",
|
||||
"@nextcloud/event-bus": "^3.3.3",
|
||||
"@nextcloud/files": "^4.0.0-beta.9",
|
||||
"@nextcloud/files": "^4.0.0-beta.8",
|
||||
"@nextcloud/initial-state": "^3.0.0",
|
||||
"@nextcloud/l10n": "^3.4.1",
|
||||
"@nextcloud/logger": "^3.0.3",
|
||||
@@ -2894,20 +2894,20 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@nextcloud/dialogs/node_modules/@nextcloud/files": {
|
||||
"version": "3.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.12.2.tgz",
|
||||
"integrity": "sha512-vBo8tf3Xh6efiF8CrEo3pKj9AtvAF6RdDGO1XKL65IxV8+UUd9Uxl2lUExHlzoDRRczCqfGfaWfRRaFhYqce5Q==",
|
||||
"version": "3.12.0",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.12.0.tgz",
|
||||
"integrity": "sha512-LVZklgooZzBj2jkbPRZO4jnnvW5+RvOn7wN5weyOZltF6i2wVMbg1Y/Czl2pi/UNMjUm5ENqc0j7FgxMBo8bwA==",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"@nextcloud/auth": "^2.5.3",
|
||||
"@nextcloud/capabilities": "^1.2.1",
|
||||
"@nextcloud/l10n": "^3.4.1",
|
||||
"@nextcloud/logger": "^3.0.3",
|
||||
"@nextcloud/paths": "^3.0.0",
|
||||
"@nextcloud/router": "^3.1.0",
|
||||
"@nextcloud/sharing": "^0.3.0",
|
||||
"@nextcloud/auth": "^2.5.1",
|
||||
"@nextcloud/capabilities": "^1.2.0",
|
||||
"@nextcloud/l10n": "^3.3.0",
|
||||
"@nextcloud/logger": "^3.0.2",
|
||||
"@nextcloud/paths": "^2.2.1",
|
||||
"@nextcloud/router": "^3.0.1",
|
||||
"@nextcloud/sharing": "^0.2.4",
|
||||
"cancelable-promise": "^4.3.1",
|
||||
"is-svg": "^6.1.0",
|
||||
"is-svg": "^6.0.0",
|
||||
"typescript-event-target": "^1.1.1",
|
||||
"webdav": "^5.8.0"
|
||||
},
|
||||
@@ -2915,11 +2915,24 @@
|
||||
"node": "^20.0.0 || ^22.0.0 || ^24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@nextcloud/dialogs/node_modules/@nextcloud/files/node_modules/@nextcloud/paths": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-3.0.0.tgz",
|
||||
"integrity": "sha512-+sTfTkIbVUa2Ue3bkz3R7F1mhddvHPOWUxkSNg7Q5dAsimVFBaTRgiBAJmsAag3JPsxyuS8kUgeb0zdEssRdTA==",
|
||||
"node_modules/@nextcloud/dialogs/node_modules/@nextcloud/files/node_modules/@nextcloud/initial-state": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-2.2.0.tgz",
|
||||
"integrity": "sha512-cDW98L5KGGgpS8pzd+05304/p80cyu8U2xSDQGa+kGPTpUFmCbv2qnO5WrwwGTauyjYijCal2bmw82VddSH+Pg==",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"engines": {
|
||||
"node": "^20.0.0",
|
||||
"npm": "^10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@nextcloud/dialogs/node_modules/@nextcloud/files/node_modules/@nextcloud/sharing": {
|
||||
"version": "0.2.5",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/sharing/-/sharing-0.2.5.tgz",
|
||||
"integrity": "sha512-B3K5Dq9b5dexDA5n3AAuCF69Huwhrpw0J72fsVXV4KpPdImjhVPlExAv5o70AoXa+OqN4Rwn6gqJw+3ED892zg==",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"@nextcloud/initial-state": "^2.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^20.0.0 || ^22.0.0 || ^24.0.0"
|
||||
}
|
||||
@@ -3244,9 +3257,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@nextcloud/files": {
|
||||
"version": "4.0.0-beta.9",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-4.0.0-beta.9.tgz",
|
||||
"integrity": "sha512-Mbcl+eO2PEsOkBmQIxHtol6O8uzesJYQYb5kIZiqyfJ0yProSqJaMIBkBmAjHUwv+EOjswwRSXhlc8A4DfuVSg==",
|
||||
"version": "4.0.0-beta.8",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-4.0.0-beta.8.tgz",
|
||||
"integrity": "sha512-uHKPDAJ1jXnkeFcFEtCbn5lstmZ4zV/SQ9GUypT+FP8j+j51dggGO/tMiPxvc1GbBB1HTbKltaBtv83O3eX5UQ==",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"@nextcloud/auth": "^2.5.3",
|
||||
@@ -3257,7 +3270,7 @@
|
||||
"@nextcloud/router": "^3.1.0",
|
||||
"@nextcloud/sharing": "^0.3.0",
|
||||
"is-svg": "^6.1.0",
|
||||
"typescript-event-target": "^1.1.2",
|
||||
"typescript-event-target": "^1.1.1",
|
||||
"webdav": "^5.8.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -3696,21 +3709,21 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@nextcloud/sharing/node_modules/@nextcloud/files": {
|
||||
"version": "3.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.12.2.tgz",
|
||||
"integrity": "sha512-vBo8tf3Xh6efiF8CrEo3pKj9AtvAF6RdDGO1XKL65IxV8+UUd9Uxl2lUExHlzoDRRczCqfGfaWfRRaFhYqce5Q==",
|
||||
"version": "3.12.0",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.12.0.tgz",
|
||||
"integrity": "sha512-LVZklgooZzBj2jkbPRZO4jnnvW5+RvOn7wN5weyOZltF6i2wVMbg1Y/Czl2pi/UNMjUm5ENqc0j7FgxMBo8bwA==",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"@nextcloud/auth": "^2.5.3",
|
||||
"@nextcloud/capabilities": "^1.2.1",
|
||||
"@nextcloud/l10n": "^3.4.1",
|
||||
"@nextcloud/logger": "^3.0.3",
|
||||
"@nextcloud/paths": "^3.0.0",
|
||||
"@nextcloud/router": "^3.1.0",
|
||||
"@nextcloud/sharing": "^0.3.0",
|
||||
"@nextcloud/auth": "^2.5.1",
|
||||
"@nextcloud/capabilities": "^1.2.0",
|
||||
"@nextcloud/l10n": "^3.3.0",
|
||||
"@nextcloud/logger": "^3.0.2",
|
||||
"@nextcloud/paths": "^2.2.1",
|
||||
"@nextcloud/router": "^3.0.1",
|
||||
"@nextcloud/sharing": "^0.2.4",
|
||||
"cancelable-promise": "^4.3.1",
|
||||
"is-svg": "^6.1.0",
|
||||
"is-svg": "^6.0.0",
|
||||
"typescript-event-target": "^1.1.1",
|
||||
"webdav": "^5.8.0"
|
||||
},
|
||||
@@ -3718,6 +3731,40 @@
|
||||
"node": "^20.0.0 || ^22.0.0 || ^24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@nextcloud/sharing/node_modules/@nextcloud/paths": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-2.4.0.tgz",
|
||||
"integrity": "sha512-35hykjqzaJCw8pBYWuKbLLw2wyKMuf9+T8K8GoYiS84AIi8SO16nuEu0fyl/gwCuiDqX5tCCup4wqljf0hdvaw==",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": "^20.0.0 || ^22.0.0 || ^24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@nextcloud/sharing/node_modules/@nextcloud/sharing": {
|
||||
"version": "0.2.5",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/sharing/-/sharing-0.2.5.tgz",
|
||||
"integrity": "sha512-B3K5Dq9b5dexDA5n3AAuCF69Huwhrpw0J72fsVXV4KpPdImjhVPlExAv5o70AoXa+OqN4Rwn6gqJw+3ED892zg==",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"@nextcloud/initial-state": "^2.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^20.0.0 || ^22.0.0 || ^24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@nextcloud/sharing/node_modules/@nextcloud/sharing/node_modules/@nextcloud/initial-state": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-2.2.0.tgz",
|
||||
"integrity": "sha512-cDW98L5KGGgpS8pzd+05304/p80cyu8U2xSDQGa+kGPTpUFmCbv2qnO5WrwwGTauyjYijCal2bmw82VddSH+Pg==",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": "^20.0.0",
|
||||
"npm": "^10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@nextcloud/timezones": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/timezones/-/timezones-0.2.0.tgz",
|
||||
@@ -3848,20 +3895,20 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@nextcloud/upload/node_modules/@nextcloud/files": {
|
||||
"version": "3.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.12.2.tgz",
|
||||
"integrity": "sha512-vBo8tf3Xh6efiF8CrEo3pKj9AtvAF6RdDGO1XKL65IxV8+UUd9Uxl2lUExHlzoDRRczCqfGfaWfRRaFhYqce5Q==",
|
||||
"version": "3.12.0",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.12.0.tgz",
|
||||
"integrity": "sha512-LVZklgooZzBj2jkbPRZO4jnnvW5+RvOn7wN5weyOZltF6i2wVMbg1Y/Czl2pi/UNMjUm5ENqc0j7FgxMBo8bwA==",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"@nextcloud/auth": "^2.5.3",
|
||||
"@nextcloud/capabilities": "^1.2.1",
|
||||
"@nextcloud/l10n": "^3.4.1",
|
||||
"@nextcloud/logger": "^3.0.3",
|
||||
"@nextcloud/paths": "^3.0.0",
|
||||
"@nextcloud/router": "^3.1.0",
|
||||
"@nextcloud/sharing": "^0.3.0",
|
||||
"@nextcloud/auth": "^2.5.1",
|
||||
"@nextcloud/capabilities": "^1.2.0",
|
||||
"@nextcloud/l10n": "^3.3.0",
|
||||
"@nextcloud/logger": "^3.0.2",
|
||||
"@nextcloud/paths": "^2.2.1",
|
||||
"@nextcloud/router": "^3.0.1",
|
||||
"@nextcloud/sharing": "^0.2.4",
|
||||
"cancelable-promise": "^4.3.1",
|
||||
"is-svg": "^6.1.0",
|
||||
"is-svg": "^6.0.0",
|
||||
"typescript-event-target": "^1.1.1",
|
||||
"webdav": "^5.8.0"
|
||||
},
|
||||
@@ -3869,40 +3916,6 @@
|
||||
"node": "^20.0.0 || ^22.0.0 || ^24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@nextcloud/upload/node_modules/@nextcloud/files/node_modules/@nextcloud/initial-state": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz",
|
||||
"integrity": "sha512-cV+HBdkQJGm8FxkBI5rFT/FbMNWNBvpbj6OPrg4Ae4YOOsQ15CL8InPOAw1t4XkOkQK2NEdUGQLVUz/19wXbdQ==",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"engines": {
|
||||
"node": "^20.0.0 || ^22.0.0 || ^24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@nextcloud/upload/node_modules/@nextcloud/files/node_modules/@nextcloud/paths": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-3.0.0.tgz",
|
||||
"integrity": "sha512-+sTfTkIbVUa2Ue3bkz3R7F1mhddvHPOWUxkSNg7Q5dAsimVFBaTRgiBAJmsAag3JPsxyuS8kUgeb0zdEssRdTA==",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"engines": {
|
||||
"node": "^20.0.0 || ^22.0.0 || ^24.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@nextcloud/upload/node_modules/@nextcloud/files/node_modules/@nextcloud/sharing": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/sharing/-/sharing-0.3.0.tgz",
|
||||
"integrity": "sha512-kV7qeUZvd1fTKeFyH+W5Qq5rNOqG9rLATZM3U9MBxWXHJs3OxMqYQb8UQ3NYONzsX3zDGJmdQECIGHm1ei2sCA==",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"@nextcloud/initial-state": "^3.0.0",
|
||||
"is-svg": "^6.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^20.0.0 || ^22.0.0 || ^24.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@nextcloud/files": "^3.12.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@nextcloud/upload/node_modules/@nextcloud/initial-state": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-2.2.0.tgz",
|
||||
@@ -16985,9 +16998,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/typescript-event-target": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/typescript-event-target/-/typescript-event-target-1.1.2.tgz",
|
||||
"integrity": "sha512-TvkrTUpv7gCPlcnSoEwUVUBwsdheKm+HF5u2tPAKubkIGMfovdSizCTaZRY/NhR8+Ijy8iZZUapbVQAsNrkFrw==",
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/typescript-event-target/-/typescript-event-target-1.1.1.tgz",
|
||||
"integrity": "sha512-dFSOFBKV6uwaloBCCUhxlD3Pr/P1a/tJdcmPrTXCHlEFD3faj0mztjcGn6VBAhQ0/Bdy8K3VWrrqwbt/ffsYsg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/ua-regexes-lite": {
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"@nextcloud/capabilities": "^1.2.1",
|
||||
"@nextcloud/dialogs": "^7.1.0",
|
||||
"@nextcloud/event-bus": "^3.3.3",
|
||||
"@nextcloud/files": "^4.0.0-beta.9",
|
||||
"@nextcloud/files": "^4.0.0-beta.8",
|
||||
"@nextcloud/initial-state": "^3.0.0",
|
||||
"@nextcloud/l10n": "^3.4.1",
|
||||
"@nextcloud/logger": "^3.0.3",
|
||||
|
||||
@@ -52,11 +52,11 @@ module.exports = {
|
||||
'public-nickname-handler': path.join(__dirname, 'apps/files_sharing/src', 'public-nickname-handler.ts'),
|
||||
},
|
||||
settings: {
|
||||
'legacy-admin': path.join(__dirname, 'apps/settings/src', 'admin.js'),
|
||||
'vue-settings-admin-overview': path.join(__dirname, 'apps/settings/src', 'main-admin-overview.ts'),
|
||||
'vue-settings-admin-basic-settings': path.join(__dirname, 'apps/settings/src', 'main-admin-basic-settings.js'),
|
||||
'vue-settings-admin-ai': path.join(__dirname, 'apps/settings/src', 'main-admin-ai.js'),
|
||||
'vue-settings-admin-delegation': path.join(__dirname, 'apps/settings/src', 'main-admin-delegation.js'),
|
||||
'vue-settings-admin-mail': path.join(__dirname, 'apps/settings/src', 'admin-settings-mail.ts'),
|
||||
'vue-settings-admin-security': path.join(__dirname, 'apps/settings/src', 'main-admin-security.js'),
|
||||
'vue-settings-admin-settings-presets': path.join(__dirname, 'apps/settings/src', 'main-admin-settings-presets.js'),
|
||||
'vue-settings-admin-sharing': path.join(__dirname, 'apps/settings/src', 'admin-settings-sharing.ts'),
|
||||
|
||||
@@ -43,7 +43,7 @@ Feature: sharing
|
||||
| item_type | file |
|
||||
| mimetype | text/plain |
|
||||
| storage_id | shared::/textfile0 (2).txt |
|
||||
| file_target | /textfile0.txt |
|
||||
| file_target | /textfile0 (2).txt |
|
||||
| share_with | user2 |
|
||||
| share_with_displayname | user2 |
|
||||
|
||||
@@ -84,7 +84,7 @@ Feature: sharing
|
||||
| item_type | file |
|
||||
| mimetype | text/plain |
|
||||
| storage_id | shared::/textfile0 (2).txt |
|
||||
| file_target | /textfile0.txt |
|
||||
| file_target | /textfile0 (2).txt |
|
||||
| share_with | user2 |
|
||||
| share_with_displayname | user2 |
|
||||
|
||||
@@ -120,7 +120,7 @@ Feature: sharing
|
||||
| share_type | 0 |
|
||||
| share_with | user1 |
|
||||
| file_source | A_NUMBER |
|
||||
| file_target | /textfile0.txt |
|
||||
| file_target | /textfile0 (2).txt |
|
||||
| path | /textfile0.txt |
|
||||
| permissions | 19 |
|
||||
| stime | A_NUMBER |
|
||||
@@ -401,7 +401,7 @@ Feature: sharing
|
||||
| item_type | file |
|
||||
| mimetype | text/plain |
|
||||
| storage_id | shared::/FOLDER/textfile0.txt |
|
||||
| file_target | /textfile0.txt |
|
||||
| file_target | /textfile0 (2).txt |
|
||||
| share_with | user2 |
|
||||
| share_with_displayname | user2 |
|
||||
|
||||
@@ -440,7 +440,7 @@ Feature: sharing
|
||||
| item_type | file |
|
||||
| mimetype | text/plain |
|
||||
| storage_id | shared::/FOLDER/textfile0 (2).txt |
|
||||
| file_target | /textfile0.txt |
|
||||
| file_target | /textfile0 (2).txt |
|
||||
| share_with | user2 |
|
||||
| share_with_displayname | user2 |
|
||||
|
||||
@@ -887,7 +887,7 @@ Feature: sharing
|
||||
| share_type | 0 |
|
||||
| share_with | user2 |
|
||||
| file_source | A_NUMBER |
|
||||
| file_target | /textfile0.txt |
|
||||
| file_target | /textfile0 (2).txt |
|
||||
| path | /textfile0 (2).txt |
|
||||
| permissions | 19 |
|
||||
| stime | A_NUMBER |
|
||||
|
||||
@@ -559,6 +559,8 @@ Feature: sharing
|
||||
Scenario: getting all shares of a user using that user
|
||||
Given user "user0" exists
|
||||
And user "user1" exists
|
||||
When User "user1" deletes file "/textfile0.txt"
|
||||
And the HTTP status code should be "204"
|
||||
And file "textfile0.txt" of user "user0" is shared with user "user1"
|
||||
And As an "user0"
|
||||
When sending "GET" to "/apps/files_sharing/api/v1/shares"
|
||||
|
||||
@@ -1663,12 +1663,6 @@
|
||||
</MoreSpecificImplementedParamType>
|
||||
</file>
|
||||
<file src="apps/files_sharing/lib/SharedMount.php">
|
||||
<InternalMethod>
|
||||
<code><![CDATA[file_exists]]></code>
|
||||
<code><![CDATA[getAbsolutePath]]></code>
|
||||
<code><![CDATA[getAbsolutePath]]></code>
|
||||
<code><![CDATA[is_dir]]></code>
|
||||
</InternalMethod>
|
||||
<InvalidReturnType>
|
||||
<code><![CDATA[bool]]></code>
|
||||
</InvalidReturnType>
|
||||
|
||||
@@ -39,9 +39,7 @@ class Version33000Date20251209123503 extends SimpleMigrationStep {
|
||||
'notnull' => true,
|
||||
'length' => 32, // xxh128
|
||||
]);
|
||||
if ($table->hasIndex('mounts_user_root_path_index')) {
|
||||
$table->dropIndex('mounts_user_root_path_index');
|
||||
}
|
||||
$table->dropIndex('mounts_user_root_path_index');
|
||||
$table->addUniqueIndex(['user_id', 'root_id', 'mount_point_hash'], 'mounts_user_root_path_index');
|
||||
return $schema;
|
||||
}
|
||||
|
||||
+14
-14
@@ -92,8 +92,6 @@ OC.L10N.register(
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} إخطارات","{count} إخطارات","{count} إخطارات","{count} إخطارات","{count} إخطارات","{count} إخطارات"],
|
||||
"No" : "لا",
|
||||
"Yes" : "نعم",
|
||||
"App password" : "كلمة مرور التطبيق",
|
||||
"Grant access" : "السماح بالنفاذ",
|
||||
"The remote URL must include the user." : "عنوان URL القَصِي يجب أن يحتوي على المستخدِم.",
|
||||
"Invalid remote URL." : "عنوان URL البعيد غير صحيح.",
|
||||
"Failed to add the public link to your Nextcloud" : "فشل في إضافة الرابط العام إلى الخادم السحابي الخاص بك",
|
||||
@@ -194,14 +192,6 @@ OC.L10N.register(
|
||||
"Back" : "العودة",
|
||||
"Login form is disabled." : "نموذج تسجيل الدخول معطل",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "نموذج تسجيل الدخول إلى نكست كلاود مُعطّل. استخدم خيار تسجيل دخول آخر إذا كان متاحًا أو اتصل بمسؤول النظام.",
|
||||
"Connect to your account" : "الاتصال بحسابك",
|
||||
"Security warning" : "تحذير الأمان",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "إذا كنت لا تحاول تعيين جهاز أو تطبيق جديد ، فإن شخصًا ما يحاول خداعك لمنحه حق الوصول إلى بياناتك. في هذه الحالة ، لا تقم بالمتابعة وبدلاً من ذلك اتصل بمسؤول النظام.",
|
||||
"Alternative log in using app password" : "تسجيل الدخول بطريقة بديلة باستخدام كلمة مرور التطبيق",
|
||||
"Account connected" : "الحساب متصل",
|
||||
"Your client should now be connected!" : "من المفترض ان عميلك متصل الان!",
|
||||
"You can close this window." : "بإمكانك اغلاق النافذة",
|
||||
"Account access" : "حساب النفاذ",
|
||||
"More actions" : "إجراءات إضافية",
|
||||
"Password is too weak" : "كلمة المرور ضعيفة جدّاً",
|
||||
"Password is weak" : "كلمة المرور ضعيفة",
|
||||
@@ -214,6 +204,7 @@ OC.L10N.register(
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "لمعلومات أكثر حول كيفية تهيئة خادومك، رجاءً،{linkStart}أنظُر التوثيق {linkEnd}",
|
||||
"Autoconfig file detected" : "تمّ اكتشاف ملف التهيئة التلقائية Autoconfig",
|
||||
"The setup form below is pre-filled with the values from the config file." : "نموذج الإعدادات أدناه تمّت تعبئته بقيم من ملف التهيئة.",
|
||||
"Security warning" : "تحذير الأمان",
|
||||
"Create administration account" : "إنشاء حساب إدارة",
|
||||
"Administration account name" : "اسم حساب الإدارة",
|
||||
"Administration account password" : "كلمة مرور حساب الإدارة",
|
||||
@@ -314,6 +305,18 @@ OC.L10N.register(
|
||||
"Skip to navigation of app" : "تجاهل التنقل في التطبيق",
|
||||
"Go to %s" : "الإنتقال إلى %s",
|
||||
"Get your own free account" : "احصل على حساب لك بالمجان",
|
||||
"Connect to your account" : "الاتصال بحسابك",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "يرجى تسجيل الدخول قبل الحصول على اذن %1$s في حسابك %2$s.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "إذا كنت لا تحاول تعيين جهاز أو تطبيق جديد ، فإن شخصًا ما يحاول خداعك لمنحه حق الوصول إلى بياناتك. في هذه الحالة ، لا تقم بالمتابعة وبدلاً من ذلك اتصل بمسؤول النظام.",
|
||||
"App password" : "كلمة مرور التطبيق",
|
||||
"Grant access" : "السماح بالنفاذ",
|
||||
"Alternative log in using app password" : "تسجيل الدخول بطريقة بديلة باستخدام كلمة مرور التطبيق",
|
||||
"Account access" : "حساب النفاذ",
|
||||
"Currently logged in as %1$s (%2$s)." : "مسجّل حاليّاً كـ %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "انت على وشك الحصول على اذن %1$s لحسابك %2$s.",
|
||||
"Account connected" : "الحساب متصل",
|
||||
"Your client should now be connected!" : "من المفترض ان عميلك متصل الان!",
|
||||
"You can close this window." : "بإمكانك اغلاق النافذة",
|
||||
"Previous" : "السابق",
|
||||
"This share is password-protected" : "هذه المشاركة محمية بكلمة مرور",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "كلمة المرور أمّا غير مُطابقة أو منتهية الصلاحية. رجاءً حاول مرة أخرى أو أطلب واحدة جديدة.",
|
||||
@@ -398,9 +401,6 @@ OC.L10N.register(
|
||||
"Configure the database" : "إعداد قاعدة البيانات",
|
||||
"Only %s is available." : "لم يتبقى إلّا %s.",
|
||||
"Database account" : "حساب قاعدة البيانات",
|
||||
"Installing …" : "جاري التثبيت...",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "يرجى تسجيل الدخول قبل الحصول على اذن %1$s في حسابك %2$s.",
|
||||
"Currently logged in as %1$s (%2$s)." : "مسجّل حاليّاً كـ %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "انت على وشك الحصول على اذن %1$s لحسابك %2$s."
|
||||
"Installing …" : "جاري التثبيت..."
|
||||
},
|
||||
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
|
||||
|
||||
+14
-14
@@ -90,8 +90,6 @@
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} إخطارات","{count} إخطارات","{count} إخطارات","{count} إخطارات","{count} إخطارات","{count} إخطارات"],
|
||||
"No" : "لا",
|
||||
"Yes" : "نعم",
|
||||
"App password" : "كلمة مرور التطبيق",
|
||||
"Grant access" : "السماح بالنفاذ",
|
||||
"The remote URL must include the user." : "عنوان URL القَصِي يجب أن يحتوي على المستخدِم.",
|
||||
"Invalid remote URL." : "عنوان URL البعيد غير صحيح.",
|
||||
"Failed to add the public link to your Nextcloud" : "فشل في إضافة الرابط العام إلى الخادم السحابي الخاص بك",
|
||||
@@ -192,14 +190,6 @@
|
||||
"Back" : "العودة",
|
||||
"Login form is disabled." : "نموذج تسجيل الدخول معطل",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "نموذج تسجيل الدخول إلى نكست كلاود مُعطّل. استخدم خيار تسجيل دخول آخر إذا كان متاحًا أو اتصل بمسؤول النظام.",
|
||||
"Connect to your account" : "الاتصال بحسابك",
|
||||
"Security warning" : "تحذير الأمان",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "إذا كنت لا تحاول تعيين جهاز أو تطبيق جديد ، فإن شخصًا ما يحاول خداعك لمنحه حق الوصول إلى بياناتك. في هذه الحالة ، لا تقم بالمتابعة وبدلاً من ذلك اتصل بمسؤول النظام.",
|
||||
"Alternative log in using app password" : "تسجيل الدخول بطريقة بديلة باستخدام كلمة مرور التطبيق",
|
||||
"Account connected" : "الحساب متصل",
|
||||
"Your client should now be connected!" : "من المفترض ان عميلك متصل الان!",
|
||||
"You can close this window." : "بإمكانك اغلاق النافذة",
|
||||
"Account access" : "حساب النفاذ",
|
||||
"More actions" : "إجراءات إضافية",
|
||||
"Password is too weak" : "كلمة المرور ضعيفة جدّاً",
|
||||
"Password is weak" : "كلمة المرور ضعيفة",
|
||||
@@ -212,6 +202,7 @@
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "لمعلومات أكثر حول كيفية تهيئة خادومك، رجاءً،{linkStart}أنظُر التوثيق {linkEnd}",
|
||||
"Autoconfig file detected" : "تمّ اكتشاف ملف التهيئة التلقائية Autoconfig",
|
||||
"The setup form below is pre-filled with the values from the config file." : "نموذج الإعدادات أدناه تمّت تعبئته بقيم من ملف التهيئة.",
|
||||
"Security warning" : "تحذير الأمان",
|
||||
"Create administration account" : "إنشاء حساب إدارة",
|
||||
"Administration account name" : "اسم حساب الإدارة",
|
||||
"Administration account password" : "كلمة مرور حساب الإدارة",
|
||||
@@ -312,6 +303,18 @@
|
||||
"Skip to navigation of app" : "تجاهل التنقل في التطبيق",
|
||||
"Go to %s" : "الإنتقال إلى %s",
|
||||
"Get your own free account" : "احصل على حساب لك بالمجان",
|
||||
"Connect to your account" : "الاتصال بحسابك",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "يرجى تسجيل الدخول قبل الحصول على اذن %1$s في حسابك %2$s.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "إذا كنت لا تحاول تعيين جهاز أو تطبيق جديد ، فإن شخصًا ما يحاول خداعك لمنحه حق الوصول إلى بياناتك. في هذه الحالة ، لا تقم بالمتابعة وبدلاً من ذلك اتصل بمسؤول النظام.",
|
||||
"App password" : "كلمة مرور التطبيق",
|
||||
"Grant access" : "السماح بالنفاذ",
|
||||
"Alternative log in using app password" : "تسجيل الدخول بطريقة بديلة باستخدام كلمة مرور التطبيق",
|
||||
"Account access" : "حساب النفاذ",
|
||||
"Currently logged in as %1$s (%2$s)." : "مسجّل حاليّاً كـ %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "انت على وشك الحصول على اذن %1$s لحسابك %2$s.",
|
||||
"Account connected" : "الحساب متصل",
|
||||
"Your client should now be connected!" : "من المفترض ان عميلك متصل الان!",
|
||||
"You can close this window." : "بإمكانك اغلاق النافذة",
|
||||
"Previous" : "السابق",
|
||||
"This share is password-protected" : "هذه المشاركة محمية بكلمة مرور",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "كلمة المرور أمّا غير مُطابقة أو منتهية الصلاحية. رجاءً حاول مرة أخرى أو أطلب واحدة جديدة.",
|
||||
@@ -396,9 +399,6 @@
|
||||
"Configure the database" : "إعداد قاعدة البيانات",
|
||||
"Only %s is available." : "لم يتبقى إلّا %s.",
|
||||
"Database account" : "حساب قاعدة البيانات",
|
||||
"Installing …" : "جاري التثبيت...",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "يرجى تسجيل الدخول قبل الحصول على اذن %1$s في حسابك %2$s.",
|
||||
"Currently logged in as %1$s (%2$s)." : "مسجّل حاليّاً كـ %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "انت على وشك الحصول على اذن %1$s لحسابك %2$s."
|
||||
"Installing …" : "جاري التثبيت..."
|
||||
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
|
||||
}
|
||||
+14
-14
@@ -91,8 +91,6 @@ OC.L10N.register(
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} avisu","{count} avisos"],
|
||||
"No" : "Non",
|
||||
"Yes" : "Sí",
|
||||
"App password" : "Contraseña de l'aplicación",
|
||||
"Grant access" : "Conceder l'accesu",
|
||||
"Failed to add the public link to your Nextcloud" : "Nun se pue amestar l'enllaz públicu a esta instancia de Nextcloud",
|
||||
"Federated user" : "Usuariu federáu",
|
||||
"Create share" : "Crear l'elementu compartíu",
|
||||
@@ -182,15 +180,8 @@ OC.L10N.register(
|
||||
"Back" : "Atrás",
|
||||
"Login form is disabled." : "El formulariu p'aniciar la sesión ta desactiváu.",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "El formulariu p'aniciar la sesión de Nextcloud ta desactiváu. Usa otra opción p'aniciar la sesión si ta disponible o ponte en contautu cola alministración.",
|
||||
"Connect to your account" : "Conectase cola to cuenta",
|
||||
"Security warning" : "Alvertencia de seguranza",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Si nun tas tentando de configurar un preséu o aplicación nuevos, daquién tenta d'engañate pa que-y concedas l'accesu a los tos datos. Nesi casu nun sigas y ponte en contautu cola alministración.",
|
||||
"Alternative log in using app password" : "Aniciu de la sesión alternativu cola contraseña de l'aplicación",
|
||||
"Account connected" : "Cuenta conectada",
|
||||
"Your client should now be connected!" : "¡La cuenta habría tar conectada!",
|
||||
"You can close this window." : "Pues zarrar esta ventana.",
|
||||
"Account access" : "Accesu a la cuenta",
|
||||
"More actions" : "Más aiciones",
|
||||
"Security warning" : "Alvertencia de seguranza",
|
||||
"Storage & database" : "Almacenamientu y base de datos",
|
||||
"Data folder" : "Carpeta de datos",
|
||||
"Install and activate additional PHP modules to choose other database types." : "Instala y activa los módulos PHP adicionales pa escoyer otros tipos de bases de datos.",
|
||||
@@ -282,6 +273,18 @@ OC.L10N.register(
|
||||
"Skip to navigation of app" : "Saltar a la navegación de l'aplicación",
|
||||
"Go to %s" : "Dir a «%s»",
|
||||
"Get your own free account" : "Consigui la to cuenta gratuíta",
|
||||
"Connect to your account" : "Conectase cola to cuenta",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Anicia la sesión enantes de conceder l'accesu de %1$s na cuenta %2$s.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Si nun tas tentando de configurar un preséu o aplicación nuevos, daquién tenta d'engañate pa que-y concedas l'accesu a los tos datos. Nesi casu nun sigas y ponte en contautu cola alministración.",
|
||||
"App password" : "Contraseña de l'aplicación",
|
||||
"Grant access" : "Conceder l'accesu",
|
||||
"Alternative log in using app password" : "Aniciu de la sesión alternativu cola contraseña de l'aplicación",
|
||||
"Account access" : "Accesu a la cuenta",
|
||||
"Currently logged in as %1$s (%2$s)." : "Aniciesti la sesión como %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Tas a piques de conceder a «%1$s» l'accesu a la cuenta %2$s.",
|
||||
"Account connected" : "Cuenta conectada",
|
||||
"Your client should now be connected!" : "¡La cuenta habría tar conectada!",
|
||||
"You can close this window." : "Pues zarrar esta ventana.",
|
||||
"Previous" : "Anterior",
|
||||
"This share is password-protected" : "Esti secrete ta protexíu con una contraseña",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "La contraseña ye incorreuta o caducó. Volvi tentalo o solicita una nueva.",
|
||||
@@ -362,9 +365,6 @@ OC.L10N.register(
|
||||
"Configure the database" : "Configurar la base de datos",
|
||||
"Only %s is available." : "Namás hai disponible %s.",
|
||||
"Database account" : "Cuenta de la base de datos",
|
||||
"Installing …" : "Instalando…",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Anicia la sesión enantes de conceder l'accesu de %1$s na cuenta %2$s.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Aniciesti la sesión como %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Tas a piques de conceder a «%1$s» l'accesu a la cuenta %2$s."
|
||||
"Installing …" : "Instalando…"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
+14
-14
@@ -89,8 +89,6 @@
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} avisu","{count} avisos"],
|
||||
"No" : "Non",
|
||||
"Yes" : "Sí",
|
||||
"App password" : "Contraseña de l'aplicación",
|
||||
"Grant access" : "Conceder l'accesu",
|
||||
"Failed to add the public link to your Nextcloud" : "Nun se pue amestar l'enllaz públicu a esta instancia de Nextcloud",
|
||||
"Federated user" : "Usuariu federáu",
|
||||
"Create share" : "Crear l'elementu compartíu",
|
||||
@@ -180,15 +178,8 @@
|
||||
"Back" : "Atrás",
|
||||
"Login form is disabled." : "El formulariu p'aniciar la sesión ta desactiváu.",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "El formulariu p'aniciar la sesión de Nextcloud ta desactiváu. Usa otra opción p'aniciar la sesión si ta disponible o ponte en contautu cola alministración.",
|
||||
"Connect to your account" : "Conectase cola to cuenta",
|
||||
"Security warning" : "Alvertencia de seguranza",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Si nun tas tentando de configurar un preséu o aplicación nuevos, daquién tenta d'engañate pa que-y concedas l'accesu a los tos datos. Nesi casu nun sigas y ponte en contautu cola alministración.",
|
||||
"Alternative log in using app password" : "Aniciu de la sesión alternativu cola contraseña de l'aplicación",
|
||||
"Account connected" : "Cuenta conectada",
|
||||
"Your client should now be connected!" : "¡La cuenta habría tar conectada!",
|
||||
"You can close this window." : "Pues zarrar esta ventana.",
|
||||
"Account access" : "Accesu a la cuenta",
|
||||
"More actions" : "Más aiciones",
|
||||
"Security warning" : "Alvertencia de seguranza",
|
||||
"Storage & database" : "Almacenamientu y base de datos",
|
||||
"Data folder" : "Carpeta de datos",
|
||||
"Install and activate additional PHP modules to choose other database types." : "Instala y activa los módulos PHP adicionales pa escoyer otros tipos de bases de datos.",
|
||||
@@ -280,6 +271,18 @@
|
||||
"Skip to navigation of app" : "Saltar a la navegación de l'aplicación",
|
||||
"Go to %s" : "Dir a «%s»",
|
||||
"Get your own free account" : "Consigui la to cuenta gratuíta",
|
||||
"Connect to your account" : "Conectase cola to cuenta",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Anicia la sesión enantes de conceder l'accesu de %1$s na cuenta %2$s.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Si nun tas tentando de configurar un preséu o aplicación nuevos, daquién tenta d'engañate pa que-y concedas l'accesu a los tos datos. Nesi casu nun sigas y ponte en contautu cola alministración.",
|
||||
"App password" : "Contraseña de l'aplicación",
|
||||
"Grant access" : "Conceder l'accesu",
|
||||
"Alternative log in using app password" : "Aniciu de la sesión alternativu cola contraseña de l'aplicación",
|
||||
"Account access" : "Accesu a la cuenta",
|
||||
"Currently logged in as %1$s (%2$s)." : "Aniciesti la sesión como %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Tas a piques de conceder a «%1$s» l'accesu a la cuenta %2$s.",
|
||||
"Account connected" : "Cuenta conectada",
|
||||
"Your client should now be connected!" : "¡La cuenta habría tar conectada!",
|
||||
"You can close this window." : "Pues zarrar esta ventana.",
|
||||
"Previous" : "Anterior",
|
||||
"This share is password-protected" : "Esti secrete ta protexíu con una contraseña",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "La contraseña ye incorreuta o caducó. Volvi tentalo o solicita una nueva.",
|
||||
@@ -360,9 +363,6 @@
|
||||
"Configure the database" : "Configurar la base de datos",
|
||||
"Only %s is available." : "Namás hai disponible %s.",
|
||||
"Database account" : "Cuenta de la base de datos",
|
||||
"Installing …" : "Instalando…",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Anicia la sesión enantes de conceder l'accesu de %1$s na cuenta %2$s.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Aniciesti la sesión como %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Tas a piques de conceder a «%1$s» l'accesu a la cuenta %2$s."
|
||||
"Installing …" : "Instalando…"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
+10
-10
@@ -197,8 +197,6 @@ OC.L10N.register(
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} апавяшчэнне","{count} апавяшчэнні","{count} апавяшчэнняў","{count} апавяшчэнняў"],
|
||||
"No" : "Не",
|
||||
"Yes" : "Так",
|
||||
"App password" : "Пароль праграмы",
|
||||
"Grant access" : "Дазволіць доступ",
|
||||
"The remote URL must include the user." : "Аддалены URL-адрас павінен уключаць карыстальніка.",
|
||||
"Invalid remote URL." : "Памылковы аддалены URL.",
|
||||
"Failed to add the public link to your Nextcloud" : "Не ўдалося дадаць публічную спасылку ў ваш Nextcloud",
|
||||
@@ -305,10 +303,6 @@ OC.L10N.register(
|
||||
"Back" : "Назад",
|
||||
"Login form is disabled." : "Форма ўваходу адключана.",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "Форма ўваходу ў Nextcloud адключана. Скарыстайцеся іншым варыянтам уваходу, калі ён даступны, або звярніцеся да адміністратара.",
|
||||
"Security warning" : "Папярэджанне бяспекі",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Калі вы не спрабуеце наладзіць новую прыладу або праграму, значыць, хтосьці спрабуе падмануць вас, каб атрымаць доступ да вашых даных. У гэтым выпадку не працягвайце і звярніцеся да сістэмнага адміністратара.",
|
||||
"You can close this window." : "Вы можаце закрыць гэта акно.",
|
||||
"Account access" : "Доступ да ўліковага запісу",
|
||||
"More actions" : "Больш дзеянняў",
|
||||
"User menu" : "Меню карыстальніка",
|
||||
"Set public name" : "Задаць публічнае імя",
|
||||
@@ -323,6 +317,7 @@ OC.L10N.register(
|
||||
"Your data directory and files are probably accessible from the internet because the <code>.htaccess</code> file does not work." : "Ваш каталог даных і файлы, верагодна, даступныя з Інтэрнэту, таму што файл <code>.htaccess</code> не працуе.",
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "Каб даведацца, як правільна наладзіць сервер, {linkStart}глядзіце дакументацыю{linkEnd}",
|
||||
"Autoconfig file detected" : "Выяўлены файл аўтаканфігурацыі",
|
||||
"Security warning" : "Папярэджанне бяспекі",
|
||||
"Create administration account" : "Стварыце ўліковы запіс адміністратара",
|
||||
"Administration account name" : "Імя ўліковага запісу адміністратара",
|
||||
"Administration account password" : "Пароль уліковага запісу адміністратара",
|
||||
@@ -419,6 +414,14 @@ OC.L10N.register(
|
||||
"Could not remove CAN_INSTALL from the config folder. Please remove this file manually." : "Не атрымалася выдаліць CAN_INSTALL з папкі канфігурацыі. Выдаліце гэты файл уручную.",
|
||||
"This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Для карэктнай працы гэтай праграмы патрабуецца JavaScript. {linkstart}Уключыце JavaScript{linkend} і перазагрузіце старонку.",
|
||||
"Go to %s" : "Перайсці да %s",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Увайдзіце ў сістэму, перш чым даць %1$s доступ да вашага ўліковага запісу %2$s.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Калі вы не спрабуеце наладзіць новую прыладу або праграму, значыць, хтосьці спрабуе падмануць вас, каб атрымаць доступ да вашых даных. У гэтым выпадку не працягвайце і звярніцеся да сістэмнага адміністратара.",
|
||||
"App password" : "Пароль праграмы",
|
||||
"Grant access" : "Дазволіць доступ",
|
||||
"Account access" : "Доступ да ўліковага запісу",
|
||||
"Currently logged in as %1$s (%2$s)." : "Вы ўвайшлі як %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Вы збіраецеся даць %1$s доступ да вашага ўліковага запісу %2$s.",
|
||||
"You can close this window." : "Вы можаце закрыць гэта акно.",
|
||||
"Previous" : "Папярэдняя",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "Пароль няправільны або скончыўся тэрмін яго дзеяння. Паспрабуйце яшчэ раз або запытайце новы.",
|
||||
"Please type in your email address to request a temporary password" : "Увядзіце свой адрас электроннай пошты, каб запытаць часовы пароль",
|
||||
@@ -481,9 +484,6 @@ OC.L10N.register(
|
||||
"Configure the database" : "Наладзіць базу даных",
|
||||
"Only %s is available." : "Даступна толькі %s.",
|
||||
"Database account" : "Уліковы запіс базы даных",
|
||||
"Installing …" : "Усталяванне …",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Увайдзіце ў сістэму, перш чым даць %1$s доступ да вашага ўліковага запісу %2$s.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Вы ўвайшлі як %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Вы збіраецеся даць %1$s доступ да вашага ўліковага запісу %2$s."
|
||||
"Installing …" : "Усталяванне …"
|
||||
},
|
||||
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
|
||||
|
||||
+10
-10
@@ -195,8 +195,6 @@
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} апавяшчэнне","{count} апавяшчэнні","{count} апавяшчэнняў","{count} апавяшчэнняў"],
|
||||
"No" : "Не",
|
||||
"Yes" : "Так",
|
||||
"App password" : "Пароль праграмы",
|
||||
"Grant access" : "Дазволіць доступ",
|
||||
"The remote URL must include the user." : "Аддалены URL-адрас павінен уключаць карыстальніка.",
|
||||
"Invalid remote URL." : "Памылковы аддалены URL.",
|
||||
"Failed to add the public link to your Nextcloud" : "Не ўдалося дадаць публічную спасылку ў ваш Nextcloud",
|
||||
@@ -303,10 +301,6 @@
|
||||
"Back" : "Назад",
|
||||
"Login form is disabled." : "Форма ўваходу адключана.",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "Форма ўваходу ў Nextcloud адключана. Скарыстайцеся іншым варыянтам уваходу, калі ён даступны, або звярніцеся да адміністратара.",
|
||||
"Security warning" : "Папярэджанне бяспекі",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Калі вы не спрабуеце наладзіць новую прыладу або праграму, значыць, хтосьці спрабуе падмануць вас, каб атрымаць доступ да вашых даных. У гэтым выпадку не працягвайце і звярніцеся да сістэмнага адміністратара.",
|
||||
"You can close this window." : "Вы можаце закрыць гэта акно.",
|
||||
"Account access" : "Доступ да ўліковага запісу",
|
||||
"More actions" : "Больш дзеянняў",
|
||||
"User menu" : "Меню карыстальніка",
|
||||
"Set public name" : "Задаць публічнае імя",
|
||||
@@ -321,6 +315,7 @@
|
||||
"Your data directory and files are probably accessible from the internet because the <code>.htaccess</code> file does not work." : "Ваш каталог даных і файлы, верагодна, даступныя з Інтэрнэту, таму што файл <code>.htaccess</code> не працуе.",
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "Каб даведацца, як правільна наладзіць сервер, {linkStart}глядзіце дакументацыю{linkEnd}",
|
||||
"Autoconfig file detected" : "Выяўлены файл аўтаканфігурацыі",
|
||||
"Security warning" : "Папярэджанне бяспекі",
|
||||
"Create administration account" : "Стварыце ўліковы запіс адміністратара",
|
||||
"Administration account name" : "Імя ўліковага запісу адміністратара",
|
||||
"Administration account password" : "Пароль уліковага запісу адміністратара",
|
||||
@@ -417,6 +412,14 @@
|
||||
"Could not remove CAN_INSTALL from the config folder. Please remove this file manually." : "Не атрымалася выдаліць CAN_INSTALL з папкі канфігурацыі. Выдаліце гэты файл уручную.",
|
||||
"This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Для карэктнай працы гэтай праграмы патрабуецца JavaScript. {linkstart}Уключыце JavaScript{linkend} і перазагрузіце старонку.",
|
||||
"Go to %s" : "Перайсці да %s",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Увайдзіце ў сістэму, перш чым даць %1$s доступ да вашага ўліковага запісу %2$s.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Калі вы не спрабуеце наладзіць новую прыладу або праграму, значыць, хтосьці спрабуе падмануць вас, каб атрымаць доступ да вашых даных. У гэтым выпадку не працягвайце і звярніцеся да сістэмнага адміністратара.",
|
||||
"App password" : "Пароль праграмы",
|
||||
"Grant access" : "Дазволіць доступ",
|
||||
"Account access" : "Доступ да ўліковага запісу",
|
||||
"Currently logged in as %1$s (%2$s)." : "Вы ўвайшлі як %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Вы збіраецеся даць %1$s доступ да вашага ўліковага запісу %2$s.",
|
||||
"You can close this window." : "Вы можаце закрыць гэта акно.",
|
||||
"Previous" : "Папярэдняя",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "Пароль няправільны або скончыўся тэрмін яго дзеяння. Паспрабуйце яшчэ раз або запытайце новы.",
|
||||
"Please type in your email address to request a temporary password" : "Увядзіце свой адрас электроннай пошты, каб запытаць часовы пароль",
|
||||
@@ -479,9 +482,6 @@
|
||||
"Configure the database" : "Наладзіць базу даных",
|
||||
"Only %s is available." : "Даступна толькі %s.",
|
||||
"Database account" : "Уліковы запіс базы даных",
|
||||
"Installing …" : "Усталяванне …",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Увайдзіце ў сістэму, перш чым даць %1$s доступ да вашага ўліковага запісу %2$s.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Вы ўвайшлі як %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Вы збіраецеся даць %1$s доступ да вашага ўліковага запісу %2$s."
|
||||
"Installing …" : "Усталяванне …"
|
||||
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
|
||||
}
|
||||
+12
-12
@@ -89,7 +89,6 @@ OC.L10N.register(
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} известие","{count} известия"],
|
||||
"No" : "Не",
|
||||
"Yes" : "Да",
|
||||
"Grant access" : "Разреши достъпa",
|
||||
"Invalid remote URL." : "невалиден отдалечен URL(адрес)",
|
||||
"Failed to add the public link to your Nextcloud" : "Неуспешно добавяне на публичната връзка към вашия Nextcloud",
|
||||
"Create share" : "Създаване на споделяне",
|
||||
@@ -171,14 +170,8 @@ OC.L10N.register(
|
||||
"Forgot password?" : "Забравена парола?",
|
||||
"Back" : "Назад",
|
||||
"Login form is disabled." : "Формулярът за вход е деактивиран",
|
||||
"Connect to your account" : "Свързване към вашия профил",
|
||||
"Security warning" : "Предупреждение за сигурност",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Ако не се опитвате да настроите ново устройство или приложение, някой се опитва да ви подмами, за да му предоставите достъп до вашите данни. В този случай не продължавайте и вместо това се свържете със системния си администратор.",
|
||||
"Account connected" : "Профилът е свързан",
|
||||
"Your client should now be connected!" : "Клиентът ви вече трябва да е свързан!",
|
||||
"You can close this window." : "Можеш да затвориш този прозорец.",
|
||||
"Account access" : "Достъп до профил",
|
||||
"More actions" : "Повече действия",
|
||||
"Security warning" : "Предупреждение за сигурност",
|
||||
"Storage & database" : "Хранилища и бази данни",
|
||||
"Data folder" : "Директория за данни",
|
||||
"Install and activate additional PHP modules to choose other database types." : "Инсталирайте и активирайте допълнителни PHP модули, за да изберете други видове бази данни.",
|
||||
@@ -270,6 +263,16 @@ OC.L10N.register(
|
||||
"Skip to navigation of app" : "Преминаване към навигация на приложението",
|
||||
"Go to %s" : "Отидете на %s",
|
||||
"Get your own free account" : "Вземете свой собствен безплатен профил",
|
||||
"Connect to your account" : "Свързване към вашия профил",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Необходимо е да се впишете, преди да дадете достъп на %1$s до вашия %2$s профил.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Ако не се опитвате да настроите ново устройство или приложение, някой се опитва да ви подмами, за да му предоставите достъп до вашите данни. В този случай не продължавайте и вместо това се свържете със системния си администратор.",
|
||||
"Grant access" : "Разреши достъпa",
|
||||
"Account access" : "Достъп до профил",
|
||||
"Currently logged in as %1$s (%2$s)." : "В момента сте влезли като %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Ще разрешите на %1$s да ползва вашия %2$s профил.",
|
||||
"Account connected" : "Профилът е свързан",
|
||||
"Your client should now be connected!" : "Клиентът ви вече трябва да е свързан!",
|
||||
"You can close this window." : "Можеш да затвориш този прозорец.",
|
||||
"Previous" : "Предишен ",
|
||||
"This share is password-protected" : "Тази зона е защитена с парола.",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "Паролата е грешна или е изтекла. Моля, опитайте отново или поискайте нова.",
|
||||
@@ -352,9 +355,6 @@ OC.L10N.register(
|
||||
"Configure the database" : "Конфигуриране на базата данни",
|
||||
"Only %s is available." : "Само %s е наличен.",
|
||||
"Database account" : "Профил за база данни",
|
||||
"Installing …" : "В процес на инсталиране…",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Необходимо е да се впишете, преди да дадете достъп на %1$s до вашия %2$s профил.",
|
||||
"Currently logged in as %1$s (%2$s)." : "В момента сте влезли като %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Ще разрешите на %1$s да ползва вашия %2$s профил."
|
||||
"Installing …" : "В процес на инсталиране…"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
+12
-12
@@ -87,7 +87,6 @@
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} известие","{count} известия"],
|
||||
"No" : "Не",
|
||||
"Yes" : "Да",
|
||||
"Grant access" : "Разреши достъпa",
|
||||
"Invalid remote URL." : "невалиден отдалечен URL(адрес)",
|
||||
"Failed to add the public link to your Nextcloud" : "Неуспешно добавяне на публичната връзка към вашия Nextcloud",
|
||||
"Create share" : "Създаване на споделяне",
|
||||
@@ -169,14 +168,8 @@
|
||||
"Forgot password?" : "Забравена парола?",
|
||||
"Back" : "Назад",
|
||||
"Login form is disabled." : "Формулярът за вход е деактивиран",
|
||||
"Connect to your account" : "Свързване към вашия профил",
|
||||
"Security warning" : "Предупреждение за сигурност",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Ако не се опитвате да настроите ново устройство или приложение, някой се опитва да ви подмами, за да му предоставите достъп до вашите данни. В този случай не продължавайте и вместо това се свържете със системния си администратор.",
|
||||
"Account connected" : "Профилът е свързан",
|
||||
"Your client should now be connected!" : "Клиентът ви вече трябва да е свързан!",
|
||||
"You can close this window." : "Можеш да затвориш този прозорец.",
|
||||
"Account access" : "Достъп до профил",
|
||||
"More actions" : "Повече действия",
|
||||
"Security warning" : "Предупреждение за сигурност",
|
||||
"Storage & database" : "Хранилища и бази данни",
|
||||
"Data folder" : "Директория за данни",
|
||||
"Install and activate additional PHP modules to choose other database types." : "Инсталирайте и активирайте допълнителни PHP модули, за да изберете други видове бази данни.",
|
||||
@@ -268,6 +261,16 @@
|
||||
"Skip to navigation of app" : "Преминаване към навигация на приложението",
|
||||
"Go to %s" : "Отидете на %s",
|
||||
"Get your own free account" : "Вземете свой собствен безплатен профил",
|
||||
"Connect to your account" : "Свързване към вашия профил",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Необходимо е да се впишете, преди да дадете достъп на %1$s до вашия %2$s профил.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Ако не се опитвате да настроите ново устройство или приложение, някой се опитва да ви подмами, за да му предоставите достъп до вашите данни. В този случай не продължавайте и вместо това се свържете със системния си администратор.",
|
||||
"Grant access" : "Разреши достъпa",
|
||||
"Account access" : "Достъп до профил",
|
||||
"Currently logged in as %1$s (%2$s)." : "В момента сте влезли като %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Ще разрешите на %1$s да ползва вашия %2$s профил.",
|
||||
"Account connected" : "Профилът е свързан",
|
||||
"Your client should now be connected!" : "Клиентът ви вече трябва да е свързан!",
|
||||
"You can close this window." : "Можеш да затвориш този прозорец.",
|
||||
"Previous" : "Предишен ",
|
||||
"This share is password-protected" : "Тази зона е защитена с парола.",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "Паролата е грешна или е изтекла. Моля, опитайте отново или поискайте нова.",
|
||||
@@ -350,9 +353,6 @@
|
||||
"Configure the database" : "Конфигуриране на базата данни",
|
||||
"Only %s is available." : "Само %s е наличен.",
|
||||
"Database account" : "Профил за база данни",
|
||||
"Installing …" : "В процес на инсталиране…",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Необходимо е да се впишете, преди да дадете достъп на %1$s до вашия %2$s профил.",
|
||||
"Currently logged in as %1$s (%2$s)." : "В момента сте влезли като %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Ще разрешите на %1$s да ползва вашия %2$s профил."
|
||||
"Installing …" : "В процес на инсталиране…"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
+14
-14
@@ -213,8 +213,6 @@ OC.L10N.register(
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} notificació","{count} notificacions"],
|
||||
"No" : "No",
|
||||
"Yes" : "Sí",
|
||||
"App password" : "Contrasenya de l'aplicació",
|
||||
"Grant access" : "Concedeix l'accés",
|
||||
"The remote URL must include the user." : "L'URL remot ha d'incloure l'usuari.",
|
||||
"Invalid remote URL." : "URL remot no vàlid.",
|
||||
"Failed to add the public link to your Nextcloud" : "No s'ha pogut afegir l'enllaç públic al vostre Nextcloud",
|
||||
@@ -325,14 +323,6 @@ OC.L10N.register(
|
||||
"Back" : "Torna",
|
||||
"Login form is disabled." : "El formulari d'inici de sessió està inhabilitat.",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "El formulari d'inici de sessió de Nextcloud està desactivat. Utilitzeu una altra opció d'inici de sessió si està disponible o poseu-vos en contacte amb la vostra administració.",
|
||||
"Connect to your account" : "Connexió al vostre compte",
|
||||
"Security warning" : "Avís de seguretat",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Si no intenteu configurar un dispositiu o una aplicació nova, algú intenta enganyar-vos perquè li concediu accés a les vostres dades. En aquest cas, no procediu i contacteu amb l'administrador del sistema.",
|
||||
"Alternative log in using app password" : "Inicieu sessió alternativa amb la contrasenya de l'aplicació",
|
||||
"Account connected" : "S'ha connectat el compte",
|
||||
"Your client should now be connected!" : "El client ara hauria d'estar connectat!",
|
||||
"You can close this window." : "Podeu tancar aquesta finestra.",
|
||||
"Account access" : "Accés al compte",
|
||||
"More actions" : "Més accions",
|
||||
"User menu" : "Menú d'usuari",
|
||||
"Your guest name: {user}" : "Nom del vostre convidat: {user}",
|
||||
@@ -350,6 +340,7 @@ OC.L10N.register(
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "Per obtenir informació sobre com configurar correctament el vostre servidor, {linkStart}consulteu la documentació{linkEnd}",
|
||||
"Autoconfig file detected" : "S'ha detectat un fitxer de configuració automàtica",
|
||||
"The setup form below is pre-filled with the values from the config file." : "El formulari de configuració següent està emplenat prèviament amb els valors del fitxer de configuració.",
|
||||
"Security warning" : "Avís de seguretat",
|
||||
"Create administration account" : "Crear un compte d'administració",
|
||||
"Administration account name" : "Nom del compte d'administració",
|
||||
"Administration account password" : "Contrasenya del compte d'administració",
|
||||
@@ -455,6 +446,18 @@ OC.L10N.register(
|
||||
"Skip to navigation of app" : "Salta a la navegació de l'aplicació",
|
||||
"Go to %s" : "Ves a %s",
|
||||
"Get your own free account" : "Obteniu el vostre propi compte gratuït",
|
||||
"Connect to your account" : "Connexió al vostre compte",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Inicieu la sessió abans de concedir a %1$s accés al vostre compte del %2$s.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Si no intenteu configurar un dispositiu o una aplicació nova, algú intenta enganyar-vos perquè li concediu accés a les vostres dades. En aquest cas, no procediu i contacteu amb l'administrador del sistema.",
|
||||
"App password" : "Contrasenya de l'aplicació",
|
||||
"Grant access" : "Concedeix l'accés",
|
||||
"Alternative log in using app password" : "Inicieu sessió alternativa amb la contrasenya de l'aplicació",
|
||||
"Account access" : "Accés al compte",
|
||||
"Currently logged in as %1$s (%2$s)." : "S'ha iniciat la sessió com a %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Esteu a punt de concedir a %1$s accés al vostre compte del %2$s.",
|
||||
"Account connected" : "S'ha connectat el compte",
|
||||
"Your client should now be connected!" : "El client ara hauria d'estar connectat!",
|
||||
"You can close this window." : "Podeu tancar aquesta finestra.",
|
||||
"Previous" : "Anterior",
|
||||
"This share is password-protected" : "Aquest element compartit està protegit amb contrasenya",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "La contrasenya és incorrecta o ha vençut. Torneu-ho a provar o sol·liciteu-ne una de nova.",
|
||||
@@ -539,9 +542,6 @@ OC.L10N.register(
|
||||
"Configure the database" : "Configuració de la base de dades",
|
||||
"Only %s is available." : "Només hi ha disponible %s.",
|
||||
"Database account" : "Compte de base de dades",
|
||||
"Installing …" : "S'està instal·lant…",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Inicieu la sessió abans de concedir a %1$s accés al vostre compte del %2$s.",
|
||||
"Currently logged in as %1$s (%2$s)." : "S'ha iniciat la sessió com a %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Esteu a punt de concedir a %1$s accés al vostre compte del %2$s."
|
||||
"Installing …" : "S'està instal·lant…"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
+14
-14
@@ -211,8 +211,6 @@
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} notificació","{count} notificacions"],
|
||||
"No" : "No",
|
||||
"Yes" : "Sí",
|
||||
"App password" : "Contrasenya de l'aplicació",
|
||||
"Grant access" : "Concedeix l'accés",
|
||||
"The remote URL must include the user." : "L'URL remot ha d'incloure l'usuari.",
|
||||
"Invalid remote URL." : "URL remot no vàlid.",
|
||||
"Failed to add the public link to your Nextcloud" : "No s'ha pogut afegir l'enllaç públic al vostre Nextcloud",
|
||||
@@ -323,14 +321,6 @@
|
||||
"Back" : "Torna",
|
||||
"Login form is disabled." : "El formulari d'inici de sessió està inhabilitat.",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "El formulari d'inici de sessió de Nextcloud està desactivat. Utilitzeu una altra opció d'inici de sessió si està disponible o poseu-vos en contacte amb la vostra administració.",
|
||||
"Connect to your account" : "Connexió al vostre compte",
|
||||
"Security warning" : "Avís de seguretat",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Si no intenteu configurar un dispositiu o una aplicació nova, algú intenta enganyar-vos perquè li concediu accés a les vostres dades. En aquest cas, no procediu i contacteu amb l'administrador del sistema.",
|
||||
"Alternative log in using app password" : "Inicieu sessió alternativa amb la contrasenya de l'aplicació",
|
||||
"Account connected" : "S'ha connectat el compte",
|
||||
"Your client should now be connected!" : "El client ara hauria d'estar connectat!",
|
||||
"You can close this window." : "Podeu tancar aquesta finestra.",
|
||||
"Account access" : "Accés al compte",
|
||||
"More actions" : "Més accions",
|
||||
"User menu" : "Menú d'usuari",
|
||||
"Your guest name: {user}" : "Nom del vostre convidat: {user}",
|
||||
@@ -348,6 +338,7 @@
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "Per obtenir informació sobre com configurar correctament el vostre servidor, {linkStart}consulteu la documentació{linkEnd}",
|
||||
"Autoconfig file detected" : "S'ha detectat un fitxer de configuració automàtica",
|
||||
"The setup form below is pre-filled with the values from the config file." : "El formulari de configuració següent està emplenat prèviament amb els valors del fitxer de configuració.",
|
||||
"Security warning" : "Avís de seguretat",
|
||||
"Create administration account" : "Crear un compte d'administració",
|
||||
"Administration account name" : "Nom del compte d'administració",
|
||||
"Administration account password" : "Contrasenya del compte d'administració",
|
||||
@@ -453,6 +444,18 @@
|
||||
"Skip to navigation of app" : "Salta a la navegació de l'aplicació",
|
||||
"Go to %s" : "Ves a %s",
|
||||
"Get your own free account" : "Obteniu el vostre propi compte gratuït",
|
||||
"Connect to your account" : "Connexió al vostre compte",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Inicieu la sessió abans de concedir a %1$s accés al vostre compte del %2$s.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Si no intenteu configurar un dispositiu o una aplicació nova, algú intenta enganyar-vos perquè li concediu accés a les vostres dades. En aquest cas, no procediu i contacteu amb l'administrador del sistema.",
|
||||
"App password" : "Contrasenya de l'aplicació",
|
||||
"Grant access" : "Concedeix l'accés",
|
||||
"Alternative log in using app password" : "Inicieu sessió alternativa amb la contrasenya de l'aplicació",
|
||||
"Account access" : "Accés al compte",
|
||||
"Currently logged in as %1$s (%2$s)." : "S'ha iniciat la sessió com a %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Esteu a punt de concedir a %1$s accés al vostre compte del %2$s.",
|
||||
"Account connected" : "S'ha connectat el compte",
|
||||
"Your client should now be connected!" : "El client ara hauria d'estar connectat!",
|
||||
"You can close this window." : "Podeu tancar aquesta finestra.",
|
||||
"Previous" : "Anterior",
|
||||
"This share is password-protected" : "Aquest element compartit està protegit amb contrasenya",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "La contrasenya és incorrecta o ha vençut. Torneu-ho a provar o sol·liciteu-ne una de nova.",
|
||||
@@ -537,9 +540,6 @@
|
||||
"Configure the database" : "Configuració de la base de dades",
|
||||
"Only %s is available." : "Només hi ha disponible %s.",
|
||||
"Database account" : "Compte de base de dades",
|
||||
"Installing …" : "S'està instal·lant…",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Inicieu la sessió abans de concedir a %1$s accés al vostre compte del %2$s.",
|
||||
"Currently logged in as %1$s (%2$s)." : "S'ha iniciat la sessió com a %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Esteu a punt de concedir a %1$s accés al vostre compte del %2$s."
|
||||
"Installing …" : "S'està instal·lant…"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
+14
-14
@@ -213,8 +213,6 @@ OC.L10N.register(
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} upozornění","{count} upozornění","{count} upozornění","{count} upozornění"],
|
||||
"No" : "Ne",
|
||||
"Yes" : "Ano",
|
||||
"App password" : "Heslo pro aplikaci",
|
||||
"Grant access" : "Udělit přístup",
|
||||
"The remote URL must include the user." : "Je třeba, aby vzdálená URL obsahovala uživatele.",
|
||||
"Invalid remote URL." : "Neplatná vzdálená URL.",
|
||||
"Failed to add the public link to your Nextcloud" : "Nepodařilo se přidání veřejného odkazu do Nextcloud",
|
||||
@@ -330,14 +328,6 @@ OC.L10N.register(
|
||||
"Back" : "Zpět",
|
||||
"Login form is disabled." : "Formulář pro přihlášení je vypnut",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "Přihlašovací formulář je v Nextcloud vypnutý. Použijte jinou možnost přihlášení nebo se obraťte na svého správce.",
|
||||
"Connect to your account" : "Propojit s vaším účtem",
|
||||
"Security warning" : "Varování ohledně zabezpečení",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Pokud se nepokoušíte nastavit nové zařízení či aplikaci, někdo se pokouší vás ošálit a získat tak přístup k vašim datům. V takovém případě nepokračujte a obraťte se na svého správce systémů.",
|
||||
"Alternative log in using app password" : "Alternativní přihlášení pomocí hesla pro aplikaci",
|
||||
"Account connected" : "Účet připojen",
|
||||
"Your client should now be connected!" : "Váš klient by nyní měl být připojen!",
|
||||
"You can close this window." : "Toto okno je možné zavřít.",
|
||||
"Account access" : "Přístup k účtu",
|
||||
"More actions" : "Další akce",
|
||||
"User menu" : "Nabídka uživatele",
|
||||
"Your guest name: {user}" : "Vaše jméno, coby hosta: {user}",
|
||||
@@ -355,6 +345,7 @@ OC.L10N.register(
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "Informace o tom, jak správně nastavit váš server, naleznete v {linkStart}dokumentaci{linkEnd}",
|
||||
"Autoconfig file detected" : "Zjištěn soubor s automatického nastavení",
|
||||
"The setup form below is pre-filled with the values from the config file." : "Níže uvedený formulář nastavení je předvyplněný hodnotami ze souboru s nastaveními.",
|
||||
"Security warning" : "Varování ohledně zabezpečení",
|
||||
"Create administration account" : "Vytvořit účet pro správnu",
|
||||
"Administration account name" : "Název účtu pro správu",
|
||||
"Administration account password" : "Heslo k účtu pro správu",
|
||||
@@ -460,6 +451,18 @@ OC.L10N.register(
|
||||
"Skip to navigation of app" : "Přeskočit na navigaci aplikace",
|
||||
"Go to %s" : "Jít na %s",
|
||||
"Get your own free account" : "Získejte svůj vlastní účet zdarma",
|
||||
"Connect to your account" : "Propojit s vaším účtem",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Přihlaste se abyste mohli %1$s udělit přístup k vašemu %2$s účtu.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Pokud se nepokoušíte nastavit nové zařízení či aplikaci, někdo se pokouší vás ošálit a získat tak přístup k vašim datům. V takovém případě nepokračujte a obraťte se na svého správce systémů.",
|
||||
"App password" : "Heslo pro aplikaci",
|
||||
"Grant access" : "Udělit přístup",
|
||||
"Alternative log in using app password" : "Alternativní přihlášení pomocí hesla pro aplikaci",
|
||||
"Account access" : "Přístup k účtu",
|
||||
"Currently logged in as %1$s (%2$s)." : "Nyní jste přihlášeni jako %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Chystáte se udělit %1$s přístup ke svému %2$s účtu.",
|
||||
"Account connected" : "Účet připojen",
|
||||
"Your client should now be connected!" : "Váš klient by nyní měl být připojen!",
|
||||
"You can close this window." : "Toto okno je možné zavřít.",
|
||||
"Previous" : "Předchozí",
|
||||
"This share is password-protected" : "Toto sdílení je chráněno heslem",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "Nesprávné heslo nebo jeho platnost skončila. Prosím zkuste to znovu nebo si zažádejte o nové.",
|
||||
@@ -544,9 +547,6 @@ OC.L10N.register(
|
||||
"Configure the database" : "Nastavit databázi",
|
||||
"Only %s is available." : "Je k dispozici pouze %s.",
|
||||
"Database account" : "Účet do databáze",
|
||||
"Installing …" : "Instalace …",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Přihlaste se abyste mohli %1$s udělit přístup k vašemu %2$s účtu.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Nyní jste přihlášeni jako %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Chystáte se udělit %1$s přístup ke svému %2$s účtu."
|
||||
"Installing …" : "Instalace …"
|
||||
},
|
||||
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
|
||||
|
||||
+14
-14
@@ -211,8 +211,6 @@
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} upozornění","{count} upozornění","{count} upozornění","{count} upozornění"],
|
||||
"No" : "Ne",
|
||||
"Yes" : "Ano",
|
||||
"App password" : "Heslo pro aplikaci",
|
||||
"Grant access" : "Udělit přístup",
|
||||
"The remote URL must include the user." : "Je třeba, aby vzdálená URL obsahovala uživatele.",
|
||||
"Invalid remote URL." : "Neplatná vzdálená URL.",
|
||||
"Failed to add the public link to your Nextcloud" : "Nepodařilo se přidání veřejného odkazu do Nextcloud",
|
||||
@@ -328,14 +326,6 @@
|
||||
"Back" : "Zpět",
|
||||
"Login form is disabled." : "Formulář pro přihlášení je vypnut",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "Přihlašovací formulář je v Nextcloud vypnutý. Použijte jinou možnost přihlášení nebo se obraťte na svého správce.",
|
||||
"Connect to your account" : "Propojit s vaším účtem",
|
||||
"Security warning" : "Varování ohledně zabezpečení",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Pokud se nepokoušíte nastavit nové zařízení či aplikaci, někdo se pokouší vás ošálit a získat tak přístup k vašim datům. V takovém případě nepokračujte a obraťte se na svého správce systémů.",
|
||||
"Alternative log in using app password" : "Alternativní přihlášení pomocí hesla pro aplikaci",
|
||||
"Account connected" : "Účet připojen",
|
||||
"Your client should now be connected!" : "Váš klient by nyní měl být připojen!",
|
||||
"You can close this window." : "Toto okno je možné zavřít.",
|
||||
"Account access" : "Přístup k účtu",
|
||||
"More actions" : "Další akce",
|
||||
"User menu" : "Nabídka uživatele",
|
||||
"Your guest name: {user}" : "Vaše jméno, coby hosta: {user}",
|
||||
@@ -353,6 +343,7 @@
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "Informace o tom, jak správně nastavit váš server, naleznete v {linkStart}dokumentaci{linkEnd}",
|
||||
"Autoconfig file detected" : "Zjištěn soubor s automatického nastavení",
|
||||
"The setup form below is pre-filled with the values from the config file." : "Níže uvedený formulář nastavení je předvyplněný hodnotami ze souboru s nastaveními.",
|
||||
"Security warning" : "Varování ohledně zabezpečení",
|
||||
"Create administration account" : "Vytvořit účet pro správnu",
|
||||
"Administration account name" : "Název účtu pro správu",
|
||||
"Administration account password" : "Heslo k účtu pro správu",
|
||||
@@ -458,6 +449,18 @@
|
||||
"Skip to navigation of app" : "Přeskočit na navigaci aplikace",
|
||||
"Go to %s" : "Jít na %s",
|
||||
"Get your own free account" : "Získejte svůj vlastní účet zdarma",
|
||||
"Connect to your account" : "Propojit s vaším účtem",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Přihlaste se abyste mohli %1$s udělit přístup k vašemu %2$s účtu.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Pokud se nepokoušíte nastavit nové zařízení či aplikaci, někdo se pokouší vás ošálit a získat tak přístup k vašim datům. V takovém případě nepokračujte a obraťte se na svého správce systémů.",
|
||||
"App password" : "Heslo pro aplikaci",
|
||||
"Grant access" : "Udělit přístup",
|
||||
"Alternative log in using app password" : "Alternativní přihlášení pomocí hesla pro aplikaci",
|
||||
"Account access" : "Přístup k účtu",
|
||||
"Currently logged in as %1$s (%2$s)." : "Nyní jste přihlášeni jako %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Chystáte se udělit %1$s přístup ke svému %2$s účtu.",
|
||||
"Account connected" : "Účet připojen",
|
||||
"Your client should now be connected!" : "Váš klient by nyní měl být připojen!",
|
||||
"You can close this window." : "Toto okno je možné zavřít.",
|
||||
"Previous" : "Předchozí",
|
||||
"This share is password-protected" : "Toto sdílení je chráněno heslem",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "Nesprávné heslo nebo jeho platnost skončila. Prosím zkuste to znovu nebo si zažádejte o nové.",
|
||||
@@ -542,9 +545,6 @@
|
||||
"Configure the database" : "Nastavit databázi",
|
||||
"Only %s is available." : "Je k dispozici pouze %s.",
|
||||
"Database account" : "Účet do databáze",
|
||||
"Installing …" : "Instalace …",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Přihlaste se abyste mohli %1$s udělit přístup k vašemu %2$s účtu.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Nyní jste přihlášeni jako %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Chystáte se udělit %1$s přístup ke svému %2$s účtu."
|
||||
"Installing …" : "Instalace …"
|
||||
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
|
||||
}
|
||||
+14
-14
@@ -212,8 +212,6 @@ OC.L10N.register(
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} underretning","{count} underretninger"],
|
||||
"No" : "Nej",
|
||||
"Yes" : "Ja",
|
||||
"App password" : "App adgangskode",
|
||||
"Grant access" : "Giv adgang",
|
||||
"The remote URL must include the user." : "Fjern-URL'en skal omfatte brugeren.",
|
||||
"Invalid remote URL." : "Ugyldig fjern webadresse.",
|
||||
"Failed to add the public link to your Nextcloud" : "Fejl ved tilføjelse af offentligt link til din Nextcloud",
|
||||
@@ -326,14 +324,6 @@ OC.L10N.register(
|
||||
"Back" : "Tilbage",
|
||||
"Login form is disabled." : "Loginformularen er deaktiveret.",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "Nextcloud-loginformularen er deaktiveret. Brug en anden login-mulighed, hvis den er tilgængelig, eller kontakt din administration.",
|
||||
"Connect to your account" : "Forbind til din konto",
|
||||
"Security warning" : "Sikkerheds advarsel",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Hvis du ikke er igang med at konfigurerer en ny enhed eller app, så er der nogen som forsøger at snyde dig til at give dem adgang til dine data. I dette filfælde skal du ikke forsætte, men istedet kontakte din system administrator.",
|
||||
"Alternative log in using app password" : "Alternativ login med app adgangskode",
|
||||
"Account connected" : "Kontoen er tilknyttet",
|
||||
"Your client should now be connected!" : "Din klient burde være forbundet nu!",
|
||||
"You can close this window." : "Du kan lukke dette vindue",
|
||||
"Account access" : "Konto adgang",
|
||||
"More actions" : "Flere handlinger",
|
||||
"User menu" : "Brugermenu",
|
||||
"Your guest name: {user}" : "Dit gæstenavn: {user}",
|
||||
@@ -351,6 +341,7 @@ OC.L10N.register(
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "For information om hvordan du konfigurerer din server korrekt, {linkStart}se venligst dokumentationen{linkEnd}",
|
||||
"Autoconfig file detected" : "Autoconfig fil detekteret",
|
||||
"The setup form below is pre-filled with the values from the config file." : "Opsætningsformularen nedenfor er præudfyldt med værdierne fra config filen.",
|
||||
"Security warning" : "Sikkerheds advarsel",
|
||||
"Create administration account" : "Opret administrationkonto",
|
||||
"Administration account name" : "Administrationskontonavn",
|
||||
"Administration account password" : "Administrationskonto adgangskode",
|
||||
@@ -456,6 +447,18 @@ OC.L10N.register(
|
||||
"Skip to navigation of app" : "Skip til navigation af app",
|
||||
"Go to %s" : "Gå til %s",
|
||||
"Get your own free account" : "Få din egen gratis konto",
|
||||
"Connect to your account" : "Forbind til din konto",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Log venligst ind for at tildele %1$s adgang til din %2$s konto.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Hvis du ikke er igang med at konfigurerer en ny enhed eller app, så er der nogen som forsøger at snyde dig til at give dem adgang til dine data. I dette filfælde skal du ikke forsætte, men istedet kontakte din system administrator.",
|
||||
"App password" : "App adgangskode",
|
||||
"Grant access" : "Giv adgang",
|
||||
"Alternative log in using app password" : "Alternativ login med app adgangskode",
|
||||
"Account access" : "Konto adgang",
|
||||
"Currently logged in as %1$s (%2$s)." : "Logget ind som %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Du er ved at tildele %1$s adgang til din %2$s konto.",
|
||||
"Account connected" : "Kontoen er tilknyttet",
|
||||
"Your client should now be connected!" : "Din klient burde være forbundet nu!",
|
||||
"You can close this window." : "Du kan lukke dette vindue",
|
||||
"Previous" : "Tidligere",
|
||||
"This share is password-protected" : "Delingen er beskyttet af kodeord",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "Adgangskoden er forkert eller udløbet. Forsøg venligst igen eller anmod om et nyt.",
|
||||
@@ -540,9 +543,6 @@ OC.L10N.register(
|
||||
"Configure the database" : "Konfigurer databasen",
|
||||
"Only %s is available." : "Kun %s er tilgængelig.",
|
||||
"Database account" : "Database konto",
|
||||
"Installing …" : "Installerer...",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Log venligst ind for at tildele %1$s adgang til din %2$s konto.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Logget ind som %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Du er ved at tildele %1$s adgang til din %2$s konto."
|
||||
"Installing …" : "Installerer..."
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
+14
-14
@@ -210,8 +210,6 @@
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} underretning","{count} underretninger"],
|
||||
"No" : "Nej",
|
||||
"Yes" : "Ja",
|
||||
"App password" : "App adgangskode",
|
||||
"Grant access" : "Giv adgang",
|
||||
"The remote URL must include the user." : "Fjern-URL'en skal omfatte brugeren.",
|
||||
"Invalid remote URL." : "Ugyldig fjern webadresse.",
|
||||
"Failed to add the public link to your Nextcloud" : "Fejl ved tilføjelse af offentligt link til din Nextcloud",
|
||||
@@ -324,14 +322,6 @@
|
||||
"Back" : "Tilbage",
|
||||
"Login form is disabled." : "Loginformularen er deaktiveret.",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "Nextcloud-loginformularen er deaktiveret. Brug en anden login-mulighed, hvis den er tilgængelig, eller kontakt din administration.",
|
||||
"Connect to your account" : "Forbind til din konto",
|
||||
"Security warning" : "Sikkerheds advarsel",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Hvis du ikke er igang med at konfigurerer en ny enhed eller app, så er der nogen som forsøger at snyde dig til at give dem adgang til dine data. I dette filfælde skal du ikke forsætte, men istedet kontakte din system administrator.",
|
||||
"Alternative log in using app password" : "Alternativ login med app adgangskode",
|
||||
"Account connected" : "Kontoen er tilknyttet",
|
||||
"Your client should now be connected!" : "Din klient burde være forbundet nu!",
|
||||
"You can close this window." : "Du kan lukke dette vindue",
|
||||
"Account access" : "Konto adgang",
|
||||
"More actions" : "Flere handlinger",
|
||||
"User menu" : "Brugermenu",
|
||||
"Your guest name: {user}" : "Dit gæstenavn: {user}",
|
||||
@@ -349,6 +339,7 @@
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "For information om hvordan du konfigurerer din server korrekt, {linkStart}se venligst dokumentationen{linkEnd}",
|
||||
"Autoconfig file detected" : "Autoconfig fil detekteret",
|
||||
"The setup form below is pre-filled with the values from the config file." : "Opsætningsformularen nedenfor er præudfyldt med værdierne fra config filen.",
|
||||
"Security warning" : "Sikkerheds advarsel",
|
||||
"Create administration account" : "Opret administrationkonto",
|
||||
"Administration account name" : "Administrationskontonavn",
|
||||
"Administration account password" : "Administrationskonto adgangskode",
|
||||
@@ -454,6 +445,18 @@
|
||||
"Skip to navigation of app" : "Skip til navigation af app",
|
||||
"Go to %s" : "Gå til %s",
|
||||
"Get your own free account" : "Få din egen gratis konto",
|
||||
"Connect to your account" : "Forbind til din konto",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Log venligst ind for at tildele %1$s adgang til din %2$s konto.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Hvis du ikke er igang med at konfigurerer en ny enhed eller app, så er der nogen som forsøger at snyde dig til at give dem adgang til dine data. I dette filfælde skal du ikke forsætte, men istedet kontakte din system administrator.",
|
||||
"App password" : "App adgangskode",
|
||||
"Grant access" : "Giv adgang",
|
||||
"Alternative log in using app password" : "Alternativ login med app adgangskode",
|
||||
"Account access" : "Konto adgang",
|
||||
"Currently logged in as %1$s (%2$s)." : "Logget ind som %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Du er ved at tildele %1$s adgang til din %2$s konto.",
|
||||
"Account connected" : "Kontoen er tilknyttet",
|
||||
"Your client should now be connected!" : "Din klient burde være forbundet nu!",
|
||||
"You can close this window." : "Du kan lukke dette vindue",
|
||||
"Previous" : "Tidligere",
|
||||
"This share is password-protected" : "Delingen er beskyttet af kodeord",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "Adgangskoden er forkert eller udløbet. Forsøg venligst igen eller anmod om et nyt.",
|
||||
@@ -538,9 +541,6 @@
|
||||
"Configure the database" : "Konfigurer databasen",
|
||||
"Only %s is available." : "Kun %s er tilgængelig.",
|
||||
"Database account" : "Database konto",
|
||||
"Installing …" : "Installerer...",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Log venligst ind for at tildele %1$s adgang til din %2$s konto.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Logget ind som %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Du er ved at tildele %1$s adgang til din %2$s konto."
|
||||
"Installing …" : "Installerer..."
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
+14
-14
@@ -216,8 +216,6 @@ OC.L10N.register(
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} Benachrichtigung","{count} Benachrichtigungen"],
|
||||
"No" : "Nein",
|
||||
"Yes" : "Ja",
|
||||
"App password" : "App-Passwort",
|
||||
"Grant access" : "Zugriff gewähren",
|
||||
"The remote URL must include the user." : "Die entfernte URL muss den Benutzer enthalten.",
|
||||
"Invalid remote URL." : "Ungültige entfernte URL.",
|
||||
"Failed to add the public link to your Nextcloud" : "Der öffentliche Link konnte nicht zu deiner Nextcloud hinzugefügt werden",
|
||||
@@ -333,14 +331,6 @@ OC.L10N.register(
|
||||
"Back" : "Zurück",
|
||||
"Login form is disabled." : "Das Anmeldeformular ist deaktiviert.",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "Das Nextcloud-Anmeldeformular ist deaktiviert. Nutze ggf. eine andere Anmeldemöglichkeit oder wende dich an deine Administration.",
|
||||
"Connect to your account" : "Verbinde dich mit deinem Konto",
|
||||
"Security warning" : "Sicherheitswarnung",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Solltest du aktuell nicht versuchen, ein neues Gerät oder eine neue App einzurichten, dann kann es sein, dass jemand versucht, dich dazu zu bewegen, ihm Zugriff auf deine Daten zu gewähren. Fahre in diesem Fall nicht fort, sondern wende dich an deine Administration.",
|
||||
"Alternative log in using app password" : "Alternative Anmeldung mittels App-Passwort",
|
||||
"Account connected" : "Konto verbunden",
|
||||
"Your client should now be connected!" : "Dein Client sollte nun verbunden sein!",
|
||||
"You can close this window." : "Du kannst dieses Fenster schließen.",
|
||||
"Account access" : "Kontozugriff ",
|
||||
"More actions" : "Weitere Aktionen",
|
||||
"User menu" : "Benutzermenü",
|
||||
"Your guest name: {user}" : "Dein Gastname: {user}",
|
||||
@@ -358,6 +348,7 @@ OC.L10N.register(
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "Informationen zur ordnungsgemäßen Konfiguration des Servers sind {linkStart}in der Dokumentation zu finden{linkEnd}",
|
||||
"Autoconfig file detected" : "Autoconfig-Datei erkannt",
|
||||
"The setup form below is pre-filled with the values from the config file." : "Das folgende Einrichtungsformular ist mit den Werten aus der Konfigurationsdatei vorausgefüllt.",
|
||||
"Security warning" : "Sicherheitswarnung",
|
||||
"Create administration account" : "Administrationskonto erstellen",
|
||||
"Administration account name" : "Name des Administrationskontos",
|
||||
"Administration account password" : "Passwort des Administrationskontos",
|
||||
@@ -463,6 +454,18 @@ OC.L10N.register(
|
||||
"Skip to navigation of app" : "Zum Navigationsbereich der App springen",
|
||||
"Go to %s" : "%s aufrufen",
|
||||
"Get your own free account" : "Hole dir dein eigenes kostenloses Konto",
|
||||
"Connect to your account" : "Verbinde dich mit deinem Konto",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Bitte melde dich an, bevor du %1$s Zugriff auf dein %2$s-Konto gewährst.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Solltest du aktuell nicht versuchen, ein neues Gerät oder eine neue App einzurichten, dann kann es sein, dass jemand versucht, dich dazu zu bewegen, ihm Zugriff auf deine Daten zu gewähren. Fahre in diesem Fall nicht fort, sondern wende dich an deine Administration.",
|
||||
"App password" : "App-Passwort",
|
||||
"Grant access" : "Zugriff gewähren",
|
||||
"Alternative log in using app password" : "Alternative Anmeldung mittels App-Passwort",
|
||||
"Account access" : "Kontozugriff ",
|
||||
"Currently logged in as %1$s (%2$s)." : "Aktuell angemeldet als %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Du bist dabei, %1$s Zugriff auf dein %2$s-Konto zu gewähren.",
|
||||
"Account connected" : "Konto verbunden",
|
||||
"Your client should now be connected!" : "Dein Client sollte nun verbunden sein!",
|
||||
"You can close this window." : "Du kannst dieses Fenster schließen.",
|
||||
"Previous" : "Vorige",
|
||||
"This share is password-protected" : "Diese Freigabe ist passwortgeschützt",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "Das Passwort ist falsch oder abgelaufen. Bitte erneut versuchen oder ein neues Passwort anfordern.",
|
||||
@@ -547,9 +550,6 @@ OC.L10N.register(
|
||||
"Configure the database" : "Datenbank einrichten",
|
||||
"Only %s is available." : "Es ist nur %s verfügbar.",
|
||||
"Database account" : "Datenbankkonto",
|
||||
"Installing …" : "Installiere …",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Bitte melde dich an, bevor du %1$s Zugriff auf dein %2$s-Konto gewährst.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Aktuell angemeldet als %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Du bist dabei, %1$s Zugriff auf dein %2$s-Konto zu gewähren."
|
||||
"Installing …" : "Installiere …"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
+14
-14
@@ -214,8 +214,6 @@
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} Benachrichtigung","{count} Benachrichtigungen"],
|
||||
"No" : "Nein",
|
||||
"Yes" : "Ja",
|
||||
"App password" : "App-Passwort",
|
||||
"Grant access" : "Zugriff gewähren",
|
||||
"The remote URL must include the user." : "Die entfernte URL muss den Benutzer enthalten.",
|
||||
"Invalid remote URL." : "Ungültige entfernte URL.",
|
||||
"Failed to add the public link to your Nextcloud" : "Der öffentliche Link konnte nicht zu deiner Nextcloud hinzugefügt werden",
|
||||
@@ -331,14 +329,6 @@
|
||||
"Back" : "Zurück",
|
||||
"Login form is disabled." : "Das Anmeldeformular ist deaktiviert.",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "Das Nextcloud-Anmeldeformular ist deaktiviert. Nutze ggf. eine andere Anmeldemöglichkeit oder wende dich an deine Administration.",
|
||||
"Connect to your account" : "Verbinde dich mit deinem Konto",
|
||||
"Security warning" : "Sicherheitswarnung",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Solltest du aktuell nicht versuchen, ein neues Gerät oder eine neue App einzurichten, dann kann es sein, dass jemand versucht, dich dazu zu bewegen, ihm Zugriff auf deine Daten zu gewähren. Fahre in diesem Fall nicht fort, sondern wende dich an deine Administration.",
|
||||
"Alternative log in using app password" : "Alternative Anmeldung mittels App-Passwort",
|
||||
"Account connected" : "Konto verbunden",
|
||||
"Your client should now be connected!" : "Dein Client sollte nun verbunden sein!",
|
||||
"You can close this window." : "Du kannst dieses Fenster schließen.",
|
||||
"Account access" : "Kontozugriff ",
|
||||
"More actions" : "Weitere Aktionen",
|
||||
"User menu" : "Benutzermenü",
|
||||
"Your guest name: {user}" : "Dein Gastname: {user}",
|
||||
@@ -356,6 +346,7 @@
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "Informationen zur ordnungsgemäßen Konfiguration des Servers sind {linkStart}in der Dokumentation zu finden{linkEnd}",
|
||||
"Autoconfig file detected" : "Autoconfig-Datei erkannt",
|
||||
"The setup form below is pre-filled with the values from the config file." : "Das folgende Einrichtungsformular ist mit den Werten aus der Konfigurationsdatei vorausgefüllt.",
|
||||
"Security warning" : "Sicherheitswarnung",
|
||||
"Create administration account" : "Administrationskonto erstellen",
|
||||
"Administration account name" : "Name des Administrationskontos",
|
||||
"Administration account password" : "Passwort des Administrationskontos",
|
||||
@@ -461,6 +452,18 @@
|
||||
"Skip to navigation of app" : "Zum Navigationsbereich der App springen",
|
||||
"Go to %s" : "%s aufrufen",
|
||||
"Get your own free account" : "Hole dir dein eigenes kostenloses Konto",
|
||||
"Connect to your account" : "Verbinde dich mit deinem Konto",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Bitte melde dich an, bevor du %1$s Zugriff auf dein %2$s-Konto gewährst.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Solltest du aktuell nicht versuchen, ein neues Gerät oder eine neue App einzurichten, dann kann es sein, dass jemand versucht, dich dazu zu bewegen, ihm Zugriff auf deine Daten zu gewähren. Fahre in diesem Fall nicht fort, sondern wende dich an deine Administration.",
|
||||
"App password" : "App-Passwort",
|
||||
"Grant access" : "Zugriff gewähren",
|
||||
"Alternative log in using app password" : "Alternative Anmeldung mittels App-Passwort",
|
||||
"Account access" : "Kontozugriff ",
|
||||
"Currently logged in as %1$s (%2$s)." : "Aktuell angemeldet als %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Du bist dabei, %1$s Zugriff auf dein %2$s-Konto zu gewähren.",
|
||||
"Account connected" : "Konto verbunden",
|
||||
"Your client should now be connected!" : "Dein Client sollte nun verbunden sein!",
|
||||
"You can close this window." : "Du kannst dieses Fenster schließen.",
|
||||
"Previous" : "Vorige",
|
||||
"This share is password-protected" : "Diese Freigabe ist passwortgeschützt",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "Das Passwort ist falsch oder abgelaufen. Bitte erneut versuchen oder ein neues Passwort anfordern.",
|
||||
@@ -545,9 +548,6 @@
|
||||
"Configure the database" : "Datenbank einrichten",
|
||||
"Only %s is available." : "Es ist nur %s verfügbar.",
|
||||
"Database account" : "Datenbankkonto",
|
||||
"Installing …" : "Installiere …",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Bitte melde dich an, bevor du %1$s Zugriff auf dein %2$s-Konto gewährst.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Aktuell angemeldet als %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Du bist dabei, %1$s Zugriff auf dein %2$s-Konto zu gewähren."
|
||||
"Installing …" : "Installiere …"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
+14
-14
@@ -216,8 +216,6 @@ OC.L10N.register(
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} Benachrichtigung","{count} Benachrichtigungen"],
|
||||
"No" : "Nein",
|
||||
"Yes" : "Ja",
|
||||
"App password" : "App-Passwort",
|
||||
"Grant access" : "Zugriff gewähren",
|
||||
"The remote URL must include the user." : "Die entfernte URL muss den Benutzer enthalten.",
|
||||
"Invalid remote URL." : "Ungültige entfernte URL.",
|
||||
"Failed to add the public link to your Nextcloud" : "Der öffentliche Link konnte nicht zu Ihrer Nextcloud hinzugefügt werden",
|
||||
@@ -333,14 +331,6 @@ OC.L10N.register(
|
||||
"Back" : "Zurück",
|
||||
"Login form is disabled." : "Das Anmeldeformular ist deaktiviert.",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "Das Nextcloud-Anmeldeformular ist deaktiviert. Nutzen Sie ggf. eine andere Anmeldemöglichkeit oder wenden Sie sich an Ihre Administration.",
|
||||
"Connect to your account" : "Verbinden Sie sich mit Ihrem Konto",
|
||||
"Security warning" : "Sicherheitswarnung",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Sollten Sie aktuell nicht versuchen, ein neues Gerät oder eine neue App einzurichten, dann kann es sein, dass aktuell jemand versucht, Sie dazu zu bewegen, ihm Zugriff auf Ihre Daten zu gewähren. Fahren Sie in diesem Fall nicht fort, sondern wenden Sie sich an Ihre Administration.",
|
||||
"Alternative log in using app password" : "Alternative Anmeldung mittels App-Passwort",
|
||||
"Account connected" : "Konto verbunden",
|
||||
"Your client should now be connected!" : "Ihr Client sollte nun verbunden sein!",
|
||||
"You can close this window." : "Sie können dieses Fenster schließen.",
|
||||
"Account access" : "Kontozugriff ",
|
||||
"More actions" : "Weitere Aktionen",
|
||||
"User menu" : "Benutzermenü",
|
||||
"Your guest name: {user}" : "Ihr Gastname: {user}",
|
||||
@@ -358,6 +348,7 @@ OC.L10N.register(
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "Informationen zur ordnungsgemäßen Konfiguration des Servers sind {linkStart}in der Dokumentation zu finden{linkEnd}",
|
||||
"Autoconfig file detected" : "Autoconfig-Datei erkannt",
|
||||
"The setup form below is pre-filled with the values from the config file." : "Das folgende Einrichtungsformular ist mit den Werten aus der Konfigurationsdatei vorausgefüllt.",
|
||||
"Security warning" : "Sicherheitswarnung",
|
||||
"Create administration account" : "Administrationskonto erstellen",
|
||||
"Administration account name" : "Name des Administrationskontos",
|
||||
"Administration account password" : "Passwort des Administrationskontos",
|
||||
@@ -463,6 +454,18 @@ OC.L10N.register(
|
||||
"Skip to navigation of app" : "Zum Navigationsbereich der App springen",
|
||||
"Go to %s" : "%s aufrufen",
|
||||
"Get your own free account" : "Holen Sie sich Ihr eigenes kostenloses Konto",
|
||||
"Connect to your account" : "Verbinden Sie sich mit Ihrem Konto",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Bitte anmelden, bevor Sie %1$s Zugriff auf Ihr %2$s-Konto gewähren.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Sollten Sie aktuell nicht versuchen, ein neues Gerät oder eine neue App einzurichten, dann kann es sein, dass aktuell jemand versucht, Sie dazu zu bewegen, ihm Zugriff auf Ihre Daten zu gewähren. Fahren Sie in diesem Fall nicht fort, sondern wenden Sie sich an Ihre Administration.",
|
||||
"App password" : "App-Passwort",
|
||||
"Grant access" : "Zugriff gewähren",
|
||||
"Alternative log in using app password" : "Alternative Anmeldung mittels App-Passwort",
|
||||
"Account access" : "Kontozugriff ",
|
||||
"Currently logged in as %1$s (%2$s)." : "Aktuell angemeldet als %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Sie sind dabei, %1$s Zugriff auf Ihr %2$s-Konto zu gewähren.",
|
||||
"Account connected" : "Konto verbunden",
|
||||
"Your client should now be connected!" : "Ihr Client sollte nun verbunden sein!",
|
||||
"You can close this window." : "Sie können dieses Fenster schließen.",
|
||||
"Previous" : "Vorige",
|
||||
"This share is password-protected" : "Diese Freigabe ist passwortgeschützt",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "Passwort falsch oder abgelaufen. Bitte erneut versuchen oder ein neues Passwort anfordern.",
|
||||
@@ -547,9 +550,6 @@ OC.L10N.register(
|
||||
"Configure the database" : "Datenbank einrichten",
|
||||
"Only %s is available." : "Es ist nur %s verfügbar.",
|
||||
"Database account" : "Datenbankkonto",
|
||||
"Installing …" : "Installiere …",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Bitte anmelden, bevor Sie %1$s Zugriff auf Ihr %2$s-Konto gewähren.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Aktuell angemeldet als %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Sie sind dabei, %1$s Zugriff auf Ihr %2$s-Konto zu gewähren."
|
||||
"Installing …" : "Installiere …"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
+14
-14
@@ -214,8 +214,6 @@
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} Benachrichtigung","{count} Benachrichtigungen"],
|
||||
"No" : "Nein",
|
||||
"Yes" : "Ja",
|
||||
"App password" : "App-Passwort",
|
||||
"Grant access" : "Zugriff gewähren",
|
||||
"The remote URL must include the user." : "Die entfernte URL muss den Benutzer enthalten.",
|
||||
"Invalid remote URL." : "Ungültige entfernte URL.",
|
||||
"Failed to add the public link to your Nextcloud" : "Der öffentliche Link konnte nicht zu Ihrer Nextcloud hinzugefügt werden",
|
||||
@@ -331,14 +329,6 @@
|
||||
"Back" : "Zurück",
|
||||
"Login form is disabled." : "Das Anmeldeformular ist deaktiviert.",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "Das Nextcloud-Anmeldeformular ist deaktiviert. Nutzen Sie ggf. eine andere Anmeldemöglichkeit oder wenden Sie sich an Ihre Administration.",
|
||||
"Connect to your account" : "Verbinden Sie sich mit Ihrem Konto",
|
||||
"Security warning" : "Sicherheitswarnung",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Sollten Sie aktuell nicht versuchen, ein neues Gerät oder eine neue App einzurichten, dann kann es sein, dass aktuell jemand versucht, Sie dazu zu bewegen, ihm Zugriff auf Ihre Daten zu gewähren. Fahren Sie in diesem Fall nicht fort, sondern wenden Sie sich an Ihre Administration.",
|
||||
"Alternative log in using app password" : "Alternative Anmeldung mittels App-Passwort",
|
||||
"Account connected" : "Konto verbunden",
|
||||
"Your client should now be connected!" : "Ihr Client sollte nun verbunden sein!",
|
||||
"You can close this window." : "Sie können dieses Fenster schließen.",
|
||||
"Account access" : "Kontozugriff ",
|
||||
"More actions" : "Weitere Aktionen",
|
||||
"User menu" : "Benutzermenü",
|
||||
"Your guest name: {user}" : "Ihr Gastname: {user}",
|
||||
@@ -356,6 +346,7 @@
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "Informationen zur ordnungsgemäßen Konfiguration des Servers sind {linkStart}in der Dokumentation zu finden{linkEnd}",
|
||||
"Autoconfig file detected" : "Autoconfig-Datei erkannt",
|
||||
"The setup form below is pre-filled with the values from the config file." : "Das folgende Einrichtungsformular ist mit den Werten aus der Konfigurationsdatei vorausgefüllt.",
|
||||
"Security warning" : "Sicherheitswarnung",
|
||||
"Create administration account" : "Administrationskonto erstellen",
|
||||
"Administration account name" : "Name des Administrationskontos",
|
||||
"Administration account password" : "Passwort des Administrationskontos",
|
||||
@@ -461,6 +452,18 @@
|
||||
"Skip to navigation of app" : "Zum Navigationsbereich der App springen",
|
||||
"Go to %s" : "%s aufrufen",
|
||||
"Get your own free account" : "Holen Sie sich Ihr eigenes kostenloses Konto",
|
||||
"Connect to your account" : "Verbinden Sie sich mit Ihrem Konto",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Bitte anmelden, bevor Sie %1$s Zugriff auf Ihr %2$s-Konto gewähren.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Sollten Sie aktuell nicht versuchen, ein neues Gerät oder eine neue App einzurichten, dann kann es sein, dass aktuell jemand versucht, Sie dazu zu bewegen, ihm Zugriff auf Ihre Daten zu gewähren. Fahren Sie in diesem Fall nicht fort, sondern wenden Sie sich an Ihre Administration.",
|
||||
"App password" : "App-Passwort",
|
||||
"Grant access" : "Zugriff gewähren",
|
||||
"Alternative log in using app password" : "Alternative Anmeldung mittels App-Passwort",
|
||||
"Account access" : "Kontozugriff ",
|
||||
"Currently logged in as %1$s (%2$s)." : "Aktuell angemeldet als %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Sie sind dabei, %1$s Zugriff auf Ihr %2$s-Konto zu gewähren.",
|
||||
"Account connected" : "Konto verbunden",
|
||||
"Your client should now be connected!" : "Ihr Client sollte nun verbunden sein!",
|
||||
"You can close this window." : "Sie können dieses Fenster schließen.",
|
||||
"Previous" : "Vorige",
|
||||
"This share is password-protected" : "Diese Freigabe ist passwortgeschützt",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "Passwort falsch oder abgelaufen. Bitte erneut versuchen oder ein neues Passwort anfordern.",
|
||||
@@ -545,9 +548,6 @@
|
||||
"Configure the database" : "Datenbank einrichten",
|
||||
"Only %s is available." : "Es ist nur %s verfügbar.",
|
||||
"Database account" : "Datenbankkonto",
|
||||
"Installing …" : "Installiere …",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Bitte anmelden, bevor Sie %1$s Zugriff auf Ihr %2$s-Konto gewähren.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Aktuell angemeldet als %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Sie sind dabei, %1$s Zugriff auf Ihr %2$s-Konto zu gewähren."
|
||||
"Installing …" : "Installiere …"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
+14
-14
@@ -212,8 +212,6 @@ OC.L10N.register(
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} ειδοποίηση","{count} ειδοποιήσεις"],
|
||||
"No" : "Όχι",
|
||||
"Yes" : "Ναι",
|
||||
"App password" : "Συνθηματικό εφαρμογής",
|
||||
"Grant access" : "Παροχή άδειας πρόσβασης",
|
||||
"The remote URL must include the user." : "Η απομακρυσμένη URL πρέπει να περιλαμβάνει τον χρήστη.",
|
||||
"Invalid remote URL." : "Μη έγκυρη απομακρυσμένη URL.",
|
||||
"Failed to add the public link to your Nextcloud" : "Αποτυχία στην πρόσθεση του κοινού συνδέσμου στο Nextcloud σας",
|
||||
@@ -324,14 +322,6 @@ OC.L10N.register(
|
||||
"Back" : "Πίσω",
|
||||
"Login form is disabled." : "Η φόρμα σύνδεσης είναι απενεργοποιημένη.",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "Η φόρμα σύνδεσης του Nextcloud είναι απενεργοποιημένη. Χρησιμοποιήστε μια άλλη επιλογή σύνδεσης εάν είναι διαθέσιμη ή επικοινωνήστε με τον διαχειριστή σας.",
|
||||
"Connect to your account" : "Σύνδεση στον λογαριασμό σας",
|
||||
"Security warning" : "Προειδοποίηση ασφαλείας",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Εάν δεν προσπαθείτε να ρυθμίσετε μια νέα συσκευή ή εφαρμογή, κάποιος προσπαθεί να σας εξαπατήσει ώστε να του παραχωρήσετε πρόσβαση στα δεδομένα σας. Σε αυτήν την περίπτωση μην προχωρήσετε και επικοινωνήστε με τον διαχειριστή του συστήματός σας.",
|
||||
"Alternative log in using app password" : "Εναλλακτική σύνδεση με χρήση συνθηματικό εφαρμογής",
|
||||
"Account connected" : "Συνδεδεμένος λογαριασμός",
|
||||
"Your client should now be connected!" : "Η εφαρμογή υπολογιστή έχει συνδεθεί!",
|
||||
"You can close this window." : "Μπορείτε να κλείσετε το παράθυρο.",
|
||||
"Account access" : "Πρόσβαση λογαριασμού",
|
||||
"More actions" : "Περισσότερες ενέργειες",
|
||||
"User menu" : "Μενού χρήστη",
|
||||
"Your guest name: {user}" : "Το όνομα επισκέπτη σας: {user}",
|
||||
@@ -349,6 +339,7 @@ OC.L10N.register(
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "Για πληροφορίες σχετικά με τον σωστό ρυθμισμό του διακομιστή σας, παρακαλούμε {linkStart}δείτε την τεκμηρίωση{linkEnd}",
|
||||
"Autoconfig file detected" : "Εντοπίστηκε αρχείο αυτόματης ρύθμισης",
|
||||
"The setup form below is pre-filled with the values from the config file." : "Η παρακάτω φόρμα ρύθμισης είναι προ-συμπληρωμένη με τις τιμές από το αρχείο ρυθμίσεων.",
|
||||
"Security warning" : "Προειδοποίηση ασφαλείας",
|
||||
"Create administration account" : "Δημιουργία λογαριασμού διαχείρισης",
|
||||
"Administration account name" : "Όνομα λογαριασμού διαχείρισης",
|
||||
"Administration account password" : "Συνθηματικό λογαριασμού διαχείρισης",
|
||||
@@ -452,6 +443,18 @@ OC.L10N.register(
|
||||
"Skip to navigation of app" : "Μεταβείτε στην πλοήγηση της εφαρμογής",
|
||||
"Go to %s" : "Μετάβαση στο %s",
|
||||
"Get your own free account" : "Αποκτήστε τον δωρεάν λογαριασμό σας",
|
||||
"Connect to your account" : "Σύνδεση στον λογαριασμό σας",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Παρακαλούμε συνδεθείτε πρίν χορηγήσετε %1$s πρόσβαση στον λογαριασμό σας %2$s.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Εάν δεν προσπαθείτε να ρυθμίσετε μια νέα συσκευή ή εφαρμογή, κάποιος προσπαθεί να σας εξαπατήσει ώστε να του παραχωρήσετε πρόσβαση στα δεδομένα σας. Σε αυτήν την περίπτωση μην προχωρήσετε και επικοινωνήστε με τον διαχειριστή του συστήματός σας.",
|
||||
"App password" : "Συνθηματικό εφαρμογής",
|
||||
"Grant access" : "Παροχή άδειας πρόσβασης",
|
||||
"Alternative log in using app password" : "Εναλλακτική σύνδεση με χρήση συνθηματικό εφαρμογής",
|
||||
"Account access" : "Πρόσβαση λογαριασμού",
|
||||
"Currently logged in as %1$s (%2$s)." : "Αυτήν τη στιγμή έχετε συνδεθεί ως %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Πρόκειται να χορηγήσετε άδεια %1$s στον λογαριασμό σας %2$s.",
|
||||
"Account connected" : "Συνδεδεμένος λογαριασμός",
|
||||
"Your client should now be connected!" : "Η εφαρμογή υπολογιστή έχει συνδεθεί!",
|
||||
"You can close this window." : "Μπορείτε να κλείσετε το παράθυρο.",
|
||||
"Previous" : "Προηγούμενο",
|
||||
"This share is password-protected" : "Το κοινόχρηστο έχει προστασία κωδικού",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "Το συνθηματικό είναι λάθος ή έχει λήξει. Δοκιμάστε ξανά ή ζητήστε νέο.",
|
||||
@@ -536,9 +539,6 @@ OC.L10N.register(
|
||||
"Configure the database" : "Ρύθμιση της βάσης δεδομένων",
|
||||
"Only %s is available." : "Μόνο %s είναι διαθέσιμο.",
|
||||
"Database account" : "Λογαριασμός βάσης δεδομένων",
|
||||
"Installing …" : "Γίνεται εγκατάσταση …",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Παρακαλούμε συνδεθείτε πρίν χορηγήσετε %1$s πρόσβαση στον λογαριασμό σας %2$s.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Αυτήν τη στιγμή έχετε συνδεθεί ως %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Πρόκειται να χορηγήσετε άδεια %1$s στον λογαριασμό σας %2$s."
|
||||
"Installing …" : "Γίνεται εγκατάσταση …"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
+14
-14
@@ -210,8 +210,6 @@
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} ειδοποίηση","{count} ειδοποιήσεις"],
|
||||
"No" : "Όχι",
|
||||
"Yes" : "Ναι",
|
||||
"App password" : "Συνθηματικό εφαρμογής",
|
||||
"Grant access" : "Παροχή άδειας πρόσβασης",
|
||||
"The remote URL must include the user." : "Η απομακρυσμένη URL πρέπει να περιλαμβάνει τον χρήστη.",
|
||||
"Invalid remote URL." : "Μη έγκυρη απομακρυσμένη URL.",
|
||||
"Failed to add the public link to your Nextcloud" : "Αποτυχία στην πρόσθεση του κοινού συνδέσμου στο Nextcloud σας",
|
||||
@@ -322,14 +320,6 @@
|
||||
"Back" : "Πίσω",
|
||||
"Login form is disabled." : "Η φόρμα σύνδεσης είναι απενεργοποιημένη.",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "Η φόρμα σύνδεσης του Nextcloud είναι απενεργοποιημένη. Χρησιμοποιήστε μια άλλη επιλογή σύνδεσης εάν είναι διαθέσιμη ή επικοινωνήστε με τον διαχειριστή σας.",
|
||||
"Connect to your account" : "Σύνδεση στον λογαριασμό σας",
|
||||
"Security warning" : "Προειδοποίηση ασφαλείας",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Εάν δεν προσπαθείτε να ρυθμίσετε μια νέα συσκευή ή εφαρμογή, κάποιος προσπαθεί να σας εξαπατήσει ώστε να του παραχωρήσετε πρόσβαση στα δεδομένα σας. Σε αυτήν την περίπτωση μην προχωρήσετε και επικοινωνήστε με τον διαχειριστή του συστήματός σας.",
|
||||
"Alternative log in using app password" : "Εναλλακτική σύνδεση με χρήση συνθηματικό εφαρμογής",
|
||||
"Account connected" : "Συνδεδεμένος λογαριασμός",
|
||||
"Your client should now be connected!" : "Η εφαρμογή υπολογιστή έχει συνδεθεί!",
|
||||
"You can close this window." : "Μπορείτε να κλείσετε το παράθυρο.",
|
||||
"Account access" : "Πρόσβαση λογαριασμού",
|
||||
"More actions" : "Περισσότερες ενέργειες",
|
||||
"User menu" : "Μενού χρήστη",
|
||||
"Your guest name: {user}" : "Το όνομα επισκέπτη σας: {user}",
|
||||
@@ -347,6 +337,7 @@
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "Για πληροφορίες σχετικά με τον σωστό ρυθμισμό του διακομιστή σας, παρακαλούμε {linkStart}δείτε την τεκμηρίωση{linkEnd}",
|
||||
"Autoconfig file detected" : "Εντοπίστηκε αρχείο αυτόματης ρύθμισης",
|
||||
"The setup form below is pre-filled with the values from the config file." : "Η παρακάτω φόρμα ρύθμισης είναι προ-συμπληρωμένη με τις τιμές από το αρχείο ρυθμίσεων.",
|
||||
"Security warning" : "Προειδοποίηση ασφαλείας",
|
||||
"Create administration account" : "Δημιουργία λογαριασμού διαχείρισης",
|
||||
"Administration account name" : "Όνομα λογαριασμού διαχείρισης",
|
||||
"Administration account password" : "Συνθηματικό λογαριασμού διαχείρισης",
|
||||
@@ -450,6 +441,18 @@
|
||||
"Skip to navigation of app" : "Μεταβείτε στην πλοήγηση της εφαρμογής",
|
||||
"Go to %s" : "Μετάβαση στο %s",
|
||||
"Get your own free account" : "Αποκτήστε τον δωρεάν λογαριασμό σας",
|
||||
"Connect to your account" : "Σύνδεση στον λογαριασμό σας",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Παρακαλούμε συνδεθείτε πρίν χορηγήσετε %1$s πρόσβαση στον λογαριασμό σας %2$s.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Εάν δεν προσπαθείτε να ρυθμίσετε μια νέα συσκευή ή εφαρμογή, κάποιος προσπαθεί να σας εξαπατήσει ώστε να του παραχωρήσετε πρόσβαση στα δεδομένα σας. Σε αυτήν την περίπτωση μην προχωρήσετε και επικοινωνήστε με τον διαχειριστή του συστήματός σας.",
|
||||
"App password" : "Συνθηματικό εφαρμογής",
|
||||
"Grant access" : "Παροχή άδειας πρόσβασης",
|
||||
"Alternative log in using app password" : "Εναλλακτική σύνδεση με χρήση συνθηματικό εφαρμογής",
|
||||
"Account access" : "Πρόσβαση λογαριασμού",
|
||||
"Currently logged in as %1$s (%2$s)." : "Αυτήν τη στιγμή έχετε συνδεθεί ως %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Πρόκειται να χορηγήσετε άδεια %1$s στον λογαριασμό σας %2$s.",
|
||||
"Account connected" : "Συνδεδεμένος λογαριασμός",
|
||||
"Your client should now be connected!" : "Η εφαρμογή υπολογιστή έχει συνδεθεί!",
|
||||
"You can close this window." : "Μπορείτε να κλείσετε το παράθυρο.",
|
||||
"Previous" : "Προηγούμενο",
|
||||
"This share is password-protected" : "Το κοινόχρηστο έχει προστασία κωδικού",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "Το συνθηματικό είναι λάθος ή έχει λήξει. Δοκιμάστε ξανά ή ζητήστε νέο.",
|
||||
@@ -534,9 +537,6 @@
|
||||
"Configure the database" : "Ρύθμιση της βάσης δεδομένων",
|
||||
"Only %s is available." : "Μόνο %s είναι διαθέσιμο.",
|
||||
"Database account" : "Λογαριασμός βάσης δεδομένων",
|
||||
"Installing …" : "Γίνεται εγκατάσταση …",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Παρακαλούμε συνδεθείτε πρίν χορηγήσετε %1$s πρόσβαση στον λογαριασμό σας %2$s.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Αυτήν τη στιγμή έχετε συνδεθεί ως %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Πρόκειται να χορηγήσετε άδεια %1$s στον λογαριασμό σας %2$s."
|
||||
"Installing …" : "Γίνεται εγκατάσταση …"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
+14
-14
@@ -213,8 +213,6 @@ OC.L10N.register(
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} notification","{count} notifications"],
|
||||
"No" : "No",
|
||||
"Yes" : "Yes",
|
||||
"App password" : "App password",
|
||||
"Grant access" : "Grant access",
|
||||
"The remote URL must include the user." : "The remote URL must include the user.",
|
||||
"Invalid remote URL." : "Invalid remote URL.",
|
||||
"Failed to add the public link to your Nextcloud" : "Failed to add the public link to your Nextcloud",
|
||||
@@ -330,14 +328,6 @@ OC.L10N.register(
|
||||
"Back" : "Back",
|
||||
"Login form is disabled." : "Login form is disabled.",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "The Nextcloud login form is disabled. Use another login option if available or contact your administration.",
|
||||
"Connect to your account" : "Connect to your account",
|
||||
"Security warning" : "Security warning",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator.",
|
||||
"Alternative log in using app password" : "Alternative log in using app password",
|
||||
"Account connected" : "Account connected",
|
||||
"Your client should now be connected!" : "Your client should now be connected!",
|
||||
"You can close this window." : "You can close this window.",
|
||||
"Account access" : "Account access",
|
||||
"More actions" : "More actions",
|
||||
"User menu" : "User menu",
|
||||
"Your guest name: {user}" : "Your guest name: {user}",
|
||||
@@ -355,6 +345,7 @@ OC.L10N.register(
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}",
|
||||
"Autoconfig file detected" : "Autoconfig file detected",
|
||||
"The setup form below is pre-filled with the values from the config file." : "The setup form below is pre-filled with the values from the config file.",
|
||||
"Security warning" : "Security warning",
|
||||
"Create administration account" : "Create administration account",
|
||||
"Administration account name" : "Administration account name",
|
||||
"Administration account password" : "Administration account password",
|
||||
@@ -460,6 +451,18 @@ OC.L10N.register(
|
||||
"Skip to navigation of app" : "Skip to navigation of app",
|
||||
"Go to %s" : "Go to %s",
|
||||
"Get your own free account" : "Get your own free account",
|
||||
"Connect to your account" : "Connect to your account",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Please log in before granting %1$s access to your %2$s account.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator.",
|
||||
"App password" : "App password",
|
||||
"Grant access" : "Grant access",
|
||||
"Alternative log in using app password" : "Alternative log in using app password",
|
||||
"Account access" : "Account access",
|
||||
"Currently logged in as %1$s (%2$s)." : "Currently logged in as %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "You are about to grant %1$s access to your %2$s account.",
|
||||
"Account connected" : "Account connected",
|
||||
"Your client should now be connected!" : "Your client should now be connected!",
|
||||
"You can close this window." : "You can close this window.",
|
||||
"Previous" : "Previous",
|
||||
"This share is password-protected" : "This share is password-protected",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "The password is wrong or expired. Please try again or request a new one.",
|
||||
@@ -544,9 +547,6 @@ OC.L10N.register(
|
||||
"Configure the database" : "Configure the database",
|
||||
"Only %s is available." : "Only %s is available.",
|
||||
"Database account" : "Database account",
|
||||
"Installing …" : "Installing …",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Please log in before granting %1$s access to your %2$s account.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Currently logged in as %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "You are about to grant %1$s access to your %2$s account."
|
||||
"Installing …" : "Installing …"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
+14
-14
@@ -211,8 +211,6 @@
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} notification","{count} notifications"],
|
||||
"No" : "No",
|
||||
"Yes" : "Yes",
|
||||
"App password" : "App password",
|
||||
"Grant access" : "Grant access",
|
||||
"The remote URL must include the user." : "The remote URL must include the user.",
|
||||
"Invalid remote URL." : "Invalid remote URL.",
|
||||
"Failed to add the public link to your Nextcloud" : "Failed to add the public link to your Nextcloud",
|
||||
@@ -328,14 +326,6 @@
|
||||
"Back" : "Back",
|
||||
"Login form is disabled." : "Login form is disabled.",
|
||||
"The Nextcloud login form is disabled. Use another login option if available or contact your administration." : "The Nextcloud login form is disabled. Use another login option if available or contact your administration.",
|
||||
"Connect to your account" : "Connect to your account",
|
||||
"Security warning" : "Security warning",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator.",
|
||||
"Alternative log in using app password" : "Alternative log in using app password",
|
||||
"Account connected" : "Account connected",
|
||||
"Your client should now be connected!" : "Your client should now be connected!",
|
||||
"You can close this window." : "You can close this window.",
|
||||
"Account access" : "Account access",
|
||||
"More actions" : "More actions",
|
||||
"User menu" : "User menu",
|
||||
"Your guest name: {user}" : "Your guest name: {user}",
|
||||
@@ -353,6 +343,7 @@
|
||||
"For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}" : "For information how to properly configure your server, please {linkStart}see the documentation{linkEnd}",
|
||||
"Autoconfig file detected" : "Autoconfig file detected",
|
||||
"The setup form below is pre-filled with the values from the config file." : "The setup form below is pre-filled with the values from the config file.",
|
||||
"Security warning" : "Security warning",
|
||||
"Create administration account" : "Create administration account",
|
||||
"Administration account name" : "Administration account name",
|
||||
"Administration account password" : "Administration account password",
|
||||
@@ -458,6 +449,18 @@
|
||||
"Skip to navigation of app" : "Skip to navigation of app",
|
||||
"Go to %s" : "Go to %s",
|
||||
"Get your own free account" : "Get your own free account",
|
||||
"Connect to your account" : "Connect to your account",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Please log in before granting %1$s access to your %2$s account.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator.",
|
||||
"App password" : "App password",
|
||||
"Grant access" : "Grant access",
|
||||
"Alternative log in using app password" : "Alternative log in using app password",
|
||||
"Account access" : "Account access",
|
||||
"Currently logged in as %1$s (%2$s)." : "Currently logged in as %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "You are about to grant %1$s access to your %2$s account.",
|
||||
"Account connected" : "Account connected",
|
||||
"Your client should now be connected!" : "Your client should now be connected!",
|
||||
"You can close this window." : "You can close this window.",
|
||||
"Previous" : "Previous",
|
||||
"This share is password-protected" : "This share is password-protected",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "The password is wrong or expired. Please try again or request a new one.",
|
||||
@@ -542,9 +545,6 @@
|
||||
"Configure the database" : "Configure the database",
|
||||
"Only %s is available." : "Only %s is available.",
|
||||
"Database account" : "Database account",
|
||||
"Installing …" : "Installing …",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Please log in before granting %1$s access to your %2$s account.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Currently logged in as %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "You are about to grant %1$s access to your %2$s account."
|
||||
"Installing …" : "Installing …"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
+13
-13
@@ -84,8 +84,6 @@ OC.L10N.register(
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} sciigoj","{count} sciigoj"],
|
||||
"No" : "Ne",
|
||||
"Yes" : "Jes",
|
||||
"App password" : "Aplikaĵa pasvorto",
|
||||
"Grant access" : "Doni alirpermeson",
|
||||
"Failed to add the public link to your Nextcloud" : "Ne eblis aldoni la publikan ligilon al via Nextcloud",
|
||||
"Custom date range" : "Propra data periodo",
|
||||
"Pick start date" : "Elekti komencan daton",
|
||||
@@ -139,14 +137,8 @@ OC.L10N.register(
|
||||
"No results for {query}" : "Neniu rezulto pri {query}",
|
||||
"Forgot password?" : "Ĉu vi forgesis vian pasvorton?",
|
||||
"Back" : "Antaŭen",
|
||||
"Connect to your account" : "Konekti al via konto",
|
||||
"Security warning" : "Sekureca averto",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Se vi ne provas agordi novan aparaton aŭ apon, iu provas trompi vin por doni al ili aliron al viaj datumoj. En ĉi tiu kazo ne procedu kaj anstataŭe kontaktu vian sisteman administranton.",
|
||||
"Account connected" : "Konto konektita",
|
||||
"Your client should now be connected!" : "Via kliento estas konektita!",
|
||||
"You can close this window." : "Vi povas fermi tiun ĉi fenestron.",
|
||||
"Account access" : "Aliro al konto",
|
||||
"More actions" : "Pliaj agoj",
|
||||
"Security warning" : "Sekureca averto",
|
||||
"Storage & database" : "Konservejo kaj datumbazo",
|
||||
"Data folder" : "Datuma dosierujo",
|
||||
"Install and activate additional PHP modules to choose other database types." : "Instalu kaj aktivigu pliajn PHP-modulojn por elekti aliajn datumbazajn specojn..",
|
||||
@@ -236,6 +228,17 @@ OC.L10N.register(
|
||||
"Skip to navigation of app" : "Iru al la aplikaĵa navigado",
|
||||
"Go to %s" : "Iri al %s",
|
||||
"Get your own free account" : "Ekhavu vian propran senpagan konton",
|
||||
"Connect to your account" : "Konekti al via konto",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Bv. unue ensaluti por doni al %1$s aliron al via konto %2$s.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Se vi ne provas agordi novan aparaton aŭ apon, iu provas trompi vin por doni al ili aliron al viaj datumoj. En ĉi tiu kazo ne procedu kaj anstataŭe kontaktu vian sisteman administranton.",
|
||||
"App password" : "Aplikaĵa pasvorto",
|
||||
"Grant access" : "Doni alirpermeson",
|
||||
"Account access" : "Aliro al konto",
|
||||
"Currently logged in as %1$s (%2$s)." : "Aktuale salutinta kiel %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Vi tuj donos permeson al %1$s aliri al via konto %2$s.",
|
||||
"Account connected" : "Konto konektita",
|
||||
"Your client should now be connected!" : "Via kliento estas konektita!",
|
||||
"You can close this window." : "Vi povas fermi tiun ĉi fenestron.",
|
||||
"Previous" : "Antaŭa",
|
||||
"This share is password-protected" : "Tiu kunhavigo estas protektata per pasvorto",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "La pasvorto estas malĝusta aŭ eksvalidiĝis. Bonvolu provi denove aŭ peti novan.",
|
||||
@@ -311,9 +314,6 @@ OC.L10N.register(
|
||||
"Configure the database" : "Agordi la datumbazon",
|
||||
"Only %s is available." : "Nur %s disponeblas.",
|
||||
"Database account" : "Datumbaza konto",
|
||||
"Installing …" : "Instalante…",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Bv. unue ensaluti por doni al %1$s aliron al via konto %2$s.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Aktuale salutinta kiel %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Vi tuj donos permeson al %1$s aliri al via konto %2$s."
|
||||
"Installing …" : "Instalante…"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
+13
-13
@@ -82,8 +82,6 @@
|
||||
"_{count} notification_::_{count} notifications_" : ["{count} sciigoj","{count} sciigoj"],
|
||||
"No" : "Ne",
|
||||
"Yes" : "Jes",
|
||||
"App password" : "Aplikaĵa pasvorto",
|
||||
"Grant access" : "Doni alirpermeson",
|
||||
"Failed to add the public link to your Nextcloud" : "Ne eblis aldoni la publikan ligilon al via Nextcloud",
|
||||
"Custom date range" : "Propra data periodo",
|
||||
"Pick start date" : "Elekti komencan daton",
|
||||
@@ -137,14 +135,8 @@
|
||||
"No results for {query}" : "Neniu rezulto pri {query}",
|
||||
"Forgot password?" : "Ĉu vi forgesis vian pasvorton?",
|
||||
"Back" : "Antaŭen",
|
||||
"Connect to your account" : "Konekti al via konto",
|
||||
"Security warning" : "Sekureca averto",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Se vi ne provas agordi novan aparaton aŭ apon, iu provas trompi vin por doni al ili aliron al viaj datumoj. En ĉi tiu kazo ne procedu kaj anstataŭe kontaktu vian sisteman administranton.",
|
||||
"Account connected" : "Konto konektita",
|
||||
"Your client should now be connected!" : "Via kliento estas konektita!",
|
||||
"You can close this window." : "Vi povas fermi tiun ĉi fenestron.",
|
||||
"Account access" : "Aliro al konto",
|
||||
"More actions" : "Pliaj agoj",
|
||||
"Security warning" : "Sekureca averto",
|
||||
"Storage & database" : "Konservejo kaj datumbazo",
|
||||
"Data folder" : "Datuma dosierujo",
|
||||
"Install and activate additional PHP modules to choose other database types." : "Instalu kaj aktivigu pliajn PHP-modulojn por elekti aliajn datumbazajn specojn..",
|
||||
@@ -234,6 +226,17 @@
|
||||
"Skip to navigation of app" : "Iru al la aplikaĵa navigado",
|
||||
"Go to %s" : "Iri al %s",
|
||||
"Get your own free account" : "Ekhavu vian propran senpagan konton",
|
||||
"Connect to your account" : "Konekti al via konto",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Bv. unue ensaluti por doni al %1$s aliron al via konto %2$s.",
|
||||
"If you are not trying to set up a new device or app, someone is trying to trick you into granting them access to your data. In this case do not proceed and instead contact your system administrator." : "Se vi ne provas agordi novan aparaton aŭ apon, iu provas trompi vin por doni al ili aliron al viaj datumoj. En ĉi tiu kazo ne procedu kaj anstataŭe kontaktu vian sisteman administranton.",
|
||||
"App password" : "Aplikaĵa pasvorto",
|
||||
"Grant access" : "Doni alirpermeson",
|
||||
"Account access" : "Aliro al konto",
|
||||
"Currently logged in as %1$s (%2$s)." : "Aktuale salutinta kiel %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Vi tuj donos permeson al %1$s aliri al via konto %2$s.",
|
||||
"Account connected" : "Konto konektita",
|
||||
"Your client should now be connected!" : "Via kliento estas konektita!",
|
||||
"You can close this window." : "Vi povas fermi tiun ĉi fenestron.",
|
||||
"Previous" : "Antaŭa",
|
||||
"This share is password-protected" : "Tiu kunhavigo estas protektata per pasvorto",
|
||||
"The password is wrong or expired. Please try again or request a new one." : "La pasvorto estas malĝusta aŭ eksvalidiĝis. Bonvolu provi denove aŭ peti novan.",
|
||||
@@ -309,9 +312,6 @@
|
||||
"Configure the database" : "Agordi la datumbazon",
|
||||
"Only %s is available." : "Nur %s disponeblas.",
|
||||
"Database account" : "Datumbaza konto",
|
||||
"Installing …" : "Instalante…",
|
||||
"Please log in before granting %1$s access to your %2$s account." : "Bv. unue ensaluti por doni al %1$s aliron al via konto %2$s.",
|
||||
"Currently logged in as %1$s (%2$s)." : "Aktuale salutinta kiel %1$s (%2$s).",
|
||||
"You are about to grant %1$s access to your %2$s account." : "Vi tuj donos permeson al %1$s aliri al via konto %2$s."
|
||||
"Installing …" : "Instalante…"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user