diff options
427 files changed, 6729 insertions, 1765 deletions
diff --git a/.htaccess b/.htaccess index bd9f5af3f70..5b864643565 100644 --- a/.htaccess +++ b/.htaccess @@ -20,8 +20,8 @@ SetEnv modHeadersAvailable true </IfModule> - # Add cache control for CSS and JS files - <FilesMatch "\.(css|js)$"> + # Add cache control for static resources + <FilesMatch "\.(css|js|woff|svg|gif)$"> Header set Cache-Control "max-age=7200, public" </FilesMatch> </IfModule> diff --git a/.travis.yml b/.travis.yml index 15413d3413e..fbbff9fc16e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -30,7 +30,7 @@ install: script: - sh -c "if [ '$TC' = 'syntax' ]; then composer install && lib/composer/bin/parallel-lint --exclude lib/composer/jakub-onderka/ --exclude 3rdparty/symfony/polyfill-php70/Resources/stubs/ --exclude 3rdparty/patchwork/utf8/src/Patchwork/Utf8/Bootup/ --exclude 3rdparty/paragonie/random_compat/lib/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php .; fi" - - sh -c "if [ '$TC' = 'app:check-code' ]; then ./occ app:check-code admin_audit; ./occ app:check-code comments; ./occ app:check-code federation; fi" + - sh -c "if [ '$TC' = 'app:check-code' ]; then ./occ app:check-code admin_audit; ./occ app:check-code comments; ./occ app:check-code federation; ./occ app:check-code workflowengine; fi" - sh -c "if [ '$TEST_DAV' != '1' ]; then echo \"Not testing DAV\"; fi" - sh -c "if [ '$TEST_DAV' = '1' ]; then echo \"Testing DAV\"; fi" diff --git a/README.md b/README.md index 2f806695f08..40b18f88457 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ changed it substantially: More information how to contribute: https://nextcloud.com/contribute/ ## Nextcloud VM -If you're not familiar with Linux, or simply just want to get up and running on a pre-configured system in no time - we have developed a VM that you download. Just extract it and mount it in VMware or VirtualBox and your're all set. +If you're not familiar with Linux, or simply just want to get up and running on a pre-configured system in no time - we have developed a VM that you can download. Just extract it and mount it in VMware or VirtualBox and your're all set. Download the latest version of the [Nextcloud VM](https://github.com/nextcloud/vm/releases/) diff --git a/apps/admin_audit/appinfo/info.xml b/apps/admin_audit/appinfo/info.xml index d651fd037d3..0da8b115dc8 100644 --- a/apps/admin_audit/appinfo/info.xml +++ b/apps/admin_audit/appinfo/info.xml @@ -14,5 +14,4 @@ <types> <logging/> </types> - <default_enable/> </info> diff --git a/apps/comments/appinfo/info.xml b/apps/comments/appinfo/info.xml index 2bd28dd8954..39584694e23 100644 --- a/apps/comments/appinfo/info.xml +++ b/apps/comments/appinfo/info.xml @@ -6,7 +6,7 @@ <licence>AGPL</licence> <author>Arthur Schiwon, Vincent Petry</author> <default_enable/> - <version>1.0.0</version> + <version>1.1.0</version> <dependencies> <owncloud min-version="9.2" max-version="9.2" /> </dependencies> diff --git a/apps/comments/l10n/de.js b/apps/comments/l10n/de.js index 27d5154d150..34a839ab484 100644 --- a/apps/comments/l10n/de.js +++ b/apps/comments/l10n/de.js @@ -1,7 +1,7 @@ OC.L10N.register( "comments", { - "Type in a new comment..." : "Bitte gib einen neuen Kommentar ein...", + "Type in a new comment..." : "Neuen Kommentar eingeben...", "Delete comment" : "Kommentar löschen", "Post" : "Speichern", "Cancel" : "Abbrechen", diff --git a/apps/comments/l10n/de.json b/apps/comments/l10n/de.json index 36e557bcb6d..d9c5309196c 100644 --- a/apps/comments/l10n/de.json +++ b/apps/comments/l10n/de.json @@ -1,5 +1,5 @@ { "translations": { - "Type in a new comment..." : "Bitte gib einen neuen Kommentar ein...", + "Type in a new comment..." : "Neuen Kommentar eingeben...", "Delete comment" : "Kommentar löschen", "Post" : "Speichern", "Cancel" : "Abbrechen", diff --git a/apps/comments/l10n/de_DE.js b/apps/comments/l10n/de_DE.js index eae9e8afd9f..bbddac44a10 100644 --- a/apps/comments/l10n/de_DE.js +++ b/apps/comments/l10n/de_DE.js @@ -19,7 +19,7 @@ OC.L10N.register( "Comment" : "Kommentar", "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Kommentare</strong> für Dateien<em>(immer im Stream aufgelistet)</em>", "You commented" : "Sie haben kommentiert", - "%1$s commented" : "%1$s kommentiert", + "%1$s commented" : "%1$s kommentierte", "You commented on %2$s" : "Sie haben %2$s kommentiert", "%1$s commented on %2$s" : "%1$s kommentierte %2$s" }, diff --git a/apps/comments/l10n/de_DE.json b/apps/comments/l10n/de_DE.json index ab4231e4155..a8ff860a17f 100644 --- a/apps/comments/l10n/de_DE.json +++ b/apps/comments/l10n/de_DE.json @@ -17,7 +17,7 @@ "Comment" : "Kommentar", "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Kommentare</strong> für Dateien<em>(immer im Stream aufgelistet)</em>", "You commented" : "Sie haben kommentiert", - "%1$s commented" : "%1$s kommentiert", + "%1$s commented" : "%1$s kommentierte", "You commented on %2$s" : "Sie haben %2$s kommentiert", "%1$s commented on %2$s" : "%1$s kommentierte %2$s" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/comments/l10n/id.js b/apps/comments/l10n/id.js index cecae13fb6f..c8124c24c63 100644 --- a/apps/comments/l10n/id.js +++ b/apps/comments/l10n/id.js @@ -12,9 +12,15 @@ OC.L10N.register( "More comments..." : "Komentar lainya...", "Save" : "Simpan", "Allowed characters {count} of {max}" : "Karakter yang diizinkan {count} dari {max}", + "Error occurred while retrieving comment with id {id}" : "Terjadi kesalahan saat mendapatkan komentar dengan id {id}", + "Error occurred while updating comment with id {id}" : "Terjadi kesalahan saat memperbarui komentar dengan id {id}", + "Error occurred while posting comment" : "Terjadi kesalahan saat memosting komentar", "{count} unread comments" : "{count} komentar belum dibaca", "Comment" : "Komentar", + "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Komentar</strong> untuk berkas <em>(selalu dicantumkan dalam stream)</em>", + "You commented" : "Anda berkomentar", "%1$s commented" : "%1$s dikomentari", + "You commented on %2$s" : "Anda berkomentar di %2$s", "%1$s commented on %2$s" : "%1$s dikomentari pada %2$s" }, "nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/id.json b/apps/comments/l10n/id.json index 7836eeb40b5..94bad1d4027 100644 --- a/apps/comments/l10n/id.json +++ b/apps/comments/l10n/id.json @@ -10,9 +10,15 @@ "More comments..." : "Komentar lainya...", "Save" : "Simpan", "Allowed characters {count} of {max}" : "Karakter yang diizinkan {count} dari {max}", + "Error occurred while retrieving comment with id {id}" : "Terjadi kesalahan saat mendapatkan komentar dengan id {id}", + "Error occurred while updating comment with id {id}" : "Terjadi kesalahan saat memperbarui komentar dengan id {id}", + "Error occurred while posting comment" : "Terjadi kesalahan saat memosting komentar", "{count} unread comments" : "{count} komentar belum dibaca", "Comment" : "Komentar", + "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Komentar</strong> untuk berkas <em>(selalu dicantumkan dalam stream)</em>", + "You commented" : "Anda berkomentar", "%1$s commented" : "%1$s dikomentari", + "You commented on %2$s" : "Anda berkomentar di %2$s", "%1$s commented on %2$s" : "%1$s dikomentari pada %2$s" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/comments/l10n/is.js b/apps/comments/l10n/is.js index 6e1faa9b251..f32e49d37c5 100644 --- a/apps/comments/l10n/is.js +++ b/apps/comments/l10n/is.js @@ -12,8 +12,12 @@ OC.L10N.register( "More comments..." : "Fleiri athugasemdir...", "Save" : "Vista", "Allowed characters {count} of {max}" : "Leyfður stafafjöldi {count} af {max}", + "Error occurred while retrieving comment with id {id}" : "Villa kom upp við að reyna að ná í athugasemd með auðkenninu {id}", + "Error occurred while updating comment with id {id}" : "Villa kom upp við að reyna að uppfæra athugasemd með auðkenninu {id}", + "Error occurred while posting comment" : "Villa kom upp við að senda inn athugasemd", "{count} unread comments" : "{count} ólesnar athugasemdir", "Comment" : "Athugasemd", + "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Athugasemdir</strong> við skrár <em>(alltaf á lista í streymi)</em>", "You commented" : "Þú settir inn athugasemd", "%1$s commented" : "%1$s setti inn athugasemd", "You commented on %2$s" : "Þú settir inn athugasemd við %2$s", diff --git a/apps/comments/l10n/is.json b/apps/comments/l10n/is.json index e36776a32f1..c70a192f529 100644 --- a/apps/comments/l10n/is.json +++ b/apps/comments/l10n/is.json @@ -10,8 +10,12 @@ "More comments..." : "Fleiri athugasemdir...", "Save" : "Vista", "Allowed characters {count} of {max}" : "Leyfður stafafjöldi {count} af {max}", + "Error occurred while retrieving comment with id {id}" : "Villa kom upp við að reyna að ná í athugasemd með auðkenninu {id}", + "Error occurred while updating comment with id {id}" : "Villa kom upp við að reyna að uppfæra athugasemd með auðkenninu {id}", + "Error occurred while posting comment" : "Villa kom upp við að senda inn athugasemd", "{count} unread comments" : "{count} ólesnar athugasemdir", "Comment" : "Athugasemd", + "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Athugasemdir</strong> við skrár <em>(alltaf á lista í streymi)</em>", "You commented" : "Þú settir inn athugasemd", "%1$s commented" : "%1$s setti inn athugasemd", "You commented on %2$s" : "Þú settir inn athugasemd við %2$s", diff --git a/apps/comments/l10n/tr.js b/apps/comments/l10n/tr.js index 2204320b2a7..e23ecaee1e9 100644 --- a/apps/comments/l10n/tr.js +++ b/apps/comments/l10n/tr.js @@ -13,9 +13,11 @@ OC.L10N.register( "Save" : "Kaydet", "Allowed characters {count} of {max}" : "İzin verilen karakterler {count}/{max}", "Error occurred while retrieving comment with id {id}" : "{id} numaralı yorumu geri alırken bir hata oluştu", + "Error occurred while updating comment with id {id}" : "{id} numaralı yorum güncellenirken hata oluştu", "Error occurred while posting comment" : "Yorum yollanırken bir hata oluştu", "{count} unread comments" : "{count} okunmamış yorum", "Comment" : "Yorum", + "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "Dosyalar için <strong>Yorumlar</strong> <em>(her zaman akış olarak listelenir)</em>", "You commented" : "Yorum yaptınız", "%1$s commented" : "%1$s yorumlanmış", "You commented on %2$s" : "%2$s için yorum yaptınız", diff --git a/apps/comments/l10n/tr.json b/apps/comments/l10n/tr.json index c332868396a..be74c1bcac4 100644 --- a/apps/comments/l10n/tr.json +++ b/apps/comments/l10n/tr.json @@ -11,9 +11,11 @@ "Save" : "Kaydet", "Allowed characters {count} of {max}" : "İzin verilen karakterler {count}/{max}", "Error occurred while retrieving comment with id {id}" : "{id} numaralı yorumu geri alırken bir hata oluştu", + "Error occurred while updating comment with id {id}" : "{id} numaralı yorum güncellenirken hata oluştu", "Error occurred while posting comment" : "Yorum yollanırken bir hata oluştu", "{count} unread comments" : "{count} okunmamış yorum", "Comment" : "Yorum", + "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "Dosyalar için <strong>Yorumlar</strong> <em>(her zaman akış olarak listelenir)</em>", "You commented" : "Yorum yaptınız", "%1$s commented" : "%1$s yorumlanmış", "You commented on %2$s" : "%2$s için yorum yaptınız", diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml index 805027c516b..19b65d84327 100644 --- a/apps/dav/appinfo/info.xml +++ b/apps/dav/appinfo/info.xml @@ -5,7 +5,7 @@ <description>WebDAV endpoint</description> <licence>AGPL</licence> <author>owncloud.org</author> - <version>1.0.0</version> + <version>1.1.0</version> <default_enable/> <types> <filesystem/> @@ -22,10 +22,10 @@ </background-jobs> <repair-steps> <post-migration> - <job>OCA\DAV\Migration\Classification</job> + <step>OCA\DAV\Migration\Classification</step> </post-migration> <live-migration> - <job>OCA\DAV\Migration\GenerateBirthdays</job> + <step>OCA\DAV\Migration\GenerateBirthdays</step> </live-migration> </repair-steps> </info> diff --git a/apps/encryption/l10n/cs_CZ.js b/apps/encryption/l10n/cs_CZ.js index c792d621b9b..4d73777d6da 100644 --- a/apps/encryption/l10n/cs_CZ.js +++ b/apps/encryption/l10n/cs_CZ.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Současné přihlašovací heslo nebylo zadáno správně, zkuste to prosím znovu.", "Private key password successfully updated." : "Heslo soukromého klíče úspěšně aktualizováno.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Musíte přenést své šifrovací klíče ze staré verze šifrování (ownCloud <= 8.0) na novou. Spusťte příkaz 'occ encryption:migrate' nebo kontaktujte svého administrátora.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chybný soukromý klíč pro šifrovací aplikaci. Aktualizujte prosím heslo svého soukromého klíče ve vašem osobním nastavení, abyste znovu získali přístup k vašim zašifrovaným souborům.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikace pro šifrování je zapnuta, ale vaše klíče nejsou inicializované. Prosím odhlaste se a znovu přihlaste", - "Encryption App is enabled and ready" : "Aplikace šifrování je již povolena", "Bad Signature" : "Špatný podpis", "Missing Signature" : "Chybějící podpis", "one-time password for server-side-encryption" : "jednorázové heslo pro šifrování na straně serveru", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "Nové heslo záchranného klíče", "Repeat new recovery key password" : "Zopakujte nové heslo záchranného klíče", "Change Password" : "Změnit heslo", - "basic encryption module" : "základní šifrovací modul", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikace pro šifrování je zapnuta, ale vaše klíče nejsou inicializované. Prosím odhlaste se a znovu přihlaste", "Your private key password no longer matches your log-in password." : "Heslo vašeho soukromého klíče se již neshoduje s vaším přihlašovacím heslem.", "Set your old private key password to your current log-in password:" : "Změňte své staré heslo soukromého klíče na stejné, jako je vaše současné přihlašovací heslo:", " If you don't remember your old password you can ask your administrator to recover your files." : "Pokud si nepamatujete své původní heslo, můžete požádat správce o obnovu vašich souborů.", diff --git a/apps/encryption/l10n/cs_CZ.json b/apps/encryption/l10n/cs_CZ.json index 8399fd0f379..f911f993af5 100644 --- a/apps/encryption/l10n/cs_CZ.json +++ b/apps/encryption/l10n/cs_CZ.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Současné přihlašovací heslo nebylo zadáno správně, zkuste to prosím znovu.", "Private key password successfully updated." : "Heslo soukromého klíče úspěšně aktualizováno.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Musíte přenést své šifrovací klíče ze staré verze šifrování (ownCloud <= 8.0) na novou. Spusťte příkaz 'occ encryption:migrate' nebo kontaktujte svého administrátora.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chybný soukromý klíč pro šifrovací aplikaci. Aktualizujte prosím heslo svého soukromého klíče ve vašem osobním nastavení, abyste znovu získali přístup k vašim zašifrovaným souborům.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikace pro šifrování je zapnuta, ale vaše klíče nejsou inicializované. Prosím odhlaste se a znovu přihlaste", - "Encryption App is enabled and ready" : "Aplikace šifrování je již povolena", "Bad Signature" : "Špatný podpis", "Missing Signature" : "Chybějící podpis", "one-time password for server-side-encryption" : "jednorázové heslo pro šifrování na straně serveru", @@ -44,7 +41,7 @@ "New recovery key password" : "Nové heslo záchranného klíče", "Repeat new recovery key password" : "Zopakujte nové heslo záchranného klíče", "Change Password" : "Změnit heslo", - "basic encryption module" : "základní šifrovací modul", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikace pro šifrování je zapnuta, ale vaše klíče nejsou inicializované. Prosím odhlaste se a znovu přihlaste", "Your private key password no longer matches your log-in password." : "Heslo vašeho soukromého klíče se již neshoduje s vaším přihlašovacím heslem.", "Set your old private key password to your current log-in password:" : "Změňte své staré heslo soukromého klíče na stejné, jako je vaše současné přihlašovací heslo:", " If you don't remember your old password you can ask your administrator to recover your files." : "Pokud si nepamatujete své původní heslo, můžete požádat správce o obnovu vašich souborů.", diff --git a/apps/encryption/l10n/da.js b/apps/encryption/l10n/da.js index d7169f0572e..c3c846409ee 100644 --- a/apps/encryption/l10n/da.js +++ b/apps/encryption/l10n/da.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Det nuværende kodeord til log-in var ikke korrekt, prøv venligst igen.", "Private key password successfully updated." : "Privat nøgle kodeord succesfuldt opdateret.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Du skal overflytte dine krypteringsnøgler fra den gamle kryptering (ownCloud <= 8.0) til den nye af slagsen. Kør venligst \"occ encryption:migrate\" eller kontakt din administrator.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ugyldig privat nøgle for krypteringsprogrammet. Opdater venligst dit kodeord for den private nøgle i dine personlige indstillinger. Det kræves for at få adgang til dine krypterede filer.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet er aktiveret, men din nøgler er ikke igangsat. Log venligst ud og ind igen.", - "Encryption App is enabled and ready" : "App til kryptering er slået til og er klar", "Bad Signature" : "Ugyldig signatur", "Missing Signature" : "Signatur mangler", "one-time password for server-side-encryption" : "Engangs password for kryptering på serverdelen", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "Ny adgangskode for gendannelsesnøgle", "Repeat new recovery key password" : "Gentag ny adgangskode for gendannelsesnøgle", "Change Password" : "Skift Kodeord", - "basic encryption module" : "basis krypteringsmodul", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet er aktiveret, men din nøgler er ikke igangsat. Log venligst ud og ind igen.", "Your private key password no longer matches your log-in password." : "Dit private nøglekodeord stemmer ikke længere overens med dit login-kodeord.", "Set your old private key password to your current log-in password:" : "Sæt dit gamle, private nøglekodeord til at være dit nuværende login-kodeord. ", " If you don't remember your old password you can ask your administrator to recover your files." : "Hvis du ikke kan huske dit gamle kodeord kan du bede din administrator om at gendanne dine filer.", diff --git a/apps/encryption/l10n/da.json b/apps/encryption/l10n/da.json index 7ae948a611f..9d20bb8e80a 100644 --- a/apps/encryption/l10n/da.json +++ b/apps/encryption/l10n/da.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Det nuværende kodeord til log-in var ikke korrekt, prøv venligst igen.", "Private key password successfully updated." : "Privat nøgle kodeord succesfuldt opdateret.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Du skal overflytte dine krypteringsnøgler fra den gamle kryptering (ownCloud <= 8.0) til den nye af slagsen. Kør venligst \"occ encryption:migrate\" eller kontakt din administrator.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ugyldig privat nøgle for krypteringsprogrammet. Opdater venligst dit kodeord for den private nøgle i dine personlige indstillinger. Det kræves for at få adgang til dine krypterede filer.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet er aktiveret, men din nøgler er ikke igangsat. Log venligst ud og ind igen.", - "Encryption App is enabled and ready" : "App til kryptering er slået til og er klar", "Bad Signature" : "Ugyldig signatur", "Missing Signature" : "Signatur mangler", "one-time password for server-side-encryption" : "Engangs password for kryptering på serverdelen", @@ -44,7 +41,7 @@ "New recovery key password" : "Ny adgangskode for gendannelsesnøgle", "Repeat new recovery key password" : "Gentag ny adgangskode for gendannelsesnøgle", "Change Password" : "Skift Kodeord", - "basic encryption module" : "basis krypteringsmodul", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet er aktiveret, men din nøgler er ikke igangsat. Log venligst ud og ind igen.", "Your private key password no longer matches your log-in password." : "Dit private nøglekodeord stemmer ikke længere overens med dit login-kodeord.", "Set your old private key password to your current log-in password:" : "Sæt dit gamle, private nøglekodeord til at være dit nuværende login-kodeord. ", " If you don't remember your old password you can ask your administrator to recover your files." : "Hvis du ikke kan huske dit gamle kodeord kan du bede din administrator om at gendanne dine filer.", diff --git a/apps/encryption/l10n/de.js b/apps/encryption/l10n/de.js index b90c3d7e2a9..eef2d32be1d 100644 --- a/apps/encryption/l10n/de.js +++ b/apps/encryption/l10n/de.js @@ -10,7 +10,7 @@ OC.L10N.register( "Could not disable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Überprüfe Dein Wiederherstellungspasswort!", "Missing parameters" : "Fehlende Parameter", "Please provide the old recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben", - "Please provide a new recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben", + "Please provide a new recovery password" : "Bitte ein neues Wiederherstellungspasswort eingeben", "Please repeat the new recovery password" : "Bitte das neue Passwort zur Wiederherstellung wiederholen", "Password successfully changed." : "Dein Passwort wurde geändert.", "Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort falsch.", @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Das aktuelle Anmeldepasswort war nicht korrekt, bitte versuche es noch einmal.", "Private key password successfully updated." : "Passwort des privaten Schlüssels erfolgreich aktualisiert", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Verschlüsselungsschlüssel müssen von der alten Verschlüsselung (ownCloud <= 8.0) zur neuen migriert werden. Bitte 'occ encryption:migrate' ausführen oder Ihren Administrator kontaktieren.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ungültiger privater Schlüssel für die Verschlüsselung-App. Bitte Ihr privates Schlüssel-Passwort aktualisieren, um den Zugriff auf Ihre verschlüsselten Dateien wiederherzustellen.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Die Verschlüsselung-App ist aktiviert, aber deine Schlüssel sind nicht initialisiert. Bitte erneut ab- und wieder anmelden.", - "Encryption App is enabled and ready" : "Verschlüsselungs-App ist aktiviert und bereit", "Bad Signature" : "Ungültige Signatur", "Missing Signature" : "Fehlende Signatur", "one-time password for server-side-encryption" : "Einmal-Passwort für serverseitige Verschlüsselung", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel", "Repeat new recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel wiederholen", "Change Password" : "Passwort ändern", - "basic encryption module" : "Basisverschlüsselungsmodul", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Die Verschlüsselung-App ist aktiviert, aber deine Schlüssel sind nicht initialisiert. Bitte erneut ab- und wieder anmelden.", "Your private key password no longer matches your log-in password." : "Dein Passwort für Deinen privaten Schlüssel stimmt nicht mehr mit Deinem Loginpasswort überein.", "Set your old private key password to your current log-in password:" : "Dein altes Passwort für Deinen privaten Schlüssel auf Dein aktuelles Anmeldepasswort einstellen:", " If you don't remember your old password you can ask your administrator to recover your files." : "Wenn Du Dein altes Passwort vergessen hast, könntest Du Deinen Administrator bitten, Deine Daten wiederherzustellen.", diff --git a/apps/encryption/l10n/de.json b/apps/encryption/l10n/de.json index face6ca6a30..278e899aa5e 100644 --- a/apps/encryption/l10n/de.json +++ b/apps/encryption/l10n/de.json @@ -8,7 +8,7 @@ "Could not disable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Überprüfe Dein Wiederherstellungspasswort!", "Missing parameters" : "Fehlende Parameter", "Please provide the old recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben", - "Please provide a new recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben", + "Please provide a new recovery password" : "Bitte ein neues Wiederherstellungspasswort eingeben", "Please repeat the new recovery password" : "Bitte das neue Passwort zur Wiederherstellung wiederholen", "Password successfully changed." : "Dein Passwort wurde geändert.", "Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort falsch.", @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Das aktuelle Anmeldepasswort war nicht korrekt, bitte versuche es noch einmal.", "Private key password successfully updated." : "Passwort des privaten Schlüssels erfolgreich aktualisiert", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Verschlüsselungsschlüssel müssen von der alten Verschlüsselung (ownCloud <= 8.0) zur neuen migriert werden. Bitte 'occ encryption:migrate' ausführen oder Ihren Administrator kontaktieren.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ungültiger privater Schlüssel für die Verschlüsselung-App. Bitte Ihr privates Schlüssel-Passwort aktualisieren, um den Zugriff auf Ihre verschlüsselten Dateien wiederherzustellen.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Die Verschlüsselung-App ist aktiviert, aber deine Schlüssel sind nicht initialisiert. Bitte erneut ab- und wieder anmelden.", - "Encryption App is enabled and ready" : "Verschlüsselungs-App ist aktiviert und bereit", "Bad Signature" : "Ungültige Signatur", "Missing Signature" : "Fehlende Signatur", "one-time password for server-side-encryption" : "Einmal-Passwort für serverseitige Verschlüsselung", @@ -44,7 +41,7 @@ "New recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel", "Repeat new recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel wiederholen", "Change Password" : "Passwort ändern", - "basic encryption module" : "Basisverschlüsselungsmodul", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Die Verschlüsselung-App ist aktiviert, aber deine Schlüssel sind nicht initialisiert. Bitte erneut ab- und wieder anmelden.", "Your private key password no longer matches your log-in password." : "Dein Passwort für Deinen privaten Schlüssel stimmt nicht mehr mit Deinem Loginpasswort überein.", "Set your old private key password to your current log-in password:" : "Dein altes Passwort für Deinen privaten Schlüssel auf Dein aktuelles Anmeldepasswort einstellen:", " If you don't remember your old password you can ask your administrator to recover your files." : "Wenn Du Dein altes Passwort vergessen hast, könntest Du Deinen Administrator bitten, Deine Daten wiederherzustellen.", diff --git a/apps/encryption/l10n/de_DE.js b/apps/encryption/l10n/de_DE.js index e56cccf24fa..e2f71ae861d 100644 --- a/apps/encryption/l10n/de_DE.js +++ b/apps/encryption/l10n/de_DE.js @@ -9,8 +9,8 @@ OC.L10N.register( "Recovery key successfully disabled" : "Der Wiederherstellungsschlüssel wurde erfolgreich deaktiviert.", "Could not disable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Bitte überprüfen Sie das Passwort für den Wiederherstellungsschlüssel!", "Missing parameters" : "Fehlende Parameter", - "Please provide the old recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben", - "Please provide a new recovery password" : "Bitte das neue Passwort zur Wiederherstellung eingeben", + "Please provide the old recovery password" : "Bitte das alte Wiederherstellungspasswort eingeben", + "Please provide a new recovery password" : "Bitte ein neues Wiederherstellungspasswort eingeben", "Please repeat the new recovery password" : "Bitte das neue Passwort zur Wiederherstellung wiederholen", "Password successfully changed." : "Das Passwort wurde erfolgreich geändert.", "Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort nicht richtig.", @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Das aktuelle Anmeldepasswort war nicht korrekt, bitte versuchen Sie es noch einmal.", "Private key password successfully updated." : "Das Passwort des privaten Schlüssels wurde erfolgreich aktualisiert.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Sie müssen Ihre Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur neuen migrieren. Bitte führen Sie 'occ encryption:migrate' aus oder kontaktieren Sie Ihren Administrator.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ungültiger privater Schlüssel für die Verschlüsselungs-App. Bitte aktualisieren Sie Ihr privates Schlüsselpasswort, um den Zugriff auf Ihre verschlüsselten Dateien wiederherzustellen.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselung-App ist aktiviert, aber Ihre Schlüssel sind nicht initialisiert. Bitte nochmals ab- und wieder anmelden.", - "Encryption App is enabled and ready" : "Verschlüsselungs-App ist aktiviert und bereit", "Bad Signature" : "Falsche Signatur", "Missing Signature" : "Fehlende Signatur", "one-time password for server-side-encryption" : "Einmalpasswort für Serverseitige Verschlüsselung", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel", "Repeat new recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel wiederholen", "Change Password" : "Passwort ändern", - "basic encryption module" : "Basisverschlüsselungsmodul", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselung-App ist aktiviert, aber Ihre Schlüssel sind nicht initialisiert. Bitte nochmals ab- und wieder anmelden.", "Your private key password no longer matches your log-in password." : "Das Privatschlüsselpasswort stimmt nicht länger mit dem Anmeldepasswort überein.", "Set your old private key password to your current log-in password:" : "Ihr altes Privatschlüsselpasswort auf Ihr aktuelles Anmeldepasswort stellen:", " If you don't remember your old password you can ask your administrator to recover your files." : "Falls Sie sich nicht an Ihr altes Passwort erinnern können, fragen Sie bitte Ihren Administrator, um Ihre Dateien wiederherzustellen.", diff --git a/apps/encryption/l10n/de_DE.json b/apps/encryption/l10n/de_DE.json index 350ad2e702b..3c5a50dfadb 100644 --- a/apps/encryption/l10n/de_DE.json +++ b/apps/encryption/l10n/de_DE.json @@ -7,8 +7,8 @@ "Recovery key successfully disabled" : "Der Wiederherstellungsschlüssel wurde erfolgreich deaktiviert.", "Could not disable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Bitte überprüfen Sie das Passwort für den Wiederherstellungsschlüssel!", "Missing parameters" : "Fehlende Parameter", - "Please provide the old recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben", - "Please provide a new recovery password" : "Bitte das neue Passwort zur Wiederherstellung eingeben", + "Please provide the old recovery password" : "Bitte das alte Wiederherstellungspasswort eingeben", + "Please provide a new recovery password" : "Bitte ein neues Wiederherstellungspasswort eingeben", "Please repeat the new recovery password" : "Bitte das neue Passwort zur Wiederherstellung wiederholen", "Password successfully changed." : "Das Passwort wurde erfolgreich geändert.", "Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort nicht richtig.", @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Das aktuelle Anmeldepasswort war nicht korrekt, bitte versuchen Sie es noch einmal.", "Private key password successfully updated." : "Das Passwort des privaten Schlüssels wurde erfolgreich aktualisiert.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Sie müssen Ihre Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur neuen migrieren. Bitte führen Sie 'occ encryption:migrate' aus oder kontaktieren Sie Ihren Administrator.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ungültiger privater Schlüssel für die Verschlüsselungs-App. Bitte aktualisieren Sie Ihr privates Schlüsselpasswort, um den Zugriff auf Ihre verschlüsselten Dateien wiederherzustellen.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselung-App ist aktiviert, aber Ihre Schlüssel sind nicht initialisiert. Bitte nochmals ab- und wieder anmelden.", - "Encryption App is enabled and ready" : "Verschlüsselungs-App ist aktiviert und bereit", "Bad Signature" : "Falsche Signatur", "Missing Signature" : "Fehlende Signatur", "one-time password for server-side-encryption" : "Einmalpasswort für Serverseitige Verschlüsselung", @@ -44,7 +41,7 @@ "New recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel", "Repeat new recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel wiederholen", "Change Password" : "Passwort ändern", - "basic encryption module" : "Basisverschlüsselungsmodul", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselung-App ist aktiviert, aber Ihre Schlüssel sind nicht initialisiert. Bitte nochmals ab- und wieder anmelden.", "Your private key password no longer matches your log-in password." : "Das Privatschlüsselpasswort stimmt nicht länger mit dem Anmeldepasswort überein.", "Set your old private key password to your current log-in password:" : "Ihr altes Privatschlüsselpasswort auf Ihr aktuelles Anmeldepasswort stellen:", " If you don't remember your old password you can ask your administrator to recover your files." : "Falls Sie sich nicht an Ihr altes Passwort erinnern können, fragen Sie bitte Ihren Administrator, um Ihre Dateien wiederherzustellen.", diff --git a/apps/encryption/l10n/el.js b/apps/encryption/l10n/el.js index 6ad03dcef7c..bc34e1a8653 100644 --- a/apps/encryption/l10n/el.js +++ b/apps/encryption/l10n/el.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Το τρέχον συνθηματικό δεν είναι σωστό, παρακαλώ δοκιμάστε ξανά.", "Private key password successfully updated." : "Το Προσωπικό κλειδί πρόσβασης ενημερώθηκε επιτυχώς", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Πρέπει να μεταφέρετε τα κλειδιά κρυπτογράφησής σας από την παλιά κρυπτογράφηση (ownCloud <= 8.0) στην καινούρια. Παρακαλούμε εκτελέστε την εντολή 'occ encryption:migrate' ή επικοινωνήστε με το διαχειριστή σας.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Άκυρο προσωπικό κλειδί για την εφαρμογή κρυπτογράφησης. Παρακαλώ ενημερώστε τον κωδικό του προσωπικού κλειδίου σας στις προσωπικές ρυθμίσεις για να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν καταγραφεί, παρακαλώ αποσυνδεθείτε και επανασυνδεθείτε.", - "Encryption App is enabled and ready" : "Η Εφαρμογή Κρυπτογράφησης είναι ενεργοποιημένη και έτοιμη.", "one-time password for server-side-encryption" : "κωδικός μιας χρήσης για κρυπτογράφηση στο διακομιστή", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Δεν ήταν δυνατό να αποκρυπτογραφηθεί αυτό το αρχείο, πιθανόν πρόκειται για κοινόχρηστο αρχείο. Παρακαλώ ζητήστε από τον ιδιοκτήτη του αρχείου να το ξαναμοιραστεί μαζί σας.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Αδυναμία ανάγνωσης αυτού του αρχείου, πιθανό να είναι διαμοιραζόμενο αρχείο. Παρακαλώ ρωτήστε τον κάτοχο του αρχείου να το διαμοιράσει ξανά μαζί σας.", @@ -44,6 +41,7 @@ OC.L10N.register( "New recovery key password" : "Νέος κωδικός κλειδιού ανάκτησης", "Repeat new recovery key password" : "Επαναλάβετε το νέο κωδικό κλειδιού ανάκτησης", "Change Password" : "Αλλαγή Κωδικού Πρόσβασης", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν καταγραφεί, παρακαλώ αποσυνδεθείτε και επανασυνδεθείτε.", "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 don't remember your old password you can ask your administrator to recover your files." : "Εάν δεν θυμάστε τον παλιό σας κωδικό μπορείτε να ζητήσετε από τον διαχειριστή σας να επανακτήσει τα αρχεία σας.", diff --git a/apps/encryption/l10n/el.json b/apps/encryption/l10n/el.json index 58749b1fa16..91c496356ae 100644 --- a/apps/encryption/l10n/el.json +++ b/apps/encryption/l10n/el.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Το τρέχον συνθηματικό δεν είναι σωστό, παρακαλώ δοκιμάστε ξανά.", "Private key password successfully updated." : "Το Προσωπικό κλειδί πρόσβασης ενημερώθηκε επιτυχώς", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Πρέπει να μεταφέρετε τα κλειδιά κρυπτογράφησής σας από την παλιά κρυπτογράφηση (ownCloud <= 8.0) στην καινούρια. Παρακαλούμε εκτελέστε την εντολή 'occ encryption:migrate' ή επικοινωνήστε με το διαχειριστή σας.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Άκυρο προσωπικό κλειδί για την εφαρμογή κρυπτογράφησης. Παρακαλώ ενημερώστε τον κωδικό του προσωπικού κλειδίου σας στις προσωπικές ρυθμίσεις για να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν καταγραφεί, παρακαλώ αποσυνδεθείτε και επανασυνδεθείτε.", - "Encryption App is enabled and ready" : "Η Εφαρμογή Κρυπτογράφησης είναι ενεργοποιημένη και έτοιμη.", "one-time password for server-side-encryption" : "κωδικός μιας χρήσης για κρυπτογράφηση στο διακομιστή", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Δεν ήταν δυνατό να αποκρυπτογραφηθεί αυτό το αρχείο, πιθανόν πρόκειται για κοινόχρηστο αρχείο. Παρακαλώ ζητήστε από τον ιδιοκτήτη του αρχείου να το ξαναμοιραστεί μαζί σας.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Αδυναμία ανάγνωσης αυτού του αρχείου, πιθανό να είναι διαμοιραζόμενο αρχείο. Παρακαλώ ρωτήστε τον κάτοχο του αρχείου να το διαμοιράσει ξανά μαζί σας.", @@ -42,6 +39,7 @@ "New recovery key password" : "Νέος κωδικός κλειδιού ανάκτησης", "Repeat new recovery key password" : "Επαναλάβετε το νέο κωδικό κλειδιού ανάκτησης", "Change Password" : "Αλλαγή Κωδικού Πρόσβασης", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν καταγραφεί, παρακαλώ αποσυνδεθείτε και επανασυνδεθείτε.", "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 don't remember your old password you can ask your administrator to recover your files." : "Εάν δεν θυμάστε τον παλιό σας κωδικό μπορείτε να ζητήσετε από τον διαχειριστή σας να επανακτήσει τα αρχεία σας.", diff --git a/apps/encryption/l10n/en_GB.js b/apps/encryption/l10n/en_GB.js index 35cccc171c1..e864cd2ded2 100644 --- a/apps/encryption/l10n/en_GB.js +++ b/apps/encryption/l10n/en_GB.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "The current log-in password was not correct, please try again.", "Private key password successfully updated." : "Private key password updated successfully.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Encryption App is enabled but your keys are not initialised, please log-out and log-in again", - "Encryption App is enabled and ready" : "Encryption App is enabled and ready", "Bad Signature" : "Bad Signature", "Missing Signature" : "Missing Signature", "one-time password for server-side-encryption" : "one-time password for server-side-encryption", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "New recovery key password", "Repeat new recovery key password" : "Repeat new recovery key password", "Change Password" : "Change Password", - "basic encryption module" : "basic encryption module", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Encryption App is enabled but your keys are not initialised, please log-out and log-in again", "Your private key password no longer matches your log-in password." : "Your private key password no longer matches your log-in password.", "Set your old private key password to your current log-in password:" : "Set your old private key password to your current log-in password:", " If you don't remember your old password you can ask your administrator to recover your files." : " If you don't remember your old password you can ask your administrator to recover your files.", diff --git a/apps/encryption/l10n/en_GB.json b/apps/encryption/l10n/en_GB.json index e4f2d2dd5bb..21ad8b2831f 100644 --- a/apps/encryption/l10n/en_GB.json +++ b/apps/encryption/l10n/en_GB.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "The current log-in password was not correct, please try again.", "Private key password successfully updated." : "Private key password updated successfully.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Encryption App is enabled but your keys are not initialised, please log-out and log-in again", - "Encryption App is enabled and ready" : "Encryption App is enabled and ready", "Bad Signature" : "Bad Signature", "Missing Signature" : "Missing Signature", "one-time password for server-side-encryption" : "one-time password for server-side-encryption", @@ -44,7 +41,7 @@ "New recovery key password" : "New recovery key password", "Repeat new recovery key password" : "Repeat new recovery key password", "Change Password" : "Change Password", - "basic encryption module" : "basic encryption module", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Encryption App is enabled but your keys are not initialised, please log-out and log-in again", "Your private key password no longer matches your log-in password." : "Your private key password no longer matches your log-in password.", "Set your old private key password to your current log-in password:" : "Set your old private key password to your current log-in password:", " If you don't remember your old password you can ask your administrator to recover your files." : " If you don't remember your old password you can ask your administrator to recover your files.", diff --git a/apps/encryption/l10n/es.js b/apps/encryption/l10n/es.js index 43ee920ee08..ec62739d193 100644 --- a/apps/encryption/l10n/es.js +++ b/apps/encryption/l10n/es.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "La contraseña de inicio de sesión actual no es correcta, por favor inténtelo de nuevo.", "Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Necesita migrar sus claves de cifrado desde el antiguo modelo de cifrado (ownCloud <= 8.0) al nuevo. Por favor ejecute 'occ encryption:migrate' o contáctese con su administrador.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "La clave privada no es válida para la app de cifrado. Por favor, actualiza la contraseña de tu clave privada en tus ajustes personales para recuperar el acceso a tus archivos cifrados.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La app de cifrado está habilitada pero sus claves no se han inicializado, por favor, cierre la sesión y vuelva a iniciarla de nuevo.", - "Encryption App is enabled and ready" : "Cifrado App está habilitada y lista", "Bad Signature" : "Firma errónea", "Missing Signature" : "No se encuentra la firma", "one-time password for server-side-encryption" : "Contraseña de un solo uso para el cifrado en el lado servidor", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "Nueva contraseña de recuperación", "Repeat new recovery key password" : "Repita la nueva contraseña de recuperación", "Change Password" : "Cambiar contraseña", - "basic encryption module" : "Módulo básico de cifrado", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La app de cifrado está habilitada pero sus claves no se han inicializado, por favor, cierre la sesión y vuelva a iniciarla de nuevo.", "Your private key password no longer matches your log-in password." : "Su contraseña de clave privada ya no coincide con su contraseña de acceso.", "Set your old private key password to your current log-in password:" : "Establezca la contraseña de clave privada antigua para su contraseña de inicio de sesión actual:", " If you don't remember your old password you can ask your administrator to recover your files." : "Si no recuerda su antigua contraseña puede pedir a su administrador que le recupere sus ficheros.", diff --git a/apps/encryption/l10n/es.json b/apps/encryption/l10n/es.json index b5367d89675..23fd0149c37 100644 --- a/apps/encryption/l10n/es.json +++ b/apps/encryption/l10n/es.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "La contraseña de inicio de sesión actual no es correcta, por favor inténtelo de nuevo.", "Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Necesita migrar sus claves de cifrado desde el antiguo modelo de cifrado (ownCloud <= 8.0) al nuevo. Por favor ejecute 'occ encryption:migrate' o contáctese con su administrador.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "La clave privada no es válida para la app de cifrado. Por favor, actualiza la contraseña de tu clave privada en tus ajustes personales para recuperar el acceso a tus archivos cifrados.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La app de cifrado está habilitada pero sus claves no se han inicializado, por favor, cierre la sesión y vuelva a iniciarla de nuevo.", - "Encryption App is enabled and ready" : "Cifrado App está habilitada y lista", "Bad Signature" : "Firma errónea", "Missing Signature" : "No se encuentra la firma", "one-time password for server-side-encryption" : "Contraseña de un solo uso para el cifrado en el lado servidor", @@ -44,7 +41,7 @@ "New recovery key password" : "Nueva contraseña de recuperación", "Repeat new recovery key password" : "Repita la nueva contraseña de recuperación", "Change Password" : "Cambiar contraseña", - "basic encryption module" : "Módulo básico de cifrado", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La app de cifrado está habilitada pero sus claves no se han inicializado, por favor, cierre la sesión y vuelva a iniciarla de nuevo.", "Your private key password no longer matches your log-in password." : "Su contraseña de clave privada ya no coincide con su contraseña de acceso.", "Set your old private key password to your current log-in password:" : "Establezca la contraseña de clave privada antigua para su contraseña de inicio de sesión actual:", " If you don't remember your old password you can ask your administrator to recover your files." : "Si no recuerda su antigua contraseña puede pedir a su administrador que le recupere sus ficheros.", diff --git a/apps/encryption/l10n/et_EE.js b/apps/encryption/l10n/et_EE.js index e3993fe0fff..f06eb5bf29c 100644 --- a/apps/encryption/l10n/et_EE.js +++ b/apps/encryption/l10n/et_EE.js @@ -20,8 +20,6 @@ OC.L10N.register( "The old password was not correct, please try again." : "Vana parool polnud õige, palun proovi uuesti.", "The current log-in password was not correct, please try again." : "Praeguse sisselogimise parool polnud õige, palun proovi uuesti.", "Private key password successfully updated." : "Privaatse võtme parool edukalt uuendatud.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Vigane Krüpteerimisrakendi privaatvõti . Palun uuenda oma privaatse võtme parool oma personaasete seadete all taastamaks ligipääsu oma krüpteeritud failidele.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krüpteerimisrakend on lubatud, kuid võtmeid pole lähtestatud. Palun logi välja ning uuesti sisse.", "Bad Signature" : "Vigane allkiri", "Missing Signature" : "Allkiri puudub", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Sa ei saa seda faili dekrüpteerida, see on tõenäoliselt jagatud fail. Palun lase omanikul seda faili sinuga uuesti jagada.", @@ -36,7 +34,7 @@ OC.L10N.register( "New recovery key password" : "Uus taastevõtme parool", "Repeat new recovery key password" : "Korda uut taastevõtme parooli", "Change Password" : "Muuda parooli", - "basic encryption module" : "peamine küpteerimismoodul", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krüpteerimisrakend on lubatud, kuid võtmeid pole lähtestatud. Palun logi välja ning uuesti sisse.", "Your private key password no longer matches your log-in password." : "Sinu provaatvõtme parool ei kattu enam sinu sisselogimise parooliga.", "Set your old private key password to your current log-in password:" : "Pane oma vana privaatvõtme parooliks oma praegune sisselogimise parool.", " If you don't remember your old password you can ask your administrator to recover your files." : "Kui sa ei mäleta oma vana parooli, siis palu oma süsteemihalduril taastada ligipääs failidele.", diff --git a/apps/encryption/l10n/et_EE.json b/apps/encryption/l10n/et_EE.json index 5b2cb8e6cd0..6e642b8d359 100644 --- a/apps/encryption/l10n/et_EE.json +++ b/apps/encryption/l10n/et_EE.json @@ -18,8 +18,6 @@ "The old password was not correct, please try again." : "Vana parool polnud õige, palun proovi uuesti.", "The current log-in password was not correct, please try again." : "Praeguse sisselogimise parool polnud õige, palun proovi uuesti.", "Private key password successfully updated." : "Privaatse võtme parool edukalt uuendatud.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Vigane Krüpteerimisrakendi privaatvõti . Palun uuenda oma privaatse võtme parool oma personaasete seadete all taastamaks ligipääsu oma krüpteeritud failidele.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krüpteerimisrakend on lubatud, kuid võtmeid pole lähtestatud. Palun logi välja ning uuesti sisse.", "Bad Signature" : "Vigane allkiri", "Missing Signature" : "Allkiri puudub", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Sa ei saa seda faili dekrüpteerida, see on tõenäoliselt jagatud fail. Palun lase omanikul seda faili sinuga uuesti jagada.", @@ -34,7 +32,7 @@ "New recovery key password" : "Uus taastevõtme parool", "Repeat new recovery key password" : "Korda uut taastevõtme parooli", "Change Password" : "Muuda parooli", - "basic encryption module" : "peamine küpteerimismoodul", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krüpteerimisrakend on lubatud, kuid võtmeid pole lähtestatud. Palun logi välja ning uuesti sisse.", "Your private key password no longer matches your log-in password." : "Sinu provaatvõtme parool ei kattu enam sinu sisselogimise parooliga.", "Set your old private key password to your current log-in password:" : "Pane oma vana privaatvõtme parooliks oma praegune sisselogimise parool.", " If you don't remember your old password you can ask your administrator to recover your files." : "Kui sa ei mäleta oma vana parooli, siis palu oma süsteemihalduril taastada ligipääs failidele.", diff --git a/apps/encryption/l10n/fi_FI.js b/apps/encryption/l10n/fi_FI.js index 7532f10a765..79a0d9fae7e 100644 --- a/apps/encryption/l10n/fi_FI.js +++ b/apps/encryption/l10n/fi_FI.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Nykyinen kirjautumiseen käytettävä salasana oli väärin, yritä uudelleen.", "Private key password successfully updated." : "Yksityisen avaimen salasana päivitettiin onnistuneesti.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Salausavaimet tulee siirtää vanhasta salaustavasta (ownCloud <= 8.0) uuteen salaustapaan. Suorita 'occ encryption:migrate' tai ota yhteys ylläpitoon", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Salaussovelluksen salausavain on virheellinen. Ole hyvä ja päivitä salausavain henkilökohtaisissa asetuksissasi jotta voit taas avata salatuskirjoitetut tiedostosi.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Salaussovellus on käytössä, mutta salausavaimia ei ole alustettu. Ole hyvä ja kirjaudu sisään uudelleen.", - "Encryption App is enabled and ready" : "Salaussovellus on käytössä ja valmis", "Bad Signature" : "Virheellinen allekirjoitus", "Missing Signature" : "Puuttuva allekirjoitus", "one-time password for server-side-encryption" : "kertakäyttöinen salasana palvelinpään salausta varten", @@ -43,7 +40,7 @@ OC.L10N.register( "New recovery key password" : "Uusi salausavaimen salasana", "Repeat new recovery key password" : "Toista uusi salausavaimen salasana", "Change Password" : "Vaihda salasana", - "basic encryption module" : "in perussalausmoduuli", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Salaussovellus on käytössä, mutta salausavaimia ei ole alustettu. Ole hyvä ja kirjaudu sisään uudelleen.", "Your private key password no longer matches your log-in password." : "Salaisen avaimesi salasana ei enää vastaa kirjautumissalasanaasi.", "Set your old private key password to your current log-in password:" : "Aseta yksityisen avaimen vanha salasana vastaamaan nykyistä kirjautumissalasanaasi:", " If you don't remember your old password you can ask your administrator to recover your files." : "Jos et muista vanhaa salasanaasi, voit pyytää ylläpitäjää palauttamaan tiedostosi.", diff --git a/apps/encryption/l10n/fi_FI.json b/apps/encryption/l10n/fi_FI.json index d0165a11d33..1d21b414aa0 100644 --- a/apps/encryption/l10n/fi_FI.json +++ b/apps/encryption/l10n/fi_FI.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Nykyinen kirjautumiseen käytettävä salasana oli väärin, yritä uudelleen.", "Private key password successfully updated." : "Yksityisen avaimen salasana päivitettiin onnistuneesti.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Salausavaimet tulee siirtää vanhasta salaustavasta (ownCloud <= 8.0) uuteen salaustapaan. Suorita 'occ encryption:migrate' tai ota yhteys ylläpitoon", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Salaussovelluksen salausavain on virheellinen. Ole hyvä ja päivitä salausavain henkilökohtaisissa asetuksissasi jotta voit taas avata salatuskirjoitetut tiedostosi.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Salaussovellus on käytössä, mutta salausavaimia ei ole alustettu. Ole hyvä ja kirjaudu sisään uudelleen.", - "Encryption App is enabled and ready" : "Salaussovellus on käytössä ja valmis", "Bad Signature" : "Virheellinen allekirjoitus", "Missing Signature" : "Puuttuva allekirjoitus", "one-time password for server-side-encryption" : "kertakäyttöinen salasana palvelinpään salausta varten", @@ -41,7 +38,7 @@ "New recovery key password" : "Uusi salausavaimen salasana", "Repeat new recovery key password" : "Toista uusi salausavaimen salasana", "Change Password" : "Vaihda salasana", - "basic encryption module" : "in perussalausmoduuli", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Salaussovellus on käytössä, mutta salausavaimia ei ole alustettu. Ole hyvä ja kirjaudu sisään uudelleen.", "Your private key password no longer matches your log-in password." : "Salaisen avaimesi salasana ei enää vastaa kirjautumissalasanaasi.", "Set your old private key password to your current log-in password:" : "Aseta yksityisen avaimen vanha salasana vastaamaan nykyistä kirjautumissalasanaasi:", " If you don't remember your old password you can ask your administrator to recover your files." : "Jos et muista vanhaa salasanaasi, voit pyytää ylläpitäjää palauttamaan tiedostosi.", diff --git a/apps/encryption/l10n/fr.js b/apps/encryption/l10n/fr.js index 1922440248f..68fc6196d6f 100644 --- a/apps/encryption/l10n/fr.js +++ b/apps/encryption/l10n/fr.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Le mot de passe de connexion actuel n'est pas correct, veuillez réessayer.", "Private key password successfully updated." : "Mot de passe de la clef privée mis à jour avec succès.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Vous devez migrer vos clés de chiffrement de l'ancienne version (ownCloud <= 8.0) vers la nouvelle. Veuillez exécuter 'occ encryption:migrate' ou contacter votre administrateur", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Votre clef privée de chiffrement n'est pas valide ! Veuillez mettre à jour le mot de passe de la clef privée dans vos paramètres personnels pour récupérer l'accès à vos fichiers chiffrés.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'application de chiffrement est activée mais vos clefs ne sont pas initialisées. Veuillez vous déconnecter et ensuite vous reconnecter.", - "Encryption App is enabled and ready" : "L'application de chiffrement est activée et prête", "Bad Signature" : "Mauvaise signature", "Missing Signature" : "Signature manquante", "one-time password for server-side-encryption" : "Mot de passe à usage unique pour le chiffrement côté serveur", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "Nouveau mot de passe de la clé de récupération", "Repeat new recovery key password" : "Répétez le nouveau mot de passe de la clé de récupération", "Change Password" : "Changer de mot de passe", - "basic encryption module" : "Module de chiffrement de base d'", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'application de chiffrement est activée mais vos clefs ne sont pas initialisées. Veuillez vous déconnecter et ensuite vous reconnecter.", "Your private key password no longer matches your log-in password." : "Le mot de passe de votre clef privée ne correspond plus à votre mot de passe de connexion.", "Set your old private key password to your current log-in password:" : "Remplacez l'ancien mot de passe de votre clé privée par votre mot de passe de connexion actuel :", " If you don't remember your old password you can ask your administrator to recover your files." : "Si vous ne vous souvenez plus de votre ancien mot de passe, vous pouvez demander à votre administrateur de récupérer vos fichiers.", diff --git a/apps/encryption/l10n/fr.json b/apps/encryption/l10n/fr.json index be16bfbba4d..71367d3beaf 100644 --- a/apps/encryption/l10n/fr.json +++ b/apps/encryption/l10n/fr.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Le mot de passe de connexion actuel n'est pas correct, veuillez réessayer.", "Private key password successfully updated." : "Mot de passe de la clef privée mis à jour avec succès.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Vous devez migrer vos clés de chiffrement de l'ancienne version (ownCloud <= 8.0) vers la nouvelle. Veuillez exécuter 'occ encryption:migrate' ou contacter votre administrateur", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Votre clef privée de chiffrement n'est pas valide ! Veuillez mettre à jour le mot de passe de la clef privée dans vos paramètres personnels pour récupérer l'accès à vos fichiers chiffrés.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'application de chiffrement est activée mais vos clefs ne sont pas initialisées. Veuillez vous déconnecter et ensuite vous reconnecter.", - "Encryption App is enabled and ready" : "L'application de chiffrement est activée et prête", "Bad Signature" : "Mauvaise signature", "Missing Signature" : "Signature manquante", "one-time password for server-side-encryption" : "Mot de passe à usage unique pour le chiffrement côté serveur", @@ -44,7 +41,7 @@ "New recovery key password" : "Nouveau mot de passe de la clé de récupération", "Repeat new recovery key password" : "Répétez le nouveau mot de passe de la clé de récupération", "Change Password" : "Changer de mot de passe", - "basic encryption module" : "Module de chiffrement de base d'", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'application de chiffrement est activée mais vos clefs ne sont pas initialisées. Veuillez vous déconnecter et ensuite vous reconnecter.", "Your private key password no longer matches your log-in password." : "Le mot de passe de votre clef privée ne correspond plus à votre mot de passe de connexion.", "Set your old private key password to your current log-in password:" : "Remplacez l'ancien mot de passe de votre clé privée par votre mot de passe de connexion actuel :", " If you don't remember your old password you can ask your administrator to recover your files." : "Si vous ne vous souvenez plus de votre ancien mot de passe, vous pouvez demander à votre administrateur de récupérer vos fichiers.", diff --git a/apps/encryption/l10n/gl.js b/apps/encryption/l10n/gl.js index 9a1c7161d7f..93785194166 100644 --- a/apps/encryption/l10n/gl.js +++ b/apps/encryption/l10n/gl.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "O actual contrasinal de acceso non é correcto, ténteo de novo.", "Private key password successfully updated." : "A chave privada foi actualizada correctamente.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "É necesario migrar as súas chaves de cifrado do antigo cifrado (ownCloud <= 8,0) cara ao novo. Execute «occ encryption:migrate» ou contacte co administrador", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "A chave privada para a aplicación de cifrado non é correcta. Actualice o contrasinal da súa chave privada nos seus axustes persoais para recuperar o acceso aos seus ficheiros cifrados.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "A aplicación de cifrado está activada, mais as chaves non foron preparadas, saia da sesión e volva a acceder de novo", - "Encryption App is enabled and ready" : " A aplicación de cifrado está activada e lista", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Non foi posíbel descifrar o ficheiro, probabelmente tratase dun ficheiro compartido. Pídalle ao propietario do ficheiro que volva compartir o ficheiro con vostede.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Non foi posíbel ler o ficheiro, probabelmente tratase dun ficheiro compartido. Pídalle ao propietario do ficheiro que volva compartir o ficheiro con vostede.", "The share will expire on %s." : "Esta compartición caduca o %s.", @@ -39,7 +36,7 @@ OC.L10N.register( "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", "Change Password" : "Cambiar o contrasinal", - "basic encryption module" : "Módulo básico de cifrado de", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "A aplicación de cifrado está activada, mais as chaves non foron preparadas, saia da sesión e volva a acceder de novo", "Your private key password no longer matches your log-in password." : "O seu contrasinal da chave privada non coincide co seu contrasinal de acceso.", "Set your old private key password to your current log-in password:" : "Estabeleza o seu contrasinal antigo da chave de recuperación ao seu contrasinal de acceso actual:", " If you don't remember your old password you can ask your administrator to recover your files." : "Se non lembra o seu antigo contrasinal pode pedírllelo ao seu administrador para recuperar os seus ficheiros.", diff --git a/apps/encryption/l10n/gl.json b/apps/encryption/l10n/gl.json index 3cd91149732..4b0eb0b2dd7 100644 --- a/apps/encryption/l10n/gl.json +++ b/apps/encryption/l10n/gl.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "O actual contrasinal de acceso non é correcto, ténteo de novo.", "Private key password successfully updated." : "A chave privada foi actualizada correctamente.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "É necesario migrar as súas chaves de cifrado do antigo cifrado (ownCloud <= 8,0) cara ao novo. Execute «occ encryption:migrate» ou contacte co administrador", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "A chave privada para a aplicación de cifrado non é correcta. Actualice o contrasinal da súa chave privada nos seus axustes persoais para recuperar o acceso aos seus ficheiros cifrados.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "A aplicación de cifrado está activada, mais as chaves non foron preparadas, saia da sesión e volva a acceder de novo", - "Encryption App is enabled and ready" : " A aplicación de cifrado está activada e lista", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Non foi posíbel descifrar o ficheiro, probabelmente tratase dun ficheiro compartido. Pídalle ao propietario do ficheiro que volva compartir o ficheiro con vostede.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Non foi posíbel ler o ficheiro, probabelmente tratase dun ficheiro compartido. Pídalle ao propietario do ficheiro que volva compartir o ficheiro con vostede.", "The share will expire on %s." : "Esta compartición caduca o %s.", @@ -37,7 +34,7 @@ "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", "Change Password" : "Cambiar o contrasinal", - "basic encryption module" : "Módulo básico de cifrado de", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "A aplicación de cifrado está activada, mais as chaves non foron preparadas, saia da sesión e volva a acceder de novo", "Your private key password no longer matches your log-in password." : "O seu contrasinal da chave privada non coincide co seu contrasinal de acceso.", "Set your old private key password to your current log-in password:" : "Estabeleza o seu contrasinal antigo da chave de recuperación ao seu contrasinal de acceso actual:", " If you don't remember your old password you can ask your administrator to recover your files." : "Se non lembra o seu antigo contrasinal pode pedírllelo ao seu administrador para recuperar os seus ficheiros.", diff --git a/apps/encryption/l10n/he.js b/apps/encryption/l10n/he.js index eb2d1316da0..f3299d46e55 100644 --- a/apps/encryption/l10n/he.js +++ b/apps/encryption/l10n/he.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "סיסמת ההתחברות הנוכחית אינה נכונה, יש לנסות שנית.", "Private key password successfully updated." : "סיסמת מפתח אישי עודכנה בהצלחה.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "יש צורך להמיר את מפתחות ההצפנה מהצופן הישן (ownCloud <= 8.0) לצופן החדש. יש להריץ 'occ encryption:migrate' או לפנות למנהל שלך", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "המפתח האישי של יישום ההצפנה אינו תקין. יש לעדכן אתצהמפתח האישי בהגדרות האישיות לצורך שחזור הגישה לקבצים המוצפנים.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "יישום הצפנה מאופשר אבל המפתחות שלך לא אותחלו, יש להתנתק ולהתחבר מחדש", - "Encryption App is enabled and ready" : "יישום ההצפנה מאופשר ומוכן", "Bad Signature" : "חתימה שגויה", "Missing Signature" : "חתימה חסרה", "one-time password for server-side-encryption" : "סיסמא חד פעמית עבור הצפנת צד השרת", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "סיסמת מפתח שחזור חדשה", "Repeat new recovery key password" : "יש לחזור על סיסמת מפתח השחזור החדשה", "Change Password" : "שינוי סיסמא", - "basic encryption module" : "מודול הצפנה בסיסי של", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "יישום הצפנה מאופשר אבל המפתחות שלך לא אותחלו, יש להתנתק ולהתחבר מחדש", "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 don't remember your old password you can ask your administrator to recover your files." : "אם הסיסמא הישנה נשכחה ניתן לפנות למנהל על מנת שישחזר את הקבצים שלך.", diff --git a/apps/encryption/l10n/he.json b/apps/encryption/l10n/he.json index 853f0804bcd..a0cf0800bb2 100644 --- a/apps/encryption/l10n/he.json +++ b/apps/encryption/l10n/he.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "סיסמת ההתחברות הנוכחית אינה נכונה, יש לנסות שנית.", "Private key password successfully updated." : "סיסמת מפתח אישי עודכנה בהצלחה.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "יש צורך להמיר את מפתחות ההצפנה מהצופן הישן (ownCloud <= 8.0) לצופן החדש. יש להריץ 'occ encryption:migrate' או לפנות למנהל שלך", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "המפתח האישי של יישום ההצפנה אינו תקין. יש לעדכן אתצהמפתח האישי בהגדרות האישיות לצורך שחזור הגישה לקבצים המוצפנים.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "יישום הצפנה מאופשר אבל המפתחות שלך לא אותחלו, יש להתנתק ולהתחבר מחדש", - "Encryption App is enabled and ready" : "יישום ההצפנה מאופשר ומוכן", "Bad Signature" : "חתימה שגויה", "Missing Signature" : "חתימה חסרה", "one-time password for server-side-encryption" : "סיסמא חד פעמית עבור הצפנת צד השרת", @@ -44,7 +41,7 @@ "New recovery key password" : "סיסמת מפתח שחזור חדשה", "Repeat new recovery key password" : "יש לחזור על סיסמת מפתח השחזור החדשה", "Change Password" : "שינוי סיסמא", - "basic encryption module" : "מודול הצפנה בסיסי של", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "יישום הצפנה מאופשר אבל המפתחות שלך לא אותחלו, יש להתנתק ולהתחבר מחדש", "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 don't remember your old password you can ask your administrator to recover your files." : "אם הסיסמא הישנה נשכחה ניתן לפנות למנהל על מנת שישחזר את הקבצים שלך.", diff --git a/apps/encryption/l10n/id.js b/apps/encryption/l10n/id.js index d538dda0b06..da4bd12078f 100644 --- a/apps/encryption/l10n/id.js +++ b/apps/encryption/l10n/id.js @@ -22,9 +22,8 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Sandi masuk saat ini salah, mohon coba lagi.", "Private key password successfully updated." : "Sandi kunci privat berhasil diperbarui.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Anda perlu mengganti kunci enkripsi Anda dari enkripsi lama (ownCloud <= 8.0) ke yang baru. Mohon jalankan 'occ encryption:migrate' atau hubungi administrator Anda", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kunci privat tidak sah untuk Aplikasi Enskripsi. Silakan perbarui sandi kunci privat anda pada pengaturan pribadi untuk memulihkan akses ke berkas anda yang dienskripsi.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikasi Enskripsi telah diaktifkan tetapi kunci tidak diinisialisasi, silakan log-out dan log-in lagi", - "Encryption App is enabled and ready" : "Apl Enkripsi telah diaktifkan dan siap", + "Bad Signature" : "Tanda salah", + "Missing Signature" : "Tanda hilang", "one-time password for server-side-encryption" : "Sandi sekali pakai untuk server-side-encryption", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tidak dapat mendekripsi berkas ini, mungkin ini adalah berkas bersama. Silakan meminta pemilik berkas ini untuk membagikan kembali dengan Anda.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tidak dapat membaca berkas ini, kemungkinan merupakan berkas berbagi. Silakan minta pemilik berkas untuk membagikan ulang kepada Anda.", @@ -44,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "Sandi kunci pemulihan baru", "Repeat new recovery key password" : "Ulangi sandi kunci pemulihan baru", "Change Password" : "Ubah Sandi", - "basic encryption module" : "Modul enkripsi dasar", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikasi Enskripsi telah diaktifkan tetapi kunci tidak diinisialisasi, silakan log-out dan log-in lagi", "Your private key password no longer matches your log-in password." : "Sandi kunci private Anda tidak lagi cocok dengan sandi masuk Anda.", "Set your old private key password to your current log-in password:" : "Setel sandi kunci private Anda untuk sandi masuk Anda saat ini:", " If you don't remember your old password you can ask your administrator to recover your files." : "Jika Anda tidak ingat sandi lama, Anda dapat meminta administrator Anda untuk memulihkan berkas.", diff --git a/apps/encryption/l10n/id.json b/apps/encryption/l10n/id.json index 5760bfb5543..c1a2f35670f 100644 --- a/apps/encryption/l10n/id.json +++ b/apps/encryption/l10n/id.json @@ -20,9 +20,8 @@ "The current log-in password was not correct, please try again." : "Sandi masuk saat ini salah, mohon coba lagi.", "Private key password successfully updated." : "Sandi kunci privat berhasil diperbarui.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Anda perlu mengganti kunci enkripsi Anda dari enkripsi lama (ownCloud <= 8.0) ke yang baru. Mohon jalankan 'occ encryption:migrate' atau hubungi administrator Anda", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kunci privat tidak sah untuk Aplikasi Enskripsi. Silakan perbarui sandi kunci privat anda pada pengaturan pribadi untuk memulihkan akses ke berkas anda yang dienskripsi.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikasi Enskripsi telah diaktifkan tetapi kunci tidak diinisialisasi, silakan log-out dan log-in lagi", - "Encryption App is enabled and ready" : "Apl Enkripsi telah diaktifkan dan siap", + "Bad Signature" : "Tanda salah", + "Missing Signature" : "Tanda hilang", "one-time password for server-side-encryption" : "Sandi sekali pakai untuk server-side-encryption", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tidak dapat mendekripsi berkas ini, mungkin ini adalah berkas bersama. Silakan meminta pemilik berkas ini untuk membagikan kembali dengan Anda.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tidak dapat membaca berkas ini, kemungkinan merupakan berkas berbagi. Silakan minta pemilik berkas untuk membagikan ulang kepada Anda.", @@ -42,7 +41,7 @@ "New recovery key password" : "Sandi kunci pemulihan baru", "Repeat new recovery key password" : "Ulangi sandi kunci pemulihan baru", "Change Password" : "Ubah Sandi", - "basic encryption module" : "Modul enkripsi dasar", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikasi Enskripsi telah diaktifkan tetapi kunci tidak diinisialisasi, silakan log-out dan log-in lagi", "Your private key password no longer matches your log-in password." : "Sandi kunci private Anda tidak lagi cocok dengan sandi masuk Anda.", "Set your old private key password to your current log-in password:" : "Setel sandi kunci private Anda untuk sandi masuk Anda saat ini:", " If you don't remember your old password you can ask your administrator to recover your files." : "Jika Anda tidak ingat sandi lama, Anda dapat meminta administrator Anda untuk memulihkan berkas.", diff --git a/apps/encryption/l10n/it.js b/apps/encryption/l10n/it.js index 2caf16e6096..e13e4e333d0 100644 --- a/apps/encryption/l10n/it.js +++ b/apps/encryption/l10n/it.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "La password di accesso attuale non era corretta, prova ancora.", "Private key password successfully updated." : "Password della chiave privata aggiornata correttamente.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Devi migrare le tue chiavi di cifratura dalla vecchia cifratura (ownCloud <= 8.0) alla nuova. Esegui 'occ encryption:migrate' o contatta il tuo amministratore", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chiave privata non valida per l'applicazione di cifratura. Aggiorna la password della chiave privata nelle impostazioni personali per ripristinare l'accesso ai tuoi file cifrati.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'applicazione di cifratura è abilitata, ma le chiavi non sono state inizializzate, disconnettiti ed effettua nuovamente l'accesso", - "Encryption App is enabled and ready" : "L'applicazione Cifratura è abilitata e pronta", "Bad Signature" : "Firma non valida", "Missing Signature" : "Firma mancante", "one-time password for server-side-encryption" : "password monouso per la cifratura lato server", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "Nuova password della chiave di ripristino", "Repeat new recovery key password" : "Ripeti la nuova password della chiave di ripristino", "Change Password" : "Modifica password", - "basic encryption module" : "Modulo di cifratura base di", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'applicazione di cifratura è abilitata, ma le chiavi non sono state inizializzate, disconnettiti ed effettua nuovamente l'accesso", "Your private key password no longer matches your log-in password." : "La password della chiave privata non corrisponde più alla password di accesso.", "Set your old private key password to your current log-in password:" : "Imposta la vecchia password della chiave privata sull'attuale password di accesso:", " If you don't remember your old password you can ask your administrator to recover your files." : "Se non ricordi la vecchia password puoi chiedere al tuo amministratore di recuperare i file.", diff --git a/apps/encryption/l10n/it.json b/apps/encryption/l10n/it.json index 5736cdc2e74..f4f9ab423c9 100644 --- a/apps/encryption/l10n/it.json +++ b/apps/encryption/l10n/it.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "La password di accesso attuale non era corretta, prova ancora.", "Private key password successfully updated." : "Password della chiave privata aggiornata correttamente.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Devi migrare le tue chiavi di cifratura dalla vecchia cifratura (ownCloud <= 8.0) alla nuova. Esegui 'occ encryption:migrate' o contatta il tuo amministratore", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chiave privata non valida per l'applicazione di cifratura. Aggiorna la password della chiave privata nelle impostazioni personali per ripristinare l'accesso ai tuoi file cifrati.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'applicazione di cifratura è abilitata, ma le chiavi non sono state inizializzate, disconnettiti ed effettua nuovamente l'accesso", - "Encryption App is enabled and ready" : "L'applicazione Cifratura è abilitata e pronta", "Bad Signature" : "Firma non valida", "Missing Signature" : "Firma mancante", "one-time password for server-side-encryption" : "password monouso per la cifratura lato server", @@ -44,7 +41,7 @@ "New recovery key password" : "Nuova password della chiave di ripristino", "Repeat new recovery key password" : "Ripeti la nuova password della chiave di ripristino", "Change Password" : "Modifica password", - "basic encryption module" : "Modulo di cifratura base di", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'applicazione di cifratura è abilitata, ma le chiavi non sono state inizializzate, disconnettiti ed effettua nuovamente l'accesso", "Your private key password no longer matches your log-in password." : "La password della chiave privata non corrisponde più alla password di accesso.", "Set your old private key password to your current log-in password:" : "Imposta la vecchia password della chiave privata sull'attuale password di accesso:", " If you don't remember your old password you can ask your administrator to recover your files." : "Se non ricordi la vecchia password puoi chiedere al tuo amministratore di recuperare i file.", diff --git a/apps/encryption/l10n/ja.js b/apps/encryption/l10n/ja.js index 865e3d08a44..567e68c211b 100644 --- a/apps/encryption/l10n/ja.js +++ b/apps/encryption/l10n/ja.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "ログインパスワードが一致しませんでした。もう一度入力してください。", "Private key password successfully updated." : "秘密鍵のパスワードが正常に更新されました。", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "古い暗号化(ownCloud 8.0以前)から新しい方へ、暗号化キーを移行する必要があります。'occ encryption:migrate'を実行するか、管理者に問い合わせてください。", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "暗号化アプリの無効なプライベートキーです。あなたの暗号化されたファイルへアクセスするために、個人設定からプライベートキーのパスワードを更新してください。", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "暗号化アプリは有効ですが、あなたの暗号化キーは初期化されていません。ログアウトした後に、再度ログインしてください", - "Encryption App is enabled and ready" : "暗号化アプリは有効になっており、準備が整いました", "Bad Signature" : "不正な署名", "Missing Signature" : "署名が存在しません", "one-time password for server-side-encryption" : "サーバーサイド暗号化のワンタイムパスワード", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "新しい復旧キーのパスワード", "Repeat new recovery key password" : "新しい復旧キーのパスワードをもう一度入力", "Change Password" : "パスワードを変更", - "basic encryption module" : "基本暗号化モジュール", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "暗号化アプリは有効ですが、あなたの暗号化キーは初期化されていません。ログアウトした後に、再度ログインしてください", "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 don't remember your old password you can ask your administrator to recover your files." : "古いパスワードを覚えていない場合、管理者に尋ねてファイルを回復することができます。", diff --git a/apps/encryption/l10n/ja.json b/apps/encryption/l10n/ja.json index c5d136f4f2d..98c435abbeb 100644 --- a/apps/encryption/l10n/ja.json +++ b/apps/encryption/l10n/ja.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "ログインパスワードが一致しませんでした。もう一度入力してください。", "Private key password successfully updated." : "秘密鍵のパスワードが正常に更新されました。", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "古い暗号化(ownCloud 8.0以前)から新しい方へ、暗号化キーを移行する必要があります。'occ encryption:migrate'を実行するか、管理者に問い合わせてください。", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "暗号化アプリの無効なプライベートキーです。あなたの暗号化されたファイルへアクセスするために、個人設定からプライベートキーのパスワードを更新してください。", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "暗号化アプリは有効ですが、あなたの暗号化キーは初期化されていません。ログアウトした後に、再度ログインしてください", - "Encryption App is enabled and ready" : "暗号化アプリは有効になっており、準備が整いました", "Bad Signature" : "不正な署名", "Missing Signature" : "署名が存在しません", "one-time password for server-side-encryption" : "サーバーサイド暗号化のワンタイムパスワード", @@ -44,7 +41,7 @@ "New recovery key password" : "新しい復旧キーのパスワード", "Repeat new recovery key password" : "新しい復旧キーのパスワードをもう一度入力", "Change Password" : "パスワードを変更", - "basic encryption module" : "基本暗号化モジュール", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "暗号化アプリは有効ですが、あなたの暗号化キーは初期化されていません。ログアウトした後に、再度ログインしてください", "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 don't remember your old password you can ask your administrator to recover your files." : "古いパスワードを覚えていない場合、管理者に尋ねてファイルを回復することができます。", diff --git a/apps/encryption/l10n/ko.js b/apps/encryption/l10n/ko.js index 75a9cf07353..6f2ccc3ca52 100644 --- a/apps/encryption/l10n/ko.js +++ b/apps/encryption/l10n/ko.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "현재 로그인 암호가 잘못되었습니다. 다시 시도하십시오.", "Private key password successfully updated." : "개인 키 암호가 성공적으로 업데이트 되었습니다.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "과거에 사용하였던(ownCloud <= 8.0) 암호화된 데이터에서 키를 이전해야 합니다. 'occ encryption:migrate'를 실행하거나 시스템 관리자에게 연락하십시오", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "암호화 앱의 개인 키가 잘못되었습니다. 암호화된 파일에 다시 접근하려면 개인 설정에서 개인 키 암호를 업데이트해야 합니다.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "암호화 앱이 활성화되어 있지만 키가 초기화되지 않았습니다. 로그아웃한 후 다시 로그인하십시오", - "Encryption App is enabled and ready" : "암호화 앱이 활성화되었고 준비됨", "Bad Signature" : "잘못된 서명", "Missing Signature" : "서명 없음", "one-time password for server-side-encryption" : "서버 측 암호화용 일회용 암호", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "새 복구 키 암호", "Repeat new recovery key password" : "새 복구 키 암호 확인", "Change Password" : "암호 변경", - "basic encryption module" : "기본 암호화 모듈", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "암호화 앱이 활성화되어 있지만 키가 초기화되지 않았습니다. 로그아웃한 후 다시 로그인하십시오", "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 don't remember your old password you can ask your administrator to recover your files." : " 이전 암호가 기억나지 않으면 시스템 관리자에게 파일 복구를 요청하십시오.", diff --git a/apps/encryption/l10n/ko.json b/apps/encryption/l10n/ko.json index 872a9a31469..ee3ccce2869 100644 --- a/apps/encryption/l10n/ko.json +++ b/apps/encryption/l10n/ko.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "현재 로그인 암호가 잘못되었습니다. 다시 시도하십시오.", "Private key password successfully updated." : "개인 키 암호가 성공적으로 업데이트 되었습니다.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "과거에 사용하였던(ownCloud <= 8.0) 암호화된 데이터에서 키를 이전해야 합니다. 'occ encryption:migrate'를 실행하거나 시스템 관리자에게 연락하십시오", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "암호화 앱의 개인 키가 잘못되었습니다. 암호화된 파일에 다시 접근하려면 개인 설정에서 개인 키 암호를 업데이트해야 합니다.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "암호화 앱이 활성화되어 있지만 키가 초기화되지 않았습니다. 로그아웃한 후 다시 로그인하십시오", - "Encryption App is enabled and ready" : "암호화 앱이 활성화되었고 준비됨", "Bad Signature" : "잘못된 서명", "Missing Signature" : "서명 없음", "one-time password for server-side-encryption" : "서버 측 암호화용 일회용 암호", @@ -44,7 +41,7 @@ "New recovery key password" : "새 복구 키 암호", "Repeat new recovery key password" : "새 복구 키 암호 확인", "Change Password" : "암호 변경", - "basic encryption module" : "기본 암호화 모듈", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "암호화 앱이 활성화되어 있지만 키가 초기화되지 않았습니다. 로그아웃한 후 다시 로그인하십시오", "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 don't remember your old password you can ask your administrator to recover your files." : " 이전 암호가 기억나지 않으면 시스템 관리자에게 파일 복구를 요청하십시오.", diff --git a/apps/encryption/l10n/lt_LT.js b/apps/encryption/l10n/lt_LT.js index fa830946a22..ea6154366fc 100644 --- a/apps/encryption/l10n/lt_LT.js +++ b/apps/encryption/l10n/lt_LT.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Esamas prisijungimo slaptažodis neteisingas, bandykite dar kartą.", "Private key password successfully updated." : "Privataus rakto slaptažodis buvo sėkmingai atnaujintas.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Reikalinga šifravimo raktų migracija iš senos versijos ( ownCloud <= 8.0) į naują. Įvykdykite komanda 'occ encryption:migrate' arba susisiekite su adminstratoriumi", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Netinkamas privatus raktas Šifravimo programai. Prašome atnaujinti savo privataus rakto slaptažodį asmeniniuose nustatymuose, kad atkurti prieigą prie šifruotų failų.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Šifravimo programa įjungta, bet Jūsų raktai nėra pritaikyti. Prašome atsijungti ir vėl prisijungti", - "Encryption App is enabled and ready" : "Šifravimo programėlė įjungta ir veikia", "one-time password for server-side-encryption" : "Vienkartinis slaptažodis šifravimui serverio pusėje", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Failo iššifruoti nepavyko, gali būti jog jis yra pasidalintas su jumis. Paprašykite failo savininko, kad jums iš naujo pateiktų šį failą.", "The share will expire on %s." : "Bendrinimo laikas baigsis %s.", @@ -38,7 +35,7 @@ OC.L10N.register( "New recovery key password" : "Naujas atstatymo rakto slaptažodis", "Repeat new recovery key password" : "Pakartokite naują atstatymo rakto slaptažodį", "Change Password" : "Pakeisti slaptažodį", - "basic encryption module" : "bazinis šifravimo modulis", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Šifravimo programa įjungta, bet Jūsų raktai nėra pritaikyti. Prašome atsijungti ir vėl prisijungti", "Your private key password no longer matches your log-in password." : "Privataus rakto slaptažodis nebe sutampa su prisijungimo slaptažodžiu.", "Set your old private key password to your current log-in password:" : "Nustatyti Jūsų privataus rakto slaptažodį į Jūsų dabartinį slaptažodį.", " If you don't remember your old password you can ask your administrator to recover your files." : "Jei nepamenate savo seno slaptažodžio, galite paprašyti administratoriaus atkurti Jūsų failus.", diff --git a/apps/encryption/l10n/lt_LT.json b/apps/encryption/l10n/lt_LT.json index 9098ce75c47..e7e56b656aa 100644 --- a/apps/encryption/l10n/lt_LT.json +++ b/apps/encryption/l10n/lt_LT.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Esamas prisijungimo slaptažodis neteisingas, bandykite dar kartą.", "Private key password successfully updated." : "Privataus rakto slaptažodis buvo sėkmingai atnaujintas.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Reikalinga šifravimo raktų migracija iš senos versijos ( ownCloud <= 8.0) į naują. Įvykdykite komanda 'occ encryption:migrate' arba susisiekite su adminstratoriumi", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Netinkamas privatus raktas Šifravimo programai. Prašome atnaujinti savo privataus rakto slaptažodį asmeniniuose nustatymuose, kad atkurti prieigą prie šifruotų failų.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Šifravimo programa įjungta, bet Jūsų raktai nėra pritaikyti. Prašome atsijungti ir vėl prisijungti", - "Encryption App is enabled and ready" : "Šifravimo programėlė įjungta ir veikia", "one-time password for server-side-encryption" : "Vienkartinis slaptažodis šifravimui serverio pusėje", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Failo iššifruoti nepavyko, gali būti jog jis yra pasidalintas su jumis. Paprašykite failo savininko, kad jums iš naujo pateiktų šį failą.", "The share will expire on %s." : "Bendrinimo laikas baigsis %s.", @@ -36,7 +33,7 @@ "New recovery key password" : "Naujas atstatymo rakto slaptažodis", "Repeat new recovery key password" : "Pakartokite naują atstatymo rakto slaptažodį", "Change Password" : "Pakeisti slaptažodį", - "basic encryption module" : "bazinis šifravimo modulis", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Šifravimo programa įjungta, bet Jūsų raktai nėra pritaikyti. Prašome atsijungti ir vėl prisijungti", "Your private key password no longer matches your log-in password." : "Privataus rakto slaptažodis nebe sutampa su prisijungimo slaptažodžiu.", "Set your old private key password to your current log-in password:" : "Nustatyti Jūsų privataus rakto slaptažodį į Jūsų dabartinį slaptažodį.", " If you don't remember your old password you can ask your administrator to recover your files." : "Jei nepamenate savo seno slaptažodžio, galite paprašyti administratoriaus atkurti Jūsų failus.", diff --git a/apps/encryption/l10n/nb_NO.js b/apps/encryption/l10n/nb_NO.js index dae7650d6bc..0622a26e113 100644 --- a/apps/encryption/l10n/nb_NO.js +++ b/apps/encryption/l10n/nb_NO.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Det nåværende innloggingspassordet var feil. Prøv igjen.", "Private key password successfully updated." : "Passord for privat nøkkel ble oppdatert.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Du må migrere krypteringsnøklene din fra den gamle krypteringen (ownCloud <= 8.0) til den nye. Vennligst kjør 'occ encryption:migrate' eller kontakt en administrator", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ugyldig privat nøkkel for Krypterings-app. Oppdater passordet for din private nøkkel i dine personlige innstillinger for å gjenopprette tilgang til de krypterte filene dine.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "App for kryptering er aktivert men nøklene dine er ikke satt opp. Logg ut og logg inn igjen.", - "Encryption App is enabled and ready" : "Krypterings-appen er aktivert og klar", "Bad Signature" : "Feil signatur", "Missing Signature" : "Manglende signatur", "one-time password for server-side-encryption" : "engangspassord for serverkryptering", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "Nytt passord for gjenopprettingsnøkkel", "Repeat new recovery key password" : "Gjenta nytt passord for gjenopprettingsnøkkel", "Change Password" : "Endre passord", - "basic encryption module" : "grunnleggende krypteringsmodul", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "App for kryptering er aktivert men nøklene dine er ikke satt opp. Logg ut og logg inn igjen.", "Your private key password no longer matches your log-in password." : "Passordet for din private nøkkel stemmer ikke lenger med påloggingspassordet ditt.", "Set your old private key password to your current log-in password:" : "Sett ditt gamle passord for privat nøkkel til ditt nåværende påloggingspassord:", " If you don't remember your old password you can ask your administrator to recover your files." : "Hvis du ikke husker det gamle passordet ditt kan du spørre administratoren om å gjenopprette filene dine.", diff --git a/apps/encryption/l10n/nb_NO.json b/apps/encryption/l10n/nb_NO.json index 420ce3dc055..88500afe64e 100644 --- a/apps/encryption/l10n/nb_NO.json +++ b/apps/encryption/l10n/nb_NO.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Det nåværende innloggingspassordet var feil. Prøv igjen.", "Private key password successfully updated." : "Passord for privat nøkkel ble oppdatert.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Du må migrere krypteringsnøklene din fra den gamle krypteringen (ownCloud <= 8.0) til den nye. Vennligst kjør 'occ encryption:migrate' eller kontakt en administrator", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ugyldig privat nøkkel for Krypterings-app. Oppdater passordet for din private nøkkel i dine personlige innstillinger for å gjenopprette tilgang til de krypterte filene dine.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "App for kryptering er aktivert men nøklene dine er ikke satt opp. Logg ut og logg inn igjen.", - "Encryption App is enabled and ready" : "Krypterings-appen er aktivert og klar", "Bad Signature" : "Feil signatur", "Missing Signature" : "Manglende signatur", "one-time password for server-side-encryption" : "engangspassord for serverkryptering", @@ -44,7 +41,7 @@ "New recovery key password" : "Nytt passord for gjenopprettingsnøkkel", "Repeat new recovery key password" : "Gjenta nytt passord for gjenopprettingsnøkkel", "Change Password" : "Endre passord", - "basic encryption module" : "grunnleggende krypteringsmodul", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "App for kryptering er aktivert men nøklene dine er ikke satt opp. Logg ut og logg inn igjen.", "Your private key password no longer matches your log-in password." : "Passordet for din private nøkkel stemmer ikke lenger med påloggingspassordet ditt.", "Set your old private key password to your current log-in password:" : "Sett ditt gamle passord for privat nøkkel til ditt nåværende påloggingspassord:", " If you don't remember your old password you can ask your administrator to recover your files." : "Hvis du ikke husker det gamle passordet ditt kan du spørre administratoren om å gjenopprette filene dine.", diff --git a/apps/encryption/l10n/nl.js b/apps/encryption/l10n/nl.js index a9519b7c882..236d1aa3840 100644 --- a/apps/encryption/l10n/nl.js +++ b/apps/encryption/l10n/nl.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Het huidige inlogwachtwoord was niet juist, probeer het opnieuw.", "Private key password successfully updated." : "Privésleutel succesvol bijgewerkt.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Je moet je cryptosleutels van de oude versleuteling (ownCloud <= 8.0) migreren naar de nieuwe. Start 'occ encryption:migrate' of neem contact op met je beheerder", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ongeldige privésleutel voor de crypto app. Werk het privésleutel wachtwoord bij in je persoonlijke instellingen om opnieuw toegang te krijgen tot je versleutelde bestanden.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Crypto app is geactiveerd, maar je sleutels werden niet geïnitialiseerd. Log uit en log daarna opnieuw in.", - "Encryption App is enabled and ready" : "Encryptie app is geactiveerd en gereed", "Bad Signature" : "Verkeerde handtekening", "Missing Signature" : "Missende ondertekening", "one-time password for server-side-encryption" : "eenmalig wachtwoord voor server-side versleuteling", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "Nieuwe wachtwoord herstelsleutel", "Repeat new recovery key password" : "Herhaal nieuwe wachtwoord herstelsleutel", "Change Password" : "Wijzigen wachtwoord", - "basic encryption module" : "basis versleutelingsmodule", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Crypto app is geactiveerd, maar je sleutels werden niet geïnitialiseerd. Log uit en log daarna opnieuw in.", "Your private key password no longer matches your log-in password." : "Het wachtwoord van je privésleutel komt niet meer overeen met je inlogwachtwoord.", "Set your old private key password to your current log-in password:" : "Stel het wachtwoord van je oude privésleutel in op je huidige inlogwachtwoord.", " If you don't remember your old password you can ask your administrator to recover your files." : "Als je je oude wachtwoord niet meer weet, kun je de beheerder vragen je bestanden terug te halen.", diff --git a/apps/encryption/l10n/nl.json b/apps/encryption/l10n/nl.json index 9a2091fcca0..7cdce86a492 100644 --- a/apps/encryption/l10n/nl.json +++ b/apps/encryption/l10n/nl.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Het huidige inlogwachtwoord was niet juist, probeer het opnieuw.", "Private key password successfully updated." : "Privésleutel succesvol bijgewerkt.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Je moet je cryptosleutels van de oude versleuteling (ownCloud <= 8.0) migreren naar de nieuwe. Start 'occ encryption:migrate' of neem contact op met je beheerder", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ongeldige privésleutel voor de crypto app. Werk het privésleutel wachtwoord bij in je persoonlijke instellingen om opnieuw toegang te krijgen tot je versleutelde bestanden.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Crypto app is geactiveerd, maar je sleutels werden niet geïnitialiseerd. Log uit en log daarna opnieuw in.", - "Encryption App is enabled and ready" : "Encryptie app is geactiveerd en gereed", "Bad Signature" : "Verkeerde handtekening", "Missing Signature" : "Missende ondertekening", "one-time password for server-side-encryption" : "eenmalig wachtwoord voor server-side versleuteling", @@ -44,7 +41,7 @@ "New recovery key password" : "Nieuwe wachtwoord herstelsleutel", "Repeat new recovery key password" : "Herhaal nieuwe wachtwoord herstelsleutel", "Change Password" : "Wijzigen wachtwoord", - "basic encryption module" : "basis versleutelingsmodule", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Crypto app is geactiveerd, maar je sleutels werden niet geïnitialiseerd. Log uit en log daarna opnieuw in.", "Your private key password no longer matches your log-in password." : "Het wachtwoord van je privésleutel komt niet meer overeen met je inlogwachtwoord.", "Set your old private key password to your current log-in password:" : "Stel het wachtwoord van je oude privésleutel in op je huidige inlogwachtwoord.", " If you don't remember your old password you can ask your administrator to recover your files." : "Als je je oude wachtwoord niet meer weet, kun je de beheerder vragen je bestanden terug te halen.", diff --git a/apps/encryption/l10n/pl.js b/apps/encryption/l10n/pl.js index 17f73e4fdb7..c32027e9755 100644 --- a/apps/encryption/l10n/pl.js +++ b/apps/encryption/l10n/pl.js @@ -21,9 +21,6 @@ OC.L10N.register( "The old password was not correct, please try again." : "Stare hasło nie było poprawne. Spróbuj jeszcze raz.", "The current log-in password was not correct, please try again." : "Obecne hasło logowania nie było poprawne. Spróbuj ponownie.", "Private key password successfully updated." : "Pomyślnie zaktualizowano hasło klucza prywatnego.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Klucz prywatny nie jest poprawny! Może Twoje hasło zostało zmienione z zewnątrz. Można zaktualizować hasło klucza prywatnego w ustawieniach osobistych w celu odzyskania dostępu do plików", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacja szyfrująca jest aktywna, ale twoje klucze nie zostały zainicjowane, prosze wyloguj się i zaloguj ponownie.", - "Encryption App is enabled and ready" : "Aplikacja szyfrowania jest włączona i gotowa do pracy", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nie można odszyfrować tego pliku, prawdopodobnie jest to plik udostępniony. Poproś właściciela pliku o ponowne udostępnianie pliku Tobie.", "The share will expire on %s." : "Ten zasób wygaśnie %s", "Cheers!" : "Dzięki!", @@ -36,6 +33,7 @@ OC.L10N.register( "New recovery key password" : "Nowe hasło klucza odzyskiwania", "Repeat new recovery key password" : "Powtórz nowe hasło klucza odzyskiwania", "Change Password" : "Zmień hasło", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacja szyfrująca jest aktywna, ale twoje klucze nie zostały zainicjowane, prosze wyloguj się i zaloguj ponownie.", "Your private key password no longer matches your log-in password." : "Hasło Twojego klucza prywatnego nie pasuje już do Twojego hasła logowania.", "Set your old private key password to your current log-in password:" : "Ustaw stare hasło klucza prywatnego na aktualne hasło logowania:", " If you don't remember your old password you can ask your administrator to recover your files." : "Jeśli nie pamiętasz swojego starego hasła, poproś swojego administratora, aby odzyskać pliki.", diff --git a/apps/encryption/l10n/pl.json b/apps/encryption/l10n/pl.json index f1ef3faf44d..ae1ab9b2a89 100644 --- a/apps/encryption/l10n/pl.json +++ b/apps/encryption/l10n/pl.json @@ -19,9 +19,6 @@ "The old password was not correct, please try again." : "Stare hasło nie było poprawne. Spróbuj jeszcze raz.", "The current log-in password was not correct, please try again." : "Obecne hasło logowania nie było poprawne. Spróbuj ponownie.", "Private key password successfully updated." : "Pomyślnie zaktualizowano hasło klucza prywatnego.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Klucz prywatny nie jest poprawny! Może Twoje hasło zostało zmienione z zewnątrz. Można zaktualizować hasło klucza prywatnego w ustawieniach osobistych w celu odzyskania dostępu do plików", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacja szyfrująca jest aktywna, ale twoje klucze nie zostały zainicjowane, prosze wyloguj się i zaloguj ponownie.", - "Encryption App is enabled and ready" : "Aplikacja szyfrowania jest włączona i gotowa do pracy", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nie można odszyfrować tego pliku, prawdopodobnie jest to plik udostępniony. Poproś właściciela pliku o ponowne udostępnianie pliku Tobie.", "The share will expire on %s." : "Ten zasób wygaśnie %s", "Cheers!" : "Dzięki!", @@ -34,6 +31,7 @@ "New recovery key password" : "Nowe hasło klucza odzyskiwania", "Repeat new recovery key password" : "Powtórz nowe hasło klucza odzyskiwania", "Change Password" : "Zmień hasło", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacja szyfrująca jest aktywna, ale twoje klucze nie zostały zainicjowane, prosze wyloguj się i zaloguj ponownie.", "Your private key password no longer matches your log-in password." : "Hasło Twojego klucza prywatnego nie pasuje już do Twojego hasła logowania.", "Set your old private key password to your current log-in password:" : "Ustaw stare hasło klucza prywatnego na aktualne hasło logowania:", " If you don't remember your old password you can ask your administrator to recover your files." : "Jeśli nie pamiętasz swojego starego hasła, poproś swojego administratora, aby odzyskać pliki.", diff --git a/apps/encryption/l10n/pt_BR.js b/apps/encryption/l10n/pt_BR.js index 560e1daf043..205bd04489d 100644 --- a/apps/encryption/l10n/pt_BR.js +++ b/apps/encryption/l10n/pt_BR.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "A senha atual do log-in não estava correta, por favor, tente novamente.", "Private key password successfully updated." : "Senha de chave privada atualizada com sucesso.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Você precisa migrar suas chaves de criptografia a partir da antiga criptografia (ownCloud <= 8,0) para a nova. Por favor, execute 'occ encryption:migrate' ou contate o seu administrador", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chave do App de Criptografia é inválida. Por favor, atualize sua senha de chave privada em suas configurações pessoais para recuperar o acesso a seus arquivos criptografados.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "App de criptografia está ativado, mas as chaves não estão inicializadas, por favor log-out e faça login novamente", - "Encryption App is enabled and ready" : "Aplicativo de criptografia está ativado e pronto", "Bad Signature" : "Assinatura ruim", "Missing Signature" : "Faltando assinatura", "one-time password for server-side-encryption" : "senha de uso único para criptografia-lado-servidor", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "Nova senha da chave de recuperação", "Repeat new recovery key password" : "Repita a nova senha da chave de recuperação", "Change Password" : "Trocar senha", - "basic encryption module" : "Modo de criptografia básico", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "App de criptografia está ativado, mas as chaves não estão inicializadas, por favor log-out e faça login novamente", "Your private key password no longer matches your log-in password." : "A sua senha de chave privada não corresponde a sua senha de login.", "Set your old private key password to your current log-in password:" : "Defina a sua antiga senha da chave privada para sua senha de login atual:", " If you don't remember your old password you can ask your administrator to recover your files." : "Se você não se lembra de sua antiga senha você pode pedir ao administrador que recupere seus arquivos.", diff --git a/apps/encryption/l10n/pt_BR.json b/apps/encryption/l10n/pt_BR.json index cc788cc4e70..a5bb9a9e0e4 100644 --- a/apps/encryption/l10n/pt_BR.json +++ b/apps/encryption/l10n/pt_BR.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "A senha atual do log-in não estava correta, por favor, tente novamente.", "Private key password successfully updated." : "Senha de chave privada atualizada com sucesso.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Você precisa migrar suas chaves de criptografia a partir da antiga criptografia (ownCloud <= 8,0) para a nova. Por favor, execute 'occ encryption:migrate' ou contate o seu administrador", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chave do App de Criptografia é inválida. Por favor, atualize sua senha de chave privada em suas configurações pessoais para recuperar o acesso a seus arquivos criptografados.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "App de criptografia está ativado, mas as chaves não estão inicializadas, por favor log-out e faça login novamente", - "Encryption App is enabled and ready" : "Aplicativo de criptografia está ativado e pronto", "Bad Signature" : "Assinatura ruim", "Missing Signature" : "Faltando assinatura", "one-time password for server-side-encryption" : "senha de uso único para criptografia-lado-servidor", @@ -44,7 +41,7 @@ "New recovery key password" : "Nova senha da chave de recuperação", "Repeat new recovery key password" : "Repita a nova senha da chave de recuperação", "Change Password" : "Trocar senha", - "basic encryption module" : "Modo de criptografia básico", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "App de criptografia está ativado, mas as chaves não estão inicializadas, por favor log-out e faça login novamente", "Your private key password no longer matches your log-in password." : "A sua senha de chave privada não corresponde a sua senha de login.", "Set your old private key password to your current log-in password:" : "Defina a sua antiga senha da chave privada para sua senha de login atual:", " If you don't remember your old password you can ask your administrator to recover your files." : "Se você não se lembra de sua antiga senha você pode pedir ao administrador que recupere seus arquivos.", diff --git a/apps/encryption/l10n/pt_PT.js b/apps/encryption/l10n/pt_PT.js index 2ed6009ba96..1eb5983b4ba 100644 --- a/apps/encryption/l10n/pt_PT.js +++ b/apps/encryption/l10n/pt_PT.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "A palavra-passe de iniciar a sessão atual não estava correta, por favor, tente de novo.", "Private key password successfully updated." : "A palavra-passe da chave privada foi atualizada com sucesso. ", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Precisa de migrar as suas chaves de encriptação da encriptação antiga (ownCloud <= 8.0) para a nova. Por favor, execute 'occ encryption:migrate' ou contacte o seu administrador", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chave privada inválida para a Aplicação de Encriptação. Por favor, atualize a sua palavra-passe da chave privada nas definições pessoais para recuperar o acesso aos seus ficheiros encriptados.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "A Aplicação de Encriptação está ativada, mas as suas chaves não inicializaram. Por favor, termine a sessão e inicie-a novamente", - "Encryption App is enabled and ready" : "A aplicação de Encriptação está ativada e pronta", "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", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "Nova palavra-passe da chave de recuperação", "Repeat new recovery key password" : "Repetir palavra-passe da chave de recuperação", "Change Password" : "Alterar Palavra-passe", - "basic encryption module" : "módulo de encriptação básico da", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "A Aplicação de Encriptação está ativada, mas as suas chaves não inicializaram. Por favor, termine a sessão e inicie-a novamente", "Your private key password no longer matches your log-in password." : "A palavra-passe da sua chave privada já não coincide com a palavra-passe da sua sessão.", "Set your old private key password to your current log-in password:" : "Defina a sua palavra-passe antiga da chave privada para a sua palavra-passe atual da sessão:", " If you don't remember your old password you can ask your administrator to recover your files." : "Se não se lembra da palavra-passe antiga pode pedir ao seu administrador para recuperar os seus ficheiros. ", diff --git a/apps/encryption/l10n/pt_PT.json b/apps/encryption/l10n/pt_PT.json index 181d6e151cd..c9fb002678c 100644 --- a/apps/encryption/l10n/pt_PT.json +++ b/apps/encryption/l10n/pt_PT.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "A palavra-passe de iniciar a sessão atual não estava correta, por favor, tente de novo.", "Private key password successfully updated." : "A palavra-passe da chave privada foi atualizada com sucesso. ", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Precisa de migrar as suas chaves de encriptação da encriptação antiga (ownCloud <= 8.0) para a nova. Por favor, execute 'occ encryption:migrate' ou contacte o seu administrador", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chave privada inválida para a Aplicação de Encriptação. Por favor, atualize a sua palavra-passe da chave privada nas definições pessoais para recuperar o acesso aos seus ficheiros encriptados.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "A Aplicação de Encriptação está ativada, mas as suas chaves não inicializaram. Por favor, termine a sessão e inicie-a novamente", - "Encryption App is enabled and ready" : "A aplicação de Encriptação está ativada e pronta", "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", @@ -44,7 +41,7 @@ "New recovery key password" : "Nova palavra-passe da chave de recuperação", "Repeat new recovery key password" : "Repetir palavra-passe da chave de recuperação", "Change Password" : "Alterar Palavra-passe", - "basic encryption module" : "módulo de encriptação básico da", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "A Aplicação de Encriptação está ativada, mas as suas chaves não inicializaram. Por favor, termine a sessão e inicie-a novamente", "Your private key password no longer matches your log-in password." : "A palavra-passe da sua chave privada já não coincide com a palavra-passe da sua sessão.", "Set your old private key password to your current log-in password:" : "Defina a sua palavra-passe antiga da chave privada para a sua palavra-passe atual da sessão:", " If you don't remember your old password you can ask your administrator to recover your files." : "Se não se lembra da palavra-passe antiga pode pedir ao seu administrador para recuperar os seus ficheiros. ", diff --git a/apps/encryption/l10n/ro.js b/apps/encryption/l10n/ro.js index f98294e967b..061fc0b6044 100644 --- a/apps/encryption/l10n/ro.js +++ b/apps/encryption/l10n/ro.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Parola curentă de autentificare nu este corectă, încearcă din nou.", "Private key password successfully updated." : "Parola cheii private a fost actualizată cu succes.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Este necesar să migrezi cheile de criptare de la vechiul algoritm (ownCloud <= 8.0) la cel nou. Rulează 'occ encryption:migrate' sau contactează-ți administratorul.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Cheie privată invalidă pentru aplicația de criptare. Actualizează-ți parola cheii private folosind setările personale pentru a redobândi accesul la fișierele tale criptate.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplicația de criptare este activată dar cheile nu sunt inițializate, te rugăm reautentifică-te", - "Encryption App is enabled and ready" : "Aplicația de criptare este activată", "Bad Signature" : "Semnătură greșită", "Missing Signature" : "Semnătură lipsă", "The share will expire on %s." : "Partajarea va expira în data de %s.", @@ -38,7 +35,7 @@ OC.L10N.register( "New recovery key password" : "Parola nouă a cheii de recuperare", "Repeat new recovery key password" : "Repetă parola nouă a cheii de recuperare", "Change Password" : "Schimbă parola", - "basic encryption module" : "modululde bază pentru criptare", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplicația de criptare este activată dar cheile nu sunt inițializate, te rugăm reautentifică-te", "Your private key password no longer matches your log-in password." : "Parola cheii tale private nu se mai potrivește cu parola pentru autentificare.", "Old log-in password" : "Parola veche pentru autentificare", "Current log-in password" : "Parola curentă pentru autentificare", diff --git a/apps/encryption/l10n/ro.json b/apps/encryption/l10n/ro.json index eb6b2533a31..5c548ea34db 100644 --- a/apps/encryption/l10n/ro.json +++ b/apps/encryption/l10n/ro.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Parola curentă de autentificare nu este corectă, încearcă din nou.", "Private key password successfully updated." : "Parola cheii private a fost actualizată cu succes.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Este necesar să migrezi cheile de criptare de la vechiul algoritm (ownCloud <= 8.0) la cel nou. Rulează 'occ encryption:migrate' sau contactează-ți administratorul.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Cheie privată invalidă pentru aplicația de criptare. Actualizează-ți parola cheii private folosind setările personale pentru a redobândi accesul la fișierele tale criptate.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplicația de criptare este activată dar cheile nu sunt inițializate, te rugăm reautentifică-te", - "Encryption App is enabled and ready" : "Aplicația de criptare este activată", "Bad Signature" : "Semnătură greșită", "Missing Signature" : "Semnătură lipsă", "The share will expire on %s." : "Partajarea va expira în data de %s.", @@ -36,7 +33,7 @@ "New recovery key password" : "Parola nouă a cheii de recuperare", "Repeat new recovery key password" : "Repetă parola nouă a cheii de recuperare", "Change Password" : "Schimbă parola", - "basic encryption module" : "modululde bază pentru criptare", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplicația de criptare este activată dar cheile nu sunt inițializate, te rugăm reautentifică-te", "Your private key password no longer matches your log-in password." : "Parola cheii tale private nu se mai potrivește cu parola pentru autentificare.", "Old log-in password" : "Parola veche pentru autentificare", "Current log-in password" : "Parola curentă pentru autentificare", diff --git a/apps/encryption/l10n/ru.js b/apps/encryption/l10n/ru.js index 132289a4975..cc511fbcb05 100644 --- a/apps/encryption/l10n/ru.js +++ b/apps/encryption/l10n/ru.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Текущий пароль для учётной записи введён неверно, пожалуйста повторите попытку.", "Private key password successfully updated." : "Пароль закрытого ключа успешно обновлён.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Вам необходимо произвести конвертацию ключей шифрования из старого формата (ownCloud <= 8.0) в новый. Пожалуйста запустите команду 'occ encryption:migrate' или обратитесь к администратору.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Закрытый ключ приложения шифрования недействителен. Обновите закрытый ключ в личных настройках, чтобы восстановить доступ к зашифрованным файлам.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Приложение шифрования активно, но ваши ключи не инициализированы, выйдите из системы и войдите заново", - "Encryption App is enabled and ready" : "Приложение шифрования включено и готово", "Bad Signature" : "Некорректная подпись", "Missing Signature" : "Подпись отсутствует", "one-time password for server-side-encryption" : "одноразовый пароль для шифрования на стороне сервера", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "Новый пароль ключа восстановления", "Repeat new recovery key password" : "Повторите новый пароль ключа восстановления", "Change Password" : "Изменить пароль", - "basic encryption module" : "Базовый модуль шифрования", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Приложение шифрования активно, но ваши ключи не инициализированы, выйдите из системы и войдите заново", "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 don't remember your old password you can ask your administrator to recover your files." : "Если вы не помните свой старый пароль, вы можете попросить своего администратора восстановить ваши файлы", diff --git a/apps/encryption/l10n/ru.json b/apps/encryption/l10n/ru.json index 0ff1a0ce0df..26bcfacd730 100644 --- a/apps/encryption/l10n/ru.json +++ b/apps/encryption/l10n/ru.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Текущий пароль для учётной записи введён неверно, пожалуйста повторите попытку.", "Private key password successfully updated." : "Пароль закрытого ключа успешно обновлён.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Вам необходимо произвести конвертацию ключей шифрования из старого формата (ownCloud <= 8.0) в новый. Пожалуйста запустите команду 'occ encryption:migrate' или обратитесь к администратору.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Закрытый ключ приложения шифрования недействителен. Обновите закрытый ключ в личных настройках, чтобы восстановить доступ к зашифрованным файлам.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Приложение шифрования активно, но ваши ключи не инициализированы, выйдите из системы и войдите заново", - "Encryption App is enabled and ready" : "Приложение шифрования включено и готово", "Bad Signature" : "Некорректная подпись", "Missing Signature" : "Подпись отсутствует", "one-time password for server-side-encryption" : "одноразовый пароль для шифрования на стороне сервера", @@ -44,7 +41,7 @@ "New recovery key password" : "Новый пароль ключа восстановления", "Repeat new recovery key password" : "Повторите новый пароль ключа восстановления", "Change Password" : "Изменить пароль", - "basic encryption module" : "Базовый модуль шифрования", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Приложение шифрования активно, но ваши ключи не инициализированы, выйдите из системы и войдите заново", "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 don't remember your old password you can ask your administrator to recover your files." : "Если вы не помните свой старый пароль, вы можете попросить своего администратора восстановить ваши файлы", diff --git a/apps/encryption/l10n/sk_SK.js b/apps/encryption/l10n/sk_SK.js index c3620c77d30..af66435d211 100644 --- a/apps/encryption/l10n/sk_SK.js +++ b/apps/encryption/l10n/sk_SK.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Toto heslo nebolo správne, prosím skúste to ešte raz.", "Private key password successfully updated." : "Heslo súkromného kľúča je úspešne aktualizované.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Musíte migrovať vaše šifrovacie kľúče zo starého šifrovania (ownCloud <= 8,0) na nové. Spustite „occ encryption:migrate“ alebo sa obráťte na správcu", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chybný súkromný kľúč na šifrovanie aplikácií. Zaktualizujte si heslo súkromného kľúča v svojom osobnom nastavení, aby ste znovu získali prístup k svojim zašifrovaným súborom.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikácia na šifrovanie je zapnutá, ale vaše kľúče nie sú inicializované. Odhláste sa a znovu sa prihláste.", - "Encryption App is enabled and ready" : "Aplikácia Šifrovanie je zapnutá a pripravená", "one-time password for server-side-encryption" : "jednorazové heslo na šifrovanie na strane servera", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento súbor sa nepodarilo dešifrovať, pravdepodobne je zdieľaný. Požiadajte majiteľa súboru, aby ho s vami znovu vyzdieľal.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento súbor sa nepodarilo prečítať, pravdepodobne je zdieľaný. Požiadajte majiteľa súboru, aby vám ho znova zdieľal.", @@ -42,7 +39,7 @@ OC.L10N.register( "New recovery key password" : "Nové heslo obnovovacieho kľúča", "Repeat new recovery key password" : "Zopakujte nové heslo obnovovacieho kľúča", "Change Password" : "Zmeniť heslo", - "basic encryption module" : "základný šifrovací modul", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikácia na šifrovanie je zapnutá, ale vaše kľúče nie sú inicializované. Odhláste sa a znovu sa prihláste.", "Your private key password no longer matches your log-in password." : "Heslo vášho súkromného kľúča sa nezhoduje v vašim prihlasovacím heslom.", "Set your old private key password to your current log-in password:" : "Zmeňte si vaše staré heslo súkromného kľúča na rovnaké, aké je vaše aktuálne prihlasovacie heslo:", " If you don't remember your old password you can ask your administrator to recover your files." : "Ak si nepamätáte svoje staré heslo, môžete požiadať administrátora o obnovenie svojich súborov.", diff --git a/apps/encryption/l10n/sk_SK.json b/apps/encryption/l10n/sk_SK.json index ffa2a620670..11462bf37d9 100644 --- a/apps/encryption/l10n/sk_SK.json +++ b/apps/encryption/l10n/sk_SK.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Toto heslo nebolo správne, prosím skúste to ešte raz.", "Private key password successfully updated." : "Heslo súkromného kľúča je úspešne aktualizované.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Musíte migrovať vaše šifrovacie kľúče zo starého šifrovania (ownCloud <= 8,0) na nové. Spustite „occ encryption:migrate“ alebo sa obráťte na správcu", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chybný súkromný kľúč na šifrovanie aplikácií. Zaktualizujte si heslo súkromného kľúča v svojom osobnom nastavení, aby ste znovu získali prístup k svojim zašifrovaným súborom.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikácia na šifrovanie je zapnutá, ale vaše kľúče nie sú inicializované. Odhláste sa a znovu sa prihláste.", - "Encryption App is enabled and ready" : "Aplikácia Šifrovanie je zapnutá a pripravená", "one-time password for server-side-encryption" : "jednorazové heslo na šifrovanie na strane servera", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento súbor sa nepodarilo dešifrovať, pravdepodobne je zdieľaný. Požiadajte majiteľa súboru, aby ho s vami znovu vyzdieľal.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento súbor sa nepodarilo prečítať, pravdepodobne je zdieľaný. Požiadajte majiteľa súboru, aby vám ho znova zdieľal.", @@ -40,7 +37,7 @@ "New recovery key password" : "Nové heslo obnovovacieho kľúča", "Repeat new recovery key password" : "Zopakujte nové heslo obnovovacieho kľúča", "Change Password" : "Zmeniť heslo", - "basic encryption module" : "základný šifrovací modul", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikácia na šifrovanie je zapnutá, ale vaše kľúče nie sú inicializované. Odhláste sa a znovu sa prihláste.", "Your private key password no longer matches your log-in password." : "Heslo vášho súkromného kľúča sa nezhoduje v vašim prihlasovacím heslom.", "Set your old private key password to your current log-in password:" : "Zmeňte si vaše staré heslo súkromného kľúča na rovnaké, aké je vaše aktuálne prihlasovacie heslo:", " If you don't remember your old password you can ask your administrator to recover your files." : "Ak si nepamätáte svoje staré heslo, môžete požiadať administrátora o obnovenie svojich súborov.", diff --git a/apps/encryption/l10n/sl.js b/apps/encryption/l10n/sl.js index 4bbb8d0fc5d..1fe785a61d3 100644 --- a/apps/encryption/l10n/sl.js +++ b/apps/encryption/l10n/sl.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Trenutno geslo za prijavo ni vpisano pravilno. Poskusite znova.", "Private key password successfully updated." : "Zasebni ključ za geslo je uspešno posodobljen.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Preseliti je treba šifrirne ključe iz starega sistema (ownCloud <= 8.0) na novega. Zaženite ukaz 'occ encryption:migrate' ali pa stopite v stik s skrbnikom sistema.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ni ustreznega osebnega ključa za program za šifriranje. Posodobite osebni ključ za dostop do šifriranih datotek med nastavitvami.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Program za šifriranje je omogočen, vendar ni začet. Odjavite se in nato ponovno prijavite.", - "Encryption App is enabled and ready" : "Program za šifriranje ne omogočen in pripravljen za delo", "Bad Signature" : "Neustrezen podpis", "Missing Signature" : "Manjkajoč podpis", "one-time password for server-side-encryption" : "enkratno geslo za šifriranje na strani strežnika", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "Novi ključ za obnovitev gesla", "Repeat new recovery key password" : "Ponovi novi ključ za obnovitev gesla", "Change Password" : "Spremeni geslo", - "basic encryption module" : "Osnovno šifriranje z", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Program za šifriranje je omogočen, vendar ni začet. Odjavite se in nato ponovno prijavite.", "Your private key password no longer matches your log-in password." : "Zasebno geslo ni več skladno s prijavnim geslom.", "Set your old private key password to your current log-in password:" : "Nastavite star zasebni ključ na trenutno prijavno geslo:", " If you don't remember your old password you can ask your administrator to recover your files." : "Če ste pozabili svoje geslo, lahko vaše datoteke obnovi le skrbnik sistema.", diff --git a/apps/encryption/l10n/sl.json b/apps/encryption/l10n/sl.json index 20736254d35..457305e8f1f 100644 --- a/apps/encryption/l10n/sl.json +++ b/apps/encryption/l10n/sl.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Trenutno geslo za prijavo ni vpisano pravilno. Poskusite znova.", "Private key password successfully updated." : "Zasebni ključ za geslo je uspešno posodobljen.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Preseliti je treba šifrirne ključe iz starega sistema (ownCloud <= 8.0) na novega. Zaženite ukaz 'occ encryption:migrate' ali pa stopite v stik s skrbnikom sistema.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ni ustreznega osebnega ključa za program za šifriranje. Posodobite osebni ključ za dostop do šifriranih datotek med nastavitvami.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Program za šifriranje je omogočen, vendar ni začet. Odjavite se in nato ponovno prijavite.", - "Encryption App is enabled and ready" : "Program za šifriranje ne omogočen in pripravljen za delo", "Bad Signature" : "Neustrezen podpis", "Missing Signature" : "Manjkajoč podpis", "one-time password for server-side-encryption" : "enkratno geslo za šifriranje na strani strežnika", @@ -44,7 +41,7 @@ "New recovery key password" : "Novi ključ za obnovitev gesla", "Repeat new recovery key password" : "Ponovi novi ključ za obnovitev gesla", "Change Password" : "Spremeni geslo", - "basic encryption module" : "Osnovno šifriranje z", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Program za šifriranje je omogočen, vendar ni začet. Odjavite se in nato ponovno prijavite.", "Your private key password no longer matches your log-in password." : "Zasebno geslo ni več skladno s prijavnim geslom.", "Set your old private key password to your current log-in password:" : "Nastavite star zasebni ključ na trenutno prijavno geslo:", " If you don't remember your old password you can ask your administrator to recover your files." : "Če ste pozabili svoje geslo, lahko vaše datoteke obnovi le skrbnik sistema.", diff --git a/apps/encryption/l10n/sq.js b/apps/encryption/l10n/sq.js index 1a07e3982f1..814cf35f52f 100644 --- a/apps/encryption/l10n/sq.js +++ b/apps/encryption/l10n/sq.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Fjalëkalimi i tanishëm i hyrjeve s’qe i saktë, ju lutemi, riprovoni.", "Private key password successfully updated." : "Fjalëkalimi për kyçin privat u përditësua me sukses.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Lypset të kaloni kyçet tuaj të fshehtëzimeve nga versioni i vjetër i fshehtëzimeve (ownCloud <= 8.0) te i riu. Ju lutemi, ekzekutoni run 'occ encryption:migrate' ose lidhuni me përgjegjësin tuaj", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kyç privat i pavlefshëm për aplikacionin e fshehtëzimeve. Ju lutemi, përditësoni fjalëkalimin tuaj të kyçit privat te rregullimet tuaja personale që të rimerrni hyrje te kartelat tuaja të fshehtëzuara.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacioni i fshehtëzimeve është i aktivizuar, por kyçet tuaj s’janë vënë në punë, ju lutemi, dilni dhe ribëni hyrjen", - "Encryption App is enabled and ready" : "Aplikacioni i Fshehtëzimeve u aktivizua dhe është gati", "Bad Signature" : "Nënshkrim i Keq", "Missing Signature" : "Mungon Nënshkrimi", "one-time password for server-side-encryption" : "fjalëkalim vetëm për një herë, për fshehtëzim-më-anë-shërbyesi", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "Fjalëkalimi i ri kyçi rimarrjesh", "Repeat new recovery key password" : "Rijepni fjalëkalimin e ri kyçi rimarrjesh", "Change Password" : "Ndryshoni Fjalëkalimin", - "basic encryption module" : "modul i thjeshtëfshehtëzimesh", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacioni i fshehtëzimeve është i aktivizuar, por kyçet tuaj s’janë vënë në punë, ju lutemi, dilni dhe ribëni hyrjen", "Your private key password no longer matches your log-in password." : "Fjalëkalimi juaj për kyçe privatë s’përputhet më me fjalëkalimin për hyrjet.", "Set your old private key password to your current log-in password:" : "Fjalëkalimit të vjetër të kyçit privat jepini vlerën e fjalëkalimit tuaj të tanishëm për hyrjet:", " If you don't remember your old password you can ask your administrator to recover your files." : " Nëse s’e mbani mend fjalëkalimin tuaj të vjetër, mund t’i kërkoni përgjegjësit tuaj të rimarrë kartelat tuaja.", diff --git a/apps/encryption/l10n/sq.json b/apps/encryption/l10n/sq.json index a4cc357f5ed..4a2ad0ce664 100644 --- a/apps/encryption/l10n/sq.json +++ b/apps/encryption/l10n/sq.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Fjalëkalimi i tanishëm i hyrjeve s’qe i saktë, ju lutemi, riprovoni.", "Private key password successfully updated." : "Fjalëkalimi për kyçin privat u përditësua me sukses.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Lypset të kaloni kyçet tuaj të fshehtëzimeve nga versioni i vjetër i fshehtëzimeve (ownCloud <= 8.0) te i riu. Ju lutemi, ekzekutoni run 'occ encryption:migrate' ose lidhuni me përgjegjësin tuaj", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kyç privat i pavlefshëm për aplikacionin e fshehtëzimeve. Ju lutemi, përditësoni fjalëkalimin tuaj të kyçit privat te rregullimet tuaja personale që të rimerrni hyrje te kartelat tuaja të fshehtëzuara.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacioni i fshehtëzimeve është i aktivizuar, por kyçet tuaj s’janë vënë në punë, ju lutemi, dilni dhe ribëni hyrjen", - "Encryption App is enabled and ready" : "Aplikacioni i Fshehtëzimeve u aktivizua dhe është gati", "Bad Signature" : "Nënshkrim i Keq", "Missing Signature" : "Mungon Nënshkrimi", "one-time password for server-side-encryption" : "fjalëkalim vetëm për një herë, për fshehtëzim-më-anë-shërbyesi", @@ -44,7 +41,7 @@ "New recovery key password" : "Fjalëkalimi i ri kyçi rimarrjesh", "Repeat new recovery key password" : "Rijepni fjalëkalimin e ri kyçi rimarrjesh", "Change Password" : "Ndryshoni Fjalëkalimin", - "basic encryption module" : "modul i thjeshtëfshehtëzimesh", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacioni i fshehtëzimeve është i aktivizuar, por kyçet tuaj s’janë vënë në punë, ju lutemi, dilni dhe ribëni hyrjen", "Your private key password no longer matches your log-in password." : "Fjalëkalimi juaj për kyçe privatë s’përputhet më me fjalëkalimin për hyrjet.", "Set your old private key password to your current log-in password:" : "Fjalëkalimit të vjetër të kyçit privat jepini vlerën e fjalëkalimit tuaj të tanishëm për hyrjet:", " If you don't remember your old password you can ask your administrator to recover your files." : " Nëse s’e mbani mend fjalëkalimin tuaj të vjetër, mund t’i kërkoni përgjegjësit tuaj të rimarrë kartelat tuaja.", diff --git a/apps/encryption/l10n/sr.js b/apps/encryption/l10n/sr.js index 950e6339916..1ce0be4ce2a 100644 --- a/apps/encryption/l10n/sr.js +++ b/apps/encryption/l10n/sr.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Тренутна лозинка за пријаву није исправна. Покушајте поново.", "Private key password successfully updated." : "Лозинка личног кључа је успешно ажурирана.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Морате да пребаците старе шифрарске кључеве (оунКлауд <= 8.0) у нови. Укључите „оунКлауд подразумевани шифрарски модул“ и покрените 'occ encryption:migrate'", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Неисправан лични кључ за апликацију шифровања. Ажурирајте лозинку личног кључа у личним поставкама да бисте опоравили приступ вашим шифрованим фајловима.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Апликација шифровања је укључена али ваши кључеви нису иницијализовани. Одјавите се и поново се пријавите.", - "Encryption App is enabled and ready" : "Апликација шифровања је укључена и спремна", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не могу да дешифрујем фајл. Вероватно је то дељен фајл. Затражите од власника фајла да га поново подели са вама.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не могу да читам фајл. Вероватно је дељен. Питајте власника да га поново подели са вама.", "The share will expire on %s." : "Дељење истиче %s.", @@ -39,6 +36,7 @@ OC.L10N.register( "New recovery key password" : "Нова лозинка кључа за опоравак", "Repeat new recovery key password" : "Поновите нову лозинку кључа за опоравак", "Change Password" : "Измени лозинку", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Апликација шифровања је укључена али ваши кључеви нису иницијализовани. Одјавите се и поново се пријавите.", "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 don't remember your old password you can ask your administrator to recover your files." : "Ако се не сећате старе лозинке, можете затражити од администратора да опорави ваше фајлове.", diff --git a/apps/encryption/l10n/sr.json b/apps/encryption/l10n/sr.json index d8ffd65f73c..419d64c1499 100644 --- a/apps/encryption/l10n/sr.json +++ b/apps/encryption/l10n/sr.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Тренутна лозинка за пријаву није исправна. Покушајте поново.", "Private key password successfully updated." : "Лозинка личног кључа је успешно ажурирана.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Морате да пребаците старе шифрарске кључеве (оунКлауд <= 8.0) у нови. Укључите „оунКлауд подразумевани шифрарски модул“ и покрените 'occ encryption:migrate'", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Неисправан лични кључ за апликацију шифровања. Ажурирајте лозинку личног кључа у личним поставкама да бисте опоравили приступ вашим шифрованим фајловима.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Апликација шифровања је укључена али ваши кључеви нису иницијализовани. Одјавите се и поново се пријавите.", - "Encryption App is enabled and ready" : "Апликација шифровања је укључена и спремна", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не могу да дешифрујем фајл. Вероватно је то дељен фајл. Затражите од власника фајла да га поново подели са вама.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не могу да читам фајл. Вероватно је дељен. Питајте власника да га поново подели са вама.", "The share will expire on %s." : "Дељење истиче %s.", @@ -37,6 +34,7 @@ "New recovery key password" : "Нова лозинка кључа за опоравак", "Repeat new recovery key password" : "Поновите нову лозинку кључа за опоравак", "Change Password" : "Измени лозинку", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Апликација шифровања је укључена али ваши кључеви нису иницијализовани. Одјавите се и поново се пријавите.", "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 don't remember your old password you can ask your administrator to recover your files." : "Ако се не сећате старе лозинке, можете затражити од администратора да опорави ваше фајлове.", diff --git a/apps/encryption/l10n/sv.js b/apps/encryption/l10n/sv.js index 982ab41fff4..689523abc04 100644 --- a/apps/encryption/l10n/sv.js +++ b/apps/encryption/l10n/sv.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Det nuvarande inloggningslösenordet var inte korrekt. Vänligen försök igen.", "Private key password successfully updated." : "Den privata nyckelns lösenord uppdaterades.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Du behöver migrera dina krypteringsnycklar från den gamla krypteringen (ownCloud <= 8.0) till den nya. Kör 'occ encryption:migrate' eller kontakta din administratör", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ogiltig privat nyckel i krypteringsprogrammet. Vänligen uppdatera lösenordet till din privata nyckel under dina personliga inställningar för att återfå tillgång till dina krypterade filer.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet är aktiverat men dina nycklar är inte initierade. Vänligen logga ut och in igen", - "Encryption App is enabled and ready" : "Krypteringsappen är aktiverad och redo", "Bad Signature" : "Dålig signatur", "Missing Signature" : "Saknar signatur", "one-time password for server-side-encryption" : "engångslösenord för kryptering på serversidan", @@ -44,6 +41,7 @@ OC.L10N.register( "New recovery key password" : "Nytt lösenord för återställningsnyckeln", "Repeat new recovery key password" : "Upprepa nytt lösenord för återställningsnyckeln", "Change Password" : "Byt lösenord", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet är aktiverat men dina nycklar är inte initierade. Vänligen logga ut och in igen", "Your private key password no longer matches your log-in password." : "Ditt lösenord för din privata nyckel matchar inte längre ditt inloggningslösenord.", "Set your old private key password to your current log-in password:" : "Sätt ditt gamla privatnyckellösenord till ditt aktuella inloggningslösenord:", " If you don't remember your old password you can ask your administrator to recover your files." : "Om du inte kommer ihåg ditt gamla lösenord kan du be din administratör att återställa dina filer.", diff --git a/apps/encryption/l10n/sv.json b/apps/encryption/l10n/sv.json index f3f5c8ac142..c3a748c5d2d 100644 --- a/apps/encryption/l10n/sv.json +++ b/apps/encryption/l10n/sv.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Det nuvarande inloggningslösenordet var inte korrekt. Vänligen försök igen.", "Private key password successfully updated." : "Den privata nyckelns lösenord uppdaterades.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Du behöver migrera dina krypteringsnycklar från den gamla krypteringen (ownCloud <= 8.0) till den nya. Kör 'occ encryption:migrate' eller kontakta din administratör", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Ogiltig privat nyckel i krypteringsprogrammet. Vänligen uppdatera lösenordet till din privata nyckel under dina personliga inställningar för att återfå tillgång till dina krypterade filer.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet är aktiverat men dina nycklar är inte initierade. Vänligen logga ut och in igen", - "Encryption App is enabled and ready" : "Krypteringsappen är aktiverad och redo", "Bad Signature" : "Dålig signatur", "Missing Signature" : "Saknar signatur", "one-time password for server-side-encryption" : "engångslösenord för kryptering på serversidan", @@ -42,6 +39,7 @@ "New recovery key password" : "Nytt lösenord för återställningsnyckeln", "Repeat new recovery key password" : "Upprepa nytt lösenord för återställningsnyckeln", "Change Password" : "Byt lösenord", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet är aktiverat men dina nycklar är inte initierade. Vänligen logga ut och in igen", "Your private key password no longer matches your log-in password." : "Ditt lösenord för din privata nyckel matchar inte längre ditt inloggningslösenord.", "Set your old private key password to your current log-in password:" : "Sätt ditt gamla privatnyckellösenord till ditt aktuella inloggningslösenord:", " If you don't remember your old password you can ask your administrator to recover your files." : "Om du inte kommer ihåg ditt gamla lösenord kan du be din administratör att återställa dina filer.", diff --git a/apps/encryption/l10n/th_TH.js b/apps/encryption/l10n/th_TH.js index 29b05c1f731..e01072fde75 100644 --- a/apps/encryption/l10n/th_TH.js +++ b/apps/encryption/l10n/th_TH.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "รหัสผ่านเข้าสู่ระบบในปัจจุบันไม่ถูกต้องโปรดลองอีกครั้ง", "Private key password successfully updated." : "อัพเดทรหัส Private key เรียบร้อยแล้ว", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "คุณจำเป็นต้องย้ายรหัสการเข้ารหัสลับของคุณจากการเข้ารหัสเก่า (ownCloud ที่มีเวอร์ชันต่ำกว่าหรือเท่ากับ 8.0) ไปเวอร์ชันใหม่ โปรดเรียกใช้ 'occ encryption:migrate' หรือติดต่อผู้ดูแลระบบ", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "รหัสส่วนตัวไม่ถูกต้องสำหรับการเข้ารหัสแอพฯ กรุณาอัพเดทรหัสการเข้ารหัสผ่านส่วนตัวของคุณในการตั้งค่าส่วนบุคคลและในการกู้คืนการเข้าถึงไฟล์ที่มีการเข้ารหัสของคุณ", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "การเข้ารหัสแอพฯ ถูกเปิดใช้งานแต่รหัสของคุณยังไม่ได้เริ่มต้นใช้ โปรดออกและเข้าสู่ระบบอีกครั้ง", - "Encryption App is enabled and ready" : "เข้ารหัสแอพถูกเปิดใช้งานและพร้อมทำงาน", "Bad Signature" : "ลายเซ็นไม่ดี", "Missing Signature" : "ลายเซ็นขาดหายไป", "one-time password for server-side-encryption" : "รหัสผ่านเพียงครั้งเดียว สำหรับเข้ารหัสฝั่งเซิร์ฟเวอร์", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "รหัสการกู้คืนรหัสผ่านใหม่", "Repeat new recovery key password" : "รหัสการกู้คืนรหัสผ่านใหม่ อีกครั้ง", "Change Password" : "เปลี่ยนรหัสผ่าน", - "basic encryption module" : "โมดูลการเข้ารหัสขั้นพื้นฐาน", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "การเข้ารหัสแอพฯ ถูกเปิดใช้งานแต่รหัสของคุณยังไม่ได้เริ่มต้นใช้ โปรดออกและเข้าสู่ระบบอีกครั้ง", "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 don't remember your old password you can ask your administrator to recover your files." : "ถ้าคุณลืมรหัสผ่านเก่าของคุณ คุณสามารถขอให้ผู้ดูแลระบบกู้คืนไฟล์ของคุณ", diff --git a/apps/encryption/l10n/th_TH.json b/apps/encryption/l10n/th_TH.json index e3d4a31c0a7..74db53fb951 100644 --- a/apps/encryption/l10n/th_TH.json +++ b/apps/encryption/l10n/th_TH.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "รหัสผ่านเข้าสู่ระบบในปัจจุบันไม่ถูกต้องโปรดลองอีกครั้ง", "Private key password successfully updated." : "อัพเดทรหัส Private key เรียบร้อยแล้ว", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "คุณจำเป็นต้องย้ายรหัสการเข้ารหัสลับของคุณจากการเข้ารหัสเก่า (ownCloud ที่มีเวอร์ชันต่ำกว่าหรือเท่ากับ 8.0) ไปเวอร์ชันใหม่ โปรดเรียกใช้ 'occ encryption:migrate' หรือติดต่อผู้ดูแลระบบ", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "รหัสส่วนตัวไม่ถูกต้องสำหรับการเข้ารหัสแอพฯ กรุณาอัพเดทรหัสการเข้ารหัสผ่านส่วนตัวของคุณในการตั้งค่าส่วนบุคคลและในการกู้คืนการเข้าถึงไฟล์ที่มีการเข้ารหัสของคุณ", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "การเข้ารหัสแอพฯ ถูกเปิดใช้งานแต่รหัสของคุณยังไม่ได้เริ่มต้นใช้ โปรดออกและเข้าสู่ระบบอีกครั้ง", - "Encryption App is enabled and ready" : "เข้ารหัสแอพถูกเปิดใช้งานและพร้อมทำงาน", "Bad Signature" : "ลายเซ็นไม่ดี", "Missing Signature" : "ลายเซ็นขาดหายไป", "one-time password for server-side-encryption" : "รหัสผ่านเพียงครั้งเดียว สำหรับเข้ารหัสฝั่งเซิร์ฟเวอร์", @@ -44,7 +41,7 @@ "New recovery key password" : "รหัสการกู้คืนรหัสผ่านใหม่", "Repeat new recovery key password" : "รหัสการกู้คืนรหัสผ่านใหม่ อีกครั้ง", "Change Password" : "เปลี่ยนรหัสผ่าน", - "basic encryption module" : "โมดูลการเข้ารหัสขั้นพื้นฐาน", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "การเข้ารหัสแอพฯ ถูกเปิดใช้งานแต่รหัสของคุณยังไม่ได้เริ่มต้นใช้ โปรดออกและเข้าสู่ระบบอีกครั้ง", "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 don't remember your old password you can ask your administrator to recover your files." : "ถ้าคุณลืมรหัสผ่านเก่าของคุณ คุณสามารถขอให้ผู้ดูแลระบบกู้คืนไฟล์ของคุณ", diff --git a/apps/encryption/l10n/tr.js b/apps/encryption/l10n/tr.js index f4af68997b8..030143a120a 100644 --- a/apps/encryption/l10n/tr.js +++ b/apps/encryption/l10n/tr.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Geçerli oturum parolası doğru değil, lütfen yeniden deneyin.", "Private key password successfully updated." : "Özel anahtar parolası başarıyla güncellendi.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Eski şifreleme anahtarlarınızı eski şifrelemeden (ownCloud <= 8.0) yenisine taşımanız gerekli. Lütfen 'occ encryption:migrate' çalıştırın veya yöneticinize danışın", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Şifreleme Uygulaması için geçersiz özel anahtar. Lütfen şifreli dosyalarınıza erişimi tekrar kazanabilmek için kişisel ayarlarınızdan özel anahtar parolanızı güncelleyin.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Şifreleme Uygulaması etkin ancak anahtarlarınız başlatılmamış. Lütfen oturumu kapatıp yeniden açın", - "Encryption App is enabled and ready" : "Şifreleme Uygulaması etkin ve hazır", "Bad Signature" : "Kötü İmza", "Missing Signature" : "Eksik İmza", "one-time password for server-side-encryption" : "sunucu tarafında şifleme için tek kullanımlık parola", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "Yeni kurtarma anahtarı parolası", "Repeat new recovery key password" : "Yeni kurtarma anahtarı parolasını yineleyin", "Change Password" : "Parola Değiştir", - "basic encryption module" : "basit şifreleme modülü", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Şifreleme Uygulaması etkin ancak anahtarlarınız başlatılmamış. Lütfen oturumu kapatıp yeniden açın", "Your private key password no longer matches your log-in password." : "Özel anahtar parolanız artık oturum açma parolanız ile eşleşmiyor.", "Set your old private key password to your current log-in password:" : "Eski özel anahtar parolanızı, geçerli oturum açma parolanız olarak ayarlayın:", " If you don't remember your old password you can ask your administrator to recover your files." : "Eğer eski parolanızı hatırlamıyorsanız, yöneticinizden dosyalarınızı kurtarmasını talep edebilirsiniz.", diff --git a/apps/encryption/l10n/tr.json b/apps/encryption/l10n/tr.json index 164091f8c97..4ebb12a94b7 100644 --- a/apps/encryption/l10n/tr.json +++ b/apps/encryption/l10n/tr.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "Geçerli oturum parolası doğru değil, lütfen yeniden deneyin.", "Private key password successfully updated." : "Özel anahtar parolası başarıyla güncellendi.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Eski şifreleme anahtarlarınızı eski şifrelemeden (ownCloud <= 8.0) yenisine taşımanız gerekli. Lütfen 'occ encryption:migrate' çalıştırın veya yöneticinize danışın", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Şifreleme Uygulaması için geçersiz özel anahtar. Lütfen şifreli dosyalarınıza erişimi tekrar kazanabilmek için kişisel ayarlarınızdan özel anahtar parolanızı güncelleyin.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Şifreleme Uygulaması etkin ancak anahtarlarınız başlatılmamış. Lütfen oturumu kapatıp yeniden açın", - "Encryption App is enabled and ready" : "Şifreleme Uygulaması etkin ve hazır", "Bad Signature" : "Kötü İmza", "Missing Signature" : "Eksik İmza", "one-time password for server-side-encryption" : "sunucu tarafında şifleme için tek kullanımlık parola", @@ -44,7 +41,7 @@ "New recovery key password" : "Yeni kurtarma anahtarı parolası", "Repeat new recovery key password" : "Yeni kurtarma anahtarı parolasını yineleyin", "Change Password" : "Parola Değiştir", - "basic encryption module" : "basit şifreleme modülü", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Şifreleme Uygulaması etkin ancak anahtarlarınız başlatılmamış. Lütfen oturumu kapatıp yeniden açın", "Your private key password no longer matches your log-in password." : "Özel anahtar parolanız artık oturum açma parolanız ile eşleşmiyor.", "Set your old private key password to your current log-in password:" : "Eski özel anahtar parolanızı, geçerli oturum açma parolanız olarak ayarlayın:", " If you don't remember your old password you can ask your administrator to recover your files." : "Eğer eski parolanızı hatırlamıyorsanız, yöneticinizden dosyalarınızı kurtarmasını talep edebilirsiniz.", diff --git a/apps/encryption/l10n/uk.js b/apps/encryption/l10n/uk.js index 451386cf16e..b6023715cec 100644 --- a/apps/encryption/l10n/uk.js +++ b/apps/encryption/l10n/uk.js @@ -21,9 +21,6 @@ OC.L10N.register( "The old password was not correct, please try again." : "Старий пароль введено не вірно, спробуйте ще раз.", "The current log-in password was not correct, please try again." : "Невірний пароль входу, будь ласка, спробуйте ще раз.", "Private key password successfully updated." : "Пароль секретного ключа оновлено.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Невірний закритий ключ для доданку шифрування. Оновіть пароль до вашого закритого ключа в особистих налаштуваннях.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Доданок шифрування ввімкнено, але ваші ключі не ініціалізовано, вийдіть та зайдіть знову", - "Encryption App is enabled and ready" : "Додаток кодування дозволений і готовий", "one-time password for server-side-encryption" : "одноразовий пароль для шифрування на сервері", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не можу розшифрувати цей файл, можливо він опублікований. Будь ласка, попросіть власника опублікувати його заново.", "The share will expire on %s." : "Спільний доступ закінчиться %s.", @@ -37,7 +34,7 @@ OC.L10N.register( "New recovery key password" : "Новий пароль ключа відновлення", "Repeat new recovery key password" : "Повторіть новий пароль ключа відновлення", "Change Password" : "Змінити Пароль", - "basic encryption module" : "базовий модуль шифрування", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Доданок шифрування ввімкнено, але ваші ключі не ініціалізовано, вийдіть та зайдіть знову", "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 don't remember your old password you can ask your administrator to recover your files." : "Якщо ви не пам'ятаєте ваш старий пароль, ви можете звернутися до адміністратора щоб його відновити.", diff --git a/apps/encryption/l10n/uk.json b/apps/encryption/l10n/uk.json index daa2c8221d3..c19c3591a56 100644 --- a/apps/encryption/l10n/uk.json +++ b/apps/encryption/l10n/uk.json @@ -19,9 +19,6 @@ "The old password was not correct, please try again." : "Старий пароль введено не вірно, спробуйте ще раз.", "The current log-in password was not correct, please try again." : "Невірний пароль входу, будь ласка, спробуйте ще раз.", "Private key password successfully updated." : "Пароль секретного ключа оновлено.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Невірний закритий ключ для доданку шифрування. Оновіть пароль до вашого закритого ключа в особистих налаштуваннях.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Доданок шифрування ввімкнено, але ваші ключі не ініціалізовано, вийдіть та зайдіть знову", - "Encryption App is enabled and ready" : "Додаток кодування дозволений і готовий", "one-time password for server-side-encryption" : "одноразовий пароль для шифрування на сервері", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не можу розшифрувати цей файл, можливо він опублікований. Будь ласка, попросіть власника опублікувати його заново.", "The share will expire on %s." : "Спільний доступ закінчиться %s.", @@ -35,7 +32,7 @@ "New recovery key password" : "Новий пароль ключа відновлення", "Repeat new recovery key password" : "Повторіть новий пароль ключа відновлення", "Change Password" : "Змінити Пароль", - "basic encryption module" : "базовий модуль шифрування", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Доданок шифрування ввімкнено, але ваші ключі не ініціалізовано, вийдіть та зайдіть знову", "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 don't remember your old password you can ask your administrator to recover your files." : "Якщо ви не пам'ятаєте ваш старий пароль, ви можете звернутися до адміністратора щоб його відновити.", diff --git a/apps/encryption/l10n/zh_TW.js b/apps/encryption/l10n/zh_TW.js index 35458bb308c..70321430ab6 100644 --- a/apps/encryption/l10n/zh_TW.js +++ b/apps/encryption/l10n/zh_TW.js @@ -22,9 +22,6 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "目前登入的密碼不正確,請再試一次", "Private key password successfully updated." : "私人金鑰密碼已成功更新。", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "您需要搬移您的加密鑰匙從舊版的加密 (ownCloud <= 8.0) 到新版,請執行 'occ encryption:migrate' 或是聯絡系統管理員", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "無效的檔案加密私鑰,請在個人設定中更新您的私鑰密語以存取加密的檔案。", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "檔案加密已啓用,但是您的金鑰尚未初始化,請重新登入一次", - "Encryption App is enabled and ready" : "加密應用程式已經被啟用", "Bad Signature" : "壞的簽章", "Missing Signature" : "遺失簽章", "one-time password for server-side-encryption" : "一次性密碼用於伺服器端的加密", @@ -46,7 +43,7 @@ OC.L10N.register( "New recovery key password" : "新的還原金鑰密碼", "Repeat new recovery key password" : "再輸入新的還原金鑰密碼一次", "Change Password" : "變更密碼", - "basic encryption module" : "基本加密模組", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "檔案加密已啓用,但是您的金鑰尚未初始化,請重新登入一次", "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 don't remember your old password you can ask your administrator to recover your files." : "如果您忘記舊密碼,可以請求管理員協助取回檔案。", diff --git a/apps/encryption/l10n/zh_TW.json b/apps/encryption/l10n/zh_TW.json index fd2dcce1ee8..a3a53c29dad 100644 --- a/apps/encryption/l10n/zh_TW.json +++ b/apps/encryption/l10n/zh_TW.json @@ -20,9 +20,6 @@ "The current log-in password was not correct, please try again." : "目前登入的密碼不正確,請再試一次", "Private key password successfully updated." : "私人金鑰密碼已成功更新。", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "您需要搬移您的加密鑰匙從舊版的加密 (ownCloud <= 8.0) 到新版,請執行 'occ encryption:migrate' 或是聯絡系統管理員", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "無效的檔案加密私鑰,請在個人設定中更新您的私鑰密語以存取加密的檔案。", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "檔案加密已啓用,但是您的金鑰尚未初始化,請重新登入一次", - "Encryption App is enabled and ready" : "加密應用程式已經被啟用", "Bad Signature" : "壞的簽章", "Missing Signature" : "遺失簽章", "one-time password for server-side-encryption" : "一次性密碼用於伺服器端的加密", @@ -44,7 +41,7 @@ "New recovery key password" : "新的還原金鑰密碼", "Repeat new recovery key password" : "再輸入新的還原金鑰密碼一次", "Change Password" : "變更密碼", - "basic encryption module" : "基本加密模組", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "檔案加密已啓用,但是您的金鑰尚未初始化,請重新登入一次", "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 don't remember your old password you can ask your administrator to recover your files." : "如果您忘記舊密碼,可以請求管理員協助取回檔案。", diff --git a/apps/encryption/lib/Controller/StatusController.php b/apps/encryption/lib/Controller/StatusController.php index a508c3c6b72..6882475e972 100644 --- a/apps/encryption/lib/Controller/StatusController.php +++ b/apps/encryption/lib/Controller/StatusController.php @@ -73,18 +73,18 @@ class StatusController extends Controller { case Session::INIT_EXECUTED: $status = 'interactionNeeded'; $message = (string)$this->l->t( - 'Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files.' + 'Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files.' ); break; case Session::NOT_INITIALIZED: $status = 'interactionNeeded'; $message = (string)$this->l->t( - 'Encryption App is enabled but your keys are not initialized, please log-out and log-in again' + 'Encryption app is enabled but your keys are not initialized, please log-out and log-in again' ); break; case Session::INIT_SUCCESSFUL: $status = 'success'; - $message = (string)$this->l->t('Encryption App is enabled and ready'); + $message = (string)$this->l->t('Encryption app is enabled and ready'); } return new DataResponse( diff --git a/apps/encryption/templates/settings-admin.php b/apps/encryption/templates/settings-admin.php index 9804db045cd..5c551267ff5 100644 --- a/apps/encryption/templates/settings-admin.php +++ b/apps/encryption/templates/settings-admin.php @@ -7,7 +7,7 @@ style('encryption', 'settings-admin'); ?> <form id="ocDefaultEncryptionModule" class="sub-section"> <?php if(!$_["initStatus"]): ?> - <?php p($l->t("Encryption App is enabled but your keys are not initialized, please log-out and log-in again")); ?> + <?php p($l->t("Encryption app is enabled but your keys are not initialized, please log-out and log-in again")); ?> <?php else: ?> <p id="encryptHomeStorageSetting"> <input type="checkbox" class="checkbox" name="encrypt_home_storage" id="encryptHomeStorage" diff --git a/apps/encryption/templates/settings-personal.php b/apps/encryption/templates/settings-personal.php index aba350ea4b6..b92a9a19723 100644 --- a/apps/encryption/templates/settings-personal.php +++ b/apps/encryption/templates/settings-personal.php @@ -5,7 +5,7 @@ script('encryption', 'settings-personal'); script('core', 'multiselect'); ?> <form id="ocDefaultEncryptionModule" class="section"> - <h2><?php p($l->t('basic encryption module')); ?></h2> + <h2><?php p($l->t('Basic encryption module')); ?></h2> <?php if ($_["initialized"] === \OCA\Encryption\Session::NOT_INITIALIZED ): ?> diff --git a/apps/federatedfilesharing/appinfo/info.xml b/apps/federatedfilesharing/appinfo/info.xml index 711ee091d8f..2a80bd54da3 100644 --- a/apps/federatedfilesharing/appinfo/info.xml +++ b/apps/federatedfilesharing/appinfo/info.xml @@ -1,11 +1,11 @@ <?xml version="1.0"?> <info> <id>federatedfilesharing</id> - <name>Federated File Sharing</name> + <name>Federated file sharing</name> <description>Provide federated file sharing across servers</description> <licence>AGPL</licence> <author>Bjoern Schiessle, Roeland Jago Douma</author> - <version>1.0.0</version> + <version>1.1.0</version> <namespace>FederatedFileSharing</namespace> <category>other</category> <dependencies> diff --git a/apps/federatedfilesharing/l10n/fr.js b/apps/federatedfilesharing/l10n/fr.js index cc2dc5e9327..6847bdc823c 100644 --- a/apps/federatedfilesharing/l10n/fr.js +++ b/apps/federatedfilesharing/l10n/fr.js @@ -11,6 +11,7 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Le partage de serveur à serveur n'est pas activé sur ce serveur", "Couldn't establish a federated share." : "Impossible d'établir un partage fédéré.", "Couldn't establish a federated share, maybe the password was wrong." : "Impossible d'établir un partage fédéré, peut-être que le mot de passe est incorrect.", + "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La demande de partage fédéré est réussie, vous allez recevoir une invitation. Vérifiez vos notifications.", "The mountpoint name contains invalid characters." : "Le nom du point de montage contient des caractères invalides.", "Not allowed to create a federated share with the owner." : "Vous n'êtes pas autorisé à créer un partage fédéré avec le propriétaire.", "Invalid or untrusted SSL certificate" : "Certificat SSL invalide ou non approuvé", diff --git a/apps/federatedfilesharing/l10n/fr.json b/apps/federatedfilesharing/l10n/fr.json index 715f81e8088..6b62f31b3aa 100644 --- a/apps/federatedfilesharing/l10n/fr.json +++ b/apps/federatedfilesharing/l10n/fr.json @@ -9,6 +9,7 @@ "Server to server sharing is not enabled on this server" : "Le partage de serveur à serveur n'est pas activé sur ce serveur", "Couldn't establish a federated share." : "Impossible d'établir un partage fédéré.", "Couldn't establish a federated share, maybe the password was wrong." : "Impossible d'établir un partage fédéré, peut-être que le mot de passe est incorrect.", + "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La demande de partage fédéré est réussie, vous allez recevoir une invitation. Vérifiez vos notifications.", "The mountpoint name contains invalid characters." : "Le nom du point de montage contient des caractères invalides.", "Not allowed to create a federated share with the owner." : "Vous n'êtes pas autorisé à créer un partage fédéré avec le propriétaire.", "Invalid or untrusted SSL certificate" : "Certificat SSL invalide ou non approuvé", diff --git a/apps/federatedfilesharing/l10n/id.js b/apps/federatedfilesharing/l10n/id.js index 061e90fb422..d9d882c5fa9 100644 --- a/apps/federatedfilesharing/l10n/id.js +++ b/apps/federatedfilesharing/l10n/id.js @@ -1,9 +1,31 @@ OC.L10N.register( "federatedfilesharing", { + "Federated sharing" : "Pembagian terfederasi", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Apakah Anda ingin menambahkan pembagian remote {name} dari {owner}@{remote}?", + "Remote share" : "Berbagi remote", + "Remote share password" : "Sandi berbagi remote", + "Cancel" : "Batalkan", + "Add remote share" : "Tambah berbagi remote", "Invalid Federated Cloud ID" : "Federated Cloud ID tidak sah", + "Server to server sharing is not enabled on this server" : "Berbagi server ke server tidak diaktifkan pada server ini", + "Couldn't establish a federated share." : "Tidak dapat mendirikan pembagian terfederasi", + "Couldn't establish a federated share, maybe the password was wrong." : "Tidak dapat mendirikan pembagian terfederasi, mungkin sandi salah.", + "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Permintaan pembagian terfederasi sukses, Anda akan mendapatkan undangan. Cek pemberitahuan Anda.", + "The mountpoint name contains invalid characters." : "Nama mount point berisi karakter yang tidak sah.", + "Not allowed to create a federated share with the owner." : "Tidak diizinkan membuat pembagian terfederasi dengan pemilik.", + "Invalid or untrusted SSL certificate" : "Sertifikat SSL tidak sah atau tidak terpercaya", + "Could not authenticate to remote share, password might be wrong" : "Tidak dapat mengautentikasi berbagi remote, kata sandi mungkin salah", + "Storage not valid" : "Penyimpanan tidak sah", + "Federated Share successfully added" : "Pembagian terfederasi sukses ditambahkan", + "Couldn't add remote share" : "Tidak dapat menambahkan berbagi remote", "Sharing %s failed, because this item is already shared with %s" : "Gagal membagkan %s, karena item ini sudah dibagikan dengan %s", + "Not allowed to create a federated share with the same user" : "Tidak diizinkan membuat pembagian terfederasi dengan pengguna yang sama", + "File is already shared with %s" : "Berkas sudah dibagikan dengan %s", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Berbagi %s gagal, tidak menemukan %s, kemungkinan saat ini server tidak dapat dijangkau.", + "Could not find share" : "Tidak dapat mencari pembagian", + "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Anda menerima \"/%3$s\" sebagai berbagi remote dari %1$s (mewakili %2$s)", + "You received \"/%3$s\" as a remote share from %1$s" : "Anda menerima \"/%3$s\" sebagai berbagi remote dari %1$s", "Accept" : "Terima", "Decline" : "Tolak", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Dibagikan pada saya melalui #Nextcloud Federated Cloud ID saya, lihat %s", diff --git a/apps/federatedfilesharing/l10n/id.json b/apps/federatedfilesharing/l10n/id.json index fcb4c7ef434..cd46275e9a2 100644 --- a/apps/federatedfilesharing/l10n/id.json +++ b/apps/federatedfilesharing/l10n/id.json @@ -1,7 +1,29 @@ { "translations": { + "Federated sharing" : "Pembagian terfederasi", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Apakah Anda ingin menambahkan pembagian remote {name} dari {owner}@{remote}?", + "Remote share" : "Berbagi remote", + "Remote share password" : "Sandi berbagi remote", + "Cancel" : "Batalkan", + "Add remote share" : "Tambah berbagi remote", "Invalid Federated Cloud ID" : "Federated Cloud ID tidak sah", + "Server to server sharing is not enabled on this server" : "Berbagi server ke server tidak diaktifkan pada server ini", + "Couldn't establish a federated share." : "Tidak dapat mendirikan pembagian terfederasi", + "Couldn't establish a federated share, maybe the password was wrong." : "Tidak dapat mendirikan pembagian terfederasi, mungkin sandi salah.", + "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Permintaan pembagian terfederasi sukses, Anda akan mendapatkan undangan. Cek pemberitahuan Anda.", + "The mountpoint name contains invalid characters." : "Nama mount point berisi karakter yang tidak sah.", + "Not allowed to create a federated share with the owner." : "Tidak diizinkan membuat pembagian terfederasi dengan pemilik.", + "Invalid or untrusted SSL certificate" : "Sertifikat SSL tidak sah atau tidak terpercaya", + "Could not authenticate to remote share, password might be wrong" : "Tidak dapat mengautentikasi berbagi remote, kata sandi mungkin salah", + "Storage not valid" : "Penyimpanan tidak sah", + "Federated Share successfully added" : "Pembagian terfederasi sukses ditambahkan", + "Couldn't add remote share" : "Tidak dapat menambahkan berbagi remote", "Sharing %s failed, because this item is already shared with %s" : "Gagal membagkan %s, karena item ini sudah dibagikan dengan %s", + "Not allowed to create a federated share with the same user" : "Tidak diizinkan membuat pembagian terfederasi dengan pengguna yang sama", + "File is already shared with %s" : "Berkas sudah dibagikan dengan %s", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Berbagi %s gagal, tidak menemukan %s, kemungkinan saat ini server tidak dapat dijangkau.", + "Could not find share" : "Tidak dapat mencari pembagian", + "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Anda menerima \"/%3$s\" sebagai berbagi remote dari %1$s (mewakili %2$s)", + "You received \"/%3$s\" as a remote share from %1$s" : "Anda menerima \"/%3$s\" sebagai berbagi remote dari %1$s", "Accept" : "Terima", "Decline" : "Tolak", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Dibagikan pada saya melalui #Nextcloud Federated Cloud ID saya, lihat %s", diff --git a/apps/federatedfilesharing/l10n/ru.js b/apps/federatedfilesharing/l10n/ru.js index 504865bef9b..a0ab14e1e71 100644 --- a/apps/federatedfilesharing/l10n/ru.js +++ b/apps/federatedfilesharing/l10n/ru.js @@ -2,11 +2,28 @@ OC.L10N.register( "federatedfilesharing", { "Federated sharing" : "Общий доступ из объединенного общего хранилища", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Вы хотите добавить удалённую общую папку {name} из {owner}@{remote}?", + "Remote share" : "Удаленный общий ресурс", + "Remote share password" : "Пароль для удаленного общего ресурса", + "Cancel" : "Отмена", + "Add remote share" : "Добавить удалённый общий ресурс", "Invalid Federated Cloud ID" : "Неверный ID в объединении облачных хранилищ.", + "Server to server sharing is not enabled on this server" : "На данном сервере выключено межсерверное предоставление общего доступа", + "Couldn't establish a federated share." : "Не удаётся установить распределённый общий ресурс.", + "Couldn't establish a federated share, maybe the password was wrong." : "Не удаётся установить распределённый общий ресурс, может быть пароль был не верен.", + "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Запрос на распределённый удалённый ресурс прошёл успешно, вы получите приглашение. Проверьте ваши уведомления.", + "The mountpoint name contains invalid characters." : "Имя точки монтирования содержит недопустимые символы.", + "Not allowed to create a federated share with the owner." : "Не допускается создание распределённого общего ресурса с собственником.", + "Invalid or untrusted SSL certificate" : "Недействительный или недоверенный сертификат SSL", + "Could not authenticate to remote share, password might be wrong" : "Не удалось произвести аутентификацию для доступа к удалённому хранилищу, возможно неправильно указан пароль", + "Storage not valid" : "Хранилище недоступно", + "Federated Share successfully added" : "Распределённый общий ресурс успешно добавлен", + "Couldn't add remote share" : "Невозможно добавить удалённый общий ресурс", "Sharing %s failed, because this item is already shared with %s" : "Не удалось поделиться %s, пользователь %s уже имеет доступ к этому элементу", "Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем же пользователем", "File is already shared with %s" : "Доступ к файлу уже предоставлен %s", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Не удалось поделиться %s, не удалось найти %s, возможно, сервер не доступен.", + "Could not find share" : "Не удалось найти общий ресурс", "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Вы получили \"/%3$s\" в качестве удалённого ресурса из %1$s (от имени %2$s)", "You received \"/%3$s\" as a remote share from %1$s" : "Вы получили \"/%3$s\" в качестве удалённого ресурса из %1$s", "Accept" : "Принять", diff --git a/apps/federatedfilesharing/l10n/ru.json b/apps/federatedfilesharing/l10n/ru.json index 7753cb2ce30..a7ba23145bb 100644 --- a/apps/federatedfilesharing/l10n/ru.json +++ b/apps/federatedfilesharing/l10n/ru.json @@ -1,10 +1,27 @@ { "translations": { "Federated sharing" : "Общий доступ из объединенного общего хранилища", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Вы хотите добавить удалённую общую папку {name} из {owner}@{remote}?", + "Remote share" : "Удаленный общий ресурс", + "Remote share password" : "Пароль для удаленного общего ресурса", + "Cancel" : "Отмена", + "Add remote share" : "Добавить удалённый общий ресурс", "Invalid Federated Cloud ID" : "Неверный ID в объединении облачных хранилищ.", + "Server to server sharing is not enabled on this server" : "На данном сервере выключено межсерверное предоставление общего доступа", + "Couldn't establish a federated share." : "Не удаётся установить распределённый общий ресурс.", + "Couldn't establish a federated share, maybe the password was wrong." : "Не удаётся установить распределённый общий ресурс, может быть пароль был не верен.", + "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Запрос на распределённый удалённый ресурс прошёл успешно, вы получите приглашение. Проверьте ваши уведомления.", + "The mountpoint name contains invalid characters." : "Имя точки монтирования содержит недопустимые символы.", + "Not allowed to create a federated share with the owner." : "Не допускается создание распределённого общего ресурса с собственником.", + "Invalid or untrusted SSL certificate" : "Недействительный или недоверенный сертификат SSL", + "Could not authenticate to remote share, password might be wrong" : "Не удалось произвести аутентификацию для доступа к удалённому хранилищу, возможно неправильно указан пароль", + "Storage not valid" : "Хранилище недоступно", + "Federated Share successfully added" : "Распределённый общий ресурс успешно добавлен", + "Couldn't add remote share" : "Невозможно добавить удалённый общий ресурс", "Sharing %s failed, because this item is already shared with %s" : "Не удалось поделиться %s, пользователь %s уже имеет доступ к этому элементу", "Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем же пользователем", "File is already shared with %s" : "Доступ к файлу уже предоставлен %s", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Не удалось поделиться %s, не удалось найти %s, возможно, сервер не доступен.", + "Could not find share" : "Не удалось найти общий ресурс", "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Вы получили \"/%3$s\" в качестве удалённого ресурса из %1$s (от имени %2$s)", "You received \"/%3$s\" as a remote share from %1$s" : "Вы получили \"/%3$s\" в качестве удалённого ресурса из %1$s", "Accept" : "Принять", diff --git a/apps/federatedfilesharing/l10n/tr.js b/apps/federatedfilesharing/l10n/tr.js index a818950e646..073b4441cbd 100644 --- a/apps/federatedfilesharing/l10n/tr.js +++ b/apps/federatedfilesharing/l10n/tr.js @@ -2,11 +2,29 @@ OC.L10N.register( "federatedfilesharing", { "Federated sharing" : "Birleşmiş paylaşım", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "{owner}@{remote} konumundan {name} uzak paylaşımını eklemek istiyor musunuz?", + "Remote share" : "Uzak paylaşım", + "Remote share password" : "Uzak paylaşım parolası", + "Cancel" : "İptal", + "Add remote share" : "Uzak paylaşım ekle", "Invalid Federated Cloud ID" : "Geçersiz Birleşmiş Bulut Kimliği", + "Server to server sharing is not enabled on this server" : "Sunucudan sunucuya paylaşım bu sunucuda etkin değil", + "Couldn't establish a federated share." : "Bir federatif paylaşım kurulamadı.", + "Couldn't establish a federated share, maybe the password was wrong." : "Bir federatif paylaşım kurulamadı, parola hatalı olabilir.", + "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Federatif Paylaşım isteği başarılı, bir davet alacaksınız. Bildirimlerinizi kontrol edin.", + "The mountpoint name contains invalid characters." : "Bağlama noktası geçersiz karakterler içeriyor.", + "Not allowed to create a federated share with the owner." : "Sahiple federatif bir paylaşım oluşturmanıza izin verilmiyor.", + "Invalid or untrusted SSL certificate" : "Geçersiz veya güvenilmez SSL sertifikası", + "Could not authenticate to remote share, password might be wrong" : "Uzak paylaşım kimliği doğrulanamadı, parola hatalı olabilir", + "Storage not valid" : "Depolama geçerli değil", + "Federated Share successfully added" : "Federatif Paylaşım başarıyla eklendi", + "Couldn't add remote share" : "Uzak paylaşım eklenemedi", "Sharing %s failed, because this item is already shared with %s" : "%s paylaşımı, %s ile zaten paylaşıldığından dolayı başarısız oldu", "Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşmiş paylaşım oluşturulamaz", "File is already shared with %s" : "Dosya zaten %s ile paylaşılmış", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s paylaşımı başarısız. %s bulunamadı veya sunucu şu anda ulaşılamıyor olabilir.", + "Could not find share" : "Paylaşım bulunamadı", + "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "%1$s kişisinden \"/%3$s\" uzak paylaşımını aldınız (%2$s aracılığıyla)", "You received \"/%3$s\" as a remote share from %1$s" : "%1$s kişisinden \"/%3$s\" uzak paylaşımını aldınız", "Accept" : "Kabul et", "Decline" : "Reddet", diff --git a/apps/federatedfilesharing/l10n/tr.json b/apps/federatedfilesharing/l10n/tr.json index c300a6049cf..f9e157f916b 100644 --- a/apps/federatedfilesharing/l10n/tr.json +++ b/apps/federatedfilesharing/l10n/tr.json @@ -1,10 +1,28 @@ { "translations": { "Federated sharing" : "Birleşmiş paylaşım", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "{owner}@{remote} konumundan {name} uzak paylaşımını eklemek istiyor musunuz?", + "Remote share" : "Uzak paylaşım", + "Remote share password" : "Uzak paylaşım parolası", + "Cancel" : "İptal", + "Add remote share" : "Uzak paylaşım ekle", "Invalid Federated Cloud ID" : "Geçersiz Birleşmiş Bulut Kimliği", + "Server to server sharing is not enabled on this server" : "Sunucudan sunucuya paylaşım bu sunucuda etkin değil", + "Couldn't establish a federated share." : "Bir federatif paylaşım kurulamadı.", + "Couldn't establish a federated share, maybe the password was wrong." : "Bir federatif paylaşım kurulamadı, parola hatalı olabilir.", + "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Federatif Paylaşım isteği başarılı, bir davet alacaksınız. Bildirimlerinizi kontrol edin.", + "The mountpoint name contains invalid characters." : "Bağlama noktası geçersiz karakterler içeriyor.", + "Not allowed to create a federated share with the owner." : "Sahiple federatif bir paylaşım oluşturmanıza izin verilmiyor.", + "Invalid or untrusted SSL certificate" : "Geçersiz veya güvenilmez SSL sertifikası", + "Could not authenticate to remote share, password might be wrong" : "Uzak paylaşım kimliği doğrulanamadı, parola hatalı olabilir", + "Storage not valid" : "Depolama geçerli değil", + "Federated Share successfully added" : "Federatif Paylaşım başarıyla eklendi", + "Couldn't add remote share" : "Uzak paylaşım eklenemedi", "Sharing %s failed, because this item is already shared with %s" : "%s paylaşımı, %s ile zaten paylaşıldığından dolayı başarısız oldu", "Not allowed to create a federated share with the same user" : "Aynı kullanıcı ile bir birleşmiş paylaşım oluşturulamaz", "File is already shared with %s" : "Dosya zaten %s ile paylaşılmış", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s paylaşımı başarısız. %s bulunamadı veya sunucu şu anda ulaşılamıyor olabilir.", + "Could not find share" : "Paylaşım bulunamadı", + "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "%1$s kişisinden \"/%3$s\" uzak paylaşımını aldınız (%2$s aracılığıyla)", "You received \"/%3$s\" as a remote share from %1$s" : "%1$s kişisinden \"/%3$s\" uzak paylaşımını aldınız", "Accept" : "Kabul et", "Decline" : "Reddet", diff --git a/apps/federation/appinfo/info.xml b/apps/federation/appinfo/info.xml index 55491f38b55..b8d697a4db2 100644 --- a/apps/federation/appinfo/info.xml +++ b/apps/federation/appinfo/info.xml @@ -5,7 +5,7 @@ <description>Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing.</description> <licence>AGPL</licence> <author>Bjoern Schiessle</author> - <version>1.0.0</version> + <version>1.1.0</version> <namespace>Federation</namespace> <category>other</category> <dependencies> diff --git a/apps/federation/l10n/de.js b/apps/federation/l10n/de.js index 17671706e18..f53f4ebd1bd 100644 --- a/apps/federation/l10n/de.js +++ b/apps/federation/l10n/de.js @@ -8,6 +8,8 @@ OC.L10N.register( "Federation" : "Federation", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Dir, dich mit anderen vertrauenswürdigen Servern zu verbinden um das Benutzerverzeichnis auszutauschen. Diese Funktion wird beispielsweise für die Autovervollständigung externer Benutzer genutzt und ermöglicht das Teilen von Inhalten mit ihnen (\"federated sharing\").", "Add server automatically once a federated share was created successfully" : "Einen mit ownCloud Federation verbundenen Server automatisch hinzufügen, sobald die Verbindung einmal erfolgreich erstellt wurde", - "Trusted Servers" : "Vertrauenswürdige Server" + "Trusted Servers" : "Vertrauenswürdige Server", + "+ Add Nextcloud server" : "+ Nextcloud Server hinzufügen", + "Nextcloud Server" : "Nextcloud Server" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/de.json b/apps/federation/l10n/de.json index 6601ebea5e1..3b925240fc0 100644 --- a/apps/federation/l10n/de.json +++ b/apps/federation/l10n/de.json @@ -6,6 +6,8 @@ "Federation" : "Federation", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Dir, dich mit anderen vertrauenswürdigen Servern zu verbinden um das Benutzerverzeichnis auszutauschen. Diese Funktion wird beispielsweise für die Autovervollständigung externer Benutzer genutzt und ermöglicht das Teilen von Inhalten mit ihnen (\"federated sharing\").", "Add server automatically once a federated share was created successfully" : "Einen mit ownCloud Federation verbundenen Server automatisch hinzufügen, sobald die Verbindung einmal erfolgreich erstellt wurde", - "Trusted Servers" : "Vertrauenswürdige Server" + "Trusted Servers" : "Vertrauenswürdige Server", + "+ Add Nextcloud server" : "+ Nextcloud Server hinzufügen", + "Nextcloud Server" : "Nextcloud Server" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/de_DE.js b/apps/federation/l10n/de_DE.js index aadbd731975..9d175ae2768 100644 --- a/apps/federation/l10n/de_DE.js +++ b/apps/federation/l10n/de_DE.js @@ -8,6 +8,8 @@ OC.L10N.register( "Federation" : "Federation", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Ihnen sich mit anderen vertrauenswürdigen Servern zu verbinden um das Benutzerverzeichnis auszutauschen. Diese Funktion wird beispielsweise für die Autovervollständigung externer Benutzer genutzt und ermöglicht das Teilen von Inhalten mit ihnen (\"federated sharing\").", "Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen sobale eine federated Freigabe erstellt wurde", - "Trusted Servers" : "Vertrauenswürdige Server" + "Trusted Servers" : "Vertrauenswürdige Server", + "+ Add Nextcloud server" : "+ Nextcloud Server hinzufügen", + "Nextcloud Server" : "Nextcloud Server" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/de_DE.json b/apps/federation/l10n/de_DE.json index c4da4d404f8..b18b46c70fb 100644 --- a/apps/federation/l10n/de_DE.json +++ b/apps/federation/l10n/de_DE.json @@ -6,6 +6,8 @@ "Federation" : "Federation", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation erlaubt es Ihnen sich mit anderen vertrauenswürdigen Servern zu verbinden um das Benutzerverzeichnis auszutauschen. Diese Funktion wird beispielsweise für die Autovervollständigung externer Benutzer genutzt und ermöglicht das Teilen von Inhalten mit ihnen (\"federated sharing\").", "Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen sobale eine federated Freigabe erstellt wurde", - "Trusted Servers" : "Vertrauenswürdige Server" + "Trusted Servers" : "Vertrauenswürdige Server", + "+ Add Nextcloud server" : "+ Nextcloud Server hinzufügen", + "Nextcloud Server" : "Nextcloud Server" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/id.js b/apps/federation/l10n/id.js index 91582e5c773..99c1caa7df6 100644 --- a/apps/federation/l10n/id.js +++ b/apps/federation/l10n/id.js @@ -1,10 +1,15 @@ OC.L10N.register( "federation", { - "Server added to the list of trusted ownClouds" : "Server ditambahkan ke daftar ownCloud yang dipercaya", + "Added to the list of trusted servers" : "Server telah ditambahkan pada daftar server terpercaya", "Server is already in the list of trusted servers." : "Server sudah ada pada daftar server terpercaya", - "No ownCloud server found" : "Tidak ada server ownCloud yang ditemukan", + "No server to federate found" : "Tidak ada server yang bisa difederasikan", "Could not add server" : "Tidak dapat menambahkan server", - "Federation" : "Federasi" + "Federation" : "Federasi", + "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federasi memungkinkan Anda untuk terhubung dengan server lainnya yang terpercaya untuk menukar direktori pengguna. Contohnya, ini akan digunakan untuk pengisian-otomatis untuk pengguna eksternal untuk pembagian terfederasi.", + "Add server automatically once a federated share was created successfully" : "Tambah server secara otomatis saat pembagian terfederasi dibuat", + "Trusted Servers" : "Server Terpercaya", + "+ Add Nextcloud server" : "+ Tambahkan server Nextcloud", + "Nextcloud Server" : "Server Nextcloud" }, "nplurals=1; plural=0;"); diff --git a/apps/federation/l10n/id.json b/apps/federation/l10n/id.json index 6762b50821a..466396e1901 100644 --- a/apps/federation/l10n/id.json +++ b/apps/federation/l10n/id.json @@ -1,8 +1,13 @@ { "translations": { - "Server added to the list of trusted ownClouds" : "Server ditambahkan ke daftar ownCloud yang dipercaya", + "Added to the list of trusted servers" : "Server telah ditambahkan pada daftar server terpercaya", "Server is already in the list of trusted servers." : "Server sudah ada pada daftar server terpercaya", - "No ownCloud server found" : "Tidak ada server ownCloud yang ditemukan", + "No server to federate found" : "Tidak ada server yang bisa difederasikan", "Could not add server" : "Tidak dapat menambahkan server", - "Federation" : "Federasi" + "Federation" : "Federasi", + "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federasi memungkinkan Anda untuk terhubung dengan server lainnya yang terpercaya untuk menukar direktori pengguna. Contohnya, ini akan digunakan untuk pengisian-otomatis untuk pengguna eksternal untuk pembagian terfederasi.", + "Add server automatically once a federated share was created successfully" : "Tambah server secara otomatis saat pembagian terfederasi dibuat", + "Trusted Servers" : "Server Terpercaya", + "+ Add Nextcloud server" : "+ Tambahkan server Nextcloud", + "Nextcloud Server" : "Server Nextcloud" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/federation/l10n/ru.js b/apps/federation/l10n/ru.js index 9b7d3b5beae..e585cd3c39e 100644 --- a/apps/federation/l10n/ru.js +++ b/apps/federation/l10n/ru.js @@ -8,6 +8,8 @@ OC.L10N.register( "Federation" : "Объединение", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Объединение серверов позволит Вам подключиться к другим доверенным серверам для обмена каталогами пользователей. Это будет использовано, например, для автоматического завершения внешних пользователей при объединенном общем доступе.", "Add server automatically once a federated share was created successfully" : "Добавить сервер автоматически, как только федеративный общий доступ будет успешно создан", - "Trusted Servers" : "Доверенные сервера" + "Trusted Servers" : "Доверенные сервера", + "+ Add Nextcloud server" : "+ Добавить Nextcloud сервер", + "Nextcloud Server" : "Nextcloud сервер" }, "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);"); diff --git a/apps/federation/l10n/ru.json b/apps/federation/l10n/ru.json index 520b9f48d48..bdc9958b44b 100644 --- a/apps/federation/l10n/ru.json +++ b/apps/federation/l10n/ru.json @@ -6,6 +6,8 @@ "Federation" : "Объединение", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Объединение серверов позволит Вам подключиться к другим доверенным серверам для обмена каталогами пользователей. Это будет использовано, например, для автоматического завершения внешних пользователей при объединенном общем доступе.", "Add server automatically once a federated share was created successfully" : "Добавить сервер автоматически, как только федеративный общий доступ будет успешно создан", - "Trusted Servers" : "Доверенные сервера" + "Trusted Servers" : "Доверенные сервера", + "+ Add Nextcloud server" : "+ Добавить Nextcloud сервер", + "Nextcloud Server" : "Nextcloud сервер" },"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);" }
\ No newline at end of file diff --git a/apps/federation/l10n/tr.js b/apps/federation/l10n/tr.js index f9fd5bcda42..93dbe723dd8 100644 --- a/apps/federation/l10n/tr.js +++ b/apps/federation/l10n/tr.js @@ -8,6 +8,8 @@ OC.L10N.register( "Federation" : "Birleşim", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Birleşim, diğer güvenilir sunucularla dosya/klasör paylaşımı yapmanıza izin verir. \nÖrneğin, harici kullanıcıların klasörleri, otomatik tamamlama için kullanılacaktır.", "Add server automatically once a federated share was created successfully" : "Birleşmiş bir paylaşım başarıyla eklenildiğinde sunucuyu otomatik olarak ekle", - "Trusted Servers" : "Güvenilir sunucular" + "Trusted Servers" : "Güvenilir sunucular", + "+ Add Nextcloud server" : "+Nextcloud sunucusu ekle", + "Nextcloud Server" : "Nextcloud Sunucusu" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/federation/l10n/tr.json b/apps/federation/l10n/tr.json index 3a283f067ec..45072b5c9ed 100644 --- a/apps/federation/l10n/tr.json +++ b/apps/federation/l10n/tr.json @@ -6,6 +6,8 @@ "Federation" : "Birleşim", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Birleşim, diğer güvenilir sunucularla dosya/klasör paylaşımı yapmanıza izin verir. \nÖrneğin, harici kullanıcıların klasörleri, otomatik tamamlama için kullanılacaktır.", "Add server automatically once a federated share was created successfully" : "Birleşmiş bir paylaşım başarıyla eklenildiğinde sunucuyu otomatik olarak ekle", - "Trusted Servers" : "Güvenilir sunucular" + "Trusted Servers" : "Güvenilir sunucular", + "+ Add Nextcloud server" : "+Nextcloud sunucusu ekle", + "Nextcloud Server" : "Nextcloud Sunucusu" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files/css/files.css b/apps/files/css/files.css index 1f8aa10bdb3..004a0b9ff50 100644 --- a/apps/files/css/files.css +++ b/apps/files/css/files.css @@ -608,13 +608,6 @@ html.ie8 .column-mtime .selectedActions { padding-right: 14px; } -#fileList .filesize { - padding-top: 0; - padding-bottom: 0; - padding-left: 60px; - padding-right: 15px; -} - #fileList .popovermenu { margin-right: 6px; } diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js index c707e1f84e6..90f3f9d1125 100644 --- a/apps/files/l10n/de_DE.js +++ b/apps/files/l10n/de_DE.js @@ -59,14 +59,14 @@ OC.L10N.register( "Could not move \"{file}\", target exists" : "\"{file}\" konnte nicht verschoben werden, Ziel existiert bereits", "Could not move \"{file}\"" : "\"{file}\" konnte nicht verschoben werden", "{newName} already exists" : "{newName} existiert bereits", - "Could not rename \"{fileName}\", it does not exist any more" : "Die Datei konnte nicht umbennant werden \"{fileName}\", da die Datei nicht mehr existiert", + "Could not rename \"{fileName}\", it does not exist any more" : "Die Datei konnte nicht umbenannt werden \"{fileName}\", da die Datei nicht mehr existiert", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Der Name „{targetName}“ wird bereits im Ordner „{dir}“ benutzt. Bitte wählen Sie einen anderen Namen.", "Could not rename \"{fileName}\"" : "Die Datei konnte nicht umbenannt werden \"{fileName}\"", "Could not create file \"{file}\"" : "Die Datei konnte nicht erstellt werden \"{file}\"", "Could not create file \"{file}\" because it already exists" : "Die Datei konnte nicht erstellt werden \"{file}\", da diese bereits existiert", "Could not create folder \"{dir}\"" : "Der Ordner konnte nicht erstellt werden \"{dir}\"", "Could not create folder \"{dir}\" because it already exists" : "Der Ordner konnte nicht erstellt werden \"{dir}\", da dieser bereits existiert", - "Error deleting file \"{fileName}\"." : "Fehler beim löschen der Datei \"{fileName}\".", + "Error deleting file \"{fileName}\"." : "Fehler beim Löschen der Datei \"{fileName}\".", "No entries in this folder match '{filter}'" : "Keine Einträge in diesem Ordner stimmen mit '{filter}' überein", "Name" : "Name", "Size" : "Größe", @@ -97,7 +97,7 @@ OC.L10N.register( "An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Tags aufgetreten", "A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>", "A file or folder has been <strong>changed</strong>" : "Eine Datei oder ein Ordner wurde <strong>geändert</strong>", - "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Benachrichtigungen über Neues und Änderungen auf Ihre <strong>favorisierten Dateien</strong> beschränken <em>(nur im Stream)</em>", + "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Benachrichtigungen über Neues und Änderungen zu Ihren <strong>favorisierten Dateien</strong> beschränken <em>(nur im Stream)</em>", "A file or folder has been <strong>deleted</strong>" : "Eine Datei oder ein Ordner wurde <strong>gelöscht</strong>", "A file or folder has been <strong>restored</strong>" : "Eine Datei oder ein Ordner wurde <strong>wiederhergestellt</strong>", "You created %1$s" : "Sie haben %1$s erstellt", @@ -110,19 +110,19 @@ OC.L10N.register( "You restored %1$s" : "Sie haben %1$s wiederhergestellt", "%2$s restored %1$s" : "%2$s wiederhergestellt %1$s", "Changed by %2$s" : "Geändert von %2$s", - "Deleted by %2$s" : "Gelöscht durch %2$s", - "Restored by %2$s" : "Wiederhergestellt durch %2$s", + "Deleted by %2$s" : "Gelöscht von %2$s", + "Restored by %2$s" : "Wiederhergestellt von %2$s", "Upload (max. %s)" : "Hochladen (max. %s)", "File handling" : "Dateibehandlung", "Maximum upload size" : "Maximale Upload-Größe", "max. possible: " : "maximal möglich:", "Save" : "Speichern", - "With PHP-FPM it might take 5 minutes for changes to be applied." : "Bei PHP-FPM kann es 5 Minuten dauern, bis Änderungen angewendet sind.", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "Mit PHP-FPM kann es 5 Minuten dauern, bis Änderungen angewendet sind.", "Missing permissions to edit from here." : "Fehlende Berechtigungen um von hier aus zu bearbeiten.", "Settings" : "Einstellungen", "Show hidden files" : "Versteckte Dateien anzeigen", "WebDAV" : "WebDAV", - "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Benutzen Sie diese Adresse, um <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">über WebDAV auf Ihre Dateien zuzugreifen</a>", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Benutzen Sie diese Adresse, um <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">via WebDAV auf Ihre Dateien zuzugreifen</a>", "No files in here" : "Keine Dateien vorhanden", "Upload some content or sync with your devices!" : "Laden Sie Inhalte hoch oder synchronisieren Sie mit Ihren Geräten!", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json index 8fcd141ac8d..58652381a2a 100644 --- a/apps/files/l10n/de_DE.json +++ b/apps/files/l10n/de_DE.json @@ -57,14 +57,14 @@ "Could not move \"{file}\", target exists" : "\"{file}\" konnte nicht verschoben werden, Ziel existiert bereits", "Could not move \"{file}\"" : "\"{file}\" konnte nicht verschoben werden", "{newName} already exists" : "{newName} existiert bereits", - "Could not rename \"{fileName}\", it does not exist any more" : "Die Datei konnte nicht umbennant werden \"{fileName}\", da die Datei nicht mehr existiert", + "Could not rename \"{fileName}\", it does not exist any more" : "Die Datei konnte nicht umbenannt werden \"{fileName}\", da die Datei nicht mehr existiert", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Der Name „{targetName}“ wird bereits im Ordner „{dir}“ benutzt. Bitte wählen Sie einen anderen Namen.", "Could not rename \"{fileName}\"" : "Die Datei konnte nicht umbenannt werden \"{fileName}\"", "Could not create file \"{file}\"" : "Die Datei konnte nicht erstellt werden \"{file}\"", "Could not create file \"{file}\" because it already exists" : "Die Datei konnte nicht erstellt werden \"{file}\", da diese bereits existiert", "Could not create folder \"{dir}\"" : "Der Ordner konnte nicht erstellt werden \"{dir}\"", "Could not create folder \"{dir}\" because it already exists" : "Der Ordner konnte nicht erstellt werden \"{dir}\", da dieser bereits existiert", - "Error deleting file \"{fileName}\"." : "Fehler beim löschen der Datei \"{fileName}\".", + "Error deleting file \"{fileName}\"." : "Fehler beim Löschen der Datei \"{fileName}\".", "No entries in this folder match '{filter}'" : "Keine Einträge in diesem Ordner stimmen mit '{filter}' überein", "Name" : "Name", "Size" : "Größe", @@ -95,7 +95,7 @@ "An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Tags aufgetreten", "A new file or folder has been <strong>created</strong>" : "Eine neue Datei oder ein neuer Ordner wurde <strong>erstellt</strong>", "A file or folder has been <strong>changed</strong>" : "Eine Datei oder ein Ordner wurde <strong>geändert</strong>", - "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Benachrichtigungen über Neues und Änderungen auf Ihre <strong>favorisierten Dateien</strong> beschränken <em>(nur im Stream)</em>", + "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Benachrichtigungen über Neues und Änderungen zu Ihren <strong>favorisierten Dateien</strong> beschränken <em>(nur im Stream)</em>", "A file or folder has been <strong>deleted</strong>" : "Eine Datei oder ein Ordner wurde <strong>gelöscht</strong>", "A file or folder has been <strong>restored</strong>" : "Eine Datei oder ein Ordner wurde <strong>wiederhergestellt</strong>", "You created %1$s" : "Sie haben %1$s erstellt", @@ -108,19 +108,19 @@ "You restored %1$s" : "Sie haben %1$s wiederhergestellt", "%2$s restored %1$s" : "%2$s wiederhergestellt %1$s", "Changed by %2$s" : "Geändert von %2$s", - "Deleted by %2$s" : "Gelöscht durch %2$s", - "Restored by %2$s" : "Wiederhergestellt durch %2$s", + "Deleted by %2$s" : "Gelöscht von %2$s", + "Restored by %2$s" : "Wiederhergestellt von %2$s", "Upload (max. %s)" : "Hochladen (max. %s)", "File handling" : "Dateibehandlung", "Maximum upload size" : "Maximale Upload-Größe", "max. possible: " : "maximal möglich:", "Save" : "Speichern", - "With PHP-FPM it might take 5 minutes for changes to be applied." : "Bei PHP-FPM kann es 5 Minuten dauern, bis Änderungen angewendet sind.", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "Mit PHP-FPM kann es 5 Minuten dauern, bis Änderungen angewendet sind.", "Missing permissions to edit from here." : "Fehlende Berechtigungen um von hier aus zu bearbeiten.", "Settings" : "Einstellungen", "Show hidden files" : "Versteckte Dateien anzeigen", "WebDAV" : "WebDAV", - "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Benutzen Sie diese Adresse, um <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">über WebDAV auf Ihre Dateien zuzugreifen</a>", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Benutzen Sie diese Adresse, um <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">via WebDAV auf Ihre Dateien zuzugreifen</a>", "No files in here" : "Keine Dateien vorhanden", "Upload some content or sync with your devices!" : "Laden Sie Inhalte hoch oder synchronisieren Sie mit Ihren Geräten!", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js index 7889f274a6e..6133adf35b7 100644 --- a/apps/files/l10n/el.js +++ b/apps/files/l10n/el.js @@ -21,6 +21,8 @@ OC.L10N.register( "Invalid directory." : "Μη έγκυρος φάκελος.", "Files" : "Αρχεία", "All files" : "Όλα τα αρχεία", + "Recent" : "Τελευταία", + "File could not be found" : "Δεν μπορεί να βρεθεί το αρχείο", "Home" : "Σπίτι", "Close" : "Κλείσιμο", "Favorites" : "Αγαπημένα", diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json index 1bbec743a75..002bf7ee9d3 100644 --- a/apps/files/l10n/el.json +++ b/apps/files/l10n/el.json @@ -19,6 +19,8 @@ "Invalid directory." : "Μη έγκυρος φάκελος.", "Files" : "Αρχεία", "All files" : "Όλα τα αρχεία", + "Recent" : "Τελευταία", + "File could not be found" : "Δεν μπορεί να βρεθεί το αρχείο", "Home" : "Σπίτι", "Close" : "Κλείσιμο", "Favorites" : "Αγαπημένα", diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js index 8298218481c..d2fd386dc1c 100644 --- a/apps/files/l10n/es.js +++ b/apps/files/l10n/es.js @@ -21,6 +21,7 @@ OC.L10N.register( "Invalid directory." : "Directorio inválido.", "Files" : "Archivos", "All files" : "Todos los archivos", + "Recent" : "Reciente", "File could not be found" : "El archivo no se ha encontrado", "Home" : "Particular", "Close" : "Cerrar", diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json index d6b1e78079e..fec818805a9 100644 --- a/apps/files/l10n/es.json +++ b/apps/files/l10n/es.json @@ -19,6 +19,7 @@ "Invalid directory." : "Directorio inválido.", "Files" : "Archivos", "All files" : "Todos los archivos", + "Recent" : "Reciente", "File could not be found" : "El archivo no se ha encontrado", "Home" : "Particular", "Close" : "Cerrar", diff --git a/apps/files/l10n/id.js b/apps/files/l10n/id.js index a036c546c07..368367bc51e 100644 --- a/apps/files/l10n/id.js +++ b/apps/files/l10n/id.js @@ -21,6 +21,8 @@ OC.L10N.register( "Invalid directory." : "Direktori tidak valid.", "Files" : "Berkas", "All files" : "Semua berkas", + "Recent" : "Terbaru", + "File could not be found" : "Berkas tidak ditemukan", "Home" : "Rumah", "Close" : "Tutup", "Favorites" : "Favorit", @@ -28,8 +30,19 @@ OC.L10N.register( "Unable to upload {filename} as it is a directory or has 0 bytes" : "Tidak dapat mengunggah {filename} karena ini sebuah direktori atau memiliki ukuran 0 byte", "Total file size {size1} exceeds upload limit {size2}" : "Jumlah ukuran berkas {size1} melampaui batas unggah {size2}", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Ruang bebas tidak mencukupi, Anda mengunggah {size1} tetapi hanya {size2} yang tersisa", + "Error uploading file \"{fileName}\": {message}" : "Kesalahan saat mengunggah \"{filename}\": {message}", "Could not get result from server." : "Tidak mendapatkan hasil dari server.", "Uploading..." : "Mengunggah...", + "..." : "...", + "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Masih {hours}:{minutes}:{seconds} lagi", + "{hours}:{minutes}h" : "{hours}:{minutes}j", + "{minutes}:{seconds} minute{plural_s} left" : "Masih {minutes}:{seconds} lagi", + "{minutes}:{seconds}m" : "{minutes}:{seconds}m", + "{seconds} second{plural_s} left" : "Masih {seconds} detik lagi", + "{seconds}s" : "{seconds}d", + "Any moment now..." : "Sedikit lagi...", + "Soon..." : "Segera...", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} dari {totalSize} ({bitrate})", "File upload is in progress. Leaving the page now will cancel the upload." : "Berkas sedang diunggah. Meninggalkan halaman ini akan membatalkan proses.", "Actions" : "Tindakan", "Download" : "Unduh", @@ -43,6 +56,17 @@ OC.L10N.register( "Unable to determine date" : "Tidak dapat menentukan tanggal", "This operation is forbidden" : "Operasi ini dilarang", "This directory is unavailable, please check the logs or contact the administrator" : "Direktori ini tidak tersedia, silakan periksa log atau hubungi kontak", + "Could not move \"{file}\", target exists" : "Tidak dapat memindahkan \"{file}\", sudah ada", + "Could not move \"{file}\"" : "Tidak dapat memindahkan \"{file}\"", + "{newName} already exists" : "{newName} sudah ada", + "Could not rename \"{fileName}\", it does not exist any more" : "Tidak dapat mengganti \"{fileName}\", tidak ada lagi", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Nama \"{targetName}\" sudah digunakan di folder \"{dir}\". Gunakan nama yang lain.", + "Could not rename \"{fileName}\"" : "Tidak dapat mengganti \"{fileName}\"", + "Could not create file \"{file}\"" : "Tidak dapat membuat berkas \"{file}\"", + "Could not create file \"{file}\" because it already exists" : "Tidak dapat membuat berkas \"{file}\" karena sudah ada", + "Could not create folder \"{dir}\"" : "Tidak dapat membuat folder \"{dir}\"", + "Could not create folder \"{dir}\" because it already exists" : "Tidak dapat membuat folder \"{dir}\" karena sudah ada", + "Error deleting file \"{fileName}\"." : "Terjadi kesalahan saat menghapus berkas \"{fileName}\".", "No entries in this folder match '{filter}'" : "Tidak ada entri di folder ini yang cocok dengan '{filter}'", "Name" : "Nama", "Size" : "Ukuran", @@ -60,10 +84,12 @@ OC.L10N.register( "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Penyimpanan {owner} hampir penuh ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Ruang penyimpanan hampir penuh ({usedSpacePercent}%)", "_matches '{filter}'_::_match '{filter}'_" : ["cocok dengan '{filter}'"], + "View in folder" : "Lihat dalam folder", "Path" : "Jalur", "_%n byte_::_%n bytes_" : ["%n byte"], "Favorited" : "Difavoritkan", "Favorite" : "Favorit", + "Local link" : "Pranala lokal", "Folder" : "Folder", "New folder" : "Map baru", "{newname} already exists" : "{newname} sudah ada", @@ -91,8 +117,12 @@ OC.L10N.register( "Maximum upload size" : "Ukuran pengunggahan maksimum", "max. possible: " : "Kemungkinan maks.:", "Save" : "Simpan", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "Dengan PHP-FPM, pengubahan dapat memakan waktu 5 menit.", + "Missing permissions to edit from here." : "Tidak ada izin untuk mengubah dari sini.", "Settings" : "Pengaturan", + "Show hidden files" : "Lihat berkas tersembunyi", "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Gunakan alamat ini untuk <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">mengakses berkas Anda melalui WebDAV</a>", "No files in here" : "Tidak ada berkas disini", "Upload some content or sync with your devices!" : "Unggah beberapa konten dan sinkronisasikan dengan perangkat Anda!", "No entries found in this folder" : "Tidak ada entri yang ditemukan dalam folder ini", diff --git a/apps/files/l10n/id.json b/apps/files/l10n/id.json index 8a0c3e825cb..6639be657e7 100644 --- a/apps/files/l10n/id.json +++ b/apps/files/l10n/id.json @@ -19,6 +19,8 @@ "Invalid directory." : "Direktori tidak valid.", "Files" : "Berkas", "All files" : "Semua berkas", + "Recent" : "Terbaru", + "File could not be found" : "Berkas tidak ditemukan", "Home" : "Rumah", "Close" : "Tutup", "Favorites" : "Favorit", @@ -26,8 +28,19 @@ "Unable to upload {filename} as it is a directory or has 0 bytes" : "Tidak dapat mengunggah {filename} karena ini sebuah direktori atau memiliki ukuran 0 byte", "Total file size {size1} exceeds upload limit {size2}" : "Jumlah ukuran berkas {size1} melampaui batas unggah {size2}", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Ruang bebas tidak mencukupi, Anda mengunggah {size1} tetapi hanya {size2} yang tersisa", + "Error uploading file \"{fileName}\": {message}" : "Kesalahan saat mengunggah \"{filename}\": {message}", "Could not get result from server." : "Tidak mendapatkan hasil dari server.", "Uploading..." : "Mengunggah...", + "..." : "...", + "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Masih {hours}:{minutes}:{seconds} lagi", + "{hours}:{minutes}h" : "{hours}:{minutes}j", + "{minutes}:{seconds} minute{plural_s} left" : "Masih {minutes}:{seconds} lagi", + "{minutes}:{seconds}m" : "{minutes}:{seconds}m", + "{seconds} second{plural_s} left" : "Masih {seconds} detik lagi", + "{seconds}s" : "{seconds}d", + "Any moment now..." : "Sedikit lagi...", + "Soon..." : "Segera...", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} dari {totalSize} ({bitrate})", "File upload is in progress. Leaving the page now will cancel the upload." : "Berkas sedang diunggah. Meninggalkan halaman ini akan membatalkan proses.", "Actions" : "Tindakan", "Download" : "Unduh", @@ -41,6 +54,17 @@ "Unable to determine date" : "Tidak dapat menentukan tanggal", "This operation is forbidden" : "Operasi ini dilarang", "This directory is unavailable, please check the logs or contact the administrator" : "Direktori ini tidak tersedia, silakan periksa log atau hubungi kontak", + "Could not move \"{file}\", target exists" : "Tidak dapat memindahkan \"{file}\", sudah ada", + "Could not move \"{file}\"" : "Tidak dapat memindahkan \"{file}\"", + "{newName} already exists" : "{newName} sudah ada", + "Could not rename \"{fileName}\", it does not exist any more" : "Tidak dapat mengganti \"{fileName}\", tidak ada lagi", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Nama \"{targetName}\" sudah digunakan di folder \"{dir}\". Gunakan nama yang lain.", + "Could not rename \"{fileName}\"" : "Tidak dapat mengganti \"{fileName}\"", + "Could not create file \"{file}\"" : "Tidak dapat membuat berkas \"{file}\"", + "Could not create file \"{file}\" because it already exists" : "Tidak dapat membuat berkas \"{file}\" karena sudah ada", + "Could not create folder \"{dir}\"" : "Tidak dapat membuat folder \"{dir}\"", + "Could not create folder \"{dir}\" because it already exists" : "Tidak dapat membuat folder \"{dir}\" karena sudah ada", + "Error deleting file \"{fileName}\"." : "Terjadi kesalahan saat menghapus berkas \"{fileName}\".", "No entries in this folder match '{filter}'" : "Tidak ada entri di folder ini yang cocok dengan '{filter}'", "Name" : "Nama", "Size" : "Ukuran", @@ -58,10 +82,12 @@ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Penyimpanan {owner} hampir penuh ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Ruang penyimpanan hampir penuh ({usedSpacePercent}%)", "_matches '{filter}'_::_match '{filter}'_" : ["cocok dengan '{filter}'"], + "View in folder" : "Lihat dalam folder", "Path" : "Jalur", "_%n byte_::_%n bytes_" : ["%n byte"], "Favorited" : "Difavoritkan", "Favorite" : "Favorit", + "Local link" : "Pranala lokal", "Folder" : "Folder", "New folder" : "Map baru", "{newname} already exists" : "{newname} sudah ada", @@ -89,8 +115,12 @@ "Maximum upload size" : "Ukuran pengunggahan maksimum", "max. possible: " : "Kemungkinan maks.:", "Save" : "Simpan", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "Dengan PHP-FPM, pengubahan dapat memakan waktu 5 menit.", + "Missing permissions to edit from here." : "Tidak ada izin untuk mengubah dari sini.", "Settings" : "Pengaturan", + "Show hidden files" : "Lihat berkas tersembunyi", "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Gunakan alamat ini untuk <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">mengakses berkas Anda melalui WebDAV</a>", "No files in here" : "Tidak ada berkas disini", "Upload some content or sync with your devices!" : "Unggah beberapa konten dan sinkronisasikan dengan perangkat Anda!", "No entries found in this folder" : "Tidak ada entri yang ditemukan dalam folder ini", diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js index ab1ad524f5e..13cee46110b 100644 --- a/apps/files/l10n/pt_BR.js +++ b/apps/files/l10n/pt_BR.js @@ -21,6 +21,7 @@ OC.L10N.register( "Invalid directory." : "Diretório inválido.", "Files" : "Arquivos", "All files" : "Todos os arquivos", + "Recent" : "Recente", "File could not be found" : "O arquivo não foi encontrado", "Home" : "Home", "Close" : "Fechar", diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json index 14994bdd2fb..6d50bc793a1 100644 --- a/apps/files/l10n/pt_BR.json +++ b/apps/files/l10n/pt_BR.json @@ -19,6 +19,7 @@ "Invalid directory." : "Diretório inválido.", "Files" : "Arquivos", "All files" : "Todos os arquivos", + "Recent" : "Recente", "File could not be found" : "O arquivo não foi encontrado", "Home" : "Home", "Close" : "Fechar", diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js index 178aff17bbe..bbeaa1ebe51 100644 --- a/apps/files/l10n/ru.js +++ b/apps/files/l10n/ru.js @@ -21,6 +21,7 @@ OC.L10N.register( "Invalid directory." : "Неверный каталог.", "Files" : "Файлы", "All files" : "Все файлы", + "Recent" : "Недавний", "File could not be found" : "Файл не может быть найден", "Home" : "Главная", "Close" : "Закрыть", diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json index d0e4617928d..bd4e555203e 100644 --- a/apps/files/l10n/ru.json +++ b/apps/files/l10n/ru.json @@ -19,6 +19,7 @@ "Invalid directory." : "Неверный каталог.", "Files" : "Файлы", "All files" : "Все файлы", + "Recent" : "Недавний", "File could not be found" : "Файл не может быть найден", "Home" : "Главная", "Close" : "Закрыть", diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js index 3ce89c9b5a6..0e36dc0a164 100644 --- a/apps/files/l10n/tr.js +++ b/apps/files/l10n/tr.js @@ -21,6 +21,7 @@ OC.L10N.register( "Invalid directory." : "Geçersiz dizin.", "Files" : "Dosyalar", "All files" : "Tüm dosyalar", + "Recent" : "Son", "File could not be found" : "Dosya bulunamadı", "Home" : "Ev", "Close" : "Kapat", @@ -39,7 +40,9 @@ OC.L10N.register( "{minutes}:{seconds}m" : "{minutes}:{seconds} dk", "{seconds} second{plural_s} left" : "{seconds} saniye kaldı", "{seconds}s" : "{seconds} saniye", + "Any moment now..." : "Hemen şimdi...", "Soon..." : "Yakında...", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})", "File upload is in progress. Leaving the page now will cancel the upload." : "Dosya yükleme işlemi sürüyor. Şu anda sayfadan ayrılmak yükleme işlemini iptal edecek.", "Actions" : "Eylemler", "Download" : "İndir", @@ -81,6 +84,7 @@ OC.L10N.register( "Storage of {owner} is almost full ({usedSpacePercent}%)" : " {owner} depolama alanı neredeyse dolu ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Depolama alanınız neredeyse dolu (%{usedSpacePercent})", "_matches '{filter}'_::_match '{filter}'_" : ["'{filter}' ile eşleşiyor","'{filter}' ile eşleşiyor"], + "View in folder" : "Klasörde göster", "Path" : "Yol", "_%n byte_::_%n bytes_" : ["%n bayt","%n bayt"], "Favorited" : "Sık kullanılanlara eklendi", diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json index 4a005cfa525..feda086b524 100644 --- a/apps/files/l10n/tr.json +++ b/apps/files/l10n/tr.json @@ -19,6 +19,7 @@ "Invalid directory." : "Geçersiz dizin.", "Files" : "Dosyalar", "All files" : "Tüm dosyalar", + "Recent" : "Son", "File could not be found" : "Dosya bulunamadı", "Home" : "Ev", "Close" : "Kapat", @@ -37,7 +38,9 @@ "{minutes}:{seconds}m" : "{minutes}:{seconds} dk", "{seconds} second{plural_s} left" : "{seconds} saniye kaldı", "{seconds}s" : "{seconds} saniye", + "Any moment now..." : "Hemen şimdi...", "Soon..." : "Yakında...", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})", "File upload is in progress. Leaving the page now will cancel the upload." : "Dosya yükleme işlemi sürüyor. Şu anda sayfadan ayrılmak yükleme işlemini iptal edecek.", "Actions" : "Eylemler", "Download" : "İndir", @@ -79,6 +82,7 @@ "Storage of {owner} is almost full ({usedSpacePercent}%)" : " {owner} depolama alanı neredeyse dolu ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Depolama alanınız neredeyse dolu (%{usedSpacePercent})", "_matches '{filter}'_::_match '{filter}'_" : ["'{filter}' ile eşleşiyor","'{filter}' ile eşleşiyor"], + "View in folder" : "Klasörde göster", "Path" : "Yol", "_%n byte_::_%n bytes_" : ["%n bayt","%n bayt"], "Favorited" : "Sık kullanılanlara eklendi", diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js index 97fa9804a22..651ba6eef1e 100644 --- a/apps/files/tests/js/filelistSpec.js +++ b/apps/files/tests/js/filelistSpec.js @@ -2063,6 +2063,7 @@ describe('OCA.Files.FileList tests', function() { expect(fileList._detailsView.getFileInfo()).toEqual(null); }); it('closes sidebar whenever the currently highlighted file was removed from the list', function() { + jQuery.fx.off = true; var $tr = fileList.findFileEl('One.txt'); $tr.find('td.filename>a.name').click(); expect($tr.hasClass('highlighted')).toEqual(true); @@ -2072,6 +2073,7 @@ describe('OCA.Files.FileList tests', function() { expect($('#app-sidebar').hasClass('disappear')).toEqual(false); fileList.remove('One.txt'); expect($('#app-sidebar').hasClass('disappear')).toEqual(true); + jQuery.fx.off = false; }); it('returns the currently selected model instance when calling getModelForFile', function() { var $tr = fileList.findFileEl('One.txt'); @@ -2088,12 +2090,14 @@ describe('OCA.Files.FileList tests', function() { expect(model3).toEqual(model1); }); it('closes the sidebar when switching folders', function() { + jQuery.fx.off = true; var $tr = fileList.findFileEl('One.txt'); $tr.find('td.filename>a.name').click(); expect($('#app-sidebar').hasClass('disappear')).toEqual(false); fileList.changeDirectory('/another'); expect($('#app-sidebar').hasClass('disappear')).toEqual(true); + jQuery.fx.off = false; }); }); describe('File actions', function() { diff --git a/apps/files_external/appinfo/info.xml b/apps/files_external/appinfo/info.xml index e8bf11498ae..43f06d60843 100644 --- a/apps/files_external/appinfo/info.xml +++ b/apps/files_external/appinfo/info.xml @@ -13,7 +13,7 @@ <admin>admin-external-storage</admin> </documentation> <rememberlogin>false</rememberlogin> - <version>1.0.0</version> + <version>1.1.0</version> <types> <filesystem/> </types> diff --git a/apps/files_external/l10n/de.js b/apps/files_external/l10n/de.js index fe270757b02..615cde01d3f 100644 --- a/apps/files_external/l10n/de.js +++ b/apps/files_external/l10n/de.js @@ -12,7 +12,7 @@ OC.L10N.register( "Personal" : "Persönlich", "System" : "System", "Grant access" : "Zugriff gestatten", - "Error configuring OAuth1" : "Fehler beim konfigurieren von OAuth1", + "Error configuring OAuth1" : "Fehler beim Konfigurieren von OAuth1", "Error configuring OAuth2" : "Fehler beim Einrichten von OAuth2", "Generate keys" : "Schlüssel erzeugen", "Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares", @@ -23,7 +23,7 @@ OC.L10N.register( "Saved" : "Gespeichert", "Saving..." : "Speichern…", "Save" : "Speichern", - "Empty response from the server" : "leere Antowrt vom Server", + "Empty response from the server" : "leere Antwort vom Server", "Couldn't access. Please logout and login to activate this mount point" : "Anmeldung nicht möglich. Bitte abmelden und erneut anmelden, damit von diesem Endpunkt zugegriffen werden kann.", "Couldn't get the information from the ownCloud server: {code} {type}" : "Es konnten keine Informationen aus dem ownCloud -Server gelesen werden: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Die Liste der externen Endpunkte konnte nicht empfangen werden: {type}", diff --git a/apps/files_external/l10n/de.json b/apps/files_external/l10n/de.json index 761a2e39cea..19ae5d01301 100644 --- a/apps/files_external/l10n/de.json +++ b/apps/files_external/l10n/de.json @@ -10,7 +10,7 @@ "Personal" : "Persönlich", "System" : "System", "Grant access" : "Zugriff gestatten", - "Error configuring OAuth1" : "Fehler beim konfigurieren von OAuth1", + "Error configuring OAuth1" : "Fehler beim Konfigurieren von OAuth1", "Error configuring OAuth2" : "Fehler beim Einrichten von OAuth2", "Generate keys" : "Schlüssel erzeugen", "Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares", @@ -21,7 +21,7 @@ "Saved" : "Gespeichert", "Saving..." : "Speichern…", "Save" : "Speichern", - "Empty response from the server" : "leere Antowrt vom Server", + "Empty response from the server" : "leere Antwort vom Server", "Couldn't access. Please logout and login to activate this mount point" : "Anmeldung nicht möglich. Bitte abmelden und erneut anmelden, damit von diesem Endpunkt zugegriffen werden kann.", "Couldn't get the information from the ownCloud server: {code} {type}" : "Es konnten keine Informationen aus dem ownCloud -Server gelesen werden: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Die Liste der externen Endpunkte konnte nicht empfangen werden: {type}", diff --git a/apps/files_external/l10n/el.js b/apps/files_external/l10n/el.js index 412cd459a9a..8687f7a8299 100644 --- a/apps/files_external/l10n/el.js +++ b/apps/files_external/l10n/el.js @@ -7,6 +7,8 @@ OC.L10N.register( "Step 1 failed. Exception: %s" : "Το βήμα 1 απέτυχε. Εξαίρεση: %s", "Step 2 failed. Exception: %s" : "Το βήμα 2 απέτυχε. Εξαίρεση: %s", "External storage" : "Εξωτερική αποθήκευση", + "Dropbox App Configuration" : "Ρυθμίσεις εφαρμογής Dropbox", + "Google Drive App Configuration" : "Ρυθμίσεις εφαρμογής Google Drive", "Personal" : "Προσωπικά", "System" : "Σύστημα", "Grant access" : "Παροχή πρόσβασης", @@ -17,9 +19,11 @@ OC.L10N.register( "All users. Type to select user or group." : "Όλοι οι χρήστες. Πληκτρολογήστε για να επιλέξετε χρήστη ή ομάδα.", "(group)" : "(ομάδα)", "Saved" : "Αποθηκεύτηκαν", + "Saving..." : "Γίνεται αποθήκευση...", "Save" : "Αποθήκευση", "There was an error with message: " : "Υπήρξε σφάλμα στο μήνυμα:", "External mount error" : "Σφάλμα εξωτερικής προσάρτησης", + "external-storage" : "εξωτερική-αποθήκευση", "Username" : "Όνομα χρήστη", "Password" : "Κωδικός πρόσβασης", "Credentials saved" : "Τα διαπιστευτήρια αποθηκεύτηκαν", diff --git a/apps/files_external/l10n/el.json b/apps/files_external/l10n/el.json index 2a4785e3211..70373471999 100644 --- a/apps/files_external/l10n/el.json +++ b/apps/files_external/l10n/el.json @@ -5,6 +5,8 @@ "Step 1 failed. Exception: %s" : "Το βήμα 1 απέτυχε. Εξαίρεση: %s", "Step 2 failed. Exception: %s" : "Το βήμα 2 απέτυχε. Εξαίρεση: %s", "External storage" : "Εξωτερική αποθήκευση", + "Dropbox App Configuration" : "Ρυθμίσεις εφαρμογής Dropbox", + "Google Drive App Configuration" : "Ρυθμίσεις εφαρμογής Google Drive", "Personal" : "Προσωπικά", "System" : "Σύστημα", "Grant access" : "Παροχή πρόσβασης", @@ -15,9 +17,11 @@ "All users. Type to select user or group." : "Όλοι οι χρήστες. Πληκτρολογήστε για να επιλέξετε χρήστη ή ομάδα.", "(group)" : "(ομάδα)", "Saved" : "Αποθηκεύτηκαν", + "Saving..." : "Γίνεται αποθήκευση...", "Save" : "Αποθήκευση", "There was an error with message: " : "Υπήρξε σφάλμα στο μήνυμα:", "External mount error" : "Σφάλμα εξωτερικής προσάρτησης", + "external-storage" : "εξωτερική-αποθήκευση", "Username" : "Όνομα χρήστη", "Password" : "Κωδικός πρόσβασης", "Credentials saved" : "Τα διαπιστευτήρια αποθηκεύτηκαν", diff --git a/apps/files_external/l10n/id.js b/apps/files_external/l10n/id.js index cf81575a51a..053d4dfe6a0 100644 --- a/apps/files_external/l10n/id.js +++ b/apps/files_external/l10n/id.js @@ -7,6 +7,8 @@ OC.L10N.register( "Step 1 failed. Exception: %s" : "Langkah 1 gagal. Kecuali: %s", "Step 2 failed. Exception: %s" : "Langkah 2 gagal. Kecuali: %s", "External storage" : "Penyimpanan eksternal", + "Dropbox App Configuration" : "Konfigurasi Aplikasi Dropbox", + "Google Drive App Configuration" : "Konfigurasi Aplikasi Google Drive", "Personal" : "Pribadi", "System" : "Sistem", "Grant access" : "Berikan hak akses", @@ -16,10 +18,26 @@ OC.L10N.register( "Error generating key pair" : "Kesalahan saat menghasilkan pasangan kunci", "All users. Type to select user or group." : "Semua pengguna. Ketik untuk memilih pengguna atau grup.", "(group)" : "(grup)", + "Compatibility with Mac NFD encoding (slow)" : "Kecocokan dengan pengkodean Mac NFD (lambat)", + "Admin defined" : "Terdefinisi Admin", "Saved" : "Disimpan", + "Saving..." : "Menyimpan...", "Save" : "Simpan", + "Empty response from the server" : "Tidak ada respon dari server", + "Couldn't access. Please logout and login to activate this mount point" : "Tidak dapat mengakses. Log keluar dan log masuk untuk mengaktifkan mount point ini", + "Couldn't get the information from the ownCloud server: {code} {type}" : "Tidak bisa mendapatkan informasi dari server ownCloud: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "Tidak bisa mendapatkan informasi dari mount point eksternal: {type}", + "There was an error with message: " : "Terjadi kesalahan dengan pesan:", + "External mount error" : "Kesalahan mount eksternal", + "external-storage" : "penyimpanan-eksternal", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Tidak bisa mendapatkan daftar jaringan drive mount point Windows: Tidak ada respon dari server", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Beberapa mount point eksternal tidak terhubung. Klik barisan merah untuk informasi selanjutnya", + "Please enter the credentials for the {mount} mount" : "Masukkan kredensial untuk mount {mount}", "Username" : "Nama Pengguna", "Password" : "Sandi", + "Credentials saved" : "Kredensial tersimpan", + "Credentials saving failed" : "Penyimpanan kredensial gagal", + "Credentials required" : "Kredensial dibutuhkan", "Storage with id \"%i\" not found" : "Penyimpanan dengan id \"%i\" tidak ditemukan", "Invalid backend or authentication mechanism class" : "Beckend atau kelas mekanisme otentikasi salah.", "Invalid mount point" : "Mount point salah", @@ -29,6 +47,9 @@ OC.L10N.register( "Not permitted to use authentication mechanism \"%s\"" : "Tidak diizinkan menggunakan mekanisme otentikasi \"%s\"", "Unsatisfied backend parameters" : "Parameter backend tidak lengkap", "Unsatisfied authentication mechanism parameters" : "Parameter mekanisme otentikasi tidak lengkap", + "Insufficient data: %s" : "Data tidak cukup: %s", + "%s" : "%s", + "Storage with id \"%i\" is not user editable" : "Penyimpanan dengan id \"%i\" tidak bisa diubah pengguna", "Access key" : "Kunci akses", "Secret key" : "Kunci rahasia", "Builtin" : "Internal", @@ -44,7 +65,11 @@ OC.L10N.register( "Identity endpoint URL" : "Identitas URL akhir", "Rackspace" : "Rackspace", "API key" : "Kunci API", + "Global Credentials" : "Kredensial Global", + "Log-in credentials, save in database" : "Kredensial masuk, simpan di basis data", "Username and password" : "Nama pengguna dan sandi", + "Log-in credentials, save in session" : "Kredensial masuk, simpan dalam sesi", + "User entered, store in database" : "Dimasukkan pengguna, masukkan dalam basis data", "RSA public key" : "Kunci publik RSA", "Public key" : "Kunci Public", "Amazon S3" : "Amazon S3", @@ -88,6 +113,7 @@ OC.L10N.register( "Scope" : "Skop", "Enable encryption" : "Aktifkan enkripsi", "Enable previews" : "Aktifkan pratinjau", + "Enable sharing" : "Aktifkan pembagian", "Check for changes" : "Periksa perubahan", "Never" : "Jangan pernah", "Once every direct access" : "Setiap kali akses langsung", @@ -99,6 +125,7 @@ OC.L10N.register( "Add storage" : "Tambahkan penyimpanan", "Advanced settings" : "Pengaturan Lanjutan", "Delete" : "Hapus", + "Allow users to mount external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal", "Allow users to mount the following external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal berikut" }, "nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/id.json b/apps/files_external/l10n/id.json index d4c96b1ce4b..4cbb4187cc1 100644 --- a/apps/files_external/l10n/id.json +++ b/apps/files_external/l10n/id.json @@ -5,6 +5,8 @@ "Step 1 failed. Exception: %s" : "Langkah 1 gagal. Kecuali: %s", "Step 2 failed. Exception: %s" : "Langkah 2 gagal. Kecuali: %s", "External storage" : "Penyimpanan eksternal", + "Dropbox App Configuration" : "Konfigurasi Aplikasi Dropbox", + "Google Drive App Configuration" : "Konfigurasi Aplikasi Google Drive", "Personal" : "Pribadi", "System" : "Sistem", "Grant access" : "Berikan hak akses", @@ -14,10 +16,26 @@ "Error generating key pair" : "Kesalahan saat menghasilkan pasangan kunci", "All users. Type to select user or group." : "Semua pengguna. Ketik untuk memilih pengguna atau grup.", "(group)" : "(grup)", + "Compatibility with Mac NFD encoding (slow)" : "Kecocokan dengan pengkodean Mac NFD (lambat)", + "Admin defined" : "Terdefinisi Admin", "Saved" : "Disimpan", + "Saving..." : "Menyimpan...", "Save" : "Simpan", + "Empty response from the server" : "Tidak ada respon dari server", + "Couldn't access. Please logout and login to activate this mount point" : "Tidak dapat mengakses. Log keluar dan log masuk untuk mengaktifkan mount point ini", + "Couldn't get the information from the ownCloud server: {code} {type}" : "Tidak bisa mendapatkan informasi dari server ownCloud: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "Tidak bisa mendapatkan informasi dari mount point eksternal: {type}", + "There was an error with message: " : "Terjadi kesalahan dengan pesan:", + "External mount error" : "Kesalahan mount eksternal", + "external-storage" : "penyimpanan-eksternal", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Tidak bisa mendapatkan daftar jaringan drive mount point Windows: Tidak ada respon dari server", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Beberapa mount point eksternal tidak terhubung. Klik barisan merah untuk informasi selanjutnya", + "Please enter the credentials for the {mount} mount" : "Masukkan kredensial untuk mount {mount}", "Username" : "Nama Pengguna", "Password" : "Sandi", + "Credentials saved" : "Kredensial tersimpan", + "Credentials saving failed" : "Penyimpanan kredensial gagal", + "Credentials required" : "Kredensial dibutuhkan", "Storage with id \"%i\" not found" : "Penyimpanan dengan id \"%i\" tidak ditemukan", "Invalid backend or authentication mechanism class" : "Beckend atau kelas mekanisme otentikasi salah.", "Invalid mount point" : "Mount point salah", @@ -27,6 +45,9 @@ "Not permitted to use authentication mechanism \"%s\"" : "Tidak diizinkan menggunakan mekanisme otentikasi \"%s\"", "Unsatisfied backend parameters" : "Parameter backend tidak lengkap", "Unsatisfied authentication mechanism parameters" : "Parameter mekanisme otentikasi tidak lengkap", + "Insufficient data: %s" : "Data tidak cukup: %s", + "%s" : "%s", + "Storage with id \"%i\" is not user editable" : "Penyimpanan dengan id \"%i\" tidak bisa diubah pengguna", "Access key" : "Kunci akses", "Secret key" : "Kunci rahasia", "Builtin" : "Internal", @@ -42,7 +63,11 @@ "Identity endpoint URL" : "Identitas URL akhir", "Rackspace" : "Rackspace", "API key" : "Kunci API", + "Global Credentials" : "Kredensial Global", + "Log-in credentials, save in database" : "Kredensial masuk, simpan di basis data", "Username and password" : "Nama pengguna dan sandi", + "Log-in credentials, save in session" : "Kredensial masuk, simpan dalam sesi", + "User entered, store in database" : "Dimasukkan pengguna, masukkan dalam basis data", "RSA public key" : "Kunci publik RSA", "Public key" : "Kunci Public", "Amazon S3" : "Amazon S3", @@ -86,6 +111,7 @@ "Scope" : "Skop", "Enable encryption" : "Aktifkan enkripsi", "Enable previews" : "Aktifkan pratinjau", + "Enable sharing" : "Aktifkan pembagian", "Check for changes" : "Periksa perubahan", "Never" : "Jangan pernah", "Once every direct access" : "Setiap kali akses langsung", @@ -97,6 +123,7 @@ "Add storage" : "Tambahkan penyimpanan", "Advanced settings" : "Pengaturan Lanjutan", "Delete" : "Hapus", + "Allow users to mount external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal", "Allow users to mount the following external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal berikut" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js index a87fb8371c4..a4cb1b6c04f 100644 --- a/apps/files_external/l10n/ru.js +++ b/apps/files_external/l10n/ru.js @@ -66,8 +66,10 @@ OC.L10N.register( "Rackspace" : "Rackspace", "API key" : "Ключ API", "Global Credentials" : "Глобальные Учетные данные", + "Log-in credentials, save in database" : "Учетные данные, хранить в базе данных", "Username and password" : "Имя пользователя и пароль", "Log-in credentials, save in session" : "Учетные данные, хранить в сессии", + "User entered, store in database" : "Пользователь авторизован, сохранить в базе данных", "RSA public key" : "Открытый ключ RSA", "Public key" : "Открытый ключ", "Amazon S3" : "Amazon S3", diff --git a/apps/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json index 931e4ea5f98..f4d1edb1f5a 100644 --- a/apps/files_external/l10n/ru.json +++ b/apps/files_external/l10n/ru.json @@ -64,8 +64,10 @@ "Rackspace" : "Rackspace", "API key" : "Ключ API", "Global Credentials" : "Глобальные Учетные данные", + "Log-in credentials, save in database" : "Учетные данные, хранить в базе данных", "Username and password" : "Имя пользователя и пароль", "Log-in credentials, save in session" : "Учетные данные, хранить в сессии", + "User entered, store in database" : "Пользователь авторизован, сохранить в базе данных", "RSA public key" : "Открытый ключ RSA", "Public key" : "Открытый ключ", "Amazon S3" : "Amazon S3", diff --git a/apps/files_external/l10n/tr.js b/apps/files_external/l10n/tr.js index 4bd6b784bda..95d8c3923cd 100644 --- a/apps/files_external/l10n/tr.js +++ b/apps/files_external/l10n/tr.js @@ -7,6 +7,8 @@ OC.L10N.register( "Step 1 failed. Exception: %s" : "Adım 1 başarısız. Özel durum: %s", "Step 2 failed. Exception: %s" : "Adım 2 başarısız. Özel durum: %s", "External storage" : "Harici depolama", + "Dropbox App Configuration" : "Dropbox Uygulama Yapılandırması", + "Google Drive App Configuration" : "Google Drive Uygulama Yapılandırması", "Personal" : "Kişisel", "System" : "Sistem", "Grant access" : "Erişimi sağla", @@ -16,8 +18,10 @@ OC.L10N.register( "Error generating key pair" : "Anahtar çifti üretirken hata", "All users. Type to select user or group." : "Tüm kullanıcılar. Kullanıcı veya grup seçmek için yazın.", "(group)" : "(grup)", + "Compatibility with Mac NFD encoding (slow)" : "Mac NFD şifrelemesiyle uyumlu (yavaş)", "Admin defined" : "Yönetici tanımlandı", "Saved" : "Kaydedildi", + "Saving..." : "Kaydediliyor...", "Save" : "Kaydet", "Empty response from the server" : "Sunucudan boş yanıt", "Couldn't access. Please logout and login to activate this mount point" : "Erişilemedi. Lütfen bu bağlama noktasını etkinleştirmek için tekrar oturumu kapatıp açın.", @@ -61,8 +65,11 @@ OC.L10N.register( "Identity endpoint URL" : "Kimlik uç nokta URL'si", "Rackspace" : "Rackspace", "API key" : "API anahtarı", + "Global Credentials" : "Genel Kimlik Bilgileri", + "Log-in credentials, save in database" : "Oturum kimlik bilgileri, veritabanında kaydet", "Username and password" : "Kullanıcı adı ve parola", "Log-in credentials, save in session" : "Oturum kimlik bilgileri, oturumda kaydet", + "User entered, store in database" : "Kullanıcı giriş yaptı, veritabanında sakla", "RSA public key" : "RSA ortak anahtarı", "Public key" : "Ortak anahtar", "Amazon S3" : "Amazon S3", diff --git a/apps/files_external/l10n/tr.json b/apps/files_external/l10n/tr.json index 55fb3df86f2..61796043b4b 100644 --- a/apps/files_external/l10n/tr.json +++ b/apps/files_external/l10n/tr.json @@ -5,6 +5,8 @@ "Step 1 failed. Exception: %s" : "Adım 1 başarısız. Özel durum: %s", "Step 2 failed. Exception: %s" : "Adım 2 başarısız. Özel durum: %s", "External storage" : "Harici depolama", + "Dropbox App Configuration" : "Dropbox Uygulama Yapılandırması", + "Google Drive App Configuration" : "Google Drive Uygulama Yapılandırması", "Personal" : "Kişisel", "System" : "Sistem", "Grant access" : "Erişimi sağla", @@ -14,8 +16,10 @@ "Error generating key pair" : "Anahtar çifti üretirken hata", "All users. Type to select user or group." : "Tüm kullanıcılar. Kullanıcı veya grup seçmek için yazın.", "(group)" : "(grup)", + "Compatibility with Mac NFD encoding (slow)" : "Mac NFD şifrelemesiyle uyumlu (yavaş)", "Admin defined" : "Yönetici tanımlandı", "Saved" : "Kaydedildi", + "Saving..." : "Kaydediliyor...", "Save" : "Kaydet", "Empty response from the server" : "Sunucudan boş yanıt", "Couldn't access. Please logout and login to activate this mount point" : "Erişilemedi. Lütfen bu bağlama noktasını etkinleştirmek için tekrar oturumu kapatıp açın.", @@ -59,8 +63,11 @@ "Identity endpoint URL" : "Kimlik uç nokta URL'si", "Rackspace" : "Rackspace", "API key" : "API anahtarı", + "Global Credentials" : "Genel Kimlik Bilgileri", + "Log-in credentials, save in database" : "Oturum kimlik bilgileri, veritabanında kaydet", "Username and password" : "Kullanıcı adı ve parola", "Log-in credentials, save in session" : "Oturum kimlik bilgileri, oturumda kaydet", + "User entered, store in database" : "Kullanıcı giriş yaptı, veritabanında sakla", "RSA public key" : "RSA ortak anahtarı", "Public key" : "Ortak anahtar", "Amazon S3" : "Amazon S3", diff --git a/apps/files_external/lib/Lib/Storage/SMB.php b/apps/files_external/lib/Lib/Storage/SMB.php index 50ea186060a..28445dd2f61 100644 --- a/apps/files_external/lib/Lib/Storage/SMB.php +++ b/apps/files_external/lib/Lib/Storage/SMB.php @@ -397,6 +397,19 @@ class SMB extends Common implements INotifyStorage { public function isUpdatable($path) { try { $info = $this->getFileInfo($path); + // following windows behaviour for read-only folders: they can be written into + // (https://support.microsoft.com/en-us/kb/326549 - "cause" section) + return !$info->isHidden() && (!$info->isReadOnly() || $this->is_dir($path)); + } catch (NotFoundException $e) { + return false; + } catch (ForbiddenException $e) { + return false; + } + } + + public function isDeletable($path) { + try { + $info = $this->getFileInfo($path); return !$info->isHidden() && !$info->isReadOnly(); } catch (NotFoundException $e) { return false; diff --git a/apps/files_sharing/appinfo/app.php b/apps/files_sharing/appinfo/app.php index 2df7f099838..11c4614d6c5 100644 --- a/apps/files_sharing/appinfo/app.php +++ b/apps/files_sharing/appinfo/app.php @@ -28,14 +28,12 @@ $l = \OC::$server->getL10N('files_sharing'); -\OC::$CLASSPATH['OC_Share_Backend_File'] = 'files_sharing/lib/share/file.php'; -\OC::$CLASSPATH['OC_Share_Backend_Folder'] = 'files_sharing/lib/share/folder.php'; \OC::$CLASSPATH['OC\Files\Storage\Shared'] = 'files_sharing/lib/sharedstorage.php'; \OCA\Files_Sharing\Helper::registerHooks(); -\OCP\Share::registerBackend('file', 'OC_Share_Backend_File'); -\OCP\Share::registerBackend('folder', 'OC_Share_Backend_Folder', 'file'); +\OCP\Share::registerBackend('file', 'OCA\Files_Sharing\ShareBackend\File'); +\OCP\Share::registerBackend('folder', 'OCA\Files_Sharing\ShareBackend\Folder', 'file'); $application = new \OCA\Files_Sharing\AppInfo\Application(); $application->registerMountProviders(); diff --git a/apps/files_sharing/appinfo/info.xml b/apps/files_sharing/appinfo/info.xml index 240b5e61933..133119feabd 100644 --- a/apps/files_sharing/appinfo/info.xml +++ b/apps/files_sharing/appinfo/info.xml @@ -1,7 +1,7 @@ <?xml version="1.0"?> <info> <id>files_sharing</id> - <name>Share Files</name> + <name>File sharing</name> <description> This application enables users to share files within ownCloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within ownCloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of ownCloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices. Turning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the ownCloud Documentation. @@ -10,7 +10,7 @@ Turning the feature off removes shared files and folders on the server for all s <licence>AGPL</licence> <author>Michael Gapczynski, Bjoern Schiessle</author> <default_enable/> - <version>1.0.0</version> + <version>1.1.0</version> <types> <filesystem/> </types> diff --git a/apps/files_sharing/appinfo/routes.php b/apps/files_sharing/appinfo/routes.php index 92c2759ed14..ee7ea55d506 100644 --- a/apps/files_sharing/appinfo/routes.php +++ b/apps/files_sharing/appinfo/routes.php @@ -40,6 +40,36 @@ $application->registerRoutes($this, [ 'verb' => 'GET' ], ], + 'ocs' => [ + /* + * OCS Share API + */ + [ + 'name' => 'ShareAPI#getShares', + 'url' => '/api/v1/shares', + 'verb' => 'GET', + ], + [ + 'name' => 'ShareAPI#createShare', + 'url' => '/api/v1/shares', + 'verb' => 'POST', + ], + [ + 'name' => 'ShareAPI#getShare', + 'url' => '/api/v1/shares/{id}', + 'verb' => 'GET', + ], + [ + 'name' => 'ShareAPI#updateShare', + 'url' => '/api/v1/shares/{id}', + 'verb' => 'PUT', + ], + [ + 'name' => 'ShareAPI#deleteShare', + 'url' => '/api/v1/shares/{id}', + 'verb' => 'DELETE', + ], + ], ]); /** @var $this \OCP\Route\IRouter */ @@ -59,33 +89,6 @@ $this->create('sharing_external_shareinfo', '/shareinfo') //TODO: SET: mail notification, waiting for PR #4689 to be accepted -$OCSShare = new \OCA\Files_Sharing\API\OCSShareWrapper(); - -API::register('get', - '/apps/files_sharing/api/v1/shares', - [$OCSShare, 'getAllShares'], - 'files_sharing'); - -API::register('post', - '/apps/files_sharing/api/v1/shares', - [$OCSShare, 'createShare'], - 'files_sharing'); - -API::register('get', - '/apps/files_sharing/api/v1/shares/{id}', - [$OCSShare, 'getShare'], - 'files_sharing'); - -API::register('put', - '/apps/files_sharing/api/v1/shares/{id}', - [$OCSShare, 'updateShare'], - 'files_sharing'); - -API::register('delete', - '/apps/files_sharing/api/v1/shares/{id}', - [$OCSShare, 'deleteShare'], - 'files_sharing'); - API::register('get', '/apps/files_sharing/api/v1/remote_shares', array('\OCA\Files_Sharing\API\Remote', 'getShares'), diff --git a/apps/files_sharing/l10n/cs_CZ.js b/apps/files_sharing/l10n/cs_CZ.js index 8d997e23182..569fb884159 100644 --- a/apps/files_sharing/l10n/cs_CZ.js +++ b/apps/files_sharing/l10n/cs_CZ.js @@ -17,7 +17,6 @@ OC.L10N.register( "No expiration date set" : "Není nastaveno datum vypršení platnosti", "Shared by" : "Sdílí", "Sharing" : "Sdílení", - "Share API is disabled" : "Sdílení API je zakázané", "Wrong share ID, share doesn't exist" : "Špatné ID sdílení, sdílení neexistuje", "Could not delete share" : "Nelze smazat sdílení", "Please specify a file or folder path" : "Prosím zadejte cestu adresáře nebo souboru", @@ -33,8 +32,8 @@ OC.L10N.register( "Unknown share type" : "Neznámý typ sdílení", "Not a directory" : "Žádný adresář", "Could not lock path" : "Nepodařilo se uzamknout cestu", - "Can't change permissions for public share links" : "Nelze změnit oprávnění pro veřejně sdílené odkazy", "Wrong or no update parameter given" : "Chyba nebo žádná aktualizace dle zadaných parametrů", + "Can't change permissions for public share links" : "Nelze změnit oprávnění pro veřejně sdílené odkazy", "Cannot increase permissions" : "Nelze navýšit oprávnění", "A file or folder has been <strong>shared</strong>" : "Soubor nebo adresář byl <strong>nasdílen</strong>", "A file or folder was shared from <strong>another server</strong>" : "Soubor nebo adresář byl nasdílen z <strong>jiného serveru</strong>", @@ -79,6 +78,7 @@ OC.L10N.register( "Public link of %2$s expired" : "Veřejný odkaz %2$s vypršel", "Shared by %2$s" : "%2$s sdílel(a)", "Shares" : "Sdílení", + "Share API is disabled" : "Sdílení API je zakázané", "This share is password-protected" : "Toto sdílení je chráněno heslem", "The password is wrong. Try again." : "Heslo není správné. Zkuste to znovu.", "Password" : "Heslo", diff --git a/apps/files_sharing/l10n/cs_CZ.json b/apps/files_sharing/l10n/cs_CZ.json index cd866523c8b..152b5170c8b 100644 --- a/apps/files_sharing/l10n/cs_CZ.json +++ b/apps/files_sharing/l10n/cs_CZ.json @@ -15,7 +15,6 @@ "No expiration date set" : "Není nastaveno datum vypršení platnosti", "Shared by" : "Sdílí", "Sharing" : "Sdílení", - "Share API is disabled" : "Sdílení API je zakázané", "Wrong share ID, share doesn't exist" : "Špatné ID sdílení, sdílení neexistuje", "Could not delete share" : "Nelze smazat sdílení", "Please specify a file or folder path" : "Prosím zadejte cestu adresáře nebo souboru", @@ -31,8 +30,8 @@ "Unknown share type" : "Neznámý typ sdílení", "Not a directory" : "Žádný adresář", "Could not lock path" : "Nepodařilo se uzamknout cestu", - "Can't change permissions for public share links" : "Nelze změnit oprávnění pro veřejně sdílené odkazy", "Wrong or no update parameter given" : "Chyba nebo žádná aktualizace dle zadaných parametrů", + "Can't change permissions for public share links" : "Nelze změnit oprávnění pro veřejně sdílené odkazy", "Cannot increase permissions" : "Nelze navýšit oprávnění", "A file or folder has been <strong>shared</strong>" : "Soubor nebo adresář byl <strong>nasdílen</strong>", "A file or folder was shared from <strong>another server</strong>" : "Soubor nebo adresář byl nasdílen z <strong>jiného serveru</strong>", @@ -77,6 +76,7 @@ "Public link of %2$s expired" : "Veřejný odkaz %2$s vypršel", "Shared by %2$s" : "%2$s sdílel(a)", "Shares" : "Sdílení", + "Share API is disabled" : "Sdílení API je zakázané", "This share is password-protected" : "Toto sdílení je chráněno heslem", "The password is wrong. Try again." : "Heslo není správné. Zkuste to znovu.", "Password" : "Heslo", diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js index 40de7b1ce1f..635bd45626a 100644 --- a/apps/files_sharing/l10n/de.js +++ b/apps/files_sharing/l10n/de.js @@ -1,13 +1,13 @@ OC.L10N.register( "files_sharing", { - "Shared with you" : "Mit Dir geteilt", - "Shared with others" : "Von Dir geteilt", + "Shared with you" : "Mit dir geteilt", + "Shared with others" : "Von dir geteilt", "Shared by link" : "Geteilt über einen Link", - "Nothing shared with you yet" : "Bis jetzt wurde nichts mit Dir geteilt", - "Files and folders others share with you will show up here" : "Mit Dir geteilte Dateien und Ordner anderer werden hier erscheinen", + "Nothing shared with you yet" : "Bis jetzt wurde nichts mit dir geteilt", + "Files and folders others share with you will show up here" : "Mit dir geteilte Dateien und Ordner anderer werden hier erscheinen", "Nothing shared yet" : "Noch nichts geteilt", - "Files and folders you share will show up here" : "Von Dir geteilte Dateien und Ordner werden hier erscheinen", + "Files and folders you share will show up here" : "Von dir geteilte Dateien und Ordner werden hier erscheinen", "No shared links" : "Keine geteilten Links", "Files and folders you share by link will show up here" : "Per Link freigegebene Dateien und Ordner werden hier erscheinen", "You can upload into this folder" : "In diesen Ordner kann hochgeladen werden", @@ -17,7 +17,6 @@ OC.L10N.register( "No expiration date set" : "Kein Ablaufdatum gesetzt", "Shared by" : "Geteilt von ", "Sharing" : "Teilen", - "Share API is disabled" : "Teilen-API ist deaktivert", "Wrong share ID, share doesn't exist" : "Fehlerhafte Freigabe-ID, Freigabe existiert nicht", "Could not delete share" : "Freigabe konnte nicht gelöscht werden", "Please specify a file or folder path" : "Bitte eine Datei oder Verzeichnis definieren", @@ -33,8 +32,8 @@ OC.L10N.register( "Unknown share type" : "Unbekannter Freigabetyp", "Not a directory" : "Kein Verzeichnis", "Could not lock path" : "Pfad konnte nicht gesperrt werden", - "Can't change permissions for public share links" : "Berechtigungen für öffentlich freigegebene Links konnten nicht geändert werden", "Wrong or no update parameter given" : "Falscher oder kein Updateparameter wurde übergeben", + "Can't change permissions for public share links" : "Berechtigungen für öffentlich freigegebene Links konnten nicht geändert werden", "Cannot increase permissions" : "Berechtigungen können nicht erhöht werden", "A file or folder has been <strong>shared</strong>" : "Eine Datei oder ein Ordner wurde <strong>geteilt</strong>", "A file or folder was shared from <strong>another server</strong>" : "Eine Datei oder ein Ordner wurde von <strong>einem anderen Server</strong> geteilt", @@ -60,7 +59,7 @@ OC.L10N.register( "%2$s removed the public link for %1$s" : "%2$s hat den öffentlichen Link für %1$s entfernt", "Your public link for %1$s expired" : "Dein öffentlicher Link für %1$s ist abgelaufen", "The public link of %2$s for %1$s expired" : "Der öffentliche Link von %2$s für %1$s ist abgelaufen", - "%2$s shared %1$s with you" : "%2$s hat %1$s mit Dir geteilt", + "%2$s shared %1$s with you" : "%2$s hat %1$s mit dir geteilt", "%2$s removed the share for %1$s" : "%2$s hat die Freigabe für %1$s entfernt", "Downloaded via public link" : "Runtergeladen mittels öffentlichen Link", "Shared with %2$s" : "Geteilt mit %2$s", @@ -68,7 +67,7 @@ OC.L10N.register( "Removed share for %2$s" : "Freigabe für %2$s entfernt", "%2$s removed share for %3$s" : "%2$s hat die Freigabe für %3$s entfernt", "Shared with group %2$s" : "Geteilt mit Gruppe %2$s", - "Shared with group %3$s by %2$s" : "Freigabe für Gruppe %3$s von %2$s entfernt", + "Shared with group %3$s by %2$s" : "Von %2$s mit Gruppe %3$s geteilt", "Removed share of group %2$s" : "Freigabe für Gruppe %2$s entfernt", "%2$s removed share of group %3$s" : "%2$s hat die Freigabe für Gruppe %3$s entfernt", "Shared via link by %2$s" : "Geteilt mittels Link von %2$s", @@ -79,6 +78,7 @@ OC.L10N.register( "Public link of %2$s expired" : "Öffentlicher Link von %2$s ist abgelaufen", "Shared by %2$s" : "Geteilt von %2$s", "Shares" : "Freigaben", + "Share API is disabled" : "Teilen-API ist deaktivert", "This share is password-protected" : "Diese Freigabe ist durch ein Passwort geschützt", "The password is wrong. Try again." : "Bitte überprüfe Dein Passwort und versuche es erneut.", "Password" : "Passwort", @@ -91,8 +91,8 @@ OC.L10N.register( "the item was removed" : "Das Element wurde entfernt", "the link expired" : "Der Link ist abgelaufen", "sharing is disabled" : "Teilen ist deaktiviert", - "For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wende Dich bitte an die Person, die Dir diesen Link geschickt hat.", - "Add to your Nextcloud" : "Zu Deiner Nextcllud hinzufügen", + "For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wende dich bitte an die Person, die dir diesen Link geschickt hat.", + "Add to your Nextcloud" : "Zu deiner Nextcloud hinzufügen", "Download" : "Herunterladen", "Download %s" : "Download %s", "Direct link" : "Direkter Link", diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json index b2f595d81c7..2fcb8699059 100644 --- a/apps/files_sharing/l10n/de.json +++ b/apps/files_sharing/l10n/de.json @@ -1,11 +1,11 @@ { "translations": { - "Shared with you" : "Mit Dir geteilt", - "Shared with others" : "Von Dir geteilt", + "Shared with you" : "Mit dir geteilt", + "Shared with others" : "Von dir geteilt", "Shared by link" : "Geteilt über einen Link", - "Nothing shared with you yet" : "Bis jetzt wurde nichts mit Dir geteilt", - "Files and folders others share with you will show up here" : "Mit Dir geteilte Dateien und Ordner anderer werden hier erscheinen", + "Nothing shared with you yet" : "Bis jetzt wurde nichts mit dir geteilt", + "Files and folders others share with you will show up here" : "Mit dir geteilte Dateien und Ordner anderer werden hier erscheinen", "Nothing shared yet" : "Noch nichts geteilt", - "Files and folders you share will show up here" : "Von Dir geteilte Dateien und Ordner werden hier erscheinen", + "Files and folders you share will show up here" : "Von dir geteilte Dateien und Ordner werden hier erscheinen", "No shared links" : "Keine geteilten Links", "Files and folders you share by link will show up here" : "Per Link freigegebene Dateien und Ordner werden hier erscheinen", "You can upload into this folder" : "In diesen Ordner kann hochgeladen werden", @@ -15,7 +15,6 @@ "No expiration date set" : "Kein Ablaufdatum gesetzt", "Shared by" : "Geteilt von ", "Sharing" : "Teilen", - "Share API is disabled" : "Teilen-API ist deaktivert", "Wrong share ID, share doesn't exist" : "Fehlerhafte Freigabe-ID, Freigabe existiert nicht", "Could not delete share" : "Freigabe konnte nicht gelöscht werden", "Please specify a file or folder path" : "Bitte eine Datei oder Verzeichnis definieren", @@ -31,8 +30,8 @@ "Unknown share type" : "Unbekannter Freigabetyp", "Not a directory" : "Kein Verzeichnis", "Could not lock path" : "Pfad konnte nicht gesperrt werden", - "Can't change permissions for public share links" : "Berechtigungen für öffentlich freigegebene Links konnten nicht geändert werden", "Wrong or no update parameter given" : "Falscher oder kein Updateparameter wurde übergeben", + "Can't change permissions for public share links" : "Berechtigungen für öffentlich freigegebene Links konnten nicht geändert werden", "Cannot increase permissions" : "Berechtigungen können nicht erhöht werden", "A file or folder has been <strong>shared</strong>" : "Eine Datei oder ein Ordner wurde <strong>geteilt</strong>", "A file or folder was shared from <strong>another server</strong>" : "Eine Datei oder ein Ordner wurde von <strong>einem anderen Server</strong> geteilt", @@ -58,7 +57,7 @@ "%2$s removed the public link for %1$s" : "%2$s hat den öffentlichen Link für %1$s entfernt", "Your public link for %1$s expired" : "Dein öffentlicher Link für %1$s ist abgelaufen", "The public link of %2$s for %1$s expired" : "Der öffentliche Link von %2$s für %1$s ist abgelaufen", - "%2$s shared %1$s with you" : "%2$s hat %1$s mit Dir geteilt", + "%2$s shared %1$s with you" : "%2$s hat %1$s mit dir geteilt", "%2$s removed the share for %1$s" : "%2$s hat die Freigabe für %1$s entfernt", "Downloaded via public link" : "Runtergeladen mittels öffentlichen Link", "Shared with %2$s" : "Geteilt mit %2$s", @@ -66,7 +65,7 @@ "Removed share for %2$s" : "Freigabe für %2$s entfernt", "%2$s removed share for %3$s" : "%2$s hat die Freigabe für %3$s entfernt", "Shared with group %2$s" : "Geteilt mit Gruppe %2$s", - "Shared with group %3$s by %2$s" : "Freigabe für Gruppe %3$s von %2$s entfernt", + "Shared with group %3$s by %2$s" : "Von %2$s mit Gruppe %3$s geteilt", "Removed share of group %2$s" : "Freigabe für Gruppe %2$s entfernt", "%2$s removed share of group %3$s" : "%2$s hat die Freigabe für Gruppe %3$s entfernt", "Shared via link by %2$s" : "Geteilt mittels Link von %2$s", @@ -77,6 +76,7 @@ "Public link of %2$s expired" : "Öffentlicher Link von %2$s ist abgelaufen", "Shared by %2$s" : "Geteilt von %2$s", "Shares" : "Freigaben", + "Share API is disabled" : "Teilen-API ist deaktivert", "This share is password-protected" : "Diese Freigabe ist durch ein Passwort geschützt", "The password is wrong. Try again." : "Bitte überprüfe Dein Passwort und versuche es erneut.", "Password" : "Passwort", @@ -89,8 +89,8 @@ "the item was removed" : "Das Element wurde entfernt", "the link expired" : "Der Link ist abgelaufen", "sharing is disabled" : "Teilen ist deaktiviert", - "For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wende Dich bitte an die Person, die Dir diesen Link geschickt hat.", - "Add to your Nextcloud" : "Zu Deiner Nextcllud hinzufügen", + "For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wende dich bitte an die Person, die dir diesen Link geschickt hat.", + "Add to your Nextcloud" : "Zu deiner Nextcloud hinzufügen", "Download" : "Herunterladen", "Download %s" : "Download %s", "Direct link" : "Direkter Link", diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js index e71dbe62bac..69e6692b927 100644 --- a/apps/files_sharing/l10n/de_DE.js +++ b/apps/files_sharing/l10n/de_DE.js @@ -17,10 +17,9 @@ OC.L10N.register( "No expiration date set" : "Kein Ablaufdatum gesetzt", "Shared by" : "Geteilt von", "Sharing" : "Teilen", - "Share API is disabled" : "Teilen-API ist deaktivert", "Wrong share ID, share doesn't exist" : "Fehlerhafte Freigabe-ID, Freigabe existiert nicht", "Could not delete share" : "Freigabe konnte nicht gelöscht werden", - "Please specify a file or folder path" : "Bitte eine Datei oder Verzeichnis definieren", + "Please specify a file or folder path" : "Bitte geben Sie eine Datei oder Ordner an", "Wrong path, file/folder doesn't exist" : "Falscher Pfad, Datei/Verzeichnis existiert nicht", "Please specify a valid user" : "Bitte geben Sie einen gültigen Nutzer an", "Group sharing is disabled by the administrator" : "Die Gruppenfreigabe ist durch den Administrator deaktiviert", @@ -33,8 +32,8 @@ OC.L10N.register( "Unknown share type" : "Unbekannter Freigabetyp", "Not a directory" : "Kein Verzeichnis", "Could not lock path" : "Pfad konnte nicht gesperrt werden", - "Can't change permissions for public share links" : "Berechtigungen für öffentlich freigegebene Links konnten nicht geändert werden", "Wrong or no update parameter given" : "Falscher oder kein Updateparameter wurde übergeben", + "Can't change permissions for public share links" : "Berechtigungen für öffentlich freigegebene Links konnten nicht geändert werden", "Cannot increase permissions" : "Berechtigungen können nicht erhöht werden", "A file or folder has been <strong>shared</strong>" : "Eine Datei oder ein Ordner wurde <strong>geteilt</strong>", "A file or folder was shared from <strong>another server</strong>" : "Eine Datei oder ein Ordner wurde von <strong>einem anderen Server</strong> geteilt", @@ -57,7 +56,7 @@ OC.L10N.register( "%2$s shared %1$s via link" : "%2$s hat %1$s über einen Link geteilt", "You shared %1$s via link" : "Sie haben %1$s über einen Link geteilt", "You removed the public link for %1$s" : "Sie haben die Freigabe als Link für %1$s entfernt", - "%2$s removed the public link for %1$s" : "%2$s hat die Freigabe als Link für %1$s entfernt", + "%2$s removed the public link for %1$s" : "%2$s hat den öffentlichen Link für %1$s entfernt", "Your public link for %1$s expired" : "Ihre Freigabe als Link für %1$s ist abgelaufen", "The public link of %2$s for %1$s expired" : "Die Freigabe als Link von %2$s für %1$s ist abgelaufen", "%2$s shared %1$s with you" : "%2$s hat %1$s mit Ihnen geteilt", @@ -79,6 +78,7 @@ OC.L10N.register( "Public link of %2$s expired" : "Öffentlicher Link von %2$s ist abgelaufen", "Shared by %2$s" : "Geteilt von %2$s", "Shares" : "Geteiltes", + "Share API is disabled" : "Teilen-API ist deaktivert", "This share is password-protected" : "Diese Freigabe ist durch ein Passwort geschützt", "The password is wrong. Try again." : "Das Passwort ist falsch. Bitte versuchen Sie es erneut.", "Password" : "Passwort", @@ -95,7 +95,7 @@ OC.L10N.register( "Add to your Nextcloud" : "Zu Ihrer Nextcloud hinzufügen", "Download" : "Herunterladen", "Download %s" : "Download %s", - "Direct link" : "Direkte Verlinkung", + "Direct link" : "Direkter Link", "Upload files to %s" : "Dateien auf %s hochladen", "Select or drop files" : "Dateien auswählen oder hierher ziehen", "Uploading files…" : "Dateien werden hochgeladen...", diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json index 133ee253cdd..b568c1e5f66 100644 --- a/apps/files_sharing/l10n/de_DE.json +++ b/apps/files_sharing/l10n/de_DE.json @@ -15,10 +15,9 @@ "No expiration date set" : "Kein Ablaufdatum gesetzt", "Shared by" : "Geteilt von", "Sharing" : "Teilen", - "Share API is disabled" : "Teilen-API ist deaktivert", "Wrong share ID, share doesn't exist" : "Fehlerhafte Freigabe-ID, Freigabe existiert nicht", "Could not delete share" : "Freigabe konnte nicht gelöscht werden", - "Please specify a file or folder path" : "Bitte eine Datei oder Verzeichnis definieren", + "Please specify a file or folder path" : "Bitte geben Sie eine Datei oder Ordner an", "Wrong path, file/folder doesn't exist" : "Falscher Pfad, Datei/Verzeichnis existiert nicht", "Please specify a valid user" : "Bitte geben Sie einen gültigen Nutzer an", "Group sharing is disabled by the administrator" : "Die Gruppenfreigabe ist durch den Administrator deaktiviert", @@ -31,8 +30,8 @@ "Unknown share type" : "Unbekannter Freigabetyp", "Not a directory" : "Kein Verzeichnis", "Could not lock path" : "Pfad konnte nicht gesperrt werden", - "Can't change permissions for public share links" : "Berechtigungen für öffentlich freigegebene Links konnten nicht geändert werden", "Wrong or no update parameter given" : "Falscher oder kein Updateparameter wurde übergeben", + "Can't change permissions for public share links" : "Berechtigungen für öffentlich freigegebene Links konnten nicht geändert werden", "Cannot increase permissions" : "Berechtigungen können nicht erhöht werden", "A file or folder has been <strong>shared</strong>" : "Eine Datei oder ein Ordner wurde <strong>geteilt</strong>", "A file or folder was shared from <strong>another server</strong>" : "Eine Datei oder ein Ordner wurde von <strong>einem anderen Server</strong> geteilt", @@ -55,7 +54,7 @@ "%2$s shared %1$s via link" : "%2$s hat %1$s über einen Link geteilt", "You shared %1$s via link" : "Sie haben %1$s über einen Link geteilt", "You removed the public link for %1$s" : "Sie haben die Freigabe als Link für %1$s entfernt", - "%2$s removed the public link for %1$s" : "%2$s hat die Freigabe als Link für %1$s entfernt", + "%2$s removed the public link for %1$s" : "%2$s hat den öffentlichen Link für %1$s entfernt", "Your public link for %1$s expired" : "Ihre Freigabe als Link für %1$s ist abgelaufen", "The public link of %2$s for %1$s expired" : "Die Freigabe als Link von %2$s für %1$s ist abgelaufen", "%2$s shared %1$s with you" : "%2$s hat %1$s mit Ihnen geteilt", @@ -77,6 +76,7 @@ "Public link of %2$s expired" : "Öffentlicher Link von %2$s ist abgelaufen", "Shared by %2$s" : "Geteilt von %2$s", "Shares" : "Geteiltes", + "Share API is disabled" : "Teilen-API ist deaktivert", "This share is password-protected" : "Diese Freigabe ist durch ein Passwort geschützt", "The password is wrong. Try again." : "Das Passwort ist falsch. Bitte versuchen Sie es erneut.", "Password" : "Passwort", @@ -93,7 +93,7 @@ "Add to your Nextcloud" : "Zu Ihrer Nextcloud hinzufügen", "Download" : "Herunterladen", "Download %s" : "Download %s", - "Direct link" : "Direkte Verlinkung", + "Direct link" : "Direkter Link", "Upload files to %s" : "Dateien auf %s hochladen", "Select or drop files" : "Dateien auswählen oder hierher ziehen", "Uploading files…" : "Dateien werden hochgeladen...", diff --git a/apps/files_sharing/l10n/en_GB.js b/apps/files_sharing/l10n/en_GB.js index 6e0affe8a0b..f495a5d25f6 100644 --- a/apps/files_sharing/l10n/en_GB.js +++ b/apps/files_sharing/l10n/en_GB.js @@ -14,7 +14,6 @@ OC.L10N.register( "No expiration date set" : "No expiration date set", "Shared by" : "Shared by", "Sharing" : "Sharing", - "Share API is disabled" : "Share API is disabled", "Wrong share ID, share doesn't exist" : "Wrong share ID, share doesn't exist", "Could not delete share" : "Could not delete share", "Please specify a file or folder path" : "Please specify a file or folder path", @@ -30,8 +29,8 @@ OC.L10N.register( "Unknown share type" : "Unknown share type", "Not a directory" : "Not a directory", "Could not lock path" : "Could not lock path", - "Can't change permissions for public share links" : "Can't change permissions for public share links", "Wrong or no update parameter given" : "Wrong or no update parameter given", + "Can't change permissions for public share links" : "Can't change permissions for public share links", "Cannot increase permissions" : "Cannot increase permissions", "A file or folder has been <strong>shared</strong>" : "A file or folder has been <strong>shared</strong>", "A file or folder was shared from <strong>another server</strong>" : "A file or folder was shared from <strong>another server</strong>", @@ -76,6 +75,7 @@ OC.L10N.register( "Public link of %2$s expired" : "Public link of %2$s expired", "Shared by %2$s" : "Shared by %2$s", "Shares" : "Shares", + "Share API is disabled" : "Share API is disabled", "This share is password-protected" : "This share is password-protected", "The password is wrong. Try again." : "The password is wrong. Try again.", "Password" : "Password", diff --git a/apps/files_sharing/l10n/en_GB.json b/apps/files_sharing/l10n/en_GB.json index 10fcf09c458..b4ec32c05d7 100644 --- a/apps/files_sharing/l10n/en_GB.json +++ b/apps/files_sharing/l10n/en_GB.json @@ -12,7 +12,6 @@ "No expiration date set" : "No expiration date set", "Shared by" : "Shared by", "Sharing" : "Sharing", - "Share API is disabled" : "Share API is disabled", "Wrong share ID, share doesn't exist" : "Wrong share ID, share doesn't exist", "Could not delete share" : "Could not delete share", "Please specify a file or folder path" : "Please specify a file or folder path", @@ -28,8 +27,8 @@ "Unknown share type" : "Unknown share type", "Not a directory" : "Not a directory", "Could not lock path" : "Could not lock path", - "Can't change permissions for public share links" : "Can't change permissions for public share links", "Wrong or no update parameter given" : "Wrong or no update parameter given", + "Can't change permissions for public share links" : "Can't change permissions for public share links", "Cannot increase permissions" : "Cannot increase permissions", "A file or folder has been <strong>shared</strong>" : "A file or folder has been <strong>shared</strong>", "A file or folder was shared from <strong>another server</strong>" : "A file or folder was shared from <strong>another server</strong>", @@ -74,6 +73,7 @@ "Public link of %2$s expired" : "Public link of %2$s expired", "Shared by %2$s" : "Shared by %2$s", "Shares" : "Shares", + "Share API is disabled" : "Share API is disabled", "This share is password-protected" : "This share is password-protected", "The password is wrong. Try again." : "The password is wrong. Try again.", "Password" : "Password", diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js index 862b0b75ccb..df3816c1da9 100644 --- a/apps/files_sharing/l10n/es.js +++ b/apps/files_sharing/l10n/es.js @@ -17,7 +17,6 @@ OC.L10N.register( "No expiration date set" : "No se ha establecido fecha de caducidad", "Shared by" : "Compartido por", "Sharing" : "Compartiendo", - "Share API is disabled" : "El API de compartir está deshabilitado", "Wrong share ID, share doesn't exist" : "El ID del recurso compartido no es correcto, el recurso compartido no existe", "Could not delete share" : "No se ha podido eliminar el recurso compartido", "Please specify a file or folder path" : "Por favor, especifica la ubicación de un archivo o carpeta", @@ -33,8 +32,8 @@ OC.L10N.register( "Unknown share type" : "Tipo desconocido de recurso compartido", "Not a directory" : "No es un directorio", "Could not lock path" : "No se ha podido bloquear la ruta", - "Can't change permissions for public share links" : "No se pueden cambiar los permisos para los enlaces de recursos compartidos públicos", "Wrong or no update parameter given" : "No se ha suministrado un parametro correcto", + "Can't change permissions for public share links" : "No se pueden cambiar los permisos para los enlaces de recursos compartidos públicos", "Cannot increase permissions" : "No es posible aumentar permisos", "A file or folder has been <strong>shared</strong>" : "Se ha <strong>compartido</strong> un archivo o carpeta", "A file or folder was shared from <strong>another server</strong>" : "Se ha compartido un archivo o carpeta desde <strong>otro servidor</strong>", @@ -79,6 +78,7 @@ OC.L10N.register( "Public link of %2$s expired" : "El enlace público %2$s ha expirado", "Shared by %2$s" : "Compartido por %2$s", "Shares" : "Compartidos", + "Share API is disabled" : "El API de compartir está deshabilitado", "This share is password-protected" : "Este elemento compartido está protegido por contraseña", "The password is wrong. Try again." : "La contraseña introducida es errónea. Inténtelo de nuevo.", "Password" : "Contraseña", diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json index 643f7c6c32a..f75cd061805 100644 --- a/apps/files_sharing/l10n/es.json +++ b/apps/files_sharing/l10n/es.json @@ -15,7 +15,6 @@ "No expiration date set" : "No se ha establecido fecha de caducidad", "Shared by" : "Compartido por", "Sharing" : "Compartiendo", - "Share API is disabled" : "El API de compartir está deshabilitado", "Wrong share ID, share doesn't exist" : "El ID del recurso compartido no es correcto, el recurso compartido no existe", "Could not delete share" : "No se ha podido eliminar el recurso compartido", "Please specify a file or folder path" : "Por favor, especifica la ubicación de un archivo o carpeta", @@ -31,8 +30,8 @@ "Unknown share type" : "Tipo desconocido de recurso compartido", "Not a directory" : "No es un directorio", "Could not lock path" : "No se ha podido bloquear la ruta", - "Can't change permissions for public share links" : "No se pueden cambiar los permisos para los enlaces de recursos compartidos públicos", "Wrong or no update parameter given" : "No se ha suministrado un parametro correcto", + "Can't change permissions for public share links" : "No se pueden cambiar los permisos para los enlaces de recursos compartidos públicos", "Cannot increase permissions" : "No es posible aumentar permisos", "A file or folder has been <strong>shared</strong>" : "Se ha <strong>compartido</strong> un archivo o carpeta", "A file or folder was shared from <strong>another server</strong>" : "Se ha compartido un archivo o carpeta desde <strong>otro servidor</strong>", @@ -77,6 +76,7 @@ "Public link of %2$s expired" : "El enlace público %2$s ha expirado", "Shared by %2$s" : "Compartido por %2$s", "Shares" : "Compartidos", + "Share API is disabled" : "El API de compartir está deshabilitado", "This share is password-protected" : "Este elemento compartido está protegido por contraseña", "The password is wrong. Try again." : "La contraseña introducida es errónea. Inténtelo de nuevo.", "Password" : "Contraseña", diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js index 0177698c823..695c9b30525 100644 --- a/apps/files_sharing/l10n/fr.js +++ b/apps/files_sharing/l10n/fr.js @@ -17,7 +17,6 @@ OC.L10N.register( "No expiration date set" : "Aucune date d'expiration définie", "Shared by" : "Partagé par", "Sharing" : "Partage", - "Share API is disabled" : "l'API de partage est désactivée", "Wrong share ID, share doesn't exist" : "Mauvais ID de partage, le partage n'existe pas", "Could not delete share" : "Impossible de supprimer le partage", "Please specify a file or folder path" : "Veuillez spécifier un fichier ou dossier", @@ -33,8 +32,8 @@ OC.L10N.register( "Unknown share type" : "Type de partage inconnu", "Not a directory" : "N'est pas un répertoire", "Could not lock path" : "Impossible de verrouiller le chemin", - "Can't change permissions for public share links" : "Impossible de changer les permissions pour les liens de partage public", "Wrong or no update parameter given" : "Mauvais ou aucun paramètre donné ", + "Can't change permissions for public share links" : "Impossible de changer les permissions pour les liens de partage public", "Cannot increase permissions" : "Impossible d'augmenter les permissions", "A file or folder has been <strong>shared</strong>" : "Un fichier ou un répertoire a été <strong>partagé</strong>", "A file or folder was shared from <strong>another server</strong>" : "Un fichier ou un répertoire a été partagé depuis <strong>un autre serveur</strong>", @@ -79,6 +78,7 @@ OC.L10N.register( "Public link of %2$s expired" : "Le lien public de %2$s a expiré", "Shared by %2$s" : "Partagé par %2$s", "Shares" : "Partages", + "Share API is disabled" : "l'API de partage est désactivée", "This share is password-protected" : "Ce partage est protégé par un mot de passe", "The password is wrong. Try again." : "Le mot de passe est incorrect. Veuillez réessayer.", "Password" : "Mot de passe", diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json index cae52efe566..3a63c45100d 100644 --- a/apps/files_sharing/l10n/fr.json +++ b/apps/files_sharing/l10n/fr.json @@ -15,7 +15,6 @@ "No expiration date set" : "Aucune date d'expiration définie", "Shared by" : "Partagé par", "Sharing" : "Partage", - "Share API is disabled" : "l'API de partage est désactivée", "Wrong share ID, share doesn't exist" : "Mauvais ID de partage, le partage n'existe pas", "Could not delete share" : "Impossible de supprimer le partage", "Please specify a file or folder path" : "Veuillez spécifier un fichier ou dossier", @@ -31,8 +30,8 @@ "Unknown share type" : "Type de partage inconnu", "Not a directory" : "N'est pas un répertoire", "Could not lock path" : "Impossible de verrouiller le chemin", - "Can't change permissions for public share links" : "Impossible de changer les permissions pour les liens de partage public", "Wrong or no update parameter given" : "Mauvais ou aucun paramètre donné ", + "Can't change permissions for public share links" : "Impossible de changer les permissions pour les liens de partage public", "Cannot increase permissions" : "Impossible d'augmenter les permissions", "A file or folder has been <strong>shared</strong>" : "Un fichier ou un répertoire a été <strong>partagé</strong>", "A file or folder was shared from <strong>another server</strong>" : "Un fichier ou un répertoire a été partagé depuis <strong>un autre serveur</strong>", @@ -77,6 +76,7 @@ "Public link of %2$s expired" : "Le lien public de %2$s a expiré", "Shared by %2$s" : "Partagé par %2$s", "Shares" : "Partages", + "Share API is disabled" : "l'API de partage est désactivée", "This share is password-protected" : "Ce partage est protégé par un mot de passe", "The password is wrong. Try again." : "Le mot de passe est incorrect. Veuillez réessayer.", "Password" : "Mot de passe", diff --git a/apps/files_sharing/l10n/he.js b/apps/files_sharing/l10n/he.js index df3b066bb94..53ccb14cf9a 100644 --- a/apps/files_sharing/l10n/he.js +++ b/apps/files_sharing/l10n/he.js @@ -13,7 +13,6 @@ OC.L10N.register( "You can upload into this folder" : "ניתן להעלות לתיקייה זו", "Shared by" : "שותף על־ידי", "Sharing" : "שיתוף", - "Share API is disabled" : "שיתוף API מנוטרל", "Wrong share ID, share doesn't exist" : "מספר זיהוי שיתוף שגוי, שיתוף אינו קיים", "Could not delete share" : "לא ניתן היה למחוק את השיתוף", "Please specify a file or folder path" : "יש לספק נתיב לקובץ או תיקייה", @@ -29,8 +28,8 @@ OC.L10N.register( "Unknown share type" : "סוג שיתוף אינו מוכר", "Not a directory" : "אינה תיקייה", "Could not lock path" : "לא ניתן היה לנעול נתיב", - "Can't change permissions for public share links" : "לא ניתן לשנות הרשאות לקישורי שיתוף ציבוריים", "Wrong or no update parameter given" : "משתנה עדכון שניתן שגוי או לא קיים", + "Can't change permissions for public share links" : "לא ניתן לשנות הרשאות לקישורי שיתוף ציבוריים", "Cannot increase permissions" : "לא ניתן להעלות הרשאות", "A file or folder has been <strong>shared</strong>" : "קובץ או תיקייה <strong>שותפו<strong/>", "A file or folder was shared from <strong>another server</strong>" : "קובץ או תיקייה שותפו מ- <strong>שרת אחר</strong>", @@ -75,6 +74,7 @@ OC.L10N.register( "Public link of %2$s expired" : "קישור ציבורי של %2$s פג תוקף", "Shared by %2$s" : "שיתף/שיתפה על ידי %2$s", "Shares" : "שיתופים", + "Share API is disabled" : "שיתוף API מנוטרל", "This share is password-protected" : "שיתוף זה מוגן סיסמא", "The password is wrong. Try again." : "הסיסמא שגויה. יש לנסות שנית.", "Password" : "סיסמא", diff --git a/apps/files_sharing/l10n/he.json b/apps/files_sharing/l10n/he.json index 5cee40bc611..c0e1a860f40 100644 --- a/apps/files_sharing/l10n/he.json +++ b/apps/files_sharing/l10n/he.json @@ -11,7 +11,6 @@ "You can upload into this folder" : "ניתן להעלות לתיקייה זו", "Shared by" : "שותף על־ידי", "Sharing" : "שיתוף", - "Share API is disabled" : "שיתוף API מנוטרל", "Wrong share ID, share doesn't exist" : "מספר זיהוי שיתוף שגוי, שיתוף אינו קיים", "Could not delete share" : "לא ניתן היה למחוק את השיתוף", "Please specify a file or folder path" : "יש לספק נתיב לקובץ או תיקייה", @@ -27,8 +26,8 @@ "Unknown share type" : "סוג שיתוף אינו מוכר", "Not a directory" : "אינה תיקייה", "Could not lock path" : "לא ניתן היה לנעול נתיב", - "Can't change permissions for public share links" : "לא ניתן לשנות הרשאות לקישורי שיתוף ציבוריים", "Wrong or no update parameter given" : "משתנה עדכון שניתן שגוי או לא קיים", + "Can't change permissions for public share links" : "לא ניתן לשנות הרשאות לקישורי שיתוף ציבוריים", "Cannot increase permissions" : "לא ניתן להעלות הרשאות", "A file or folder has been <strong>shared</strong>" : "קובץ או תיקייה <strong>שותפו<strong/>", "A file or folder was shared from <strong>another server</strong>" : "קובץ או תיקייה שותפו מ- <strong>שרת אחר</strong>", @@ -73,6 +72,7 @@ "Public link of %2$s expired" : "קישור ציבורי של %2$s פג תוקף", "Shared by %2$s" : "שיתף/שיתפה על ידי %2$s", "Shares" : "שיתופים", + "Share API is disabled" : "שיתוף API מנוטרל", "This share is password-protected" : "שיתוף זה מוגן סיסמא", "The password is wrong. Try again." : "הסיסמא שגויה. יש לנסות שנית.", "Password" : "סיסמא", diff --git a/apps/files_sharing/l10n/id.js b/apps/files_sharing/l10n/id.js index 2a8271cfd69..99f58652505 100644 --- a/apps/files_sharing/l10n/id.js +++ b/apps/files_sharing/l10n/id.js @@ -1,12 +1,6 @@ OC.L10N.register( "files_sharing", { - "Server to server sharing is not enabled on this server" : "Berbagi server ke server tidak diaktifkan pada server ini", - "The mountpoint name contains invalid characters." : "Nama mount point berisi karakter yang tidak sah.", - "Invalid or untrusted SSL certificate" : "Sertifikast SSL tidak sah atau tidak terpercaya", - "Could not authenticate to remote share, password might be wrong" : "Tidak dapat mengautentikasi berbagi remote, kata sandi mungkin salah", - "Storage not valid" : "Penyimpanan tidak sah", - "Couldn't add remote share" : "Tidak dapat menambahkan berbagi remote", "Shared with you" : "Dibagikan dengan Anda", "Shared with others" : "Dibagikan dengan lainnya", "Shared by link" : "Dibagikan dengan tautan", @@ -16,16 +10,31 @@ OC.L10N.register( "Files and folders you share will show up here" : "Berkas dan folder yang Anda bagikan akan ditampilkan disini", "No shared links" : "Tidak ada tautan berbagi", "Files and folders you share by link will show up here" : "Berkas dan folder yang Anda bagikan menggunakan tautan akan ditampilkan disini", - "Do you want to add the remote share {name} from {owner}@{remote}?" : "Apakah Anda ingin menambahkan berbagi remote {name} dari {owner}@{remote}?", - "Remote share" : "Berbagi remote", - "Remote share password" : "Sandi berbagi remote", - "Cancel" : "Batal", - "Add remote share" : "Tambah berbagi remote", "You can upload into this folder" : "Anda dapat mengunggah kedalam folder ini", - "No ownCloud installation (7 or higher) found at {remote}" : "Tidak ditemukan instalasi ownCloud (7 atau lebih tinggi) pada {remote}", - "Invalid ownCloud url" : "URL ownCloud tidak sah", + "No compatible server found at {remote}" : "Tidak ditemukan server yang kompatibel pada {remote}", + "Invalid server URL" : "Server URL tidak valid", + "Failed to add the public link to your Nextcloud" : "Gagal menambah tautan publik ke Nextcloud Anda", + "No expiration date set" : "Tanggal kedaluwarsa tidak diatur", "Shared by" : "Dibagikan oleh", "Sharing" : "Berbagi", + "Wrong share ID, share doesn't exist" : "ID pembagian salah, tidak ada yang bisa dibagi", + "Could not delete share" : "Tidak dapat menghapus pembagian", + "Please specify a file or folder path" : "Tentukan berkas atau folder", + "Wrong path, file/folder doesn't exist" : "Salah path, berkas/folder tidak ada", + "Please specify a valid user" : "Tentukan pengguna yang valid", + "Group sharing is disabled by the administrator" : "Berbagi grup dinonaktifkan oleh administrator", + "Please specify a valid group" : "Tentukan grup yang valid", + "Public link sharing is disabled by the administrator" : "Pembagian tautan publik dinonaktifkan oleh administrator", + "Public upload disabled by the administrator" : "Pengunggahan publik dinonaktifkan oleh administrator", + "Public upload is only possible for publicly shared folders" : "Pengunggahan publik hanya bisa untuk folder yang dibagikan kepada publik", + "Invalid date, date format must be YYYY-MM-DD" : "Tanggal salah, format tanggal harus TTTT-BB-HH", + "Sharing %s failed because the back end does not allow shares from type %s" : "Gagal berbagi %s karena backend tidak mengizinkan berbagi dengan tipe %s", + "Unknown share type" : "Tipe berbagi tidak diketahui", + "Not a directory" : "Bukan direktori", + "Could not lock path" : "Tidak dapat mengunci path", + "Wrong or no update parameter given" : "Parameter salah atau tidak diperbarui", + "Can't change permissions for public share links" : "Tidak dapat mengubah izin untuk tautan berbagi publik", + "Cannot increase permissions" : "Tidak dapat menambah izin", "A file or folder has been <strong>shared</strong>" : "Sebuah berkas atau folder telah <strong>dibagikan</strong>", "A file or folder was shared from <strong>another server</strong>" : "Sebuah berkas atau folder telah dibagikan dari <strong>server lainnya</strong>", "A public shared file or folder was <strong>downloaded</strong>" : "Sebuah berkas atau folder berbagi publik telah <strong>diunduh</strong>", @@ -38,35 +47,58 @@ OC.L10N.register( "Public shared file %1$s was downloaded" : "Berkas berbagi publik %1$s telah diunduh", "You shared %1$s with %2$s" : "Anda membagikan %1$s dengan %2$s", "%2$s shared %1$s with %3$s" : "%2$s berbagi %1$s kepada %3$s", + "You removed the share of %2$s for %1$s" : "Anda menghapus pembagian %2$s untuk %1$s", + "%2$s removed the share of %3$s for %1$s" : "%2$s menghapus pembagian %3$s untuk %1$s", "You shared %1$s with group %2$s" : "Anda membagikan %1$s dengan grup %2$s", "%2$s shared %1$s with group %3$s" : "%2$s berbagi %1$s kepada grup %3$s", + "You removed the share of group %2$s for %1$s" : "Anda menghapus pembagian grup %2$s untuk %1$s", + "%2$s removed the share of group %3$s for %1$s" : "%2$s menghapus pembagian grup %3$s untuk %1$s", "%2$s shared %1$s via link" : "%2$s berbagi %1$s via tautan", "You shared %1$s via link" : "Anda membagikan %1$s via tautan", + "You removed the public link for %1$s" : "Anda menghapus tautan publik untuk %1$s", + "%2$s removed the public link for %1$s" : "%2$s menghapus tautan publik untuk %1$s", + "Your public link for %1$s expired" : "tautan publik Anda untuk %1$s kedaluwarsa", + "The public link of %2$s for %1$s expired" : "tautan publik %2$s untuk %1$s kedaluwarsa", "%2$s shared %1$s with you" : "%2$s membagikan %1$s dengan Anda", + "%2$s removed the share for %1$s" : "%2$s menghapus pembagian untuk %1$s", "Downloaded via public link" : "Diunduh via tautan publik", "Shared with %2$s" : "Dibagikan kepada %2$s", "Shared with %3$s by %2$s" : "Dibagikan kepada %3$s oleh %2$s", + "Removed share for %2$s" : "Menghapus pembagian untuk %2$s", + "%2$s removed share for %3$s" : "%2$s menghapus pembagian untuk %3$s", "Shared with group %2$s" : "Dibagikan kepada grup %2$s", "Shared with group %3$s by %2$s" : "Dibagikan kepada grup %3$s oleh %2$s", + "Removed share of group %2$s" : "Menghapus pembagian untuk grup %2$s", + "%2$s removed share of group %3$s" : "%2$s menghapus pembagian untuk grup %3$s", "Shared via link by %2$s" : "Dibagikan via tautan oleh %2$s", "Shared via public link" : "Dibagikan via tautan publik", + "Removed public link" : "tautan publik dihapus", + "%2$s removed public link" : "%2$s menghapus tautan publik", + "Public link expired" : "tautan publik kedaluwarsa", + "Public link of %2$s expired" : "tautan publik untuk %2$s kedaluwarsa", "Shared by %2$s" : "Dibagikan oleh %2$s", "Shares" : "Dibagikan", + "Share API is disabled" : "API pembagian dinonaktifkan", "This share is password-protected" : "Berbagi ini dilindungi sandi", "The password is wrong. Try again." : "Sandi salah. Coba lagi", "Password" : "Sandi", "No entries found in this folder" : "Tidak ada entri yang ditemukan dalam folder ini", "Name" : "Nama", "Share time" : "Waktu berbagi", + "Expiration date" : "Tanggal kedaluwarsa", "Sorry, this link doesn’t seem to work anymore." : "Maaf, tautan ini tampaknya tidak berfungsi lagi.", "Reasons might be:" : "Alasan yang mungkin:", "the item was removed" : "item telah dihapus", - "the link expired" : "tautan telah kadaluarsa", + "the link expired" : "tautan telah kedaluwarsa", "sharing is disabled" : "berbagi dinonaktifkan", "For more info, please ask the person who sent this link." : "Untuk info lebih lanjut, silakan tanyakan orang yang mengirim tautan ini.", - "Add to your ownCloud" : "Tambahkan ke ownCloud Anda", + "Add to your Nextcloud" : "Tambahkan ke Nextcloud Anda", "Download" : "Unduh", "Download %s" : "Unduh %s", - "Direct link" : "Tautan langsung" + "Direct link" : "Tautan langsung", + "Upload files to %s" : "Unggah berkas ke %s", + "Select or drop files" : "Pilih atau drop berkas", + "Uploading files…" : "Mengunggah berkas...", + "Uploaded files:" : "Berkas terunggah:" }, "nplurals=1; plural=0;"); diff --git a/apps/files_sharing/l10n/id.json b/apps/files_sharing/l10n/id.json index ec1b2357f42..d51c0eb73bb 100644 --- a/apps/files_sharing/l10n/id.json +++ b/apps/files_sharing/l10n/id.json @@ -1,10 +1,4 @@ { "translations": { - "Server to server sharing is not enabled on this server" : "Berbagi server ke server tidak diaktifkan pada server ini", - "The mountpoint name contains invalid characters." : "Nama mount point berisi karakter yang tidak sah.", - "Invalid or untrusted SSL certificate" : "Sertifikast SSL tidak sah atau tidak terpercaya", - "Could not authenticate to remote share, password might be wrong" : "Tidak dapat mengautentikasi berbagi remote, kata sandi mungkin salah", - "Storage not valid" : "Penyimpanan tidak sah", - "Couldn't add remote share" : "Tidak dapat menambahkan berbagi remote", "Shared with you" : "Dibagikan dengan Anda", "Shared with others" : "Dibagikan dengan lainnya", "Shared by link" : "Dibagikan dengan tautan", @@ -14,16 +8,31 @@ "Files and folders you share will show up here" : "Berkas dan folder yang Anda bagikan akan ditampilkan disini", "No shared links" : "Tidak ada tautan berbagi", "Files and folders you share by link will show up here" : "Berkas dan folder yang Anda bagikan menggunakan tautan akan ditampilkan disini", - "Do you want to add the remote share {name} from {owner}@{remote}?" : "Apakah Anda ingin menambahkan berbagi remote {name} dari {owner}@{remote}?", - "Remote share" : "Berbagi remote", - "Remote share password" : "Sandi berbagi remote", - "Cancel" : "Batal", - "Add remote share" : "Tambah berbagi remote", "You can upload into this folder" : "Anda dapat mengunggah kedalam folder ini", - "No ownCloud installation (7 or higher) found at {remote}" : "Tidak ditemukan instalasi ownCloud (7 atau lebih tinggi) pada {remote}", - "Invalid ownCloud url" : "URL ownCloud tidak sah", + "No compatible server found at {remote}" : "Tidak ditemukan server yang kompatibel pada {remote}", + "Invalid server URL" : "Server URL tidak valid", + "Failed to add the public link to your Nextcloud" : "Gagal menambah tautan publik ke Nextcloud Anda", + "No expiration date set" : "Tanggal kedaluwarsa tidak diatur", "Shared by" : "Dibagikan oleh", "Sharing" : "Berbagi", + "Wrong share ID, share doesn't exist" : "ID pembagian salah, tidak ada yang bisa dibagi", + "Could not delete share" : "Tidak dapat menghapus pembagian", + "Please specify a file or folder path" : "Tentukan berkas atau folder", + "Wrong path, file/folder doesn't exist" : "Salah path, berkas/folder tidak ada", + "Please specify a valid user" : "Tentukan pengguna yang valid", + "Group sharing is disabled by the administrator" : "Berbagi grup dinonaktifkan oleh administrator", + "Please specify a valid group" : "Tentukan grup yang valid", + "Public link sharing is disabled by the administrator" : "Pembagian tautan publik dinonaktifkan oleh administrator", + "Public upload disabled by the administrator" : "Pengunggahan publik dinonaktifkan oleh administrator", + "Public upload is only possible for publicly shared folders" : "Pengunggahan publik hanya bisa untuk folder yang dibagikan kepada publik", + "Invalid date, date format must be YYYY-MM-DD" : "Tanggal salah, format tanggal harus TTTT-BB-HH", + "Sharing %s failed because the back end does not allow shares from type %s" : "Gagal berbagi %s karena backend tidak mengizinkan berbagi dengan tipe %s", + "Unknown share type" : "Tipe berbagi tidak diketahui", + "Not a directory" : "Bukan direktori", + "Could not lock path" : "Tidak dapat mengunci path", + "Wrong or no update parameter given" : "Parameter salah atau tidak diperbarui", + "Can't change permissions for public share links" : "Tidak dapat mengubah izin untuk tautan berbagi publik", + "Cannot increase permissions" : "Tidak dapat menambah izin", "A file or folder has been <strong>shared</strong>" : "Sebuah berkas atau folder telah <strong>dibagikan</strong>", "A file or folder was shared from <strong>another server</strong>" : "Sebuah berkas atau folder telah dibagikan dari <strong>server lainnya</strong>", "A public shared file or folder was <strong>downloaded</strong>" : "Sebuah berkas atau folder berbagi publik telah <strong>diunduh</strong>", @@ -36,35 +45,58 @@ "Public shared file %1$s was downloaded" : "Berkas berbagi publik %1$s telah diunduh", "You shared %1$s with %2$s" : "Anda membagikan %1$s dengan %2$s", "%2$s shared %1$s with %3$s" : "%2$s berbagi %1$s kepada %3$s", + "You removed the share of %2$s for %1$s" : "Anda menghapus pembagian %2$s untuk %1$s", + "%2$s removed the share of %3$s for %1$s" : "%2$s menghapus pembagian %3$s untuk %1$s", "You shared %1$s with group %2$s" : "Anda membagikan %1$s dengan grup %2$s", "%2$s shared %1$s with group %3$s" : "%2$s berbagi %1$s kepada grup %3$s", + "You removed the share of group %2$s for %1$s" : "Anda menghapus pembagian grup %2$s untuk %1$s", + "%2$s removed the share of group %3$s for %1$s" : "%2$s menghapus pembagian grup %3$s untuk %1$s", "%2$s shared %1$s via link" : "%2$s berbagi %1$s via tautan", "You shared %1$s via link" : "Anda membagikan %1$s via tautan", + "You removed the public link for %1$s" : "Anda menghapus tautan publik untuk %1$s", + "%2$s removed the public link for %1$s" : "%2$s menghapus tautan publik untuk %1$s", + "Your public link for %1$s expired" : "tautan publik Anda untuk %1$s kedaluwarsa", + "The public link of %2$s for %1$s expired" : "tautan publik %2$s untuk %1$s kedaluwarsa", "%2$s shared %1$s with you" : "%2$s membagikan %1$s dengan Anda", + "%2$s removed the share for %1$s" : "%2$s menghapus pembagian untuk %1$s", "Downloaded via public link" : "Diunduh via tautan publik", "Shared with %2$s" : "Dibagikan kepada %2$s", "Shared with %3$s by %2$s" : "Dibagikan kepada %3$s oleh %2$s", + "Removed share for %2$s" : "Menghapus pembagian untuk %2$s", + "%2$s removed share for %3$s" : "%2$s menghapus pembagian untuk %3$s", "Shared with group %2$s" : "Dibagikan kepada grup %2$s", "Shared with group %3$s by %2$s" : "Dibagikan kepada grup %3$s oleh %2$s", + "Removed share of group %2$s" : "Menghapus pembagian untuk grup %2$s", + "%2$s removed share of group %3$s" : "%2$s menghapus pembagian untuk grup %3$s", "Shared via link by %2$s" : "Dibagikan via tautan oleh %2$s", "Shared via public link" : "Dibagikan via tautan publik", + "Removed public link" : "tautan publik dihapus", + "%2$s removed public link" : "%2$s menghapus tautan publik", + "Public link expired" : "tautan publik kedaluwarsa", + "Public link of %2$s expired" : "tautan publik untuk %2$s kedaluwarsa", "Shared by %2$s" : "Dibagikan oleh %2$s", "Shares" : "Dibagikan", + "Share API is disabled" : "API pembagian dinonaktifkan", "This share is password-protected" : "Berbagi ini dilindungi sandi", "The password is wrong. Try again." : "Sandi salah. Coba lagi", "Password" : "Sandi", "No entries found in this folder" : "Tidak ada entri yang ditemukan dalam folder ini", "Name" : "Nama", "Share time" : "Waktu berbagi", + "Expiration date" : "Tanggal kedaluwarsa", "Sorry, this link doesn’t seem to work anymore." : "Maaf, tautan ini tampaknya tidak berfungsi lagi.", "Reasons might be:" : "Alasan yang mungkin:", "the item was removed" : "item telah dihapus", - "the link expired" : "tautan telah kadaluarsa", + "the link expired" : "tautan telah kedaluwarsa", "sharing is disabled" : "berbagi dinonaktifkan", "For more info, please ask the person who sent this link." : "Untuk info lebih lanjut, silakan tanyakan orang yang mengirim tautan ini.", - "Add to your ownCloud" : "Tambahkan ke ownCloud Anda", + "Add to your Nextcloud" : "Tambahkan ke Nextcloud Anda", "Download" : "Unduh", "Download %s" : "Unduh %s", - "Direct link" : "Tautan langsung" + "Direct link" : "Tautan langsung", + "Upload files to %s" : "Unggah berkas ke %s", + "Select or drop files" : "Pilih atau drop berkas", + "Uploading files…" : "Mengunggah berkas...", + "Uploaded files:" : "Berkas terunggah:" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js index a11c51b1188..866e9b86705 100644 --- a/apps/files_sharing/l10n/it.js +++ b/apps/files_sharing/l10n/it.js @@ -17,7 +17,6 @@ OC.L10N.register( "No expiration date set" : "Nessuna data di scandenza impostata", "Shared by" : "Condiviso da", "Sharing" : "Condivisione", - "Share API is disabled" : "API di condivisione disabilitate", "Wrong share ID, share doesn't exist" : "ID di condivisione errato, la condivisione non esiste", "Could not delete share" : "impossibile eliminare la condivisione", "Please specify a file or folder path" : "Specifica un percorso di un file o di una cartella", @@ -33,8 +32,8 @@ OC.L10N.register( "Unknown share type" : "Tipo di condivisione sconosciuto", "Not a directory" : "Non è una cartella", "Could not lock path" : "Impossibile bloccare il percorso", - "Can't change permissions for public share links" : "Impossibile cambiare i permessi per i collegamenti di condivisione pubblici", "Wrong or no update parameter given" : "Parametro fornito non valido o non di aggiornamento", + "Can't change permissions for public share links" : "Impossibile cambiare i permessi per i collegamenti di condivisione pubblici", "Cannot increase permissions" : "Impossibile aumentare i permessi", "A file or folder has been <strong>shared</strong>" : "Un file o una cartella è stato <strong>condiviso</strong>", "A file or folder was shared from <strong>another server</strong>" : "Un file o una cartella è stato condiviso da <strong>un altro server</strong>", @@ -79,6 +78,7 @@ OC.L10N.register( "Public link of %2$s expired" : "il collegamento pubblico di %2$s è scaduto", "Shared by %2$s" : "Condivisa da %2$s", "Shares" : "Condivisioni", + "Share API is disabled" : "API di condivisione disabilitate", "This share is password-protected" : "Questa condivisione è protetta da password", "The password is wrong. Try again." : "La password è errata. Prova ancora.", "Password" : "Password", diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json index 479758853bc..733c604bfc5 100644 --- a/apps/files_sharing/l10n/it.json +++ b/apps/files_sharing/l10n/it.json @@ -15,7 +15,6 @@ "No expiration date set" : "Nessuna data di scandenza impostata", "Shared by" : "Condiviso da", "Sharing" : "Condivisione", - "Share API is disabled" : "API di condivisione disabilitate", "Wrong share ID, share doesn't exist" : "ID di condivisione errato, la condivisione non esiste", "Could not delete share" : "impossibile eliminare la condivisione", "Please specify a file or folder path" : "Specifica un percorso di un file o di una cartella", @@ -31,8 +30,8 @@ "Unknown share type" : "Tipo di condivisione sconosciuto", "Not a directory" : "Non è una cartella", "Could not lock path" : "Impossibile bloccare il percorso", - "Can't change permissions for public share links" : "Impossibile cambiare i permessi per i collegamenti di condivisione pubblici", "Wrong or no update parameter given" : "Parametro fornito non valido o non di aggiornamento", + "Can't change permissions for public share links" : "Impossibile cambiare i permessi per i collegamenti di condivisione pubblici", "Cannot increase permissions" : "Impossibile aumentare i permessi", "A file or folder has been <strong>shared</strong>" : "Un file o una cartella è stato <strong>condiviso</strong>", "A file or folder was shared from <strong>another server</strong>" : "Un file o una cartella è stato condiviso da <strong>un altro server</strong>", @@ -77,6 +76,7 @@ "Public link of %2$s expired" : "il collegamento pubblico di %2$s è scaduto", "Shared by %2$s" : "Condivisa da %2$s", "Shares" : "Condivisioni", + "Share API is disabled" : "API di condivisione disabilitate", "This share is password-protected" : "Questa condivisione è protetta da password", "The password is wrong. Try again." : "La password è errata. Prova ancora.", "Password" : "Password", diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js index 6ba05aedf9c..e1558b6e5db 100644 --- a/apps/files_sharing/l10n/ja.js +++ b/apps/files_sharing/l10n/ja.js @@ -16,7 +16,6 @@ OC.L10N.register( "No expiration date set" : "有効期限が未設定", "Shared by" : "共有者:", "Sharing" : "共有", - "Share API is disabled" : "共有APIが無効です。", "Wrong share ID, share doesn't exist" : "共有IDが間違っています。共有がありません。", "Could not delete share" : "共有を削除できませんでした", "Please specify a file or folder path" : "ファイルかフォルダーのパスを指定してください", @@ -32,8 +31,8 @@ OC.L10N.register( "Unknown share type" : "不明な共有タイプ", "Not a directory" : "ディレクトリではありません", "Could not lock path" : "パスをロックできませんでした", - "Can't change permissions for public share links" : "URLリンク共有のパーミッションを変更できません", "Wrong or no update parameter given" : "間違っている、もしくはパラメータが更新されていません", + "Can't change permissions for public share links" : "URLリンク共有のパーミッションを変更できません", "Cannot increase permissions" : "パーミッションを追加できません", "A file or folder has been <strong>shared</strong>" : "ファイルまたはフォルダーが<strong>共有</strong>されたとき", "A file or folder was shared from <strong>another server</strong>" : "ファイルまたはフォルダーが<strong>他のサーバー</strong>から共有されたとき", @@ -78,6 +77,7 @@ OC.L10N.register( "Public link of %2$s expired" : "公開リンク%2$sの期限が切れています", "Shared by %2$s" : "%2$s が共有", "Shares" : "共有", + "Share API is disabled" : "共有APIが無効です。", "This share is password-protected" : "この共有はパスワードで保護されています", "The password is wrong. Try again." : "パスワードが間違っています。再試行してください。", "Password" : "パスワード", diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json index 838f2a63c8a..cd7351abc5f 100644 --- a/apps/files_sharing/l10n/ja.json +++ b/apps/files_sharing/l10n/ja.json @@ -14,7 +14,6 @@ "No expiration date set" : "有効期限が未設定", "Shared by" : "共有者:", "Sharing" : "共有", - "Share API is disabled" : "共有APIが無効です。", "Wrong share ID, share doesn't exist" : "共有IDが間違っています。共有がありません。", "Could not delete share" : "共有を削除できませんでした", "Please specify a file or folder path" : "ファイルかフォルダーのパスを指定してください", @@ -30,8 +29,8 @@ "Unknown share type" : "不明な共有タイプ", "Not a directory" : "ディレクトリではありません", "Could not lock path" : "パスをロックできませんでした", - "Can't change permissions for public share links" : "URLリンク共有のパーミッションを変更できません", "Wrong or no update parameter given" : "間違っている、もしくはパラメータが更新されていません", + "Can't change permissions for public share links" : "URLリンク共有のパーミッションを変更できません", "Cannot increase permissions" : "パーミッションを追加できません", "A file or folder has been <strong>shared</strong>" : "ファイルまたはフォルダーが<strong>共有</strong>されたとき", "A file or folder was shared from <strong>another server</strong>" : "ファイルまたはフォルダーが<strong>他のサーバー</strong>から共有されたとき", @@ -76,6 +75,7 @@ "Public link of %2$s expired" : "公開リンク%2$sの期限が切れています", "Shared by %2$s" : "%2$s が共有", "Shares" : "共有", + "Share API is disabled" : "共有APIが無効です。", "This share is password-protected" : "この共有はパスワードで保護されています", "The password is wrong. Try again." : "パスワードが間違っています。再試行してください。", "Password" : "パスワード", diff --git a/apps/files_sharing/l10n/nl.js b/apps/files_sharing/l10n/nl.js index 8e1767d8e03..05322861217 100644 --- a/apps/files_sharing/l10n/nl.js +++ b/apps/files_sharing/l10n/nl.js @@ -1,8 +1,8 @@ OC.L10N.register( "files_sharing", { - "Shared with you" : "Deelde met je", - "Shared with others" : "Gedeeld door u", + "Shared with you" : "Gedeeld met je", + "Shared with others" : "Gedeeld met anderen", "Shared by link" : "Gedeeld via een link", "Nothing shared with you yet" : "Nog niets met u gedeeld", "Files and folders others share with you will show up here" : "Bestanden en mappen die anderen met je delen, worden hier getoond", @@ -17,7 +17,6 @@ OC.L10N.register( "No expiration date set" : "Geen vervaldatum ingesteld", "Shared by" : "Gedeeld door", "Sharing" : "Delen", - "Share API is disabled" : "Delen API is uitgeschakeld", "Wrong share ID, share doesn't exist" : "Onjuist deel-ID, de share bestaat niet", "Could not delete share" : "Kon share niet verwijderen", "Please specify a file or folder path" : "Geef een bestand of pad van een map op", @@ -33,8 +32,8 @@ OC.L10N.register( "Unknown share type" : "Onbekend type share", "Not a directory" : "Geen directory", "Could not lock path" : "Kon pad niet blokkeren", - "Can't change permissions for public share links" : "Kan permissies voor openbare share links niet wijzigen", "Wrong or no update parameter given" : "Verkeerde of geen update parameter opgegeven", + "Can't change permissions for public share links" : "Kan permissies voor openbare share links niet wijzigen", "Cannot increase permissions" : "Kan de rechten niet verruimen", "A file or folder has been <strong>shared</strong>" : "Een bestand of map is <strong>gedeeld</strong>", "A file or folder was shared from <strong>another server</strong>" : "Een bestand of map werd gedeeld vanaf <strong>een andere server</strong>", @@ -79,6 +78,7 @@ OC.L10N.register( "Public link of %2$s expired" : "Openbare link van %2$s is verlopen", "Shared by %2$s" : "Gedeeld door %2$s", "Shares" : "Gedeeld", + "Share API is disabled" : "Delen API is uitgeschakeld", "This share is password-protected" : "Deze share is met een wachtwoord beveiligd", "The password is wrong. Try again." : "Wachtwoord ongeldig. Probeer het nogmaals.", "Password" : "Wachtwoord", diff --git a/apps/files_sharing/l10n/nl.json b/apps/files_sharing/l10n/nl.json index abfeb58eaef..788feb3fd99 100644 --- a/apps/files_sharing/l10n/nl.json +++ b/apps/files_sharing/l10n/nl.json @@ -1,6 +1,6 @@ { "translations": { - "Shared with you" : "Deelde met je", - "Shared with others" : "Gedeeld door u", + "Shared with you" : "Gedeeld met je", + "Shared with others" : "Gedeeld met anderen", "Shared by link" : "Gedeeld via een link", "Nothing shared with you yet" : "Nog niets met u gedeeld", "Files and folders others share with you will show up here" : "Bestanden en mappen die anderen met je delen, worden hier getoond", @@ -15,7 +15,6 @@ "No expiration date set" : "Geen vervaldatum ingesteld", "Shared by" : "Gedeeld door", "Sharing" : "Delen", - "Share API is disabled" : "Delen API is uitgeschakeld", "Wrong share ID, share doesn't exist" : "Onjuist deel-ID, de share bestaat niet", "Could not delete share" : "Kon share niet verwijderen", "Please specify a file or folder path" : "Geef een bestand of pad van een map op", @@ -31,8 +30,8 @@ "Unknown share type" : "Onbekend type share", "Not a directory" : "Geen directory", "Could not lock path" : "Kon pad niet blokkeren", - "Can't change permissions for public share links" : "Kan permissies voor openbare share links niet wijzigen", "Wrong or no update parameter given" : "Verkeerde of geen update parameter opgegeven", + "Can't change permissions for public share links" : "Kan permissies voor openbare share links niet wijzigen", "Cannot increase permissions" : "Kan de rechten niet verruimen", "A file or folder has been <strong>shared</strong>" : "Een bestand of map is <strong>gedeeld</strong>", "A file or folder was shared from <strong>another server</strong>" : "Een bestand of map werd gedeeld vanaf <strong>een andere server</strong>", @@ -77,6 +76,7 @@ "Public link of %2$s expired" : "Openbare link van %2$s is verlopen", "Shared by %2$s" : "Gedeeld door %2$s", "Shares" : "Gedeeld", + "Share API is disabled" : "Delen API is uitgeschakeld", "This share is password-protected" : "Deze share is met een wachtwoord beveiligd", "The password is wrong. Try again." : "Wachtwoord ongeldig. Probeer het nogmaals.", "Password" : "Wachtwoord", diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js index b203543bd8e..744595576e4 100644 --- a/apps/files_sharing/l10n/pt_BR.js +++ b/apps/files_sharing/l10n/pt_BR.js @@ -17,7 +17,6 @@ OC.L10N.register( "No expiration date set" : "Nenhuma data de expiração definida", "Shared by" : "Compartilhado por", "Sharing" : "Compartilhamento", - "Share API is disabled" : "O compartilhamento de API está desabilitado.", "Wrong share ID, share doesn't exist" : "ID de compartilhamento errado, o compartilhamento não existe", "Could not delete share" : "Não foi possível eliminar o compartilhamento", "Please specify a file or folder path" : "Por favor especifique um arquivo ou caminho", @@ -33,8 +32,8 @@ OC.L10N.register( "Unknown share type" : "Tipo de compartilhamento desconhecido", "Not a directory" : "Não é um diretório", "Could not lock path" : "Não foi possível bloquear o caminho", - "Can't change permissions for public share links" : "Não é possível alterar permissões para compartilhar links públicos", "Wrong or no update parameter given" : "Está errado ou nenhum parâmetro de atualização foi fornecido", + "Can't change permissions for public share links" : "Não é possível alterar permissões para compartilhar links públicos", "Cannot increase permissions" : "Não pode haver aumento de permissões", "A file or folder has been <strong>shared</strong>" : "Um arquivo ou pasta foi <strong>compartilhado</strong> ", "A file or folder was shared from <strong>another server</strong>" : "Um arquivo ou pasta foi compartilhado a partir de <strong>outro servidor</strong>", @@ -79,6 +78,7 @@ OC.L10N.register( "Public link of %2$s expired" : "O link público de %2$s expirou", "Shared by %2$s" : "Compartilhado por %2$s", "Shares" : "Compartilhamentos", + "Share API is disabled" : "O compartilhamento de API está desabilitado.", "This share is password-protected" : "Este compartilhamento esta protegido por senha", "The password is wrong. Try again." : "Senha incorreta. Tente novamente.", "Password" : "Senha", diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json index e2f2d6a125f..d45445a0adc 100644 --- a/apps/files_sharing/l10n/pt_BR.json +++ b/apps/files_sharing/l10n/pt_BR.json @@ -15,7 +15,6 @@ "No expiration date set" : "Nenhuma data de expiração definida", "Shared by" : "Compartilhado por", "Sharing" : "Compartilhamento", - "Share API is disabled" : "O compartilhamento de API está desabilitado.", "Wrong share ID, share doesn't exist" : "ID de compartilhamento errado, o compartilhamento não existe", "Could not delete share" : "Não foi possível eliminar o compartilhamento", "Please specify a file or folder path" : "Por favor especifique um arquivo ou caminho", @@ -31,8 +30,8 @@ "Unknown share type" : "Tipo de compartilhamento desconhecido", "Not a directory" : "Não é um diretório", "Could not lock path" : "Não foi possível bloquear o caminho", - "Can't change permissions for public share links" : "Não é possível alterar permissões para compartilhar links públicos", "Wrong or no update parameter given" : "Está errado ou nenhum parâmetro de atualização foi fornecido", + "Can't change permissions for public share links" : "Não é possível alterar permissões para compartilhar links públicos", "Cannot increase permissions" : "Não pode haver aumento de permissões", "A file or folder has been <strong>shared</strong>" : "Um arquivo ou pasta foi <strong>compartilhado</strong> ", "A file or folder was shared from <strong>another server</strong>" : "Um arquivo ou pasta foi compartilhado a partir de <strong>outro servidor</strong>", @@ -77,6 +76,7 @@ "Public link of %2$s expired" : "O link público de %2$s expirou", "Shared by %2$s" : "Compartilhado por %2$s", "Shares" : "Compartilhamentos", + "Share API is disabled" : "O compartilhamento de API está desabilitado.", "This share is password-protected" : "Este compartilhamento esta protegido por senha", "The password is wrong. Try again." : "Senha incorreta. Tente novamente.", "Password" : "Senha", diff --git a/apps/files_sharing/l10n/pt_PT.js b/apps/files_sharing/l10n/pt_PT.js index e1488dfd663..310587d4366 100644 --- a/apps/files_sharing/l10n/pt_PT.js +++ b/apps/files_sharing/l10n/pt_PT.js @@ -13,7 +13,6 @@ OC.L10N.register( "You can upload into this folder" : "Pode enviar para esta pasta", "Shared by" : "Partilhado por", "Sharing" : "Partilha", - "Share API is disabled" : "A partilha de API está desativada", "Wrong share ID, share doesn't exist" : "Id. de partilha errada, a partilha não existe", "Could not delete share" : "Não foi possível eliminar a partilha", "Please specify a file or folder path" : "Por favor, especifique um ficheiro ou caminho de pasta", @@ -29,8 +28,8 @@ OC.L10N.register( "Unknown share type" : "Tipo de partilha desconhecido", "Not a directory" : "Não é uma diretoria", "Could not lock path" : "Não foi possível bloquear o caminho", - "Can't change permissions for public share links" : "Não é possível alterar as permissões para as hiperligações de partilha pública", "Wrong or no update parameter given" : "Parâmetro indicado errado ou desatualizado", + "Can't change permissions for public share links" : "Não é possível alterar as permissões para as hiperligações de partilha pública", "Cannot increase permissions" : "Não é possível incrementar as permissões", "A file or folder has been <strong>shared</strong>" : "Foi <strong>partilhado</strong> um ficheiro ou uma pasta", "A file or folder was shared from <strong>another server</strong>" : "Um ficheiro ou pasta foi partilhado a partir de <strong>outro servidor</strong>", @@ -75,6 +74,7 @@ OC.L10N.register( "Public link of %2$s expired" : "A hiperligação pública de %2$s expirou", "Shared by %2$s" : "Partilhado por %2$s", "Shares" : "Partilhas", + "Share API is disabled" : "A partilha de API está desativada", "This share is password-protected" : "Esta partilha está protegida por palavra-passe", "The password is wrong. Try again." : "A palavra-passe está errada. Por favor, tente de novo.", "Password" : "Palavra-passe", diff --git a/apps/files_sharing/l10n/pt_PT.json b/apps/files_sharing/l10n/pt_PT.json index 986b623a320..1ad593da9ea 100644 --- a/apps/files_sharing/l10n/pt_PT.json +++ b/apps/files_sharing/l10n/pt_PT.json @@ -11,7 +11,6 @@ "You can upload into this folder" : "Pode enviar para esta pasta", "Shared by" : "Partilhado por", "Sharing" : "Partilha", - "Share API is disabled" : "A partilha de API está desativada", "Wrong share ID, share doesn't exist" : "Id. de partilha errada, a partilha não existe", "Could not delete share" : "Não foi possível eliminar a partilha", "Please specify a file or folder path" : "Por favor, especifique um ficheiro ou caminho de pasta", @@ -27,8 +26,8 @@ "Unknown share type" : "Tipo de partilha desconhecido", "Not a directory" : "Não é uma diretoria", "Could not lock path" : "Não foi possível bloquear o caminho", - "Can't change permissions for public share links" : "Não é possível alterar as permissões para as hiperligações de partilha pública", "Wrong or no update parameter given" : "Parâmetro indicado errado ou desatualizado", + "Can't change permissions for public share links" : "Não é possível alterar as permissões para as hiperligações de partilha pública", "Cannot increase permissions" : "Não é possível incrementar as permissões", "A file or folder has been <strong>shared</strong>" : "Foi <strong>partilhado</strong> um ficheiro ou uma pasta", "A file or folder was shared from <strong>another server</strong>" : "Um ficheiro ou pasta foi partilhado a partir de <strong>outro servidor</strong>", @@ -73,6 +72,7 @@ "Public link of %2$s expired" : "A hiperligação pública de %2$s expirou", "Shared by %2$s" : "Partilhado por %2$s", "Shares" : "Partilhas", + "Share API is disabled" : "A partilha de API está desativada", "This share is password-protected" : "Esta partilha está protegida por palavra-passe", "The password is wrong. Try again." : "A palavra-passe está errada. Por favor, tente de novo.", "Password" : "Palavra-passe", diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js index 2c6e97ff777..14d55f598f0 100644 --- a/apps/files_sharing/l10n/ru.js +++ b/apps/files_sharing/l10n/ru.js @@ -13,10 +13,10 @@ OC.L10N.register( "You can upload into this folder" : "Вы можете загружать в эту папку", "No compatible server found at {remote}" : "Не найден совместимый сервер на {remote}", "Invalid server URL" : "Неверный URL сервера", + "Failed to add the public link to your Nextcloud" : "Не получилось добавить публичную ссылку на ваш Nextcloud", "No expiration date set" : "Дата истечения не установлена", "Shared by" : "Поделился", "Sharing" : "Общий доступ", - "Share API is disabled" : "API общего доступа отключён", "Wrong share ID, share doesn't exist" : "Неверный идентификатор публикации, публикация не существует", "Could not delete share" : "Не удалось удалить публикацию", "Please specify a file or folder path" : "Пожалуйста, укажите путь к файлу или каталогу", @@ -32,8 +32,8 @@ OC.L10N.register( "Unknown share type" : "Предоставление доступа неизвестного типа", "Not a directory" : "Это не каталог", "Could not lock path" : "Не удалось заблокировать путь", - "Can't change permissions for public share links" : "Невозможно изменить права для публикации через ссылку", "Wrong or no update parameter given" : "Параметр для изменения неправилен или не задан", + "Can't change permissions for public share links" : "Невозможно изменить права для публикации через ссылку", "Cannot increase permissions" : "Нельзя увеличить права", "A file or folder has been <strong>shared</strong>" : "<strong>Опубликован</strong> файл или каталог", "A file or folder was shared from <strong>another server</strong>" : "Файлом или каталогом поделились с <strong>удаленного сервера</strong>", @@ -78,6 +78,7 @@ OC.L10N.register( "Public link of %2$s expired" : "Срок действия публичной ссылки к %2$s закончился", "Shared by %2$s" : "Поделился %2$s", "Shares" : "События обмена файлами", + "Share API is disabled" : "API общего доступа отключён", "This share is password-protected" : "Общий ресурс защищен паролем", "The password is wrong. Try again." : "Неверный пароль. Попробуйте еще раз.", "Password" : "Пароль", @@ -91,10 +92,12 @@ OC.L10N.register( "the link expired" : "срок действия ссылки истёк", "sharing is disabled" : "общий доступ отключён", "For more info, please ask the person who sent this link." : "Для получения дополнительной информации, свяжитесь с тем, кто отправил вам эту ссылку.", + "Add to your Nextcloud" : "Добавить к вашему Nextcloud", "Download" : "Скачать", "Download %s" : "Скачать %s", "Direct link" : "Прямая ссылка", "Upload files to %s" : "Загрузка файлов в %s", + "Select or drop files" : "Выбрать или сбросить файлы", "Uploading files…" : "Загрузка файлов...", "Uploaded files:" : "Загруженные файлы:" }, diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json index fdd25e2c8bc..a9dd1314aa1 100644 --- a/apps/files_sharing/l10n/ru.json +++ b/apps/files_sharing/l10n/ru.json @@ -11,10 +11,10 @@ "You can upload into this folder" : "Вы можете загружать в эту папку", "No compatible server found at {remote}" : "Не найден совместимый сервер на {remote}", "Invalid server URL" : "Неверный URL сервера", + "Failed to add the public link to your Nextcloud" : "Не получилось добавить публичную ссылку на ваш Nextcloud", "No expiration date set" : "Дата истечения не установлена", "Shared by" : "Поделился", "Sharing" : "Общий доступ", - "Share API is disabled" : "API общего доступа отключён", "Wrong share ID, share doesn't exist" : "Неверный идентификатор публикации, публикация не существует", "Could not delete share" : "Не удалось удалить публикацию", "Please specify a file or folder path" : "Пожалуйста, укажите путь к файлу или каталогу", @@ -30,8 +30,8 @@ "Unknown share type" : "Предоставление доступа неизвестного типа", "Not a directory" : "Это не каталог", "Could not lock path" : "Не удалось заблокировать путь", - "Can't change permissions for public share links" : "Невозможно изменить права для публикации через ссылку", "Wrong or no update parameter given" : "Параметр для изменения неправилен или не задан", + "Can't change permissions for public share links" : "Невозможно изменить права для публикации через ссылку", "Cannot increase permissions" : "Нельзя увеличить права", "A file or folder has been <strong>shared</strong>" : "<strong>Опубликован</strong> файл или каталог", "A file or folder was shared from <strong>another server</strong>" : "Файлом или каталогом поделились с <strong>удаленного сервера</strong>", @@ -76,6 +76,7 @@ "Public link of %2$s expired" : "Срок действия публичной ссылки к %2$s закончился", "Shared by %2$s" : "Поделился %2$s", "Shares" : "События обмена файлами", + "Share API is disabled" : "API общего доступа отключён", "This share is password-protected" : "Общий ресурс защищен паролем", "The password is wrong. Try again." : "Неверный пароль. Попробуйте еще раз.", "Password" : "Пароль", @@ -89,10 +90,12 @@ "the link expired" : "срок действия ссылки истёк", "sharing is disabled" : "общий доступ отключён", "For more info, please ask the person who sent this link." : "Для получения дополнительной информации, свяжитесь с тем, кто отправил вам эту ссылку.", + "Add to your Nextcloud" : "Добавить к вашему Nextcloud", "Download" : "Скачать", "Download %s" : "Скачать %s", "Direct link" : "Прямая ссылка", "Upload files to %s" : "Загрузка файлов в %s", + "Select or drop files" : "Выбрать или сбросить файлы", "Uploading files…" : "Загрузка файлов...", "Uploaded files:" : "Загруженные файлы:" },"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);" diff --git a/apps/files_sharing/l10n/sl.js b/apps/files_sharing/l10n/sl.js index e5263ebe064..78b89b92792 100644 --- a/apps/files_sharing/l10n/sl.js +++ b/apps/files_sharing/l10n/sl.js @@ -13,7 +13,6 @@ OC.L10N.register( "You can upload into this folder" : "V to mapo je dovoljeno poslati datoteke", "Shared by" : "V souporabi z", "Sharing" : "Souporaba", - "Share API is disabled" : "API za souporabo je izključen", "Wrong share ID, share doesn't exist" : "Napačen ID mesta uporabe; mesto ne obstaja!", "Could not delete share" : "Tega predmeta v souporabi ni mogoče izbrisati.", "Please specify a file or folder path" : "Določiti je treba datoteko ali pot do mape", @@ -29,8 +28,8 @@ OC.L10N.register( "Unknown share type" : "Neznana vrsta mesta souporabe", "Not a directory" : "Predmet ni mapa", "Could not lock path" : "Poti ni mogoče zakleniti", - "Can't change permissions for public share links" : "Za javne povezave souporabe, spreminjanje dovoljenj ni mogoče.", "Wrong or no update parameter given" : "Parameter posodobitve ni podan ali pa je navedena napačna vrednost", + "Can't change permissions for public share links" : "Za javne povezave souporabe, spreminjanje dovoljenj ni mogoče.", "Cannot increase permissions" : "Ni mogoče povišati dovoljenj", "A file or folder has been <strong>shared</strong>" : "Za datoteko ali mapo je omogočena <strong>souporaba</strong>.", "A file or folder was shared from <strong>another server</strong>" : "Souporaba datoteke ali mape <strong>z drugega strežnika</strong> je omogočena.", @@ -75,6 +74,7 @@ OC.L10N.register( "Public link of %2$s expired" : "Javna povezava %2$s je potekla", "Shared by %2$s" : "Souporabo je omogočil uporabnik %2$s", "Shares" : "Souporaba", + "Share API is disabled" : "API za souporabo je izključen", "This share is password-protected" : "To mesto je zaščiteno z geslom.", "The password is wrong. Try again." : "Geslo je napačno. Poskusite znova.", "Password" : "Geslo", diff --git a/apps/files_sharing/l10n/sl.json b/apps/files_sharing/l10n/sl.json index bb8d55df9cc..af8d74d4afc 100644 --- a/apps/files_sharing/l10n/sl.json +++ b/apps/files_sharing/l10n/sl.json @@ -11,7 +11,6 @@ "You can upload into this folder" : "V to mapo je dovoljeno poslati datoteke", "Shared by" : "V souporabi z", "Sharing" : "Souporaba", - "Share API is disabled" : "API za souporabo je izključen", "Wrong share ID, share doesn't exist" : "Napačen ID mesta uporabe; mesto ne obstaja!", "Could not delete share" : "Tega predmeta v souporabi ni mogoče izbrisati.", "Please specify a file or folder path" : "Določiti je treba datoteko ali pot do mape", @@ -27,8 +26,8 @@ "Unknown share type" : "Neznana vrsta mesta souporabe", "Not a directory" : "Predmet ni mapa", "Could not lock path" : "Poti ni mogoče zakleniti", - "Can't change permissions for public share links" : "Za javne povezave souporabe, spreminjanje dovoljenj ni mogoče.", "Wrong or no update parameter given" : "Parameter posodobitve ni podan ali pa je navedena napačna vrednost", + "Can't change permissions for public share links" : "Za javne povezave souporabe, spreminjanje dovoljenj ni mogoče.", "Cannot increase permissions" : "Ni mogoče povišati dovoljenj", "A file or folder has been <strong>shared</strong>" : "Za datoteko ali mapo je omogočena <strong>souporaba</strong>.", "A file or folder was shared from <strong>another server</strong>" : "Souporaba datoteke ali mape <strong>z drugega strežnika</strong> je omogočena.", @@ -73,6 +72,7 @@ "Public link of %2$s expired" : "Javna povezava %2$s je potekla", "Shared by %2$s" : "Souporabo je omogočil uporabnik %2$s", "Shares" : "Souporaba", + "Share API is disabled" : "API za souporabo je izključen", "This share is password-protected" : "To mesto je zaščiteno z geslom.", "The password is wrong. Try again." : "Geslo je napačno. Poskusite znova.", "Password" : "Geslo", diff --git a/apps/files_sharing/l10n/sq.js b/apps/files_sharing/l10n/sq.js index 2acc6884a3c..54544b2a68e 100644 --- a/apps/files_sharing/l10n/sq.js +++ b/apps/files_sharing/l10n/sq.js @@ -13,7 +13,6 @@ OC.L10N.register( "You can upload into this folder" : "Mund të ngarkoni te kjo dosje", "Shared by" : "Ndarë nga", "Sharing" : "Ndarje", - "Share API is disabled" : "API i ndarjeve është çaktivizuar", "Wrong share ID, share doesn't exist" : "ID e gabuar ndarjeje, ndarja s’ekziston", "Could not delete share" : "Ndarja s’u fshi dot", "Please specify a file or folder path" : "Ju lutemi, tregoni një shteg kartele ose dosjeje", @@ -29,8 +28,8 @@ OC.L10N.register( "Unknown share type" : "Lloj i panjohur ndarjesh", "Not a directory" : "S’është drejtori", "Could not lock path" : "S’u kyç dot shtegu", - "Can't change permissions for public share links" : "S’mund të ndryshohen lejet për lidhje ndarjesh publike", "Wrong or no update parameter given" : "Ose u dha parametër i gabuar përditësimesh, pse s’u dha fare ", + "Can't change permissions for public share links" : "S’mund të ndryshohen lejet për lidhje ndarjesh publike", "Cannot increase permissions" : "S’mund të fuqizohen lejet", "A file or folder has been <strong>shared</strong>" : "U <strong>nda me të tjerë</strong> një kartelë ose dosje", "A file or folder was shared from <strong>another server</strong>" : "Një kartelë ose dosje u nda prej një <strong>shërbyesi tjetër</strong>", @@ -75,6 +74,7 @@ OC.L10N.register( "Public link of %2$s expired" : "Lidhja publike e %2$s skadoi", "Shared by %2$s" : "U nda nga %2$s", "Shares" : "Ndarje", + "Share API is disabled" : "API i ndarjeve është çaktivizuar", "This share is password-protected" : "Kjo pjesë është e mbrojtur me fjalëkalim", "The password is wrong. Try again." : "Fjalëkalimi është i gabuar. Riprovoni.", "Password" : "Fjalëkalim", diff --git a/apps/files_sharing/l10n/sq.json b/apps/files_sharing/l10n/sq.json index 6bbe223413c..3e8fa7b00f0 100644 --- a/apps/files_sharing/l10n/sq.json +++ b/apps/files_sharing/l10n/sq.json @@ -11,7 +11,6 @@ "You can upload into this folder" : "Mund të ngarkoni te kjo dosje", "Shared by" : "Ndarë nga", "Sharing" : "Ndarje", - "Share API is disabled" : "API i ndarjeve është çaktivizuar", "Wrong share ID, share doesn't exist" : "ID e gabuar ndarjeje, ndarja s’ekziston", "Could not delete share" : "Ndarja s’u fshi dot", "Please specify a file or folder path" : "Ju lutemi, tregoni një shteg kartele ose dosjeje", @@ -27,8 +26,8 @@ "Unknown share type" : "Lloj i panjohur ndarjesh", "Not a directory" : "S’është drejtori", "Could not lock path" : "S’u kyç dot shtegu", - "Can't change permissions for public share links" : "S’mund të ndryshohen lejet për lidhje ndarjesh publike", "Wrong or no update parameter given" : "Ose u dha parametër i gabuar përditësimesh, pse s’u dha fare ", + "Can't change permissions for public share links" : "S’mund të ndryshohen lejet për lidhje ndarjesh publike", "Cannot increase permissions" : "S’mund të fuqizohen lejet", "A file or folder has been <strong>shared</strong>" : "U <strong>nda me të tjerë</strong> një kartelë ose dosje", "A file or folder was shared from <strong>another server</strong>" : "Një kartelë ose dosje u nda prej një <strong>shërbyesi tjetër</strong>", @@ -73,6 +72,7 @@ "Public link of %2$s expired" : "Lidhja publike e %2$s skadoi", "Shared by %2$s" : "U nda nga %2$s", "Shares" : "Ndarje", + "Share API is disabled" : "API i ndarjeve është çaktivizuar", "This share is password-protected" : "Kjo pjesë është e mbrojtur me fjalëkalim", "The password is wrong. Try again." : "Fjalëkalimi është i gabuar. Riprovoni.", "Password" : "Fjalëkalim", diff --git a/apps/files_sharing/l10n/th_TH.js b/apps/files_sharing/l10n/th_TH.js index 8a820c75312..33e6bcfcfe4 100644 --- a/apps/files_sharing/l10n/th_TH.js +++ b/apps/files_sharing/l10n/th_TH.js @@ -13,7 +13,6 @@ OC.L10N.register( "You can upload into this folder" : "คุณสามารถอัพโหลดลงในโฟลเดอร์นี้", "Shared by" : "ถูกแชร์โดย", "Sharing" : "แชร์ข้อมูล", - "Share API is disabled" : "แชร์ API ถูกปิดใช้งาน", "Wrong share ID, share doesn't exist" : "แชร์ไอดีผิด หรือ ไม่มีแชร์นั้นอยู่", "Could not delete share" : "ไม่สามารถลบแชร์", "Please specify a file or folder path" : "โปรดระบุเส้นทางของไฟล์หรือโฟลเดอร์", @@ -29,8 +28,8 @@ OC.L10N.register( "Unknown share type" : "ไม่รู้จักประเภทของแชร์", "Not a directory" : "ไม่ได้เป็นไดเรกทอรี", "Could not lock path" : "ไม่สามารถล็อคเส้นทาง", - "Can't change permissions for public share links" : "ไม่สามารถเปลี่ยนสิทธิ์สำหรับลิงค์แชร์สาธารณะ", "Wrong or no update parameter given" : "ไม่ถูกต้องหรือไม่ได้อัพเดทพารามิเตอร์", + "Can't change permissions for public share links" : "ไม่สามารถเปลี่ยนสิทธิ์สำหรับลิงค์แชร์สาธารณะ", "Cannot increase permissions" : "ไม่สามารถเพิ่มสิทธิ์", "A file or folder has been <strong>shared</strong>" : "ไฟล์หรือโฟลเดอร์ได้ถูก <strong>แชร์</strong>", "A file or folder was shared from <strong>another server</strong>" : "ไฟล์หรือโฟลเดอร์จะถูกแชร์จาก <strong>เซิร์ฟเวอร์อื่นๆ</ strong>", @@ -75,6 +74,7 @@ OC.L10N.register( "Public link of %2$s expired" : "ลิงค์สาธารณะของ %2$s หมดอายุแล้ว", "Shared by %2$s" : "แชร์โดย %2$s", "Shares" : "แชร์", + "Share API is disabled" : "แชร์ API ถูกปิดใช้งาน", "This share is password-protected" : "นี้แชร์การป้องกันด้วยรหัสผ่าน", "The password is wrong. Try again." : "รหัสผ่านที่ไม่ถูกต้อง กรุณาลองอีกครั้ง", "Password" : "รหัสผ่าน", diff --git a/apps/files_sharing/l10n/th_TH.json b/apps/files_sharing/l10n/th_TH.json index b7076598ed9..d78f80ab31e 100644 --- a/apps/files_sharing/l10n/th_TH.json +++ b/apps/files_sharing/l10n/th_TH.json @@ -11,7 +11,6 @@ "You can upload into this folder" : "คุณสามารถอัพโหลดลงในโฟลเดอร์นี้", "Shared by" : "ถูกแชร์โดย", "Sharing" : "แชร์ข้อมูล", - "Share API is disabled" : "แชร์ API ถูกปิดใช้งาน", "Wrong share ID, share doesn't exist" : "แชร์ไอดีผิด หรือ ไม่มีแชร์นั้นอยู่", "Could not delete share" : "ไม่สามารถลบแชร์", "Please specify a file or folder path" : "โปรดระบุเส้นทางของไฟล์หรือโฟลเดอร์", @@ -27,8 +26,8 @@ "Unknown share type" : "ไม่รู้จักประเภทของแชร์", "Not a directory" : "ไม่ได้เป็นไดเรกทอรี", "Could not lock path" : "ไม่สามารถล็อคเส้นทาง", - "Can't change permissions for public share links" : "ไม่สามารถเปลี่ยนสิทธิ์สำหรับลิงค์แชร์สาธารณะ", "Wrong or no update parameter given" : "ไม่ถูกต้องหรือไม่ได้อัพเดทพารามิเตอร์", + "Can't change permissions for public share links" : "ไม่สามารถเปลี่ยนสิทธิ์สำหรับลิงค์แชร์สาธารณะ", "Cannot increase permissions" : "ไม่สามารถเพิ่มสิทธิ์", "A file or folder has been <strong>shared</strong>" : "ไฟล์หรือโฟลเดอร์ได้ถูก <strong>แชร์</strong>", "A file or folder was shared from <strong>another server</strong>" : "ไฟล์หรือโฟลเดอร์จะถูกแชร์จาก <strong>เซิร์ฟเวอร์อื่นๆ</ strong>", @@ -73,6 +72,7 @@ "Public link of %2$s expired" : "ลิงค์สาธารณะของ %2$s หมดอายุแล้ว", "Shared by %2$s" : "แชร์โดย %2$s", "Shares" : "แชร์", + "Share API is disabled" : "แชร์ API ถูกปิดใช้งาน", "This share is password-protected" : "นี้แชร์การป้องกันด้วยรหัสผ่าน", "The password is wrong. Try again." : "รหัสผ่านที่ไม่ถูกต้อง กรุณาลองอีกครั้ง", "Password" : "รหัสผ่าน", diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js index e68fb662e84..18d0330eec5 100644 --- a/apps/files_sharing/l10n/tr.js +++ b/apps/files_sharing/l10n/tr.js @@ -1,13 +1,6 @@ OC.L10N.register( "files_sharing", { - "Server to server sharing is not enabled on this server" : "Sunucudan sunucuya paylaşım bu sunucuda etkin değil", - "The mountpoint name contains invalid characters." : "Bağlama noktası adı geçersiz karakterler içeriyor.", - "Not allowed to create a federated share with the same user server" : "Aynı sunucuda kullanıcılarla birleşmiş bir paylaşım oluşturmaya izin verilmez", - "Invalid or untrusted SSL certificate" : "Geçersiz veya güvenilmeyen SSL sertifikası", - "Could not authenticate to remote share, password might be wrong" : "Uzak paylaşım kimliği doğrulanamadı, parola hatalı olabilir", - "Storage not valid" : "Depolama geçerli değil", - "Couldn't add remote share" : "Uzak paylaşım eklenemedi", "Shared with you" : "Sizinle paylaşılmış", "Shared with others" : "Diğerleri ile paylaşılmış", "Shared by link" : "Bağlantı ile paylaşılmış", @@ -17,15 +10,31 @@ OC.L10N.register( "Files and folders you share will show up here" : "Paylaştığınız dosya ve klasörler burada gösterilecek", "No shared links" : "Paylaşılan bağlantı yok", "Files and folders you share by link will show up here" : "Bağlantı ile paylaştığınız dosya ve klasörler burada gösterilecek", - "Do you want to add the remote share {name} from {owner}@{remote}?" : "{owner}@{remote} konumundan {name} uzak paylaşımını eklemek istiyor musunuz?", - "Remote share" : "Uzak paylaşım", - "Remote share password" : "Uzak paylaşım parolası", - "Cancel" : "İptal", - "Add remote share" : "Uzak paylaşım ekle", "You can upload into this folder" : "Bu dizine yükleme yapabilirsiniz", + "No compatible server found at {remote}" : "{remote} konumunda uyumlu sunucu bulunamadı", + "Invalid server URL" : "Geçersiz sunucu adresi", + "Failed to add the public link to your Nextcloud" : "Nextcould'a herkese açık bağlantı eklenemedi", + "No expiration date set" : "Son kullanma tarihi atanmamış", "Shared by" : "Paylaşan", "Sharing" : "Paylaşım", + "Wrong share ID, share doesn't exist" : "Hatalı paylaşım kimliği, paylaşım mevcut değil", "Could not delete share" : "Paylaşım kaldırılamadı", + "Please specify a file or folder path" : "Lütfen bir dosya veya dizin yolu belirtin", + "Wrong path, file/folder doesn't exist" : "Hatalı yol, dosya/dizin mevcut değil", + "Please specify a valid user" : "Lütfen geçerli bir kullanıcı belirtin", + "Group sharing is disabled by the administrator" : "Grup paylaşımı yönetici tarafından kapatılmış", + "Please specify a valid group" : "Lütfen geçerli bir grup belirtin", + "Public link sharing is disabled by the administrator" : "Herkese açık bağlantı paylaşımı yönetici tarafından kapatılmış", + "Public upload disabled by the administrator" : "Herkese açık yükleme yönetici tarafından kapatılmış", + "Public upload is only possible for publicly shared folders" : "Herkese açık yükleme ancak herkese açık paylaşılmış dizinler için mümkündür", + "Invalid date, date format must be YYYY-MM-DD" : "Geçersiz tarih, tarih formatı YYYY-AA-GG olmalıdır", + "Sharing %s failed because the back end does not allow shares from type %s" : "Arka uç %s türündeki paylaşımlara izin vermediğinden %s paylaşımı başarısız oldu", + "Unknown share type" : "Bilinmeyen paylaşım türü", + "Not a directory" : "Bir dizin değil", + "Could not lock path" : "Yol kilitlenemedi", + "Wrong or no update parameter given" : "Hatalı parametre veya parametre girilmedi", + "Can't change permissions for public share links" : "Herkese açık paylaşılan bağlantıların erişim hakları değiştirilemez", + "Cannot increase permissions" : "Erişim izinleri yükseltilemez", "A file or folder has been <strong>shared</strong>" : "Bir dosya veya klasör <strong>paylaşıldı</strong>", "A file or folder was shared from <strong>another server</strong>" : "<strong>Başka sunucudan</strong> bir dosya veya klasör paylaşıldı", "A public shared file or folder was <strong>downloaded</strong>" : "Herkese açık paylaşılan bir dosya veya klasör <strong>indirildi</strong>", @@ -69,22 +78,27 @@ OC.L10N.register( "Public link of %2$s expired" : "%2$s için paylaşım bağlantısı süresi doldu", "Shared by %2$s" : "%2$s tarafından paylaşıldı", "Shares" : "Paylaşımlar", + "Share API is disabled" : "Paylaşım API'si kapalı", "This share is password-protected" : "Bu paylaşım parola korumalı", "The password is wrong. Try again." : "Parola hatalı. Yeniden deneyin.", "Password" : "Parola", "No entries found in this folder" : "Bu klasörde hiçbir girdi bulunamadı", "Name" : "Ad", "Share time" : "Paylaşma zamanı", + "Expiration date" : "Son kullanım tarihi", "Sorry, this link doesn’t seem to work anymore." : "Üzgünüz, bu bağlantı artık çalışıyor gibi görünmüyor.", "Reasons might be:" : "Sebepleri şunlar olabilir:", "the item was removed" : "öge kaldırılmış", "the link expired" : "bağlantı süresi dolmuş", "sharing is disabled" : "paylaşım devre dışı", "For more info, please ask the person who sent this link." : "Daha fazla bilgi için bu bağlantıyı aldığınız kişi ile iletişime geçin.", - "Add to your ownCloud" : "ownCloud'ınıza Ekleyin", + "Add to your Nextcloud" : "Nextcloud'unuza ekleyin", "Download" : "İndir", "Download %s" : "İndir: %s", "Direct link" : "Doğrudan bağlantı", + "Upload files to %s" : "Dosyaları %s konumuna yükle", + "Select or drop files" : "Dosyaları seçin veya bırakın", + "Uploading files…" : "Dosyalar yükleniyor...", "Uploaded files:" : "Yüklenmiş dosyalar:" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json index 9559a63a944..c9427f1eda9 100644 --- a/apps/files_sharing/l10n/tr.json +++ b/apps/files_sharing/l10n/tr.json @@ -1,11 +1,4 @@ { "translations": { - "Server to server sharing is not enabled on this server" : "Sunucudan sunucuya paylaşım bu sunucuda etkin değil", - "The mountpoint name contains invalid characters." : "Bağlama noktası adı geçersiz karakterler içeriyor.", - "Not allowed to create a federated share with the same user server" : "Aynı sunucuda kullanıcılarla birleşmiş bir paylaşım oluşturmaya izin verilmez", - "Invalid or untrusted SSL certificate" : "Geçersiz veya güvenilmeyen SSL sertifikası", - "Could not authenticate to remote share, password might be wrong" : "Uzak paylaşım kimliği doğrulanamadı, parola hatalı olabilir", - "Storage not valid" : "Depolama geçerli değil", - "Couldn't add remote share" : "Uzak paylaşım eklenemedi", "Shared with you" : "Sizinle paylaşılmış", "Shared with others" : "Diğerleri ile paylaşılmış", "Shared by link" : "Bağlantı ile paylaşılmış", @@ -15,15 +8,31 @@ "Files and folders you share will show up here" : "Paylaştığınız dosya ve klasörler burada gösterilecek", "No shared links" : "Paylaşılan bağlantı yok", "Files and folders you share by link will show up here" : "Bağlantı ile paylaştığınız dosya ve klasörler burada gösterilecek", - "Do you want to add the remote share {name} from {owner}@{remote}?" : "{owner}@{remote} konumundan {name} uzak paylaşımını eklemek istiyor musunuz?", - "Remote share" : "Uzak paylaşım", - "Remote share password" : "Uzak paylaşım parolası", - "Cancel" : "İptal", - "Add remote share" : "Uzak paylaşım ekle", "You can upload into this folder" : "Bu dizine yükleme yapabilirsiniz", + "No compatible server found at {remote}" : "{remote} konumunda uyumlu sunucu bulunamadı", + "Invalid server URL" : "Geçersiz sunucu adresi", + "Failed to add the public link to your Nextcloud" : "Nextcould'a herkese açık bağlantı eklenemedi", + "No expiration date set" : "Son kullanma tarihi atanmamış", "Shared by" : "Paylaşan", "Sharing" : "Paylaşım", + "Wrong share ID, share doesn't exist" : "Hatalı paylaşım kimliği, paylaşım mevcut değil", "Could not delete share" : "Paylaşım kaldırılamadı", + "Please specify a file or folder path" : "Lütfen bir dosya veya dizin yolu belirtin", + "Wrong path, file/folder doesn't exist" : "Hatalı yol, dosya/dizin mevcut değil", + "Please specify a valid user" : "Lütfen geçerli bir kullanıcı belirtin", + "Group sharing is disabled by the administrator" : "Grup paylaşımı yönetici tarafından kapatılmış", + "Please specify a valid group" : "Lütfen geçerli bir grup belirtin", + "Public link sharing is disabled by the administrator" : "Herkese açık bağlantı paylaşımı yönetici tarafından kapatılmış", + "Public upload disabled by the administrator" : "Herkese açık yükleme yönetici tarafından kapatılmış", + "Public upload is only possible for publicly shared folders" : "Herkese açık yükleme ancak herkese açık paylaşılmış dizinler için mümkündür", + "Invalid date, date format must be YYYY-MM-DD" : "Geçersiz tarih, tarih formatı YYYY-AA-GG olmalıdır", + "Sharing %s failed because the back end does not allow shares from type %s" : "Arka uç %s türündeki paylaşımlara izin vermediğinden %s paylaşımı başarısız oldu", + "Unknown share type" : "Bilinmeyen paylaşım türü", + "Not a directory" : "Bir dizin değil", + "Could not lock path" : "Yol kilitlenemedi", + "Wrong or no update parameter given" : "Hatalı parametre veya parametre girilmedi", + "Can't change permissions for public share links" : "Herkese açık paylaşılan bağlantıların erişim hakları değiştirilemez", + "Cannot increase permissions" : "Erişim izinleri yükseltilemez", "A file or folder has been <strong>shared</strong>" : "Bir dosya veya klasör <strong>paylaşıldı</strong>", "A file or folder was shared from <strong>another server</strong>" : "<strong>Başka sunucudan</strong> bir dosya veya klasör paylaşıldı", "A public shared file or folder was <strong>downloaded</strong>" : "Herkese açık paylaşılan bir dosya veya klasör <strong>indirildi</strong>", @@ -67,22 +76,27 @@ "Public link of %2$s expired" : "%2$s için paylaşım bağlantısı süresi doldu", "Shared by %2$s" : "%2$s tarafından paylaşıldı", "Shares" : "Paylaşımlar", + "Share API is disabled" : "Paylaşım API'si kapalı", "This share is password-protected" : "Bu paylaşım parola korumalı", "The password is wrong. Try again." : "Parola hatalı. Yeniden deneyin.", "Password" : "Parola", "No entries found in this folder" : "Bu klasörde hiçbir girdi bulunamadı", "Name" : "Ad", "Share time" : "Paylaşma zamanı", + "Expiration date" : "Son kullanım tarihi", "Sorry, this link doesn’t seem to work anymore." : "Üzgünüz, bu bağlantı artık çalışıyor gibi görünmüyor.", "Reasons might be:" : "Sebepleri şunlar olabilir:", "the item was removed" : "öge kaldırılmış", "the link expired" : "bağlantı süresi dolmuş", "sharing is disabled" : "paylaşım devre dışı", "For more info, please ask the person who sent this link." : "Daha fazla bilgi için bu bağlantıyı aldığınız kişi ile iletişime geçin.", - "Add to your ownCloud" : "ownCloud'ınıza Ekleyin", + "Add to your Nextcloud" : "Nextcloud'unuza ekleyin", "Download" : "İndir", "Download %s" : "İndir: %s", "Direct link" : "Doğrudan bağlantı", + "Upload files to %s" : "Dosyaları %s konumuna yükle", + "Select or drop files" : "Dosyaları seçin veya bırakın", + "Uploading files…" : "Dosyalar yükleniyor...", "Uploaded files:" : "Yüklenmiş dosyalar:" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js index f9d240080c5..80addb4fe86 100644 --- a/apps/files_sharing/l10n/zh_CN.js +++ b/apps/files_sharing/l10n/zh_CN.js @@ -13,7 +13,6 @@ OC.L10N.register( "You can upload into this folder" : "您可以上传文件至此文件夹", "Shared by" : "共享人", "Sharing" : "共享", - "Share API is disabled" : "共享 API 已被禁用", "Wrong share ID, share doesn't exist" : "错误的共享 ID,共享不存在", "Could not delete share" : "不能删除共享", "Please specify a file or folder path" : "请指定一个文件或文件夹路径", @@ -29,8 +28,8 @@ OC.L10N.register( "Unknown share type" : "未知共享类型", "Not a directory" : "不是一个目录", "Could not lock path" : "无法锁定路径", - "Can't change permissions for public share links" : "不能改变公共分享链接权限", "Wrong or no update parameter given" : "错误或没有更新参数给出", + "Can't change permissions for public share links" : "不能改变公共分享链接权限", "Cannot increase permissions" : "不能增加权限", "A file or folder has been <strong>shared</strong>" : "一个文件或文件夹已<strong>共享</strong>。", "A file or folder was shared from <strong>another server</strong>" : "<strong>其它服务器</strong> 中一个文件或者文件夹被共享 ", @@ -75,6 +74,7 @@ OC.L10N.register( "Public link of %2$s expired" : "%2$s 的公开链接已过期", "Shared by %2$s" : "由 %2$s 共享", "Shares" : "共享", + "Share API is disabled" : "共享 API 已被禁用", "This share is password-protected" : "这是一个密码保护的共享", "The password is wrong. Try again." : "用户名或密码错误!请重试", "Password" : "密码", diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json index bd7ce8f712d..6110036a466 100644 --- a/apps/files_sharing/l10n/zh_CN.json +++ b/apps/files_sharing/l10n/zh_CN.json @@ -11,7 +11,6 @@ "You can upload into this folder" : "您可以上传文件至此文件夹", "Shared by" : "共享人", "Sharing" : "共享", - "Share API is disabled" : "共享 API 已被禁用", "Wrong share ID, share doesn't exist" : "错误的共享 ID,共享不存在", "Could not delete share" : "不能删除共享", "Please specify a file or folder path" : "请指定一个文件或文件夹路径", @@ -27,8 +26,8 @@ "Unknown share type" : "未知共享类型", "Not a directory" : "不是一个目录", "Could not lock path" : "无法锁定路径", - "Can't change permissions for public share links" : "不能改变公共分享链接权限", "Wrong or no update parameter given" : "错误或没有更新参数给出", + "Can't change permissions for public share links" : "不能改变公共分享链接权限", "Cannot increase permissions" : "不能增加权限", "A file or folder has been <strong>shared</strong>" : "一个文件或文件夹已<strong>共享</strong>。", "A file or folder was shared from <strong>another server</strong>" : "<strong>其它服务器</strong> 中一个文件或者文件夹被共享 ", @@ -73,6 +72,7 @@ "Public link of %2$s expired" : "%2$s 的公开链接已过期", "Shared by %2$s" : "由 %2$s 共享", "Shares" : "共享", + "Share API is disabled" : "共享 API 已被禁用", "This share is password-protected" : "这是一个密码保护的共享", "The password is wrong. Try again." : "用户名或密码错误!请重试", "Password" : "密码", diff --git a/apps/files_sharing/lib/API/OCSShareWrapper.php b/apps/files_sharing/lib/API/OCSShareWrapper.php deleted file mode 100644 index fc1115647ed..00000000000 --- a/apps/files_sharing/lib/API/OCSShareWrapper.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ -namespace OCA\Files_Sharing\API; - -class OCSShareWrapper { - - /** - * @return Share20OCS - */ - private function getShare20OCS() { - return new Share20OCS( - \OC::$server->getShareManager(), - \OC::$server->getGroupManager(), - \OC::$server->getUserManager(), - \OC::$server->getRequest(), - \OC::$server->getRootFolder(), - \OC::$server->getURLGenerator(), - \OC::$server->getUserSession()->getUser(), - \OC::$server->getL10N('files_sharing') - ); - } - - public function getAllShares() { - return $this->getShare20OCS()->getShares(); - } - - public function createShare() { - return $this->getShare20OCS()->createShare(); - } - - public function getShare($params) { - $id = $params['id']; - return $this->getShare20OCS()->getShare($id); - } - - public function updateShare($params) { - $id = $params['id']; - return $this->getShare20OCS()->updateShare($id); - } - - public function deleteShare($params) { - $id = $params['id']; - return $this->getShare20OCS()->deleteShare($id); - } -} diff --git a/apps/files_sharing/lib/API/Share20OCS.php b/apps/files_sharing/lib/API/Share20OCS.php index fd5e5ddc786..0cce05c3b17 100644 --- a/apps/files_sharing/lib/API/Share20OCS.php +++ b/apps/files_sharing/lib/API/Share20OCS.php @@ -23,6 +23,12 @@ */ namespace OCA\Files_Sharing\API; +use OCP\AppFramework\Http\DataResponse; +use OCP\AppFramework\OCS\OCSBadRequestException; +use OCP\AppFramework\OCS\OCSException; +use OCP\AppFramework\OCS\OCSForbiddenException; +use OCP\AppFramework\OCS\OCSNotFoundException; +use OCP\AppFramework\OCSController; use OCP\Files\NotFoundException; use OCP\IGroupManager; use OCP\IL10N; @@ -32,7 +38,6 @@ use OCP\IURLGenerator; use OCP\IUser; use OCP\Files\IRootFolder; use OCP\Lock\LockedException; -use OCP\Share; use OCP\Share\IManager; use OCP\Share\Exceptions\ShareNotFound; use OCP\Share\Exceptions\GenericShareException; @@ -43,7 +48,7 @@ use OCP\Lock\ILockingProvider; * * @package OCA\Files_Sharing\API */ -class Share20OCS { +class Share20OCS extends OCSController { /** @var IManager */ private $shareManager; @@ -52,7 +57,7 @@ class Share20OCS { /** @var IUserManager */ private $userManager; /** @var IRequest */ - private $request; + protected $request; /** @var IRootFolder */ private $rootFolder; /** @var IURLGenerator */ @@ -61,28 +66,35 @@ class Share20OCS { private $currentUser; /** @var IL10N */ private $l; + /** @var \OCP\Files\Node */ + private $lockedNode; /** * Share20OCS constructor. * + * @param string $appName + * @param IRequest $request * @param IManager $shareManager * @param IGroupManager $groupManager * @param IUserManager $userManager - * @param IRequest $request * @param IRootFolder $rootFolder * @param IURLGenerator $urlGenerator * @param IUser $currentUser + * @param IL10N $l10n */ public function __construct( + $appName, + IRequest $request, IManager $shareManager, IGroupManager $groupManager, IUserManager $userManager, - IRequest $request, IRootFolder $rootFolder, IURLGenerator $urlGenerator, IUser $currentUser, IL10N $l10n ) { + parent::__construct($appName, $request); + $this->shareManager = $shareManager; $this->userManager = $userManager; $this->groupManager = $groupManager; @@ -133,7 +145,7 @@ class Share20OCS { } else { $result['item_type'] = 'file'; } - $result['mimetype'] = $node->getMimeType(); + $result['mimetype'] = $node->getMimetype(); $result['storage_id'] = $node->getStorage()->getId(); $result['storage'] = $node->getStorage()->getCache()->getNumericStorageId(); $result['item_source'] = $node->getId(); @@ -175,96 +187,93 @@ class Share20OCS { /** * Get a specific share by id * + * @NoAdminRequired + * * @param string $id - * @return \OC_OCS_Result + * @return DataResponse + * @throws OCSNotFoundException */ public function getShare($id) { - if (!$this->shareManager->shareApiEnabled()) { - return new \OC_OCS_Result(null, 404, $this->l->t('Share API is disabled')); - } - try { $share = $this->getShareById($id); } catch (ShareNotFound $e) { - return new \OC_OCS_Result(null, 404, $this->l->t('Wrong share ID, share doesn\'t exist')); + throw new OCSNotFoundException($this->l->t('Wrong share ID, share doesn\'t exist')); } if ($this->canAccessShare($share)) { try { $share = $this->formatShare($share); - return new \OC_OCS_Result([$share]); + return new DataResponse(['data' => [$share]]); } catch (NotFoundException $e) { //Fall trough } } - return new \OC_OCS_Result(null, 404, $this->l->t('Wrong share ID, share doesn\'t exist')); + throw new OCSNotFoundException($this->l->t('Wrong share ID, share doesn\'t exist')); } /** * Delete a share * + * @NoAdminRequired + * * @param string $id - * @return \OC_OCS_Result + * @return DataResponse + * @throws OCSNotFoundException */ public function deleteShare($id) { - if (!$this->shareManager->shareApiEnabled()) { - return new \OC_OCS_Result(null, 404, $this->l->t('Share API is disabled')); - } - try { $share = $this->getShareById($id); } catch (ShareNotFound $e) { - return new \OC_OCS_Result(null, 404, $this->l->t('Wrong share ID, share doesn\'t exist')); + throw new OCSNotFoundException($this->l->t('Wrong share ID, share doesn\'t exist')); } try { - $share->getNode()->lock(ILockingProvider::LOCK_SHARED); + $this->lock($share->getNode()); } catch (LockedException $e) { - return new \OC_OCS_Result(null, 404, 'could not delete share'); + throw new OCSNotFoundException($this->l->t('could not delete share')); } - if (!$this->canAccessShare($share)) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 404, $this->l->t('Could not delete share')); + if (!$this->canAccessShare($share, false)) { + throw new OCSNotFoundException($this->l->t('Could not delete share')); } $this->shareManager->deleteShare($share); - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - - return new \OC_OCS_Result(); + return new DataResponse(); } /** - * @return \OC_OCS_Result + * @NoAdminRequired + * + * @return DataResponse + * @throws OCSNotFoundException + * @throws OCSForbiddenException + * @throws OCSBadRequestException + * @throws OCSException */ public function createShare() { $share = $this->shareManager->newShare(); - if (!$this->shareManager->shareApiEnabled()) { - return new \OC_OCS_Result(null, 404, $this->l->t('Share API is disabled')); - } - // Verify path $path = $this->request->getParam('path', null); if ($path === null) { - return new \OC_OCS_Result(null, 404, $this->l->t('Please specify a file or folder path')); + throw new OCSNotFoundException($this->l->t('Please specify a file or folder path')); } $userFolder = $this->rootFolder->getUserFolder($this->currentUser->getUID()); try { $path = $userFolder->get($path); } catch (NotFoundException $e) { - return new \OC_OCS_Result(null, 404, $this->l->t('Wrong path, file/folder doesn\'t exist')); + throw new OCSNotFoundException($this->l->t('Wrong path, file/folder doesn\'t exist')); } $share->setNode($path); try { - $share->getNode()->lock(ILockingProvider::LOCK_SHARED); + $this->lock($share->getNode()); } catch (LockedException $e) { - return new \OC_OCS_Result(null, 404, 'Could not create share'); + throw new OCSNotFoundException($this->l->t('Could not create share')); } // Parse permissions (if available) @@ -276,8 +285,7 @@ class Share20OCS { } if ($permissions < 0 || $permissions > \OCP\Constants::PERMISSION_ALL) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 404, 'invalid permissions'); + throw new OCSNotFoundException($this->l->t('invalid permissions')); } // Shares always require read permissions @@ -304,29 +312,25 @@ class Share20OCS { if ($shareType === \OCP\Share::SHARE_TYPE_USER) { // Valid user is required to share if ($shareWith === null || !$this->userManager->userExists($shareWith)) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 404, $this->l->t('Please specify a valid user')); + throw new OCSNotFoundException($this->l->t('Please specify a valid user')); } $share->setSharedWith($shareWith); $share->setPermissions($permissions); } else if ($shareType === \OCP\Share::SHARE_TYPE_GROUP) { if (!$this->shareManager->allowGroupSharing()) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 404, $this->l->t('Group sharing is disabled by the administrator')); + throw new OCSNotFoundException($this->l->t('Group sharing is disabled by the administrator')); } // Valid group is required to share if ($shareWith === null || !$this->groupManager->groupExists($shareWith)) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 404, $this->l->t('Please specify a valid group')); + throw new OCSNotFoundException($this->l->t('Please specify a valid group')); } $share->setSharedWith($shareWith); $share->setPermissions($permissions); } else if ($shareType === \OCP\Share::SHARE_TYPE_LINK) { //Can we even share links? if (!$this->shareManager->shareApiAllowLinks()) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 404, $this->l->t('Public link sharing is disabled by the administrator')); + throw new OCSNotFoundException($this->l->t('Public link sharing is disabled by the administrator')); } /* @@ -335,22 +339,19 @@ class Share20OCS { */ $existingShares = $this->shareManager->getSharesBy($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_LINK, $path, false, 1, 0); if (!empty($existingShares)) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result($this->formatShare($existingShares[0])); + return new DataResponse(['data' => $this->formatShare($existingShares[0])]); } $publicUpload = $this->request->getParam('publicUpload', null); if ($publicUpload === 'true') { // Check if public upload is allowed if (!$this->shareManager->shareApiLinkAllowPublicUpload()) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 403, $this->l->t('Public upload disabled by the administrator')); + throw new OCSForbiddenException($this->l->t('Public upload disabled by the administrator')); } // Public upload can only be set for folders if ($path instanceof \OCP\Files\File) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 404, $this->l->t('Public upload is only possible for publicly shared folders')); + throw new OCSNotFoundException($this->l->t('Public upload is only possible for publicly shared folders')); } $share->setPermissions( @@ -378,22 +379,19 @@ class Share20OCS { $expireDate = $this->parseDate($expireDate); $share->setExpirationDate($expireDate); } catch (\Exception $e) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 404, $this->l->t('Invalid date, date format must be YYYY-MM-DD')); + throw new OCSNotFoundException($this->l->t('Invalid date, date format must be YYYY-MM-DD')); } } } else if ($shareType === \OCP\Share::SHARE_TYPE_REMOTE) { if (!$this->shareManager->outgoingServer2ServerSharesAllowed()) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 403, $this->l->t('Sharing %s failed because the back end does not allow shares from type %s', [$path->getPath(), $shareType])); + throw new OCSForbiddenException($this->l->t('Sharing %s failed because the back end does not allow shares from type %s', [$path->getPath(), $shareType])); } $share->setSharedWith($shareWith); $share->setPermissions($permissions); } else { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 400, $this->l->t('Unknown share type')); + throw new OCSBadRequestException($this->l->t('Unknown share type')); } $share->setShareType($shareType); @@ -403,23 +401,19 @@ class Share20OCS { $share = $this->shareManager->createShare($share); } catch (GenericShareException $e) { $code = $e->getCode() === 0 ? 403 : $e->getCode(); - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, $code, $e->getHint()); + throw new OCSException($e->getHint(), $code); }catch (\Exception $e) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 403, $e->getMessage()); + throw new OCSForbiddenException($e->getMessage()); } $output = $this->formatShare($share); - $share->getNode()->unlock(\OCP\Lock\ILockingProvider::LOCK_SHARED); - - return new \OC_OCS_Result($output); + return new DataResponse(['data' => $output]); } /** * @param \OCP\Files\File|\OCP\Files\Folder $node - * @return \OC_OCS_Result + * @return DataResponse */ private function getSharedWithMe($node = null) { $userShares = $this->shareManager->getSharedWith($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_USER, $node, -1, 0); @@ -438,16 +432,17 @@ class Share20OCS { } } - return new \OC_OCS_Result($formatted); + return new DataResponse(['data' => $formatted]); } /** * @param \OCP\Files\Folder $folder - * @return \OC_OCS_Result + * @return DataResponse + * @throws OCSBadRequestException */ private function getSharesInDir($folder) { if (!($folder instanceof \OCP\Files\Folder)) { - return new \OC_OCS_Result(null, 400, $this->l->t('Not a directory')); + throw new OCSBadRequestException($this->l->t('Not a directory')); } $nodes = $folder->getDirectoryListing(); @@ -471,25 +466,24 @@ class Share20OCS { } } - return new \OC_OCS_Result($formatted); + return new DataResponse(['data' => $formatted]); } /** * The getShares function. * + * @NoAdminRequired + * * - Get shares by the current user * - Get shares by the current user and reshares (?reshares=true) * - Get shares with the current user (?shared_with_me=true) * - Get shares for a specific path (?path=...) * - Get all shares in a folder (?subfiles=true&path=..) * - * @return \OC_OCS_Result + * @return DataResponse + * @throws OCSNotFoundException */ public function getShares() { - if (!$this->shareManager->shareApiEnabled()) { - return new \OC_OCS_Result(); - } - $sharedWithMe = $this->request->getParam('shared_with_me', null); $reshares = $this->request->getParam('reshares', null); $subfiles = $this->request->getParam('subfiles'); @@ -499,27 +493,21 @@ class Share20OCS { $userFolder = $this->rootFolder->getUserFolder($this->currentUser->getUID()); try { $path = $userFolder->get($path); - $path->lock(ILockingProvider::LOCK_SHARED); + $this->lock($path); } catch (\OCP\Files\NotFoundException $e) { - return new \OC_OCS_Result(null, 404, $this->l->t('Wrong path, file/folder doesn\'t exist')); + throw new OCSNotFoundException($this->l->t('Wrong path, file/folder doesn\'t exist')); } catch (LockedException $e) { - return new \OC_OCS_Result(null, 404, $this->l->t('Could not lock path')); + throw new OCSNotFoundException($this->l->t('Could not lock path')); } } if ($sharedWithMe === 'true') { $result = $this->getSharedWithMe($path); - if ($path !== null) { - $path->unlock(ILockingProvider::LOCK_SHARED); - } return $result; } if ($subfiles === 'true') { $result = $this->getSharesInDir($path); - if ($path !== null) { - $path->unlock(ILockingProvider::LOCK_SHARED); - } return $result; } @@ -549,33 +537,29 @@ class Share20OCS { } } - if ($path !== null) { - $path->unlock(ILockingProvider::LOCK_SHARED); - } - - return new \OC_OCS_Result($formatted); + return new DataResponse(['data' => $formatted]); } /** + * @NoAdminRequired + * * @param int $id - * @return \OC_OCS_Result + * @return DataResponse + * @throws OCSNotFoundException + * @throws OCSBadRequestException + * @throws OCSForbiddenException */ public function updateShare($id) { - if (!$this->shareManager->shareApiEnabled()) { - return new \OC_OCS_Result(null, 404, $this->l->t('Share API is disabled')); - } - try { $share = $this->getShareById($id); } catch (ShareNotFound $e) { - return new \OC_OCS_Result(null, 404, $this->l->t('Wrong share ID, share doesn\'t exist')); + throw new OCSNotFoundException($this->l->t('Wrong share ID, share doesn\'t exist')); } - $share->getNode()->lock(\OCP\Lock\ILockingProvider::LOCK_SHARED); + $this->lock($share->getNode()); - if (!$this->canAccessShare($share)) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 404, $this->l->t('Wrong share ID, share doesn\'t exist')); + if (!$this->canAccessShare($share, false)) { + throw new OCSNotFoundException($this->l->t('Wrong share ID, share doesn\'t exist')); } $permissions = $this->request->getParam('permissions', null); @@ -588,8 +572,7 @@ class Share20OCS { */ if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) { if ($permissions === null && $password === null && $publicUpload === null && $expireDate === null) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 400, 'Wrong or no update parameter given'); + throw new OCSBadRequestException($this->l->t('Wrong or no update parameter given')); } $newPermissions = null; @@ -611,8 +594,7 @@ class Share20OCS { \OCP\Constants::PERMISSION_CREATE, // hidden file list ]) ) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 400, $this->l->t('Can\'t change permissions for public share links')); + throw new OCSBadRequestException($this->l->t('Can\'t change permissions for public share links')); } if ( @@ -622,13 +604,11 @@ class Share20OCS { $newPermissions === (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE) ) { if (!$this->shareManager->shareApiLinkAllowPublicUpload()) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 403, $this->l->t('Public upload disabled by the administrator')); + throw new OCSForbiddenException($this->l->t('Public upload disabled by the administrator')); } if (!($share->getNode() instanceof \OCP\Files\Folder)) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 400, $this->l->t('Public upload is only possible for publicly shared folders')); + throw new OCSBadRequestException($this->l->t('Public upload is only possible for publicly shared folders')); } // normalize to correct public upload permissions @@ -645,8 +625,7 @@ class Share20OCS { try { $expireDate = $this->parseDate($expireDate); } catch (\Exception $e) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 400, $e->getMessage()); + throw new OCSBadRequestException($e->getMessage()); } $share->setExpirationDate($expireDate); } @@ -660,8 +639,7 @@ class Share20OCS { } else { // For other shares only permissions is valid. if ($permissions === null) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 400, $this->l->t('Wrong or no update parameter given')); + throw new OCSBadRequestException($this->l->t('Wrong or no update parameter given')); } else { $permissions = (int)$permissions; $share->setPermissions($permissions); @@ -673,6 +651,7 @@ class Share20OCS { $incomingShares = $this->shareManager->getSharedWith($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_USER, $share->getNode(), -1, 0); $incomingShares = array_merge($incomingShares, $this->shareManager->getSharedWith($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_GROUP, $share->getNode(), -1, 0)); + /** @var \OCP\Share\IShare[] $incomingShares */ if (!empty($incomingShares)) { $maxPermissions = 0; foreach ($incomingShares as $incomingShare) { @@ -680,8 +659,7 @@ class Share20OCS { } if ($share->getPermissions() & ~$maxPermissions) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 404, $this->l->t('Cannot increase permissions')); + throw new OCSNotFoundException($this->l->t('Cannot increase permissions')); } } } @@ -690,20 +668,17 @@ class Share20OCS { try { $share = $this->shareManager->updateShare($share); } catch (\Exception $e) { - $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); - return new \OC_OCS_Result(null, 400, $e->getMessage()); + throw new OCSBadRequestException($e->getMessage()); } - $share->getNode()->unlock(\OCP\Lock\ILockingProvider::LOCK_SHARED); - - return new \OC_OCS_Result($this->formatShare($share)); + return new DataResponse(['data' => $this->formatShare($share)]); } /** * @param \OCP\Share\IShare $share * @return bool */ - protected function canAccessShare(\OCP\Share\IShare $share) { + protected function canAccessShare(\OCP\Share\IShare $share, $checkGroups = true) { // A file with permissions 0 can't be accessed by us. So Don't show it if ($share->getPermissions() === 0) { return false; @@ -722,7 +697,7 @@ class Share20OCS { return true; } - if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) { + if ($checkGroups && $share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) { $sharedWith = $this->groupManager->get($share->getSharedWith()); if ($sharedWith->inGroup($this->currentUser)) { return true; @@ -782,4 +757,22 @@ class Share20OCS { return $share; } + + /** + * Lock a Node + * @param \OCP\Files\Node $node + */ + private function lock(\OCP\Files\Node $node) { + $node->lock(ILockingProvider::LOCK_SHARED); + $this->lockedNode = $node; + } + + /** + * Cleanup the remaining locks + */ + public function cleanup() { + if ($this->lockedNode !== null) { + $this->lockedNode->unlock(ILockingProvider::LOCK_SHARED); + } + } } diff --git a/apps/files_sharing/lib/AppInfo/Application.php b/apps/files_sharing/lib/AppInfo/Application.php index aff42cd43dc..b9598bd4a2b 100644 --- a/apps/files_sharing/lib/AppInfo/Application.php +++ b/apps/files_sharing/lib/AppInfo/Application.php @@ -28,6 +28,8 @@ namespace OCA\Files_Sharing\AppInfo; use OCA\FederatedFileSharing\DiscoveryManager; +use OCA\Files_Sharing\API\Share20OCS; +use OCA\Files_Sharing\Middleware\OCSShareAPIMiddleware; use OCA\Files_Sharing\MountProvider; use OCP\AppFramework\App; use OC\AppFramework\Utility\SimpleContainer; @@ -35,7 +37,6 @@ use OCA\Files_Sharing\Controllers\ExternalSharesController; use OCA\Files_Sharing\Controllers\ShareController; use OCA\Files_Sharing\Middleware\SharingCheckMiddleware; use \OCP\IContainer; -use OCA\Files_Sharing\Capabilities; class Application extends App { public function __construct(array $urlParams = array()) { @@ -73,6 +74,19 @@ class Application extends App { $c->query('HttpClientService') ); }); + $container->registerService('ShareAPIController', function (SimpleContainer $c) use ($server) { + return new Share20OCS( + $c->query('AppName'), + $c->query('Request'), + $server->getShareManager(), + $server->getGroupManager(), + $server->getUserManager(), + $server->getRootFolder(), + $server->getURLGenerator(), + $server->getUserSession()->getUser(), + $server->getL10N($c->query('AppName')) + ); + }); /** * Core class wrappers @@ -110,8 +124,16 @@ class Application extends App { ); }); + $container->registerService('OCSShareAPIMiddleware', function (SimpleContainer $c) use ($server) { + return new OCSShareAPIMiddleware( + $server->getShareManager(), + $server->getL10N($c->query('AppName')) + ); + }); + // Execute middlewares $container->registerMiddleware('SharingCheckMiddleware'); + $container->registerMiddleWare('OCSShareAPIMiddleware'); $container->registerService('MountProvider', function (IContainer $c) { /** @var \OCP\IServerContainer $server */ diff --git a/apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php b/apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php new file mode 100644 index 00000000000..04a6545c9a7 --- /dev/null +++ b/apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php @@ -0,0 +1,52 @@ +<?php + +namespace OCA\Files_Sharing\Middleware; + +use OCA\Files_Sharing\API\Share20OCS; +use OCP\AppFramework\Http\Response; +use OCP\AppFramework\Middleware; +use OCP\AppFramework\OCS\OCSNotFoundException; +use OCP\IL10N; +use OCP\Share\IManager; + +class OCSShareAPIMiddleware extends Middleware { + /** @var IManager */ + private $shareManager; + /** @var IL10N */ + private $l; + + public function __construct(IManager $shareManager, + IL10N $l) { + $this->shareManager = $shareManager; + $this->l = $l; + } + + /** + * @param \OCP\AppFramework\Controller $controller + * @param string $methodName + * + * @throws OCSNotFoundException + */ + public function beforeController($controller, $methodName) { + if ($controller instanceof Share20OCS) { + if (!$this->shareManager->shareApiEnabled()) { + throw new OCSNotFoundException($this->l->t('Share API is disabled')); + } + } + } + + /** + * @param \OCP\AppFramework\Controller $controller + * @param string $methodName + * @param Response $response + * @return Response + */ + public function afterController($controller, $methodName, Response $response) { + if ($controller instanceof Share20OCS) { + /** @var Share20OCS $controller */ + $controller->cleanup(); + } + + return $response; + } +} diff --git a/apps/files_sharing/lib/MountProvider.php b/apps/files_sharing/lib/MountProvider.php index 1a08b5e9b65..284728597cd 100644 --- a/apps/files_sharing/lib/MountProvider.php +++ b/apps/files_sharing/lib/MountProvider.php @@ -75,16 +75,20 @@ class MountProvider implements IMountProvider { return $share->getPermissions() > 0 && $share->getShareOwner() !== $user->getUID(); }); - $mounts = []; - foreach ($shares as $share) { + $superShares = $this->buildSuperShares($shares, $user); + $mounts = []; + foreach ($superShares as $share) { try { $mounts[] = new SharedMount( '\OC\Files\Storage\Shared', $mounts, [ 'user' => $user->getUID(), - 'newShare' => $share, + // parent share + 'superShare' => $share[0], + // children/component of the superShare + 'groupedShares' => $share[1], ], $storageFactory ); @@ -97,4 +101,84 @@ class MountProvider implements IMountProvider { // array_filter removes the null values from the array return array_filter($mounts); } + + /** + * Groups shares by path (nodeId) and target path + * + * @param \OCP\Share\IShare[] $shares + * @return \OCP\Share\IShare[][] array of grouped shares, each element in the + * array is a group which itself is an array of shares + */ + private function groupShares(array $shares) { + $tmp = []; + + foreach ($shares as $share) { + if (!isset($tmp[$share->getNodeId()])) { + $tmp[$share->getNodeId()] = []; + } + $tmp[$share->getNodeId()][] = $share; + } + + $result = []; + // sort by stime, the super share will be based on the least recent share + foreach ($tmp as &$tmp2) { + @usort($tmp2, function($a, $b) { + if ($a->getShareTime() < $b->getShareTime()) { + return -1; + } + return 1; + }); + $result[] = $tmp2; + } + + return array_values($result); + } + + /** + * Build super shares (virtual share) by grouping them by node id and target, + * then for each group compute the super share and return it along with the matching + * grouped shares. The most permissive permissions are used based on the permissions + * of all shares within the group. + * + * @param \OCP\Share\IShare[] $allShares + * @param \OCP\IUser $user user + * @return array Tuple of [superShare, groupedShares] + */ + private function buildSuperShares(array $allShares, \OCP\IUser $user) { + $result = []; + + $groupedShares = $this->groupShares($allShares); + + /** @var \OCP\Share\IShare[] $shares */ + foreach ($groupedShares as $shares) { + if (count($shares) === 0) { + continue; + } + + $superShare = $this->shareManager->newShare(); + + // compute super share based on first entry of the group + $superShare->setId($shares[0]->getId()) + ->setShareOwner($shares[0]->getShareOwner()) + ->setNodeId($shares[0]->getNodeId()) + ->setTarget($shares[0]->getTarget()); + + // use most permissive permissions + $permissions = 0; + foreach ($shares as $share) { + $permissions |= $share->getPermissions(); + if ($share->getTarget() !== $superShare->getTarget()) { + // adjust target, for database consistency + $share->setTarget($superShare->getTarget()); + $this->shareManager->moveShare($share, $user->getUID()); + } + } + + $superShare->setPermissions($permissions); + + $result[] = [$superShare, $shares]; + } + + return $result; + } } diff --git a/apps/files_sharing/lib/share/file.php b/apps/files_sharing/lib/ShareBackend/File.php index 370e755ec80..aecb63c60e4 100644 --- a/apps/files_sharing/lib/share/file.php +++ b/apps/files_sharing/lib/ShareBackend/File.php @@ -31,9 +31,11 @@ * */ +namespace OCA\Files_Sharing\ShareBackend; + use OCA\FederatedFileSharing\FederatedShareProvider; -class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent { +class File implements \OCP\Share_Backend_File_Dependent { const FORMAT_SHARED_STORAGE = 0; const FORMAT_GET_FOLDER_CONTENTS = 1; diff --git a/apps/files_sharing/lib/share/folder.php b/apps/files_sharing/lib/ShareBackend/Folder.php index e4d90274db1..4929bebf40b 100644 --- a/apps/files_sharing/lib/share/folder.php +++ b/apps/files_sharing/lib/ShareBackend/Folder.php @@ -25,7 +25,9 @@ * */ -class OC_Share_Backend_Folder extends OC_Share_Backend_File implements OCP\Share_Backend_Collection { +namespace OCA\Files_Sharing\ShareBackend; + +class Folder extends File implements \OCP\Share_Backend_Collection { /** * get shared parents diff --git a/apps/files_sharing/lib/SharedMount.php b/apps/files_sharing/lib/SharedMount.php index e5b7edc8e02..57610db9076 100644 --- a/apps/files_sharing/lib/SharedMount.php +++ b/apps/files_sharing/lib/SharedMount.php @@ -52,7 +52,10 @@ class SharedMount extends MountPoint implements MoveableMount { private $user; /** @var \OCP\Share\IShare */ - private $share; + private $superShare; + + /** @var \OCP\Share\IShare[] */ + private $groupedShares; /** * @param string $storage @@ -63,10 +66,13 @@ class SharedMount extends MountPoint implements MoveableMount { public function __construct($storage, array $mountpoints, $arguments = null, $loader = null) { $this->user = $arguments['user']; $this->recipientView = new View('/' . $this->user . '/files'); - $this->share = $arguments['newShare']; - $newMountPoint = $this->verifyMountPoint($this->share, $mountpoints); + + $this->superShare = $arguments['superShare']; + $this->groupedShares = $arguments['groupedShares']; + + $newMountPoint = $this->verifyMountPoint($this->superShare, $mountpoints); $absMountPoint = '/' . $this->user . '/files' . $newMountPoint; - $arguments['ownerView'] = new View('/' . $this->share->getShareOwner() . '/files'); + $arguments['ownerView'] = new View('/' . $this->superShare->getShareOwner() . '/files'); parent::__construct($storage, $absMountPoint, $arguments, $loader); } @@ -108,7 +114,11 @@ class SharedMount extends MountPoint implements MoveableMount { */ private function updateFileTarget($newPath, &$share) { $share->setTarget($newPath); - \OC::$server->getShareManager()->moveShare($share, $this->user); + + foreach ($this->groupedShares as $share) { + $share->setTarget($newPath); + \OC::$server->getShareManager()->moveShare($share, $this->user); + } } @@ -214,7 +224,7 @@ class SharedMount extends MountPoint implements MoveableMount { * @return \OCP\Share\IShare */ public function getShare() { - return $this->share; + return $this->superShare; } /** @@ -223,6 +233,6 @@ class SharedMount extends MountPoint implements MoveableMount { * @return int */ public function getStorageRootId() { - return $this->share->getNodeId(); + return $this->getShare()->getNodeId(); } } diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index 710137cfe9a..8e9a0f41229 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -43,11 +43,11 @@ use OCP\Lock\ILockingProvider; * Convert target path to source path and pass the function call to the correct storage provider */ class Shared extends \OC\Files\Storage\Wrapper\Jail implements ISharedStorage { - - private $share; // the shared resource - /** @var \OCP\Share\IShare */ - private $newShare; + private $superShare; + + /** @var \OCP\Share\IShare[] */ + private $groupedShares; /** * @var \OC\Files\View @@ -77,11 +77,14 @@ class Shared extends \OC\Files\Storage\Wrapper\Jail implements ISharedStorage { public function __construct($arguments) { $this->ownerView = $arguments['ownerView']; $this->logger = \OC::$server->getLogger(); - $this->newShare = $arguments['newShare']; + + $this->superShare = $arguments['superShare']; + $this->groupedShares = $arguments['groupedShares']; + $this->user = $arguments['user']; - Filesystem::initMountPoints($this->newShare->getShareOwner()); - $sourcePath = $this->ownerView->getPath($this->newShare->getNodeId()); + Filesystem::initMountPoints($this->superShare->getShareOwner()); + $sourcePath = $this->ownerView->getPath($this->superShare->getNodeId()); list($storage, $internalPath) = $this->ownerView->resolvePath($sourcePath); parent::__construct([ @@ -96,8 +99,8 @@ class Shared extends \OC\Files\Storage\Wrapper\Jail implements ISharedStorage { } $this->initialized = true; try { - Filesystem::initMountPoints($this->newShare->getShareOwner()); - $sourcePath = $this->ownerView->getPath($this->newShare->getNodeId()); + Filesystem::initMountPoints($this->superShare->getShareOwner()); + $sourcePath = $this->ownerView->getPath($this->superShare->getNodeId()); list($this->sourceStorage, $sourceInternalPath) = $this->ownerView->resolvePath($sourcePath); $this->sourceRootInfo = $this->sourceStorage->getCache()->get($sourceInternalPath); } catch (\Exception $e) { @@ -105,6 +108,13 @@ class Shared extends \OC\Files\Storage\Wrapper\Jail implements ISharedStorage { } } + /** + * @return string + */ + public function getShareId() { + return $this->superShare->getId(); + } + private function isValid() { $this->init(); return $this->sourceRootInfo && ($this->sourceRootInfo->getPermissions() & Constants::PERMISSION_SHARE) === Constants::PERMISSION_SHARE; @@ -120,15 +130,6 @@ class Shared extends \OC\Files\Storage\Wrapper\Jail implements ISharedStorage { } /** - * get file cache of the shared item source - * - * @return int - */ - public function getSourceId() { - return $this->newShare->getNodeId(); - } - - /** * Get the permissions granted for a shared file * * @param string $target Shared target file path @@ -138,7 +139,7 @@ class Shared extends \OC\Files\Storage\Wrapper\Jail implements ISharedStorage { if (!$this->isValid()) { return 0; } - $permissions = $this->newShare->getPermissions(); + $permissions = $this->superShare->getPermissions(); // part files and the mount point always have delete permissions if ($target === '' || pathinfo($target, PATHINFO_EXTENSION) === 'part') { $permissions |= \OCP\Constants::PERMISSION_DELETE; @@ -260,30 +261,18 @@ class Shared extends \OC\Files\Storage\Wrapper\Jail implements ISharedStorage { * @return string */ public function getMountPoint() { - return $this->newShare->getTarget(); + return $this->superShare->getTarget(); } /** * @param string $path */ public function setMountPoint($path) { - $this->newShare->setTarget($path); - } - - /** - * @return int - */ - public function getShareType() { - return $this->newShare->getShareType(); - } + $this->superShare->setTarget($path); - /** - * get share ID - * - * @return integer unique share ID - */ - public function getShareId() { - return $this->newShare->getId(); + foreach ($this->groupedShares as $share) { + $share->setTarget($path); + } } /** @@ -292,14 +281,14 @@ class Shared extends \OC\Files\Storage\Wrapper\Jail implements ISharedStorage { * @return string */ public function getSharedFrom() { - return $this->newShare->getShareOwner(); + return $this->superShare->getShareOwner(); } /** * @return \OCP\Share\IShare */ public function getShare() { - return $this->newShare; + return $this->superShare; } /** @@ -308,7 +297,7 @@ class Shared extends \OC\Files\Storage\Wrapper\Jail implements ISharedStorage { * @return string */ public function getItemType() { - return $this->newShare->getNodeType(); + return $this->superShare->getNodeType(); } public function getCache($path = '', $storage = null) { @@ -337,7 +326,7 @@ class Shared extends \OC\Files\Storage\Wrapper\Jail implements ISharedStorage { } public function getOwner($path) { - return $this->newShare->getShareOwner(); + return $this->superShare->getShareOwner(); } /** @@ -346,7 +335,9 @@ class Shared extends \OC\Files\Storage\Wrapper\Jail implements ISharedStorage { * @return bool */ public function unshareStorage() { - \OC::$server->getShareManager()->deleteFromSelf($this->newShare, $this->user); + foreach ($this->groupedShares as $share) { + \OC::$server->getShareManager()->deleteFromSelf($share, $this->user); + } return true; } @@ -362,7 +353,7 @@ class Shared extends \OC\Files\Storage\Wrapper\Jail implements ISharedStorage { $targetStorage->acquireLock($targetInternalPath, $type, $provider); // lock the parent folders of the owner when locking the share as recipient if ($path === '') { - $sourcePath = $this->ownerView->getPath($this->newShare->getNodeId()); + $sourcePath = $this->ownerView->getPath($this->superShare->getNodeId()); $this->ownerView->lockFile(dirname($sourcePath), ILockingProvider::LOCK_SHARED, true); } } @@ -378,7 +369,7 @@ class Shared extends \OC\Files\Storage\Wrapper\Jail implements ISharedStorage { $targetStorage->releaseLock($targetInternalPath, $type, $provider); // unlock the parent folders of the owner when unlocking the share as recipient if ($path === '') { - $sourcePath = $this->ownerView->getPath($this->newShare->getNodeId()); + $sourcePath = $this->ownerView->getPath($this->superShare->getNodeId()); $this->ownerView->unlockFile(dirname($sourcePath), ILockingProvider::LOCK_SHARED, true); } } diff --git a/apps/files_sharing/tests/API/Share20OCSTest.php b/apps/files_sharing/tests/API/Share20OCSTest.php index 5486a83c159..b32684ef547 100644 --- a/apps/files_sharing/tests/API/Share20OCSTest.php +++ b/apps/files_sharing/tests/API/Share20OCSTest.php @@ -23,6 +23,8 @@ */ namespace OCA\Files_Sharing\Tests\API; +use OCP\AppFramework\Http\DataResponse; +use OCP\AppFramework\OCS\OCSNotFoundException; use OCP\IL10N; use OCA\Files_Sharing\API\Share20OCS; use OCP\Files\NotFoundException; @@ -33,6 +35,7 @@ use OCP\IURLGenerator; use OCP\IUser; use OCP\Files\IRootFolder; use OCP\Lock\LockedException; +use Punic\Data; /** * Class Share20OCSTest @@ -42,6 +45,9 @@ use OCP\Lock\LockedException; */ class Share20OCSTest extends \Test\TestCase { + /** @var string */ + private $appName = 'files_sharing'; + /** @var \OC\Share20\Manager | \PHPUnit_Framework_MockObject_MockObject */ private $shareManager; @@ -94,10 +100,11 @@ class Share20OCSTest extends \Test\TestCase { })); $this->ocs = new Share20OCS( + $this->appName, + $this->request, $this->shareManager, $this->groupManager, $this->userManager, - $this->request, $this->rootFolder, $this->urlGenerator, $this->currentUser, @@ -108,10 +115,11 @@ class Share20OCSTest extends \Test\TestCase { private function mockFormatShare() { return $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS') ->setConstructorArgs([ + $this->appName, + $this->request, $this->shareManager, $this->groupManager, $this->userManager, - $this->request, $this->rootFolder, $this->urlGenerator, $this->currentUser, @@ -124,6 +132,10 @@ class Share20OCSTest extends \Test\TestCase { return \OC::$server->getShareManager()->newShare(); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSNotFoundException + * @expectedExceptionMessage Wrong share ID, share doesn't exist + */ public function testDeleteShareShareNotFound() { $this->shareManager ->expects($this->exactly(2)) @@ -138,8 +150,7 @@ class Share20OCSTest extends \Test\TestCase { $this->shareManager->method('outgoingServer2ServerSharesAllowed')->willReturn(true); - $expected = new \OC_OCS_Result(null, 404, 'Wrong share ID, share doesn\'t exist'); - $this->assertEquals($expected, $this->ocs->deleteShare(42)); + $this->ocs->deleteShare(42); } public function testDeleteShare() { @@ -161,14 +172,18 @@ class Share20OCSTest extends \Test\TestCase { $node->expects($this->once()) ->method('lock') ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); - $node->expects($this->once()) - ->method('unlock') - ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); - $expected = new \OC_OCS_Result(); - $this->assertEquals($expected, $this->ocs->deleteShare(42)); + $expected = new DataResponse(); + $result = $this->ocs->deleteShare(42); + + $this->assertInstanceOf(get_class($expected), $result); + $this->assertEquals($expected->getData(), $result->getData()); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSNotFoundException + * @expectedExceptionMessage could not delete share + */ public function testDeleteShareLocked() { $node = $this->getMockBuilder('\OCP\Files\File')->getMock(); @@ -189,12 +204,8 @@ class Share20OCSTest extends \Test\TestCase { ->method('lock') ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED) ->will($this->throwException(new LockedException('mypath'))); - $node->expects($this->never()) - ->method('unlock') - ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); - $expected = new \OC_OCS_Result(null, 404, 'could not delete share'); - $this->assertEquals($expected, $this->ocs->deleteShare(42)); + $this->ocs->deleteShare(42); } /* @@ -411,10 +422,11 @@ class Share20OCSTest extends \Test\TestCase { public function testGetShare(\OCP\Share\IShare $share, array $result) { $ocs = $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS') ->setConstructorArgs([ + $this->appName, + $this->request, $this->shareManager, $this->groupManager, $this->userManager, - $this->request, $this->rootFolder, $this->urlGenerator, $this->currentUser, @@ -422,7 +434,9 @@ class Share20OCSTest extends \Test\TestCase { ])->setMethods(['canAccessShare']) ->getMock(); - $ocs->method('canAccessShare')->willReturn(true); + $ocs->expects($this->any()) + ->method('canAccessShare') + ->willReturn(true); $this->shareManager ->expects($this->once()) @@ -471,10 +485,13 @@ class Share20OCSTest extends \Test\TestCase { ['group', $group], ])); - $expected = new \OC_OCS_Result([$result]); - $this->assertEquals($expected->getData(), $ocs->getShare($share->getId())->getData()); + $this->assertEquals($result, $ocs->getShare($share->getId())->getData()['data'][0]); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSNotFoundException + * @expectedExceptionMessage Wrong share ID, share doesn't exist + */ public function testGetShareInvalidNode() { $share = \OC::$server->getShareManager()->newShare(); $share->setSharedBy('initiator') @@ -487,8 +504,7 @@ class Share20OCSTest extends \Test\TestCase { ->with('ocinternal:42') ->willReturn($share); - $expected = new \OC_OCS_Result(null, 404, 'Wrong share ID, share doesn\'t exist'); - $this->assertEquals($expected->getMeta(), $this->ocs->getShare(42)->getMeta()); + $this->ocs->getShare(42); } public function testCanAccessShare() { @@ -538,15 +554,18 @@ class Share20OCSTest extends \Test\TestCase { $this->assertFalse($this->invokePrivate($this->ocs, 'canAccessShare', [$share])); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSNotFoundException + * @expectedExceptionMessage Please specify a file or folder path + */ public function testCreateShareNoPath() { - $expected = new \OC_OCS_Result(null, 404, 'Please specify a file or folder path'); - - $result = $this->ocs->createShare(); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $this->ocs->createShare(); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSNotFoundException + * @expectedExceptionMessage Wrong path, file/folder doesn't exist + */ public function testCreateShareInvalidPath() { $this->request ->method('getParam') @@ -565,14 +584,13 @@ class Share20OCSTest extends \Test\TestCase { ->with('invalid-path') ->will($this->throwException(new \OCP\Files\NotFoundException())); - $expected = new \OC_OCS_Result(null, 404, 'Wrong path, file/folder doesn\'t exist'); - - $result = $this->ocs->createShare(); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $this->ocs->createShare(); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSNotFoundException + * @expectedExceptionMessage invalid permissions + */ public function testCreateShareInvalidPermissions() { $share = $this->newShare(); $this->shareManager->method('newShare')->willReturn($share); @@ -600,14 +618,13 @@ class Share20OCSTest extends \Test\TestCase { ->method('lock') ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); - $expected = new \OC_OCS_Result(null, 404, 'invalid permissions'); - - $result = $this->ocs->createShare(); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $this->ocs->createShare(); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSNotFoundException + * @expectedExceptionMessage Please specify a valid user + */ public function testCreateShareUserNoShareWith() { $share = $this->newShare(); $this->shareManager->method('newShare')->willReturn($share); @@ -641,14 +658,13 @@ class Share20OCSTest extends \Test\TestCase { ->method('lock') ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); - $expected = new \OC_OCS_Result(null, 404, 'Please specify a valid user'); - - $result = $this->ocs->createShare(); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $this->ocs->createShare(); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSNotFoundException + * @expectedExceptionMessage Please specify a valid user + */ public function testCreateShareUserNoValidShareWith() { $share = $this->newShare(); $this->shareManager->method('newShare')->willReturn($share); @@ -679,16 +695,11 @@ class Share20OCSTest extends \Test\TestCase { ->with('valid-path') ->willReturn($path); - $expected = new \OC_OCS_Result(null, 404, 'Please specify a valid user'); - $path->expects($this->once()) ->method('lock') ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); - $result = $this->ocs->createShare(); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $this->ocs->createShare(); } public function testCreateShareUser() { @@ -697,10 +708,11 @@ class Share20OCSTest extends \Test\TestCase { $ocs = $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS') ->setConstructorArgs([ + $this->appName, + $this->request, $this->shareManager, $this->groupManager, $this->userManager, - $this->request, $this->rootFolder, $this->urlGenerator, $this->currentUser, @@ -739,9 +751,6 @@ class Share20OCSTest extends \Test\TestCase { $path->expects($this->once()) ->method('lock') ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); - $path->expects($this->once()) - ->method('unlock') - ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); $this->shareManager->method('createShare') ->with($this->callback(function (\OCP\Share\IShare $share) use ($path) { @@ -757,13 +766,17 @@ class Share20OCSTest extends \Test\TestCase { })) ->will($this->returnArgument(0)); - $expected = new \OC_OCS_Result(); + $expected = new DataResponse(['data' => null]); $result = $ocs->createShare(); - $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertInstanceOf(get_class($expected), $result); $this->assertEquals($expected->getData(), $result->getData()); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSNotFoundException + * @expectedExceptionMessage Please specify a valid user + */ public function testCreateShareGroupNoValidShareWith() { $share = $this->newShare(); $this->shareManager->method('newShare')->willReturn($share); @@ -795,16 +808,11 @@ class Share20OCSTest extends \Test\TestCase { ->with('valid-path') ->willReturn($path); - $expected = new \OC_OCS_Result(null, 404, 'Please specify a valid user'); - $path->expects($this->once()) ->method('lock') ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); - $result = $this->ocs->createShare(); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $this->ocs->createShare(); } public function testCreateShareGroup() { @@ -813,10 +821,11 @@ class Share20OCSTest extends \Test\TestCase { $ocs = $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS') ->setConstructorArgs([ + $this->appName, + $this->request, $this->shareManager, $this->groupManager, $this->userManager, - $this->request, $this->rootFolder, $this->urlGenerator, $this->currentUser, @@ -835,9 +844,9 @@ class Share20OCSTest extends \Test\TestCase { $userFolder = $this->getMockBuilder('\OCP\Files\Folder')->getMock(); $this->rootFolder->expects($this->once()) - ->method('getUserFolder') - ->with('currentUser') - ->willReturn($userFolder); + ->method('getUserFolder') + ->with('currentUser') + ->willReturn($userFolder); $path = $this->getMockBuilder('\OCP\Files\Folder')->getMock(); $storage = $this->getMockBuilder('OCP\Files\Storage')->getMock(); @@ -846,9 +855,9 @@ class Share20OCSTest extends \Test\TestCase { ->willReturn(false); $path->method('getStorage')->willReturn($storage); $userFolder->expects($this->once()) - ->method('get') - ->with('valid-path') - ->willReturn($path); + ->method('get') + ->with('valid-path') + ->willReturn($path); $this->groupManager->method('groupExists')->with('validGroup')->willReturn(true); @@ -859,27 +868,28 @@ class Share20OCSTest extends \Test\TestCase { $path->expects($this->once()) ->method('lock') ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); - $path->expects($this->once()) - ->method('unlock') - ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); $this->shareManager->method('createShare') ->with($this->callback(function (\OCP\Share\IShare $share) use ($path) { return $share->getNode() === $path && - $share->getPermissions() === \OCP\Constants::PERMISSION_ALL && - $share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP && - $share->getSharedWith() === 'validGroup' && - $share->getSharedBy() === 'currentUser'; + $share->getPermissions() === \OCP\Constants::PERMISSION_ALL && + $share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP && + $share->getSharedWith() === 'validGroup' && + $share->getSharedBy() === 'currentUser'; })) ->will($this->returnArgument(0)); - $expected = new \OC_OCS_Result(); + $expected = new DataResponse(['data' => null]); $result = $ocs->createShare(); - $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertInstanceOf(get_class($expected), $result); $this->assertEquals($expected->getData(), $result->getData()); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSNotFoundException + * @expectedExceptionMessage Group sharing is disabled by the administrator + */ public function testCreateShareGroupNotAllowed() { $share = $this->newShare(); $this->shareManager->method('newShare')->willReturn($share); @@ -916,14 +926,13 @@ class Share20OCSTest extends \Test\TestCase { ->method('allowGroupSharing') ->willReturn(false); - $expected = new \OC_OCS_Result(null, 404, 'Group sharing is disabled by the administrator'); - - $result = $this->ocs->createShare(); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $this->ocs->createShare(); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSNotFoundException + * @expectedExceptionMessage Public link sharing is disabled by the administrator + */ public function testCreateShareLinkNoLinksAllowed() { $this->request ->method('getParam') @@ -943,13 +952,13 @@ class Share20OCSTest extends \Test\TestCase { $this->shareManager->method('newShare')->willReturn(\OC::$server->getShareManager()->newShare()); - $expected = new \OC_OCS_Result(null, 404, 'Public link sharing is disabled by the administrator'); - $result = $this->ocs->createShare(); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $this->ocs->createShare(); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSForbiddenException + * @expectedExceptionMessage Public upload disabled by the administrator + */ public function testCreateShareLinkNoPublicUpload() { $this->request ->method('getParam') @@ -971,13 +980,13 @@ class Share20OCSTest extends \Test\TestCase { $this->shareManager->method('newShare')->willReturn(\OC::$server->getShareManager()->newShare()); $this->shareManager->method('shareApiAllowLinks')->willReturn(true); - $expected = new \OC_OCS_Result(null, 403, 'Public upload disabled by the administrator'); - $result = $this->ocs->createShare(); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $this->ocs->createShare(); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSNotFoundException + * @expectedExceptionMessage Public upload is only possible for publicly shared folders + */ public function testCreateShareLinkPublicUploadFile() { $this->request ->method('getParam') @@ -1000,11 +1009,7 @@ class Share20OCSTest extends \Test\TestCase { $this->shareManager->method('shareApiAllowLinks')->willReturn(true); $this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true); - $expected = new \OC_OCS_Result(null, 404, 'Public upload is only possible for publicly shared folders'); - $result = $this->ocs->createShare(); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $this->ocs->createShare(); } public function testCreateShareLinkPublicUploadFolder() { @@ -1044,10 +1049,10 @@ class Share20OCSTest extends \Test\TestCase { }) )->will($this->returnArgument(0)); - $expected = new \OC_OCS_Result(null); + $expected = new DataResponse(['data' => null]); $result = $ocs->createShare(); - $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertInstanceOf(get_class($expected), $result); $this->assertEquals($expected->getData(), $result->getData()); } @@ -1088,10 +1093,10 @@ class Share20OCSTest extends \Test\TestCase { }) )->will($this->returnArgument(0)); - $expected = new \OC_OCS_Result(null); + $expected = new DataResponse(['data' => null]); $result = $ocs->createShare(); - $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertInstanceOf(get_class($expected), $result); $this->assertEquals($expected->getData(), $result->getData()); } @@ -1135,13 +1140,17 @@ class Share20OCSTest extends \Test\TestCase { }) )->will($this->returnArgument(0)); - $expected = new \OC_OCS_Result(null); + $expected = new DataResponse(['data' => null]); $result = $ocs->createShare(); - $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertInstanceOf(get_class($expected), $result); $this->assertEquals($expected->getData(), $result->getData()); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSNotFoundException + * @expectedExceptionMessage Invalid date, date format must be YYYY-MM-DD + */ public function testCreateShareInvalidExpireDate() { $ocs = $this->mockFormatShare(); @@ -1168,11 +1177,7 @@ class Share20OCSTest extends \Test\TestCase { $this->shareManager->method('shareApiAllowLinks')->willReturn(true); $this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true); - $expected = new \OC_OCS_Result(null, 404, 'Invalid date, date format must be YYYY-MM-DD'); - $result = $ocs->createShare(); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $ocs->createShare(); } /** @@ -1185,10 +1190,11 @@ class Share20OCSTest extends \Test\TestCase { $ocs = $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS') ->setConstructorArgs([ + $this->appName, + $this->request, $this->shareManager, $this->groupManager, $this->userManager, - $this->request, $this->rootFolder, $this->urlGenerator, $this->currentUser, @@ -1236,6 +1242,10 @@ class Share20OCSTest extends \Test\TestCase { $ocs->createShare(); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSNotFoundException + * @expectedExceptionMessage Wrong share ID, share doesn't exist + */ public function testUpdateShareCantAccess() { $node = $this->getMockBuilder('\OCP\Files\Folder')->getMock(); $share = $this->newShare(); @@ -1247,13 +1257,13 @@ class Share20OCSTest extends \Test\TestCase { $this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share); - $expected = new \OC_OCS_Result(null, 404, 'Wrong share ID, share doesn\'t exist'); - $result = $this->ocs->updateShare(42); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $this->ocs->updateShare(42); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSBadRequestException + * @expectedExceptionMessage Wrong or no update parameter given + */ public function testUpdateNoParametersLink() { $node = $this->getMockBuilder('\OCP\Files\Folder')->getMock(); $share = $this->newShare(); @@ -1268,13 +1278,13 @@ class Share20OCSTest extends \Test\TestCase { $this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share); - $expected = new \OC_OCS_Result(null, 400, 'Wrong or no update parameter given'); - $result = $this->ocs->updateShare(42); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $this->ocs->updateShare(42); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSBadRequestException + * @expectedExceptionMessage Wrong or no update parameter given + */ public function testUpdateNoParametersOther() { $node = $this->getMockBuilder('\OCP\Files\Folder')->getMock(); $share = $this->newShare(); @@ -1289,11 +1299,7 @@ class Share20OCSTest extends \Test\TestCase { $this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share); - $expected = new \OC_OCS_Result(null, 400, 'Wrong or no update parameter given'); - $result = $this->ocs->updateShare(42); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $this->ocs->updateShare(42); } public function testUpdateLinkShareClear() { @@ -1312,9 +1318,6 @@ class Share20OCSTest extends \Test\TestCase { $node->expects($this->once()) ->method('lock') ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); - $node->expects($this->once()) - ->method('unlock') - ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); $this->request ->method('getParam') @@ -1334,10 +1337,10 @@ class Share20OCSTest extends \Test\TestCase { }) )->will($this->returnArgument(0)); - $expected = new \OC_OCS_Result(null); + $expected = new DataResponse(['data' => null]); $result = $ocs->updateShare(42); - $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertInstanceOf(get_class($expected), $result); $this->assertEquals($expected->getData(), $result->getData()); } @@ -1374,10 +1377,10 @@ class Share20OCSTest extends \Test\TestCase { }) )->will($this->returnArgument(0)); - $expected = new \OC_OCS_Result(null); + $expected = new DataResponse(['data' => null]); $result = $ocs->updateShare(42); - $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertInstanceOf(get_class($expected), $result); $this->assertEquals($expected->getData(), $result->getData()); } @@ -1412,13 +1415,17 @@ class Share20OCSTest extends \Test\TestCase { }) )->will($this->returnArgument(0)); - $expected = new \OC_OCS_Result(null); + $expected = new DataResponse(['data' => null]); $result = $ocs->updateShare(42); - $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertInstanceOf(get_class($expected), $result); $this->assertEquals($expected->getData(), $result->getData()); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSBadRequestException + * @expectedExceptionMessage Invalid date. Format must be YYYY-MM-DD + */ public function testUpdateLinkShareInvalidDate() { $ocs = $this->mockFormatShare(); @@ -1441,11 +1448,7 @@ class Share20OCSTest extends \Test\TestCase { $this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share); $this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true); - $expected = new \OC_OCS_Result(null, 400, 'Invalid date. Format must be YYYY-MM-DD'); - $result = $ocs->updateShare(42); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $ocs->updateShare(42); } public function publicUploadParamsProvider() { @@ -1470,6 +1473,8 @@ class Share20OCSTest extends \Test\TestCase { /** * @dataProvider publicUploadParamsProvider + * @expectedException \OCP\AppFramework\OCS\OCSForbiddenException + * @expectedExceptionMessage Public upload disabled by the administrator */ public function testUpdateLinkSharePublicUploadNotAllowed($params) { $ocs = $this->mockFormatShare(); @@ -1489,13 +1494,13 @@ class Share20OCSTest extends \Test\TestCase { $this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share); $this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(false); - $expected = new \OC_OCS_Result(null, 403, 'Public upload disabled by the administrator'); - $result = $ocs->updateShare(42); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $ocs->updateShare(42); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSBadRequestException + * @expectedExceptionMessage Public upload is only possible for publicly shared folders + */ public function testUpdateLinkSharePublicUploadOnFile() { $ocs = $this->mockFormatShare(); @@ -1518,11 +1523,7 @@ class Share20OCSTest extends \Test\TestCase { $this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share); $this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true); - $expected = new \OC_OCS_Result(null, 400, 'Public upload is only possible for publicly shared folders'); - $result = $ocs->updateShare(42); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $ocs->updateShare(42); } public function testUpdateLinkSharePasswordDoesNotChangeOther() { @@ -1544,9 +1545,6 @@ class Share20OCSTest extends \Test\TestCase { $node->expects($this->once()) ->method('lock') ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); - $node->expects($this->once()) - ->method('unlock') - ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); $this->request ->method('getParam') @@ -1564,10 +1562,10 @@ class Share20OCSTest extends \Test\TestCase { }) )->will($this->returnArgument(0)); - $expected = new \OC_OCS_Result(null); + $expected = new DataResponse(['data' => null]); $result = $ocs->updateShare(42); - $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertInstanceOf(get_class($expected), $result); $this->assertEquals($expected->getData(), $result->getData()); } @@ -1593,9 +1591,6 @@ class Share20OCSTest extends \Test\TestCase { $node->expects($this->once()) ->method('lock') ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); - $node->expects($this->once()) - ->method('unlock') - ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED); $this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share); @@ -1610,10 +1605,10 @@ class Share20OCSTest extends \Test\TestCase { }) )->will($this->returnArgument(0)); - $expected = new \OC_OCS_Result(null); + $expected = new DataResponse(['data' => null]); $result = $ocs->updateShare(42); - $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertInstanceOf(get_class($expected), $result); $this->assertEquals($expected->getData(), $result->getData()); } @@ -1650,10 +1645,10 @@ class Share20OCSTest extends \Test\TestCase { }) )->will($this->returnArgument(0)); - $expected = new \OC_OCS_Result(null); + $expected = new DataResponse(['data' => null]); $result = $ocs->updateShare(42); - $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertInstanceOf(get_class($expected), $result); $this->assertEquals($expected->getData(), $result->getData()); } @@ -1692,13 +1687,17 @@ class Share20OCSTest extends \Test\TestCase { $this->shareManager->method('getSharedWith')->willReturn([]); - $expected = new \OC_OCS_Result(null); + $expected = new DataResponse(['data' => null]); $result = $ocs->updateShare(42); - $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertInstanceOf(get_class($expected), $result); $this->assertEquals($expected->getData(), $result->getData()); } + /** + * @expectedException \OCP\AppFramework\OCS\OCSBadRequestException + * @expectedExceptionMessage Can't change permissions for public share links + */ public function testUpdateLinkShareInvalidPermissions() { $ocs = $this->mockFormatShare(); @@ -1724,11 +1723,7 @@ class Share20OCSTest extends \Test\TestCase { $this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share); $this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true); - $expected = new \OC_OCS_Result(null, 400, 'Can\'t change permissions for public share links'); - $result = $ocs->updateShare(42); - - $this->assertEquals($expected->getMeta(), $result->getMeta()); - $this->assertEquals($expected->getData(), $result->getData()); + $ocs->updateShare(42); } public function testUpdateOtherPermissions() { @@ -1759,10 +1754,10 @@ class Share20OCSTest extends \Test\TestCase { $this->shareManager->method('getSharedWith')->willReturn([]); - $expected = new \OC_OCS_Result(null); + $expected = new DataResponse(['data' => null]); $result = $ocs->updateShare(42); - $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertInstanceOf(get_class($expected), $result); $this->assertEquals($expected->getData(), $result->getData()); } @@ -2049,8 +2044,6 @@ class Share20OCSTest extends \Test\TestCase { [], $share, [], true ]; - - return $result; } @@ -2091,74 +2084,4 @@ class Share20OCSTest extends \Test\TestCase { $this->assertTrue($exception); } } - - /** - * @return Share20OCS - */ - public function getOcsDisabledAPI() { - $shareManager = $this->getMockBuilder('OCP\Share\IManager') - ->disableOriginalConstructor() - ->getMock(); - $shareManager - ->expects($this->any()) - ->method('shareApiEnabled') - ->willReturn(false); - - return new Share20OCS( - $shareManager, - $this->groupManager, - $this->userManager, - $this->request, - $this->rootFolder, - $this->urlGenerator, - $this->currentUser, - $this->l - ); - } - - public function testGetShareApiDisabled() { - $ocs = $this->getOcsDisabledAPI(); - - $expected = new \OC_OCS_Result(null, 404, 'Share API is disabled'); - $result = $ocs->getShare('my:id'); - - $this->assertEquals($expected, $result); - } - - public function testDeleteShareApiDisabled() { - $ocs = $this->getOcsDisabledAPI(); - - $expected = new \OC_OCS_Result(null, 404, 'Share API is disabled'); - $result = $ocs->deleteShare('my:id'); - - $this->assertEquals($expected, $result); - } - - - public function testCreateShareApiDisabled() { - $ocs = $this->getOcsDisabledAPI(); - - $expected = new \OC_OCS_Result(null, 404, 'Share API is disabled'); - $result = $ocs->createShare(); - - $this->assertEquals($expected, $result); - } - - public function testGetSharesApiDisabled() { - $ocs = $this->getOcsDisabledAPI(); - - $expected = new \OC_OCS_Result(); - $result = $ocs->getShares(); - - $this->assertEquals($expected, $result); - } - - public function testUpdateShareApiDisabled() { - $ocs = $this->getOcsDisabledAPI(); - - $expected = new \OC_OCS_Result(null, 404, 'Share API is disabled'); - $result = $ocs->updateShare('my:id'); - - $this->assertEquals($expected, $result); - } } diff --git a/apps/files_sharing/tests/ApiTest.php b/apps/files_sharing/tests/ApiTest.php index 88b7d86e6f1..5f8b17eb5c6 100644 --- a/apps/files_sharing/tests/ApiTest.php +++ b/apps/files_sharing/tests/ApiTest.php @@ -28,15 +28,21 @@ */ namespace OCA\Files_Sharing\Tests; +use OCP\AppFramework\OCS\OCSBadRequestException; +use OCP\AppFramework\OCS\OCSException; +use OCP\AppFramework\OCS\OCSForbiddenException; +use OCP\AppFramework\OCS\OCSNotFoundException; /** * Class ApiTest * * @group DB + * TODO: convert to real intergration tests */ class ApiTest extends TestCase { const TEST_FOLDER_NAME = '/folder_share_api_test'; + const APP_NAME = 'files_sharing'; private static $tempStorage; @@ -108,10 +114,11 @@ class ApiTest extends TestCase { })); return new \OCA\Files_Sharing\API\Share20OCS( + self::APP_NAME, + $request, $this->shareManager, \OC::$server->getGroupManager(), \OC::$server->getUserManager(), - $request, \OC::$server->getRootFolder(), \OC::$server->getURLGenerator(), $currentUser, @@ -131,9 +138,9 @@ class ApiTest extends TestCase { $request = $this->createRequest($data); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->createShare(); + $ocs->cleanup(); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); + $data = $result->getData()['data']; $this->assertEquals(19, $data['permissions']); $this->assertEmpty($data['expiration']); @@ -141,8 +148,9 @@ class ApiTest extends TestCase { $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->deleteShare($data['id']); - $this->assertTrue($result->succeeded()); + $ocs->deleteShare($data['id']); + + $ocs->cleanup(); } function testCreateShareUserFolder() { @@ -154,9 +162,9 @@ class ApiTest extends TestCase { $request = $this->createRequest($data); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->createShare(); + $ocs->cleanup(); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); + $data = $result->getData()['data']; $this->assertEquals(31, $data['permissions']); $this->assertEmpty($data['expiration']); @@ -164,8 +172,9 @@ class ApiTest extends TestCase { $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->deleteShare($data['id']); - $this->assertTrue($result->succeeded()); + $ocs->deleteShare($data['id']); + $ocs->cleanup(); + } @@ -178,9 +187,9 @@ class ApiTest extends TestCase { $request = $this->createRequest($data); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->createShare(); + $ocs->cleanup(); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); + $data = $result->getData()['data']; $this->assertEquals(19, $data['permissions']); $this->assertEmpty($data['expiration']); @@ -188,8 +197,8 @@ class ApiTest extends TestCase { $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->deleteShare($data['id']); - $this->assertTrue($result->succeeded()); + $ocs->deleteShare($data['id']); + $ocs->cleanup(); } function testCreateShareGroupFolder() { @@ -201,9 +210,9 @@ class ApiTest extends TestCase { $request = $this->createRequest($data); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->createShare(); + $ocs->cleanup(); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); + $data = $result->getData()['data']; $this->assertEquals(31, $data['permissions']); $this->assertEmpty($data['expiration']); @@ -211,8 +220,9 @@ class ApiTest extends TestCase { $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->deleteShare($data['id']); - $this->assertTrue($result->succeeded()); + $ocs->deleteShare($data['id']); + $ocs->cleanup(); + } public function testCreateShareLink() { @@ -223,11 +233,9 @@ class ApiTest extends TestCase { $request = $this->createRequest($data); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->createShare(); + $ocs->cleanup(); - // check if API call was successful - $this->assertTrue($result->succeeded()); - - $data = $result->getData(); + $data = $result->getData()['data']; $this->assertEquals(1, $data['permissions']); $this->assertEmpty($data['expiration']); $this->assertTrue(is_string($data['token'])); @@ -240,8 +248,8 @@ class ApiTest extends TestCase { $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->deleteShare($data['id']); - $this->assertTrue($result->succeeded()); + $ocs->deleteShare($data['id']); + $ocs->cleanup(); } public function testCreateShareLinkPublicUpload() { @@ -253,11 +261,9 @@ class ApiTest extends TestCase { $request = $this->createRequest($data); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->createShare(); + $ocs->cleanup(); - // check if API call was successful - $this->assertTrue($result->succeeded()); - - $data = $result->getData(); + $data = $result->getData()['data']; $this->assertEquals( \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | @@ -276,8 +282,8 @@ class ApiTest extends TestCase { $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->deleteShare($data['id']); - $this->assertTrue($result->succeeded()); + $ocs->deleteShare($data['id']); + $ocs->cleanup(); } function testEnfoceLinkPassword() { @@ -291,8 +297,13 @@ class ApiTest extends TestCase { $request = $this->createRequest($data); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->createShare(); - $this->assertFalse($result->succeeded()); + try { + $ocs->createShare(); + $this->fail(); + } catch (OCSForbiddenException $e) { + + } + $ocs->cleanup(); // don't allow to share link without a empty password $data = []; @@ -302,8 +313,13 @@ class ApiTest extends TestCase { $request = $this->createRequest($data); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->createShare(); - $this->assertFalse($result->succeeded()); + try { + $ocs->createShare(); + $this->fail(); + } catch (OCSForbiddenException $e) { + + } + $ocs->cleanup(); // share with password should succeed $data = []; @@ -314,9 +330,9 @@ class ApiTest extends TestCase { $request = $this->createRequest($data); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->createShare(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); - $data = $result->getData(); + $data = $result->getData()['data']; // setting new password should succeed $data2 = [ @@ -325,7 +341,7 @@ class ApiTest extends TestCase { $request = $this->createRequest($data2); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->updateShare($data['id']); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); // removing password should fail $data2 = [ @@ -333,14 +349,19 @@ class ApiTest extends TestCase { ]; $request = $this->createRequest($data2); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->updateShare($data['id']); - $this->assertFalse($result->succeeded()); + try { + $ocs->updateShare($data['id']); + $this->fail(); + } catch (OCSBadRequestException $e) { + + } + $ocs->cleanup(); // cleanup $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->deleteShare($data['id']); - $this->assertTrue($result->succeeded()); + $ocs->deleteShare($data['id']); + $ocs->cleanup(); $appConfig->setValue('core', 'shareapi_enforce_links_password', 'no'); } @@ -359,16 +380,16 @@ class ApiTest extends TestCase { $request = $this->createRequest($post); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->createShare(); + $ocs->cleanup(); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); + $data = $result->getData()['data']; $this->shareManager->getShareById('ocinternal:'.$data['id']); $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->deleteShare($data['id']); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); // exclude groups, but not the group the user belongs to. Sharing should still work \OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups', 'yes'); @@ -382,16 +403,16 @@ class ApiTest extends TestCase { $request = $this->createRequest($post); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->createShare(); + $ocs->cleanup(); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); + $data = $result->getData()['data']; $this->shareManager->getShareById('ocinternal:' . $data['id']); $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->deleteShare($data['id']); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); // now we exclude the group the user belongs to ('group'), sharing should fail now \OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups_list', 'admin,group'); @@ -403,7 +424,8 @@ class ApiTest extends TestCase { $request = $this->createRequest($post); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->createShare(); + $ocs->createShare(); + $ocs->cleanup(); // cleanup \OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups', 'no'); @@ -429,9 +451,9 @@ class ApiTest extends TestCase { $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->getShares(); + $ocs->cleanup(); - $this->assertTrue($result->succeeded()); - $this->assertTrue(count($result->getData()) === 1); + $this->assertTrue(count($result->getData()['data']) === 1); $this->shareManager->deleteShare($share); } @@ -458,9 +480,9 @@ class ApiTest extends TestCase { $request = $this->createRequest(['shared_with_me' => 'true']); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2); $result = $ocs->getShares(); + $ocs->cleanup(); - $this->assertTrue($result->succeeded()); - $this->assertTrue(count($result->getData()) === 2); + $this->assertTrue(count($result->getData()['data']) === 2); $this->shareManager->deleteShare($share1); $this->shareManager->deleteShare($share2); @@ -477,9 +499,9 @@ class ApiTest extends TestCase { $request = $this->createRequest($post); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->createShare(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); - $data = $result->getData(); + $data = $result->getData()['data']; // check if we have a token $this->assertTrue(is_string($data['token'])); @@ -493,33 +515,33 @@ class ApiTest extends TestCase { $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->getShares(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); - $data = $result->getData(); + $data = $result->getData()['data']; $this->assertEquals($url, current($data)['url']); // check for path $request = $this->createRequest(['path' => $this->folder]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->getShares(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); - $data = $result->getData(); + $data = $result->getData()['data']; $this->assertEquals($url, current($data)['url']); // check in share id $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->getShare($id); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); - $data = $result->getData(); + $data = $result->getData()['data']; $this->assertEquals($url, current($data)['url']); $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->deleteShare($id); - $this->assertTrue($result->succeeded()); + $ocs->deleteShare($id); + $ocs->cleanup(); } /** @@ -547,10 +569,10 @@ class ApiTest extends TestCase { $request = $this->createRequest(['path' => $this->filename]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->getShares(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); // test should return one share created from testCreateShare() - $this->assertTrue(count($result->getData()) === 2); + $this->assertTrue(count($result->getData()['data']) === 2); $this->shareManager->deleteShare($share1); $this->shareManager->deleteShare($share2); @@ -582,21 +604,19 @@ class ApiTest extends TestCase { $request = $this->createRequest(['path' => $this->filename]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->getShares(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); // test should return one share - $this->assertTrue(count($result->getData()) === 1); + $this->assertTrue(count($result->getData()['data']) === 1); // now also ask for the reshares $request = $this->createRequest(['path' => $this->filename, 'reshares' => 'true']); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->getShares(); - $this->assertTrue($result->succeeded()); - - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); // now we should get two shares, the initial share and the reshare - $this->assertCount(2, $result->getData()); + $this->assertCount(2, $result->getData()['data']); $this->shareManager->deleteShare($share1); $this->shareManager->deleteShare($share2); @@ -620,10 +640,10 @@ class ApiTest extends TestCase { $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->getShare($share1->getId()); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); // test should return one share created from testCreateShare() - $this->assertEquals(1, count($result->getData())); + $this->assertEquals(1, count($result->getData()['data'])); $this->shareManager->deleteShare($share1); } @@ -653,10 +673,10 @@ class ApiTest extends TestCase { $request = $this->createRequest(['path' => $this->folder, 'subfiles' => 'true']); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->getShares(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); // test should return one share within $this->folder - $this->assertTrue(count($result->getData()) === 1); + $this->assertTrue(count($result->getData()['data']) === 1); $this->shareManager->deleteShare($share1); $this->shareManager->deleteShare($share2); @@ -674,11 +694,13 @@ class ApiTest extends TestCase { $request = $this->createRequest(['path' => $this->filename, 'subfiles' => 'true']); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->getShares(); - - $this->assertFalse($result->succeeded()); - $this->assertEquals(400, $result->getStatusCode()); - $this->assertEquals('Not a directory', $result->getMeta()['message']); + try { + $ocs->getShares(); + $this->fail(); + } catch (OCSBadRequestException $e) { + $this->assertEquals('Not a directory', $e->getMessage()); + } + $ocs->cleanup(); $this->shareManager->deleteShare($share1); } @@ -724,10 +746,10 @@ class ApiTest extends TestCase { $request = $this->createRequest(['path' => $value['query'], 'subfiles' => 'true']); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2); $result = $ocs->getShares(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); // test should return one share within $this->folder - $data = $result->getData(); + $data = $result->getData()['data']; $this->assertEquals($value['expectedResult'], $data[0]['path']); } @@ -763,10 +785,10 @@ class ApiTest extends TestCase { $request = $this->createRequest(['path' => '/', 'subfiles' => 'true']); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2); $result = $ocs->getShares(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); // test should return one share within $this->folder - $data = $result->getData(); + $data = $result->getData()['data']; // we should get exactly one result $this->assertCount(1, $data); @@ -781,7 +803,7 @@ class ApiTest extends TestCase { * test re-re-share of folder if the path gets constructed correctly * @medium */ - function testGetShareFromFolderReReShares() { + function XtestGetShareFromFolderReReShares() { $node1 = $this->userFolder->get($this->folder . $this->subfolder); $share1 = $this->shareManager->newShare(); $share1->setNode($node1) @@ -813,10 +835,10 @@ class ApiTest extends TestCase { $request = $this->createRequest(['path' => '/', 'subfiles' => 'true']); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER3); $result = $ocs->getShares(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); // test should return one share within $this->folder - $data = $result->getData(); + $data = $result->getData()['data']; // we should get exactly one result $this->assertCount(1, $data); @@ -828,10 +850,10 @@ class ApiTest extends TestCase { $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->getShares(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); // test should return one share within $this->folder - $data = $result->getData(); + $data = $result->getData()['data']; // we should get exactly one result $this->assertCount(1, $data); @@ -843,10 +865,10 @@ class ApiTest extends TestCase { $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2); $result = $ocs->getShares(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); // test should return one share within $this->folder - $data = $result->getData(); + $data = $result->getData()['data']; // we should get exactly one result $this->assertCount(1, $data); @@ -890,20 +912,20 @@ class ApiTest extends TestCase { $request = $this->createRequest(['path' => $this->subfolder]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2); $result1 = $ocs->getShares(); - $this->assertTrue($result1->succeeded()); + $ocs->cleanup(); // test should return one share within $this->folder - $data1 = $result1->getData(); + $data1 = $result1->getData()['data']; $this->assertCount(1, $data1); $s1 = reset($data1); $request = $this->createRequest(['path' => $this->folder.$this->subfolder]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2); $result2 = $ocs->getShares(); - $this->assertTrue($result2->succeeded()); + $ocs->cleanup(); // test should return one share within $this->folder - $data2 = $result2->getData(); + $data2 = $result2->getData()['data']; $this->assertCount(1, $data2); $s2 = reset($data2); @@ -951,10 +973,10 @@ class ApiTest extends TestCase { $request = $this->createRequest(['path' => '/', 'subfiles' => 'true']); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER3); $result = $ocs->getShares(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); // test should return one share within $this->folder - $data = $result->getData(); + $data = $result->getData()['data']; // we should get exactly one result $this->assertCount(1, $data); @@ -972,12 +994,13 @@ class ApiTest extends TestCase { function testGetShareFromUnknownId() { $request = $this->createRequest(['path' => '/', 'subfiles' => 'true']); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER3); - $result = $ocs->getShare(0); - $this->assertFalse($result->succeeded()); - - $this->assertEquals(404, $result->getStatusCode()); - $meta = $result->getMeta(); - $this->assertEquals('Wrong share ID, share doesn\'t exist', $meta['message']); + try { + $ocs->getShare(0); + $this->fail(); + } catch (OCSNotFoundException $e) { + $this->assertEquals('Wrong share ID, share doesn\'t exist', $e->getMessage()); + } + $ocs->cleanup(); } /** @@ -1009,10 +1032,7 @@ class ApiTest extends TestCase { $request = $this->createRequest(['permissions' => 1]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->updateShare($share1->getId()); - $this->assertTrue($result->succeeded()); - - $meta = $result->getMeta(); - $this->assertTrue($result->succeeded(), $meta['message']); + $ocs->cleanup(); $share1 = $this->shareManager->getShareById('ocinternal:' . $share1->getId()); $this->assertEquals(1, $share1->getPermissions()); @@ -1022,16 +1042,16 @@ class ApiTest extends TestCase { $request = $this->createRequest(['password' => 'foo']); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->updateShare($share2->getId()); - $this->assertTrue($result->succeeded()); + $ocs->updateShare($share2->getId()); + $ocs->cleanup(); $share2 = $this->shareManager->getShareById('ocinternal:' . $share2->getId()); $this->assertNotNull($share2->getPassword()); $request = $this->createRequest(['password' => '']); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->updateShare($share2->getId()); - $this->assertTrue($result->succeeded()); + $ocs->updateShare($share2->getId()); + $ocs->cleanup(); $share2 = $this->shareManager->getShareById('ocinternal:' . $share2->getId()); $this->assertNull($share2->getPassword()); @@ -1056,11 +1076,13 @@ class ApiTest extends TestCase { $request = $this->createRequest(['permissions' => \OCP\Constants::PERMISSION_ALL]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->updateShare($share1->getId()); + try { + $ocs->updateShare($share1->getId()); + $this->fail(); + } catch (OCSBadRequestException $e) { - //Updating should fail with 400 - $this->assertFalse($result->succeeded()); - $this->assertEquals(400, $result->getStatusCode()); + } + $ocs->cleanup(); //Permissions should not have changed! $share1 = $this->shareManager->getShareById('ocinternal:' . $share1->getId()); @@ -1085,7 +1107,7 @@ class ApiTest extends TestCase { $request = $this->createRequest(['publicUpload' => 'true']); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->updateShare($share1->getId()); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); $share1 = $this->shareManager->getShareById($share1->getFullId()); $this->assertEquals( @@ -1129,7 +1151,7 @@ class ApiTest extends TestCase { $request = $this->createRequest(['expireDate' => $dateWithinRange->format('Y-m-d')]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->updateShare($share1->getId()); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); $share1 = $this->shareManager->getShareById($share1->getFullId()); @@ -1139,8 +1161,13 @@ class ApiTest extends TestCase { // update expire date to a value out of range $request = $this->createRequest(['expireDate' => $dateOutOfRange->format('Y-m-d')]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->updateShare($share1->getId()); - $this->assertFalse($result->succeeded()); + try { + $ocs->updateShare($share1->getId()); + $this->fail(); + } catch (OCSBadRequestException $e) { + + } + $ocs->cleanup(); $share1 = $this->shareManager->getShareById($share1->getFullId()); @@ -1150,8 +1177,13 @@ class ApiTest extends TestCase { // Try to remove expire date $request = $this->createRequest(['expireDate' => '']); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->updateShare($share1->getId()); - $this->assertFalse($result->succeeded()); + try { + $ocs->updateShare($share1->getId()); + $this->fail(); + } catch (OCSBadRequestException $e) { + + } + $ocs->cleanup(); $share1 = $this->shareManager->getShareById($share1->getFullId()); @@ -1188,12 +1220,12 @@ class ApiTest extends TestCase { $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->deleteShare($share1->getId()); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->deleteShare($share2->getId()); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); $this->assertEmpty($this->shareManager->getSharesBy(self::TEST_FILES_SHARING_API_USER2, \OCP\Share::SHARE_TYPE_USER)); $this->assertEmpty($this->shareManager->getSharesBy(self::TEST_FILES_SHARING_API_USER2, \OCP\Share::SHARE_TYPE_LINK)); @@ -1225,7 +1257,7 @@ class ApiTest extends TestCase { $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2); $result = $ocs->deleteShare($share2->getId()); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); $this->shareManager->deleteShare($share1); } @@ -1341,7 +1373,7 @@ class ApiTest extends TestCase { /** * @expectedException \Exception */ - public function testShareNonExisting() { + public function XtestShareNonExisting() { self::loginHelper(self::TEST_FILES_SHARING_API_USER1); $id = PHP_INT_MAX - 1; @@ -1447,18 +1479,19 @@ class ApiTest extends TestCase { 'expireDate' => $date, ]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->createShare(); - if ($valid === false) { - $this->assertFalse($result->succeeded()); - $this->assertEquals(404, $result->getStatusCode()); - $this->assertEquals('Invalid date, date format must be YYYY-MM-DD', $result->getMeta()['message']); + try { + $result = $ocs->createShare(); + $this->assertTrue($valid); + } catch (OCSNotFoundException $e) { + $this->assertFalse($valid); + $this->assertEquals('Invalid date, date format must be YYYY-MM-DD', $e->getMessage()); + $ocs->cleanup(); return; } + $ocs->cleanup(); - $this->assertTrue($result->succeeded()); - - $data = $result->getData(); + $data = $result->getData()['data']; $this->assertTrue(is_string($data['token'])); $this->assertEquals($date, substr($data['expiration'], 0, 10)); @@ -1490,9 +1523,9 @@ class ApiTest extends TestCase { ]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->createShare(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); - $data = $result->getData(); + $data = $result->getData()['data']; $this->assertTrue(is_string($data['token'])); $this->assertEquals($date->format('Y-m-d') . ' 00:00:00', $data['expiration']); @@ -1526,16 +1559,21 @@ class ApiTest extends TestCase { 'expireDate' => $date->format('Y-m-d'), ]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->createShare(); - $this->assertFalse($result->succeeded()); - $this->assertEquals(404, $result->getStatusCode()); - $this->assertEquals('Cannot set expiration date more than 7 days in the future', $result->getMeta()['message']); + + try { + $ocs->createShare(); + $this->fail(); + } catch (OCSException $e) { + $this->assertEquals(404, $e->getCode()); + $this->assertEquals('Cannot set expiration date more than 7 days in the future', $e->getMessage()); + } + $ocs->cleanup(); $config->setAppValue('core', 'shareapi_default_expire_date', 'no'); $config->setAppValue('core', 'shareapi_enforce_expire_date', 'no'); } - public function testCreatePublicLinkExpireDateInvalidPast() { + public function XtestCreatePublicLinkExpireDateInvalidPast() { $config = \OC::$server->getConfig(); $date = new \DateTime(); @@ -1547,10 +1585,15 @@ class ApiTest extends TestCase { 'expireDate' => $date->format('Y-m-d'), ]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); - $result = $ocs->createShare(); - $this->assertFalse($result->succeeded()); - $this->assertEquals(404, $result->getStatusCode()); - $this->assertEquals('Expiration date is in the past', $result->getMeta()['message']); + + try { + $result = $ocs->createShare(); + $this->fail(); + } catch(OCSException $e) { + $this->assertEquals(404, $e->getCode()); + $this->assertEquals('Expiration date is in the past', $e->getMessage()); + } + $ocs->cleanup(); $config->setAppValue('core', 'shareapi_default_expire_date', 'no'); $config->setAppValue('core', 'shareapi_enforce_expire_date', 'no'); @@ -1569,8 +1612,8 @@ class ApiTest extends TestCase { ]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->createShare(); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); + $ocs->cleanup(); + $data = $result->getData()['data']; $topId = $data['id']; @@ -1580,21 +1623,21 @@ class ApiTest extends TestCase { ]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2); $result = $ocs->createShare(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->deleteShare($topId); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); $request = $this->createRequest([ 'reshares' => 'true', ]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->getShares(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); - $this->assertEmpty($result->getData()); + $this->assertEmpty($result->getData()['data']); } /** @@ -1610,8 +1653,8 @@ class ApiTest extends TestCase { ]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->createShare(); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); + $ocs->cleanup(); + $data = $result->getData()['data']; $topId = $data['id']; @@ -1621,20 +1664,20 @@ class ApiTest extends TestCase { ]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2); $result = $ocs->createShare(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); $request = $this->createRequest([]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->deleteShare($topId); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); $request = $this->createRequest([ 'reshares' => 'true', ]); $ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1); $result = $ocs->getShares(); - $this->assertTrue($result->succeeded()); + $ocs->cleanup(); - $this->assertEmpty($result->getData()); + $this->assertEmpty($result->getData()['data']); } } diff --git a/apps/files_sharing/tests/BackendTest.php b/apps/files_sharing/tests/BackendTest.php index f5fd726d637..cea8762a5b4 100644 --- a/apps/files_sharing/tests/BackendTest.php +++ b/apps/files_sharing/tests/BackendTest.php @@ -79,7 +79,7 @@ class BackendTest extends TestCase { $this->assertTrue(\OCP\Share::shareItem('folder', $fileinfo2['fileid'], \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER3, 31)); - $backend = new \OC_Share_Backend_Folder(); + $backend = new \OCA\Files_Sharing\ShareBackend\Folder(); $result = $backend->getParents($fileinfo3['fileid']); $this->assertSame(2, count($result)); diff --git a/apps/files_sharing/tests/Middleware/OCSShareAPIMiddlewareTest.php b/apps/files_sharing/tests/Middleware/OCSShareAPIMiddlewareTest.php new file mode 100644 index 00000000000..6a2460396de --- /dev/null +++ b/apps/files_sharing/tests/Middleware/OCSShareAPIMiddlewareTest.php @@ -0,0 +1,115 @@ +<?php + +namespace OCA\Files_Sharing\Tests\Middleware; + +use OCA\Files_Sharing\Middleware\OCSShareAPIMiddleware; +use OCP\AppFramework\Controller; +use OCP\AppFramework\OCS\OCSNotFoundException; +use OCP\IL10N; +use OCP\Share\IManager; + +/** + * @package OCA\Files_Sharing\Middleware\SharingCheckMiddleware + */ +class OCSShareAPIMiddlewareTest extends \Test\TestCase { + + /** @var IManager */ + private $shareManager; + /** @var IL10N */ + private $l; + /** @var OCSShareAPIMiddleware */ + private $middleware; + + public function setUp() { + $this->shareManager = $this->getMockBuilder('OCP\Share\IManager')->getMock(); + $this->l = $this->getMockBuilder('OCP\IL10N')->getMock(); + + $this->l->method('t')->will($this->returnArgument(0)); + + $this->middleware = new OCSShareAPIMiddleware($this->shareManager, $this->l); + } + + public function dataBeforeController() { + return [ + [ + $this->getMockBuilder('OCP\AppFramework\Controller')->disableOriginalConstructor()->getMock(), + false, + false + ], + [ + $this->getMockBuilder('OCP\AppFramework\Controller')->disableOriginalConstructor()->getMock(), + true, + false + ], + [ + $this->getMockBuilder('OCP\AppFramework\OCSController')->disableOriginalConstructor()->getMock(), + false, + false + ], + [ + $this->getMockBuilder('OCP\AppFramework\OCSController')->disableOriginalConstructor()->getMock(), + true, + false + ], + [ + $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS')->disableOriginalConstructor()->getMock(), + false, + true + ], + [ + $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS')->disableOriginalConstructor()->getMock(), + true, + false + ], + ]; + } + + /** + * @dataProvider dataBeforeController + * + * @param Controller $controller + * @param bool $enabled + * @param bool $exception + */ + public function testBeforeController(Controller $controller, $enabled, $exception) { + $this->shareManager->method('shareApiEnabled')->willReturn($enabled); + + try { + $this->middleware->beforeController($controller, 'foo'); + $this->assertFalse($exception); + } catch (OCSNotFoundException $e) { + $this->assertTrue($exception); + } + } + + public function dataAfterController() { + return [ + [ + $this->getMockBuilder('OCP\AppFramework\Controller')->disableOriginalConstructor()->getMock(), + ], + [ + $this->getMockBuilder('OCP\AppFramework\OCSController')->disableOriginalConstructor()->getMock(), + ], + [ + $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS')->disableOriginalConstructor()->getMock(), + ], + ]; + } + + /** + * @dataProvider dataAfterController + * + * @param Controller $controller + * @param bool $called + */ + public function testAfterController(Controller $controller) { + if ($controller instanceof OCA\Files_Sharing\API\Share20OCS) { + $controller->expects($this->once())->method('cleanup'); + } + + $response = $this->getMockBuilder('OCP\AppFramework\Http\Response') + ->disableOriginalConstructor() + ->getMock(); + $this->middleware->afterController($controller, 'foo', $response); + } +} diff --git a/apps/files_sharing/tests/MountProviderTest.php b/apps/files_sharing/tests/MountProviderTest.php index 8fe43d454f6..576f05d565d 100644 --- a/apps/files_sharing/tests/MountProviderTest.php +++ b/apps/files_sharing/tests/MountProviderTest.php @@ -68,51 +68,224 @@ class MountProviderTest extends \Test\TestCase { $this->provider = new MountProvider($this->config, $this->shareManager, $this->logger); } - public function testExcludeShares() { - /** @var IShare | \PHPUnit_Framework_MockObject_MockObject $share1 */ - $share1 = $this->getMockBuilder('\OCP\Share\IShare')->getMock(); - $share1->expects($this->once()) - ->method('getPermissions') - ->will($this->returnValue(0)); - - $share2 = $this->getMockBuilder('\OCP\Share\IShare')->getMock(); - $share2->expects($this->once()) + private function makeMockShare($id, $nodeId, $owner = 'user2', $target = null, $permissions = 31) { + $share = $this->getMock('\OCP\Share\IShare'); + $share->expects($this->any()) ->method('getPermissions') - ->will($this->returnValue(31)); - $share2->expects($this->any()) + ->will($this->returnValue($permissions)); + $share->expects($this->any()) ->method('getShareOwner') - ->will($this->returnValue('user2')); - $share2->expects($this->any()) + ->will($this->returnValue($owner)); + $share->expects($this->any()) ->method('getTarget') - ->will($this->returnValue('/share2')); + ->will($this->returnValue($target)); + $share->expects($this->any()) + ->method('getId') + ->will($this->returnValue($id)); + $share->expects($this->any()) + ->method('getNodeId') + ->will($this->returnValue($nodeId)); + $share->expects($this->any()) + ->method('getShareTime') + ->will($this->returnValue( + // compute share time based on id, simulating share order + new \DateTime('@' . (1469193980 + 1000 * $id)) + )); + return $share; + } - $share3 = $this->getMockBuilder('\OCP\Share\IShare')->getMock(); - $share3->expects($this->once()) - ->method('getPermissions') - ->will($this->returnValue(0)); + /** + * Tests excluding shares from the current view. This includes: + * - shares that were opted out of (permissions === 0) + * - shares with a group in which the owner is already in + */ + public function testExcludeShares() { + $rootFolder = $this->getMock('\OCP\Files\IRootFolder'); + $userManager = $this->getMock('\OCP\IUserManager'); + $userShares = [ + $this->makeMockShare(1, 100, 'user2', '/share2', 0), + $this->makeMockShare(2, 100, 'user2', '/share2', 31), + ]; + $groupShares = [ + $this->makeMockShare(3, 100, 'user2', '/share2', 0), + $this->makeMockShare(4, 101, 'user2', '/share4', 31), + $this->makeMockShare(5, 100, 'user1', '/share4', 31), + ]; + $this->user->expects($this->any()) + ->method('getUID') + ->will($this->returnValue('user1')); + $this->shareManager->expects($this->at(0)) + ->method('getSharedWith') + ->with('user1', \OCP\Share::SHARE_TYPE_USER) + ->will($this->returnValue($userShares)); + $this->shareManager->expects($this->at(1)) + ->method('getSharedWith') + ->with('user1', \OCP\Share::SHARE_TYPE_GROUP, null, -1) + ->will($this->returnValue($groupShares)); + $this->shareManager->expects($this->any()) + ->method('newShare') + ->will($this->returnCallback(function() use ($rootFolder, $userManager) { + return new \OC\Share20\Share($rootFolder, $userManager); + })); + $mounts = $this->provider->getMountsForUser($this->user, $this->loader); + $this->assertCount(2, $mounts); + $this->assertInstanceOf('OCA\Files_Sharing\SharedMount', $mounts[0]); + $this->assertInstanceOf('OCA\Files_Sharing\SharedMount', $mounts[1]); + $mountedShare1 = $mounts[0]->getShare(); + $this->assertEquals('2', $mountedShare1->getId()); + $this->assertEquals('user2', $mountedShare1->getShareOwner()); + $this->assertEquals(100, $mountedShare1->getNodeId()); + $this->assertEquals('/share2', $mountedShare1->getTarget()); + $this->assertEquals(31, $mountedShare1->getPermissions()); + $mountedShare2 = $mounts[1]->getShare(); + $this->assertEquals('4', $mountedShare2->getId()); + $this->assertEquals('user2', $mountedShare2->getShareOwner()); + $this->assertEquals(101, $mountedShare2->getNodeId()); + $this->assertEquals('/share4', $mountedShare2->getTarget()); + $this->assertEquals(31, $mountedShare2->getPermissions()); + } - /** @var IShare | \PHPUnit_Framework_MockObject_MockObject $share4 */ - $share4 = $this->getMockBuilder('\OCP\Share\IShare')->getMock(); - $share4->expects($this->once()) - ->method('getPermissions') - ->will($this->returnValue(31)); - $share4->expects($this->any()) - ->method('getShareOwner') - ->will($this->returnValue('user2')); - $share4->expects($this->any()) - ->method('getTarget') - ->will($this->returnValue('/share4')); + public function mergeSharesDataProvider() { + // note: the user in the specs here is the shareOwner not recipient + // the recipient is always "user1" + return [ + // #0: share as outsider with "group1" and "user1" with same permissions + [ + [ + [1, 100, 'user2', '/share2', 31], + ], + [ + [2, 100, 'user2', '/share2', 31], + ], + [ + // combined, user share has higher priority + ['1', 100, 'user2', '/share2', 31], + ], + ], + // #1: share as outsider with "group1" and "user1" with different permissions + [ + [ + [1, 100, 'user2', '/share', 31], + ], + [ + [2, 100, 'user2', '/share', 15], + ], + [ + // use highest permissions + ['1', 100, 'user2', '/share', 31], + ], + ], + // #2: share as outsider with "group1" and "group2" with same permissions + [ + [ + ], + [ + [1, 100, 'user2', '/share', 31], + [2, 100, 'user2', '/share', 31], + ], + [ + // combined, first group share has higher priority + ['1', 100, 'user2', '/share', 31], + ], + ], + // #3: share as outsider with "group1" and "group2" with different permissions + [ + [ + ], + [ + [1, 100, 'user2', '/share', 31], + [2, 100, 'user2', '/share', 15], + ], + [ + // use higher permissions + ['1', 100, 'user2', '/share', 31], + ], + ], + // #4: share as insider with "group1" + [ + [ + ], + [ + [1, 100, 'user1', '/share', 31], + ], + [ + // no received share since "user1" is the sharer/owner + ], + ], + // #5: share as insider with "group1" and "group2" with different permissions + [ + [ + ], + [ + [1, 100, 'user1', '/share', 31], + [2, 100, 'user1', '/share', 15], + ], + [ + // no received share since "user1" is the sharer/owner + ], + ], + // #6: share as outside with "group1", recipient opted out + [ + [ + ], + [ + [1, 100, 'user2', '/share', 0], + ], + [ + // no received share since "user1" opted out + ], + ], + // #7: share as outsider with "group1" and "user1" where recipient renamed in between + [ + [ + [1, 100, 'user2', '/share2-renamed', 31], + ], + [ + [2, 100, 'user2', '/share2', 31], + ], + [ + // use target of least recent share + ['1', 100, 'user2', '/share2-renamed', 31], + ], + ], + // #8: share as outsider with "group1" and "user1" where recipient renamed in between + [ + [ + [2, 100, 'user2', '/share2', 31], + ], + [ + [1, 100, 'user2', '/share2-renamed', 31], + ], + [ + // use target of least recent share + ['1', 100, 'user2', '/share2-renamed', 31], + ], + ], + ]; + } - $share5 = $this->getMockBuilder('\OCP\Share\IShare')->getMock(); - $share5->expects($this->once()) - ->method('getPermissions') - ->will($this->returnValue(31)); - $share5->expects($this->any()) - ->method('getShareOwner') - ->will($this->returnValue('user1')); + /** + * Tests merging shares. + * + * Happens when sharing the same entry to a user through multiple ways, + * like several groups and also direct shares at the same time. + * + * @dataProvider mergeSharesDataProvider + * + * @param array $userShares array of user share specs + * @param array $groupShares array of group share specs + * @param array $expectedShares array of expected supershare specs + */ + public function testMergeShares($userShares, $groupShares, $expectedShares) { + $rootFolder = $this->getMock('\OCP\Files\IRootFolder'); + $userManager = $this->getMock('\OCP\IUserManager'); - $userShares = [$share1, $share2]; - $groupShares = [$share3, $share4, $share5]; + $userShares = array_map(function($shareSpec) { + return $this->makeMockShare($shareSpec[0], $shareSpec[1], $shareSpec[2], $shareSpec[3], $shareSpec[4]); + }, $userShares); + $groupShares = array_map(function($shareSpec) { + return $this->makeMockShare($shareSpec[0], $shareSpec[1], $shareSpec[2], $shareSpec[3], $shareSpec[4]); + }, $groupShares); $this->user->expects($this->any()) ->method('getUID') @@ -126,17 +299,29 @@ class MountProviderTest extends \Test\TestCase { ->method('getSharedWith') ->with('user1', \OCP\Share::SHARE_TYPE_GROUP, null, -1) ->will($this->returnValue($groupShares)); + $this->shareManager->expects($this->any()) + ->method('newShare') + ->will($this->returnCallback(function() use ($rootFolder, $userManager) { + return new \OC\Share20\Share($rootFolder, $userManager); + })); $mounts = $this->provider->getMountsForUser($this->user, $this->loader); - $this->assertCount(2, $mounts); - $this->assertSharedMount($share1, $mounts[0]); - $this->assertSharedMount($share4, $mounts[1]); - } + $this->assertCount(count($expectedShares), $mounts); + + foreach ($mounts as $index => $mount) { + $expectedShare = $expectedShares[$index]; + $this->assertInstanceOf('OCA\Files_Sharing\SharedMount', $mount); + + // supershare + $share = $mount->getShare(); - private function assertSharedMount(IShare $share, IMountPoint $mount) { - $this->assertInstanceOf('OCA\Files_Sharing\SharedMount', $mount); - $this->assertEquals($share, $mount->getShare()); + $this->assertEquals($expectedShare[0], $share->getId()); + $this->assertEquals($expectedShare[1], $share->getNodeId()); + $this->assertEquals($expectedShare[2], $share->getShareOwner()); + $this->assertEquals($expectedShare[3], $share->getTarget()); + $this->assertEquals($expectedShare[4], $share->getPermissions()); + } } } diff --git a/apps/files_trashbin/appinfo/info.xml b/apps/files_trashbin/appinfo/info.xml index 2b19ba6fe11..16ed81efd77 100644 --- a/apps/files_trashbin/appinfo/info.xml +++ b/apps/files_trashbin/appinfo/info.xml @@ -10,7 +10,7 @@ To prevent a user from running out of disk space, the Deleted files app will not <licence>AGPL</licence> <author>Bjoern Schiessle</author> <default_enable/> - <version>1.0.0</version> + <version>1.1.0</version> <types> <filesystem/> </types> diff --git a/apps/files_trashbin/l10n/de_DE.js b/apps/files_trashbin/l10n/de_DE.js index 84a2c382efa..f39b61b58ef 100644 --- a/apps/files_trashbin/l10n/de_DE.js +++ b/apps/files_trashbin/l10n/de_DE.js @@ -9,7 +9,7 @@ OC.L10N.register( "Delete permanently" : "Endgültig löschen", "Error" : "Fehler", "This operation is forbidden" : "Diese Operation ist nicht erlaubt", - "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfen Sie die Logdateien oder kontaktieren Sie den Administrator", + "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfen Sie die Log-Dateien oder kontaktieren Sie den Administrator", "restored" : "Wiederhergestellt", "No deleted files" : "Keine gelöschten Dateien", "You will be able to recover deleted files from here" : "Sie können hier gelöschte Dateien wiederherstellen", diff --git a/apps/files_trashbin/l10n/de_DE.json b/apps/files_trashbin/l10n/de_DE.json index 966461efee3..0f4e3f950e4 100644 --- a/apps/files_trashbin/l10n/de_DE.json +++ b/apps/files_trashbin/l10n/de_DE.json @@ -7,7 +7,7 @@ "Delete permanently" : "Endgültig löschen", "Error" : "Fehler", "This operation is forbidden" : "Diese Operation ist nicht erlaubt", - "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfen Sie die Logdateien oder kontaktieren Sie den Administrator", + "This directory is unavailable, please check the logs or contact the administrator" : "Dieses Verzeichnis ist nicht verfügbar, bitte überprüfen Sie die Log-Dateien oder kontaktieren Sie den Administrator", "restored" : "Wiederhergestellt", "No deleted files" : "Keine gelöschten Dateien", "You will be able to recover deleted files from here" : "Sie können hier gelöschte Dateien wiederherstellen", diff --git a/apps/files_versions/l10n/id.js b/apps/files_versions/l10n/id.js index 5d3579c3e62..5848578b3d4 100644 --- a/apps/files_versions/l10n/id.js +++ b/apps/files_versions/l10n/id.js @@ -6,6 +6,6 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "Gagal mengembalikan {file} ke revisi {timestamp}.", "Restore" : "Pulihkan", "No other versions available" : "Tidak ada versi lain yang tersedia", - "More versions..." : "Versi lebih..." + "More versions..." : "Versi lainnya..." }, "nplurals=1; plural=0;"); diff --git a/apps/files_versions/l10n/id.json b/apps/files_versions/l10n/id.json index 7ab5a1638f2..9560af3af5a 100644 --- a/apps/files_versions/l10n/id.json +++ b/apps/files_versions/l10n/id.json @@ -4,6 +4,6 @@ "Failed to revert {file} to revision {timestamp}." : "Gagal mengembalikan {file} ke revisi {timestamp}.", "Restore" : "Pulihkan", "No other versions available" : "Tidak ada versi lain yang tersedia", - "More versions..." : "Versi lebih..." + "More versions..." : "Versi lainnya..." },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/provisioning_api/appinfo/info.xml b/apps/provisioning_api/appinfo/info.xml index 2f62ff69b17..009bdca0c1e 100644 --- a/apps/provisioning_api/appinfo/info.xml +++ b/apps/provisioning_api/appinfo/info.xml @@ -17,7 +17,7 @@ <documentation> <admin>admin-provisioning-api</admin> </documentation> - <version>1.0.0</version> + <version>1.1.0</version> <namespace>Provisioning_API</namespace> <types> <prevent_group_restriction/> diff --git a/apps/systemtags/appinfo/info.xml b/apps/systemtags/appinfo/info.xml index 3521658ac20..5eced10b710 100644 --- a/apps/systemtags/appinfo/info.xml +++ b/apps/systemtags/appinfo/info.xml @@ -7,7 +7,7 @@ <licence>AGPL</licence> <author>Vincent Petry, Joas Schilling</author> <default_enable/> - <version>1.0.0</version> + <version>1.1.0</version> <dependencies> <owncloud min-version="9.2" max-version="9.2" /> </dependencies> diff --git a/apps/systemtags/img/tag.png b/apps/systemtags/img/tag.png Binary files differindex 694a8cf17ad..1ec3843c9d3 100644 --- a/apps/systemtags/img/tag.png +++ b/apps/systemtags/img/tag.png diff --git a/apps/systemtags/img/tag.svg b/apps/systemtags/img/tag.svg index bf4688c9228..293a7f5be9c 100644 --- a/apps/systemtags/img/tag.svg +++ b/apps/systemtags/img/tag.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0"> <rect style="color:#000000" fill-opacity="0" height="97.986" width="163.31" y="-32.993" x="-62.897"/> - <path d="m6.1861 0.96121-4.807 0.01316c-0.27161 0-0.34656 0.20987-0.34703 0.34604l-0.015132 4.8017 8.7232 8.7222c0.19688 0.19829 0.51234 0.19697 0.7092 0l4.4569-4.4569c0.19672-0.19688 0.19895-0.51327 0.002-0.71024l-0.0011 0.00876-8.3668-8.3668-0.3541-0.35417zm-2.1669 1.8522a1.1438 1.1438 0 0 1 1.144 1.144 1.1438 1.1438 0 0 1 -1.144 1.144 1.1438 1.1438 0 0 1 -1.144 -1.144 1.1438 1.1438 0 0 1 1.144 -1.144z" fill="#6e6e6e"/> + <path d="m6.1861 0.96121-4.807 0.01316c-0.27161 0-0.34656 0.20987-0.34703 0.34604l-0.015132 4.8017 8.7232 8.7222c0.19688 0.19829 0.51234 0.19697 0.7092 0l4.4569-4.4569c0.19672-0.19688 0.19895-0.51327 0.002-0.71024l-0.0011 0.00876-8.3668-8.3668-0.3541-0.35417zm-2.1669 1.8522a1.1438 1.1438 0 0 1 1.144 1.144 1.1438 1.1438 0 0 1 -1.144 1.144 1.1438 1.1438 0 0 1 -1.144 -1.144 1.1438 1.1438 0 0 1 1.144 -1.144z"/> </svg> diff --git a/apps/systemtags/l10n/cs_CZ.js b/apps/systemtags/l10n/cs_CZ.js index d67754eb67e..31f290bd280 100644 --- a/apps/systemtags/l10n/cs_CZ.js +++ b/apps/systemtags/l10n/cs_CZ.js @@ -2,6 +2,9 @@ OC.L10N.register( "systemtags", { "Tags" : "Značky", + "Update" : "Aktualizovat", + "Create" : "Vytvořit", + "Select tag…" : "Zvolit značku…", "Tagged files" : "Otagované soubory", "Select tags to filter by" : "Vybrat tagy pro filtr", "Please select tags to filter by" : "Vyberte prosím tagy pro filtrování", @@ -23,7 +26,13 @@ OC.L10N.register( "%1$s unassigned system tag %3$s from %2$s" : "%1$s odebral systémový tag %3$s ze %2$s", "%s (restricted)" : "%s (omezeno)", "%s (invisible)" : "%s (neviditelný)", + "Collaborative tags" : "Značky pro spolupráci", "Name" : "Název", + "Delete" : "Smazat", + "Public" : "Veřejné", + "Restricted" : "Omezené", + "Invisible" : "Neviditelné", + "Reset" : "Obnovit", "No files in here" : "Žádné soubory", "No entries found in this folder" : "V tomto adresáři nebylo nic nalezeno", "Size" : "Velikost", diff --git a/apps/systemtags/l10n/cs_CZ.json b/apps/systemtags/l10n/cs_CZ.json index 31e4b4bc1ed..d0729858edf 100644 --- a/apps/systemtags/l10n/cs_CZ.json +++ b/apps/systemtags/l10n/cs_CZ.json @@ -1,5 +1,8 @@ { "translations": { "Tags" : "Značky", + "Update" : "Aktualizovat", + "Create" : "Vytvořit", + "Select tag…" : "Zvolit značku…", "Tagged files" : "Otagované soubory", "Select tags to filter by" : "Vybrat tagy pro filtr", "Please select tags to filter by" : "Vyberte prosím tagy pro filtrování", @@ -21,7 +24,13 @@ "%1$s unassigned system tag %3$s from %2$s" : "%1$s odebral systémový tag %3$s ze %2$s", "%s (restricted)" : "%s (omezeno)", "%s (invisible)" : "%s (neviditelný)", + "Collaborative tags" : "Značky pro spolupráci", "Name" : "Název", + "Delete" : "Smazat", + "Public" : "Veřejné", + "Restricted" : "Omezené", + "Invisible" : "Neviditelné", + "Reset" : "Obnovit", "No files in here" : "Žádné soubory", "No entries found in this folder" : "V tomto adresáři nebylo nic nalezeno", "Size" : "Velikost", diff --git a/apps/systemtags/l10n/de.js b/apps/systemtags/l10n/de.js index 349d1562c77..3271146d62b 100644 --- a/apps/systemtags/l10n/de.js +++ b/apps/systemtags/l10n/de.js @@ -2,28 +2,37 @@ OC.L10N.register( "systemtags", { "Tags" : "Tags", - "Tagged files" : "Tags", - "Select tags to filter by" : "Wähle Tags die gefiltert werden sollen", - "Please select tags to filter by" : "Bitte wähle Tags die gefiltert werden sollen", + "Update" : "Aktualisierung", + "Create" : "Erstellen", + "Select tag…" : "Tag wählen", + "Tagged files" : "Mit Tags versehene Dateien", + "Select tags to filter by" : "Wähle Tags nach denen gefilter werden soll", + "Please select tags to filter by" : "Bitte wähle die Tags nach denen gefiltert werden soll", "No files found for the selected tags" : "Keine Dateien für die ausgewählten Tags gefunden", "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei sind geändert worden", - "You assigned system tag %3$s" : "System-Kennzeichnung %3$s wurde zugewiesen", - "%1$s assigned system tag %3$s" : "%1$s hat System-Tag %3$s angebracht", - "You unassigned system tag %3$s" : "System-Bezeichnung %3$s wurde entfernt", + "You assigned system tag %3$s" : "System-Tag %3$s wurde zugewiesen", + "%1$s assigned system tag %3$s" : "%1$s hat System-Tag %3$s zugewiesen", + "You unassigned system tag %3$s" : "System-Tag %3$s wurde entfernt", "%1$s unassigned system tag %3$s" : "%1$s hat den System-Tag %3$s entfernt", - "You created system tag %2$s" : "System-Bezeichnung %2$s wurde erstellt", - "%1$s created system tag %2$s" : "%1$s hat erstellt System-Tag %2$s", - "You deleted system tag %2$s" : "System-Kennzeichnung %2$s wurde gelöscht", + "You created system tag %2$s" : "System-Tag %2$s wurde erstellt", + "%1$s created system tag %2$s" : "%1$s hat System-Tag %2$s erstellt", + "You deleted system tag %2$s" : "System-Tag %2$s wurde gelöscht", "%1$s deleted system tag %2$s" : "%1$s hat System-Tag %2$s gelöscht", - "You updated system tag %3$s to %2$s" : "System-Bezeichnung %3$s zu %2$s aktualisiert", - "%1$s updated system tag %3$s to %2$s" : "%1$s hat System-Bezeichnung von %3$s zu %2$s aktualisiert", - "You assigned system tag %3$s to %2$s" : "System-Bezeichnung %3$s an %2$s zugewiesen", - "%1$s assigned system tag %3$s to %2$s" : "%1$s hat System-Tag %3$s an %2$s angebracht", + "You updated system tag %3$s to %2$s" : "System-Tag %3$s wurde zu %2$s aktualisiert", + "%1$s updated system tag %3$s to %2$s" : "%1$s hat System-BTag von %3$s zu %2$s aktualisiert", + "You assigned system tag %3$s to %2$s" : "System-Tag %3$s an %2$s zugewiesen", + "%1$s assigned system tag %3$s to %2$s" : "%1$s hat System-Tag %3$s %2$s zugewiesen", "You unassigned system tag %3$s from %2$s" : "System-Bezeichnung %3$s von %2$s entfernt", "%1$s unassigned system tag %3$s from %2$s" : "%1$s hat den System-Tag %3$s von %2$s entfernt", "%s (restricted)" : "%s (eingeschränkt)", "%s (invisible)" : "%s (unsichtbar)", + "Collaborative tags" : "Zusammenarbeits-Tags", "Name" : "Name", + "Delete" : "Löschen", + "Public" : "Öffentlich", + "Restricted" : "Eingeschränkt", + "Invisible" : "Versteckt", + "Reset" : "Zurücksetzen", "No files in here" : "Keine Dateien vorhanden", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", "Size" : "Größe", diff --git a/apps/systemtags/l10n/de.json b/apps/systemtags/l10n/de.json index c74987a4722..67a13fd0999 100644 --- a/apps/systemtags/l10n/de.json +++ b/apps/systemtags/l10n/de.json @@ -1,27 +1,36 @@ { "translations": { "Tags" : "Tags", - "Tagged files" : "Tags", - "Select tags to filter by" : "Wähle Tags die gefiltert werden sollen", - "Please select tags to filter by" : "Bitte wähle Tags die gefiltert werden sollen", + "Update" : "Aktualisierung", + "Create" : "Erstellen", + "Select tag…" : "Tag wählen", + "Tagged files" : "Mit Tags versehene Dateien", + "Select tags to filter by" : "Wähle Tags nach denen gefilter werden soll", + "Please select tags to filter by" : "Bitte wähle die Tags nach denen gefiltert werden soll", "No files found for the selected tags" : "Keine Dateien für die ausgewählten Tags gefunden", "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei sind geändert worden", - "You assigned system tag %3$s" : "System-Kennzeichnung %3$s wurde zugewiesen", - "%1$s assigned system tag %3$s" : "%1$s hat System-Tag %3$s angebracht", - "You unassigned system tag %3$s" : "System-Bezeichnung %3$s wurde entfernt", + "You assigned system tag %3$s" : "System-Tag %3$s wurde zugewiesen", + "%1$s assigned system tag %3$s" : "%1$s hat System-Tag %3$s zugewiesen", + "You unassigned system tag %3$s" : "System-Tag %3$s wurde entfernt", "%1$s unassigned system tag %3$s" : "%1$s hat den System-Tag %3$s entfernt", - "You created system tag %2$s" : "System-Bezeichnung %2$s wurde erstellt", - "%1$s created system tag %2$s" : "%1$s hat erstellt System-Tag %2$s", - "You deleted system tag %2$s" : "System-Kennzeichnung %2$s wurde gelöscht", + "You created system tag %2$s" : "System-Tag %2$s wurde erstellt", + "%1$s created system tag %2$s" : "%1$s hat System-Tag %2$s erstellt", + "You deleted system tag %2$s" : "System-Tag %2$s wurde gelöscht", "%1$s deleted system tag %2$s" : "%1$s hat System-Tag %2$s gelöscht", - "You updated system tag %3$s to %2$s" : "System-Bezeichnung %3$s zu %2$s aktualisiert", - "%1$s updated system tag %3$s to %2$s" : "%1$s hat System-Bezeichnung von %3$s zu %2$s aktualisiert", - "You assigned system tag %3$s to %2$s" : "System-Bezeichnung %3$s an %2$s zugewiesen", - "%1$s assigned system tag %3$s to %2$s" : "%1$s hat System-Tag %3$s an %2$s angebracht", + "You updated system tag %3$s to %2$s" : "System-Tag %3$s wurde zu %2$s aktualisiert", + "%1$s updated system tag %3$s to %2$s" : "%1$s hat System-BTag von %3$s zu %2$s aktualisiert", + "You assigned system tag %3$s to %2$s" : "System-Tag %3$s an %2$s zugewiesen", + "%1$s assigned system tag %3$s to %2$s" : "%1$s hat System-Tag %3$s %2$s zugewiesen", "You unassigned system tag %3$s from %2$s" : "System-Bezeichnung %3$s von %2$s entfernt", "%1$s unassigned system tag %3$s from %2$s" : "%1$s hat den System-Tag %3$s von %2$s entfernt", "%s (restricted)" : "%s (eingeschränkt)", "%s (invisible)" : "%s (unsichtbar)", + "Collaborative tags" : "Zusammenarbeits-Tags", "Name" : "Name", + "Delete" : "Löschen", + "Public" : "Öffentlich", + "Restricted" : "Eingeschränkt", + "Invisible" : "Versteckt", + "Reset" : "Zurücksetzen", "No files in here" : "Keine Dateien vorhanden", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", "Size" : "Größe", diff --git a/apps/systemtags/l10n/de_DE.js b/apps/systemtags/l10n/de_DE.js index 769a31911c6..8c7e0c1d466 100644 --- a/apps/systemtags/l10n/de_DE.js +++ b/apps/systemtags/l10n/de_DE.js @@ -2,28 +2,37 @@ OC.L10N.register( "systemtags", { "Tags" : "Tags", - "Tagged files" : "Tags", - "Select tags to filter by" : "Wählen Sie Tags die gefiltert werden sollen", - "Please select tags to filter by" : "Bitte wählen Sie Tags die gefiltert werden sollen", + "Update" : "Aktualisieren", + "Create" : "Erstellen", + "Select tag…" : "Tag wählen", + "Tagged files" : "Getaggte Dateien", + "Select tags to filter by" : "Wählen Sie Tags nach denen gefiltert werden soll", + "Please select tags to filter by" : "Bitte wählen Sie Tags nach denen gefiltert werden sollen", "No files found for the selected tags" : "Keine Dateien für die ausgewählten Tags gefunden", "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei sind geändert worden", - "You assigned system tag %3$s" : "Sie haben den System-Tag %3$s angebracht", - "%1$s assigned system tag %3$s" : "%1$s hat System-Tag %3$s angebracht", + "You assigned system tag %3$s" : "Sie haben den System-Tag %3$s zugeordnet", + "%1$s assigned system tag %3$s" : "%1$s hat den System-Tag %3$s zugeordnet", "You unassigned system tag %3$s" : "Sie haben den System-Tag %3$s entfernt", "%1$s unassigned system tag %3$s" : "%1$s hat den System-Tag %3$s entfernt", "You created system tag %2$s" : "Sie haben den System-Tag %2$s erstellt", - "%1$s created system tag %2$s" : "%1$s hat erstellt System-Tag %2$s", + "%1$s created system tag %2$s" : "%1$s hat den System-Tag %2$s erstellt", "You deleted system tag %2$s" : "Sie haben den System-Tag %2$s gelöscht", "%1$s deleted system tag %2$s" : "%1$s hat System-Tag %2$s gelöscht", "You updated system tag %3$s to %2$s" : "Sie haben den System-Tag %3$s zu %2$s aktualisiert", "%1$s updated system tag %3$s to %2$s" : "%1$s hat System-Tag von %3$s zu %2$s aktualisiert", - "You assigned system tag %3$s to %2$s" : "Sie haben den System-Tag %3$s an %2$s angebracht", - "%1$s assigned system tag %3$s to %2$s" : "%1$s hat System-Tag %3$s an %2$s angebracht", + "You assigned system tag %3$s to %2$s" : "Sie haben den System-Tag %3$s an %2$s zugeordnet", + "%1$s assigned system tag %3$s to %2$s" : "%1$s hat den System-Tag %3$s an %2$s zugeordnet", "You unassigned system tag %3$s from %2$s" : "Sie haben den System-Tag %3$s von %2$s entfernt", "%1$s unassigned system tag %3$s from %2$s" : "%1$s hat den System-Tag %3$s von %2$s entfernt", "%s (restricted)" : "%s (eingeschränkt)", "%s (invisible)" : "%s (unsichtbar)", + "Collaborative tags" : "Gemeinsame Tags", "Name" : "Name", + "Delete" : "Löschen", + "Public" : "Öffentlich", + "Restricted" : "Eingeschränkt", + "Invisible" : "Nicht sichtbar", + "Reset" : "Zurücksetzen", "No files in here" : "Keine Dateien vorhanden", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", "Size" : "Größe", diff --git a/apps/systemtags/l10n/de_DE.json b/apps/systemtags/l10n/de_DE.json index 9e97b6c2459..443868af44a 100644 --- a/apps/systemtags/l10n/de_DE.json +++ b/apps/systemtags/l10n/de_DE.json @@ -1,27 +1,36 @@ { "translations": { "Tags" : "Tags", - "Tagged files" : "Tags", - "Select tags to filter by" : "Wählen Sie Tags die gefiltert werden sollen", - "Please select tags to filter by" : "Bitte wählen Sie Tags die gefiltert werden sollen", + "Update" : "Aktualisieren", + "Create" : "Erstellen", + "Select tag…" : "Tag wählen", + "Tagged files" : "Getaggte Dateien", + "Select tags to filter by" : "Wählen Sie Tags nach denen gefiltert werden soll", + "Please select tags to filter by" : "Bitte wählen Sie Tags nach denen gefiltert werden sollen", "No files found for the selected tags" : "Keine Dateien für die ausgewählten Tags gefunden", "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei sind geändert worden", - "You assigned system tag %3$s" : "Sie haben den System-Tag %3$s angebracht", - "%1$s assigned system tag %3$s" : "%1$s hat System-Tag %3$s angebracht", + "You assigned system tag %3$s" : "Sie haben den System-Tag %3$s zugeordnet", + "%1$s assigned system tag %3$s" : "%1$s hat den System-Tag %3$s zugeordnet", "You unassigned system tag %3$s" : "Sie haben den System-Tag %3$s entfernt", "%1$s unassigned system tag %3$s" : "%1$s hat den System-Tag %3$s entfernt", "You created system tag %2$s" : "Sie haben den System-Tag %2$s erstellt", - "%1$s created system tag %2$s" : "%1$s hat erstellt System-Tag %2$s", + "%1$s created system tag %2$s" : "%1$s hat den System-Tag %2$s erstellt", "You deleted system tag %2$s" : "Sie haben den System-Tag %2$s gelöscht", "%1$s deleted system tag %2$s" : "%1$s hat System-Tag %2$s gelöscht", "You updated system tag %3$s to %2$s" : "Sie haben den System-Tag %3$s zu %2$s aktualisiert", "%1$s updated system tag %3$s to %2$s" : "%1$s hat System-Tag von %3$s zu %2$s aktualisiert", - "You assigned system tag %3$s to %2$s" : "Sie haben den System-Tag %3$s an %2$s angebracht", - "%1$s assigned system tag %3$s to %2$s" : "%1$s hat System-Tag %3$s an %2$s angebracht", + "You assigned system tag %3$s to %2$s" : "Sie haben den System-Tag %3$s an %2$s zugeordnet", + "%1$s assigned system tag %3$s to %2$s" : "%1$s hat den System-Tag %3$s an %2$s zugeordnet", "You unassigned system tag %3$s from %2$s" : "Sie haben den System-Tag %3$s von %2$s entfernt", "%1$s unassigned system tag %3$s from %2$s" : "%1$s hat den System-Tag %3$s von %2$s entfernt", "%s (restricted)" : "%s (eingeschränkt)", "%s (invisible)" : "%s (unsichtbar)", + "Collaborative tags" : "Gemeinsame Tags", "Name" : "Name", + "Delete" : "Löschen", + "Public" : "Öffentlich", + "Restricted" : "Eingeschränkt", + "Invisible" : "Nicht sichtbar", + "Reset" : "Zurücksetzen", "No files in here" : "Keine Dateien vorhanden", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", "Size" : "Größe", diff --git a/apps/systemtags/l10n/es.js b/apps/systemtags/l10n/es.js index a261ab3a162..08dce10c27b 100644 --- a/apps/systemtags/l10n/es.js +++ b/apps/systemtags/l10n/es.js @@ -2,6 +2,9 @@ OC.L10N.register( "systemtags", { "Tags" : "Etiquetas", + "Update" : "Actualizar", + "Create" : "Crear", + "Select tag…" : "Seleccionar etiqueta...", "Tagged files" : "Archivos etiquetados", "Select tags to filter by" : "Seleccionar etiquetas por las que filtrar", "Please select tags to filter by" : "Por favor, seleccione las etiquetas por las que desea filtrar", @@ -23,7 +26,13 @@ OC.L10N.register( "%1$s unassigned system tag %3$s from %2$s" : "%1$s eliminó la asignación de etiqueta de sistema %3$s de %2$s", "%s (restricted)" : "%s (restringido)", "%s (invisible)" : "%s (invisible)", + "Collaborative tags" : "Etiquetas colaborativas", "Name" : "Nombre", + "Delete" : "Borrar", + "Public" : "Público", + "Restricted" : "Restringido", + "Invisible" : "Invisible", + "Reset" : "Reiniciar", "No files in here" : "Aquí no hay archivos", "No entries found in this folder" : "No hay entradas en esta carpeta", "Size" : "Tamaño", diff --git a/apps/systemtags/l10n/es.json b/apps/systemtags/l10n/es.json index 6c0a32910ea..695f6a0fcbd 100644 --- a/apps/systemtags/l10n/es.json +++ b/apps/systemtags/l10n/es.json @@ -1,5 +1,8 @@ { "translations": { "Tags" : "Etiquetas", + "Update" : "Actualizar", + "Create" : "Crear", + "Select tag…" : "Seleccionar etiqueta...", "Tagged files" : "Archivos etiquetados", "Select tags to filter by" : "Seleccionar etiquetas por las que filtrar", "Please select tags to filter by" : "Por favor, seleccione las etiquetas por las que desea filtrar", @@ -21,7 +24,13 @@ "%1$s unassigned system tag %3$s from %2$s" : "%1$s eliminó la asignación de etiqueta de sistema %3$s de %2$s", "%s (restricted)" : "%s (restringido)", "%s (invisible)" : "%s (invisible)", + "Collaborative tags" : "Etiquetas colaborativas", "Name" : "Nombre", + "Delete" : "Borrar", + "Public" : "Público", + "Restricted" : "Restringido", + "Invisible" : "Invisible", + "Reset" : "Reiniciar", "No files in here" : "Aquí no hay archivos", "No entries found in this folder" : "No hay entradas en esta carpeta", "Size" : "Tamaño", diff --git a/apps/systemtags/l10n/fr.js b/apps/systemtags/l10n/fr.js index d4b9fa83147..75cb31f8541 100644 --- a/apps/systemtags/l10n/fr.js +++ b/apps/systemtags/l10n/fr.js @@ -2,6 +2,9 @@ OC.L10N.register( "systemtags", { "Tags" : "Étiquettes", + "Update" : "Mise à jour", + "Create" : "Créer", + "Select tag…" : "Sélectionner une étiquette...", "Tagged files" : "Fichiers étiquetés", "Select tags to filter by" : "Sélectionner les étiquettes par lesquelles filtrer", "Please select tags to filter by" : "Veuillez sélectionner les étiquettes par lesquelles filtrer", @@ -23,7 +26,13 @@ OC.L10N.register( "%1$s unassigned system tag %3$s from %2$s" : "%1$s a retiré l'étiquette collaborative %3$s à %2$s", "%s (restricted)" : "%s (restreint)", "%s (invisible)" : "%s (invisible)", + "Collaborative tags" : "Étiquettes collaboratives ", "Name" : "Nom", + "Delete" : "Supprimer", + "Public" : "Publique", + "Restricted" : "Restreint", + "Invisible" : "Invisible", + "Reset" : "Réinitialiser", "No files in here" : "Aucun fichier", "No entries found in this folder" : "Aucune entrée trouvée dans ce dossier", "Size" : "Taille", diff --git a/apps/systemtags/l10n/fr.json b/apps/systemtags/l10n/fr.json index 564cac7dd08..df1b18a3eb2 100644 --- a/apps/systemtags/l10n/fr.json +++ b/apps/systemtags/l10n/fr.json @@ -1,5 +1,8 @@ { "translations": { "Tags" : "Étiquettes", + "Update" : "Mise à jour", + "Create" : "Créer", + "Select tag…" : "Sélectionner une étiquette...", "Tagged files" : "Fichiers étiquetés", "Select tags to filter by" : "Sélectionner les étiquettes par lesquelles filtrer", "Please select tags to filter by" : "Veuillez sélectionner les étiquettes par lesquelles filtrer", @@ -21,7 +24,13 @@ "%1$s unassigned system tag %3$s from %2$s" : "%1$s a retiré l'étiquette collaborative %3$s à %2$s", "%s (restricted)" : "%s (restreint)", "%s (invisible)" : "%s (invisible)", + "Collaborative tags" : "Étiquettes collaboratives ", "Name" : "Nom", + "Delete" : "Supprimer", + "Public" : "Publique", + "Restricted" : "Restreint", + "Invisible" : "Invisible", + "Reset" : "Réinitialiser", "No files in here" : "Aucun fichier", "No entries found in this folder" : "Aucune entrée trouvée dans ce dossier", "Size" : "Taille", diff --git a/apps/systemtags/l10n/id.js b/apps/systemtags/l10n/id.js index 5ce41462833..bb6424c9556 100644 --- a/apps/systemtags/l10n/id.js +++ b/apps/systemtags/l10n/id.js @@ -2,9 +2,39 @@ OC.L10N.register( "systemtags", { "Tags" : "Tag", + "Update" : "Pembaruan", + "Create" : "Buat", + "Select tag…" : "Pilih tag...", + "Tagged files" : "Berkas ter-tag", + "Select tags to filter by" : "Pilih tag untuk disaring", + "Please select tags to filter by" : "Mohon pilih tag untuk disaring", + "No files found for the selected tags" : "Berkas tidak ditemukan untuk tag yang dipilih", + "<strong>System tags</strong> for a file have been modified" : "<strong>Tag sistem</strong> untuk sebuah berkas telah dimodifikasi", + "You assigned system tag %3$s" : "Anda memberikan tag sistem %3$s", + "%1$s assigned system tag %3$s" : "%1$s memberikan tag sistem %3$s", + "You unassigned system tag %3$s" : "Anda melepas tag sistem %3$s", + "%1$s unassigned system tag %3$s" : "%1$s melepas tag sistem %3$s", + "You created system tag %2$s" : "Anda membuat tag sistem %2$s", + "%1$s created system tag %2$s" : "%1$s membuat tag sistem %2$s", + "You deleted system tag %2$s" : "Anda menghapus tag sistem %2$s", + "%1$s deleted system tag %2$s" : "%1$s menghapus tag sistem %2$s", + "You updated system tag %3$s to %2$s" : "Anda memperbarui tag sistem %3$s ke %2$s", + "%1$s updated system tag %3$s to %2$s" : "%1$s memperbarui tag sistem %3$s ke %2$s", + "You assigned system tag %3$s to %2$s" : "Anda memberikan tag sistem %3$s ke %2$s", + "%1$s assigned system tag %3$s to %2$s" : "%1$s memberikan tag sistem %3$s ke %2$s", + "You unassigned system tag %3$s from %2$s" : "Anda melepas tag sistem %3$s ke %2$s", + "%1$s unassigned system tag %3$s from %2$s" : "%1$s melepas tag sistem %3$s ke %2$s", + "%s (restricted)" : "%s (terbatas)", + "%s (invisible)" : "%s (tersembunyi)", + "Collaborative tags" : "Tag kolaboratif", + "Name" : "Nama", + "Delete" : "Hapus", + "Public" : "Publik", + "Restricted" : "Terbatas", + "Invisible" : "Tersembunyi", + "Reset" : "Atur ulang", "No files in here" : "Tidak ada berkas disini", "No entries found in this folder" : "Tidak ada entri yang ditemukan dalam folder ini", - "Name" : "Nama", "Size" : "Ukuran", "Modified" : "Dimodifikasi" }, diff --git a/apps/systemtags/l10n/id.json b/apps/systemtags/l10n/id.json index 631da4fbe66..fcbdb6ca1e2 100644 --- a/apps/systemtags/l10n/id.json +++ b/apps/systemtags/l10n/id.json @@ -1,8 +1,38 @@ { "translations": { "Tags" : "Tag", + "Update" : "Pembaruan", + "Create" : "Buat", + "Select tag…" : "Pilih tag...", + "Tagged files" : "Berkas ter-tag", + "Select tags to filter by" : "Pilih tag untuk disaring", + "Please select tags to filter by" : "Mohon pilih tag untuk disaring", + "No files found for the selected tags" : "Berkas tidak ditemukan untuk tag yang dipilih", + "<strong>System tags</strong> for a file have been modified" : "<strong>Tag sistem</strong> untuk sebuah berkas telah dimodifikasi", + "You assigned system tag %3$s" : "Anda memberikan tag sistem %3$s", + "%1$s assigned system tag %3$s" : "%1$s memberikan tag sistem %3$s", + "You unassigned system tag %3$s" : "Anda melepas tag sistem %3$s", + "%1$s unassigned system tag %3$s" : "%1$s melepas tag sistem %3$s", + "You created system tag %2$s" : "Anda membuat tag sistem %2$s", + "%1$s created system tag %2$s" : "%1$s membuat tag sistem %2$s", + "You deleted system tag %2$s" : "Anda menghapus tag sistem %2$s", + "%1$s deleted system tag %2$s" : "%1$s menghapus tag sistem %2$s", + "You updated system tag %3$s to %2$s" : "Anda memperbarui tag sistem %3$s ke %2$s", + "%1$s updated system tag %3$s to %2$s" : "%1$s memperbarui tag sistem %3$s ke %2$s", + "You assigned system tag %3$s to %2$s" : "Anda memberikan tag sistem %3$s ke %2$s", + "%1$s assigned system tag %3$s to %2$s" : "%1$s memberikan tag sistem %3$s ke %2$s", + "You unassigned system tag %3$s from %2$s" : "Anda melepas tag sistem %3$s ke %2$s", + "%1$s unassigned system tag %3$s from %2$s" : "%1$s melepas tag sistem %3$s ke %2$s", + "%s (restricted)" : "%s (terbatas)", + "%s (invisible)" : "%s (tersembunyi)", + "Collaborative tags" : "Tag kolaboratif", + "Name" : "Nama", + "Delete" : "Hapus", + "Public" : "Publik", + "Restricted" : "Terbatas", + "Invisible" : "Tersembunyi", + "Reset" : "Atur ulang", "No files in here" : "Tidak ada berkas disini", "No entries found in this folder" : "Tidak ada entri yang ditemukan dalam folder ini", - "Name" : "Nama", "Size" : "Ukuran", "Modified" : "Dimodifikasi" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/systemtags/l10n/it.js b/apps/systemtags/l10n/it.js index 05901799052..e448ae94594 100644 --- a/apps/systemtags/l10n/it.js +++ b/apps/systemtags/l10n/it.js @@ -2,6 +2,9 @@ OC.L10N.register( "systemtags", { "Tags" : "Etichette", + "Update" : "Aggiorna", + "Create" : "Crea", + "Select tag…" : "Seleziona etichetta...", "Tagged files" : "File etichettati", "Select tags to filter by" : "Seleziona le etichette per filtrare", "Please select tags to filter by" : "Seleziona le etichette per filtrare", @@ -23,7 +26,13 @@ OC.L10N.register( "%1$s unassigned system tag %3$s from %2$s" : "%1$s ha rimosso l'etichetta di sistema %3$s da %2$s", "%s (restricted)" : "%s (limitato)", "%s (invisible)" : "%s (invisibile)", + "Collaborative tags" : "Etichette collaborative", "Name" : "Nome", + "Delete" : "Elimina", + "Public" : "Pubblico", + "Restricted" : "Limitato", + "Invisible" : "invisibile", + "Reset" : "Ripristina", "No files in here" : "Qui non c'è alcun file", "No entries found in this folder" : "Nessuna voce trovata in questa cartella", "Size" : "Dimensione", diff --git a/apps/systemtags/l10n/it.json b/apps/systemtags/l10n/it.json index 98c94b1d39a..a06a99dd806 100644 --- a/apps/systemtags/l10n/it.json +++ b/apps/systemtags/l10n/it.json @@ -1,5 +1,8 @@ { "translations": { "Tags" : "Etichette", + "Update" : "Aggiorna", + "Create" : "Crea", + "Select tag…" : "Seleziona etichetta...", "Tagged files" : "File etichettati", "Select tags to filter by" : "Seleziona le etichette per filtrare", "Please select tags to filter by" : "Seleziona le etichette per filtrare", @@ -21,7 +24,13 @@ "%1$s unassigned system tag %3$s from %2$s" : "%1$s ha rimosso l'etichetta di sistema %3$s da %2$s", "%s (restricted)" : "%s (limitato)", "%s (invisible)" : "%s (invisibile)", + "Collaborative tags" : "Etichette collaborative", "Name" : "Nome", + "Delete" : "Elimina", + "Public" : "Pubblico", + "Restricted" : "Limitato", + "Invisible" : "invisibile", + "Reset" : "Ripristina", "No files in here" : "Qui non c'è alcun file", "No entries found in this folder" : "Nessuna voce trovata in questa cartella", "Size" : "Dimensione", diff --git a/apps/systemtags/l10n/nl.js b/apps/systemtags/l10n/nl.js index 765ec8679e2..0623602d0ba 100644 --- a/apps/systemtags/l10n/nl.js +++ b/apps/systemtags/l10n/nl.js @@ -2,6 +2,9 @@ OC.L10N.register( "systemtags", { "Tags" : "Tags", + "Update" : "Update", + "Create" : "Creeër", + "Select tag…" : "Selecteren tag…", "Tagged files" : "Getagde bestanden", "Select tags to filter by" : "Selecteer tags om op te filteren", "Please select tags to filter by" : "Selecteer tags om op te filteren", @@ -23,7 +26,13 @@ OC.L10N.register( "%1$s unassigned system tag %3$s from %2$s" : "%1$s verwijderde systeemtag %3$s van %2$s", "%s (restricted)" : "%s (beperkt)", "%s (invisible)" : "%s (onzichtbaar)", + "Collaborative tags" : "Samenwerk tags", "Name" : "Naam", + "Delete" : "Verwijder", + "Public" : "Openbaar", + "Restricted" : "Beperkt", + "Invisible" : "Verborgen", + "Reset" : "Reset", "No files in here" : "Hier geen bestanden", "No entries found in this folder" : "Niets gevonden in deze map", "Size" : "Grootte", diff --git a/apps/systemtags/l10n/nl.json b/apps/systemtags/l10n/nl.json index 1b5fcb1cdf4..c40528b6a63 100644 --- a/apps/systemtags/l10n/nl.json +++ b/apps/systemtags/l10n/nl.json @@ -1,5 +1,8 @@ { "translations": { "Tags" : "Tags", + "Update" : "Update", + "Create" : "Creeër", + "Select tag…" : "Selecteren tag…", "Tagged files" : "Getagde bestanden", "Select tags to filter by" : "Selecteer tags om op te filteren", "Please select tags to filter by" : "Selecteer tags om op te filteren", @@ -21,7 +24,13 @@ "%1$s unassigned system tag %3$s from %2$s" : "%1$s verwijderde systeemtag %3$s van %2$s", "%s (restricted)" : "%s (beperkt)", "%s (invisible)" : "%s (onzichtbaar)", + "Collaborative tags" : "Samenwerk tags", "Name" : "Naam", + "Delete" : "Verwijder", + "Public" : "Openbaar", + "Restricted" : "Beperkt", + "Invisible" : "Verborgen", + "Reset" : "Reset", "No files in here" : "Hier geen bestanden", "No entries found in this folder" : "Niets gevonden in deze map", "Size" : "Grootte", diff --git a/apps/systemtags/l10n/pt_BR.js b/apps/systemtags/l10n/pt_BR.js index cae092c39e1..9ff39ad7fb1 100644 --- a/apps/systemtags/l10n/pt_BR.js +++ b/apps/systemtags/l10n/pt_BR.js @@ -2,6 +2,9 @@ OC.L10N.register( "systemtags", { "Tags" : "Etiquetas", + "Update" : "Atualizar", + "Create" : "Criar", + "Select tag…" : "Selecionar etiqueta...", "Tagged files" : "Arquivos etiquetados", "Select tags to filter by" : "Selecionar etiquetas para filtrar por", "Please select tags to filter by" : "Por favor selecione etiquetas para filtrar por", @@ -23,7 +26,13 @@ OC.L10N.register( "%1$s unassigned system tag %3$s from %2$s" : "%1$s etiqueta de sistema não atribuída %3$s de %2$s", "%s (restricted)" : "%s (restrito)", "%s (invisible)" : "%s (invisivel)", + "Collaborative tags" : "Etiquetas colaborativas", "Name" : "Nome", + "Delete" : "Excluir", + "Public" : "Público", + "Restricted" : "Restrito", + "Invisible" : "Invisível", + "Reset" : "Restaurar", "No files in here" : "Nenhum arquivo aqui", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", "Size" : "Tamanho", diff --git a/apps/systemtags/l10n/pt_BR.json b/apps/systemtags/l10n/pt_BR.json index 27ee74fd8a2..6f7a8ee2f2d 100644 --- a/apps/systemtags/l10n/pt_BR.json +++ b/apps/systemtags/l10n/pt_BR.json @@ -1,5 +1,8 @@ { "translations": { "Tags" : "Etiquetas", + "Update" : "Atualizar", + "Create" : "Criar", + "Select tag…" : "Selecionar etiqueta...", "Tagged files" : "Arquivos etiquetados", "Select tags to filter by" : "Selecionar etiquetas para filtrar por", "Please select tags to filter by" : "Por favor selecione etiquetas para filtrar por", @@ -21,7 +24,13 @@ "%1$s unassigned system tag %3$s from %2$s" : "%1$s etiqueta de sistema não atribuída %3$s de %2$s", "%s (restricted)" : "%s (restrito)", "%s (invisible)" : "%s (invisivel)", + "Collaborative tags" : "Etiquetas colaborativas", "Name" : "Nome", + "Delete" : "Excluir", + "Public" : "Público", + "Restricted" : "Restrito", + "Invisible" : "Invisível", + "Reset" : "Restaurar", "No files in here" : "Nenhum arquivo aqui", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", "Size" : "Tamanho", diff --git a/apps/systemtags/l10n/ru.js b/apps/systemtags/l10n/ru.js index 6f148ee51c7..c3f2bb4858f 100644 --- a/apps/systemtags/l10n/ru.js +++ b/apps/systemtags/l10n/ru.js @@ -2,6 +2,9 @@ OC.L10N.register( "systemtags", { "Tags" : "Метки", + "Update" : "Обновить", + "Create" : "Создать", + "Select tag…" : "Выбрать метку...", "Tagged files" : "Файлы с метками", "Select tags to filter by" : "Выберите метки для фильтра", "Please select tags to filter by" : "Выберите метки для фильтра", @@ -23,7 +26,13 @@ OC.L10N.register( "%1$s unassigned system tag %3$s from %2$s" : "%1$s убрал системную метку %3$s с %2$s", "%s (restricted)" : "%s (ограничено)", "%s (invisible)" : "%s (невидимые)", + "Collaborative tags" : "Совместные метки", "Name" : "Имя", + "Delete" : "Удалить", + "Public" : "Открытый", + "Restricted" : "Ограниченный", + "Invisible" : "Невидимый", + "Reset" : "Сбросить", "No files in here" : "Здесь нет файлов", "No entries found in this folder" : "Нет элементов в этом каталоге", "Size" : "Размер", diff --git a/apps/systemtags/l10n/ru.json b/apps/systemtags/l10n/ru.json index 718390ce639..ecf414b9687 100644 --- a/apps/systemtags/l10n/ru.json +++ b/apps/systemtags/l10n/ru.json @@ -1,5 +1,8 @@ { "translations": { "Tags" : "Метки", + "Update" : "Обновить", + "Create" : "Создать", + "Select tag…" : "Выбрать метку...", "Tagged files" : "Файлы с метками", "Select tags to filter by" : "Выберите метки для фильтра", "Please select tags to filter by" : "Выберите метки для фильтра", @@ -21,7 +24,13 @@ "%1$s unassigned system tag %3$s from %2$s" : "%1$s убрал системную метку %3$s с %2$s", "%s (restricted)" : "%s (ограничено)", "%s (invisible)" : "%s (невидимые)", + "Collaborative tags" : "Совместные метки", "Name" : "Имя", + "Delete" : "Удалить", + "Public" : "Открытый", + "Restricted" : "Ограниченный", + "Invisible" : "Невидимый", + "Reset" : "Сбросить", "No files in here" : "Здесь нет файлов", "No entries found in this folder" : "Нет элементов в этом каталоге", "Size" : "Размер", diff --git a/apps/systemtags/l10n/tr.js b/apps/systemtags/l10n/tr.js index eeb72403018..64329421d4d 100644 --- a/apps/systemtags/l10n/tr.js +++ b/apps/systemtags/l10n/tr.js @@ -2,22 +2,39 @@ OC.L10N.register( "systemtags", { "Tags" : "Etiketler", + "Update" : "Güncelle", + "Create" : "Oluştur", + "Select tag…" : "Etiket seç...", "Tagged files" : "Etiketli dosyalar", "Select tags to filter by" : "Filtrelemek için etiketleri seçin", "Please select tags to filter by" : "Filtrelemek için etiketleri seçin", "No files found for the selected tags" : "Seçilen etiketler ile ilgili dosya bulunamadı", "<strong>System tags</strong> for a file have been modified" : "Bir dosya için <strong>sistem etiketleri</strong> değiştirildi", + "You assigned system tag %3$s" : "%3$s sistem etiketini atadınız", "%1$s assigned system tag %3$s" : "%1$s, %3$s sistem etiketini atadı", + "You unassigned system tag %3$s" : "%3$s sistem etiket atamasını kaldırdınız", "%1$s unassigned system tag %3$s" : "%1$s, %3$s sistem etiket atamasını kaldırdı", + "You created system tag %2$s" : "%2$s sistem etiketini oluşturdunuz", "%1$s created system tag %2$s" : "%1$s, %2$s sistem etiketini oluşturdu", + "You deleted system tag %2$s" : "%2$s sistem etiketini sildiniz", "%1$s deleted system tag %2$s" : "%1$s, %2$s sistem etiketini sildi", + "You updated system tag %3$s to %2$s" : "%3$s sistem etiketini %2$s olarak güncellediniz", "%1$s updated system tag %3$s to %2$s" : "%1$s, %3$s sistem etiketini %2$s olarak güncelledi", + "You assigned system tag %3$s to %2$s" : "%3$s sistem etiketini %2$s etiketine atadınız", "%1$s assigned system tag %3$s to %2$s" : "%1$s, %3$s sistem etiketini %2$s etiketine atadı", + "You unassigned system tag %3$s from %2$s" : "%3$s sistem etiketinin %2$s atamasını kaldırdınız", "%1$s unassigned system tag %3$s from %2$s" : "%1$s, %3$s sistem etiketinin %2$s atamasını kaldırdı", + "%s (restricted)" : "%s (kısıtlı)", "%s (invisible)" : "%s (gizli)", + "Collaborative tags" : "İşbirlikçi etiketler", + "Name" : "Ad", + "Delete" : "Sil", + "Public" : "Herkese açık", + "Restricted" : "Kısıtlı", + "Invisible" : "Görünmez", + "Reset" : "Sıfırla", "No files in here" : "Burada hiç dosya yok", "No entries found in this folder" : "Bu klasörde hiçbir girdi bulunamadı", - "Name" : "Ad", "Size" : "Boyut", "Modified" : "Değiştirilme" }, diff --git a/apps/systemtags/l10n/tr.json b/apps/systemtags/l10n/tr.json index 4d29b328fde..b1f724e7e60 100644 --- a/apps/systemtags/l10n/tr.json +++ b/apps/systemtags/l10n/tr.json @@ -1,21 +1,38 @@ { "translations": { "Tags" : "Etiketler", + "Update" : "Güncelle", + "Create" : "Oluştur", + "Select tag…" : "Etiket seç...", "Tagged files" : "Etiketli dosyalar", "Select tags to filter by" : "Filtrelemek için etiketleri seçin", "Please select tags to filter by" : "Filtrelemek için etiketleri seçin", "No files found for the selected tags" : "Seçilen etiketler ile ilgili dosya bulunamadı", "<strong>System tags</strong> for a file have been modified" : "Bir dosya için <strong>sistem etiketleri</strong> değiştirildi", + "You assigned system tag %3$s" : "%3$s sistem etiketini atadınız", "%1$s assigned system tag %3$s" : "%1$s, %3$s sistem etiketini atadı", + "You unassigned system tag %3$s" : "%3$s sistem etiket atamasını kaldırdınız", "%1$s unassigned system tag %3$s" : "%1$s, %3$s sistem etiket atamasını kaldırdı", + "You created system tag %2$s" : "%2$s sistem etiketini oluşturdunuz", "%1$s created system tag %2$s" : "%1$s, %2$s sistem etiketini oluşturdu", + "You deleted system tag %2$s" : "%2$s sistem etiketini sildiniz", "%1$s deleted system tag %2$s" : "%1$s, %2$s sistem etiketini sildi", + "You updated system tag %3$s to %2$s" : "%3$s sistem etiketini %2$s olarak güncellediniz", "%1$s updated system tag %3$s to %2$s" : "%1$s, %3$s sistem etiketini %2$s olarak güncelledi", + "You assigned system tag %3$s to %2$s" : "%3$s sistem etiketini %2$s etiketine atadınız", "%1$s assigned system tag %3$s to %2$s" : "%1$s, %3$s sistem etiketini %2$s etiketine atadı", + "You unassigned system tag %3$s from %2$s" : "%3$s sistem etiketinin %2$s atamasını kaldırdınız", "%1$s unassigned system tag %3$s from %2$s" : "%1$s, %3$s sistem etiketinin %2$s atamasını kaldırdı", + "%s (restricted)" : "%s (kısıtlı)", "%s (invisible)" : "%s (gizli)", + "Collaborative tags" : "İşbirlikçi etiketler", + "Name" : "Ad", + "Delete" : "Sil", + "Public" : "Herkese açık", + "Restricted" : "Kısıtlı", + "Invisible" : "Görünmez", + "Reset" : "Sıfırla", "No files in here" : "Burada hiç dosya yok", "No entries found in this folder" : "Bu klasörde hiçbir girdi bulunamadı", - "Name" : "Ad", "Size" : "Boyut", "Modified" : "Değiştirilme" },"pluralForm" :"nplurals=2; plural=(n > 1);" diff --git a/apps/testing/appinfo/info.xml b/apps/testing/appinfo/info.xml index 1ab6e67805a..0acccf357fb 100644 --- a/apps/testing/appinfo/info.xml +++ b/apps/testing/appinfo/info.xml @@ -5,7 +5,7 @@ <description>This app is only for testing! It is dangerous to have it enabled in a live instance</description> <licence>AGPL</licence> <author>Joas Schilling</author> - <version>1.0.0</version> + <version>1.1.0</version> <dependencies> <owncloud min-version="9.2" max-version="9.2" /> </dependencies> diff --git a/apps/theming/appinfo/info.xml b/apps/theming/appinfo/info.xml index 2cc18672a3b..8ae1d3eb73a 100644 --- a/apps/theming/appinfo/info.xml +++ b/apps/theming/appinfo/info.xml @@ -5,7 +5,7 @@ <description>Adjust the Nextcloud theme</description> <licence>AGPL</licence> <author>Nextcloud</author> - <version>1.0.0</version> + <version>1.1.0</version> <namespace>Theming</namespace> <category>other</category> diff --git a/apps/theming/lib/Controller/ThemingController.php b/apps/theming/lib/Controller/ThemingController.php index 55391619f3c..8d9869b84a7 100644 --- a/apps/theming/lib/Controller/ThemingController.php +++ b/apps/theming/lib/Controller/ThemingController.php @@ -100,6 +100,50 @@ class ThemingController extends Controller { * @internal param string $color */ public function updateStylesheet($setting, $value) { + $value = trim($value); + switch ($setting) { + case 'name': + if (strlen($value) > 250) { + return new DataResponse([ + 'data' => [ + 'message' => $this->l->t('The given name is too long'), + ], + 'status' => 'error' + ]); + } + break; + case 'url': + if (strlen($value) > 500) { + return new DataResponse([ + 'data' => [ + 'message' => $this->l->t('The given web address is too long'), + ], + 'status' => 'error' + ]); + } + break; + case 'slogan': + if (strlen($value) > 500) { + return new DataResponse([ + 'data' => [ + 'message' => $this->l->t('The given slogan is too long'), + ], + 'status' => 'error' + ]); + } + break; + case 'color': + if (!preg_match('/^\#([0-9a-f]{3}|[0-9a-f]{6})$/i', $value)) { + return new DataResponse([ + 'data' => [ + 'message' => $this->l->t('The given color is invalid'), + ], + 'status' => 'error' + ]); + } + break; + } + $this->template->set($setting, $value); return new DataResponse( [ @@ -244,10 +288,10 @@ class ThemingController extends Controller { "}\n"; $responseCss .= ' #firstrunwizard .firstrunwizard-header { - background-color: ' . $color . '; + background-color: ' . $color . '; } #firstrunwizard p a { - color: ' . $color . '; + color: ' . $color . '; } '; @@ -256,7 +300,7 @@ class ThemingController extends Controller { if($logo !== '') { $responseCss .= sprintf( '#header .logo {' . - 'background-image: url(\'./logo?v='.$cacheBusterValue.'\')' . + 'background-image: url(\'./logo?v='.$cacheBusterValue.'\');' . 'background-size: contain;' . '}' . "\n" . '#header .logo-icon {' . diff --git a/apps/theming/templates/settings-admin.php b/apps/theming/templates/settings-admin.php index 811b2883a88..50c4a8fb5ec 100644 --- a/apps/theming/templates/settings-admin.php +++ b/apps/theming/templates/settings-admin.php @@ -36,25 +36,25 @@ style('theming', 'settings-admin'); <?php } else { ?> <p> <label><span><?php p($l->t('Name')) ?></span> - <input id="theming-name" type="text" placeholder="<?php p($l->t('Name')); ?>" value="<?php p($_['name']) ?>" /> + <input id="theming-name" type="text" placeholder="<?php p($l->t('Name')); ?>" value="<?php p($_['name']) ?>" maxlength="250" /> </label> <span data-setting="name" data-toggle="tooltip" data-original-title="<?php p($l->t('reset to default')); ?>" class="theme-undo icon icon-history"></span> </p> <p> <label><span><?php p($l->t('Web address')) ?></span> - <input id="theming-url" type="text" placeholder="<?php p($l->t('Web address https://…')); ?>" value="<?php p($_['url']) ?>" /> + <input id="theming-url" type="text" placeholder="<?php p($l->t('Web address https://…')); ?>" value="<?php p($_['url']) ?>" maxlength="500" /> </label> <span data-setting="url" data-toggle="tooltip" data-original-title="<?php p($l->t('reset to default')); ?>" class="theme-undo icon icon-history"></span> </p> <p> <label><span><?php p($l->t('Slogan')) ?></span> - <input id="theming-slogan" type="text" placeholder="<?php p($l->t('Slogan')); ?>" value="<?php p($_['slogan']) ?>" /> + <input id="theming-slogan" type="text" placeholder="<?php p($l->t('Slogan')); ?>" value="<?php p($_['slogan']) ?>" maxlength="500" /> </label> <span data-setting="slogan" data-toggle="tooltip" data-original-title="<?php p($l->t('reset to default')); ?>" class="theme-undo icon icon-history"></span> </p> <p> <label><span><?php p($l->t('Color')) ?></span> - <input id="theming-color" type="text" class="jscolor" value="<?php p($_['color']) ?>" /> + <input id="theming-color" type="text" class="jscolor" maxlength="6" value="<?php p($_['color']) ?>" /> </label> <span data-setting="color" data-toggle="tooltip" data-original-title="<?php p($l->t('reset to default')); ?>" class="theme-undo icon icon-history"></span> </p> diff --git a/apps/theming/tests/Controller/ThemingControllerTest.php b/apps/theming/tests/Controller/ThemingControllerTest.php index 933faf8a0a1..82eb8259af5 100644 --- a/apps/theming/tests/Controller/ThemingControllerTest.php +++ b/apps/theming/tests/Controller/ThemingControllerTest.php @@ -36,34 +36,34 @@ use OCP\IRequest; use Test\TestCase; class ThemingControllerTest extends TestCase { - /** @var IRequest */ + /** @var IRequest|\PHPUnit_Framework_MockObject_MockObject */ private $request; - /** @var IConfig */ + /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ private $config; - /** @var Template */ + /** @var Template|\PHPUnit_Framework_MockObject_MockObject */ private $template; /** @var Util */ private $util; /** @var \OCP\AppFramework\Utility\ITimeFactory */ private $timeFactory; - /** @var IL10N */ + /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ private $l10n; /** @var ThemingController */ private $themingController; - /** @var IRootFolder */ + /** @var IRootFolder|\PHPUnit_Framework_MockObject_MockObject */ private $rootFolder; public function setUp() { - $this->request = $this->getMock('\\OCP\\IRequest'); - $this->config = $this->getMock('\\OCP\\IConfig'); - $this->template = $this->getMockBuilder('\\OCA\\Theming\\Template') + $this->request = $this->getMockBuilder('OCP\IRequest')->getMock(); + $this->config = $this->getMockBuilder('OCP\IConfig')->getMock(); + $this->template = $this->getMockBuilder('OCA\Theming\Template') ->disableOriginalConstructor()->getMock(); $this->util = new Util(); $this->timeFactory = $this->getMockBuilder('OCP\AppFramework\Utility\ITimeFactory') ->disableOriginalConstructor() ->getMock(); - $this->l10n = $this->getMock('\\OCP\\IL10N'); - $this->rootFolder = $this->getMock('\\OCP\\Files\\IRootFolder'); + $this->l10n = $this->getMockBuilder('OCP\IL10N')->getMock(); + $this->rootFolder = $this->getMockBuilder('OCP\Files\IRootFolder')->getMock(); $this->timeFactory->expects($this->any()) ->method('getTime') @@ -83,27 +83,48 @@ class ThemingControllerTest extends TestCase { return parent::setUp(); } - public function testUpdateStylesheet() { + public function dataUpdateStylesheet() { + return [ + ['name', str_repeat('a', 250), 'success', 'Saved'], + ['name', str_repeat('a', 251), 'error', 'The given name is too long'], + ['url', str_repeat('a', 500), 'success', 'Saved'], + ['url', str_repeat('a', 501), 'error', 'The given web address is too long'], + ['slogan', str_repeat('a', 500), 'success', 'Saved'], + ['slogan', str_repeat('a', 501), 'error', 'The given slogan is too long'], + ['color', '#0082c9', 'success', 'Saved'], + ['color', '#0082C9', 'success', 'Saved'], + ['color', '0082C9', 'error', 'The given color is invalid'], + ['color', '#0082Z9', 'error', 'The given color is invalid'], + ['color', 'Nextcloud', 'error', 'The given color is invalid'], + ]; + } + + /** + * @dataProvider dataUpdateStylesheet + * + * @param string $setting + * @param string $value + * @param string $status + * @param string $message + */ + public function testUpdateStylesheet($setting, $value, $status, $message) { $this->template - ->expects($this->once()) + ->expects($status === 'success' ? $this->once() : $this->never()) ->method('set') - ->with('MySetting', 'MyValue'); + ->with($setting, $value); $this->l10n ->expects($this->once()) ->method('t') - ->with('Saved') - ->willReturn('Saved'); + ->with($message) + ->willReturn($message); - $expected = new DataResponse( - [ - 'data' => - [ - 'message' => 'Saved', - ], - 'status' => 'success' - ] - ); - $this->assertEquals($expected, $this->themingController->updateStylesheet('MySetting', 'MyValue')); + $expected = new DataResponse([ + 'data' => [ + 'message' => $message, + ], + 'status' => $status, + ]); + $this->assertEquals($expected, $this->themingController->updateStylesheet($setting, $value)); } public function testUpdateLogoNoData() { @@ -365,10 +386,10 @@ class ThemingControllerTest extends TestCase { $expectedData .= ' #firstrunwizard .firstrunwizard-header { - background-color: ' . $color . '; + background-color: ' . $color . '; } #firstrunwizard p a { - color: ' . $color . '; + color: ' . $color . '; } '; @@ -421,10 +442,10 @@ class ThemingControllerTest extends TestCase { $expectedData .= ' #firstrunwizard .firstrunwizard-header { - background-color: ' . $color . '; + background-color: ' . $color . '; } #firstrunwizard p a { - color: ' . $color . '; + color: ' . $color . '; } '; $expectedData .= '#header .header-appname, #expandDisplayName { color: #000000; }' . "\n"; @@ -463,7 +484,7 @@ class ThemingControllerTest extends TestCase { ->willReturn(''); $expectedData = '#header .logo {' . - 'background-image: url(\'./logo?v=0\')' . + 'background-image: url(\'./logo?v=0\');' . 'background-size: contain;' . '}' . "\n" . '#header .logo-icon {' . @@ -558,15 +579,15 @@ class ThemingControllerTest extends TestCase { "}\n"; $expectedData .= ' #firstrunwizard .firstrunwizard-header { - background-color: ' . $color . '; + background-color: ' . $color . '; } #firstrunwizard p a { - color: ' . $color . '; + color: ' . $color . '; } '; $expectedData .= sprintf( '#header .logo {' . - 'background-image: url(\'./logo?v=0\')' . + 'background-image: url(\'./logo?v=0\');' . 'background-size: contain;' . '}' . "\n" . '#header .logo-icon {' . @@ -631,15 +652,15 @@ class ThemingControllerTest extends TestCase { "}\n"; $expectedData .= ' #firstrunwizard .firstrunwizard-header { - background-color: ' . $color . '; + background-color: ' . $color . '; } #firstrunwizard p a { - color: ' . $color . '; + color: ' . $color . '; } '; $expectedData .= sprintf( '#header .logo {' . - 'background-image: url(\'./logo?v=0\')' . + 'background-image: url(\'./logo?v=0\');' . 'background-size: contain;' . '}' . "\n" . '#header .logo-icon {' . @@ -665,5 +686,4 @@ class ThemingControllerTest extends TestCase { $expected->addHeader('Expires', date(\DateTime::RFC2822, 123)); @$this->assertEquals($expected, $this->themingController->getStylesheet()); } - } diff --git a/apps/updatenotification/appinfo/info.xml b/apps/updatenotification/appinfo/info.xml index 08043827370..4070e90f221 100644 --- a/apps/updatenotification/appinfo/info.xml +++ b/apps/updatenotification/appinfo/info.xml @@ -5,7 +5,7 @@ <description>Displays update notifications for ownCloud and provides the SSO for the updater.</description> <licence>AGPL</licence> <author>Lukas Reschke</author> - <version>1.0.0</version> + <version>1.1.0</version> <namespace>UpdateNotification</namespace> <default_enable/> <dependencies> diff --git a/apps/updatenotification/l10n/de.js b/apps/updatenotification/l10n/de.js index a4d7b3062fd..331993c2cb4 100644 --- a/apps/updatenotification/l10n/de.js +++ b/apps/updatenotification/l10n/de.js @@ -10,7 +10,7 @@ OC.L10N.register( "A new version is available: %s" : "Eine neue Version ist verfügbar: %s", "Open updater" : "Updater aufrufen", "Your version is up to date." : "Deine Version ist aktuell.", - "Checked on %s" : "Geprüft auf %s", + "Checked on %s" : "Geprüft am %s", "Update channel:" : "Update-Kanal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Es kann immer auf eine neuere Version / experimentellen Kanal aktualisiert werden. Allerdings kann kein Downgrade auf einen stabileren Kanal durchgeführt werden.", "Notify members of the following groups about available updates:" : "Informiere die Mitglieder der folgenden Gruppen über verfügbare Updates:", diff --git a/apps/updatenotification/l10n/de.json b/apps/updatenotification/l10n/de.json index 73a8e89d1c1..18924aa14d6 100644 --- a/apps/updatenotification/l10n/de.json +++ b/apps/updatenotification/l10n/de.json @@ -8,7 +8,7 @@ "A new version is available: %s" : "Eine neue Version ist verfügbar: %s", "Open updater" : "Updater aufrufen", "Your version is up to date." : "Deine Version ist aktuell.", - "Checked on %s" : "Geprüft auf %s", + "Checked on %s" : "Geprüft am %s", "Update channel:" : "Update-Kanal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Es kann immer auf eine neuere Version / experimentellen Kanal aktualisiert werden. Allerdings kann kein Downgrade auf einen stabileren Kanal durchgeführt werden.", "Notify members of the following groups about available updates:" : "Informiere die Mitglieder der folgenden Gruppen über verfügbare Updates:", diff --git a/apps/updatenotification/l10n/de_DE.js b/apps/updatenotification/l10n/de_DE.js index 332f31cea33..0c20537b338 100644 --- a/apps/updatenotification/l10n/de_DE.js +++ b/apps/updatenotification/l10n/de_DE.js @@ -10,7 +10,7 @@ OC.L10N.register( "A new version is available: %s" : "Eine neue Version ist verfügbar: %s", "Open updater" : "Updater aufrufen", "Your version is up to date." : "Ihre Version ist aktuell.", - "Checked on %s" : "Überprüft auf %s", + "Checked on %s" : "Überprüft am %s", "Update channel:" : "Update-Kanal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Sie können immer auf eine neuere Version / experimentellen Kanal updaten, aber kein Downgrade auf einen stabileren Kanal durchführen.", "Notify members of the following groups about available updates:" : "Informieren Sie die Mitglieder der folgenden Gruppen über verfügbare Updates:", diff --git a/apps/updatenotification/l10n/de_DE.json b/apps/updatenotification/l10n/de_DE.json index 5dc8c420889..afce6689371 100644 --- a/apps/updatenotification/l10n/de_DE.json +++ b/apps/updatenotification/l10n/de_DE.json @@ -8,7 +8,7 @@ "A new version is available: %s" : "Eine neue Version ist verfügbar: %s", "Open updater" : "Updater aufrufen", "Your version is up to date." : "Ihre Version ist aktuell.", - "Checked on %s" : "Überprüft auf %s", + "Checked on %s" : "Überprüft am %s", "Update channel:" : "Update-Kanal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Sie können immer auf eine neuere Version / experimentellen Kanal updaten, aber kein Downgrade auf einen stabileren Kanal durchführen.", "Notify members of the following groups about available updates:" : "Informieren Sie die Mitglieder der folgenden Gruppen über verfügbare Updates:", diff --git a/apps/updatenotification/l10n/id.js b/apps/updatenotification/l10n/id.js index f328e4641e6..7d420dd49a6 100644 --- a/apps/updatenotification/l10n/id.js +++ b/apps/updatenotification/l10n/id.js @@ -1,10 +1,21 @@ OC.L10N.register( "updatenotification", { + "Update notifications" : "Perbarui pemberitahuan", "{version} is available. Get more information on how to update." : "{version} tersedia. Dapatkan informasi lebih lanjut cara memperbaruinya.", + "Updated channel" : "Kanal diperbarui", + "Nextcloud core" : "Nextcloud core", + "Update for %1$s to version %2$s is available." : "Pembaruan untuk %1$s ke versi %2$s tersedia.", "Updater" : "Pengupdate", "A new version is available: %s" : "Versi baru tersedia: %s", + "Open updater" : "Buka pembaruan", + "Your version is up to date." : "Versi Anda saat ini adalah yang terbaru.", + "Checked on %s" : "Dicek pada %s", "Update channel:" : "Saluran update:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Anda dapat memperbarui ke versi yang lebih baru / saluran percobaan. Namun Anda tidak dapat menurunkan ke saluran stabil." + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Anda dapat memperbarui ke versi yang lebih baru / saluran percobaan. Namun Anda tidak dapat menurunkan ke saluran stabil.", + "Notify members of the following groups about available updates:" : "Beritahu anggota grup tentang pembaruan yang tersedia:", + "Only notification for app updates are available." : "Hanya pemberitahuan untuk pembaruan aplikasi tersedia.", + "The selected update channel makes dedicated notifications for the server obsolete." : "Kanal pembaruan yang terpilih membuat pemberitahuan terdedikasi untuk server usang.", + "The selected update channel does not support updates of the server." : "Kanal pembaruan yang terpilih tidak mendukung pembaruan server." }, "nplurals=1; plural=0;"); diff --git a/apps/updatenotification/l10n/id.json b/apps/updatenotification/l10n/id.json index c3ba9eb7a3f..64fc3bedf99 100644 --- a/apps/updatenotification/l10n/id.json +++ b/apps/updatenotification/l10n/id.json @@ -1,8 +1,19 @@ { "translations": { + "Update notifications" : "Perbarui pemberitahuan", "{version} is available. Get more information on how to update." : "{version} tersedia. Dapatkan informasi lebih lanjut cara memperbaruinya.", + "Updated channel" : "Kanal diperbarui", + "Nextcloud core" : "Nextcloud core", + "Update for %1$s to version %2$s is available." : "Pembaruan untuk %1$s ke versi %2$s tersedia.", "Updater" : "Pengupdate", "A new version is available: %s" : "Versi baru tersedia: %s", + "Open updater" : "Buka pembaruan", + "Your version is up to date." : "Versi Anda saat ini adalah yang terbaru.", + "Checked on %s" : "Dicek pada %s", "Update channel:" : "Saluran update:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Anda dapat memperbarui ke versi yang lebih baru / saluran percobaan. Namun Anda tidak dapat menurunkan ke saluran stabil." + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Anda dapat memperbarui ke versi yang lebih baru / saluran percobaan. Namun Anda tidak dapat menurunkan ke saluran stabil.", + "Notify members of the following groups about available updates:" : "Beritahu anggota grup tentang pembaruan yang tersedia:", + "Only notification for app updates are available." : "Hanya pemberitahuan untuk pembaruan aplikasi tersedia.", + "The selected update channel makes dedicated notifications for the server obsolete." : "Kanal pembaruan yang terpilih membuat pemberitahuan terdedikasi untuk server usang.", + "The selected update channel does not support updates of the server." : "Kanal pembaruan yang terpilih tidak mendukung pembaruan server." },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/tr.js b/apps/updatenotification/l10n/tr.js index aa4ec123f96..eb0a2558cb1 100644 --- a/apps/updatenotification/l10n/tr.js +++ b/apps/updatenotification/l10n/tr.js @@ -1,14 +1,21 @@ OC.L10N.register( "updatenotification", { + "Update notifications" : "Bildirimleri güncelle", "{version} is available. Get more information on how to update." : "Sürüm {version} hazır. Nasıl güncelleyeceğinizle ilgili daha fazla bilgi alın.", "Updated channel" : "Kanal güncellendi", + "Nextcloud core" : "Nextcloud çekirdeği", + "Update for %1$s to version %2$s is available." : "%1$s sürümünden %2$s sürümüne güncelleme mevcut.", "Updater" : "Güncelleyici", "A new version is available: %s" : "Yeni bir sürüm mevcut: %s", "Open updater" : "Güncelleyiciyi aç", "Your version is up to date." : "Sürümünüz güncel.", "Checked on %s" : "Son denetlenme: %s", "Update channel:" : "Güncelleme kanalı:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Her zaman yeni / deneysel bir sürüme güncelleyebilirsiniz, ancak daha düşük bir kararlı sürüme düşüremezsiniz." + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Her zaman yeni / deneysel bir sürüme güncelleyebilirsiniz, ancak daha düşük bir kararlı sürüme düşüremezsiniz.", + "Notify members of the following groups about available updates:" : "Aşağıdaki grupların üyelerini mevcut güncellelemeler hakkında bilgilendir:", + "Only notification for app updates are available." : "Sadece uygulama bildirim güncellemeleri var.", + "The selected update channel makes dedicated notifications for the server obsolete." : "Seçilen güncelleme kanalı sunucusnun eski olduğu bildirimine sahip.", + "The selected update channel does not support updates of the server." : "Seçilen güncelleme nakalı sunucunun güncellemelerini desteklemiyor." }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/updatenotification/l10n/tr.json b/apps/updatenotification/l10n/tr.json index 6c1514e659a..566771e3795 100644 --- a/apps/updatenotification/l10n/tr.json +++ b/apps/updatenotification/l10n/tr.json @@ -1,12 +1,19 @@ { "translations": { + "Update notifications" : "Bildirimleri güncelle", "{version} is available. Get more information on how to update." : "Sürüm {version} hazır. Nasıl güncelleyeceğinizle ilgili daha fazla bilgi alın.", "Updated channel" : "Kanal güncellendi", + "Nextcloud core" : "Nextcloud çekirdeği", + "Update for %1$s to version %2$s is available." : "%1$s sürümünden %2$s sürümüne güncelleme mevcut.", "Updater" : "Güncelleyici", "A new version is available: %s" : "Yeni bir sürüm mevcut: %s", "Open updater" : "Güncelleyiciyi aç", "Your version is up to date." : "Sürümünüz güncel.", "Checked on %s" : "Son denetlenme: %s", "Update channel:" : "Güncelleme kanalı:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Her zaman yeni / deneysel bir sürüme güncelleyebilirsiniz, ancak daha düşük bir kararlı sürüme düşüremezsiniz." + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Her zaman yeni / deneysel bir sürüme güncelleyebilirsiniz, ancak daha düşük bir kararlı sürüme düşüremezsiniz.", + "Notify members of the following groups about available updates:" : "Aşağıdaki grupların üyelerini mevcut güncellelemeler hakkında bilgilendir:", + "Only notification for app updates are available." : "Sadece uygulama bildirim güncellemeleri var.", + "The selected update channel makes dedicated notifications for the server obsolete." : "Seçilen güncelleme kanalı sunucusnun eski olduğu bildirimine sahip.", + "The selected update channel does not support updates of the server." : "Seçilen güncelleme nakalı sunucunun güncellemelerini desteklemiyor." },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/ajax/testConfiguration.php b/apps/user_ldap/ajax/testConfiguration.php index 6581e8453bd..f73e11d3e21 100644 --- a/apps/user_ldap/ajax/testConfiguration.php +++ b/apps/user_ldap/ajax/testConfiguration.php @@ -39,6 +39,13 @@ $_POST['ldap_configuration_active'] = 1; try { if ($connection->setConfiguration($_POST)) { + /* + * Clossing the session since it won't be used from this point on. There might be a potential + * race condition if a second request is made: either this request or the other might not + * contact the LDAP backup server the first time when it should, but there shouldn't be any + * problem with that other than the extra connection. + */ + \OC::$server->getSession()->close(); //Configuration is okay if ($connection->bind()) { /* diff --git a/apps/user_ldap/appinfo/info.xml b/apps/user_ldap/appinfo/info.xml index b3141ec0c76..b0984dcf624 100644 --- a/apps/user_ldap/appinfo/info.xml +++ b/apps/user_ldap/appinfo/info.xml @@ -9,7 +9,7 @@ A user logs into ownCloud with their LDAP or AD credentials, and is granted acce </description> <licence>AGPL</licence> <author>Dominik Schmidt and Arthur Schiwon</author> - <version>1.0.0</version> + <version>1.1.0</version> <types> <authentication/> </types> diff --git a/apps/user_ldap/l10n/el.js b/apps/user_ldap/l10n/el.js index a1076031199..3157958092e 100644 --- a/apps/user_ldap/l10n/el.js +++ b/apps/user_ldap/l10n/el.js @@ -13,6 +13,7 @@ OC.L10N.register( " Could not set configuration %s" : "Αδυναμία ρύθμισης %s", "Action does not exist" : "Η ενέργεια δεν υπάρχει", "The Base DN appears to be wrong" : "Το Base DN φαίνεται να είναι εσφαλμένο", + "Testing configuration…" : "Γίνεται δοκιμή ρυθμίσεων...", "Configuration incorrect" : "Η διαμόρφωση είναι λανθασμένη", "Configuration incomplete" : "Η διαμόρφωση είναι ελλιπής", "Configuration OK" : "Η διαμόρφωση είναι εντάξει", diff --git a/apps/user_ldap/l10n/el.json b/apps/user_ldap/l10n/el.json index 07cb93ce931..81f8cb094b5 100644 --- a/apps/user_ldap/l10n/el.json +++ b/apps/user_ldap/l10n/el.json @@ -11,6 +11,7 @@ " Could not set configuration %s" : "Αδυναμία ρύθμισης %s", "Action does not exist" : "Η ενέργεια δεν υπάρχει", "The Base DN appears to be wrong" : "Το Base DN φαίνεται να είναι εσφαλμένο", + "Testing configuration…" : "Γίνεται δοκιμή ρυθμίσεων...", "Configuration incorrect" : "Η διαμόρφωση είναι λανθασμένη", "Configuration incomplete" : "Η διαμόρφωση είναι ελλιπής", "Configuration OK" : "Η διαμόρφωση είναι εντάξει", diff --git a/apps/user_ldap/l10n/id.js b/apps/user_ldap/l10n/id.js index 10192553f2f..41bddd33847 100644 --- a/apps/user_ldap/l10n/id.js +++ b/apps/user_ldap/l10n/id.js @@ -13,6 +13,7 @@ OC.L10N.register( " Could not set configuration %s" : "Tidak dapat menyetel konfigurasi %s", "Action does not exist" : "Tidak ada tindakan", "The Base DN appears to be wrong" : "Base DN tampaknya salah", + "Testing configuration…" : "Menguji konfigurasi...", "Configuration incorrect" : "Konfigurasi salah", "Configuration incomplete" : "Konfigurasi tidak lengkap", "Configuration OK" : "Konfigurasi Oke", @@ -24,6 +25,7 @@ OC.L10N.register( "Could not detect Base DN, please enter it manually." : "Tidak dapat mendeteksi Base DN, mohon masukkan secara manual.", "{nthServer}. Server" : "{nthServer}. Server", "No object found in the given Base DN. Please revise." : "Tidak ada obyek ditemukan di Base DN yang diberikan. Mohon diperiksa kembali.", + "More than 1,000 directory entries available." : "Lebih dari 1000 entri direktori tersedia.", " entries available within the provided Base DN" : "entri tersedia didalam Base DN yang diberikan", "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Terjadi kesalahan. Silakan periksa Base DN, serta pengaturan sambungan dan kredensial.", "Do you really want to delete the current Server Configuration?" : "Apakan Anda ingin menghapus Konfigurasi Server saat ini?", @@ -94,6 +96,7 @@ OC.L10N.register( "Test Base DN" : "Uji Base DN", "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Mencegah permintaan LDAP otomatis. Berguna untuk setelan yang lebih besar, tapi memerlukan beberapa pengetahuan LDAP.", "Manually enter LDAP filters (recommended for large directories)" : "Masukkan penyaring LDAP secara manual (direkomendasikan untuk direktori yang besar)", + "%s access is limited to users meeting these criteria:" : "Akses %s terbatas bagi pengguna yang memenuhi kriteria:", "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Kelas obyek yang umum untuk pengguna adalah organizationalPerson, person, user, dan inetOrgPerson. Jika Anda tidak yakin kelas obyek mana yang akan dipilih, silakan konsultasi dengan admin direktori Anda.", "The filter specifies which LDAP users shall have access to the %s instance." : "Penyaring menentukan pengguna LDAP mana yang memiliki akses ke %s.", "Verify settings and count users" : "Verifikasi setelan dan jumlah pengguna", @@ -120,6 +123,8 @@ OC.L10N.register( "Directory Settings" : "Pengaturan Direktori", "User Display Name Field" : "Bidang Tampilan Nama Pengguna", "The LDAP attribute to use to generate the user's display name." : "Atribut LDAP digunakan untuk menghasilkan nama tampilan pengguna.", + "2nd User Display Name Field" : "Bidang Tampilan Nama Pengguna Kedua", + "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opsional. Atribut LDAP bisa ditambahkan ke nama tampilan dalam tanda kurung. Hasil dalam cth. »John Doe (john.doe@example.org)«.", "Base User Tree" : "Base User Tree", "One User Base DN per line" : "Satu Pengguna Base DN per baris", "User Search Attributes" : "Atribut Pencarian Pengguna", @@ -130,6 +135,8 @@ OC.L10N.register( "One Group Base DN per line" : "Satu Grup Base DN per baris", "Group Search Attributes" : "Atribut Pencarian Grup", "Group-Member association" : "Asosiasi Anggota-Grup", + "Dynamic Group Member URL" : "URL Member Grup Dinamis", + "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Atribut LDAP dalam objek grup mengandung URL pencarian LDAP yang menentukan apa objek yang dimiliki grup. (Pengaturan kosong menonaktifkan fungsi keanggoaan grup dinamis.)", "Nested Groups" : "Grup Bersarang", "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Ketika dihidupkan, grup yang berisi grup akan didukung. (Hanya bekerja jika atribut anggota grup berisi DN.)", "Paging chunksize" : "Paging chunksize", @@ -142,6 +149,7 @@ OC.L10N.register( "User Home Folder Naming Rule" : "Aturan Penamaan Folder Home Pengguna", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Biarkan nama pengguna kosong (default). Atau tetapkan atribut LDAP/AD.", "Internal Username" : "Nama Pengguna Internal", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Secara bawaan nama pengguna internal akan dibuat dari atribut UUID. Hal ini memastikan bahwa nama yang unik dan karakter tidak perlu dikonversi. Nama pengguna internal yang memiliki batasan bahwa hanya karakter ini diperbolehkan: [ a-zA-Z0-9_.@- ]. Karakter lain yang diganti dengan korespondensi ASCII mereka atau hanya dihilangkan. Pada tabrakan nomor akan ditambahkan / meningkat. Nama pengguna internal digunakan untuk mengidentifikasi pengguna internal. Itu juga merupakan nama bawaan untuk folder pengguna rumah. Ini juga merupakan bagian dari URL remote, misalnya instansi untuk semua layanan *DAV. Dengan pengaturan ini, perilaku bawaan dapat diganti. Biarkan kosong untuk perilaku bawaan. Perubahan hanya akan berpengaruh pada baru dipetakan (ditambahkan) pengguna LDAP.", "Internal Username Attribute:" : "Atribut Nama Pengguna Internal:", "Override UUID detection" : "Timpa deteksi UUID", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Secara default, atribut UUID akan secara otomatis terdeteksi. Atribut UUID ini digunakan untuk mengidentifikasi pengguna dan grup LDAP yang diragukan. Nama pengguna internal juga akan dibuat berdasarkan UUID jika belum ditetapkan di atas. Anda dapat mengganti pengaturan dan meluluskan atribut pilihan Anda. Anda harus memastikan bahwa atribut pilihan Anda dapat diambil untuk pengguna dan grup, serta haruslah unik. Biarkan kosong untuk perilaku default. Perubahan akan berpengaruh hanya pada pengguna dan grup LDAP yang baru dipetakan (ditambahkan).", diff --git a/apps/user_ldap/l10n/id.json b/apps/user_ldap/l10n/id.json index 641f53d7b14..d18d62a716d 100644 --- a/apps/user_ldap/l10n/id.json +++ b/apps/user_ldap/l10n/id.json @@ -11,6 +11,7 @@ " Could not set configuration %s" : "Tidak dapat menyetel konfigurasi %s", "Action does not exist" : "Tidak ada tindakan", "The Base DN appears to be wrong" : "Base DN tampaknya salah", + "Testing configuration…" : "Menguji konfigurasi...", "Configuration incorrect" : "Konfigurasi salah", "Configuration incomplete" : "Konfigurasi tidak lengkap", "Configuration OK" : "Konfigurasi Oke", @@ -22,6 +23,7 @@ "Could not detect Base DN, please enter it manually." : "Tidak dapat mendeteksi Base DN, mohon masukkan secara manual.", "{nthServer}. Server" : "{nthServer}. Server", "No object found in the given Base DN. Please revise." : "Tidak ada obyek ditemukan di Base DN yang diberikan. Mohon diperiksa kembali.", + "More than 1,000 directory entries available." : "Lebih dari 1000 entri direktori tersedia.", " entries available within the provided Base DN" : "entri tersedia didalam Base DN yang diberikan", "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Terjadi kesalahan. Silakan periksa Base DN, serta pengaturan sambungan dan kredensial.", "Do you really want to delete the current Server Configuration?" : "Apakan Anda ingin menghapus Konfigurasi Server saat ini?", @@ -92,6 +94,7 @@ "Test Base DN" : "Uji Base DN", "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Mencegah permintaan LDAP otomatis. Berguna untuk setelan yang lebih besar, tapi memerlukan beberapa pengetahuan LDAP.", "Manually enter LDAP filters (recommended for large directories)" : "Masukkan penyaring LDAP secara manual (direkomendasikan untuk direktori yang besar)", + "%s access is limited to users meeting these criteria:" : "Akses %s terbatas bagi pengguna yang memenuhi kriteria:", "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Kelas obyek yang umum untuk pengguna adalah organizationalPerson, person, user, dan inetOrgPerson. Jika Anda tidak yakin kelas obyek mana yang akan dipilih, silakan konsultasi dengan admin direktori Anda.", "The filter specifies which LDAP users shall have access to the %s instance." : "Penyaring menentukan pengguna LDAP mana yang memiliki akses ke %s.", "Verify settings and count users" : "Verifikasi setelan dan jumlah pengguna", @@ -118,6 +121,8 @@ "Directory Settings" : "Pengaturan Direktori", "User Display Name Field" : "Bidang Tampilan Nama Pengguna", "The LDAP attribute to use to generate the user's display name." : "Atribut LDAP digunakan untuk menghasilkan nama tampilan pengguna.", + "2nd User Display Name Field" : "Bidang Tampilan Nama Pengguna Kedua", + "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opsional. Atribut LDAP bisa ditambahkan ke nama tampilan dalam tanda kurung. Hasil dalam cth. »John Doe (john.doe@example.org)«.", "Base User Tree" : "Base User Tree", "One User Base DN per line" : "Satu Pengguna Base DN per baris", "User Search Attributes" : "Atribut Pencarian Pengguna", @@ -128,6 +133,8 @@ "One Group Base DN per line" : "Satu Grup Base DN per baris", "Group Search Attributes" : "Atribut Pencarian Grup", "Group-Member association" : "Asosiasi Anggota-Grup", + "Dynamic Group Member URL" : "URL Member Grup Dinamis", + "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Atribut LDAP dalam objek grup mengandung URL pencarian LDAP yang menentukan apa objek yang dimiliki grup. (Pengaturan kosong menonaktifkan fungsi keanggoaan grup dinamis.)", "Nested Groups" : "Grup Bersarang", "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Ketika dihidupkan, grup yang berisi grup akan didukung. (Hanya bekerja jika atribut anggota grup berisi DN.)", "Paging chunksize" : "Paging chunksize", @@ -140,6 +147,7 @@ "User Home Folder Naming Rule" : "Aturan Penamaan Folder Home Pengguna", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Biarkan nama pengguna kosong (default). Atau tetapkan atribut LDAP/AD.", "Internal Username" : "Nama Pengguna Internal", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Secara bawaan nama pengguna internal akan dibuat dari atribut UUID. Hal ini memastikan bahwa nama yang unik dan karakter tidak perlu dikonversi. Nama pengguna internal yang memiliki batasan bahwa hanya karakter ini diperbolehkan: [ a-zA-Z0-9_.@- ]. Karakter lain yang diganti dengan korespondensi ASCII mereka atau hanya dihilangkan. Pada tabrakan nomor akan ditambahkan / meningkat. Nama pengguna internal digunakan untuk mengidentifikasi pengguna internal. Itu juga merupakan nama bawaan untuk folder pengguna rumah. Ini juga merupakan bagian dari URL remote, misalnya instansi untuk semua layanan *DAV. Dengan pengaturan ini, perilaku bawaan dapat diganti. Biarkan kosong untuk perilaku bawaan. Perubahan hanya akan berpengaruh pada baru dipetakan (ditambahkan) pengguna LDAP.", "Internal Username Attribute:" : "Atribut Nama Pengguna Internal:", "Override UUID detection" : "Timpa deteksi UUID", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Secara default, atribut UUID akan secara otomatis terdeteksi. Atribut UUID ini digunakan untuk mengidentifikasi pengguna dan grup LDAP yang diragukan. Nama pengguna internal juga akan dibuat berdasarkan UUID jika belum ditetapkan di atas. Anda dapat mengganti pengaturan dan meluluskan atribut pilihan Anda. Anda harus memastikan bahwa atribut pilihan Anda dapat diambil untuk pengguna dan grup, serta haruslah unik. Biarkan kosong untuk perilaku default. Perubahan akan berpengaruh hanya pada pengguna dan grup LDAP yang baru dipetakan (ditambahkan).", diff --git a/apps/user_ldap/l10n/ru.js b/apps/user_ldap/l10n/ru.js index cb34a610621..20430afdda1 100644 --- a/apps/user_ldap/l10n/ru.js +++ b/apps/user_ldap/l10n/ru.js @@ -149,6 +149,7 @@ OC.L10N.register( "User Home Folder Naming Rule" : "Правило именования домашнего каталога пользователя", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Оставьте пустым для использования имени пользователя (по умолчанию). Иначе укажите атрибут LDAP/AD.", "Internal Username" : "Внутреннее имя пользователя", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "По умолчанию внутреннее имя пользователя будет создано из атрибута UUID. Это даёт гарантию того, что имя пользователя уникально и символы не нужно конвертировать. Внутреннее имя пользователя имеет ограничение на то, что только эти символы допустимы: [ a-zA-Z0-9_.@- ]. Другие символы замещаются их корреспондирующими символами ASCII или же просто отбрасываются. При коллизиях добавляется или увеличивается номер. Внутреннее имя пользователя используется для идентификации пользователя внутри системы. Также это по умолчанию имя для домашней папки пользователя. Также это часть адресов URL, например для всех служб *DAV. С помощью этой установки, поведение по умолчанию может быть изменено. Оставьте его пустым для поведения по умолчанию. Изменения будут иметь эффект только для вновь спроецированных (добавленных) пользователей LDAP. ", "Internal Username Attribute:" : "Атрибут для внутреннего имени:", "Override UUID detection" : "Переопределить нахождение UUID", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "По умолчанию ownCloud определяет атрибут UUID автоматически. Этот атрибут используется для того, чтобы достоверно идентифицировать пользователей и группы LDAP. Также на основании атрибута UUID создается внутреннее имя пользователя, если выше не указано иначе. Вы можете переопределить эту настройку и указать свой атрибут по выбору. Вы должны удостовериться, что выбранный вами атрибут может быть выбран для пользователей и групп, а также то, что он уникальный. Оставьте поле пустым для поведения по умолчанию. Изменения вступят в силу только для новых подключенных (добавленных) пользователей и групп LDAP.", diff --git a/apps/user_ldap/l10n/ru.json b/apps/user_ldap/l10n/ru.json index 9e4c37624f1..24d26b613c9 100644 --- a/apps/user_ldap/l10n/ru.json +++ b/apps/user_ldap/l10n/ru.json @@ -147,6 +147,7 @@ "User Home Folder Naming Rule" : "Правило именования домашнего каталога пользователя", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Оставьте пустым для использования имени пользователя (по умолчанию). Иначе укажите атрибут LDAP/AD.", "Internal Username" : "Внутреннее имя пользователя", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "По умолчанию внутреннее имя пользователя будет создано из атрибута UUID. Это даёт гарантию того, что имя пользователя уникально и символы не нужно конвертировать. Внутреннее имя пользователя имеет ограничение на то, что только эти символы допустимы: [ a-zA-Z0-9_.@- ]. Другие символы замещаются их корреспондирующими символами ASCII или же просто отбрасываются. При коллизиях добавляется или увеличивается номер. Внутреннее имя пользователя используется для идентификации пользователя внутри системы. Также это по умолчанию имя для домашней папки пользователя. Также это часть адресов URL, например для всех служб *DAV. С помощью этой установки, поведение по умолчанию может быть изменено. Оставьте его пустым для поведения по умолчанию. Изменения будут иметь эффект только для вновь спроецированных (добавленных) пользователей LDAP. ", "Internal Username Attribute:" : "Атрибут для внутреннего имени:", "Override UUID detection" : "Переопределить нахождение UUID", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "По умолчанию ownCloud определяет атрибут UUID автоматически. Этот атрибут используется для того, чтобы достоверно идентифицировать пользователей и группы LDAP. Также на основании атрибута UUID создается внутреннее имя пользователя, если выше не указано иначе. Вы можете переопределить эту настройку и указать свой атрибут по выбору. Вы должны удостовериться, что выбранный вами атрибут может быть выбран для пользователей и групп, а также то, что он уникальный. Оставьте поле пустым для поведения по умолчанию. Изменения вступят в силу только для новых подключенных (добавленных) пользователей и групп LDAP.", diff --git a/apps/user_ldap/l10n/tr.js b/apps/user_ldap/l10n/tr.js index dc7a7c66cab..9b319a1c6c8 100644 --- a/apps/user_ldap/l10n/tr.js +++ b/apps/user_ldap/l10n/tr.js @@ -96,6 +96,7 @@ OC.L10N.register( "Test Base DN" : "Base DN'i Sına", "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Otomatik LDAP isteklerinden kaçın. Büyük kurulumlar için daha iyi ancak LDAP bilgisi gerektirir.", "Manually enter LDAP filters (recommended for large directories)" : "LDAP filtrelerini el ile girin (büyük dizinler için önerilir)", + "%s access is limited to users meeting these criteria:" : "%s erişimi aşağıdaki kritere uyan kullanıcılara kısıtlanmıştır:", "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Kullanıcılar için en çok ortak nesne sınıfları organizationalPerson, person, user ve inetOrgPerson sınıflarıdır. Hangi nesne sınıfını seçeceğinizden emin değilseniz lütfen dizin yöneticinize danışın.", "The filter specifies which LDAP users shall have access to the %s instance." : "Filtre, %s örneğine erişmesi gereken LDAP kullanıcılarını belirtir.", "Verify settings and count users" : "Ayarları doğrula ve kullanıcıları say", @@ -148,6 +149,7 @@ OC.L10N.register( "User Home Folder Naming Rule" : "Kullanıcı Ana Dizini İsimlendirme Kuralı", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Kullanıcı adı bölümünü boş bırakın (öntanımlı). Aksi halde bir LDAP/AD özniteliği belirtin.", "Internal Username" : "Dahili Kullanıcı Adı", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Dahili kullanıcı adı varsayılan olarak UUID özelliklerinden oluşturulur. Böylece kullanıcı adının benzersiz olması ve dönüştürülecek karakter içermediğinden emin olunur. Dahili kullanıcı adının kısıtlaması sadece şu karakterleri içerebilmesidir: [ a-zA-Z0-9_.@- ]. Diğer karakterler ASCII karşılıklarına dönüştürülür veya basitçe yok sayılır. Çakışmalarda bir sayı eklenir. Dahili kullanıcı adı bir kullanıcıyı dahili olarak belirlemeye yarar. Aynı zamanda kullanıcı ev dizininin varsayılan adı olarak da kullanılır. İnternet adreslerinin, örneğin *DAV servislerinin bir parçasıdır. Bu ayarla varsayılan davranışı değiştirebilirsiniz. Varsayılanı kullanmak için boş bırakın. Değişiklik sadece yeni oluşturulacak LDAP kullanıcılarını etkileyecektir.", "Internal Username Attribute:" : "Dahili Kullanıcı Adı Özniteliği:", "Override UUID detection" : "UUID tespitinin üzerine yaz", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Öntanımlı olarak, UUID niteliği otomatik olarak tespit edilmez. UUID niteliği LDAP kullanıcılarını ve gruplarını şüphesiz biçimde tanımlamak için kullanılır. Ayrıca yukarıda belirtilmemişse, bu UUID'ye bağlı olarak dahili bir kullanıcı adı oluşturulacaktır. Bu ayarın üzerine yazabilir ve istediğiniz bir nitelik belirtebilirsiniz. Ancak istediğiniz niteliğin benzersiz olduğundan ve hem kullanıcı hem de gruplar tarafından getirilebileceğinden emin olmalısınız. Öntanımlı davranış için boş bırakın. Değişiklikler sadece yeni eşleştirilen (eklenen) LDAP kullanıcı ve gruplarında etkili olacaktır.", diff --git a/apps/user_ldap/l10n/tr.json b/apps/user_ldap/l10n/tr.json index 20e4c306755..119b09968f8 100644 --- a/apps/user_ldap/l10n/tr.json +++ b/apps/user_ldap/l10n/tr.json @@ -94,6 +94,7 @@ "Test Base DN" : "Base DN'i Sına", "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Otomatik LDAP isteklerinden kaçın. Büyük kurulumlar için daha iyi ancak LDAP bilgisi gerektirir.", "Manually enter LDAP filters (recommended for large directories)" : "LDAP filtrelerini el ile girin (büyük dizinler için önerilir)", + "%s access is limited to users meeting these criteria:" : "%s erişimi aşağıdaki kritere uyan kullanıcılara kısıtlanmıştır:", "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Kullanıcılar için en çok ortak nesne sınıfları organizationalPerson, person, user ve inetOrgPerson sınıflarıdır. Hangi nesne sınıfını seçeceğinizden emin değilseniz lütfen dizin yöneticinize danışın.", "The filter specifies which LDAP users shall have access to the %s instance." : "Filtre, %s örneğine erişmesi gereken LDAP kullanıcılarını belirtir.", "Verify settings and count users" : "Ayarları doğrula ve kullanıcıları say", @@ -146,6 +147,7 @@ "User Home Folder Naming Rule" : "Kullanıcı Ana Dizini İsimlendirme Kuralı", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Kullanıcı adı bölümünü boş bırakın (öntanımlı). Aksi halde bir LDAP/AD özniteliği belirtin.", "Internal Username" : "Dahili Kullanıcı Adı", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Dahili kullanıcı adı varsayılan olarak UUID özelliklerinden oluşturulur. Böylece kullanıcı adının benzersiz olması ve dönüştürülecek karakter içermediğinden emin olunur. Dahili kullanıcı adının kısıtlaması sadece şu karakterleri içerebilmesidir: [ a-zA-Z0-9_.@- ]. Diğer karakterler ASCII karşılıklarına dönüştürülür veya basitçe yok sayılır. Çakışmalarda bir sayı eklenir. Dahili kullanıcı adı bir kullanıcıyı dahili olarak belirlemeye yarar. Aynı zamanda kullanıcı ev dizininin varsayılan adı olarak da kullanılır. İnternet adreslerinin, örneğin *DAV servislerinin bir parçasıdır. Bu ayarla varsayılan davranışı değiştirebilirsiniz. Varsayılanı kullanmak için boş bırakın. Değişiklik sadece yeni oluşturulacak LDAP kullanıcılarını etkileyecektir.", "Internal Username Attribute:" : "Dahili Kullanıcı Adı Özniteliği:", "Override UUID detection" : "UUID tespitinin üzerine yaz", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Öntanımlı olarak, UUID niteliği otomatik olarak tespit edilmez. UUID niteliği LDAP kullanıcılarını ve gruplarını şüphesiz biçimde tanımlamak için kullanılır. Ayrıca yukarıda belirtilmemişse, bu UUID'ye bağlı olarak dahili bir kullanıcı adı oluşturulacaktır. Bu ayarın üzerine yazabilir ve istediğiniz bir nitelik belirtebilirsiniz. Ancak istediğiniz niteliğin benzersiz olduğundan ve hem kullanıcı hem de gruplar tarafından getirilebileceğinden emin olmalısınız. Öntanımlı davranış için boş bırakın. Değişiklikler sadece yeni eşleştirilen (eklenen) LDAP kullanıcı ve gruplarında etkili olacaktır.", diff --git a/apps/workflowengine/appinfo/info.xml b/apps/workflowengine/appinfo/info.xml index 066589c6618..b53f8aedb16 100644 --- a/apps/workflowengine/appinfo/info.xml +++ b/apps/workflowengine/appinfo/info.xml @@ -1,11 +1,11 @@ <?xml version="1.0"?> <info> <id>workflowengine</id> - <name>Files Workflow Engine</name> + <name>Files workflow engine</name> <description></description> <licence>AGPL</licence> <author>Morris Jobke</author> - <version>1.0.0</version> + <version>1.1.0</version> <namespace>WorkflowEngine</namespace> <category>other</category> diff --git a/apps/workflowengine/appinfo/routes.php b/apps/workflowengine/appinfo/routes.php index b8c9ae1c236..5ae74bcafc3 100644 --- a/apps/workflowengine/appinfo/routes.php +++ b/apps/workflowengine/appinfo/routes.php @@ -25,5 +25,6 @@ return [ ['name' => 'flowOperations#addOperation', 'url' => '/operations', 'verb' => 'POST'], ['name' => 'flowOperations#updateOperation', 'url' => '/operations/{id}', 'verb' => 'PUT'], ['name' => 'flowOperations#deleteOperation', 'url' => '/operations/{id}', 'verb' => 'DELETE'], + ['name' => 'requestTime#getTimezones', 'url' => '/timezones', 'verb' => 'GET'], ] ]; diff --git a/apps/workflowengine/css/admin.css b/apps/workflowengine/css/admin.css index 1d94fced003..70185615ad6 100644 --- a/apps/workflowengine/css/admin.css +++ b/apps/workflowengine/css/admin.css @@ -46,3 +46,7 @@ margin-right: 5px; } +.workflowengine .invalid-input { + border-color: #aa0000; +} + diff --git a/apps/workflowengine/js/admin.js b/apps/workflowengine/js/admin.js index 48d1592b457..2c6fa54d87d 100644 --- a/apps/workflowengine/js/admin.js +++ b/apps/workflowengine/js/admin.js @@ -75,12 +75,6 @@ }); /** - * @class OCA.WorkflowEngine.AvailableCheck - */ - OCA.WorkflowEngine.AvailableCheck = - OC.Backbone.Model.extend({}); - - /** * .d8888b. 888 888 888 d8b * d88P Y88b 888 888 888 Y8P * 888 888 888 888 888 @@ -143,6 +137,7 @@ 'change .check-operator': 'checkChanged', 'change .check-value': 'checkChanged', 'change .operation-name': 'operationChanged', + 'change .operation-operation': 'operationChanged', 'click .button-reset': 'reset', 'click .button-save': 'save', 'click .button-add': 'add', @@ -248,7 +243,7 @@ // model change will trigger render this.model.set({'checks': checks}); }, - deleteCheck: function() { + deleteCheck: function(event) { console.log(arguments); var id = $(event.target.parentElement).data('id'), checks = JSON.parse(JSON.stringify(this.model.get('checks'))); @@ -275,7 +270,7 @@ return; } - if (key !== 'name') { + if (key !== 'name' && key !== 'operation') { console.warn('key "' + key + '" is no valid attribute'); return; } @@ -302,7 +297,7 @@ _.each(OCA.WorkflowEngine.availablePlugins, function(plugin) { if (_.isFunction(plugin.render)) { - plugin.render(valueElement, check['class'], check['value']); + plugin.render(valueElement, check); } }); }, this); @@ -315,6 +310,7 @@ this.message = ''; } + return this.$el; } }); @@ -331,16 +327,15 @@ events: { 'click .button-add-operation': 'add' }, - initialize: function() { - this._initialize('OCA\\WorkflowEngine\\Operation'); - }, - _initialize: function(classname) { - OCA.WorkflowEngine.availablePlugins = OC.Plugins.getPlugins('OCA.WorkflowEngine.CheckPlugins'); - _.each(OCA.WorkflowEngine.availablePlugins, function(plugin) { - if (_.isFunction(plugin.getCheck)) { - OCA.WorkflowEngine.availableChecks.push(plugin.getCheck()); - } - }); + initialize: function(classname) { + if (!OCA.WorkflowEngine.availablePlugins.length) { + OCA.WorkflowEngine.availablePlugins = OC.Plugins.getPlugins('OCA.WorkflowEngine.CheckPlugins'); + _.each(OCA.WorkflowEngine.availablePlugins, function(plugin) { + if (_.isFunction(plugin.getCheck)) { + OCA.WorkflowEngine.availableChecks.push(plugin.getCheck(classname)); + } + }); + } this.collection.fetch({data: { 'class': classname @@ -351,12 +346,8 @@ var operation = this.collection.create(); this.renderOperation(operation); }, - renderOperation: function(operation){ - console.log(operation); - var subView = new OCA.WorkflowEngine.OperationView({ - model: operation - }), - operationsElement = this.$el.find('.operations'); + renderOperation: function(subView){ + var operationsElement = this.$el.find('.operations'); operationsElement.append(subView.$el); subView.render(); }, diff --git a/apps/workflowengine/js/filemimetypeplugin.js b/apps/workflowengine/js/filemimetypeplugin.js new file mode 100644 index 00000000000..33cbbd7fd7e --- /dev/null +++ b/apps/workflowengine/js/filemimetypeplugin.js @@ -0,0 +1,72 @@ +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +(function() { + + OCA.WorkflowEngine = OCA.WorkflowEngine || {}; + OCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {}; + + OCA.WorkflowEngine.Plugins.FileMimeTypePlugin = { + getCheck: function() { + return { + 'class': 'OCA\\WorkflowEngine\\Check\\FileMimeType', + 'name': t('workflowengine', 'File mime type (upload)'), + 'operators': [ + {'operator': 'is', 'name': t('workflowengine', 'is')}, + {'operator': '!is', 'name': t('workflowengine', 'is not')}, + {'operator': 'matches', 'name': t('workflowengine', 'matches')}, + {'operator': '!matches', 'name': t('workflowengine', 'does not match')} + ] + }; + }, + render: function(element, check) { + if (check['class'] !== 'OCA\\WorkflowEngine\\Check\\FileMimeType') { + return; + } + + var placeholder = t('workflowengine', 'text/plain'); + if (check['operator'] === 'matches' || check['operator'] === '!matches') { + placeholder = t('workflowengine', '/^text\\/(plain|html)$/i'); + + if (this._validateRegex(check['value'])) { + $(element).removeClass('invalid-input'); + } else { + $(element).addClass('invalid-input'); + } + } + + $(element).css('width', '250px') + .attr('placeholder', placeholder) + .attr('title', t('workflowengine', 'Example: {placeholder}', {placeholder: placeholder})) + .addClass('has-tooltip') + .tooltip({ + placement: 'bottom' + }); + }, + + _validateRegex: function(string) { + var regexRegex = /^\/(.*)\/([gui]{0,3})$/, + result = regexRegex.exec(string); + return result !== null; + } + }; +})(); + +OC.Plugins.register('OCA.WorkflowEngine.CheckPlugins', OCA.WorkflowEngine.Plugins.FileMimeTypePlugin); diff --git a/apps/workflowengine/js/filesizeplugin.js b/apps/workflowengine/js/filesizeplugin.js new file mode 100644 index 00000000000..0efa9d00edf --- /dev/null +++ b/apps/workflowengine/js/filesizeplugin.js @@ -0,0 +1,56 @@ +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +(function() { + + OCA.WorkflowEngine = OCA.WorkflowEngine || {}; + OCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {}; + + OCA.WorkflowEngine.Plugins.FileSizePlugin = { + getCheck: function() { + return { + 'class': 'OCA\\WorkflowEngine\\Check\\FileSize', + 'name': t('workflowengine', 'File size (upload)'), + 'operators': [ + {'operator': 'less', 'name': t('workflowengine', 'less')}, + {'operator': '!greater', 'name': t('workflowengine', 'less or equals')}, + {'operator': '!less', 'name': t('workflowengine', 'greater or equals')}, + {'operator': 'greater', 'name': t('workflowengine', 'greater')} + ] + }; + }, + render: function(element, check) { + if (check['class'] !== 'OCA\\WorkflowEngine\\Check\\FileSize') { + return; + } + + var placeholder = '12 MB'; // Do not translate!!! + $(element).css('width', '250px') + .attr('placeholder', placeholder) + .attr('title', t('workflowengine', 'Example: {placeholder}', {placeholder: placeholder})) + .addClass('has-tooltip') + .tooltip({ + placement: 'bottom' + }); + } + }; +})(); + +OC.Plugins.register('OCA.WorkflowEngine.CheckPlugins', OCA.WorkflowEngine.Plugins.FileSizePlugin); diff --git a/apps/workflowengine/js/filesystemtagsplugin.js b/apps/workflowengine/js/filesystemtagsplugin.js new file mode 100644 index 00000000000..dc6f608d85a --- /dev/null +++ b/apps/workflowengine/js/filesystemtagsplugin.js @@ -0,0 +1,76 @@ +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +(function() { + + OCA.WorkflowEngine = OCA.WorkflowEngine || {}; + OCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {}; + + OCA.WorkflowEngine.Plugins.FileSystemTagsPlugin = { + getCheck: function() { + this.collection = OC.SystemTags.collection; + + return { + 'class': 'OCA\\WorkflowEngine\\Check\\FileSystemTags', + 'name': t('workflowengine', 'File system tag'), + 'operators': [ + {'operator': 'is', 'name': t('workflowengine', 'is tagged with')}, + {'operator': '!is', 'name': t('workflowengine', 'is not tagged with')} + ] + }; + }, + render: function(element, check) { + if (check['class'] !== 'OCA\\WorkflowEngine\\Check\\FileSystemTags') { + return; + } + + $(element).css('width', '400px'); + + $(element).select2({ + allowClear: false, + multiple: false, + placeholder: t('workflowengine', 'Select tag…'), + query: _.debounce(function(query) { + query.callback({ + results: OC.SystemTags.collection.filterByName(query.term) + }); + }, 100, true), + id: function(element) { + return element.get('id'); + }, + initSelection: function(element, callback) { + callback($(element).val()); + }, + formatResult: function (tag) { + return OC.SystemTags.getDescriptiveTag(tag); + }, + formatSelection: function (tagId) { + var tag = OC.SystemTags.collection.get(tagId); + return OC.SystemTags.getDescriptiveTag(tag); + }, + escapeMarkup: function(m) { + return m; + } + }); + } + }; +})(); + +OC.Plugins.register('OCA.WorkflowEngine.CheckPlugins', OCA.WorkflowEngine.Plugins.FileSystemTagsPlugin); diff --git a/apps/workflowengine/js/requestremoteaddressplugin.js b/apps/workflowengine/js/requestremoteaddressplugin.js new file mode 100644 index 00000000000..a66d6f51f0f --- /dev/null +++ b/apps/workflowengine/js/requestremoteaddressplugin.js @@ -0,0 +1,83 @@ +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +(function() { + + OCA.WorkflowEngine = OCA.WorkflowEngine || {}; + OCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {}; + + OCA.WorkflowEngine.Plugins.RequestRemoteAddressPlugin = { + getCheck: function() { + return { + 'class': 'OCA\\WorkflowEngine\\Check\\RequestRemoteAddress', + 'name': t('workflowengine', 'Request remote address'), + 'operators': [ + {'operator': 'matchesIPv4', 'name': t('workflowengine', 'matches IPv4')}, + {'operator': '!matchesIPv4', 'name': t('workflowengine', 'does not match IPv4')}, + {'operator': 'matchesIPv6', 'name': t('workflowengine', 'matches IPv6')}, + {'operator': '!matchesIPv6', 'name': t('workflowengine', 'does not match IPv6')} + ] + }; + }, + render: function(element, check) { + if (check['class'] !== 'OCA\\WorkflowEngine\\Check\\RequestRemoteAddress') { + return; + } + + var placeholder = '127.0.0.1/32'; // Do not translate!!! + if (check['operator'] === 'matchesIPv6' || check['operator'] === '!matchesIPv6') { + placeholder = '::1/128'; // Do not translate!!! + if (this._validateIPv6(check['value'])) { + $(element).removeClass('invalid-input'); + } else { + $(element).addClass('invalid-input'); + } + } else { + if (this._validateIPv4(check['value'])) { + $(element).removeClass('invalid-input'); + } else { + $(element).addClass('invalid-input'); + } + } + + $(element).css('width', '300px') + .attr('placeholder', placeholder) + .attr('title', t('workflowengine', 'Example: {placeholder}', {placeholder: placeholder})) + .addClass('has-tooltip') + .tooltip({ + placement: 'bottom' + }); + }, + + _validateIPv4: function(string) { + var regexRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(3[0-2]|[1-2][0-9]|[1-9])$/, + result = regexRegex.exec(string); + return result !== null; + }, + + _validateIPv6: function(string) { + var regexRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9])$/, + result = regexRegex.exec(string); + return result !== null; + } + }; +})(); + +OC.Plugins.register('OCA.WorkflowEngine.CheckPlugins', OCA.WorkflowEngine.Plugins.RequestRemoteAddressPlugin); diff --git a/apps/workflowengine/js/requesttimeplugin.js b/apps/workflowengine/js/requesttimeplugin.js new file mode 100644 index 00000000000..111b2bb7437 --- /dev/null +++ b/apps/workflowengine/js/requesttimeplugin.js @@ -0,0 +1,196 @@ +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +(function() { + + OCA.WorkflowEngine = OCA.WorkflowEngine || {}; + OCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {}; + + OCA.WorkflowEngine.Plugins.RequestTimePlugin = { + timezones: [ + "Europe/Berlin", + "Europe/London" + ], + _$element: null, + getCheck: function() { + return { + 'class': 'OCA\\WorkflowEngine\\Check\\RequestTime', + 'name': t('workflowengine', 'Request time'), + 'operators': [ + {'operator': 'in', 'name': t('workflowengine', 'between')}, + {'operator': '!in', 'name': t('workflowengine', 'not between')} + ] + }; + }, + render: function(element, check) { + if (check['class'] !== 'OCA\\WorkflowEngine\\Check\\RequestTime') { + return; + } + + var startTime = '09:00', + endTime = '18:00', + timezone = jstz.determine().name(), + $element = $(element); + + if (_.isString(check['value']) && check['value'] !== '') { + var value = JSON.parse(check['value']), + splittedStart = value[0].split(' ', 2), + splittedEnd = value[1].split(' ', 2); + + startTime = splittedStart[0]; + endTime = splittedEnd[0]; + timezone = splittedStart[1]; + } + + var valueJSON = JSON.stringify([startTime + ' ' + timezone, endTime + ' ' + timezone]); + if (check['value'] !== valueJSON) { + check['value'] = valueJSON; + $element.val(valueJSON); + } + + $element.css('display', 'none'); + + $('<input>') + .attr('type', 'text') + .attr('placeholder', t('workflowengine', 'Start')) + .attr('title', t('workflowengine', 'Example: {placeholder}', {placeholder: '16:00'})) + .addClass('has-tooltip') + .tooltip({ + placement: 'bottom' + }) + .addClass('start') + .val(startTime) + .insertBefore($element); + $('<input>') + .attr('type', 'text') + .attr('placeholder', t('workflowengine', 'End')) + .attr('title', t('workflowengine', 'Example: {placeholder}', {placeholder: '16:00'})) + .addClass('has-tooltip') + .tooltip({ + placement: 'bottom' + }) + .addClass('end') + .val(endTime) + .insertBefore($element); + + var timezoneInput = $('<input>') + .attr('type', 'hidden') + .css('width', '250px') + .insertBefore($element) + .val(timezone); + + timezoneInput.select2({ + allowClear: false, + multiple: false, + placeholder: t('workflowengine', 'Select timezone…'), + ajax: { + url: OC.generateUrl('apps/workflowengine/timezones'), + dataType: 'json', + quietMillis: 100, + data: function (term) { + if (term === '') { + // Default search in the same continent... + term = jstz.determine().name().split('/'); + term = term[0]; + } + return { + search: term + }; + }, + results: function (response) { + var results = []; + $.each(response, function(timezone) { + results.push({ id: timezone }); + }); + + return { + results: results, + more: false + }; + } + }, + initSelection: function (element, callback) { + callback(element.val()); + }, + formatResult: function (element) { + return '<span>' + element.id + '</span>'; + }, + formatSelection: function (element) { + if (!_.isUndefined(element.id)) { + element = element.id; + } + return '<span>' + element + '</span>'; + } + }); + + // Has to be added after select2 for `event.target.classList` + timezoneInput.addClass('timezone'); + + $element.parent() + .on('change', '.start', _.bind(this.update, this)) + .on('change', '.end', _.bind(this.update, this)) + .on('change', '.timezone', _.bind(this.update, this)); + + this._$element = $element; + }, + update: function(event) { + var value = event.target.value, + key = null; + + for (var i = 0; i < event.target.classList.length; i++) { + key = event.target.classList[i]; + } + + if (key === null) { + console.warn('update triggered but element doesn\'t have any class'); + return; + } + + var data = JSON.parse(this._$element.val()), + startTime = moment(data[0].split(' ', 2)[0], 'H:m Z'), + endTime = moment(data[1].split(' ', 2)[0], 'H:m Z'), + timezone = data[0].split(' ', 2)[1]; + + if (key === 'start' || key === 'end') { + var parsedDate = moment(value, ['H:m', 'h:m a'], true).format('HH:mm'); + + if (parsedDate === 'Invalid date') { + return; + } + + var indexValue = 0; + if (key === 'end') { + indexValue = 1; + } + data[indexValue] = parsedDate + ' ' + timezone; + } + + if (key === 'timezone') { + data[0] = startTime.format('HH:mm') + ' ' + value; + data[1] = endTime.format('HH:mm') + ' ' + value; + } + + this._$element.val(JSON.stringify(data)); + this._$element.trigger('change'); + } + }; +})(); + +OC.Plugins.register('OCA.WorkflowEngine.CheckPlugins', OCA.WorkflowEngine.Plugins.RequestTimePlugin); diff --git a/apps/workflowengine/js/requesturlplugin.js b/apps/workflowengine/js/requesturlplugin.js new file mode 100644 index 00000000000..5f21d2a59fc --- /dev/null +++ b/apps/workflowengine/js/requesturlplugin.js @@ -0,0 +1,117 @@ +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +(function() { + + OCA.WorkflowEngine = OCA.WorkflowEngine || {}; + OCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {}; + + OCA.WorkflowEngine.Plugins.RequestURLPlugin = { + predefinedValues: ['webdav'], + getCheck: function() { + return { + 'class': 'OCA\\WorkflowEngine\\Check\\RequestURL', + 'name': t('workflowengine', 'Request URL'), + 'operators': [ + {'operator': 'is', 'name': t('workflowengine', 'is')}, + {'operator': '!is', 'name': t('workflowengine', 'is not')}, + {'operator': 'matches', 'name': t('workflowengine', 'matches')}, + {'operator': '!matches', 'name': t('workflowengine', 'does not match')} + ] + }; + }, + render: function(element, check) { + if (check['class'] !== 'OCA\\WorkflowEngine\\Check\\RequestURL') { + return; + } + + var placeholder = t('workflowengine', 'https://localhost/index.php'); + + if (check['operator'] === 'matches' || check['operator'] === '!matches') { + placeholder = t('workflowengine', '/^https\\:\\/\\/localhost\\/index\\.php$/i'); + } + + $(element).css('width', '250px') + .attr('placeholder', placeholder) + .attr('title', t('workflowengine', 'Example: {placeholder}', {placeholder: placeholder})) + .addClass('has-tooltip') + .tooltip({ + placement: 'bottom' + }); + + if (check['operator'] === 'matches' || check['operator'] === '!matches') { + if (this._validateRegex(check['value'])) { + $(element).removeClass('invalid-input'); + } else { + $(element).addClass('invalid-input'); + } + } else { + var self = this, + data = [ + { + text: t('workflowengine', 'Predefined URLs'), + children: [ + {id: 'webdav', text: t('workflowengine', 'Files WebDAV')} + ] + } + ]; + if (this.predefinedValues.indexOf(check['value']) === -1) { + data.unshift({ + id: check['value'], + text: check['value'] + }) + } + + + $(element).select2({ + data: data, + createSearchChoice: function(term) { + if (self.predefinedValues.indexOf(check['value']) === -1) { + return { + id: term, + text: term + }; + } + }, + id: function(element) { + return element.id; + }, + formatResult: function (tag) { + return tag.text; + }, + formatSelection: function (tag) { + return tag.text; + }, + escapeMarkup: function(m) { + return m; + } + }) + } + }, + + _validateRegex: function(string) { + var regexRegex = /^\/(.*)\/([gui]{0,3})$/, + result = regexRegex.exec(string); + return result !== null; + } + }; +})(); + +OC.Plugins.register('OCA.WorkflowEngine.CheckPlugins', OCA.WorkflowEngine.Plugins.RequestURLPlugin); diff --git a/apps/workflowengine/js/requestuseragentplugin.js b/apps/workflowengine/js/requestuseragentplugin.js new file mode 100644 index 00000000000..8413d52ac43 --- /dev/null +++ b/apps/workflowengine/js/requestuseragentplugin.js @@ -0,0 +1,118 @@ +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +(function() { + + OCA.WorkflowEngine = OCA.WorkflowEngine || {}; + OCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {}; + + OCA.WorkflowEngine.Plugins.RequestUserAgentPlugin = { + predefinedValues: ['android', 'ios', 'desktop'], + getCheck: function() { + return { + 'class': 'OCA\\WorkflowEngine\\Check\\RequestUserAgent', + 'name': t('workflowengine', 'Request user agent'), + 'operators': [ + {'operator': 'is', 'name': t('workflowengine', 'is')}, + {'operator': '!is', 'name': t('workflowengine', 'is not')}, + {'operator': 'matches', 'name': t('workflowengine', 'matches')}, + {'operator': '!matches', 'name': t('workflowengine', 'does not match')} + ] + }; + }, + render: function(element, check) { + if (check['class'] !== 'OCA\\WorkflowEngine\\Check\\RequestUserAgent') { + return; + } + + var placeholder = t('workflowengine', 'Mozilla/5.0 User Agent'); + + if (check['operator'] === 'matches' || check['operator'] === '!matches') { + placeholder = t('workflowengine', '/^Mozilla\\/5\\.0 (.?)$/i'); + } + + $(element).css('width', '250px') + .attr('placeholder', placeholder) + .attr('title', t('workflowengine', 'Example: {placeholder}', {placeholder: placeholder})) + .addClass('has-tooltip') + .tooltip({ + placement: 'bottom' + }); + + if (check['operator'] === 'matches' || check['operator'] === '!matches') { + if (this._validateRegex(check['value'])) { + $(element).removeClass('invalid-input'); + } else { + $(element).addClass('invalid-input'); + } + } else { + var self = this, + data = [ + { + text: t('workflowengine', 'Sync clients'), + children: [ + {id: 'android', text: t('workflowengine', 'Android client')}, + {id: 'ios', text: t('workflowengine', 'iOS client')}, + {id: 'desktop', text: t('workflowengine', 'Desktop client')} + ] + } + ]; + if (this.predefinedValues.indexOf(check['value']) === -1) { + data.unshift({ + id: check['value'], + text: check['value'] + }) + } + + $(element).select2({ + data: data, + createSearchChoice: function(term) { + if (self.predefinedValues.indexOf(check['value']) === -1) { + return { + id: term, + text: term + }; + } + }, + id: function(element) { + return element.id; + }, + formatResult: function (tag) { + return tag.text; + }, + formatSelection: function (tag) { + return tag.text; + }, + escapeMarkup: function(m) { + return m; + } + }) + } + }, + + _validateRegex: function(string) { + var regexRegex = /^\/(.*)\/([gui]{0,3})$/, + result = regexRegex.exec(string); + return result !== null; + } + }; +})(); + +OC.Plugins.register('OCA.WorkflowEngine.CheckPlugins', OCA.WorkflowEngine.Plugins.RequestUserAgentPlugin); diff --git a/apps/workflowengine/js/usergroupmembershipplugin.js b/apps/workflowengine/js/usergroupmembershipplugin.js index 528a7bd3e3d..1c09e7d5ccd 100644 --- a/apps/workflowengine/js/usergroupmembershipplugin.js +++ b/apps/workflowengine/js/usergroupmembershipplugin.js @@ -34,8 +34,8 @@ ] }; }, - render: function(element, classname, value) { - if (classname !== 'OCA\\WorkflowEngine\\Check\\UserGroupMembership') { + render: function(element, check) { + if (check['class'] !== 'OCA\\WorkflowEngine\\Check\\UserGroupMembership') { return; } diff --git a/apps/workflowengine/lib/AppInfo/Application.php b/apps/workflowengine/lib/AppInfo/Application.php index 84339503047..b5e769d01d7 100644 --- a/apps/workflowengine/lib/AppInfo/Application.php +++ b/apps/workflowengine/lib/AppInfo/Application.php @@ -30,6 +30,7 @@ class Application extends \OCP\AppFramework\App { parent::__construct('workflowengine'); $this->getContainer()->registerAlias('FlowOperationsController', 'OCA\WorkflowEngine\Controller\FlowOperations'); + $this->getContainer()->registerAlias('RequestTimeController', 'OCA\WorkflowEngine\Controller\RequestTime'); } /** @@ -40,9 +41,32 @@ class Application extends \OCP\AppFramework\App { $dispatcher->addListener( 'OCP\WorkflowEngine::loadAdditionalSettingScripts', function() { - Util::addStyle('workflowengine', 'admin'); - Util::addScript('workflowengine', 'admin'); - Util::addScript('workflowengine', 'usergroupmembershipplugin'); + style('workflowengine', [ + 'admin', + ]); + + script('core', [ + 'oc-backbone-webdav', + 'systemtags/systemtags', + 'systemtags/systemtagmodel', + 'systemtags/systemtagscollection', + ]); + + vendor_script('jsTimezoneDetect/jstz'); + + script('workflowengine', [ + 'admin', + + // Check plugins + 'filemimetypeplugin', + 'filesizeplugin', + 'filesystemtagsplugin', + 'requestremoteaddressplugin', + 'requesttimeplugin', + 'requesturlplugin', + 'requestuseragentplugin', + 'usergroupmembershipplugin', + ]); }, -100 ); diff --git a/apps/workflowengine/lib/Check/AbstractStringCheck.php b/apps/workflowengine/lib/Check/AbstractStringCheck.php new file mode 100644 index 00000000000..0fd728e3496 --- /dev/null +++ b/apps/workflowengine/lib/Check/AbstractStringCheck.php @@ -0,0 +1,121 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\WorkflowEngine\Check; + + +use OCP\Files\Storage\IStorage; +use OCP\IL10N; +use OCP\WorkflowEngine\ICheck; + +abstract class AbstractStringCheck implements ICheck { + + /** @var array[] Nested array: [Pattern => [ActualValue => Regex Result]] */ + protected $matches; + + /** @var IL10N */ + protected $l; + + /** + * @param IL10N $l + */ + public function __construct(IL10N $l) { + $this->l = $l; + } + + /** + * @param IStorage $storage + * @param string $path + */ + public function setFileInfo(IStorage $storage, $path) { + // Nothing changes here with a different path + } + + /** + * @return string + */ + abstract protected function getActualValue(); + + /** + * @param string $operator + * @param string $value + * @return bool + */ + public function executeCheck($operator, $value) { + $actualValue = $this->getActualValue(); + return $this->executeStringCheck($operator, $value, $actualValue); + } + + /** + * @param string $operator + * @param string $checkValue + * @param string $actualValue + * @return bool + */ + protected function executeStringCheck($operator, $checkValue, $actualValue) { + if ($operator === 'is') { + return $checkValue === $actualValue; + } else if ($operator === '!is') { + return $checkValue !== $actualValue; + } else { + $match = $this->match($checkValue, $actualValue); + if ($operator === 'matches') { + return $match === 1; + } else { + return $match === 0; + } + } + } + + /** + * @param string $operator + * @param string $value + * @throws \UnexpectedValueException + */ + public function validateCheck($operator, $value) { + if (!in_array($operator, ['is', '!is', 'matches', '!matches'])) { + throw new \UnexpectedValueException($this->l->t('The given operator is invalid'), 1); + } + + if (in_array($operator, ['matches', '!matches']) && + @preg_match($value, null) === false) { + throw new \UnexpectedValueException($this->l->t('The given regular expression is invalid'), 2); + } + } + + /** + * @param string $pattern + * @param string $subject + * @return int|bool + */ + protected function match($pattern, $subject) { + $patternHash = md5($pattern); + $subjectHash = md5($subject); + if (isset($this->matches[$patternHash][$subjectHash])) { + return $this->matches[$patternHash][$subjectHash]; + } + if (!isset($this->matches[$patternHash])) { + $this->matches[$patternHash] = []; + } + $this->matches[$patternHash][$subjectHash] = preg_match($pattern, $subject); + return $this->matches[$patternHash][$subjectHash]; + } +} diff --git a/apps/workflowengine/lib/Check/FileMimeType.php b/apps/workflowengine/lib/Check/FileMimeType.php new file mode 100644 index 00000000000..1de9a70a17d --- /dev/null +++ b/apps/workflowengine/lib/Check/FileMimeType.php @@ -0,0 +1,85 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\WorkflowEngine\Check; + + +use OCP\Files\IMimeTypeDetector; +use OCP\IL10N; +use OCP\IRequest; + +class FileMimeType extends AbstractStringCheck { + + /** @var string */ + protected $mimeType; + + /** @var IRequest */ + protected $request; + + /** @var IMimeTypeDetector */ + protected $mimeTypeDetector; + + /** + * @param IL10N $l + * @param IRequest $request + * @param IMimeTypeDetector $mimeTypeDetector + */ + public function __construct(IL10N $l, IRequest $request, IMimeTypeDetector $mimeTypeDetector) { + parent::__construct($l); + $this->request = $request; + $this->mimeTypeDetector = $mimeTypeDetector; + } + + /** + * @return string + */ + protected function getActualValue() { + if ($this->mimeType !== null) { + return $this->mimeType; + } + + $this->mimeType = ''; + if ($this->isWebDAVRequest()) { + if ($this->request->getMethod() === 'PUT') { + $path = $this->request->getPathInfo(); + $this->mimeType = $this->mimeTypeDetector->detectPath($path); + } + } else if (in_array($this->request->getMethod(), ['POST', 'PUT'])) { + $files = $this->request->getUploadedFile('files'); + if (isset($files['type'][0])) { + $this->mimeType = $files['type'][0]; + } + } + return $this->mimeType; + } + + /** + * @return bool + */ + protected function isWebDAVRequest() { + return substr($this->request->getScriptName(), 0 - strlen('/remote.php')) === '/remote.php' && ( + $this->request->getPathInfo() === '/webdav' || + strpos($this->request->getPathInfo(), '/webdav/') === 0 || + $this->request->getPathInfo() === '/dav/files' || + strpos($this->request->getPathInfo(), '/dav/files/') === 0 + ); + } +} diff --git a/apps/workflowengine/lib/Check/FileSize.php b/apps/workflowengine/lib/Check/FileSize.php new file mode 100644 index 00000000000..1744793dec7 --- /dev/null +++ b/apps/workflowengine/lib/Check/FileSize.php @@ -0,0 +1,119 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\WorkflowEngine\Check; + + +use OCP\Files\Storage\IStorage; +use OCP\IL10N; +use OCP\IRequest; +use OCP\Util; +use OCP\WorkflowEngine\ICheck; + +class FileSize implements ICheck { + + /** @var int */ + protected $size; + + /** @var IL10N */ + protected $l; + + /** @var IRequest */ + protected $request; + + /** + * @param IL10N $l + * @param IRequest $request + */ + public function __construct(IL10N $l, IRequest $request) { + $this->l = $l; + $this->request = $request; + } + + /** + * @param IStorage $storage + * @param string $path + */ + public function setFileInfo(IStorage $storage, $path) { + } + + /** + * @param string $operator + * @param string $value + * @return bool + */ + public function executeCheck($operator, $value) { + $size = $this->getFileSizeFromHeader(); + + $value = Util::computerFileSize($value); + if ($size !== false) { + switch ($operator) { + case 'less': + return $size < $value; + case '!less': + return $size >= $value; + case 'greater': + return $size > $value; + case '!greater': + return $size <= $value; + } + } + return false; + } + + /** + * @param string $operator + * @param string $value + * @throws \UnexpectedValueException + */ + public function validateCheck($operator, $value) { + if (!in_array($operator, ['less', '!less', 'greater', '!greater'])) { + throw new \UnexpectedValueException($this->l->t('The given operator is invalid'), 1); + } + + if (!preg_match('/^[0-9]+[ ]?[kmgt]?b$/i', $value)) { + throw new \UnexpectedValueException($this->l->t('The given file size is invalid'), 2); + } + } + + /** + * @return string + */ + protected function getFileSizeFromHeader() { + if ($this->size !== null) { + return $this->size; + } + + $size = $this->request->getHeader('OC-Total-Length'); + if ($size === null) { + if (in_array($this->request->getMethod(), ['POST', 'PUT'])) { + $size = $this->request->getHeader('Content-Length'); + } + } + + if ($size === null) { + $size = false; + } + + $this->size = $size; + return $this->size; + } +} diff --git a/apps/workflowengine/lib/Check/FileSystemTags.php b/apps/workflowengine/lib/Check/FileSystemTags.php new file mode 100644 index 00000000000..e9b5a945967 --- /dev/null +++ b/apps/workflowengine/lib/Check/FileSystemTags.php @@ -0,0 +1,161 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\WorkflowEngine\Check; + + +use OCP\Files\Cache\ICache; +use OCP\Files\Storage\IStorage; +use OCP\IL10N; +use OCP\SystemTag\ISystemTagManager; +use OCP\SystemTag\ISystemTagObjectMapper; +use OCP\SystemTag\TagNotFoundException; +use OCP\WorkflowEngine\ICheck; + +class FileSystemTags implements ICheck { + + /** @var array */ + protected $fileIds; + + /** @var array */ + protected $fileSystemTags; + + /** @var IL10N */ + protected $l; + + /** @var ISystemTagManager */ + protected $systemTagManager; + + /** @var ISystemTagObjectMapper */ + protected $systemTagObjectMapper; + + /** @var IStorage */ + protected $storage; + + /** @var string */ + protected $path; + + /** + * @param IL10N $l + * @param ISystemTagManager $systemTagManager + * @param ISystemTagObjectMapper $systemTagObjectMapper + */ + public function __construct(IL10N $l, ISystemTagManager $systemTagManager, ISystemTagObjectMapper $systemTagObjectMapper) { + $this->l = $l; + $this->systemTagManager = $systemTagManager; + $this->systemTagObjectMapper = $systemTagObjectMapper; + } + + /** + * @param IStorage $storage + * @param string $path + */ + public function setFileInfo(IStorage $storage, $path) { + $this->storage = $storage; + $this->path = $path; + } + + /** + * @param string $operator + * @param string $value + * @return bool + */ + public function executeCheck($operator, $value) { + $systemTags = $this->getSystemTags(); + return ($operator === 'is') === in_array($value, $systemTags); + } + + /** + * @param string $operator + * @param string $value + * @throws \UnexpectedValueException + */ + public function validateCheck($operator, $value) { + if (!in_array($operator, ['is', '!is'])) { + throw new \UnexpectedValueException($this->l->t('The given operator is invalid'), 1); + } + + try { + $this->systemTagManager->getTagsByIds($value); + } catch (TagNotFoundException $e) { + throw new \UnexpectedValueException($this->l->t('The given tag id is invalid'), 2); + } catch (\InvalidArgumentException $e) { + throw new \UnexpectedValueException($this->l->t('The given tag id is invalid'), 3); + } + } + + /** + * Get the ids of the assigned system tags + * @return string[] + */ + protected function getSystemTags() { + $cache = $this->storage->getCache(); + $fileIds = $this->getFileIds($cache, $this->path); + + $systemTags = []; + foreach ($fileIds as $i => $fileId) { + if (isset($this->fileSystemTags[$fileId])) { + $systemTags[] = $this->fileSystemTags[$fileId]; + unset($fileIds[$i]); + } + } + + if (!empty($fileIds)) { + $mappedSystemTags = $this->systemTagObjectMapper->getTagIdsForObjects($fileIds, 'files'); + foreach ($mappedSystemTags as $fileId => $fileSystemTags) { + $this->fileSystemTags[$fileId] = $fileSystemTags; + $systemTags[] = $fileSystemTags; + } + } + + $systemTags = call_user_func_array('array_merge', $systemTags); + $systemTags = array_unique($systemTags); + return $systemTags; + } + + /** + * Get the file ids of the given path and its parents + * @param ICache $cache + * @param string $path + * @return int[] + */ + protected function getFileIds(ICache $cache, $path) { + $cacheId = $cache->getNumericStorageId(); + if (isset($this->fileIds[$cacheId][$path])) { + return $this->fileIds[$cacheId][$path]; + } + + if ($path !== dirname($path)) { + $parentIds = $this->getFileIds($cache, dirname($path)); + } else { + return []; + } + + $fileId = $cache->getId($path); + if ($fileId !== -1) { + $parentIds[] = $cache->getId($path); + } + + $this->fileIds[$cacheId][$path] = $parentIds; + + return $parentIds; + } +} diff --git a/apps/workflowengine/lib/Check/RequestRemoteAddress.php b/apps/workflowengine/lib/Check/RequestRemoteAddress.php new file mode 100644 index 00000000000..de9738fb631 --- /dev/null +++ b/apps/workflowengine/lib/Check/RequestRemoteAddress.php @@ -0,0 +1,154 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\WorkflowEngine\Check; + + +use OCP\Files\Storage\IStorage; +use OCP\IL10N; +use OCP\IRequest; +use OCP\WorkflowEngine\ICheck; + +class RequestRemoteAddress implements ICheck { + + /** @var IL10N */ + protected $l; + + /** @var IRequest */ + protected $request; + + /** + * @param IL10N $l + * @param IRequest $request + */ + public function __construct(IL10N $l, IRequest $request) { + $this->l = $l; + $this->request = $request; + } + + /** + * @param IStorage $storage + * @param string $path + */ + public function setFileInfo(IStorage $storage, $path) { + // A different path doesn't change time, so nothing to do here. + } + + /** + * @param string $operator + * @param string $value + * @return bool + */ + public function executeCheck($operator, $value) { + $actualValue = $this->request->getRemoteAddress(); + $decodedValue = explode('/', $value); + + if ($operator === 'matchesIPv4') { + return $this->matchIPv4($actualValue, $decodedValue[0], $decodedValue[1]); + } else if ($operator === '!matchesIPv4') { + return !$this->matchIPv4($actualValue, $decodedValue[0], $decodedValue[1]); + } else if ($operator === 'matchesIPv6') { + return $this->matchIPv6($actualValue, $decodedValue[0], $decodedValue[1]); + } else { + return !$this->matchIPv6($actualValue, $decodedValue[0], $decodedValue[1]); + } + } + + /** + * @param string $operator + * @param string $value + * @throws \UnexpectedValueException + */ + public function validateCheck($operator, $value) { + if (!in_array($operator, ['matchesIPv4', '!matchesIPv4', 'matchesIPv6', '!matchesIPv6'])) { + throw new \UnexpectedValueException($this->l->t('The given operator is invalid'), 1); + } + + $decodedValue = explode('/', $value); + if (sizeof($decodedValue) !== 2) { + throw new \UnexpectedValueException($this->l->t('The given IP range is invalid'), 2); + } + + if (in_array($operator, ['matchesIPv4', '!matchesIPv4'])) { + if (!filter_var($decodedValue[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { + throw new \UnexpectedValueException($this->l->t('The given IP range is not valid for IPv4'), 3); + } + if ($decodedValue[1] > 32 || $decodedValue[1] <= 0) { + throw new \UnexpectedValueException($this->l->t('The given IP range is not valid for IPv4'), 4); + } + } else { + if (!filter_var($decodedValue[0], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { + throw new \UnexpectedValueException($this->l->t('The given IP range is not valid for IPv6'), 3); + } + if ($decodedValue[1] > 128 || $decodedValue[1] <= 0) { + throw new \UnexpectedValueException($this->l->t('The given IP range is not valid for IPv6'), 4); + } + } + } + + /** + * Based on http://stackoverflow.com/a/594134 + * @param string $ip + * @param string $rangeIp + * @param int $bits + * @return bool + */ + protected function matchIPv4($ip, $rangeIp, $bits) { + $rangeDecimal = ip2long($rangeIp); + $ipDecimal = ip2long($ip); + $mask = -1 << (32 - $bits); + return ($ipDecimal & $mask) === ($rangeDecimal & $mask); + } + + /** + * Based on http://stackoverflow.com/a/7951507 + * @param string $ip + * @param string $rangeIp + * @param int $bits + * @return bool + */ + protected function matchIPv6($ip, $rangeIp, $bits) { + $ipNet = inet_pton($ip); + $binaryIp = $this->ipv6ToBits($ipNet); + $ipNetBits = substr($binaryIp, 0, $bits); + + $rangeNet = inet_pton($rangeIp); + $binaryRange = $this->ipv6ToBits($rangeNet); + $rangeNetBits = substr($binaryRange, 0, $bits); + + return $ipNetBits === $rangeNetBits; + } + + /** + * Based on http://stackoverflow.com/a/7951507 + * @param string $packedIp + * @return string + */ + protected function ipv6ToBits($packedIp) { + $unpackedIp = unpack('A16', $packedIp); + $unpackedIp = str_split($unpackedIp[1]); + $binaryIp = ''; + foreach ($unpackedIp as $char) { + $binaryIp .= str_pad(decbin(ord($char)), 8, '0', STR_PAD_LEFT); + } + return str_pad($binaryIp, 128, '0', STR_PAD_RIGHT); + } +} diff --git a/apps/workflowengine/lib/Check/RequestTime.php b/apps/workflowengine/lib/Check/RequestTime.php new file mode 100644 index 00000000000..2aa79e77673 --- /dev/null +++ b/apps/workflowengine/lib/Check/RequestTime.php @@ -0,0 +1,129 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\WorkflowEngine\Check; + + +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\Files\Storage\IStorage; +use OCP\IL10N; +use OCP\WorkflowEngine\ICheck; + +class RequestTime implements ICheck { + + const REGEX_TIME = '([0-1][0-9]|2[0-3]):([0-5][0-9])'; + const REGEX_TIMEZONE = '([a-zA-Z]+(?:\\/[a-zA-Z\-\_]+)+)'; + + /** @var bool[] */ + protected $cachedResults; + + /** @var IL10N */ + protected $l; + + /** @var ITimeFactory */ + protected $timeFactory; + + /** + * @param ITimeFactory $timeFactory + */ + public function __construct(IL10N $l, ITimeFactory $timeFactory) { + $this->l = $l; + $this->timeFactory = $timeFactory; + } + + /** + * @param IStorage $storage + * @param string $path + */ + public function setFileInfo(IStorage $storage, $path) { + // A different path doesn't change time, so nothing to do here. + } + + /** + * @param string $operator + * @param string $value + * @return bool + */ + public function executeCheck($operator, $value) { + $valueHash = md5($value); + + if (isset($this->cachedResults[$valueHash])) { + return $this->cachedResults[$valueHash]; + } + + $timestamp = $this->timeFactory->getTime(); + + $values = json_decode($value, true); + $timestamp1 = $this->getTimestamp($timestamp, $values[0]); + $timestamp2 = $this->getTimestamp($timestamp, $values[1]); + + if ($timestamp1 < $timestamp2) { + $in = $timestamp1 <= $timestamp && $timestamp <= $timestamp2; + } else { + $in = $timestamp1 <= $timestamp || $timestamp <= $timestamp2; + } + + return ($operator === 'in') ? $in : !$in; + } + + /** + * @param int $currentTimestamp + * @param string $value Format: "H:i e" + * @return int + */ + protected function getTimestamp($currentTimestamp, $value) { + list($time1, $timezone1) = explode(' ', $value); + list($hour1, $minute1) = explode(':', $time1); + $date1 = new \DateTime('now', new \DateTimeZone($timezone1)); + $date1->setTimestamp($currentTimestamp); + $date1->setTime($hour1, $minute1); + + return $date1->getTimestamp(); + } + + /** + * @param string $operator + * @param string $value + * @throws \UnexpectedValueException + */ + public function validateCheck($operator, $value) { + if (!in_array($operator, ['in', '!in'])) { + throw new \UnexpectedValueException($this->l->t('The given operator is invalid'), 1); + } + + $regexValue = '\"' . self::REGEX_TIME . ' ' . self::REGEX_TIMEZONE . '\"'; + $result = preg_match('/^\[' . $regexValue . ',' . $regexValue . '\]$/', $value, $matches); + if (!$result) { + throw new \UnexpectedValueException($this->l->t('The given time span is invalid'), 2); + } + + $values = json_decode($value, true); + $time1 = \DateTime::createFromFormat('H:i e', $values[0]); + if ($time1 === false) { + throw new \UnexpectedValueException($this->l->t('The given start time is invalid'), 3); + } + + $time2 = \DateTime::createFromFormat('H:i e', $values[1]); + if ($time2 === false) { + throw new \UnexpectedValueException($this->l->t('The given end time is invalid'), 4); + } + } +} diff --git a/apps/workflowengine/lib/Check/RequestURL.php b/apps/workflowengine/lib/Check/RequestURL.php new file mode 100644 index 00000000000..36d41c101f2 --- /dev/null +++ b/apps/workflowengine/lib/Check/RequestURL.php @@ -0,0 +1,92 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\WorkflowEngine\Check; + + +use OCP\IL10N; +use OCP\IRequest; + +class RequestURL extends AbstractStringCheck { + + /** @var string */ + protected $url; + + /** @var IRequest */ + protected $request; + + /** + * @param IL10N $l + * @param IRequest $request + */ + public function __construct(IL10N $l, IRequest $request) { + parent::__construct($l); + $this->request = $request; + } + + /** + * @param string $operator + * @param string $value + * @return bool + */ + public function executeCheck($operator, $value) { + $actualValue = $this->getActualValue(); + if (in_array($operator, ['is', '!is'])) { + switch ($value) { + case 'webdav': + if ($operator === 'is') { + return $this->isWebDAVRequest(); + } else { + return !$this->isWebDAVRequest(); + } + } + } + return $this->executeStringCheck($operator, $value, $actualValue); + } + + /** + * @return string + */ + protected function getActualValue() { + if ($this->url !== null) { + return $this->url; + } + + $this->url = $this->request->getServerProtocol() . '://';// E.g. http(s) + :// + $this->url .= $this->request->getServerHost();// E.g. localhost + $this->url .= $this->request->getScriptName();// E.g. /nextcloud/index.php + $this->url .= $this->request->getPathInfo();// E.g. /apps/files_texteditor/ajax/loadfile + + return $this->url; // E.g. https://localhost/nextcloud/index.php/apps/files_texteditor/ajax/loadfile + } + + /** + * @return bool + */ + protected function isWebDAVRequest() { + return substr($this->request->getScriptName(), 0 - strlen('/remote.php')) === '/remote.php' && ( + $this->request->getPathInfo() === '/webdav' || + strpos($this->request->getPathInfo(), '/webdav/') === 0 || + $this->request->getPathInfo() === '/dav/files' || + strpos($this->request->getPathInfo(), '/dav/files/') === 0 + ); + } +} diff --git a/apps/workflowengine/lib/Check/RequestUserAgent.php b/apps/workflowengine/lib/Check/RequestUserAgent.php new file mode 100644 index 00000000000..7a8d4a71acf --- /dev/null +++ b/apps/workflowengine/lib/Check/RequestUserAgent.php @@ -0,0 +1,74 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\WorkflowEngine\Check; + + +use OCP\IL10N; +use OCP\IRequest; + +class RequestUserAgent extends AbstractStringCheck { + + /** @var IRequest */ + protected $request; + + /** + * @param IL10N $l + * @param IRequest $request + */ + public function __construct(IL10N $l, IRequest $request) { + parent::__construct($l); + $this->request = $request; + } + + /** + * @param string $operator + * @param string $value + * @return bool + */ + public function executeCheck($operator, $value) { + $actualValue = $this->getActualValue(); + if (in_array($operator, ['is', '!is'])) { + switch ($value) { + case 'android': + $operator = $operator === 'is' ? 'matches' : '!matches'; + $value = IRequest::USER_AGENT_CLIENT_ANDROID; + break; + case 'ios': + $operator = $operator === 'is' ? 'matches' : '!matches'; + $value = IRequest::USER_AGENT_CLIENT_IOS; + break; + case 'desktop': + $operator = $operator === 'is' ? 'matches' : '!matches'; + $value = IRequest::USER_AGENT_CLIENT_DESKTOP; + break; + } + } + return $this->executeStringCheck($operator, $value, $actualValue); + } + + /** + * @return string + */ + protected function getActualValue() { + return (string) $this->request->getHeader('User-Agent'); + } +} diff --git a/apps/workflowengine/lib/Check/UserGroupMembership.php b/apps/workflowengine/lib/Check/UserGroupMembership.php index 6390c57fbea..fd6ba00d092 100644 --- a/apps/workflowengine/lib/Check/UserGroupMembership.php +++ b/apps/workflowengine/lib/Check/UserGroupMembership.php @@ -89,11 +89,11 @@ class UserGroupMembership implements ICheck { */ public function validateCheck($operator, $value) { if (!in_array($operator, ['is', '!is'])) { - throw new \UnexpectedValueException($this->l->t('Operator %s is invalid', $operator), 1); + throw new \UnexpectedValueException($this->l->t('The given operator is invalid'), 1); } if (!$this->groupManager->groupExists($value)) { - throw new \UnexpectedValueException($this->l->t('Group %s does not exist', $value), 2); + throw new \UnexpectedValueException($this->l->t('The given group does not exist'), 2); } } diff --git a/apps/workflowengine/lib/Controller/RequestTime.php b/apps/workflowengine/lib/Controller/RequestTime.php new file mode 100644 index 00000000000..dd0efa89b91 --- /dev/null +++ b/apps/workflowengine/lib/Controller/RequestTime.php @@ -0,0 +1,52 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\WorkflowEngine\Controller; + +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\JSONResponse; + +class RequestTime extends Controller { + + /** + * @NoAdminRequired + * + * @param string $search + * @return JSONResponse + */ + public function getTimezones($search = '') { + $timezones = \DateTimeZone::listIdentifiers(); + + if ($search !== '') { + $timezones = array_filter($timezones, function ($timezone) use ($search) { + return strpos(strtolower($timezone), strtolower($search)) !== false; + }); + } + + $timezones = array_slice($timezones, 0, 10); + + $response = []; + foreach ($timezones as $timezone) { + $response[$timezone] = $timezone; + } + return new JSONResponse($response); + } +} diff --git a/apps/workflowengine/templates/admin.php b/apps/workflowengine/templates/admin.php index 4eabf783bba..935e8c70f17 100644 --- a/apps/workflowengine/templates/admin.php +++ b/apps/workflowengine/templates/admin.php @@ -36,7 +36,7 @@ {{#if operation.id}} <span class="button-delete pull-right icon-delete"></span> {{/if}} - <span class="pull-right info">{{operation.class}} - ID: {{operation.id}} - operation: {{operation.operation}}</span> + <input type="text" class="pull-right operation-operation" value="{{operation.operation}}"> <div class="checks"> {{#each operation.checks}} diff --git a/apps/workflowengine/tests/Check/AbstractStringCheckTest.php b/apps/workflowengine/tests/Check/AbstractStringCheckTest.php new file mode 100644 index 00000000000..91da8931604 --- /dev/null +++ b/apps/workflowengine/tests/Check/AbstractStringCheckTest.php @@ -0,0 +1,149 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\WorkflowEngine\Tests\Check; + + +class AbstractStringCheckTest extends \Test\TestCase { + + protected function getCheckMock() { + $l = $this->getMockBuilder('OCP\IL10N') + ->disableOriginalConstructor() + ->getMock(); + $l->expects($this->any()) + ->method('t') + ->willReturnCallback(function($string, $args) { + return sprintf($string, $args); + }); + + $check = $this->getMockBuilder('OCA\WorkflowEngine\Check\AbstractStringCheck') + ->setConstructorArgs([ + $l, + ]) + ->setMethods([ + 'setPath', + 'executeCheck', + 'getActualValue', + ]) + ->getMock(); + + return $check; + } + + public function dataExecuteStringCheck() { + return [ + ['is', 'same', 'same', true], + ['is', 'different', 'not the same', false], + ['!is', 'same', 'same', false], + ['!is', 'different', 'not the same', true], + + ['matches', '/match/', 'match', true], + ['matches', '/different/', 'not the same', false], + ['!matches', '/match/', 'match', false], + ['!matches', '/different/', 'not the same', true], + ]; + } + + /** + * @dataProvider dataExecuteStringCheck + * @param string $operation + * @param string $checkValue + * @param string $actualValue + * @param bool $expected + */ + public function testExecuteStringCheck($operation, $checkValue, $actualValue, $expected) { + $check = $this->getCheckMock(); + + /** @var \OCA\WorkflowEngine\Check\AbstractStringCheck $check */ + $this->assertEquals($expected, $this->invokePrivate($check, 'executeStringCheck', [$operation, $checkValue, $actualValue])); + } + + public function dataValidateCheck() { + return [ + ['is', '/Invalid(Regex/'], + ['!is', '/Invalid(Regex/'], + ['matches', '/Valid(Regex)/'], + ['!matches', '/Valid(Regex)/'], + ]; + } + + /** + * @dataProvider dataValidateCheck + * @param string $operator + * @param string $value + */ + public function testValidateCheck($operator, $value) { + $check = $this->getCheckMock(); + + /** @var \OCA\WorkflowEngine\Check\AbstractStringCheck $check */ + $check->validateCheck($operator, $value); + } + + public function dataValidateCheckInvalid() { + return [ + ['!!is', '', 1, 'The given operator is invalid'], + ['less', '', 1, 'The given operator is invalid'], + ['matches', '/Invalid(Regex/', 2, 'The given regular expression is invalid'], + ['!matches', '/Invalid(Regex/', 2, 'The given regular expression is invalid'], + ]; + } + + /** + * @dataProvider dataValidateCheckInvalid + * @param $operator + * @param $value + * @param $exceptionCode + * @param $exceptionMessage + */ + public function testValidateCheckInvalid($operator, $value, $exceptionCode, $exceptionMessage) { + $check = $this->getCheckMock(); + + try { + /** @var \OCA\WorkflowEngine\Check\AbstractStringCheck $check */ + $check->validateCheck($operator, $value); + } catch (\UnexpectedValueException $e) { + $this->assertEquals($exceptionCode, $e->getCode()); + $this->assertEquals($exceptionMessage, $e->getMessage()); + } + } + + public function dataMatch() { + return [ + ['/valid/', 'valid', [], true], + ['/valid/', 'valid', [md5('/valid/') => [md5('valid') => false]], false], // Cache hit + ]; + } + + /** + * @dataProvider dataMatch + * @param string $pattern + * @param string $subject + * @param array[] $matches + * @param bool $expected + */ + public function testMatch($pattern, $subject, $matches, $expected) { + $check = $this->getCheckMock(); + + $this->invokePrivate($check, 'matches', [$matches]); + + $this->assertEquals($expected, $this->invokePrivate($check, 'match', [$pattern, $subject])); + } +} diff --git a/apps/workflowengine/tests/Check/RequestRemoteAddressTest.php b/apps/workflowengine/tests/Check/RequestRemoteAddressTest.php new file mode 100644 index 00000000000..efe8f6372dd --- /dev/null +++ b/apps/workflowengine/tests/Check/RequestRemoteAddressTest.php @@ -0,0 +1,138 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\WorkflowEngine\Tests\Check; + + +class RequestRemoteAddressTest extends \Test\TestCase { + + /** @var \OCP\IRequest|\PHPUnit_Framework_MockObject_MockObject */ + protected $request; + + /** + * @return \OCP\IL10N|\PHPUnit_Framework_MockObject_MockObject + */ + protected function getL10NMock() { + $l = $this->getMockBuilder('OCP\IL10N') + ->disableOriginalConstructor() + ->getMock(); + $l->expects($this->any()) + ->method('t') + ->willReturnCallback(function ($string, $args) { + return sprintf($string, $args); + }); + return $l; + } + + protected function setUp() { + parent::setUp(); + + $this->request = $this->getMockBuilder('OCP\IRequest') + ->getMock(); + } + + public function dataExecuteCheckIPv4() { + return [ + ['127.0.0.1/32', '127.0.0.1', true], + ['127.0.0.1/32', '127.0.0.0', false], + ['127.0.0.1/31', '127.0.0.0', true], + ['127.0.0.1/32', '127.0.0.2', false], + ['127.0.0.1/31', '127.0.0.2', false], + ['127.0.0.1/30', '127.0.0.2', true], + ]; + } + + /** + * @dataProvider dataExecuteCheckIPv4 + * @param string $value + * @param string $ip + * @param bool $expected + */ + public function testExecuteCheckMatchesIPv4($value, $ip, $expected) { + $check = new \OCA\WorkflowEngine\Check\RequestRemoteAddress($this->getL10NMock(), $this->request); + + $this->request->expects($this->once()) + ->method('getRemoteAddress') + ->willReturn($ip); + + $this->assertEquals($expected, $check->executeCheck('matchesIPv4', $value)); + } + + /** + * @dataProvider dataExecuteCheckIPv4 + * @param string $value + * @param string $ip + * @param bool $expected + */ + public function testExecuteCheckNotMatchesIPv4($value, $ip, $expected) { + $check = new \OCA\WorkflowEngine\Check\RequestRemoteAddress($this->getL10NMock(), $this->request); + + $this->request->expects($this->once()) + ->method('getRemoteAddress') + ->willReturn($ip); + + $this->assertEquals(!$expected, $check->executeCheck('!matchesIPv4', $value)); + } + + public function dataExecuteCheckIPv6() { + return [ + ['::1/128', '::1', true], + ['::2/128', '::3', false], + ['::2/127', '::3', true], + ['::1/128', '::2', false], + ['::1/127', '::2', false], + ['::1/126', '::2', true], + ['1234::1/127', '1234::', true], + ]; + } + + /** + * @dataProvider dataExecuteCheckIPv6 + * @param string $value + * @param string $ip + * @param bool $expected + */ + public function testExecuteCheckMatchesIPv6($value, $ip, $expected) { + $check = new \OCA\WorkflowEngine\Check\RequestRemoteAddress($this->getL10NMock(), $this->request); + + $this->request->expects($this->once()) + ->method('getRemoteAddress') + ->willReturn($ip); + + $this->assertEquals($expected, $check->executeCheck('matchesIPv6', $value)); + } + + /** + * @dataProvider dataExecuteCheckIPv6 + * @param string $value + * @param string $ip + * @param bool $expected + */ + public function testExecuteCheckNotMatchesIPv6($value, $ip, $expected) { + $check = new \OCA\WorkflowEngine\Check\RequestRemoteAddress($this->getL10NMock(), $this->request); + + $this->request->expects($this->once()) + ->method('getRemoteAddress') + ->willReturn($ip); + + $this->assertEquals(!$expected, $check->executeCheck('!matchesIPv6', $value)); + } +} diff --git a/apps/workflowengine/tests/Check/RequestTimeTest.php b/apps/workflowengine/tests/Check/RequestTimeTest.php new file mode 100644 index 00000000000..c07b4bf8775 --- /dev/null +++ b/apps/workflowengine/tests/Check/RequestTimeTest.php @@ -0,0 +1,162 @@ +<?php +/** + * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\WorkflowEngine\Tests\Check; + + +class RequestTimeTest extends \Test\TestCase { + + /** @var \OCP\AppFramework\Utility\ITimeFactory|\PHPUnit_Framework_MockObject_MockObject */ + protected $timeFactory; + + /** + * @return \OCP\IL10N|\PHPUnit_Framework_MockObject_MockObject + */ + protected function getL10NMock() { + $l = $this->getMockBuilder('OCP\IL10N') + ->disableOriginalConstructor() + ->getMock(); + $l->expects($this->any()) + ->method('t') + ->willReturnCallback(function ($string, $args) { + return sprintf($string, $args); + }); + return $l; + } + + protected function setUp() { + parent::setUp(); + + $this->timeFactory = $this->getMockBuilder('OCP\AppFramework\Utility\ITimeFactory') + ->getMock(); + } + + public function dataExecuteCheck() { + return [ + [json_encode(['08:00 Europe/Berlin', '17:00 Europe/Berlin']), 1467870105, false], // 2016-07-07T07:41:45+02:00 + [json_encode(['08:00 Europe/Berlin', '17:00 Europe/Berlin']), 1467873705, true], // 2016-07-07T08:41:45+02:00 + [json_encode(['08:00 Europe/Berlin', '17:00 Europe/Berlin']), 1467902505, true], // 2016-07-07T16:41:45+02:00 + [json_encode(['08:00 Europe/Berlin', '17:00 Europe/Berlin']), 1467906105, false], // 2016-07-07T17:41:45+02:00 + [json_encode(['17:00 Europe/Berlin', '08:00 Europe/Berlin']), 1467870105, true], // 2016-07-07T07:41:45+02:00 + [json_encode(['17:00 Europe/Berlin', '08:00 Europe/Berlin']), 1467873705, false], // 2016-07-07T08:41:45+02:00 + [json_encode(['17:00 Europe/Berlin', '08:00 Europe/Berlin']), 1467902505, false], // 2016-07-07T16:41:45+02:00 + [json_encode(['17:00 Europe/Berlin', '08:00 Europe/Berlin']), 1467906105, true], // 2016-07-07T17:41:45+02:00 + + [json_encode(['08:00 Australia/Adelaide', '17:00 Australia/Adelaide']), 1467843105, false], // 2016-07-07T07:41:45+09:30 + [json_encode(['08:00 Australia/Adelaide', '17:00 Australia/Adelaide']), 1467846705, true], // 2016-07-07T08:41:45+09:30 + [json_encode(['08:00 Australia/Adelaide', '17:00 Australia/Adelaide']), 1467875505, true], // 2016-07-07T16:41:45+09:30 + [json_encode(['08:00 Australia/Adelaide', '17:00 Australia/Adelaide']), 1467879105, false], // 2016-07-07T17:41:45+09:30 + [json_encode(['17:00 Australia/Adelaide', '08:00 Australia/Adelaide']), 1467843105, true], // 2016-07-07T07:41:45+09:30 + [json_encode(['17:00 Australia/Adelaide', '08:00 Australia/Adelaide']), 1467846705, false], // 2016-07-07T08:41:45+09:30 + [json_encode(['17:00 Australia/Adelaide', '08:00 Australia/Adelaide']), 1467875505, false], // 2016-07-07T16:41:45+09:30 + [json_encode(['17:00 Australia/Adelaide', '08:00 Australia/Adelaide']), 1467879105, true], // 2016-07-07T17:41:45+09:30 + + [json_encode(['08:00 Pacific/Niue', '17:00 Pacific/Niue']), 1467916905, false], // 2016-07-07T07:41:45-11:00 + [json_encode(['08:00 Pacific/Niue', '17:00 Pacific/Niue']), 1467920505, true], // 2016-07-07T08:41:45-11:00 + [json_encode(['08:00 Pacific/Niue', '17:00 Pacific/Niue']), 1467949305, true], // 2016-07-07T16:41:45-11:00 + [json_encode(['08:00 Pacific/Niue', '17:00 Pacific/Niue']), 1467952905, false], // 2016-07-07T17:41:45-11:00 + [json_encode(['17:00 Pacific/Niue', '08:00 Pacific/Niue']), 1467916905, true], // 2016-07-07T07:41:45-11:00 + [json_encode(['17:00 Pacific/Niue', '08:00 Pacific/Niue']), 1467920505, false], // 2016-07-07T08:41:45-11:00 + [json_encode(['17:00 Pacific/Niue', '08:00 Pacific/Niue']), 1467949305, false], // 2016-07-07T16:41:45-11:00 + [json_encode(['17:00 Pacific/Niue', '08:00 Pacific/Niue']), 1467952905, true], // 2016-07-07T17:41:45-11:00 + ]; + } + + /** + * @dataProvider dataExecuteCheck + * @param string $value + * @param int $timestamp + * @param bool $expected + */ + public function testExecuteCheckIn($value, $timestamp, $expected) { + $check = new \OCA\WorkflowEngine\Check\RequestTime($this->getL10NMock(), $this->timeFactory); + + $this->timeFactory->expects($this->once()) + ->method('getTime') + ->willReturn($timestamp); + + $this->assertEquals($expected, $check->executeCheck('in', $value)); + } + + /** + * @dataProvider dataExecuteCheck + * @param string $value + * @param int $timestamp + * @param bool $expected + */ + public function testExecuteCheckNotIn($value, $timestamp, $expected) { + $check = new \OCA\WorkflowEngine\Check\RequestTime($this->getL10NMock(), $this->timeFactory); + + $this->timeFactory->expects($this->once()) + ->method('getTime') + ->willReturn($timestamp); + + $this->assertEquals(!$expected, $check->executeCheck('!in', $value)); + } + + public function dataValidateCheck() { + return [ + ['in', '["08:00 Europe/Berlin","17:00 Europe/Berlin"]'], + ['!in', '["08:00 Europe/Berlin","17:00 America/North_Dakota/Beulah"]'], + ['in', '["08:00 America/Port-au-Prince","17:00 America/Argentina/San_Luis"]'], + ]; + } + + /** + * @dataProvider dataValidateCheck + * @param string $operator + * @param string $value + */ + public function testValidateCheck($operator, $value) { + $check = new \OCA\WorkflowEngine\Check\RequestTime($this->getL10NMock(), $this->timeFactory); + $check->validateCheck($operator, $value); + } + + public function dataValidateCheckInvalid() { + return [ + ['!!in', '["08:00 Europe/Berlin","17:00 Europe/Berlin"]', 1, 'The given operator is invalid'], + ['in', '["28:00 Europe/Berlin","17:00 Europe/Berlin"]', 2, 'The given time span is invalid'], + ['in', '["08:00 Europe/Berlin","27:00 Europe/Berlin"]', 2, 'The given time span is invalid'], + ['in', '["08:00 Europa/Berlin","17:00 Europe/Berlin"]', 3, 'The given start time is invalid'], + ['in', '["08:00 Europe/Berlin","17:00 Europa/Berlin"]', 4, 'The given end time is invalid'], + ['in', '["08:00 Europe/Bearlin","17:00 Europe/Berlin"]', 3, 'The given start time is invalid'], + ['in', '["08:00 Europe/Berlin","17:00 Europe/Bearlin"]', 4, 'The given end time is invalid'], + ]; + } + + /** + * @dataProvider dataValidateCheckInvalid + * @param string $operator + * @param string $value + * @param int $exceptionCode + * @param string $exceptionMessage + */ + public function testValidateCheckInvalid($operator, $value, $exceptionCode, $exceptionMessage) { + $check = new \OCA\WorkflowEngine\Check\RequestTime($this->getL10NMock(), $this->timeFactory); + + try { + $check->validateCheck($operator, $value); + } catch (\UnexpectedValueException $e) { + $this->assertEquals($exceptionCode, $e->getCode()); + $this->assertEquals($exceptionMessage, $e->getMessage()); + } + } +} diff --git a/build/integration/features/bootstrap/BasicStructure.php b/build/integration/features/bootstrap/BasicStructure.php index 80f24c6860b..0b0e5998c4b 100644 --- a/build/integration/features/bootstrap/BasicStructure.php +++ b/build/integration/features/bootstrap/BasicStructure.php @@ -157,6 +157,9 @@ trait BasicStructure { } else { $options['auth'] = [$this->currentUser, $this->regularUser]; } + $options['headers'] = [ + 'OCS_APIREQUEST' => 'true' + ]; if ($body instanceof \Behat\Gherkin\Node\TableNode) { $fd = $body->getRowsHash(); $options['body'] = $fd; diff --git a/build/integration/features/bootstrap/CommentsContext.php b/build/integration/features/bootstrap/CommentsContext.php index 5c3b0edafac..1d1b47f9736 100644 --- a/build/integration/features/bootstrap/CommentsContext.php +++ b/build/integration/features/bootstrap/CommentsContext.php @@ -191,6 +191,9 @@ class CommentsContext implements \Behat\Behat\Context\Context { $options['auth'] = [$user, '123456']; $fd = $body->getRowsHash(); $options['body'] = $fd; + $options['headers'] = [ + 'OCS-APIREQUEST' => 'true', + ]; $client->send($client->createRequest($verb, $this->baseUrl.'/ocs/v1.php/'.$url, $options)); } diff --git a/build/integration/features/bootstrap/Sharing.php b/build/integration/features/bootstrap/Sharing.php index 9d230e35ac6..3a50b1917aa 100644 --- a/build/integration/features/bootstrap/Sharing.php +++ b/build/integration/features/bootstrap/Sharing.php @@ -52,7 +52,11 @@ trait Sharing { public function asCreatingAShareWith($user, $body) { $fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares"; $client = new Client(); - $options = []; + $options = [ + 'headers' => [ + 'OCS-APIREQUEST' => 'true', + ], + ]; if ($user === 'admin') { $options['auth'] = $this->adminUser; } else { @@ -160,7 +164,11 @@ trait Sharing { $share_id = (string) $this->lastShareData->data[0]->id; $fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares/$share_id"; $client = new Client(); - $options = []; + $options = [ + 'headers' => [ + 'OCS-APIREQUEST' => 'true', + ], + ]; if ($this->currentUser === 'admin') { $options['auth'] = $this->adminUser; } else { @@ -194,7 +202,11 @@ trait Sharing { $permissions = null){ $fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares"; $client = new Client(); - $options = []; + $options = [ + 'headers' => [ + 'OCS-APIREQUEST' => 'true', + ], + ]; if ($user === 'admin') { $options['auth'] = $this->adminUser; @@ -309,10 +321,10 @@ trait Sharing { PHPUnit_Framework_Assert::assertEquals(False, $this->isFieldInResponse('share_with', "$user")); } - public function isUserOrGroupInSharedData($userOrGroup){ + public function isUserOrGroupInSharedData($userOrGroup, $permissions = null){ $data = $this->response->xml()->data[0]; foreach($data as $element) { - if ($element->share_with == $userOrGroup){ + if ($element->share_with == $userOrGroup && ($permissions === null || $permissions == $element->permissions)){ return True; } } @@ -320,13 +332,13 @@ trait Sharing { } /** - * @Given /^file "([^"]*)" of user "([^"]*)" is shared with user "([^"]*)"$/ + * @Given /^(file|folder|entry) "([^"]*)" of user "([^"]*)" is shared with user "([^"]*)"( with permissions ([\d]*))?$/ * * @param string $filepath * @param string $user1 * @param string $user2 */ - public function assureFileIsShared($filepath, $user1, $user2){ + public function assureFileIsShared($entry, $filepath, $user1, $user2, $withPerms = null, $permissions = null){ $fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares" . "?path=$filepath"; $client = new Client(); $options = []; @@ -335,24 +347,27 @@ trait Sharing { } else { $options['auth'] = [$user1, $this->regularUser]; } + $options['headers'] = [ + 'OCS-APIREQUEST' => 'true', + ]; $this->response = $client->get($fullUrl, $options); - if ($this->isUserOrGroupInSharedData($user2)){ + if ($this->isUserOrGroupInSharedData($user2, $permissions)){ return; } else { - $this->createShare($user1, $filepath, 0, $user2, null, null, null); + $this->createShare($user1, $filepath, 0, $user2, null, null, $permissions); } $this->response = $client->get($fullUrl, $options); - PHPUnit_Framework_Assert::assertEquals(True, $this->isUserOrGroupInSharedData($user2)); + PHPUnit_Framework_Assert::assertEquals(True, $this->isUserOrGroupInSharedData($user2, $permissions)); } /** - * @Given /^file "([^"]*)" of user "([^"]*)" is shared with group "([^"]*)"$/ + * @Given /^(file|folder|entry) "([^"]*)" of user "([^"]*)" is shared with group "([^"]*)"( with permissions ([\d]*))?$/ * * @param string $filepath * @param string $user * @param string $group */ - public function assureFileIsSharedWithGroup($filepath, $user, $group){ + public function assureFileIsSharedWithGroup($entry, $filepath, $user, $group, $withPerms = null, $permissions = null){ $fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares" . "?path=$filepath"; $client = new Client(); $options = []; @@ -361,14 +376,17 @@ trait Sharing { } else { $options['auth'] = [$user, $this->regularUser]; } + $options['headers'] = [ + 'OCS-APIREQUEST' => 'true', + ]; $this->response = $client->get($fullUrl, $options); - if ($this->isUserOrGroupInSharedData($group)){ + if ($this->isUserOrGroupInSharedData($group, $permissions)){ return; } else { - $this->createShare($user, $filepath, 1, $group, null, null, null); + $this->createShare($user, $filepath, 1, $group, null, null, $permissions); } $this->response = $client->get($fullUrl, $options); - PHPUnit_Framework_Assert::assertEquals(True, $this->isUserOrGroupInSharedData($group)); + PHPUnit_Framework_Assert::assertEquals(True, $this->isUserOrGroupInSharedData($group, $permissions)); } /** @@ -448,6 +466,7 @@ trait Sharing { ], 'headers' => [ 'Content-Type' => 'application/json', + 'OCS-APIREQUEST' => 'true', ], ] ); @@ -465,6 +484,7 @@ trait Sharing { ], 'headers' => [ 'Content-Type' => 'application/json', + 'OCS-APIREQUEST' => 'true', ], ] ); diff --git a/build/integration/features/bootstrap/WebDav.php b/build/integration/features/bootstrap/WebDav.php index 71f938c7ec4..02f3e82a4c3 100644 --- a/build/integration/features/bootstrap/WebDav.php +++ b/build/integration/features/bootstrap/WebDav.php @@ -87,12 +87,12 @@ trait WebDav { } /** - * @Given /^User "([^"]*)" moved file "([^"]*)" to "([^"]*)"$/ + * @Given /^User "([^"]*)" moved (file|folder|entry) "([^"]*)" to "([^"]*)"$/ * @param string $user * @param string $fileSource * @param string $fileDestination */ - public function userMovedFile($user, $fileSource, $fileDestination){ + public function userMovedFile($user, $entry, $fileSource, $fileDestination){ $fullUrl = substr($this->baseUrl, 0, -4) . $this->davPath; $headers['Destination'] = $fullUrl . $fileDestination; $this->response = $this->makeDavRequest($user, "MOVE", $fileSource, $headers); @@ -100,12 +100,12 @@ trait WebDav { } /** - * @When /^User "([^"]*)" moves file "([^"]*)" to "([^"]*)"$/ + * @When /^User "([^"]*)" moves (file|folder|entry) "([^"]*)" to "([^"]*)"$/ * @param string $user * @param string $fileSource * @param string $fileDestination */ - public function userMovesFile($user, $fileSource, $fileDestination){ + public function userMovesFile($user, $entry, $fileSource, $fileDestination){ $fullUrl = substr($this->baseUrl, 0, -4) . $this->davPath; $headers['Destination'] = $fullUrl . $fileDestination; $this->response = $this->makeDavRequest($user, "MOVE", $fileSource, $headers); @@ -260,6 +260,32 @@ trait WebDav { } /** + * @Then /^as "([^"]*)" the (file|folder|entry) "([^"]*)" does not exist$/ + * @param string $user + * @param string $path + * @param \Behat\Gherkin\Node\TableNode|null $propertiesTable + */ + public function asTheFileOrFolderDoesNotExist($user, $entry, $path) { + $client = $this->getSabreClient($user); + $response = $client->request('HEAD', $this->makeSabrePath($path)); + if ($response['statusCode'] !== 404) { + throw new \Exception($entry . ' "' . $path . '" expected to not exist (status code ' . $response['statusCode'] . ', expected 404)'); + } + + return $response; + } + + /** + * @Then /^as "([^"]*)" the (file|folder|entry) "([^"]*)" exists$/ + * @param string $user + * @param string $path + * @param \Behat\Gherkin\Node\TableNode|null $propertiesTable + */ + public function asTheFileOrFolderExists($user, $entry, $path) { + $this->response = $this->listFolder($user, $path, 0); + } + + /** * @Then the single response should contain a property :key with value :value * @param string $key * @param string $expectedValue @@ -327,9 +353,25 @@ trait WebDav { } } - /*Returns the elements of a propfind, $folderDepth requires 1 to see elements without children*/ public function listFolder($user, $path, $folderDepth, $properties = null){ + $client = $this->getSabreClient($user); + if (!$properties) { + $properties = [ + '{DAV:}getetag' + ]; + } + + $response = $client->propfind($this->makeSabrePath($path), $properties, $folderDepth); + + return $response; + } + + public function makeSabrePath($path) { + return $this->encodePath($this->davPath . '/' . ltrim($path, '/')); + } + + public function getSabreClient($user) { $fullUrl = substr($this->baseUrl, 0, -4); $settings = array( @@ -343,17 +385,7 @@ trait WebDav { $settings['password'] = $this->regularUser; } - $client = new SClient($settings); - - if (!$properties) { - $properties = [ - '{DAV:}getetag' - ]; - } - - $response = $client->propfind($this->davPath . '/' . ltrim($path, '/'), $properties, $folderDepth); - - return $response; + return new SClient($settings); } /** @@ -494,6 +526,17 @@ trait WebDav { } /** + * URL encodes the given path but keeps the slashes + * + * @param string $path to encode + * @return string encoded path + */ + private function encodePath($path) { + // slashes need to stay + return str_replace('%2F', '/', rawurlencode($path)); + } + + /** * @When user :user favorites element :path */ public function userFavoritesElement($user, $path){ diff --git a/build/integration/features/provisioning-v1.feature b/build/integration/features/provisioning-v1.feature index d397a2852ad..38ed5213b19 100644 --- a/build/integration/features/provisioning-v1.feature +++ b/build/integration/features/provisioning-v1.feature @@ -282,7 +282,6 @@ Feature: provisioning Then the OCS status code should be "100" And the HTTP status code should be "200" And apps returned are - | admin_audit | | comments | | dav | | federatedfilesharing | diff --git a/build/integration/features/sharing-v1.feature b/build/integration/features/sharing-v1.feature index 16d04e81330..edd599da555 100644 --- a/build/integration/features/sharing-v1.feature +++ b/build/integration/features/sharing-v1.feature @@ -759,3 +759,162 @@ Feature: sharing | shareType | 0 | Then the OCS status code should be "997" And the HTTP status code should be "401" + + Scenario: Deleting a group share as user + Given As an "admin" + And user "user0" exists + And user "user1" exists + And group "group1" exists + And user "user1" belongs to group "group1" + And As an "user0" + And creating a share with + | path | welcome.txt | + | shareType | 1 | + | shareWith | group1 | + When As an "user1" + And Deleting last share + Then the OCS status code should be "404" + And the HTTP status code should be "200" + + Scenario: Merging shares for recipient when shared from outside with group and member + Given As an "admin" + And user "user0" exists + And user "user1" exists + And group "group1" exists + And user "user1" belongs to group "group1" + And user "user0" created a folder "merge-test-outside" + When folder "merge-test-outside" of user "user0" is shared with group "group1" + And folder "merge-test-outside" of user "user0" is shared with user "user1" + Then as "user1" the folder "merge-test-outside" exists + And as "user1" the folder "merge-test-outside (2)" does not exist + + Scenario: Merging shares for recipient when shared from outside with group and member with different permissions + Given As an "admin" + And user "user0" exists + And user "user1" exists + And group "group1" exists + And user "user1" belongs to group "group1" + And user "user0" created a folder "merge-test-outside-perms" + When folder "merge-test-outside-perms" of user "user0" is shared with group "group1" with permissions 1 + And folder "merge-test-outside-perms" of user "user0" is shared with user "user1" with permissions 31 + Then as "user1" gets properties of folder "merge-test-outside-perms" with + |{http://owncloud.org/ns}permissions| + And the single response should contain a property "{http://owncloud.org/ns}permissions" with value "SRDNVCK" + And as "user1" the folder "merge-test-outside-perms (2)" does not exist + + Scenario: Merging shares for recipient when shared from outside with two groups + Given As an "admin" + And user "user0" exists + And user "user1" exists + And group "group1" exists + And group "group2" exists + And user "user1" belongs to group "group1" + And user "user1" belongs to group "group2" + And user "user0" created a folder "merge-test-outside-twogroups" + When folder "merge-test-outside-twogroups" of user "user0" is shared with group "group1" + And folder "merge-test-outside-twogroups" of user "user0" is shared with group "group2" + Then as "user1" the folder "merge-test-outside-twogroups" exists + And as "user1" the folder "merge-test-outside-twogroups (2)" does not exist + + Scenario: Merging shares for recipient when shared from outside with two groups with different permissions + Given As an "admin" + And user "user0" exists + And user "user1" exists + And group "group1" exists + And group "group2" exists + And user "user1" belongs to group "group1" + And user "user1" belongs to group "group2" + And user "user0" created a folder "merge-test-outside-twogroups-perms" + When folder "merge-test-outside-twogroups-perms" of user "user0" is shared with group "group1" with permissions 1 + And folder "merge-test-outside-twogroups-perms" of user "user0" is shared with group "group2" with permissions 31 + Then as "user1" gets properties of folder "merge-test-outside-twogroups-perms" with + |{http://owncloud.org/ns}permissions| + And the single response should contain a property "{http://owncloud.org/ns}permissions" with value "SRDNVCK" + And as "user1" the folder "merge-test-outside-twogroups-perms (2)" does not exist + + Scenario: Merging shares for recipient when shared from outside with two groups and member + Given As an "admin" + And user "user0" exists + And user "user1" exists + And group "group1" exists + And group "group2" exists + And user "user1" belongs to group "group1" + And user "user1" belongs to group "group2" + And user "user0" created a folder "merge-test-outside-twogroups-member-perms" + When folder "merge-test-outside-twogroups-member-perms" of user "user0" is shared with group "group1" with permissions 1 + And folder "merge-test-outside-twogroups-member-perms" of user "user0" is shared with group "group2" with permissions 31 + And folder "merge-test-outside-twogroups-member-perms" of user "user0" is shared with user "user1" with permissions 1 + Then as "user1" gets properties of folder "merge-test-outside-twogroups-member-perms" with + |{http://owncloud.org/ns}permissions| + And the single response should contain a property "{http://owncloud.org/ns}permissions" with value "SRDNVCK" + And as "user1" the folder "merge-test-outside-twogroups-member-perms (2)" does not exist + + Scenario: Merging shares for recipient when shared from inside with group + Given As an "admin" + And user "user0" exists + And group "group1" exists + And user "user0" belongs to group "group1" + And user "user0" created a folder "merge-test-inside-group" + When folder "/merge-test-inside-group" of user "user0" is shared with group "group1" + Then as "user0" the folder "merge-test-inside-group" exists + And as "user0" the folder "merge-test-inside-group (2)" does not exist + + Scenario: Merging shares for recipient when shared from inside with two groups + Given As an "admin" + And user "user0" exists + And group "group1" exists + And group "group2" exists + And user "user0" belongs to group "group1" + And user "user0" belongs to group "group2" + And user "user0" created a folder "merge-test-inside-twogroups" + When folder "merge-test-inside-twogroups" of user "user0" is shared with group "group1" + And folder "merge-test-inside-twogroups" of user "user0" is shared with group "group2" + Then as "user0" the folder "merge-test-inside-twogroups" exists + And as "user0" the folder "merge-test-inside-twogroups (2)" does not exist + And as "user0" the folder "merge-test-inside-twogroups (3)" does not exist + + Scenario: Merging shares for recipient when shared from inside with group with less permissions + Given As an "admin" + And user "user0" exists + And group "group1" exists + And group "group2" exists + And user "user0" belongs to group "group1" + And user "user0" belongs to group "group2" + And user "user0" created a folder "merge-test-inside-twogroups-perms" + When folder "merge-test-inside-twogroups-perms" of user "user0" is shared with group "group1" + And folder "merge-test-inside-twogroups-perms" of user "user0" is shared with group "group2" + Then as "user0" gets properties of folder "merge-test-inside-twogroups-perms" with + |{http://owncloud.org/ns}permissions| + And the single response should contain a property "{http://owncloud.org/ns}permissions" with value "RDNVCK" + And as "user0" the folder "merge-test-inside-twogroups-perms (2)" does not exist + And as "user0" the folder "merge-test-inside-twogroups-perms (3)" does not exist + + Scenario: Merging shares for recipient when shared from outside with group then user and recipient renames in between + Given As an "admin" + And user "user0" exists + And user "user1" exists + And group "group1" exists + And user "user1" belongs to group "group1" + And user "user0" created a folder "merge-test-outside-groups-renamebeforesecondshare" + When folder "merge-test-outside-groups-renamebeforesecondshare" of user "user0" is shared with group "group1" + And User "user1" moved folder "/merge-test-outside-groups-renamebeforesecondshare" to "/merge-test-outside-groups-renamebeforesecondshare-renamed" + And folder "merge-test-outside-groups-renamebeforesecondshare" of user "user0" is shared with user "user1" + Then as "user1" gets properties of folder "merge-test-outside-groups-renamebeforesecondshare-renamed" with + |{http://owncloud.org/ns}permissions| + And the single response should contain a property "{http://owncloud.org/ns}permissions" with value "SRDNVCK" + And as "user1" the folder "merge-test-outside-groups-renamebeforesecondshare" does not exist + +# Scenario: Merging shares for recipient when shared from outside with user then group and recipient renames in between +# Given As an "admin" +# And user "user0" exists +# And user "user1" exists +# And group "group1" exists +# And user "user1" belongs to group "group1" +# And user "user0" created a folder "merge-test-outside-groups-renamebeforesecondshare" +# When folder "merge-test-outside-groups-renamebeforesecondshare" of user "user0" is shared with user "user1" +# And User "user1" moved folder "/merge-test-outside-groups-renamebeforesecondshare" to "/merge-test-outside-groups-renamebeforesecondshare-renamed" +# And folder "merge-test-outside-groups-renamebeforesecondshare" of user "user0" is shared with group "group1" +# Then as "user1" gets properties of folder "merge-test-outside-groups-renamebeforesecondshare-renamed" with +# |{http://owncloud.org/ns}permissions| +# And the single response should contain a property "{http://owncloud.org/ns}permissions" with value "SRDNVCK" +# And as "user1" the folder "merge-test-outside-groups-renamebeforesecondshare" does not exist diff --git a/core/Command/Db/ConvertType.php b/core/Command/Db/ConvertType.php index 6e15f9afbc7..ccf5c0685cb 100644 --- a/core/Command/Db/ConvertType.php +++ b/core/Command/Db/ConvertType.php @@ -61,7 +61,7 @@ class ConvertType extends Command { protected function configure() { $this ->setName('db:convert-type') - ->setDescription('Convert the ownCloud database to the newly configured one') + ->setDescription('Convert the Nextcloud database to the newly configured one') ->addArgument( 'type', InputArgument::REQUIRED, diff --git a/core/Command/Upgrade.php b/core/Command/Upgrade.php index 952034fd222..77d67534c6a 100644 --- a/core/Command/Upgrade.php +++ b/core/Command/Upgrade.php @@ -47,7 +47,7 @@ class Upgrade extends Command { const ERROR_SUCCESS = 0; const ERROR_NOT_INSTALLED = 1; const ERROR_MAINTENANCE_MODE = 2; - const ERROR_UP_TO_DATE = 3; + const ERROR_UP_TO_DATE = 0; const ERROR_INVALID_ARGUMENTS = 4; const ERROR_FAILURE = 5; @@ -299,8 +299,8 @@ class Upgrade extends Command { return self::ERROR_SUCCESS; } else if($this->config->getSystemValue('maintenance', false)) { - //Possible scenario: ownCloud core is updated but an app failed - $output->writeln('<warning>ownCloud is in maintenance mode</warning>'); + //Possible scenario: Nextcloud core is updated but an app failed + $output->writeln('<warning>Nextcloud is in maintenance mode</warning>'); $output->write('<comment>Maybe an upgrade is already in process. Please check the ' . 'logfile (data/nextcloud.log). If you want to re-run the ' . 'upgrade procedure, remove the "maintenance mode" from ' @@ -308,7 +308,7 @@ class Upgrade extends Command { , true); return self::ERROR_MAINTENANCE_MODE; } else { - $output->writeln('<info>ownCloud is already latest version</info>'); + $output->writeln('<info>Nextcloud is already latest version</info>'); return self::ERROR_UP_TO_DATE; } } diff --git a/core/css/apps.css b/core/css/apps.css index 3ffa7d87098..0ccdb8a0398 100644 --- a/core/css/apps.css +++ b/core/css/apps.css @@ -550,6 +550,7 @@ h2 { font-size: 20px; font-weight: 300; margin-bottom: 12px; + line-height: 140%; } h3 { font-size: 15px; diff --git a/core/css/header.css b/core/css/header.css index 6078008f91f..5a2b8009b15 100644 --- a/core/css/header.css +++ b/core/css/header.css @@ -151,7 +151,7 @@ max-height: 85%; margin-top: 0; padding-bottom: 10px; - background-color: rgba(0, 0, 0, .97); + background-color: rgba(255, 255, 255, .97); box-shadow: 0 1px 10px rgba(50, 50, 50, .7); border-radius: 3px; border-top-left-radius: 0; @@ -171,7 +171,7 @@ position: absolute; pointer-events: none; border-color: rgba(0, 0, 0, 0); - border-bottom-color: rgba(0, 0, 0, .97); + border-bottom-color: rgba(255, 255, 255, .97); border-width: 10px; margin-left: -10px; } @@ -204,25 +204,31 @@ padding-left: 0; width: 80px; text-align: center; - color: #fff; + color: #000; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } /* icon opacity and hover effect */ - #navigation a img, + #navigation a svg, #navigation a span { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; - opacity: .7; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + opacity: .5; } - #navigation a:hover img, - #navigation a:focus img, + #navigation a:hover svg, + #navigation a:focus svg, #navigation a:hover span, #navigation a:focus span, - #navigation a.active img, - #navigation a.active span { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; - opacity: 1; + #navigation a.active svg, + #navigation a.active span, + #apps-management a:hover svg, + #apps-management a:focus svg, + #apps-management a.active svg, + #apps-management a:hover span, + #apps-management a:focus span, + #apps-management a.active span { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)"; + opacity: .75; } #navigation .app-icon { @@ -234,12 +240,15 @@ /* Apps management */ #apps-management { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - opacity: .6; min-height: initial; height: initial; margin: 0; } +#apps-management a svg, +#apps-management a span { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + opacity: .3; +} /* loading feedback for apps */ @@ -252,8 +261,8 @@ height: 32px; } #navigation .app-loading .app-icon { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)"; - opacity: .1; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + opacity: 0; } #apps { @@ -351,8 +360,8 @@ height: 40px; color: #000; padding: 4px 12px 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; - opacity: .7; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + opacity: .5; box-sizing: border-box; } #expanddiv a img { @@ -363,8 +372,8 @@ #expanddiv a:focus, #expanddiv a:active, #expanddiv a.active { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; - opacity: 1; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)"; + opacity: .75; } /* do not show display name when profile picture is present */ diff --git a/core/css/inputs.css b/core/css/inputs.css index b58310a5c58..ebde986d584 100644 --- a/core/css/inputs.css +++ b/core/css/inputs.css @@ -310,3 +310,17 @@ input:disabled+label, input:disabled:hover+label, input:disabled:focus+label { background-color: #00a2e9; color: #bbb; } + +@keyframes shake { + 0% { transform: translate(-5px, 0); } + 20% { transform: translate(5px, 0); } + 40% { transform: translate(-5px, 0); } + 60% { transform: translate(5px, 0); } + 80% { transform: translate(-5px, 0); } + 100% { transform: translate(5px, 0); } +} +.shake { + animation-name: shake; + animation-duration: .3s; + animation-timing-function: ease-out; +} diff --git a/core/css/styles.css b/core/css/styles.css index a8e632c5944..7f4f7896c94 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -242,7 +242,7 @@ a.two-factor-cancel { } #body-login .update h2 { - margin: 12px 0 20px; + margin: 0 0 20px; } #body-login .update a { diff --git a/core/css/update.css b/core/css/update.css index b1e086af3fd..12cda3d5bbd 100644 --- a/core/css/update.css +++ b/core/css/update.css @@ -4,6 +4,12 @@ background-size: 32px; } +#update-progress-message-error, +#update-progress-message-warnings { + font-weight: 600; + margin-bottom: 10px; +} + #update-progress-message { margin-bottom: 10px; } @@ -11,6 +17,7 @@ .update-show-detailed { padding: 13px; display: block; + opacity: .75; } #body-login .update a.update-show-detailed { @@ -23,4 +30,4 @@ #body-login .warning.hidden { display: none; -}
\ No newline at end of file +} diff --git a/core/js/apps.js b/core/js/apps.js index d8f4bfdf1c5..a2d3460c907 100644 --- a/core/js/apps.js +++ b/core/js/apps.js @@ -27,9 +27,9 @@ */ exports.Apps.showAppSidebar = function($el) { var $appSidebar = $el || $('#app-sidebar'); - $appSidebar.removeClass('disappear'); - $('#app-content').addClass('with-app-sidebar').trigger(new $.Event('appresized')); - + $appSidebar.removeClass('disappear') + .show('slide', { direction: 'right' }, 200); + $('#app-content').addClass('with-app-sidebar', 200).trigger(new $.Event('appresized')); }; /** @@ -40,8 +40,11 @@ */ exports.Apps.hideAppSidebar = function($el) { var $appSidebar = $el || $('#app-sidebar'); - $appSidebar.addClass('disappear'); - $('#app-content').removeClass('with-app-sidebar').trigger(new $.Event('appresized')); + $appSidebar.hide('slide', { direction: 'right' }, 100, + function() { + $appSidebar.addClass('disappear'); + }); + $('#app-content').removeClass('with-app-sidebar', 100).trigger(new $.Event('appresized')); }; /** diff --git a/core/js/shareitemmodel.js b/core/js/shareitemmodel.js index 8ea0bf28b38..00c1212fa79 100644 --- a/core/js/shareitemmodel.js +++ b/core/js/shareitemmodel.js @@ -598,6 +598,33 @@ } }, + /** + * Group reshares into a single super share element. + * Does this by finding the most precise share and + * combines the permissions to be the most permissive. + * + * @param {Array} reshares + * @return {Object} reshare + */ + _groupReshares: function(reshares) { + if (!reshares || !reshares.length) { + return false; + } + + var superShare = reshares.shift(); + var combinedPermissions = superShare.permissions; + _.each(reshares, function(reshare) { + // use share have higher priority than group share + if (reshare.share_type === OC.Share.SHARE_TYPE_USER && superShare.share_type === OC.Share.SHARE_TYPE_GROUP) { + superShare = reshare; + } + combinedPermissions |= reshare.permissions; + }); + + superShare.permissions = combinedPermissions; + return superShare; + }, + fetch: function() { var model = this; this.trigger('request', this); @@ -615,7 +642,7 @@ var reshare = false; if (data2[0].ocs.data.length) { - reshare = data2[0].ocs.data[0]; + reshare = model._groupReshares(data2[0].ocs.data); } model.set(model.parse({ diff --git a/core/js/tests/specs/appsSpec.js b/core/js/tests/specs/appsSpec.js index 536d41c7f10..c3352e3e4a9 100644 --- a/core/js/tests/specs/appsSpec.js +++ b/core/js/tests/specs/appsSpec.js @@ -23,6 +23,10 @@ describe('Apps base tests', function() { describe('Sidebar utility functions', function() { beforeEach(function() { $('#testArea').append('<div id="app-content">Content</div><div id="app-sidebar">The sidebar</div>'); + jQuery.fx.off = true; + }); + afterEach(function() { + jQuery.fx.off = false; }); it('shows sidebar', function() { var $el = $('#app-sidebar'); diff --git a/core/js/tests/specs/shareitemmodelSpec.js b/core/js/tests/specs/shareitemmodelSpec.js index 8c9560d2646..9d9001dc9e8 100644 --- a/core/js/tests/specs/shareitemmodelSpec.js +++ b/core/js/tests/specs/shareitemmodelSpec.js @@ -181,6 +181,48 @@ describe('OC.Share.ShareItemModel', function() { // TODO: check more attributes }); + it('groups reshare info into a single item', function() { + /* jshint camelcase: false */ + fetchReshareDeferred.resolve(makeOcsResponse([ + { + id: '1', + share_type: OC.Share.SHARE_TYPE_USER, + uid_owner: 'owner', + displayname_owner: 'Owner', + share_with: 'root', + permissions: 1 + }, + { + id: '2', + share_type: OC.Share.SHARE_TYPE_GROUP, + uid_owner: 'owner', + displayname_owner: 'Owner', + share_with: 'group1', + permissions: 15 + }, + { + id: '3', + share_type: OC.Share.SHARE_TYPE_GROUP, + uid_owner: 'owner', + displayname_owner: 'Owner', + share_with: 'group1', + permissions: 17 + } + ])); + fetchSharesDeferred.resolve(makeOcsResponse([])); + + OC.currentUser = 'root'; + + model.fetch(); + + var reshare = model.get('reshare'); + // max permissions + expect(reshare.permissions).toEqual(31); + // user share has higher priority + expect(reshare.share_type).toEqual(OC.Share.SHARE_TYPE_USER); + expect(reshare.share_with).toEqual('root'); + expect(reshare.id).toEqual('1'); + }); it('does not parse link share when for a different file', function() { /* jshint camelcase: false */ fetchReshareDeferred.resolve(makeOcsResponse([])); diff --git a/core/js/update.js b/core/js/update.js index e692a7312b8..32cf2ce5ecc 100644 --- a/core/js/update.js +++ b/core/js/update.js @@ -13,7 +13,7 @@ _started : false, /** - * Start the upgrade process. + * Start the update process. * * @param $el progress list element */ @@ -31,12 +31,12 @@ var self = this; $(window).on('beforeunload.inprogress', function () { - return t('core', 'The upgrade is in progress, leaving this page might interrupt the process in some environments.'); + return t('core', 'The update is in progress, leaving this page might interrupt the process in some environments.'); }); $('#update-progress-title').html(t( 'core', - 'Updating to {version}', { + 'Update to {version}', { version: options.version }) ); @@ -91,17 +91,15 @@ if (hasWarnings) { $el.find('.update-show-detailed').before( - $('<span>') - .append('<br />') - .append(t('core', 'The update was successful. There were warnings.')) + $('<input type="button" class="update-continue" value="'+t('core', 'Continue to Nextcloud')+'">').on('click', function() { + window.location.reload(); + }) ); - var message = t('core', 'Please reload the page.'); - $('<span>').append(message).append('<br />').appendTo($el); } else { // FIXME: use product name - $('<span>') - .append(t('core', 'The update was successful. Redirecting you to Nextcloud now.')) - .appendTo($el); + $el.find('.update-show-detailed').before( + $('<p>'+t('core', 'The update was successful. Redirecting you to Nextcloud now.')+'</p>') + ); setTimeout(function () { OC.redirect(OC.webroot + '/'); }, 3000); @@ -127,7 +125,7 @@ .append(message) .append($('<br>')); }, - + setErrorMessage: function (message) { $('#update-progress-message-error') .show() diff --git a/core/l10n/ca.js b/core/l10n/ca.js index a3a0f6761ad..65fc867d2ca 100644 --- a/core/l10n/ca.js +++ b/core/l10n/ca.js @@ -167,7 +167,6 @@ OC.L10N.register( "Hello {name}" : "Hola {name}", "_download %n file_::_download %n files_" : ["descarregar l'arxiu %n","descarregar arxius %n "], "Please reload the page." : "Carregueu la pàgina de nou.", - "The update was successful. There were warnings." : "La actualització ha estat exitosa. Hi ha alertes.", "Searching other places" : "Buscant altres ubicacions", "Personal" : "Personal", "Users" : "Usuaris", diff --git a/core/l10n/ca.json b/core/l10n/ca.json index 45c8a138ef4..2495e5baad1 100644 --- a/core/l10n/ca.json +++ b/core/l10n/ca.json @@ -165,7 +165,6 @@ "Hello {name}" : "Hola {name}", "_download %n file_::_download %n files_" : ["descarregar l'arxiu %n","descarregar arxius %n "], "Please reload the page." : "Carregueu la pàgina de nou.", - "The update was successful. There were warnings." : "La actualització ha estat exitosa. Hi ha alertes.", "Searching other places" : "Buscant altres ubicacions", "Personal" : "Personal", "Users" : "Usuaris", diff --git a/core/l10n/cs_CZ.js b/core/l10n/cs_CZ.js index 732d842b27f..9ce8dbb58b4 100644 --- a/core/l10n/cs_CZ.js +++ b/core/l10n/cs_CZ.js @@ -218,13 +218,10 @@ OC.L10N.register( "Hello {name}" : "Vítej, {name}", "new" : "nový", "_download %n file_::_download %n files_" : ["stáhnout %n soubor","stáhnout %n soubory","stáhnout %n souborů"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Probíhá aktualizace, opuštění této stránky může v některých prostředích přerušit proces.", - "Updating to {version}" : "Aktualizace na {version}", "An error occurred." : "Došlo k chybě.", "Please reload the page." : "Načtěte stránku znovu, prosím.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Aktualizace nebyla úspěšná. Pro více informací si <a href=\"{url}\">přečtěte komentáře ve fóru</a> pojednávající o tomto problému.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Aktualizace byla neúspěšná. Nahlaste prosím problém <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">komunitě Nextcloudu</a>", - "The update was successful. There were warnings." : "Aktualizace byla úspěšná. Zachycen výskyt varování.", "The update was successful. Redirecting you to Nextcloud now." : "Aktualizace byla úspěšná. Probíhá přesměrování na Nexcloud.", "Searching other places" : "Prohledávání ostatních umístění", "No search results in other folders" : "V ostatních adresářích nebylo nic nalezeno", diff --git a/core/l10n/cs_CZ.json b/core/l10n/cs_CZ.json index a50984fe95a..d671415cfde 100644 --- a/core/l10n/cs_CZ.json +++ b/core/l10n/cs_CZ.json @@ -216,13 +216,10 @@ "Hello {name}" : "Vítej, {name}", "new" : "nový", "_download %n file_::_download %n files_" : ["stáhnout %n soubor","stáhnout %n soubory","stáhnout %n souborů"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Probíhá aktualizace, opuštění této stránky může v některých prostředích přerušit proces.", - "Updating to {version}" : "Aktualizace na {version}", "An error occurred." : "Došlo k chybě.", "Please reload the page." : "Načtěte stránku znovu, prosím.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Aktualizace nebyla úspěšná. Pro více informací si <a href=\"{url}\">přečtěte komentáře ve fóru</a> pojednávající o tomto problému.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Aktualizace byla neúspěšná. Nahlaste prosím problém <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">komunitě Nextcloudu</a>", - "The update was successful. There were warnings." : "Aktualizace byla úspěšná. Zachycen výskyt varování.", "The update was successful. Redirecting you to Nextcloud now." : "Aktualizace byla úspěšná. Probíhá přesměrování na Nexcloud.", "Searching other places" : "Prohledávání ostatních umístění", "No search results in other folders" : "V ostatních adresářích nebylo nic nalezeno", diff --git a/core/l10n/da.js b/core/l10n/da.js index 43d12a76761..112082f94aa 100644 --- a/core/l10n/da.js +++ b/core/l10n/da.js @@ -205,13 +205,10 @@ OC.L10N.register( "Hello {name}" : "Hej {name}", "new" : "ny", "_download %n file_::_download %n files_" : ["hent %n fil","hent %n filer"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Opgraderingen er i gang, forlader du denne side kan det afbryde processen.", - "Updating to {version}" : "Opdaterer til {version}", "An error occurred." : "Der opstod en fejl.", "Please reload the page." : "Genindlæs venligst siden", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Opdateringen blev ikke udført korrekt. For mere information <a href=\"{url}\">tjek vores indlæg på forumet</a>, som dækker dette problem.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Opdateringen blev ikke udført korrekt. Rapporter venligst problemet til <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud fællesskabet</a>.", - "The update was successful. There were warnings." : "Opdateringen blev gennemført. Der fremkom advarsler.", "The update was successful. Redirecting you to Nextcloud now." : "Opdateringen blev udført korrekt. Du bliver nu viderestillet til Nextcloud.", "Searching other places" : "Søger på andre steder", "No search results in other folders" : "Søgning gav ingen resultater in andre mapper", diff --git a/core/l10n/da.json b/core/l10n/da.json index 52df363c387..346712a15c0 100644 --- a/core/l10n/da.json +++ b/core/l10n/da.json @@ -203,13 +203,10 @@ "Hello {name}" : "Hej {name}", "new" : "ny", "_download %n file_::_download %n files_" : ["hent %n fil","hent %n filer"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Opgraderingen er i gang, forlader du denne side kan det afbryde processen.", - "Updating to {version}" : "Opdaterer til {version}", "An error occurred." : "Der opstod en fejl.", "Please reload the page." : "Genindlæs venligst siden", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Opdateringen blev ikke udført korrekt. For mere information <a href=\"{url}\">tjek vores indlæg på forumet</a>, som dækker dette problem.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Opdateringen blev ikke udført korrekt. Rapporter venligst problemet til <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud fællesskabet</a>.", - "The update was successful. There were warnings." : "Opdateringen blev gennemført. Der fremkom advarsler.", "The update was successful. Redirecting you to Nextcloud now." : "Opdateringen blev udført korrekt. Du bliver nu viderestillet til Nextcloud.", "Searching other places" : "Søger på andre steder", "No search results in other folders" : "Søgning gav ingen resultater in andre mapper", diff --git a/core/l10n/de.js b/core/l10n/de.js index 6c013e61abe..96e78831c24 100644 --- a/core/l10n/de.js +++ b/core/l10n/de.js @@ -205,13 +205,13 @@ OC.L10N.register( "({scope})" : "({scope})", "Delete" : "Löschen", "Rename" : "Umbenennen", - "Collaborative tags" : "Gemeinschaftliche Tags", + "Collaborative tags" : "Zusammenarbeits-Tags", "The object type is not specified." : "Der Objekttyp ist nicht angegeben.", "Enter new" : "Neuen eingeben", "Add" : "Hinzufügen", - "Edit tags" : "Schlagwörter bearbeiten", + "Edit tags" : "Tags bearbeiten", "Error loading dialog template: {error}" : "Fehler beim Laden der Dialogvorlage: {error}", - "No tags selected for deletion." : "Es wurden keine Schlagwörter zum Löschen ausgewählt.", + "No tags selected for deletion." : "Keine Tags zum Löschen ausgewählt.", "unknown text" : "Unbekannter Text", "Hello world!" : "Hallo Welt!", "sunny" : "sonnig", @@ -219,13 +219,10 @@ OC.L10N.register( "Hello {name}" : "Hallo {name}", "new" : "neu", "_download %n file_::_download %n files_" : ["Lade %n Datei herunter","Lade %n Dateien herunter"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Das Update läuft gerade. Das Verlassen dieser Seite könnte den Update Prozess in einigen Umgebungen unterbrechen.", - "Updating to {version}" : "Aktualisierung auf {version}", "An error occurred." : "Es ist ein Fehler aufgetreten.", "Please reload the page." : "Bitte lade die Seite neu.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Das Update war nicht erfolgreich. Für weitere Informationen <a href=\"{url}\"> schaue bitte in unser Forum </a> um das Problem zu lösen.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Das Update ist fehlgeschlagen. Bitte melde dieses Problem an die <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud Community</a>.", - "The update was successful. There were warnings." : "Das Update war erfolgreich. Warnungen wurden ausgegeben.", "The update was successful. Redirecting you to Nextcloud now." : "Das Update war erfolgreich. Weiterleitung zu Nextcloud.", "Searching other places" : "Andere Orte durchsuchen", "No search results in other folders" : "Keine Suchergebnisse in anderen Ordnern", @@ -255,7 +252,7 @@ OC.L10N.register( "File: %s" : "Datei: %s", "Line: %s" : "Zeile: %s", "Trace" : "Spur", - "Security warning" : "Sicherheitshinweis", + "Security warning" : "Sicherheitswarnung", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar, weil die .htaccess-Datei nicht funktioniert.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Informationen zum richtigen Konfigurieren deines Servers kannst du der <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">Dokumentation</a> entnehmen.", "Create an <strong>admin account</strong>" : "<strong>Administrator-Konto</strong> anlegen", @@ -297,7 +294,7 @@ OC.L10N.register( "New password" : "Neues Passwort", "New Password" : "Neues Passwort", "Reset password" : "Passwort zurücksetzen", - "This Nextcloud instance is currently in single user mode." : "Diese ownClound-Instanz befindet sich derzeit im Einzelbenutzermodus.", + "This Nextcloud instance is currently in single user mode." : "Diese Nextcloud-Instanz befindet sich derzeit im Einzelbenutzermodus.", "This means only administrators can use the instance." : "Dies bedeutet, dass diese Instanz nur von Administratoren genutzt werden kann.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktiere deinen Systemadministrator, wenn diese Meldung dauerhaft oder unerwartet erscheint.", "Thank you for your patience." : "Vielen Dank für Ihre Geduld.", diff --git a/core/l10n/de.json b/core/l10n/de.json index 04e099ff746..c5373cb7ebc 100644 --- a/core/l10n/de.json +++ b/core/l10n/de.json @@ -203,13 +203,13 @@ "({scope})" : "({scope})", "Delete" : "Löschen", "Rename" : "Umbenennen", - "Collaborative tags" : "Gemeinschaftliche Tags", + "Collaborative tags" : "Zusammenarbeits-Tags", "The object type is not specified." : "Der Objekttyp ist nicht angegeben.", "Enter new" : "Neuen eingeben", "Add" : "Hinzufügen", - "Edit tags" : "Schlagwörter bearbeiten", + "Edit tags" : "Tags bearbeiten", "Error loading dialog template: {error}" : "Fehler beim Laden der Dialogvorlage: {error}", - "No tags selected for deletion." : "Es wurden keine Schlagwörter zum Löschen ausgewählt.", + "No tags selected for deletion." : "Keine Tags zum Löschen ausgewählt.", "unknown text" : "Unbekannter Text", "Hello world!" : "Hallo Welt!", "sunny" : "sonnig", @@ -217,13 +217,10 @@ "Hello {name}" : "Hallo {name}", "new" : "neu", "_download %n file_::_download %n files_" : ["Lade %n Datei herunter","Lade %n Dateien herunter"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Das Update läuft gerade. Das Verlassen dieser Seite könnte den Update Prozess in einigen Umgebungen unterbrechen.", - "Updating to {version}" : "Aktualisierung auf {version}", "An error occurred." : "Es ist ein Fehler aufgetreten.", "Please reload the page." : "Bitte lade die Seite neu.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Das Update war nicht erfolgreich. Für weitere Informationen <a href=\"{url}\"> schaue bitte in unser Forum </a> um das Problem zu lösen.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Das Update ist fehlgeschlagen. Bitte melde dieses Problem an die <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud Community</a>.", - "The update was successful. There were warnings." : "Das Update war erfolgreich. Warnungen wurden ausgegeben.", "The update was successful. Redirecting you to Nextcloud now." : "Das Update war erfolgreich. Weiterleitung zu Nextcloud.", "Searching other places" : "Andere Orte durchsuchen", "No search results in other folders" : "Keine Suchergebnisse in anderen Ordnern", @@ -253,7 +250,7 @@ "File: %s" : "Datei: %s", "Line: %s" : "Zeile: %s", "Trace" : "Spur", - "Security warning" : "Sicherheitshinweis", + "Security warning" : "Sicherheitswarnung", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar, weil die .htaccess-Datei nicht funktioniert.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Informationen zum richtigen Konfigurieren deines Servers kannst du der <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">Dokumentation</a> entnehmen.", "Create an <strong>admin account</strong>" : "<strong>Administrator-Konto</strong> anlegen", @@ -295,7 +292,7 @@ "New password" : "Neues Passwort", "New Password" : "Neues Passwort", "Reset password" : "Passwort zurücksetzen", - "This Nextcloud instance is currently in single user mode." : "Diese ownClound-Instanz befindet sich derzeit im Einzelbenutzermodus.", + "This Nextcloud instance is currently in single user mode." : "Diese Nextcloud-Instanz befindet sich derzeit im Einzelbenutzermodus.", "This means only administrators can use the instance." : "Dies bedeutet, dass diese Instanz nur von Administratoren genutzt werden kann.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktiere deinen Systemadministrator, wenn diese Meldung dauerhaft oder unerwartet erscheint.", "Thank you for your patience." : "Vielen Dank für Ihre Geduld.", diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js index d631acbd2ee..bb6d29e0252 100644 --- a/core/l10n/de_DE.js +++ b/core/l10n/de_DE.js @@ -129,14 +129,14 @@ OC.L10N.register( "So-so password" : "Passables Passwort", "Good password" : "Gutes Passwort", "Strong password" : "Starkes Passwort", - "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Ihr Webserver ist noch nicht hinreichend für Datei-Synchronisation konfiguriert, weil die WebDAV-Schnittstelle vermutlich defekt ist.", - "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Dein Webserver ist nicht richtig konfiguriert um \"{url}\" aufzulösen. Weitere Informationen hierzu finden Sie in unserer a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Dokumentation</a>.", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Ihr Webserver ist noch nicht hinreichend für Datei-Synchronisation konfiguriert. Die WebDAV-Schnittstelle ist vermutlich defekt.", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Ihr Webserver ist nicht richtig konfiguriert um \"{url}\" aufzulösen. Weitere Informationen hierzu finden Sie in unserer a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Dokumentation</a>.", "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Dieser Server hat keine funktionierende Internetverbindung: Mehrere Ziele konnten nicht erreicht werden. Dies bedeutet, dass einige Funktionen, wie das Einhängen exernen Speichers, Benachrichtigungen über Updates oder die Installation von Drittanbieter-Apps nicht funktionieren. \nDer Zugriff auf entfernte Dateien und das Senden von E-Mail-Benachrichtigungen wird wahrscheinlich ebenfalls nicht funktionieren.\nEs wird empfohlen, die Internet-Verbindung für diesen Server zu aktivieren, wenn Sie alle Funktionen nutzen möchten.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Es wurde kein PHP Memory Cache konfiguriert. Konfigurieren Sie zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen finden Sie in unserer <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Dokumentation</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom ist von PHP nicht lesbar, wovon aus Sicherheitsgründen dringend abgeraten wird. Weitere Informationen hierzu finden Sie in unserer <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Dokumentation</a>.", - "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Sie verwenden im Moment PHP {version}. Wir empfehlen ein Upgrade ihrer PHP Version, um die <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">Geschwindigkeits- und Sicherheitsupdates zu nutzen, welche von der PHP Gruppe bereitgestellt werden</a>, sobald diese ihre Distribution diese unterstützt.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Sie verwenden im Moment PHP {version}. Wir empfehlen ein Upgrade ihrer PHP Version, um die <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">Geschwindigkeits- und Sicherheitsupdates zu nutzen, welche von der PHP Gruppe bereitgestellt werden</a>, sobald ihre Distribution diese unterstützt.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Der REVERSE PROXY HEADER ist falsch, oder Sie greifen auf die Nextcloud von einem vertrauenswürdigen Proxy zu. Wenn Sie auf die Nextcloud nicht von einem vertrauenswürdigen Proxy zugreifen, dann liegt ein Sicherheitsproblem vor, das einem Angreifer ermöglichen könnte, die für Nextcloud sichtbare IP-Adresse zu fäschen. Weitere Informationen hierzu finden Sie in der <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Dokumentation</a>.", - "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcache ist als verteilter Cache konfiguriert, aber das falsche PHP Modul \"memcache\" ist installiert. \\OC\\Memcache\\Memcached unterstützt nud \"memcached\" und nicht \"memcache\". Siehe <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached Wiki über beide Module</a>.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcache ist als verteilter Cache konfiguriert, aber das falsche PHP Modul \"memcache\" ist installiert. \\OC\\Memcache\\Memcached unterstützt nur \"memcached\" und nicht \"memcache\". Siehe <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached Wiki über beide Module</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Manche Dateien haben die Integritätsprüfung nicht bestanden. Weitere Informationen um den Fehler zu behen finden Sie in unserer <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Dokumentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste der ungültigen Dateien...</a> / <a href=\"{rescanEndpoint}\">Erneut scannen…</a>)", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Ihren Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Sie es aus dem Document-Root-Verzeichnis des Webservers herausverschieben.", @@ -151,14 +151,14 @@ OC.L10N.register( "Error setting expiration date" : "Fehler beim Setzen des Ablaufdatums", "The public link will expire no later than {days} days after it is created" : "Der öffentliche Link wird spätestens {days} Tage nach seiner Erstellung ablaufen", "Set expiration date" : "Ein Ablaufdatum setzen", - "Expiration" : "Ablaufdatum", + "Expiration" : "Ablauf", "Expiration date" : "Ablaufdatum", "Choose a password for the public link" : "Wählen Sie ein Passwort für den öffentlichen Link", "Copied!" : "Kopiert!", "Not supported!" : "Nicht unterstützt!", "Press ⌘-C to copy." : "Zum Kopieren ⌘-C drücken.", "Press Ctrl-C to copy." : "Zum Kopieren Strg-C drücken.", - "Resharing is not allowed" : "Das Weiterverteilen ist nicht erlaubt", + "Resharing is not allowed" : "Das Weiterteilen ist nicht erlaubt", "Share link" : "Link teilen", "Link" : "Link", "Password protect" : "Passwortschutz", @@ -179,7 +179,7 @@ OC.L10N.register( "can share" : "kann teilen", "can edit" : "kann bearbeiten", "create" : "erstellen", - "change" : "Ändern", + "change" : "ändern", "delete" : "löschen", "access control" : "Zugriffskontrolle", "Could not unshare" : "Freigabe konnte nicht aufgehoben werden", @@ -205,7 +205,7 @@ OC.L10N.register( "({scope})" : "({scope})", "Delete" : "Löschen", "Rename" : "Umbenennen", - "Collaborative tags" : "Gemeinschaftliche Tags", + "Collaborative tags" : "Zusammenarbeits-Tags", "The object type is not specified." : "Der Objekttyp ist nicht angegeben.", "Enter new" : "Neuen eingeben", "Add" : "Hinzufügen", @@ -219,13 +219,10 @@ OC.L10N.register( "Hello {name}" : "Hallo {name}", "new" : "Neu", "_download %n file_::_download %n files_" : ["Lade %n Datei herunter","Lade %n Dateien herunter"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Das Upgrade läuft noch , diese Seite zu verlassen könnte das Verfahren in einigen Umgebungen unterbrechen.", - "Updating to {version}" : "Aktualisierung auf {version}", "An error occurred." : "Ein Fehler ist aufgetreten.", - "Please reload the page." : "Bitte laden Sie die Seite neu.", + "Please reload the page." : "Bitte die Seite neu laden.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Das Update war nicht erfolgreich. Für mehr Informationen <a href=\"{url}\">lesen Sie unseren Forenbeitrag</a> zu diesem Thema.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Das Update ist fehlgeschlagen. Bitte melden Sie dieses Problem an die <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud Community</a>.", - "The update was successful. There were warnings." : "Das Update war erfolgreich. Warnungen wurden ausgegeben.", "The update was successful. Redirecting you to Nextcloud now." : "Das Update war erfolgreich. Sie werden nun zu Nextcloud weitergeleitet.", "Searching other places" : "Andere Orte durchsuchen", "No search results in other folders" : "Keine Suchergebnisse in anderen Ordnern", @@ -245,7 +242,7 @@ OC.L10N.register( "Internal Server Error" : "Interner Serverfehler", "The server encountered an internal error and was unable to complete your request." : "Der Server hat einen internen Fehler und konnte Ihre Anfrage nicht vervollständigen.", "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Bitte wenden Sie sich an den Serveradministrator, wenn dieser Fehler mehrfach auftritt, geben Sie bitte die, unten stehenden, technischen Details in Ihrem Bericht mit an.", - "More details can be found in the server log." : "Weitere Details können im Serverprotokoll gefunden werden.", + "More details can be found in the server log." : "Weitere Details können im Server-Protokoll gefunden werden.", "Technical details" : "Technische Details", "Remote Address: %s" : "Entfernte Adresse: %s", "Request ID: %s" : "Anfragekennung: %s", @@ -310,7 +307,7 @@ OC.L10N.register( "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Bitte kontaktieren Sie Ihren Administrator. Wenn Sie Administrator dieser Instanz sind, konfigurieren Sie bitte die „trusted_domain“-Einstellung in config/config.php. Eine Beispielkonfiguration wird unter config/config.sample.php bereitgestellt.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Wenn es Ihre Konfiguration zulässt, können Sie als Administrator gegebenenfalls den Button unten benutzen, um diese Domain als vertrauenswürdig einzustufen.", "Add \"%s\" as trusted domain" : "„%s“ als vertrauenswürdige Domain hinzufügen", - "App update required" : "App-Update notwendig", + "App update required" : "App-Aktualisierung notwendig", "%s will be updated to version %s" : "%s wird auf Version %s aktualisiert", "These apps will be updated:" : "Diese Apps werden aktualisiert:", "These incompatible apps will be disabled:" : "Diese inkompatiblen Apps werden deaktiviert:", @@ -318,8 +315,8 @@ OC.L10N.register( "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Stellen Sie vor dem Fortsetzen bitte sicher, dass die Datenbank, der Konfigurationsordner und der Datenordner gesichert wurden.", "Start update" : "Aktualisierung starten", "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Zur Vermeidung von Zeitüberschreitungen bei größeren Installationen können Sie stattdessen den folgenden Befehl in Ihrem Installationsverzeichnis ausführen:", - "Detailed logs" : "Detaillierte Fehlermeldungen", - "Update needed" : "Update erforderlich", + "Detailed logs" : "Detaillierte Protokollmeldungen", + "Update needed" : "Aktualisierung erforderlich", "Please use the command line updater because you have a big instance." : "Da Sie eine große Instanz von Nextcloud besitzen, wird die Benutzung des Aktualisierungsprogrammes über die Kommandozeile empfohlen.", "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Für weitere Hilfen, schauen Sie bitte in die <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Dokumentation</a>.", "This %s instance is currently in maintenance mode, which may take a while." : "Diese %s-Instanz befindet sich gerade im Wartungsmodus, was eine Weile dauern kann.", diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json index de15b2a8fff..1920f2370e3 100644 --- a/core/l10n/de_DE.json +++ b/core/l10n/de_DE.json @@ -127,14 +127,14 @@ "So-so password" : "Passables Passwort", "Good password" : "Gutes Passwort", "Strong password" : "Starkes Passwort", - "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Ihr Webserver ist noch nicht hinreichend für Datei-Synchronisation konfiguriert, weil die WebDAV-Schnittstelle vermutlich defekt ist.", - "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Dein Webserver ist nicht richtig konfiguriert um \"{url}\" aufzulösen. Weitere Informationen hierzu finden Sie in unserer a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Dokumentation</a>.", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Ihr Webserver ist noch nicht hinreichend für Datei-Synchronisation konfiguriert. Die WebDAV-Schnittstelle ist vermutlich defekt.", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Ihr Webserver ist nicht richtig konfiguriert um \"{url}\" aufzulösen. Weitere Informationen hierzu finden Sie in unserer a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Dokumentation</a>.", "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Dieser Server hat keine funktionierende Internetverbindung: Mehrere Ziele konnten nicht erreicht werden. Dies bedeutet, dass einige Funktionen, wie das Einhängen exernen Speichers, Benachrichtigungen über Updates oder die Installation von Drittanbieter-Apps nicht funktionieren. \nDer Zugriff auf entfernte Dateien und das Senden von E-Mail-Benachrichtigungen wird wahrscheinlich ebenfalls nicht funktionieren.\nEs wird empfohlen, die Internet-Verbindung für diesen Server zu aktivieren, wenn Sie alle Funktionen nutzen möchten.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Es wurde kein PHP Memory Cache konfiguriert. Konfigurieren Sie zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen finden Sie in unserer <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Dokumentation</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom ist von PHP nicht lesbar, wovon aus Sicherheitsgründen dringend abgeraten wird. Weitere Informationen hierzu finden Sie in unserer <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Dokumentation</a>.", - "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Sie verwenden im Moment PHP {version}. Wir empfehlen ein Upgrade ihrer PHP Version, um die <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">Geschwindigkeits- und Sicherheitsupdates zu nutzen, welche von der PHP Gruppe bereitgestellt werden</a>, sobald diese ihre Distribution diese unterstützt.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Sie verwenden im Moment PHP {version}. Wir empfehlen ein Upgrade ihrer PHP Version, um die <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">Geschwindigkeits- und Sicherheitsupdates zu nutzen, welche von der PHP Gruppe bereitgestellt werden</a>, sobald ihre Distribution diese unterstützt.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Der REVERSE PROXY HEADER ist falsch, oder Sie greifen auf die Nextcloud von einem vertrauenswürdigen Proxy zu. Wenn Sie auf die Nextcloud nicht von einem vertrauenswürdigen Proxy zugreifen, dann liegt ein Sicherheitsproblem vor, das einem Angreifer ermöglichen könnte, die für Nextcloud sichtbare IP-Adresse zu fäschen. Weitere Informationen hierzu finden Sie in der <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Dokumentation</a>.", - "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcache ist als verteilter Cache konfiguriert, aber das falsche PHP Modul \"memcache\" ist installiert. \\OC\\Memcache\\Memcached unterstützt nud \"memcached\" und nicht \"memcache\". Siehe <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached Wiki über beide Module</a>.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcache ist als verteilter Cache konfiguriert, aber das falsche PHP Modul \"memcache\" ist installiert. \\OC\\Memcache\\Memcached unterstützt nur \"memcached\" und nicht \"memcache\". Siehe <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached Wiki über beide Module</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Manche Dateien haben die Integritätsprüfung nicht bestanden. Weitere Informationen um den Fehler zu behen finden Sie in unserer <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Dokumentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste der ungültigen Dateien...</a> / <a href=\"{rescanEndpoint}\">Erneut scannen…</a>)", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Ihren Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Sie es aus dem Document-Root-Verzeichnis des Webservers herausverschieben.", @@ -149,14 +149,14 @@ "Error setting expiration date" : "Fehler beim Setzen des Ablaufdatums", "The public link will expire no later than {days} days after it is created" : "Der öffentliche Link wird spätestens {days} Tage nach seiner Erstellung ablaufen", "Set expiration date" : "Ein Ablaufdatum setzen", - "Expiration" : "Ablaufdatum", + "Expiration" : "Ablauf", "Expiration date" : "Ablaufdatum", "Choose a password for the public link" : "Wählen Sie ein Passwort für den öffentlichen Link", "Copied!" : "Kopiert!", "Not supported!" : "Nicht unterstützt!", "Press ⌘-C to copy." : "Zum Kopieren ⌘-C drücken.", "Press Ctrl-C to copy." : "Zum Kopieren Strg-C drücken.", - "Resharing is not allowed" : "Das Weiterverteilen ist nicht erlaubt", + "Resharing is not allowed" : "Das Weiterteilen ist nicht erlaubt", "Share link" : "Link teilen", "Link" : "Link", "Password protect" : "Passwortschutz", @@ -177,7 +177,7 @@ "can share" : "kann teilen", "can edit" : "kann bearbeiten", "create" : "erstellen", - "change" : "Ändern", + "change" : "ändern", "delete" : "löschen", "access control" : "Zugriffskontrolle", "Could not unshare" : "Freigabe konnte nicht aufgehoben werden", @@ -203,7 +203,7 @@ "({scope})" : "({scope})", "Delete" : "Löschen", "Rename" : "Umbenennen", - "Collaborative tags" : "Gemeinschaftliche Tags", + "Collaborative tags" : "Zusammenarbeits-Tags", "The object type is not specified." : "Der Objekttyp ist nicht angegeben.", "Enter new" : "Neuen eingeben", "Add" : "Hinzufügen", @@ -217,13 +217,10 @@ "Hello {name}" : "Hallo {name}", "new" : "Neu", "_download %n file_::_download %n files_" : ["Lade %n Datei herunter","Lade %n Dateien herunter"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Das Upgrade läuft noch , diese Seite zu verlassen könnte das Verfahren in einigen Umgebungen unterbrechen.", - "Updating to {version}" : "Aktualisierung auf {version}", "An error occurred." : "Ein Fehler ist aufgetreten.", - "Please reload the page." : "Bitte laden Sie die Seite neu.", + "Please reload the page." : "Bitte die Seite neu laden.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Das Update war nicht erfolgreich. Für mehr Informationen <a href=\"{url}\">lesen Sie unseren Forenbeitrag</a> zu diesem Thema.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Das Update ist fehlgeschlagen. Bitte melden Sie dieses Problem an die <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud Community</a>.", - "The update was successful. There were warnings." : "Das Update war erfolgreich. Warnungen wurden ausgegeben.", "The update was successful. Redirecting you to Nextcloud now." : "Das Update war erfolgreich. Sie werden nun zu Nextcloud weitergeleitet.", "Searching other places" : "Andere Orte durchsuchen", "No search results in other folders" : "Keine Suchergebnisse in anderen Ordnern", @@ -243,7 +240,7 @@ "Internal Server Error" : "Interner Serverfehler", "The server encountered an internal error and was unable to complete your request." : "Der Server hat einen internen Fehler und konnte Ihre Anfrage nicht vervollständigen.", "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Bitte wenden Sie sich an den Serveradministrator, wenn dieser Fehler mehrfach auftritt, geben Sie bitte die, unten stehenden, technischen Details in Ihrem Bericht mit an.", - "More details can be found in the server log." : "Weitere Details können im Serverprotokoll gefunden werden.", + "More details can be found in the server log." : "Weitere Details können im Server-Protokoll gefunden werden.", "Technical details" : "Technische Details", "Remote Address: %s" : "Entfernte Adresse: %s", "Request ID: %s" : "Anfragekennung: %s", @@ -308,7 +305,7 @@ "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Bitte kontaktieren Sie Ihren Administrator. Wenn Sie Administrator dieser Instanz sind, konfigurieren Sie bitte die „trusted_domain“-Einstellung in config/config.php. Eine Beispielkonfiguration wird unter config/config.sample.php bereitgestellt.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Wenn es Ihre Konfiguration zulässt, können Sie als Administrator gegebenenfalls den Button unten benutzen, um diese Domain als vertrauenswürdig einzustufen.", "Add \"%s\" as trusted domain" : "„%s“ als vertrauenswürdige Domain hinzufügen", - "App update required" : "App-Update notwendig", + "App update required" : "App-Aktualisierung notwendig", "%s will be updated to version %s" : "%s wird auf Version %s aktualisiert", "These apps will be updated:" : "Diese Apps werden aktualisiert:", "These incompatible apps will be disabled:" : "Diese inkompatiblen Apps werden deaktiviert:", @@ -316,8 +313,8 @@ "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Stellen Sie vor dem Fortsetzen bitte sicher, dass die Datenbank, der Konfigurationsordner und der Datenordner gesichert wurden.", "Start update" : "Aktualisierung starten", "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Zur Vermeidung von Zeitüberschreitungen bei größeren Installationen können Sie stattdessen den folgenden Befehl in Ihrem Installationsverzeichnis ausführen:", - "Detailed logs" : "Detaillierte Fehlermeldungen", - "Update needed" : "Update erforderlich", + "Detailed logs" : "Detaillierte Protokollmeldungen", + "Update needed" : "Aktualisierung erforderlich", "Please use the command line updater because you have a big instance." : "Da Sie eine große Instanz von Nextcloud besitzen, wird die Benutzung des Aktualisierungsprogrammes über die Kommandozeile empfohlen.", "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Für weitere Hilfen, schauen Sie bitte in die <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Dokumentation</a>.", "This %s instance is currently in maintenance mode, which may take a while." : "Diese %s-Instanz befindet sich gerade im Wartungsmodus, was eine Weile dauern kann.", diff --git a/core/l10n/el.js b/core/l10n/el.js index 955c2916aae..edfba6237b2 100644 --- a/core/l10n/el.js +++ b/core/l10n/el.js @@ -145,6 +145,7 @@ OC.L10N.register( "Send" : "Αποστολή", "Sending ..." : "Αποστολή...", "Email sent" : "Το Email απεστάλη ", + "Send link via email" : "Αποστολή συνδέσμου μέσω email", "Shared with you and the group {group} by {owner}" : "Διαμοιράστηκε με σας και με την ομάδα {group} του {owner}", "Shared with you by {owner}" : "Διαμοιράστηκε με σας από τον {owner}", "group" : "ομάδα", @@ -176,10 +177,8 @@ OC.L10N.register( "Hello {name}, the weather is {weather}" : "Γειά σου {name}, ο καιρός είναι {weather}", "Hello {name}" : "Γεια σου {name}", "_download %n file_::_download %n files_" : ["λήψη %n αρχείου","λήψη %n αρχείων"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Η αναβάθμιση είναι σε εξέλιξη, αν φύγετε από αυτή τη σελίδα μπορεί να διακοπεί η διαδικασία σε ορισμένα περιβάλλοντα χρήσης.", "An error occurred." : "Παρουσιάστηκε σφάλμα", "Please reload the page." : "Παρακαλώ επαναφορτώστε τη σελίδα.", - "The update was successful. There were warnings." : "Η ενημέρωση ήταν επιτυχής. Υπήρχαν προειδοποιήσεις.", "Searching other places" : "Έρευνα σε άλλα σημεία.", "No search results in other folders" : "Δεν υπάρχουν αποτελέσματα αναζήτησης σε άλλους φακέλους", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} αποτέλεσμα αναζήτησης σε άλλο φάκελο","{count} αποτελέσματα αναζήτησης σε άλλους φακέλους"], @@ -238,8 +237,10 @@ OC.L10N.register( "Server side authentication failed!" : "Η διαδικασία επικύρωσης απέτυχε από την πλευρά του διακομιστή!", "Please contact your administrator." : "Παρακαλώ επικοινωνήστε με τον διαχειριστή.", "Please try again or contact your administrator." : "Παρακαλώ δοκιμάστε ξανά ή επικοινωνήστε με τον διαχειριστή σας.", + "Username or email" : "Όνομα χρήστη ή email", "Log in" : "Είσοδος", "Wrong password. Reset it?" : "Λάθος Κωδικός. Επαναφορά;", + "Wrong password." : "Λανθασμένο συνθηματικό.", "Stay logged in" : "Μείνετε συνδεδεμένος", "Alternative Logins" : "Εναλλακτικές Συνδέσεις", "Use the following link to reset your password: {link}" : "Χρησιμοποιήστε τον ακόλουθο σύνδεσμο για να επανεκδόσετε τον κωδικό: {link}", @@ -262,6 +263,8 @@ OC.L10N.register( "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Παρακαλώ βεβαιωθείτε ότι έχουν ληψθεί αντίγραφα ασφαλείας της βάσης δεδομένων, του φακέλου ρυθμίσεων και του φακέλου δεδομένων πριν προχωρήσετε.", "Start update" : "Έναρξη ενημέρωσης", "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Για να αποφύγετε τη λήξη χρόνου με μεγαλύτερες εγκαταστάσεις, μπορείτε αντί αυτού να τρέξετε την ακόλουθη εντολή από τον κατάλογο αρχείων εφαρμογών:", + "Detailed logs" : "Λεπτομερές ιστορικό", + "Update needed" : "Απαιτείται ενημέρωση", "This %s instance is currently in maintenance mode, which may take a while." : "Αυτή %s η εγκατάσταση είναι σε κατάσταση συντήρησης, η οποία μπορεί να πάρει κάποιο χρόνο.", "This page will refresh itself when the %s instance is available again." : "Αυτή η σελίδα θα ανανεωθεί από μόνη της όταν η %s εγκατάσταση είναι διαθέσιμη ξανά." }, diff --git a/core/l10n/el.json b/core/l10n/el.json index 4df4fb4f44c..a1a0503bdc3 100644 --- a/core/l10n/el.json +++ b/core/l10n/el.json @@ -143,6 +143,7 @@ "Send" : "Αποστολή", "Sending ..." : "Αποστολή...", "Email sent" : "Το Email απεστάλη ", + "Send link via email" : "Αποστολή συνδέσμου μέσω email", "Shared with you and the group {group} by {owner}" : "Διαμοιράστηκε με σας και με την ομάδα {group} του {owner}", "Shared with you by {owner}" : "Διαμοιράστηκε με σας από τον {owner}", "group" : "ομάδα", @@ -174,10 +175,8 @@ "Hello {name}, the weather is {weather}" : "Γειά σου {name}, ο καιρός είναι {weather}", "Hello {name}" : "Γεια σου {name}", "_download %n file_::_download %n files_" : ["λήψη %n αρχείου","λήψη %n αρχείων"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Η αναβάθμιση είναι σε εξέλιξη, αν φύγετε από αυτή τη σελίδα μπορεί να διακοπεί η διαδικασία σε ορισμένα περιβάλλοντα χρήσης.", "An error occurred." : "Παρουσιάστηκε σφάλμα", "Please reload the page." : "Παρακαλώ επαναφορτώστε τη σελίδα.", - "The update was successful. There were warnings." : "Η ενημέρωση ήταν επιτυχής. Υπήρχαν προειδοποιήσεις.", "Searching other places" : "Έρευνα σε άλλα σημεία.", "No search results in other folders" : "Δεν υπάρχουν αποτελέσματα αναζήτησης σε άλλους φακέλους", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} αποτέλεσμα αναζήτησης σε άλλο φάκελο","{count} αποτελέσματα αναζήτησης σε άλλους φακέλους"], @@ -236,8 +235,10 @@ "Server side authentication failed!" : "Η διαδικασία επικύρωσης απέτυχε από την πλευρά του διακομιστή!", "Please contact your administrator." : "Παρακαλώ επικοινωνήστε με τον διαχειριστή.", "Please try again or contact your administrator." : "Παρακαλώ δοκιμάστε ξανά ή επικοινωνήστε με τον διαχειριστή σας.", + "Username or email" : "Όνομα χρήστη ή email", "Log in" : "Είσοδος", "Wrong password. Reset it?" : "Λάθος Κωδικός. Επαναφορά;", + "Wrong password." : "Λανθασμένο συνθηματικό.", "Stay logged in" : "Μείνετε συνδεδεμένος", "Alternative Logins" : "Εναλλακτικές Συνδέσεις", "Use the following link to reset your password: {link}" : "Χρησιμοποιήστε τον ακόλουθο σύνδεσμο για να επανεκδόσετε τον κωδικό: {link}", @@ -260,6 +261,8 @@ "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Παρακαλώ βεβαιωθείτε ότι έχουν ληψθεί αντίγραφα ασφαλείας της βάσης δεδομένων, του φακέλου ρυθμίσεων και του φακέλου δεδομένων πριν προχωρήσετε.", "Start update" : "Έναρξη ενημέρωσης", "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Για να αποφύγετε τη λήξη χρόνου με μεγαλύτερες εγκαταστάσεις, μπορείτε αντί αυτού να τρέξετε την ακόλουθη εντολή από τον κατάλογο αρχείων εφαρμογών:", + "Detailed logs" : "Λεπτομερές ιστορικό", + "Update needed" : "Απαιτείται ενημέρωση", "This %s instance is currently in maintenance mode, which may take a while." : "Αυτή %s η εγκατάσταση είναι σε κατάσταση συντήρησης, η οποία μπορεί να πάρει κάποιο χρόνο.", "This page will refresh itself when the %s instance is available again." : "Αυτή η σελίδα θα ανανεωθεί από μόνη της όταν η %s εγκατάσταση είναι διαθέσιμη ξανά." },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/core/l10n/en_GB.js b/core/l10n/en_GB.js index 414d643664e..7d38eb05970 100644 --- a/core/l10n/en_GB.js +++ b/core/l10n/en_GB.js @@ -214,13 +214,10 @@ OC.L10N.register( "Hello {name}" : "Hello {name}", "new" : "new", "_download %n file_::_download %n files_" : ["download %n file","download %n files"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "The upgrade is in progress, leaving this page might interrupt the process in some environments.", - "Updating to {version}" : "Updating to {version}", "An error occurred." : "An error occurred.", "Please reload the page." : "Please reload the page.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>.", - "The update was successful. There were warnings." : "The update was successful. There were warnings.", "The update was successful. Redirecting you to Nextcloud now." : "The update was successful. Redirecting you to Nextcloud.", "Searching other places" : "Searching other places", "No search results in other folders" : "No search results in other folders", diff --git a/core/l10n/en_GB.json b/core/l10n/en_GB.json index 21452c437db..cdd0ed8e7c3 100644 --- a/core/l10n/en_GB.json +++ b/core/l10n/en_GB.json @@ -212,13 +212,10 @@ "Hello {name}" : "Hello {name}", "new" : "new", "_download %n file_::_download %n files_" : ["download %n file","download %n files"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "The upgrade is in progress, leaving this page might interrupt the process in some environments.", - "Updating to {version}" : "Updating to {version}", "An error occurred." : "An error occurred.", "Please reload the page." : "Please reload the page.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>.", - "The update was successful. There were warnings." : "The update was successful. There were warnings.", "The update was successful. Redirecting you to Nextcloud now." : "The update was successful. Redirecting you to Nextcloud.", "Searching other places" : "Searching other places", "No search results in other folders" : "No search results in other folders", diff --git a/core/l10n/es.js b/core/l10n/es.js index f45ef037a97..b55d67d2cfc 100644 --- a/core/l10n/es.js +++ b/core/l10n/es.js @@ -219,13 +219,10 @@ OC.L10N.register( "Hello {name}" : "Hola {name}", "new" : "Nuevo", "_download %n file_::_download %n files_" : ["descargar %n ficheros","descargar %n archivos"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "La actualización está en curso, salir de esta página podrían interrumpir el proceso en algunos entornos.", - "Updating to {version}" : "Actualizando a {version}", "An error occurred." : "Ocurrió un error.", "Please reload the page." : "Recargue/Actualice la página", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "La actualización tuvo un problema. Para más información <a href=\"{url}\">consulta nuestro artículo del foro</a> para arreglar este problema.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "La actualización falló. Por favor, informa de este problema en la <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">comunidad de Nextcloud</a>.", - "The update was successful. There were warnings." : "La actualización fue exitosa. Había advertencias.", "The update was successful. Redirecting you to Nextcloud now." : "Actualización completada con éxito. Redirigiendo a Nextcloud.", "Searching other places" : "Buscando en otros lugares", "No search results in other folders" : "Ningún resultado de búsqueda en otras carpetas", diff --git a/core/l10n/es.json b/core/l10n/es.json index b33d37d5c55..1dbdaeb94a7 100644 --- a/core/l10n/es.json +++ b/core/l10n/es.json @@ -217,13 +217,10 @@ "Hello {name}" : "Hola {name}", "new" : "Nuevo", "_download %n file_::_download %n files_" : ["descargar %n ficheros","descargar %n archivos"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "La actualización está en curso, salir de esta página podrían interrumpir el proceso en algunos entornos.", - "Updating to {version}" : "Actualizando a {version}", "An error occurred." : "Ocurrió un error.", "Please reload the page." : "Recargue/Actualice la página", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "La actualización tuvo un problema. Para más información <a href=\"{url}\">consulta nuestro artículo del foro</a> para arreglar este problema.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "La actualización falló. Por favor, informa de este problema en la <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">comunidad de Nextcloud</a>.", - "The update was successful. There were warnings." : "La actualización fue exitosa. Había advertencias.", "The update was successful. Redirecting you to Nextcloud now." : "Actualización completada con éxito. Redirigiendo a Nextcloud.", "Searching other places" : "Buscando en otros lugares", "No search results in other folders" : "Ningún resultado de búsqueda en otras carpetas", diff --git a/core/l10n/et_EE.js b/core/l10n/et_EE.js index fc7e0482614..64e69da3eb8 100644 --- a/core/l10n/et_EE.js +++ b/core/l10n/et_EE.js @@ -172,10 +172,8 @@ OC.L10N.register( "Hello {name}" : "Tere, {name}", "new" : "uus", "_download %n file_::_download %n files_" : ["laadi alla %n fail","laadi alla %n faili"], - "Updating to {version}" : "Uuendamine versioonile {version}", "An error occurred." : "Tekkis tõrge.", "Please reload the page." : "Palun laadi see uuesti.", - "The update was successful. There were warnings." : "Uuendamine läks kenasti. hoiatusi polnud.", "Searching other places" : "Otsi teistest kohtadest", "Personal" : "Isiklik", "Users" : "Kasutajad", diff --git a/core/l10n/et_EE.json b/core/l10n/et_EE.json index b8c258d54bc..a63f15477b1 100644 --- a/core/l10n/et_EE.json +++ b/core/l10n/et_EE.json @@ -170,10 +170,8 @@ "Hello {name}" : "Tere, {name}", "new" : "uus", "_download %n file_::_download %n files_" : ["laadi alla %n fail","laadi alla %n faili"], - "Updating to {version}" : "Uuendamine versioonile {version}", "An error occurred." : "Tekkis tõrge.", "Please reload the page." : "Palun laadi see uuesti.", - "The update was successful. There were warnings." : "Uuendamine läks kenasti. hoiatusi polnud.", "Searching other places" : "Otsi teistest kohtadest", "Personal" : "Isiklik", "Users" : "Kasutajad", diff --git a/core/l10n/fi_FI.js b/core/l10n/fi_FI.js index 24e33f86710..9de205fe01f 100644 --- a/core/l10n/fi_FI.js +++ b/core/l10n/fi_FI.js @@ -205,12 +205,9 @@ OC.L10N.register( "Hello {name}" : "Hei {name}", "new" : "uusi", "_download %n file_::_download %n files_" : ["lataa %n tiedosto","lataa %n tiedostoa"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Päivitys on meneillään. Poistuminen tältä sivulta saattaa keskeyttää toimenpiteen joissain käyttöympäristöissä.", - "Updating to {version}" : "Päivitetään versioon {version}", "An error occurred." : "Tapahtui virhe.", "Please reload the page." : "Päivitä sivu.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Päivitys epäonnistui. Katso lisätietoja tähän ongelmaan liittyen <a href=\"{url}\">keskustelupalstan viestistä</a>.", - "The update was successful. There were warnings." : "Päivitys onnistui, tosin ilmeni varoituksia.", "Searching other places" : "Etsitään muista paikoista", "No search results in other folders" : "Ei hakutuloksia muissa kansioissa", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} hakutulos muussa kansiossa","{count} hakutulosta muissa kansioissa"], diff --git a/core/l10n/fi_FI.json b/core/l10n/fi_FI.json index b6bcd6cc6ec..c53c4973621 100644 --- a/core/l10n/fi_FI.json +++ b/core/l10n/fi_FI.json @@ -203,12 +203,9 @@ "Hello {name}" : "Hei {name}", "new" : "uusi", "_download %n file_::_download %n files_" : ["lataa %n tiedosto","lataa %n tiedostoa"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Päivitys on meneillään. Poistuminen tältä sivulta saattaa keskeyttää toimenpiteen joissain käyttöympäristöissä.", - "Updating to {version}" : "Päivitetään versioon {version}", "An error occurred." : "Tapahtui virhe.", "Please reload the page." : "Päivitä sivu.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Päivitys epäonnistui. Katso lisätietoja tähän ongelmaan liittyen <a href=\"{url}\">keskustelupalstan viestistä</a>.", - "The update was successful. There were warnings." : "Päivitys onnistui, tosin ilmeni varoituksia.", "Searching other places" : "Etsitään muista paikoista", "No search results in other folders" : "Ei hakutuloksia muissa kansioissa", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} hakutulos muussa kansiossa","{count} hakutulosta muissa kansioissa"], diff --git a/core/l10n/fr.js b/core/l10n/fr.js index 16d1eb9982f..de66161b63d 100644 --- a/core/l10n/fr.js +++ b/core/l10n/fr.js @@ -8,12 +8,12 @@ OC.L10N.register( "Unknown filetype" : "Type de fichier inconnu", "Invalid image" : "Image non valable", "An error occurred. Please contact your admin." : "Une erreur est survenue. Veuillez contacter votre administrateur.", - "No temporary profile picture available, try again" : "Aucune image temporaire disponible pour le profil. Essayez à nouveau.", + "No temporary profile picture available, try again" : "Auncune image de profil temporaire disponible, essayez à nouveau", "No crop data provided" : "Aucune donnée de recadrage fournie", "No valid crop data provided" : "Données de recadrage non valides", "Crop is not square" : "Le recadrage n'est pas carré", - "Couldn't reset password because the token is invalid" : "Impossible de réinitialiser le mot de passe car le jeton n'est pas valable.", - "Couldn't reset password because the token is expired" : "Impossible de réinitialiser le mot de passe car le jeton a expiré.", + "Couldn't reset password because the token is invalid" : "Impossible de réinitialiser le mot de passe car le jeton n'est pas valable", + "Couldn't reset password because the token is expired" : "Impossible de réinitialiser le mot de passe car le jeton a expiré", "Couldn't send reset email. Please make sure your username is correct." : "Impossible d'envoyer le courriel de réinitialisation. Veuillez vérifier que votre nom d'utilisateur est correct.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Impossible d'envoyer le courriel de réinitialisation car il n'y a aucune adresse de courriel pour cet utilisateur. Veuillez contacter votre administrateur.", "%s password reset" : "Réinitialisation de votre mot de passe %s", @@ -219,13 +219,10 @@ OC.L10N.register( "Hello {name}" : "Hello {name}", "new" : "Nouveau ", "_download %n file_::_download %n files_" : ["Télécharger %n fichier","Télécharger %n fichiers"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "La mise à jour est en cours. Selon la configuration, le fait de quitter cette page peut entraîner l'interruption de la procédure.", - "Updating to {version}" : "En cours de mise à jour vers la version {version}", "An error occurred." : "Une erreur est survenue.", "Please reload the page." : "Veuillez recharger la page.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "La mise à jour a échoué. Pour plus d'informations <a href=\"{url}\">consultez notre publication sur le forum</a> à propos de ce problème.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "La mise à jour a échoué. Veuillez reporter le problème à la <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">communauté Nextcloud</a>.", - "The update was successful. There were warnings." : "La mise à jour a réussi, mais il y a eu des avertissements", "The update was successful. Redirecting you to Nextcloud now." : "La mise à jour a réussi. Vous allez être redirigé vers votre Nextcloud.", "Searching other places" : "Recherche en cours dans d'autres emplacements", "No search results in other folders" : "Aucun résultat dans d'autres dossiers", diff --git a/core/l10n/fr.json b/core/l10n/fr.json index 159705e5591..b3bd4f04628 100644 --- a/core/l10n/fr.json +++ b/core/l10n/fr.json @@ -6,12 +6,12 @@ "Unknown filetype" : "Type de fichier inconnu", "Invalid image" : "Image non valable", "An error occurred. Please contact your admin." : "Une erreur est survenue. Veuillez contacter votre administrateur.", - "No temporary profile picture available, try again" : "Aucune image temporaire disponible pour le profil. Essayez à nouveau.", + "No temporary profile picture available, try again" : "Auncune image de profil temporaire disponible, essayez à nouveau", "No crop data provided" : "Aucune donnée de recadrage fournie", "No valid crop data provided" : "Données de recadrage non valides", "Crop is not square" : "Le recadrage n'est pas carré", - "Couldn't reset password because the token is invalid" : "Impossible de réinitialiser le mot de passe car le jeton n'est pas valable.", - "Couldn't reset password because the token is expired" : "Impossible de réinitialiser le mot de passe car le jeton a expiré.", + "Couldn't reset password because the token is invalid" : "Impossible de réinitialiser le mot de passe car le jeton n'est pas valable", + "Couldn't reset password because the token is expired" : "Impossible de réinitialiser le mot de passe car le jeton a expiré", "Couldn't send reset email. Please make sure your username is correct." : "Impossible d'envoyer le courriel de réinitialisation. Veuillez vérifier que votre nom d'utilisateur est correct.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Impossible d'envoyer le courriel de réinitialisation car il n'y a aucune adresse de courriel pour cet utilisateur. Veuillez contacter votre administrateur.", "%s password reset" : "Réinitialisation de votre mot de passe %s", @@ -217,13 +217,10 @@ "Hello {name}" : "Hello {name}", "new" : "Nouveau ", "_download %n file_::_download %n files_" : ["Télécharger %n fichier","Télécharger %n fichiers"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "La mise à jour est en cours. Selon la configuration, le fait de quitter cette page peut entraîner l'interruption de la procédure.", - "Updating to {version}" : "En cours de mise à jour vers la version {version}", "An error occurred." : "Une erreur est survenue.", "Please reload the page." : "Veuillez recharger la page.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "La mise à jour a échoué. Pour plus d'informations <a href=\"{url}\">consultez notre publication sur le forum</a> à propos de ce problème.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "La mise à jour a échoué. Veuillez reporter le problème à la <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">communauté Nextcloud</a>.", - "The update was successful. There were warnings." : "La mise à jour a réussi, mais il y a eu des avertissements", "The update was successful. Redirecting you to Nextcloud now." : "La mise à jour a réussi. Vous allez être redirigé vers votre Nextcloud.", "Searching other places" : "Recherche en cours dans d'autres emplacements", "No search results in other folders" : "Aucun résultat dans d'autres dossiers", diff --git a/core/l10n/he.js b/core/l10n/he.js index b53fb45105d..cccc644f47f 100644 --- a/core/l10n/he.js +++ b/core/l10n/he.js @@ -213,12 +213,9 @@ OC.L10N.register( "Hello {name}" : "שלום {name}", "new" : "חדש", "_download %n file_::_download %n files_" : ["הורד %n קובץ","הורדו %n קבצים"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "מתבצע עכשיו שדרוג, מעבר מדף זה עלול לפגוע בתהליך בסביבות הפעלה מסויימות.", - "Updating to {version}" : "מעדכן ל- {version}", "An error occurred." : "אירעה שגיאה.", "Please reload the page." : "יש להעלות מחדש דף זה.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "העדכון בוצע בהצלחה. למידע נוסף <a href=\"{url}\">ניתן לבדוק בהודעת הפורום שלנו</a> המכסה נושא זו.", - "The update was successful. There were warnings." : "העדכון בוצע בהצלחה. היו הזהרות.", "Searching other places" : "מחפש במקומות אחרים", "No search results in other folders" : "אין תוצאות חיפוש בתיקיות אחרות", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} תוצאת חיפוש בתיקייה אחרות","{count} תוצאות חיפוש בתיקיות אחרות"], diff --git a/core/l10n/he.json b/core/l10n/he.json index f9599d10052..a4d3b261f1e 100644 --- a/core/l10n/he.json +++ b/core/l10n/he.json @@ -211,12 +211,9 @@ "Hello {name}" : "שלום {name}", "new" : "חדש", "_download %n file_::_download %n files_" : ["הורד %n קובץ","הורדו %n קבצים"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "מתבצע עכשיו שדרוג, מעבר מדף זה עלול לפגוע בתהליך בסביבות הפעלה מסויימות.", - "Updating to {version}" : "מעדכן ל- {version}", "An error occurred." : "אירעה שגיאה.", "Please reload the page." : "יש להעלות מחדש דף זה.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "העדכון בוצע בהצלחה. למידע נוסף <a href=\"{url}\">ניתן לבדוק בהודעת הפורום שלנו</a> המכסה נושא זו.", - "The update was successful. There were warnings." : "העדכון בוצע בהצלחה. היו הזהרות.", "Searching other places" : "מחפש במקומות אחרים", "No search results in other folders" : "אין תוצאות חיפוש בתיקיות אחרות", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} תוצאת חיפוש בתיקייה אחרות","{count} תוצאות חיפוש בתיקיות אחרות"], diff --git a/core/l10n/hu_HU.js b/core/l10n/hu_HU.js index aa06f80b386..7a88e4f2cff 100644 --- a/core/l10n/hu_HU.js +++ b/core/l10n/hu_HU.js @@ -212,12 +212,9 @@ OC.L10N.register( "Hello {name}" : "Üdv {name}!", "new" : "új", "_download %n file_::_download %n files_" : ["%n fájl letöltése","%n fájl letöltése"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A frissítés folyamatban van, az oldal elhagyása néhány környezetben lehet, hogy megszakítja a folyamatot.", - "Updating to {version}" : "Frissítés erre a verzióra: {version}", "An error occurred." : "Hiba történt.", "Please reload the page." : "Kérjük frissítse az oldalt!", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Frissítés sikertelen. Bővebb információért <a href=\"{url}\">keresse fel a fórumunkat</a> a probléma lefedéséért.", - "The update was successful. There were warnings." : "A frissítés sikerült. Figyelmeztetések találhatók.", "Searching other places" : "Keresés más helyeken", "No search results in other folders" : "Nincs keresési eredmény a másik könyvtárakban", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} keresési eredmény egy másik könyvtárban","{count} keresési eredmény más könyvtárakban"], diff --git a/core/l10n/hu_HU.json b/core/l10n/hu_HU.json index 97e4dc60110..0673dcceace 100644 --- a/core/l10n/hu_HU.json +++ b/core/l10n/hu_HU.json @@ -210,12 +210,9 @@ "Hello {name}" : "Üdv {name}!", "new" : "új", "_download %n file_::_download %n files_" : ["%n fájl letöltése","%n fájl letöltése"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A frissítés folyamatban van, az oldal elhagyása néhány környezetben lehet, hogy megszakítja a folyamatot.", - "Updating to {version}" : "Frissítés erre a verzióra: {version}", "An error occurred." : "Hiba történt.", "Please reload the page." : "Kérjük frissítse az oldalt!", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Frissítés sikertelen. Bővebb információért <a href=\"{url}\">keresse fel a fórumunkat</a> a probléma lefedéséért.", - "The update was successful. There were warnings." : "A frissítés sikerült. Figyelmeztetések találhatók.", "Searching other places" : "Keresés más helyeken", "No search results in other folders" : "Nincs keresési eredmény a másik könyvtárakban", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} keresési eredmény egy másik könyvtárban","{count} keresési eredmény más könyvtárakban"], diff --git a/core/l10n/id.js b/core/l10n/id.js index cae7fdc0019..782a958cc7f 100644 --- a/core/l10n/id.js +++ b/core/l10n/id.js @@ -1,6 +1,7 @@ OC.L10N.register( "core", { + "Please select a file." : "Pilih berkas", "File is too big" : "Berkas terlalu besar", "Invalid file provided" : "Berkas yang diberikan tidak sah", "No image or file provided" : "Tidak ada gambar atau berkas yang disediakan", @@ -14,6 +15,7 @@ OC.L10N.register( "Couldn't reset password because the token is invalid" : "Tidak dapat menyetel ulang sandi karena token tidak sah", "Couldn't reset password because the token is expired" : "Tidak dapat menyetel ulang sandi karena token telah kadaluarsa", "Couldn't send reset email. Please make sure your username is correct." : "Tidak dapat menyetel ulang email. Mohon pastikan nama pengguna Anda benar.", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Tidak dapat mengirim email karena tidak ada alamat email untuk nama pengguna ini. Silahkan hubungi administrator Anda.", "%s password reset" : "%s sandi disetel ulang", "Couldn't send reset email. Please contact your administrator." : "Tidak dapat mengirim email setel ulang. Silakan hubungi administrator Anda.", "Error loading tags" : "Kesalahan saat saat memuat tag", @@ -25,8 +27,11 @@ OC.L10N.register( "Error unfavoriting" : "Kesalahan saat menghapus sebagai favorit", "Couldn't send mail to following users: %s " : "Tidak dapat mengirim Email ke pengguna berikut: %s", "Preparing update" : "Mempersiapkan pembaruan", + "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Peringatan perbaikan:", "Repair error: " : "Kesalahan perbaikan:", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Gunakan pembaruan di command line karena pembaruan otomatis di nonaktifkan di config.php. ", + "[%d / %d]: Checking table %s" : "[%d / %d]: Mengecek tabel %s", "Turned on maintenance mode" : "Hidupkan mode perawatan", "Turned off maintenance mode" : "Matikan mode perawatan", "Maintenance mode is kept active" : "Mode Pemeliharaan masih aktif", @@ -38,6 +43,10 @@ OC.L10N.register( "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Memeriksa apakah skema untuk %s dapat diperbarui (dapat memerlukan waktu yang lama tergantung pada ukuran basis data)", "Checked database schema update for apps" : "Pembaruan skema basis data terperiksa untuk aplikasi", "Updated \"%s\" to %s" : "Terbaru \"%s\" sampai %s", + "Set log level to debug" : "Atur log level ke debug", + "Reset log level" : "Atur ulang log level", + "Starting code integrity check" : "Memulai pengecekan integritas kode", + "Finished code integrity check" : "Pengecekan integritas kode selesai", "%s (3rdparty)" : "%s (pihak ke-3)", "%s (incompatible)" : "%s (tidak kompatibel)", "Following apps have been disabled: %s" : "Aplikasi berikut telah dinonaktifkan: %s", @@ -87,7 +96,9 @@ OC.L10N.register( "Oct." : "Okt.", "Nov." : "Nov.", "Dec." : "Des.", + "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Ada permasalahan dengan pengecekan integrasi kode. Informasi selanjutnya…</a>", "Settings" : "Pengaturan", + "Problem loading page, reloading in 5 seconds" : "Terjadi masalah dalam memuat laman, mencoba lagi dalam 5 detik", "Saving..." : "Menyimpan...", "Dismiss" : "Buang", "seconds ago" : "beberapa detik yang lalu", @@ -119,9 +130,18 @@ OC.L10N.register( "Good password" : "Sandi baik", "Strong password" : "Sandi kuat", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Server web Anda belum diatur dengan benar untuk mengizinkan sinkronisasi berkas karena antarmuka WebDAV nampaknya rusak.", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Server web Anda tidak diatur secara baik untuk menyelesaikan \"{url}\". Informasi selanjutnya bisa ditemukan di <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentasi</a> kami.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Server ini tidak tersambung ke internet: Banyak endpoint tidak bisa dicapai. Ini berarti beberapa fitur seperti me-mount penyimpanan eksternal, notifikasi pembaruan atau instalasi aplikasi pihak ketiga tidak akan bekerja. Mengakses berkas secara remote dan mengirim notifikasi email juga tidak bekerja. Kami menyarankan untuk mengaktifkan koneksi internet untuk server ini jika Anda ingin memiliki fitur ini.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Tidak ada memory cache telah dikonfigurasi. Untuk meningkatkan kinerja, mohon mengkonfigurasi memcache jika tersedia. Informasi selanjutnya bisa ditemukan di <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentasi</a> kami.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom tidak bisa dibaca oleh PHP dan sangat tidak disarankan untuk alasan keamanan. Informasi selanjutnya bisa ditemukan di <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentasi</a> kami.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Anda sekarang menjalankan PHP {version}. Kami menyarankan Anda untuk perbarui versi PHP Anda untuk memanfaatkan <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performa dan pembaruan keamanan yang disediakan oleh PHP Group</a> saat distribusi Anda mendukungnya.", + "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Konfigurasi proxy header terbalik salah, atau Anda mengakses ownCloud dari proxy terpercaya. Apabila Anda tidak mengakses ownCloud dari proxy terpercaya, ini adalah masalah keamanan dan penyerang dapat memalsukan alamat IP mereka ke ownCloud. Informasi selanjutnya bisa ditemukan di <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentasi</a> kami.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached terkonfigurasi sebagai cache terdistribusi, tetapi modul PHP \"memcache\" yang salah terpasang. \\OC\\Memcache\\Memcached hanya mendukung \"memcached\" dan bukan \"memcache\". Lihat <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki memcached tentang kedua modul</a>.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Beberapa berkas tidak lulus cek integritas. Informasi lebih lanjut tentang cara mengatasi masalah ini dapat ditemukan di <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentasi</a> kami. (<a href=\"{codeIntegrityDownloadEndpoint}\">Daftar berkas yang tidak valid…</a> / <a href=\"{rescanEndpoint}\">Pindai ulang…</a>)", "Error occurred while checking server setup" : "Kesalahan tidak terduga saat memeriksa setelan server", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Direktori data dan berkas Anda kemungkinan dapat diakses dari Internet. Berkas .htaccess tidak bekerja. Kami sangat menyarankan Anda untuk mengkonfigurasi server web agar direktori data tidak lagi dapat diakses atau pindahkan direktori data Anda di luar root dokumen server web.", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "Header HTTP \"{header}\" tidak dikonfigurasi sama dengan \"{expected}\". Hal ini berpotensi pada resiko keamanan dan privasi. Kami sarankan untuk menyesuaikan pengaturan ini.", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "Header \"Strict-Transport-Security\" HTTP tidak terkonfigurasi ke setidaknya \"{seconds}\" detik. Untuk meningkatkan kemanan kami merekomendasikan mengaktifkan HSTS seperti yang dijelaskan di <a href=\"{docUrl}\" rel=\"noreferrer\">saran keamanan</a> kami.", "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Anda mengakses situs ini via HTTP. Kami sangat menyarankan Anda untuk mengatur server Anda menggunakan HTTPS yang dibahas di <a href=\"{docUrl}\">tips keamanan</a> kami.", "Shared" : "Dibagikan", "Shared with {recipients}" : "Dibagikan dengan {recipients}", @@ -134,16 +154,22 @@ OC.L10N.register( "Expiration" : "Kedaluwarsa", "Expiration date" : "Tanggal kedaluwarsa", "Choose a password for the public link" : "Tetapkan sandi untuk tautan publik", + "Copied!" : "Tersalin!", + "Not supported!" : "Tidak didukung!", + "Press ⌘-C to copy." : "Tekan ⌘-C untuk menyalin.", + "Press Ctrl-C to copy." : "Tekan Ctrl-C untuk menyalin.", "Resharing is not allowed" : "Berbagi ulang tidak diizinkan", "Share link" : "Bagikan tautan", "Link" : "Tautan", "Password protect" : "Lindungi dengan sandi", "Password" : "Sandi", "Allow editing" : "Izinkan penyuntingan", + "Hide file listing" : "Sembunyikan pendaftaran berkas", "Email link to person" : "Emailkan tautan ini ke orang", "Send" : "Kirim", "Sending ..." : "Mengirim ...", "Email sent" : "Email terkirim", + "Send link via email" : "Kirim pranala melalui email", "Shared with you and the group {group} by {owner}" : "Dibagikan dengan anda dan grup {group} oleh {owner}", "Shared with you by {owner}" : "Dibagikan dengan anda oleh {owner}", "group" : "grup", @@ -156,13 +182,30 @@ OC.L10N.register( "change" : "ubah", "delete" : "hapus", "access control" : "kontrol akses", + "Could not unshare" : "Tidak dapat membatalkan pembagian", "Share details could not be loaded for this item." : "Rincian berbagi tidak dapat dimuat untuk item ini.", + "No users or groups found for {search}" : "Tidak ada pengguna atau grup ditemukan untuk {search}", + "No users found for {search}" : "Tidak ada pengguna ditemukan untuk {search}", + "An error occurred. Please try again" : "Terjadi kesalahan. Silakan coba lagi", + "{sharee} (group)" : "{sharee} (grup)", + "{sharee} (at {server})" : "{sharee} (di {server})", + "{sharee} (remote)" : "{sharee} (remote)", "Share" : "Bagikan", "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Bagikan dengan orang lain di ownCloud menggunakan sintaks username@example.com/owncloud", + "Share with users…" : "Bagikan kepada pengguna...", + "Share with users, groups or remote users…" : "Bagikan kepada pengguna, grup atau remote...", + "Share with users or groups…" : "Bagikan kepada pengguna atau grup...", + "Share with users or remote users…" : "Bagikan kepada pengguna atau remote...", + "Error removing share" : "Terjadi kesalahan saat menghapus pembagian", "Warning" : "Peringatan", "Error while sending notification" : "Kesalahan ketika mengirim notifikasi", + "Non-existing tag #{tag}" : "Tag tidak ada #{tag}", + "restricted" : "terbatas", + "invisible" : "tersembunyi", + "({scope})" : "({scope})", "Delete" : "Hapus", "Rename" : "Ubah nama", + "Collaborative tags" : "Tag kolaboratif", "The object type is not specified." : "Tipe objek tidak ditentukan.", "Enter new" : "Masukkan baru", "Add" : "Tambah", @@ -170,15 +213,17 @@ OC.L10N.register( "Error loading dialog template: {error}" : "Kesalahan saat memuat templat dialog: {error}", "No tags selected for deletion." : "Tidak ada label yang dipilih untuk dihapus.", "unknown text" : "teks tidak diketahui", - "Hello world!" : "Hello world!", + "Hello world!" : "Halo dunia!", "sunny" : "cerah", - "Hello {name}, the weather is {weather}" : "Helo {name}, jepang {weather}", - "Hello {name}" : "Helo {name}", + "Hello {name}, the weather is {weather}" : "Halo {name}, saat ini {weather}", + "Hello {name}" : "Halo {name}", + "new" : "baru", "_download %n file_::_download %n files_" : ["unduh %n berkas"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Pembaruan sedang dalam proses, meninggalkan halaman ini mungkin dapat mengganggu proses di beberapa lingkungan.", "An error occurred." : "Terjadi kesalahan.", "Please reload the page." : "Silakan muat ulang halaman.", - "The update was successful. There were warnings." : "Pembaruan telah berhasil. Terdapat peringatan.", + "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Pembaruan gagal. Untuk informasi berikutnya <a href=\"{url}\">cek posting di forum</a> yang mencakup masalah kami.", + "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Pembaruan gagal. Laporkan masalah ini ke <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">komunitas Nextcloud</a>.", + "The update was successful. Redirecting you to Nextcloud now." : "Pembaruan berhasil. Mengarahkan Anda ke Nextcloud.", "Searching other places" : "Mencari tempat lainnya", "No search results in other folders" : "Tidak ada hasil penelusuran didalam folder yang lain", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} hasil pencarian di folder lain"], @@ -209,6 +254,7 @@ OC.L10N.register( "Trace" : "Jejak", "Security warning" : "Peringatan keamanan", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Kemungkinan direktori data dan berkas anda dapat diakses dari internet karena berkas .htaccess tidak berfungsi.", + "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Untuk informasi bagaimana menkonfigurasi server Anda dengan benar, silakan lihat <a href=\"%s\" target=\"_blank\" rel=\"norefferer\">dokumentasi</a>.", "Create an <strong>admin account</strong>" : "Buat sebuah <strong>akun admin</strong>", "Username" : "Nama pengguna", "Storage & database" : "Penyimpanan & Basis data", @@ -236,9 +282,12 @@ OC.L10N.register( "Search" : "Cari", "Server side authentication failed!" : "Otentikasi dari sisi server gagal!", "Please contact your administrator." : "Silahkan hubungi administrator anda.", + "An internal error occurred." : "Terjadi kesalahan internal.", "Please try again or contact your administrator." : "Mohon coba lagi atau hubungi administrator Anda.", + "Username or email" : "Nama pengguna atau email", "Log in" : "Masuk", "Wrong password. Reset it?" : "Sandi salah. Atur ulang?", + "Wrong password." : "Sandi salah.", "Stay logged in" : "Tetap masuk", "Alternative Logins" : "Cara Alternatif untuk Masuk", "Use the following link to reset your password: {link}" : "Gunakan tautan berikut untuk menyetel ulang sandi Anda: {link}", @@ -249,7 +298,13 @@ OC.L10N.register( "This means only administrators can use the instance." : "Ini berarti hanya administrator yang dapat menggunakan ownCloud.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Hubungi administrator sistem anda jika pesan ini terus muncul atau muncul tiba-tiba.", "Thank you for your patience." : "Terima kasih atas kesabaran anda.", + "Two-step verification" : "Otentikasi ganda", + "Enhanced security has been enabled for your account. Please authenticate using a second factor." : "Peningkatan keamanan delah diaktifkan untuk akun Anda. Mohon otentikasi menggunakan faktor kedua.", + "Cancel login" : "Batalkan log masuk", + "Please authenticate using the selected factor." : "Mohon lakukan otentikasi dengan faktor ke dua.", + "An error occured while verifying the token" : "Terjadi kesalahan saat memverifikasi token", "You are accessing the server from an untrusted domain." : "Anda mengakses server dari domain yang tidak terpercaya.", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Silakan hubungi administrator Anda. Apabila Anda adalah administrator dari instansi ini, konfigurasikan aturan \"trusted_domains\" di config/config.php. Contoh konfigurasi disediakan di config/config.sample.php.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Tergantung pada konfigurasi Anda, sebagai seorang administrator Anda kemungkinan dapat menggunakan tombol bawah untuk mempercayai domain ini.", "Add \"%s\" as trusted domain" : "tambahkan \"%s\" sebagai domain terpercaya", "App update required" : "Diperlukan perbarui aplikasi", @@ -260,6 +315,10 @@ OC.L10N.register( "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Pastikan bahwa basis data, folder konfig, dan folder data telah dicadangkan sebelum melanjutkan.", "Start update" : "Jalankan pembaruan", "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Untuk menghindari waktu habis dengan instalasi yang lebih besar, Anda bisa menjalankan perintah berikut dari direktori instalasi Anda:", + "Detailed logs" : "Log detail", + "Update needed" : "Pembaruan dibutuhkan", + "Please use the command line updater because you have a big instance." : "Gunakan pembaruan command-line karena Anda mempunyai instansi yang besar.", + "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Untuk bantuan, lihat <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentasi</a>.", "This %s instance is currently in maintenance mode, which may take a while." : "Instansi %s ini sedang dalam modus pemeliharaan, mungkin memerlukan beberapa saat.", "This page will refresh itself when the %s instance is available again." : "Halaman ini akan disegarkan dengan sendiri saat instansi %s tersebut tersedia kembali." }, diff --git a/core/l10n/id.json b/core/l10n/id.json index aa2537a5c91..093ea64c99c 100644 --- a/core/l10n/id.json +++ b/core/l10n/id.json @@ -1,4 +1,5 @@ { "translations": { + "Please select a file." : "Pilih berkas", "File is too big" : "Berkas terlalu besar", "Invalid file provided" : "Berkas yang diberikan tidak sah", "No image or file provided" : "Tidak ada gambar atau berkas yang disediakan", @@ -12,6 +13,7 @@ "Couldn't reset password because the token is invalid" : "Tidak dapat menyetel ulang sandi karena token tidak sah", "Couldn't reset password because the token is expired" : "Tidak dapat menyetel ulang sandi karena token telah kadaluarsa", "Couldn't send reset email. Please make sure your username is correct." : "Tidak dapat menyetel ulang email. Mohon pastikan nama pengguna Anda benar.", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Tidak dapat mengirim email karena tidak ada alamat email untuk nama pengguna ini. Silahkan hubungi administrator Anda.", "%s password reset" : "%s sandi disetel ulang", "Couldn't send reset email. Please contact your administrator." : "Tidak dapat mengirim email setel ulang. Silakan hubungi administrator Anda.", "Error loading tags" : "Kesalahan saat saat memuat tag", @@ -23,8 +25,11 @@ "Error unfavoriting" : "Kesalahan saat menghapus sebagai favorit", "Couldn't send mail to following users: %s " : "Tidak dapat mengirim Email ke pengguna berikut: %s", "Preparing update" : "Mempersiapkan pembaruan", + "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Peringatan perbaikan:", "Repair error: " : "Kesalahan perbaikan:", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Gunakan pembaruan di command line karena pembaruan otomatis di nonaktifkan di config.php. ", + "[%d / %d]: Checking table %s" : "[%d / %d]: Mengecek tabel %s", "Turned on maintenance mode" : "Hidupkan mode perawatan", "Turned off maintenance mode" : "Matikan mode perawatan", "Maintenance mode is kept active" : "Mode Pemeliharaan masih aktif", @@ -36,6 +41,10 @@ "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Memeriksa apakah skema untuk %s dapat diperbarui (dapat memerlukan waktu yang lama tergantung pada ukuran basis data)", "Checked database schema update for apps" : "Pembaruan skema basis data terperiksa untuk aplikasi", "Updated \"%s\" to %s" : "Terbaru \"%s\" sampai %s", + "Set log level to debug" : "Atur log level ke debug", + "Reset log level" : "Atur ulang log level", + "Starting code integrity check" : "Memulai pengecekan integritas kode", + "Finished code integrity check" : "Pengecekan integritas kode selesai", "%s (3rdparty)" : "%s (pihak ke-3)", "%s (incompatible)" : "%s (tidak kompatibel)", "Following apps have been disabled: %s" : "Aplikasi berikut telah dinonaktifkan: %s", @@ -85,7 +94,9 @@ "Oct." : "Okt.", "Nov." : "Nov.", "Dec." : "Des.", + "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Ada permasalahan dengan pengecekan integrasi kode. Informasi selanjutnya…</a>", "Settings" : "Pengaturan", + "Problem loading page, reloading in 5 seconds" : "Terjadi masalah dalam memuat laman, mencoba lagi dalam 5 detik", "Saving..." : "Menyimpan...", "Dismiss" : "Buang", "seconds ago" : "beberapa detik yang lalu", @@ -117,9 +128,18 @@ "Good password" : "Sandi baik", "Strong password" : "Sandi kuat", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Server web Anda belum diatur dengan benar untuk mengizinkan sinkronisasi berkas karena antarmuka WebDAV nampaknya rusak.", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Server web Anda tidak diatur secara baik untuk menyelesaikan \"{url}\". Informasi selanjutnya bisa ditemukan di <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentasi</a> kami.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Server ini tidak tersambung ke internet: Banyak endpoint tidak bisa dicapai. Ini berarti beberapa fitur seperti me-mount penyimpanan eksternal, notifikasi pembaruan atau instalasi aplikasi pihak ketiga tidak akan bekerja. Mengakses berkas secara remote dan mengirim notifikasi email juga tidak bekerja. Kami menyarankan untuk mengaktifkan koneksi internet untuk server ini jika Anda ingin memiliki fitur ini.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Tidak ada memory cache telah dikonfigurasi. Untuk meningkatkan kinerja, mohon mengkonfigurasi memcache jika tersedia. Informasi selanjutnya bisa ditemukan di <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentasi</a> kami.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom tidak bisa dibaca oleh PHP dan sangat tidak disarankan untuk alasan keamanan. Informasi selanjutnya bisa ditemukan di <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentasi</a> kami.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Anda sekarang menjalankan PHP {version}. Kami menyarankan Anda untuk perbarui versi PHP Anda untuk memanfaatkan <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performa dan pembaruan keamanan yang disediakan oleh PHP Group</a> saat distribusi Anda mendukungnya.", + "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Konfigurasi proxy header terbalik salah, atau Anda mengakses ownCloud dari proxy terpercaya. Apabila Anda tidak mengakses ownCloud dari proxy terpercaya, ini adalah masalah keamanan dan penyerang dapat memalsukan alamat IP mereka ke ownCloud. Informasi selanjutnya bisa ditemukan di <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentasi</a> kami.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached terkonfigurasi sebagai cache terdistribusi, tetapi modul PHP \"memcache\" yang salah terpasang. \\OC\\Memcache\\Memcached hanya mendukung \"memcached\" dan bukan \"memcache\". Lihat <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki memcached tentang kedua modul</a>.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Beberapa berkas tidak lulus cek integritas. Informasi lebih lanjut tentang cara mengatasi masalah ini dapat ditemukan di <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentasi</a> kami. (<a href=\"{codeIntegrityDownloadEndpoint}\">Daftar berkas yang tidak valid…</a> / <a href=\"{rescanEndpoint}\">Pindai ulang…</a>)", "Error occurred while checking server setup" : "Kesalahan tidak terduga saat memeriksa setelan server", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Direktori data dan berkas Anda kemungkinan dapat diakses dari Internet. Berkas .htaccess tidak bekerja. Kami sangat menyarankan Anda untuk mengkonfigurasi server web agar direktori data tidak lagi dapat diakses atau pindahkan direktori data Anda di luar root dokumen server web.", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "Header HTTP \"{header}\" tidak dikonfigurasi sama dengan \"{expected}\". Hal ini berpotensi pada resiko keamanan dan privasi. Kami sarankan untuk menyesuaikan pengaturan ini.", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "Header \"Strict-Transport-Security\" HTTP tidak terkonfigurasi ke setidaknya \"{seconds}\" detik. Untuk meningkatkan kemanan kami merekomendasikan mengaktifkan HSTS seperti yang dijelaskan di <a href=\"{docUrl}\" rel=\"noreferrer\">saran keamanan</a> kami.", "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Anda mengakses situs ini via HTTP. Kami sangat menyarankan Anda untuk mengatur server Anda menggunakan HTTPS yang dibahas di <a href=\"{docUrl}\">tips keamanan</a> kami.", "Shared" : "Dibagikan", "Shared with {recipients}" : "Dibagikan dengan {recipients}", @@ -132,16 +152,22 @@ "Expiration" : "Kedaluwarsa", "Expiration date" : "Tanggal kedaluwarsa", "Choose a password for the public link" : "Tetapkan sandi untuk tautan publik", + "Copied!" : "Tersalin!", + "Not supported!" : "Tidak didukung!", + "Press ⌘-C to copy." : "Tekan ⌘-C untuk menyalin.", + "Press Ctrl-C to copy." : "Tekan Ctrl-C untuk menyalin.", "Resharing is not allowed" : "Berbagi ulang tidak diizinkan", "Share link" : "Bagikan tautan", "Link" : "Tautan", "Password protect" : "Lindungi dengan sandi", "Password" : "Sandi", "Allow editing" : "Izinkan penyuntingan", + "Hide file listing" : "Sembunyikan pendaftaran berkas", "Email link to person" : "Emailkan tautan ini ke orang", "Send" : "Kirim", "Sending ..." : "Mengirim ...", "Email sent" : "Email terkirim", + "Send link via email" : "Kirim pranala melalui email", "Shared with you and the group {group} by {owner}" : "Dibagikan dengan anda dan grup {group} oleh {owner}", "Shared with you by {owner}" : "Dibagikan dengan anda oleh {owner}", "group" : "grup", @@ -154,13 +180,30 @@ "change" : "ubah", "delete" : "hapus", "access control" : "kontrol akses", + "Could not unshare" : "Tidak dapat membatalkan pembagian", "Share details could not be loaded for this item." : "Rincian berbagi tidak dapat dimuat untuk item ini.", + "No users or groups found for {search}" : "Tidak ada pengguna atau grup ditemukan untuk {search}", + "No users found for {search}" : "Tidak ada pengguna ditemukan untuk {search}", + "An error occurred. Please try again" : "Terjadi kesalahan. Silakan coba lagi", + "{sharee} (group)" : "{sharee} (grup)", + "{sharee} (at {server})" : "{sharee} (di {server})", + "{sharee} (remote)" : "{sharee} (remote)", "Share" : "Bagikan", "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Bagikan dengan orang lain di ownCloud menggunakan sintaks username@example.com/owncloud", + "Share with users…" : "Bagikan kepada pengguna...", + "Share with users, groups or remote users…" : "Bagikan kepada pengguna, grup atau remote...", + "Share with users or groups…" : "Bagikan kepada pengguna atau grup...", + "Share with users or remote users…" : "Bagikan kepada pengguna atau remote...", + "Error removing share" : "Terjadi kesalahan saat menghapus pembagian", "Warning" : "Peringatan", "Error while sending notification" : "Kesalahan ketika mengirim notifikasi", + "Non-existing tag #{tag}" : "Tag tidak ada #{tag}", + "restricted" : "terbatas", + "invisible" : "tersembunyi", + "({scope})" : "({scope})", "Delete" : "Hapus", "Rename" : "Ubah nama", + "Collaborative tags" : "Tag kolaboratif", "The object type is not specified." : "Tipe objek tidak ditentukan.", "Enter new" : "Masukkan baru", "Add" : "Tambah", @@ -168,15 +211,17 @@ "Error loading dialog template: {error}" : "Kesalahan saat memuat templat dialog: {error}", "No tags selected for deletion." : "Tidak ada label yang dipilih untuk dihapus.", "unknown text" : "teks tidak diketahui", - "Hello world!" : "Hello world!", + "Hello world!" : "Halo dunia!", "sunny" : "cerah", - "Hello {name}, the weather is {weather}" : "Helo {name}, jepang {weather}", - "Hello {name}" : "Helo {name}", + "Hello {name}, the weather is {weather}" : "Halo {name}, saat ini {weather}", + "Hello {name}" : "Halo {name}", + "new" : "baru", "_download %n file_::_download %n files_" : ["unduh %n berkas"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Pembaruan sedang dalam proses, meninggalkan halaman ini mungkin dapat mengganggu proses di beberapa lingkungan.", "An error occurred." : "Terjadi kesalahan.", "Please reload the page." : "Silakan muat ulang halaman.", - "The update was successful. There were warnings." : "Pembaruan telah berhasil. Terdapat peringatan.", + "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Pembaruan gagal. Untuk informasi berikutnya <a href=\"{url}\">cek posting di forum</a> yang mencakup masalah kami.", + "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Pembaruan gagal. Laporkan masalah ini ke <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">komunitas Nextcloud</a>.", + "The update was successful. Redirecting you to Nextcloud now." : "Pembaruan berhasil. Mengarahkan Anda ke Nextcloud.", "Searching other places" : "Mencari tempat lainnya", "No search results in other folders" : "Tidak ada hasil penelusuran didalam folder yang lain", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} hasil pencarian di folder lain"], @@ -207,6 +252,7 @@ "Trace" : "Jejak", "Security warning" : "Peringatan keamanan", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Kemungkinan direktori data dan berkas anda dapat diakses dari internet karena berkas .htaccess tidak berfungsi.", + "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Untuk informasi bagaimana menkonfigurasi server Anda dengan benar, silakan lihat <a href=\"%s\" target=\"_blank\" rel=\"norefferer\">dokumentasi</a>.", "Create an <strong>admin account</strong>" : "Buat sebuah <strong>akun admin</strong>", "Username" : "Nama pengguna", "Storage & database" : "Penyimpanan & Basis data", @@ -234,9 +280,12 @@ "Search" : "Cari", "Server side authentication failed!" : "Otentikasi dari sisi server gagal!", "Please contact your administrator." : "Silahkan hubungi administrator anda.", + "An internal error occurred." : "Terjadi kesalahan internal.", "Please try again or contact your administrator." : "Mohon coba lagi atau hubungi administrator Anda.", + "Username or email" : "Nama pengguna atau email", "Log in" : "Masuk", "Wrong password. Reset it?" : "Sandi salah. Atur ulang?", + "Wrong password." : "Sandi salah.", "Stay logged in" : "Tetap masuk", "Alternative Logins" : "Cara Alternatif untuk Masuk", "Use the following link to reset your password: {link}" : "Gunakan tautan berikut untuk menyetel ulang sandi Anda: {link}", @@ -247,7 +296,13 @@ "This means only administrators can use the instance." : "Ini berarti hanya administrator yang dapat menggunakan ownCloud.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Hubungi administrator sistem anda jika pesan ini terus muncul atau muncul tiba-tiba.", "Thank you for your patience." : "Terima kasih atas kesabaran anda.", + "Two-step verification" : "Otentikasi ganda", + "Enhanced security has been enabled for your account. Please authenticate using a second factor." : "Peningkatan keamanan delah diaktifkan untuk akun Anda. Mohon otentikasi menggunakan faktor kedua.", + "Cancel login" : "Batalkan log masuk", + "Please authenticate using the selected factor." : "Mohon lakukan otentikasi dengan faktor ke dua.", + "An error occured while verifying the token" : "Terjadi kesalahan saat memverifikasi token", "You are accessing the server from an untrusted domain." : "Anda mengakses server dari domain yang tidak terpercaya.", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Silakan hubungi administrator Anda. Apabila Anda adalah administrator dari instansi ini, konfigurasikan aturan \"trusted_domains\" di config/config.php. Contoh konfigurasi disediakan di config/config.sample.php.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Tergantung pada konfigurasi Anda, sebagai seorang administrator Anda kemungkinan dapat menggunakan tombol bawah untuk mempercayai domain ini.", "Add \"%s\" as trusted domain" : "tambahkan \"%s\" sebagai domain terpercaya", "App update required" : "Diperlukan perbarui aplikasi", @@ -258,6 +313,10 @@ "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Pastikan bahwa basis data, folder konfig, dan folder data telah dicadangkan sebelum melanjutkan.", "Start update" : "Jalankan pembaruan", "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Untuk menghindari waktu habis dengan instalasi yang lebih besar, Anda bisa menjalankan perintah berikut dari direktori instalasi Anda:", + "Detailed logs" : "Log detail", + "Update needed" : "Pembaruan dibutuhkan", + "Please use the command line updater because you have a big instance." : "Gunakan pembaruan command-line karena Anda mempunyai instansi yang besar.", + "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Untuk bantuan, lihat <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentasi</a>.", "This %s instance is currently in maintenance mode, which may take a while." : "Instansi %s ini sedang dalam modus pemeliharaan, mungkin memerlukan beberapa saat.", "This page will refresh itself when the %s instance is available again." : "Halaman ini akan disegarkan dengan sendiri saat instansi %s tersebut tersedia kembali." },"pluralForm" :"nplurals=1; plural=0;" diff --git a/core/l10n/is.js b/core/l10n/is.js index 9eab9be6b8b..5d678bb125a 100644 --- a/core/l10n/is.js +++ b/core/l10n/is.js @@ -218,13 +218,10 @@ OC.L10N.register( "Hello {name}" : "Halló {name}", "new" : "nýtt", "_download %n file_::_download %n files_" : ["sækja %n skrá","sækja %n skrár"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Uppfærslan er í gangi, ef farið er af þessari síðu gæti það truflað ferlið á sumum kerfum.", - "Updating to {version}" : "Uppfæri í {version}", "An error occurred." : "Villa átti sér stað.", "Please reload the page." : "Þú ættir að hlaða síðunni aftur inn.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Uppfærslan tókst ekki. Til að fá frekari upplýsingar <a href=\"{url}\">skoðaðu færslu á spjallsvæðinu okkar</a> sem fjallar um þetta mál.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Uppfærslan tókst ekki. Skoðaðu annálana á kerfisstjórnunarsíðunni og sendu inn tilkynningu um vandamálið til <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud samfélagsins</a>.", - "The update was successful. There were warnings." : "Uppfærslan tókst. Það voru viðvaranir.", "The update was successful. Redirecting you to Nextcloud now." : "Uppfærslan heppnaðist. Beini þér til Nextcloud nú.", "Searching other places" : "Leitað á öðrum stöðum", "No search results in other folders" : "Engar leitarniðurstöður í öðrum möppum", diff --git a/core/l10n/is.json b/core/l10n/is.json index 8edde65edb7..79943968ebf 100644 --- a/core/l10n/is.json +++ b/core/l10n/is.json @@ -216,13 +216,10 @@ "Hello {name}" : "Halló {name}", "new" : "nýtt", "_download %n file_::_download %n files_" : ["sækja %n skrá","sækja %n skrár"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Uppfærslan er í gangi, ef farið er af þessari síðu gæti það truflað ferlið á sumum kerfum.", - "Updating to {version}" : "Uppfæri í {version}", "An error occurred." : "Villa átti sér stað.", "Please reload the page." : "Þú ættir að hlaða síðunni aftur inn.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Uppfærslan tókst ekki. Til að fá frekari upplýsingar <a href=\"{url}\">skoðaðu færslu á spjallsvæðinu okkar</a> sem fjallar um þetta mál.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Uppfærslan tókst ekki. Skoðaðu annálana á kerfisstjórnunarsíðunni og sendu inn tilkynningu um vandamálið til <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud samfélagsins</a>.", - "The update was successful. There were warnings." : "Uppfærslan tókst. Það voru viðvaranir.", "The update was successful. Redirecting you to Nextcloud now." : "Uppfærslan heppnaðist. Beini þér til Nextcloud nú.", "Searching other places" : "Leitað á öðrum stöðum", "No search results in other folders" : "Engar leitarniðurstöður í öðrum möppum", diff --git a/core/l10n/it.js b/core/l10n/it.js index 9606dcb76f9..e02f22836d2 100644 --- a/core/l10n/it.js +++ b/core/l10n/it.js @@ -219,13 +219,10 @@ OC.L10N.register( "Hello {name}" : "Ciao {name}", "new" : "nuovo", "_download %n file_::_download %n files_" : ["scarica %n file","scarica %s file"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "L'aggiornamento è in corso, l'abbandono di questa pagina potrebbe interrompere il processo in alcuni ambienti.", - "Updating to {version}" : "Aggiornamento a {version}", "An error occurred." : "Si è verificato un errore.", "Please reload the page." : "Ricarica la pagina.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "L'aggiornamento non è riuscito. Per ulteriori informazioni <a href=\"{url}\">controlla l'articolo del nostro forum</a> che riguarda questo problema.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "L'aggiornamento non è riuscito. Segnala il problema alla <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">comunità di Nextcloud </a>.", - "The update was successful. There were warnings." : "L'aggiornamento è stato effettuato correttamente. Ci sono degli avvisi.", "The update was successful. Redirecting you to Nextcloud now." : "L'aggiornamento è stato effettuato correttamente. Reindirizzamento immediato a Nextcloud.", "Searching other places" : "Ricerca in altre posizioni", "No search results in other folders" : "Nessun risultato di ricerca in altre cartelle", diff --git a/core/l10n/it.json b/core/l10n/it.json index 18d0b64c070..1dd8803d534 100644 --- a/core/l10n/it.json +++ b/core/l10n/it.json @@ -217,13 +217,10 @@ "Hello {name}" : "Ciao {name}", "new" : "nuovo", "_download %n file_::_download %n files_" : ["scarica %n file","scarica %s file"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "L'aggiornamento è in corso, l'abbandono di questa pagina potrebbe interrompere il processo in alcuni ambienti.", - "Updating to {version}" : "Aggiornamento a {version}", "An error occurred." : "Si è verificato un errore.", "Please reload the page." : "Ricarica la pagina.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "L'aggiornamento non è riuscito. Per ulteriori informazioni <a href=\"{url}\">controlla l'articolo del nostro forum</a> che riguarda questo problema.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "L'aggiornamento non è riuscito. Segnala il problema alla <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">comunità di Nextcloud </a>.", - "The update was successful. There were warnings." : "L'aggiornamento è stato effettuato correttamente. Ci sono degli avvisi.", "The update was successful. Redirecting you to Nextcloud now." : "L'aggiornamento è stato effettuato correttamente. Reindirizzamento immediato a Nextcloud.", "Searching other places" : "Ricerca in altre posizioni", "No search results in other folders" : "Nessun risultato di ricerca in altre cartelle", diff --git a/core/l10n/ja.js b/core/l10n/ja.js index 649a4583283..1f5dca8fcbb 100644 --- a/core/l10n/ja.js +++ b/core/l10n/ja.js @@ -214,13 +214,10 @@ OC.L10N.register( "Hello {name}" : " {name}さん、こんにちは", "new" : "新規", "_download %n file_::_download %n files_" : ["%n個のファイルをダウンロード"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "アップグレード実行中です。このページを離れると、一部の環境では処理が中断されてしまうことがあります。", - "Updating to {version}" : "{version} にアップデート", "An error occurred." : "エラーが発生しました。", "Please reload the page." : "ページをリロードしてください。", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "アップデートできませんでした。この問題に対する詳細な情報については、<a href=\"{url}\">フォーラムの投稿を確認してください</a> ", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "アップデートできませんでした。<a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud コミュニティ</a> に問題を報告してください。", - "The update was successful. There were warnings." : "アップデートは成功しました。警告がありました。", "The update was successful. Redirecting you to Nextcloud now." : "アップデート成功。Nextcloud にリダイレクトします。", "Searching other places" : "他の場所の検索", "No search results in other folders" : "他のフォルダーの検索結果はありません", diff --git a/core/l10n/ja.json b/core/l10n/ja.json index e1833a1a9de..a7ada87a0d4 100644 --- a/core/l10n/ja.json +++ b/core/l10n/ja.json @@ -212,13 +212,10 @@ "Hello {name}" : " {name}さん、こんにちは", "new" : "新規", "_download %n file_::_download %n files_" : ["%n個のファイルをダウンロード"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "アップグレード実行中です。このページを離れると、一部の環境では処理が中断されてしまうことがあります。", - "Updating to {version}" : "{version} にアップデート", "An error occurred." : "エラーが発生しました。", "Please reload the page." : "ページをリロードしてください。", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "アップデートできませんでした。この問題に対する詳細な情報については、<a href=\"{url}\">フォーラムの投稿を確認してください</a> ", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "アップデートできませんでした。<a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud コミュニティ</a> に問題を報告してください。", - "The update was successful. There were warnings." : "アップデートは成功しました。警告がありました。", "The update was successful. Redirecting you to Nextcloud now." : "アップデート成功。Nextcloud にリダイレクトします。", "Searching other places" : "他の場所の検索", "No search results in other folders" : "他のフォルダーの検索結果はありません", diff --git a/core/l10n/ko.js b/core/l10n/ko.js index c6b99d1b379..957daa1da15 100644 --- a/core/l10n/ko.js +++ b/core/l10n/ko.js @@ -193,11 +193,9 @@ OC.L10N.register( "Hello {name}" : "{name} 님 안녕하세요", "new" : "새로운 항목", "_download %n file_::_download %n files_" : ["파일 %n개 다운로드"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "업그레이드 중입니다. 이 페이지를 열어 두면 일부 환경에서 진행 과정을 중단시킬 수 있습니다.", "An error occurred." : "오류가 발생했습니다.", "Please reload the page." : "페이지를 새로 고치십시오.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "업데이트에 실패했습니다. 더 많은 정보를 보려면 이 문제를 다루은 <a href=\"{url}\">포럼 글</a>을 참조하십시오.", - "The update was successful. There were warnings." : "업데이트가 성공했습니다. 일부 경고가 있습니다.", "Searching other places" : "다른 장소 찾는 중", "No search results in other folders" : "다른 폴더에 검색 결과 없음", "_{count} search result in another folder_::_{count} search results in other folders_" : ["다른 폴더의 검색 결과 {count}개"], diff --git a/core/l10n/ko.json b/core/l10n/ko.json index 21686679885..6f4319d5885 100644 --- a/core/l10n/ko.json +++ b/core/l10n/ko.json @@ -191,11 +191,9 @@ "Hello {name}" : "{name} 님 안녕하세요", "new" : "새로운 항목", "_download %n file_::_download %n files_" : ["파일 %n개 다운로드"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "업그레이드 중입니다. 이 페이지를 열어 두면 일부 환경에서 진행 과정을 중단시킬 수 있습니다.", "An error occurred." : "오류가 발생했습니다.", "Please reload the page." : "페이지를 새로 고치십시오.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "업데이트에 실패했습니다. 더 많은 정보를 보려면 이 문제를 다루은 <a href=\"{url}\">포럼 글</a>을 참조하십시오.", - "The update was successful. There were warnings." : "업데이트가 성공했습니다. 일부 경고가 있습니다.", "Searching other places" : "다른 장소 찾는 중", "No search results in other folders" : "다른 폴더에 검색 결과 없음", "_{count} search result in another folder_::_{count} search results in other folders_" : ["다른 폴더의 검색 결과 {count}개"], diff --git a/core/l10n/nb_NO.js b/core/l10n/nb_NO.js index ac12ad916c4..dccd547dc04 100644 --- a/core/l10n/nb_NO.js +++ b/core/l10n/nb_NO.js @@ -193,11 +193,9 @@ OC.L10N.register( "Hello {name}" : "Hallo {name}", "new" : "ny", "_download %n file_::_download %n files_" : ["last ned %n fil","last ned %n filer"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "En oppdatering foregår, lukking av denne siden kan forstyrre prosessen for enkelte systemer.", "An error occurred." : "En feil oppstod.", "Please reload the page." : "Vennligst last siden på nytt.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Oppdateringen var mislykket. For mer informasjon <a href=\"{url}\">se vår forum-artikkel</a> som beskriver dette problemet.", - "The update was successful. There were warnings." : "Oppdateringen var vellykket. Det oppstod advarsler.", "Searching other places" : "Søker andre steder", "No search results in other folders" : "Ingen søkeresultater i andre mapper", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} søkeresultat i en annen mappe","{count} søkeresultater i andre mapper"], diff --git a/core/l10n/nb_NO.json b/core/l10n/nb_NO.json index 5c155330a0f..b9e935f07fa 100644 --- a/core/l10n/nb_NO.json +++ b/core/l10n/nb_NO.json @@ -191,11 +191,9 @@ "Hello {name}" : "Hallo {name}", "new" : "ny", "_download %n file_::_download %n files_" : ["last ned %n fil","last ned %n filer"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "En oppdatering foregår, lukking av denne siden kan forstyrre prosessen for enkelte systemer.", "An error occurred." : "En feil oppstod.", "Please reload the page." : "Vennligst last siden på nytt.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Oppdateringen var mislykket. For mer informasjon <a href=\"{url}\">se vår forum-artikkel</a> som beskriver dette problemet.", - "The update was successful. There were warnings." : "Oppdateringen var vellykket. Det oppstod advarsler.", "Searching other places" : "Søker andre steder", "No search results in other folders" : "Ingen søkeresultater i andre mapper", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} søkeresultat i en annen mappe","{count} søkeresultater i andre mapper"], diff --git a/core/l10n/nl.js b/core/l10n/nl.js index d648cc6b7e9..bf3ded6efe8 100644 --- a/core/l10n/nl.js +++ b/core/l10n/nl.js @@ -219,13 +219,10 @@ OC.L10N.register( "Hello {name}" : "Hallo {name}", "new" : "nieuw", "_download %n file_::_download %n files_" : ["download %n bestand","download %n bestanden"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "De update is bezig, deze pagina verlaten kan het updateproces in sommige omgevingen onderbreken.", - "Updating to {version}" : "Aan het bijwerken naar {version}", "An error occurred." : "Er heeft zich een fout voorgedaan.", "Please reload the page." : "Herlaad deze pagina.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "De update was niet succesvol. Voor meer informatie <a href=\"{url}\">zie ons bericht op het forum</a> over dit probleem.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "De update is mislukt. Meld dit probleem aan de <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>.", - "The update was successful. There were warnings." : "De update is geslaagd. Er zijn wel waarschuwingen.", "The update was successful. Redirecting you to Nextcloud now." : "De update is geslaagd. Je wordt nu doorgeleid naar Nextcloud.", "Searching other places" : "Zoeken op andere plaatsen", "No search results in other folders" : "Geen zoekresultaten in andere mappen", diff --git a/core/l10n/nl.json b/core/l10n/nl.json index f8b9c7f1236..c6f2dce325a 100644 --- a/core/l10n/nl.json +++ b/core/l10n/nl.json @@ -217,13 +217,10 @@ "Hello {name}" : "Hallo {name}", "new" : "nieuw", "_download %n file_::_download %n files_" : ["download %n bestand","download %n bestanden"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "De update is bezig, deze pagina verlaten kan het updateproces in sommige omgevingen onderbreken.", - "Updating to {version}" : "Aan het bijwerken naar {version}", "An error occurred." : "Er heeft zich een fout voorgedaan.", "Please reload the page." : "Herlaad deze pagina.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "De update was niet succesvol. Voor meer informatie <a href=\"{url}\">zie ons bericht op het forum</a> over dit probleem.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "De update is mislukt. Meld dit probleem aan de <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>.", - "The update was successful. There were warnings." : "De update is geslaagd. Er zijn wel waarschuwingen.", "The update was successful. Redirecting you to Nextcloud now." : "De update is geslaagd. Je wordt nu doorgeleid naar Nextcloud.", "Searching other places" : "Zoeken op andere plaatsen", "No search results in other folders" : "Geen zoekresultaten in andere mappen", diff --git a/core/l10n/pl.js b/core/l10n/pl.js index cfa55827633..4eaa8b9c343 100644 --- a/core/l10n/pl.js +++ b/core/l10n/pl.js @@ -201,13 +201,10 @@ OC.L10N.register( "Hello {name}" : "Witaj {name}", "new" : "nowy", "_download %n file_::_download %n files_" : ["pobrano %n plik","pobrano %n plików","pobrano %n plików"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Trwa aktualizacja. W niektórych przypadkach, opuszczenie tej strony może przerwać ten proces.", - "Updating to {version}" : "Uaktualnianie do {version}", "An error occurred." : "Wystąpił błąd", "Please reload the page." : "Proszę przeładować stronę", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Aktualizacja nie powiodła się. Aby uzyskać więcej informacji prosimy o <a href=\"{url}\">sprawdzenie naszego forum</a> które omawia ten problem.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Aktualizacja nie powiodła się. Prosimy o poinformowanie o tym problemie <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">społeczności Nextcloud</a>.", - "The update was successful. There were warnings." : "Aktualizacja przebiegła pomyślnie. Pojawiły się ostrzeżenia.", "The update was successful. Redirecting you to Nextcloud now." : "Aktualizacja przebiegła pomyślnie. Trwa przekierowywanie do Nextcloud.", "Searching other places" : "Przeszukaj inne miejsca", "No search results in other folders" : "Brak wyników wyszukiwania w innych folderach", diff --git a/core/l10n/pl.json b/core/l10n/pl.json index fabb3deed20..731e4275c93 100644 --- a/core/l10n/pl.json +++ b/core/l10n/pl.json @@ -199,13 +199,10 @@ "Hello {name}" : "Witaj {name}", "new" : "nowy", "_download %n file_::_download %n files_" : ["pobrano %n plik","pobrano %n plików","pobrano %n plików"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Trwa aktualizacja. W niektórych przypadkach, opuszczenie tej strony może przerwać ten proces.", - "Updating to {version}" : "Uaktualnianie do {version}", "An error occurred." : "Wystąpił błąd", "Please reload the page." : "Proszę przeładować stronę", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Aktualizacja nie powiodła się. Aby uzyskać więcej informacji prosimy o <a href=\"{url}\">sprawdzenie naszego forum</a> które omawia ten problem.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Aktualizacja nie powiodła się. Prosimy o poinformowanie o tym problemie <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">społeczności Nextcloud</a>.", - "The update was successful. There were warnings." : "Aktualizacja przebiegła pomyślnie. Pojawiły się ostrzeżenia.", "The update was successful. Redirecting you to Nextcloud now." : "Aktualizacja przebiegła pomyślnie. Trwa przekierowywanie do Nextcloud.", "Searching other places" : "Przeszukaj inne miejsca", "No search results in other folders" : "Brak wyników wyszukiwania w innych folderach", diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js index 4df85eeb398..4bd931efc1c 100644 --- a/core/l10n/pt_BR.js +++ b/core/l10n/pt_BR.js @@ -219,13 +219,10 @@ OC.L10N.register( "Hello {name}" : "Olá {name}", "new" : "novo", "_download %n file_::_download %n files_" : ["baixar %n arquivo","baixar %n arquivos"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A atualização está em andamento, deixando esta página pode haver interrupção do processo em alguns ambientes.", - "Updating to {version}" : "Atualizando para {version}", "An error occurred." : "Ocorreu um erro.", "Please reload the page." : "Por favor recarregue a página", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "A atualização não foi realizada com sucesso. Para mais informações <a href=\"{url}\">verifique o nosso post no fórum</a> que abrange esta questão.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Atualizado com sucesso. Por favor, informe este problema para a <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">comunidade Nextcloud</a>.", - "The update was successful. There were warnings." : "A atualização foi bem sucedida. Havia advertências.", "The update was successful. Redirecting you to Nextcloud now." : "Atualizado com sucesso. Redirecionando para Nextcloud.", "Searching other places" : "Pesquisando em outros lugares", "No search results in other folders" : "Nenhum resultado de pesquisa em outras pastas", diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json index 3e0e63db6a3..49370b740af 100644 --- a/core/l10n/pt_BR.json +++ b/core/l10n/pt_BR.json @@ -217,13 +217,10 @@ "Hello {name}" : "Olá {name}", "new" : "novo", "_download %n file_::_download %n files_" : ["baixar %n arquivo","baixar %n arquivos"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A atualização está em andamento, deixando esta página pode haver interrupção do processo em alguns ambientes.", - "Updating to {version}" : "Atualizando para {version}", "An error occurred." : "Ocorreu um erro.", "Please reload the page." : "Por favor recarregue a página", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "A atualização não foi realizada com sucesso. Para mais informações <a href=\"{url}\">verifique o nosso post no fórum</a> que abrange esta questão.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Atualizado com sucesso. Por favor, informe este problema para a <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">comunidade Nextcloud</a>.", - "The update was successful. There were warnings." : "A atualização foi bem sucedida. Havia advertências.", "The update was successful. Redirecting you to Nextcloud now." : "Atualizado com sucesso. Redirecionando para Nextcloud.", "Searching other places" : "Pesquisando em outros lugares", "No search results in other folders" : "Nenhum resultado de pesquisa em outras pastas", diff --git a/core/l10n/pt_PT.js b/core/l10n/pt_PT.js index fc5d33c77a0..ab476443ec1 100644 --- a/core/l10n/pt_PT.js +++ b/core/l10n/pt_PT.js @@ -213,12 +213,9 @@ OC.L10N.register( "Hello {name}" : "Olá {name}", "new" : "novo", "_download %n file_::_download %n files_" : ["transferir %n ficheiro","transferir %n ficheiros"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A atualização está em curso. Se deixar esta página agora poderá interromper o processo em alguns ambientes.", - "Updating to {version}" : "A atualizar para {version}", "An error occurred." : "Ocorreu um erro.", "Please reload the page." : "Por favor, recarregue a página.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "A atualização falhou. Para mais informação <a href=\"{url}\">verifique o nosso fórum</a> sobre como resolver este problema.", - "The update was successful. There were warnings." : "A atualização foi bem sucedida. Tem alguns avisos.", "Searching other places" : "A pesquisar noutros lugares", "No search results in other folders" : "Sem resultados de procura nas outras pastas", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} resultado de pesquisa noutra pasta","{count} resultados de pesquisa noutras pastas"], diff --git a/core/l10n/pt_PT.json b/core/l10n/pt_PT.json index bc798b9173e..fc6a81560a4 100644 --- a/core/l10n/pt_PT.json +++ b/core/l10n/pt_PT.json @@ -211,12 +211,9 @@ "Hello {name}" : "Olá {name}", "new" : "novo", "_download %n file_::_download %n files_" : ["transferir %n ficheiro","transferir %n ficheiros"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A atualização está em curso. Se deixar esta página agora poderá interromper o processo em alguns ambientes.", - "Updating to {version}" : "A atualizar para {version}", "An error occurred." : "Ocorreu um erro.", "Please reload the page." : "Por favor, recarregue a página.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "A atualização falhou. Para mais informação <a href=\"{url}\">verifique o nosso fórum</a> sobre como resolver este problema.", - "The update was successful. There were warnings." : "A atualização foi bem sucedida. Tem alguns avisos.", "Searching other places" : "A pesquisar noutros lugares", "No search results in other folders" : "Sem resultados de procura nas outras pastas", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} resultado de pesquisa noutra pasta","{count} resultados de pesquisa noutras pastas"], diff --git a/core/l10n/ro.js b/core/l10n/ro.js index c332051ef6f..3499092142a 100644 --- a/core/l10n/ro.js +++ b/core/l10n/ro.js @@ -184,11 +184,8 @@ OC.L10N.register( "Hello {name}" : "Salut {name}", "new" : "nou", "_download %n file_::_download %n files_" : ["descarcă %n fișier","descarcă %n fișiere","descarcă %n fișiere"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Actualizarea este în progres, părăsirea acestei pagini ar putea duce la întreruperea procesului în unele medii.", - "Updating to {version}" : "Actualizare la {version}", "An error occurred." : "A apărut o eroare.", "Please reload the page." : "Te rugăm să reîncarci pagina.", - "The update was successful. There were warnings." : "Actualizarea nu a avut loc cu succes. Au existat avertismente.", "Searching other places" : "Se caută în alte locuri", "No search results in other folders" : "Nu există rezultate ale căutării în alte directoare", "Personal" : "Personal", diff --git a/core/l10n/ro.json b/core/l10n/ro.json index cbd63462757..58c0fcda531 100644 --- a/core/l10n/ro.json +++ b/core/l10n/ro.json @@ -182,11 +182,8 @@ "Hello {name}" : "Salut {name}", "new" : "nou", "_download %n file_::_download %n files_" : ["descarcă %n fișier","descarcă %n fișiere","descarcă %n fișiere"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Actualizarea este în progres, părăsirea acestei pagini ar putea duce la întreruperea procesului în unele medii.", - "Updating to {version}" : "Actualizare la {version}", "An error occurred." : "A apărut o eroare.", "Please reload the page." : "Te rugăm să reîncarci pagina.", - "The update was successful. There were warnings." : "Actualizarea nu a avut loc cu succes. Au existat avertismente.", "Searching other places" : "Se caută în alte locuri", "No search results in other folders" : "Nu există rezultate ale căutării în alte directoare", "Personal" : "Personal", diff --git a/core/l10n/ru.js b/core/l10n/ru.js index d5f1b1375ec..92246d344fa 100644 --- a/core/l10n/ru.js +++ b/core/l10n/ru.js @@ -131,6 +131,7 @@ OC.L10N.register( "Strong password" : "Устойчивый к взлому пароль", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Ваш веб-сервер еще не настроен должным образом чтобы позволить синхронизацию файлов, потому что интерфейс WebDAV, кажется, испорчен.", "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Ваш веб-сервер настроен не корректно для разрешения \"{url}\". Дополнительная информация может быть найдена в нашей <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">документации</a>.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Этот сервер не имеет подключения к Интернету: множество конечных устройств не могут быть доступны. Это означает, что некоторые из функций, таких как подключение внешнего хранилища, уведомления об обновлениях или установка сторонних приложений не будут работать. Удалённый доступ к файлам и отправка уведомлений по электронной почте также могут не работать. Рекомендуется разрешить данному серверу доступ в Интернет, если хотите, чтобы все функции работали.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Не настроена система кеширования. Для увеличения производительности сервера, по возможности, настройте memcache. Более подробная информация в нашей <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">документации</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "PHP не имеет доступа на чтение к /dev/urandom, что крайне нежелательно по соображениям безопасности. Дополнительную информацию можно найти в нашей <a target=\"_blank\" href=\"{docLink}\"> документации </a>.", "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Вы используете PHP {version}. Рекомендуется обновить версию PHP, чтобы воспользоваться <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">улучшениями производительности и безопасности, внедрёнными PHP Group</a> как только новая версия будет доступна в Вашем дистрибутиве. ", @@ -153,12 +154,17 @@ OC.L10N.register( "Expiration" : "Срок действия", "Expiration date" : "Дата окончания", "Choose a password for the public link" : "Укажите пароль для публичной ссылки", + "Copied!" : "Скопировано!", + "Not supported!" : "Не поддерживается!", + "Press ⌘-C to copy." : "Нажмите ⌘-C для копирования.", + "Press Ctrl-C to copy." : "Нажмите Ctrl-C для копирования.", "Resharing is not allowed" : "Повторное открытие доступа запрещено", "Share link" : "Поделиться ссылкой", "Link" : "Ссылка", "Password protect" : "Защитить паролем", "Password" : "Пароль", "Allow editing" : "Разрешить редактирование", + "Hide file listing" : "Скрыть список файлов", "Email link to person" : "Отправить ссылку по электронной почте", "Send" : "Отправить", "Sending ..." : "Отправляется ...", @@ -213,13 +219,10 @@ OC.L10N.register( "Hello {name}" : "Здравствуйте {name}", "new" : "новый", "_download %n file_::_download %n files_" : ["скачать %n файл","скачать %n файла","скачать %n файлов","скачать %n файлов"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Идет обновление. Покидая эту страницу, вы можете прервать процесс обновления.", - "Updating to {version}" : "Обновляем до {version}", "An error occurred." : "Произошла ошибка.", "Please reload the page." : "Пожалуйста, обновите страницу.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Обновление прошло не успешно. Больше информации о данной проблеме можно найти <a href=\"{url}\">в сообщении на нащем форуме</a>.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Обновление не удалось. Пожалуйста, сообщите об этой проблеме <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">сообществу Nextcloud</a>.", - "The update was successful. There were warnings." : "Обновление прошло успешно. Были предупреждения.", "The update was successful. Redirecting you to Nextcloud now." : "Обновление прошло успешно. Перенаправляем вас на Nextcloud прямо сейчас.", "Searching other places" : "Идет поиск в других местах", "No search results in other folders" : "В других папках ничего не найдено", diff --git a/core/l10n/ru.json b/core/l10n/ru.json index cfcaa1eb101..a22f6640946 100644 --- a/core/l10n/ru.json +++ b/core/l10n/ru.json @@ -129,6 +129,7 @@ "Strong password" : "Устойчивый к взлому пароль", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Ваш веб-сервер еще не настроен должным образом чтобы позволить синхронизацию файлов, потому что интерфейс WebDAV, кажется, испорчен.", "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Ваш веб-сервер настроен не корректно для разрешения \"{url}\". Дополнительная информация может быть найдена в нашей <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">документации</a>.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Этот сервер не имеет подключения к Интернету: множество конечных устройств не могут быть доступны. Это означает, что некоторые из функций, таких как подключение внешнего хранилища, уведомления об обновлениях или установка сторонних приложений не будут работать. Удалённый доступ к файлам и отправка уведомлений по электронной почте также могут не работать. Рекомендуется разрешить данному серверу доступ в Интернет, если хотите, чтобы все функции работали.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Не настроена система кеширования. Для увеличения производительности сервера, по возможности, настройте memcache. Более подробная информация в нашей <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">документации</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "PHP не имеет доступа на чтение к /dev/urandom, что крайне нежелательно по соображениям безопасности. Дополнительную информацию можно найти в нашей <a target=\"_blank\" href=\"{docLink}\"> документации </a>.", "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Вы используете PHP {version}. Рекомендуется обновить версию PHP, чтобы воспользоваться <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">улучшениями производительности и безопасности, внедрёнными PHP Group</a> как только новая версия будет доступна в Вашем дистрибутиве. ", @@ -151,12 +152,17 @@ "Expiration" : "Срок действия", "Expiration date" : "Дата окончания", "Choose a password for the public link" : "Укажите пароль для публичной ссылки", + "Copied!" : "Скопировано!", + "Not supported!" : "Не поддерживается!", + "Press ⌘-C to copy." : "Нажмите ⌘-C для копирования.", + "Press Ctrl-C to copy." : "Нажмите Ctrl-C для копирования.", "Resharing is not allowed" : "Повторное открытие доступа запрещено", "Share link" : "Поделиться ссылкой", "Link" : "Ссылка", "Password protect" : "Защитить паролем", "Password" : "Пароль", "Allow editing" : "Разрешить редактирование", + "Hide file listing" : "Скрыть список файлов", "Email link to person" : "Отправить ссылку по электронной почте", "Send" : "Отправить", "Sending ..." : "Отправляется ...", @@ -211,13 +217,10 @@ "Hello {name}" : "Здравствуйте {name}", "new" : "новый", "_download %n file_::_download %n files_" : ["скачать %n файл","скачать %n файла","скачать %n файлов","скачать %n файлов"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Идет обновление. Покидая эту страницу, вы можете прервать процесс обновления.", - "Updating to {version}" : "Обновляем до {version}", "An error occurred." : "Произошла ошибка.", "Please reload the page." : "Пожалуйста, обновите страницу.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Обновление прошло не успешно. Больше информации о данной проблеме можно найти <a href=\"{url}\">в сообщении на нащем форуме</a>.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Обновление не удалось. Пожалуйста, сообщите об этой проблеме <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">сообществу Nextcloud</a>.", - "The update was successful. There were warnings." : "Обновление прошло успешно. Были предупреждения.", "The update was successful. Redirecting you to Nextcloud now." : "Обновление прошло успешно. Перенаправляем вас на Nextcloud прямо сейчас.", "Searching other places" : "Идет поиск в других местах", "No search results in other folders" : "В других папках ничего не найдено", diff --git a/core/l10n/sk_SK.js b/core/l10n/sk_SK.js index 4895c7b6173..f7300a0ce17 100644 --- a/core/l10n/sk_SK.js +++ b/core/l10n/sk_SK.js @@ -192,12 +192,9 @@ OC.L10N.register( "Hello {name}" : "Vitaj {name}", "new" : "nový", "_download %n file_::_download %n files_" : ["stiahnuť %n súbor","stiahnuť %n súbory","stiahnuť %n súborov"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Aktualizácie prebieha. V niektorých prostrediach môže opustenie tejto stránky spôsobiť prerušenie aktualizácie.", - "Updating to {version}" : "Aktualizuje sa na {version}", "An error occurred." : "Vyskytla sa chyba.", "Please reload the page." : "Obnovte prosím stránku.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Aktualizácia neprebehla úspešne. Pre viac informácií <a href=\"{url}\">navštívte príspevok na našom fóre</a>, ktorý pokrýva tento problém.", - "The update was successful. There were warnings." : "Aktualizácia bola úspešná. Vyskytli sa upozornenia.", "Searching other places" : "Prehľadanie ostatných umiestnení", "No search results in other folders" : "Žiadne výsledky vyhľadávania v ostatných priečinkoch", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} výsledok vyhľadávania v ostatných priečinkoch","{count} výsledky vyhľadávania v ostatných priečinkoch","{count} výsledkov vyhľadávania v ostatných priečinkoch"], diff --git a/core/l10n/sk_SK.json b/core/l10n/sk_SK.json index 33025ebfce5..af3165beec8 100644 --- a/core/l10n/sk_SK.json +++ b/core/l10n/sk_SK.json @@ -190,12 +190,9 @@ "Hello {name}" : "Vitaj {name}", "new" : "nový", "_download %n file_::_download %n files_" : ["stiahnuť %n súbor","stiahnuť %n súbory","stiahnuť %n súborov"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Aktualizácie prebieha. V niektorých prostrediach môže opustenie tejto stránky spôsobiť prerušenie aktualizácie.", - "Updating to {version}" : "Aktualizuje sa na {version}", "An error occurred." : "Vyskytla sa chyba.", "Please reload the page." : "Obnovte prosím stránku.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Aktualizácia neprebehla úspešne. Pre viac informácií <a href=\"{url}\">navštívte príspevok na našom fóre</a>, ktorý pokrýva tento problém.", - "The update was successful. There were warnings." : "Aktualizácia bola úspešná. Vyskytli sa upozornenia.", "Searching other places" : "Prehľadanie ostatných umiestnení", "No search results in other folders" : "Žiadne výsledky vyhľadávania v ostatných priečinkoch", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} výsledok vyhľadávania v ostatných priečinkoch","{count} výsledky vyhľadávania v ostatných priečinkoch","{count} výsledkov vyhľadávania v ostatných priečinkoch"], diff --git a/core/l10n/sl.js b/core/l10n/sl.js index 8e49dd74e26..783219ecb2d 100644 --- a/core/l10n/sl.js +++ b/core/l10n/sl.js @@ -212,13 +212,10 @@ OC.L10N.register( "Hello {name}" : "Pozdravljeni, {name}", "new" : "novo", "_download %n file_::_download %n files_" : ["prejmi %n datoteko","prejmi %n datoteki","prejmi %n datoteke","prejmi %n datotek"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Trenutno se izvaja posodobitev sistema. Priporočljivo je počakati, saj se lahko opravilo, če stran zapustite, prekine.", - "Updating to {version}" : "Posodabljanje na različico {version}", "An error occurred." : "Prišlo je do napake.", "Please reload the page." : "Stran je treba ponovno naložiti", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Posodobitev je spodletela. Za več podrobnosti o napaki je <a href=\"{url}\">objavljenih na forumu</a>.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Posodobitev ni bila uspešna. Prosimo, prijavite to situacijo na <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud skupnost</a>.", - "The update was successful. There were warnings." : "Posodobitev je uspešno končana, vendar z nekaj opozorili.", "The update was successful. Redirecting you to Nextcloud now." : "Posodobitev je bila uspešna. Stran bo preusmerjena na NextCloud", "Searching other places" : "Iskanje drugih mest", "No search results in other folders" : "Iskanje po drugih mapah ni vrnilo rezultata", diff --git a/core/l10n/sl.json b/core/l10n/sl.json index be6cb3b1ff7..a729279cec9 100644 --- a/core/l10n/sl.json +++ b/core/l10n/sl.json @@ -210,13 +210,10 @@ "Hello {name}" : "Pozdravljeni, {name}", "new" : "novo", "_download %n file_::_download %n files_" : ["prejmi %n datoteko","prejmi %n datoteki","prejmi %n datoteke","prejmi %n datotek"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Trenutno se izvaja posodobitev sistema. Priporočljivo je počakati, saj se lahko opravilo, če stran zapustite, prekine.", - "Updating to {version}" : "Posodabljanje na različico {version}", "An error occurred." : "Prišlo je do napake.", "Please reload the page." : "Stran je treba ponovno naložiti", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Posodobitev je spodletela. Za več podrobnosti o napaki je <a href=\"{url}\">objavljenih na forumu</a>.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Posodobitev ni bila uspešna. Prosimo, prijavite to situacijo na <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud skupnost</a>.", - "The update was successful. There were warnings." : "Posodobitev je uspešno končana, vendar z nekaj opozorili.", "The update was successful. Redirecting you to Nextcloud now." : "Posodobitev je bila uspešna. Stran bo preusmerjena na NextCloud", "Searching other places" : "Iskanje drugih mest", "No search results in other folders" : "Iskanje po drugih mapah ni vrnilo rezultata", diff --git a/core/l10n/sq.js b/core/l10n/sq.js index 8159b693197..22cae8d3631 100644 --- a/core/l10n/sq.js +++ b/core/l10n/sq.js @@ -213,12 +213,9 @@ OC.L10N.register( "Hello {name}" : "Tungjatjeta {name}", "new" : "re", "_download %n file_::_download %n files_" : ["shkarko %n kartelë","shkarko %n kartela"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Përmirësimi po kryhet, braktisja e kësaj faqeje mund ta ndërpresë procesin në disa mjedise.", - "Updating to {version}" : "Po përditësohet me {version}", "An error occurred." : "Ndodhi një gabim.", "Please reload the page." : "Ju lutemi, ringarkoni faqen.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Përditësimi qe i pasuksesshëm. Për më tepër të dhëna <a href=\"{url}\">shihni postimin te forumi ynë</a> lidhur me këtë çështje.", - "The update was successful. There were warnings." : "Përditësimi qe i suksesshëm. Pati sinjalizime.", "Searching other places" : "Po kërkohet në vende të tjera", "No search results in other folders" : "S’u gjetën përfundime në dosje të tjera", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} përfundim kërkimi në një tjetër dosje","{count} përfundime kërkimi në dosje të tjera"], diff --git a/core/l10n/sq.json b/core/l10n/sq.json index b9a9f9da4d4..65bc90d1893 100644 --- a/core/l10n/sq.json +++ b/core/l10n/sq.json @@ -211,12 +211,9 @@ "Hello {name}" : "Tungjatjeta {name}", "new" : "re", "_download %n file_::_download %n files_" : ["shkarko %n kartelë","shkarko %n kartela"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Përmirësimi po kryhet, braktisja e kësaj faqeje mund ta ndërpresë procesin në disa mjedise.", - "Updating to {version}" : "Po përditësohet me {version}", "An error occurred." : "Ndodhi një gabim.", "Please reload the page." : "Ju lutemi, ringarkoni faqen.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Përditësimi qe i pasuksesshëm. Për më tepër të dhëna <a href=\"{url}\">shihni postimin te forumi ynë</a> lidhur me këtë çështje.", - "The update was successful. There were warnings." : "Përditësimi qe i suksesshëm. Pati sinjalizime.", "Searching other places" : "Po kërkohet në vende të tjera", "No search results in other folders" : "S’u gjetën përfundime në dosje të tjera", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} përfundim kërkimi në një tjetër dosje","{count} përfundime kërkimi në dosje të tjera"], diff --git a/core/l10n/sv.js b/core/l10n/sv.js index 5263654a281..1ca343ab901 100644 --- a/core/l10n/sv.js +++ b/core/l10n/sv.js @@ -214,13 +214,10 @@ OC.L10N.register( "Hello {name}" : "Hej {name}", "new" : "ny", "_download %n file_::_download %n files_" : ["Ladda ner %n fil","Ladda ner %n filer"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Uppgradering pågår, att lämna denna sidan kan störa processen i vissa miljöer", - "Updating to {version}" : "Uppdaterar till {version}", "An error occurred." : "Ett fel inträffade.", "Please reload the page." : "Vänligen ladda om sidan.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Uppdateringen misslyckades. För mer information <a href=\"{url}\">kolla vår forum post</a> angående problemet.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Uppdateringen misslyckades. Vänligen rapportera felet till <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>.", - "The update was successful. There were warnings." : "Uppdateringen lyckades. Det finns varningar.", "The update was successful. Redirecting you to Nextcloud now." : "Uppdateringen lyckades. Omdirigerar nu till Nextcloud.", "Searching other places" : "Söker på andra platser", "No search results in other folders" : "Inga sökresultat i andra mappar", diff --git a/core/l10n/sv.json b/core/l10n/sv.json index d108b247141..a87b9d57b64 100644 --- a/core/l10n/sv.json +++ b/core/l10n/sv.json @@ -212,13 +212,10 @@ "Hello {name}" : "Hej {name}", "new" : "ny", "_download %n file_::_download %n files_" : ["Ladda ner %n fil","Ladda ner %n filer"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Uppgradering pågår, att lämna denna sidan kan störa processen i vissa miljöer", - "Updating to {version}" : "Uppdaterar till {version}", "An error occurred." : "Ett fel inträffade.", "Please reload the page." : "Vänligen ladda om sidan.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Uppdateringen misslyckades. För mer information <a href=\"{url}\">kolla vår forum post</a> angående problemet.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Uppdateringen misslyckades. Vänligen rapportera felet till <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>.", - "The update was successful. There were warnings." : "Uppdateringen lyckades. Det finns varningar.", "The update was successful. Redirecting you to Nextcloud now." : "Uppdateringen lyckades. Omdirigerar nu till Nextcloud.", "Searching other places" : "Söker på andra platser", "No search results in other folders" : "Inga sökresultat i andra mappar", diff --git a/core/l10n/th_TH.js b/core/l10n/th_TH.js index 6b10304f72d..60197e7d446 100644 --- a/core/l10n/th_TH.js +++ b/core/l10n/th_TH.js @@ -195,11 +195,8 @@ OC.L10N.register( "Hello {name}, the weather is {weather}" : "สวัสดี {name} สภาพอากาศวันนี้มี {weather}", "Hello {name}" : "สวัสดี {name}", "_download %n file_::_download %n files_" : ["ดาวน์โหลด %n ไฟล์"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "กำลังดำเนินการอัพเกรด หากออกจากหน้านี้ ณ เวลานี้อาจเกิดปัญหาในภายหลัง", - "Updating to {version}" : "กำลังอัพเดทเป็นรุ่น {version}", "An error occurred." : "เกิดข้อผิดพลาด", "Please reload the page." : "โปรดโหลดหน้าเว็บใหม่", - "The update was successful. There were warnings." : "การอัพเดทสำเร็จ แต่มีคำเตือนอยู่", "Searching other places" : "กำลังค้นหาสถานที่อื่นๆ", "No search results in other folders" : "ไม่พบผลลัพธ์การค้นหาในโฟลเดอร์อื่นๆ", "_{count} search result in another folder_::_{count} search results in other folders_" : ["ค้นหาพบ {count} ผลลัพธ์ในโฟลเดอร์อื่นๆ"], diff --git a/core/l10n/th_TH.json b/core/l10n/th_TH.json index 4880e76edf1..b18060ddae9 100644 --- a/core/l10n/th_TH.json +++ b/core/l10n/th_TH.json @@ -193,11 +193,8 @@ "Hello {name}, the weather is {weather}" : "สวัสดี {name} สภาพอากาศวันนี้มี {weather}", "Hello {name}" : "สวัสดี {name}", "_download %n file_::_download %n files_" : ["ดาวน์โหลด %n ไฟล์"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "กำลังดำเนินการอัพเกรด หากออกจากหน้านี้ ณ เวลานี้อาจเกิดปัญหาในภายหลัง", - "Updating to {version}" : "กำลังอัพเดทเป็นรุ่น {version}", "An error occurred." : "เกิดข้อผิดพลาด", "Please reload the page." : "โปรดโหลดหน้าเว็บใหม่", - "The update was successful. There were warnings." : "การอัพเดทสำเร็จ แต่มีคำเตือนอยู่", "Searching other places" : "กำลังค้นหาสถานที่อื่นๆ", "No search results in other folders" : "ไม่พบผลลัพธ์การค้นหาในโฟลเดอร์อื่นๆ", "_{count} search result in another folder_::_{count} search results in other folders_" : ["ค้นหาพบ {count} ผลลัพธ์ในโฟลเดอร์อื่นๆ"], diff --git a/core/l10n/tr.js b/core/l10n/tr.js index 2ed9f0f00f1..bda6b0321b3 100644 --- a/core/l10n/tr.js +++ b/core/l10n/tr.js @@ -130,9 +130,18 @@ OC.L10N.register( "Good password" : "İyi parola", "Strong password" : "Güçlü parola", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Web sunucunuz dosya transferi için düzgün bir şekilde yapılandırılmamış. WevDAV arabirimini sorunlu gözüküyor.", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Web sunucunuz \"{url}\" adresini çözümleyecek şekilde uygun yapılandırılmamış. Daha fazla bilgi <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">belgelendirmemizde</a> bulunabilir.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Bu sunucunun çalışan bir İnternet bağlantısı yok. Birden fazla uç noktaya ulaşılamıyor. Bu, harici depolama alanı bağlama, güncelleştirme bildirimleri veya üçüncü parti uygulama kurma gibi bazı özellikler çalışmayacak demektir. Uzak dosyalara erişim ve e-posta ile bildirim gönderme de çalışmayacaktır. Eğer bu özelliklerin tamamını kullanmak istiyorsanız, sunucu için İnternet bağlantısını etkinleştirmenizi öneriyoruz.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Hafıza önbelleği yapılandırılmamış. İmkanı varsa performansı iyileştirmek için bir önbellek yapılandırması yapın. Daha fazla bilgiyi <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">belgelendirmemizde</a> bulabilirsiniz.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Güvenlik nedeniyle çokça önerilen /dev/urandom PHP tarafından okunamıyor. Daha fazla bilgiyi <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">belgelendirmemizde</a> bulabilirsiniz.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Halen PHP {version} kullanıyorsunuz. Dağıtımınız destekler desteklemez PHP sürümünüzü güncelleyerek <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performans ve güvenlik geliştirmelerinden</a> faydalanmanızı öneriyoruz.", + "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Ters vekil sunucu başlık yapılandırmanız hatalı veya ownCloud'a güvenilen bir vekil sunucudan erişiyorsunuz. Eğer erişiminiz güvenilen bir vekil sunucu aracılığıyla gerçekleşmiyorsa bu bir güvenlik sorunudur ve bir saldırganın IP adresini farklıymış gibi göstermesine neden olabilir. Daha fazla bilgiyi <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">belgelendirmemizde</a> bulabilirsiniz.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached dağıtık bellek olarak yapılandırılmış ama hatalı PHP \"memcache\" modülü kurulmuş. \\OC\\Memcache\\Memcached sadece \"memcached\" modülünü destekler, \"memcache\"i değil. <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wikisinde iki modül hakkında da</a> bilgi bulabilirsiniz.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Bazı dosyalar bütünlük kontrolünü geçemedi. Bu sorunun üstesinden nasıl geleceğinizi <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">belgelendirmemizde</a> bulabilirsiniz. (<a href=\"{codeIntegrityDownloadEndpoint}\">Geçersiz dosyaların listesi…</a> / <a href=\"{rescanEndpoint}\">Tekrar tara…</a>)", "Error occurred while checking server setup" : "Sunucu yapılandırması denetlenirken hata oluştu", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "data dizininiz ve dosyalarınız büyük ihtimalle İnternet üzerinden erişilebilir. .htaccess dosyası çalışmıyor. Web sunucunuzu yapılandırarak data dizinine erişimi kapatmanızı veya data dizinini web sunucu belge dizini dışına almanızı şiddetle tavsiye ederiz.", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP başlığı \"{expected}\" ile eşleşmek üzere yapılandırılmamış. Bu muhtemel bir güvenlik veya gizlilik riski olduğundan bu ayarı düzeltmenizi öneririz.", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "\"Strict-Transport-Security\" HTTP başlığı en azından\"{seconds}\" saniyedir yapılandırılmamış. Gelişmiş güvenlik için <a href=\"{docUrl}\" rel=\"noreferrer\">güvenlik ipuçlarında</a> tarif edildiği gibi HSTS'nin etkinleştirilmesini öneririz.", "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Bu siteye HTTP aracılığıyla erişiyorsunuz. Sunucunuzu <a href=\"{docUrl}\">güvenlik ipuçlarımızda</a> gösterildiği şekilde HTTPS kullanımını zorlamak üzere yapılandırmanızı şiddetle öneririz.", "Shared" : "Paylaşılan", "Shared with {recipients}" : "{recipients} ile paylaşılmış", @@ -145,6 +154,10 @@ OC.L10N.register( "Expiration" : "Bitiş", "Expiration date" : "Son kullanım tarihi", "Choose a password for the public link" : "Herkese açık bağlantı için bir parola seçin", + "Copied!" : "Kopyalandı!", + "Not supported!" : "Desteklenmiyor!", + "Press ⌘-C to copy." : "Kopyalamak için ⌘-C kullanın.", + "Press Ctrl-C to copy." : "Kopyalamak için Ctrl-C kullanın.", "Resharing is not allowed" : "Tekrar paylaşmaya izin verilmiyor", "Share link" : "Paylaşma bağlantısı", "Link" : "Bağlantı", @@ -192,6 +205,7 @@ OC.L10N.register( "({scope})" : "({scope})", "Delete" : "Sil", "Rename" : "Yeniden adlandır", + "Collaborative tags" : "İşbirlikçi etiketler", "The object type is not specified." : "Nesne türü belirtilmemiş.", "Enter new" : "Yeni girin", "Add" : "Ekle", @@ -205,13 +219,10 @@ OC.L10N.register( "Hello {name}" : "Merhaba {name}", "new" : "Yeni", "_download %n file_::_download %n files_" : ["%n dosya indir","%n dosya indir"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Güncelleme yapılıyor, sayfadan ayrılmak bazı işlemleri kesebilir.", - "Updating to {version}" : "{version} sürümüne güncelleniyor", "An error occurred." : "Bir hata oluştu", "Please reload the page." : "Lütfen sayfayı yeniden yükleyin.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Güncelleme başarısız oldu. Daha fazla bilgi için bu sorunu kapsayan <a href=\"{url}\">forum gönderimize</a> bakın.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Güncelleme işlemi maalesef başarısızlığa uğradı. Lütfen bu surunu <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud topluluğu</a>na bildirin. ", - "The update was successful. There were warnings." : "Güncelleme başarılı. Uyarılar mevcut.", "The update was successful. Redirecting you to Nextcloud now." : "Güncelleme başarılı oldu. Nextcloud'a yönlendiriliyorsunuz.", "Searching other places" : "Diğer konumlarda aranıyor", "No search results in other folders" : "Diğer klasörlerde arama sonucu yok", @@ -243,6 +254,7 @@ OC.L10N.register( "Trace" : "İz", "Security warning" : "Güvenlik uyarısı", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Veri klasörünüz ve dosyalarınız .htaccess dosyası çalışmadığı için İnternet'ten erişime açık.", + "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Sunucunuzu nasıl yapılandıracağınız hakkında bilgi almak için <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">belgelendirmeye</a> bakabilirsiniz.", "Create an <strong>admin account</strong>" : "Bir <strong>yönetici hesabı</strong> oluşturun", "Username" : "Kullanıcı Adı", "Storage & database" : "Depolama ve veritabanı", @@ -287,7 +299,9 @@ OC.L10N.register( "Contact your system administrator if this message persists or appeared unexpectedly." : "Eğer bu ileti görünmeye devam ederse veya beklenmedik şekilde ortaya çıkmışsa sistem yöneticinizle iletişime geçin.", "Thank you for your patience." : "Sabrınız için teşekkür ederiz.", "Two-step verification" : "2 adımlı doğrulama", + "Enhanced security has been enabled for your account. Please authenticate using a second factor." : "Hesabınız için gelişmiş güvenlik etkinleştirildi. Lütfen ikinci etkeni kullanarak kimlik doğrulaması yapın.", "Cancel login" : "Girişi iptal et", + "Please authenticate using the selected factor." : "Lütfen seçilen etkeni kullanarak kimlik doğrulaması yapın.", "An error occured while verifying the token" : "Anahtarı(token) doğrularken bir hata oluştu", "You are accessing the server from an untrusted domain." : "Sunucuya güvenilmeyen bir alan adından ulaşıyorsunuz.", "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Lütfen yöneticiniz ile iletişime geçin. Eğer bu örneğin bir yöneticisi iseniz, config/config.php dosyası içerisindeki \"trusted_domain\" ayarını yapılandırın. Bu yapılandırmanın bir örneği config/config.sample.php dosyasında verilmiştir.", diff --git a/core/l10n/tr.json b/core/l10n/tr.json index cb97780f029..f97747cbc4b 100644 --- a/core/l10n/tr.json +++ b/core/l10n/tr.json @@ -128,9 +128,18 @@ "Good password" : "İyi parola", "Strong password" : "Güçlü parola", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Web sunucunuz dosya transferi için düzgün bir şekilde yapılandırılmamış. WevDAV arabirimini sorunlu gözüküyor.", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Web sunucunuz \"{url}\" adresini çözümleyecek şekilde uygun yapılandırılmamış. Daha fazla bilgi <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">belgelendirmemizde</a> bulunabilir.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Bu sunucunun çalışan bir İnternet bağlantısı yok. Birden fazla uç noktaya ulaşılamıyor. Bu, harici depolama alanı bağlama, güncelleştirme bildirimleri veya üçüncü parti uygulama kurma gibi bazı özellikler çalışmayacak demektir. Uzak dosyalara erişim ve e-posta ile bildirim gönderme de çalışmayacaktır. Eğer bu özelliklerin tamamını kullanmak istiyorsanız, sunucu için İnternet bağlantısını etkinleştirmenizi öneriyoruz.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Hafıza önbelleği yapılandırılmamış. İmkanı varsa performansı iyileştirmek için bir önbellek yapılandırması yapın. Daha fazla bilgiyi <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">belgelendirmemizde</a> bulabilirsiniz.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Güvenlik nedeniyle çokça önerilen /dev/urandom PHP tarafından okunamıyor. Daha fazla bilgiyi <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">belgelendirmemizde</a> bulabilirsiniz.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Halen PHP {version} kullanıyorsunuz. Dağıtımınız destekler desteklemez PHP sürümünüzü güncelleyerek <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performans ve güvenlik geliştirmelerinden</a> faydalanmanızı öneriyoruz.", + "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Ters vekil sunucu başlık yapılandırmanız hatalı veya ownCloud'a güvenilen bir vekil sunucudan erişiyorsunuz. Eğer erişiminiz güvenilen bir vekil sunucu aracılığıyla gerçekleşmiyorsa bu bir güvenlik sorunudur ve bir saldırganın IP adresini farklıymış gibi göstermesine neden olabilir. Daha fazla bilgiyi <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">belgelendirmemizde</a> bulabilirsiniz.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached dağıtık bellek olarak yapılandırılmış ama hatalı PHP \"memcache\" modülü kurulmuş. \\OC\\Memcache\\Memcached sadece \"memcached\" modülünü destekler, \"memcache\"i değil. <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wikisinde iki modül hakkında da</a> bilgi bulabilirsiniz.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Bazı dosyalar bütünlük kontrolünü geçemedi. Bu sorunun üstesinden nasıl geleceğinizi <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">belgelendirmemizde</a> bulabilirsiniz. (<a href=\"{codeIntegrityDownloadEndpoint}\">Geçersiz dosyaların listesi…</a> / <a href=\"{rescanEndpoint}\">Tekrar tara…</a>)", "Error occurred while checking server setup" : "Sunucu yapılandırması denetlenirken hata oluştu", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "data dizininiz ve dosyalarınız büyük ihtimalle İnternet üzerinden erişilebilir. .htaccess dosyası çalışmıyor. Web sunucunuzu yapılandırarak data dizinine erişimi kapatmanızı veya data dizinini web sunucu belge dizini dışına almanızı şiddetle tavsiye ederiz.", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP başlığı \"{expected}\" ile eşleşmek üzere yapılandırılmamış. Bu muhtemel bir güvenlik veya gizlilik riski olduğundan bu ayarı düzeltmenizi öneririz.", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "\"Strict-Transport-Security\" HTTP başlığı en azından\"{seconds}\" saniyedir yapılandırılmamış. Gelişmiş güvenlik için <a href=\"{docUrl}\" rel=\"noreferrer\">güvenlik ipuçlarında</a> tarif edildiği gibi HSTS'nin etkinleştirilmesini öneririz.", "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Bu siteye HTTP aracılığıyla erişiyorsunuz. Sunucunuzu <a href=\"{docUrl}\">güvenlik ipuçlarımızda</a> gösterildiği şekilde HTTPS kullanımını zorlamak üzere yapılandırmanızı şiddetle öneririz.", "Shared" : "Paylaşılan", "Shared with {recipients}" : "{recipients} ile paylaşılmış", @@ -143,6 +152,10 @@ "Expiration" : "Bitiş", "Expiration date" : "Son kullanım tarihi", "Choose a password for the public link" : "Herkese açık bağlantı için bir parola seçin", + "Copied!" : "Kopyalandı!", + "Not supported!" : "Desteklenmiyor!", + "Press ⌘-C to copy." : "Kopyalamak için ⌘-C kullanın.", + "Press Ctrl-C to copy." : "Kopyalamak için Ctrl-C kullanın.", "Resharing is not allowed" : "Tekrar paylaşmaya izin verilmiyor", "Share link" : "Paylaşma bağlantısı", "Link" : "Bağlantı", @@ -190,6 +203,7 @@ "({scope})" : "({scope})", "Delete" : "Sil", "Rename" : "Yeniden adlandır", + "Collaborative tags" : "İşbirlikçi etiketler", "The object type is not specified." : "Nesne türü belirtilmemiş.", "Enter new" : "Yeni girin", "Add" : "Ekle", @@ -203,13 +217,10 @@ "Hello {name}" : "Merhaba {name}", "new" : "Yeni", "_download %n file_::_download %n files_" : ["%n dosya indir","%n dosya indir"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Güncelleme yapılıyor, sayfadan ayrılmak bazı işlemleri kesebilir.", - "Updating to {version}" : "{version} sürümüne güncelleniyor", "An error occurred." : "Bir hata oluştu", "Please reload the page." : "Lütfen sayfayı yeniden yükleyin.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Güncelleme başarısız oldu. Daha fazla bilgi için bu sorunu kapsayan <a href=\"{url}\">forum gönderimize</a> bakın.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Güncelleme işlemi maalesef başarısızlığa uğradı. Lütfen bu surunu <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud topluluğu</a>na bildirin. ", - "The update was successful. There were warnings." : "Güncelleme başarılı. Uyarılar mevcut.", "The update was successful. Redirecting you to Nextcloud now." : "Güncelleme başarılı oldu. Nextcloud'a yönlendiriliyorsunuz.", "Searching other places" : "Diğer konumlarda aranıyor", "No search results in other folders" : "Diğer klasörlerde arama sonucu yok", @@ -241,6 +252,7 @@ "Trace" : "İz", "Security warning" : "Güvenlik uyarısı", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Veri klasörünüz ve dosyalarınız .htaccess dosyası çalışmadığı için İnternet'ten erişime açık.", + "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Sunucunuzu nasıl yapılandıracağınız hakkında bilgi almak için <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">belgelendirmeye</a> bakabilirsiniz.", "Create an <strong>admin account</strong>" : "Bir <strong>yönetici hesabı</strong> oluşturun", "Username" : "Kullanıcı Adı", "Storage & database" : "Depolama ve veritabanı", @@ -285,7 +297,9 @@ "Contact your system administrator if this message persists or appeared unexpectedly." : "Eğer bu ileti görünmeye devam ederse veya beklenmedik şekilde ortaya çıkmışsa sistem yöneticinizle iletişime geçin.", "Thank you for your patience." : "Sabrınız için teşekkür ederiz.", "Two-step verification" : "2 adımlı doğrulama", + "Enhanced security has been enabled for your account. Please authenticate using a second factor." : "Hesabınız için gelişmiş güvenlik etkinleştirildi. Lütfen ikinci etkeni kullanarak kimlik doğrulaması yapın.", "Cancel login" : "Girişi iptal et", + "Please authenticate using the selected factor." : "Lütfen seçilen etkeni kullanarak kimlik doğrulaması yapın.", "An error occured while verifying the token" : "Anahtarı(token) doğrularken bir hata oluştu", "You are accessing the server from an untrusted domain." : "Sunucuya güvenilmeyen bir alan adından ulaşıyorsunuz.", "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Lütfen yöneticiniz ile iletişime geçin. Eğer bu örneğin bir yöneticisi iseniz, config/config.php dosyası içerisindeki \"trusted_domain\" ayarını yapılandırın. Bu yapılandırmanın bir örneği config/config.sample.php dosyasında verilmiştir.", diff --git a/core/l10n/uk.js b/core/l10n/uk.js index 238ef056d7d..7c4d5dfa9a0 100644 --- a/core/l10n/uk.js +++ b/core/l10n/uk.js @@ -203,12 +203,9 @@ OC.L10N.register( "Hello {name}" : "Привіт {name}", "new" : "новий", "_download %n file_::_download %n files_" : ["завантаження %n файлу","завантаження %n файлів","завантаження %n файлів"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Триває оновлення, якщо ви покинете сторінку, це може перервати процес в деяких оточеннях.", - "Updating to {version}" : "Оновлення до {version}", "An error occurred." : "Виникла помилка.", "Please reload the page." : "Будь ласка, перезавантажте сторінку.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Оновлення не вдалося. За інформацією <a href=\"{url}\">зверніться до повідомлення на форумі</a>, що описує цю проблему.", - "The update was successful. There were warnings." : "Оновлення виконалось успішно, але були попередження.", "Searching other places" : "Йде пошук в інших місцях", "No search results in other folders" : "В інших теках нічого не знайдено", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} результат пошуку в інших теках","{count} результатів пошуку в інших теках","{count} результатів пошуку в інших теках"], diff --git a/core/l10n/uk.json b/core/l10n/uk.json index 0545e9e449e..4a4106d9190 100644 --- a/core/l10n/uk.json +++ b/core/l10n/uk.json @@ -201,12 +201,9 @@ "Hello {name}" : "Привіт {name}", "new" : "новий", "_download %n file_::_download %n files_" : ["завантаження %n файлу","завантаження %n файлів","завантаження %n файлів"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Триває оновлення, якщо ви покинете сторінку, це може перервати процес в деяких оточеннях.", - "Updating to {version}" : "Оновлення до {version}", "An error occurred." : "Виникла помилка.", "Please reload the page." : "Будь ласка, перезавантажте сторінку.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Оновлення не вдалося. За інформацією <a href=\"{url}\">зверніться до повідомлення на форумі</a>, що описує цю проблему.", - "The update was successful. There were warnings." : "Оновлення виконалось успішно, але були попередження.", "Searching other places" : "Йде пошук в інших місцях", "No search results in other folders" : "В інших теках нічого не знайдено", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} результат пошуку в інших теках","{count} результатів пошуку в інших теках","{count} результатів пошуку в інших теках"], diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js index 35cff0331d2..9f0b2c151b5 100644 --- a/core/l10n/zh_CN.js +++ b/core/l10n/zh_CN.js @@ -213,12 +213,9 @@ OC.L10N.register( "Hello {name}" : "你好 {name}", "new" : "新建", "_download %n file_::_download %n files_" : ["下载 %n 个文件"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "升级正在进行,在某些环境中离开此网页可能中断该过程。", - "Updating to {version}" : "正在升级到 {version}", "An error occurred." : "发生了一个错误", "Please reload the page." : "请重新加载页面。", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "更新不成功。有关此问题的更多信息请<a href=\"{url}\">查看我们的论坛帖子</a>。", - "The update was successful. There were warnings." : "更新成功。有警告。", "Searching other places" : "搜索其他地方", "No search results in other folders" : "在其他文件夹中没有得到任何搜索结果", "_{count} search result in another folder_::_{count} search results in other folders_" : ["在其他文件夹中找到 {count} 条搜索结果"], diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json index f42b5c3bd50..e045dd7f1a8 100644 --- a/core/l10n/zh_CN.json +++ b/core/l10n/zh_CN.json @@ -211,12 +211,9 @@ "Hello {name}" : "你好 {name}", "new" : "新建", "_download %n file_::_download %n files_" : ["下载 %n 个文件"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "升级正在进行,在某些环境中离开此网页可能中断该过程。", - "Updating to {version}" : "正在升级到 {version}", "An error occurred." : "发生了一个错误", "Please reload the page." : "请重新加载页面。", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "更新不成功。有关此问题的更多信息请<a href=\"{url}\">查看我们的论坛帖子</a>。", - "The update was successful. There were warnings." : "更新成功。有警告。", "Searching other places" : "搜索其他地方", "No search results in other folders" : "在其他文件夹中没有得到任何搜索结果", "_{count} search result in another folder_::_{count} search results in other folders_" : ["在其他文件夹中找到 {count} 条搜索结果"], diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js index 33f73a90f23..4d2b11d4aef 100644 --- a/core/l10n/zh_TW.js +++ b/core/l10n/zh_TW.js @@ -27,6 +27,7 @@ OC.L10N.register( "Error unfavoriting" : "從最愛移除出錯", "Couldn't send mail to following users: %s " : "無法寄送郵件給這些使用者:%s", "Preparing update" : "準備更新", + "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "修復警告:", "Repair error: " : "修復錯誤", "Turned on maintenance mode" : "已啓用維護模式", @@ -197,11 +198,9 @@ OC.L10N.register( "Hello {name}" : "哈囉 {name}", "new" : "新", "_download %n file_::_download %n files_" : ["下載 %n 個檔案"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "正在更新,在某些狀況下,離開本頁面可能會導致更新中斷", "An error occurred." : "發生錯誤", "Please reload the page." : "請重新整理頁面", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "更新失敗,檢視<a href=\"{url}\">論壇上的文章</a>來瞭解更多", - "The update was successful. There were warnings." : "更新成功,有警告訊息", "Searching other places" : "搜尋其他位置", "No search results in other folders" : "在其他資料夾中沒有找到", "_{count} search result in another folder_::_{count} search results in other folders_" : ["在其他資料夾中有 {count} 比結果"], diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json index e3d2cdc36ca..73db28210fd 100644 --- a/core/l10n/zh_TW.json +++ b/core/l10n/zh_TW.json @@ -25,6 +25,7 @@ "Error unfavoriting" : "從最愛移除出錯", "Couldn't send mail to following users: %s " : "無法寄送郵件給這些使用者:%s", "Preparing update" : "準備更新", + "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "修復警告:", "Repair error: " : "修復錯誤", "Turned on maintenance mode" : "已啓用維護模式", @@ -195,11 +196,9 @@ "Hello {name}" : "哈囉 {name}", "new" : "新", "_download %n file_::_download %n files_" : ["下載 %n 個檔案"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "正在更新,在某些狀況下,離開本頁面可能會導致更新中斷", "An error occurred." : "發生錯誤", "Please reload the page." : "請重新整理頁面", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "更新失敗,檢視<a href=\"{url}\">論壇上的文章</a>來瞭解更多", - "The update was successful. There were warnings." : "更新成功,有警告訊息", "Searching other places" : "搜尋其他位置", "No search results in other folders" : "在其他資料夾中沒有找到", "_{count} search result in another folder_::_{count} search results in other folders_" : ["在其他資料夾中有 {count} 比結果"], diff --git a/core/shipped.json b/core/shipped.json index 8d3056eb908..f944d9d4c11 100644 --- a/core/shipped.json +++ b/core/shipped.json @@ -9,8 +9,11 @@ "federatedfilesharing", "federation", "files", + "files_accesscontrol", + "files_automatedtagging", "files_external", "files_pdfviewer", + "files_retention", "files_sharing", "files_texteditor", "files_trashbin", @@ -21,6 +24,8 @@ "notifications", "password_policy", "provisioning_api", + "serverinfo", + "survey_client", "systemtags", "templateeditor", "theming", diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index b3b492ecac4..be5c769ab76 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -113,7 +113,10 @@ <li data-id="<?php p($entry['id']); ?>"> <a href="<?php print_unescaped($entry['href']); ?>" tabindex="3" <?php if( $entry['active'] ): ?> class="active"<?php endif; ?>> - <img class="app-icon" alt="" src="<?php print_unescaped($entry['icon']); ?>"> + <svg width="32" height="32" viewBox="0 0 32 32"> + <defs><filter id="invert"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" /></filter></defs> + <image x="0" y="0" width="32" height="32" preserveAspectRatio="xMinYMin meet" filter="url(#invert)" xlink:href="<?php print_unescaped($entry['icon']); ?>" class="app-icon"/> + </svg> <div class="icon-loading-dark" style="display:none;"></div> <span> <?php p($entry['name']); ?> @@ -128,7 +131,10 @@ <li id="apps-management"> <a href="<?php print_unescaped(\OC::$server->getURLGenerator()->linkToRoute('settings.AppSettings.viewApps')); ?>" tabindex="4" <?php if( $_['appsmanagement_active'] ): ?> class="active"<?php endif; ?>> - <img class="app-icon" alt="" src="<?php print_unescaped(image_path('settings', 'apps.svg')); ?>"> + <svg width="32" height="32" viewBox="0 0 32 32" class="app-icon"> + <defs><filter id="invert"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" /></filter></defs> + <image x="0" y="0" width="32" height="32" preserveAspectRatio="xMinYMin meet" filter="url(#invert)" xlink:href="<?php print_unescaped(image_path('settings', 'apps.svg')); ?>"/> + </svg> <div class="icon-loading-dark" style="display:none;"></div> <span> <?php p($l->t('Apps')); ?> diff --git a/core/templates/login.php b/core/templates/login.php index 95c5a423c3d..c5453c34497 100644 --- a/core/templates/login.php +++ b/core/templates/login.php @@ -38,7 +38,7 @@ script('core', [ <!-- the following div ensures that the spinner is always inside the #message div --> <div style="clear: both;"></div> </div> - <p class="grouptop"> + <p class="grouptop<?php if (!empty($_['invalidpassword'])) { ?> shake<?php } ?>"> <input type="text" name="user" id="user" placeholder="<?php p($l->t('Username or email')); ?>" value="<?php p($_['loginName']); ?>" @@ -47,7 +47,7 @@ script('core', [ <label for="user" class="infield"><?php p($l->t('Username or email')); ?></label> </p> - <p class="groupbottom"> + <p class="groupbottom<?php if (!empty($_['invalidpassword'])) { ?> shake<?php } ?>"> <input type="password" name="password" id="password" value="" placeholder="<?php p($l->t('Password')); ?>" <?php p($_['user_autofocus'] ? '' : 'autofocus'); ?> diff --git a/core/templates/update.admin.php b/core/templates/update.admin.php index 87f93967d91..aaeacea993b 100644 --- a/core/templates/update.admin.php +++ b/core/templates/update.admin.php @@ -36,18 +36,20 @@ </div> <input class="updateButton" type="button" value="<?php p($l->t('Start update')) ?>"> <div class="infogroup"> + <em> <?php p($l->t('To avoid timeouts with larger installations, you can instead run the following command from your installation directory:')) ?> <pre>./occ upgrade</pre> + </em> </div> </div> <div class="update-progress hidden"> <h2 id="update-progress-title"></h2> <div id="update-progress-icon" class="icon-loading-dark"></div> - <p id="update-progress-message-error" class="warning hidden"></p> - <ul id="update-progress-message-warnings" class="warning hidden"></ul> + <p id="update-progress-message-error" class="hidden"></p> + <ul id="update-progress-message-warnings" class="hidden"></ul> <p id="update-progress-message"></p> <a class="update-show-detailed"><?php p($l->t( 'Detailed logs' )); ?> <img src="<?php print_unescaped(image_path('', 'actions/caret.svg')); ?>" /></a> - <div id="update-progress-detailed" class="hidden warning"></div> + <div id="update-progress-detailed" class="hidden"></div> </div> </div> diff --git a/lib/base.php b/lib/base.php index bd6f6cc9706..3457a74e989 100644 --- a/lib/base.php +++ b/lib/base.php @@ -361,7 +361,7 @@ class OC { // render error page $template = new OC_Template('', 'update.use-cli', 'guest'); - $template->assign('productName', 'owncloud'); // for now + $template->assign('productName', 'nextcloud'); // for now $template->assign('version', OC_Util::getVersionString()); $template->assign('tooBig', $tooBig); @@ -392,7 +392,7 @@ class OC { $ocVersion = \OCP\Util::getVersion(); $tmpl->assign('appsToUpgrade', $appManager->getAppsNeedingUpgrade($ocVersion)); $tmpl->assign('incompatibleAppsList', $appManager->getIncompatibleApps($ocVersion)); - $tmpl->assign('productName', 'ownCloud'); // for now + $tmpl->assign('productName', 'Nextcloud'); // for now $tmpl->assign('oldTheme', $oldTheme); $tmpl->printPage(); } diff --git a/lib/l10n/de.js b/lib/l10n/de.js index 227c7c4ab48..48a6ad427fc 100644 --- a/lib/l10n/de.js +++ b/lib/l10n/de.js @@ -115,6 +115,7 @@ OC.L10N.register( "The username is already being used" : "Dieser Benutzername existiert bereits", "Login canceled by app" : "Anmeldung durch die App abgebrochen", "User disabled" : "Nutzer deaktiviert", + "Help" : "Hilfe", "Personal" : "Persönlich", "Users" : "Benutzer", "Admin" : "Administration", @@ -123,6 +124,7 @@ OC.L10N.register( "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Die App \"%s\" kann nicht installiert werden, da sie mit dieser Serverversion nicht kompatibel ist.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Die App „%s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %s", "No app name specified" : "Es wurde kein App-Name angegeben", + "App '%s' could not be installed!" : "'%s' - App konnte nicht installiert werden!", "a safe home for all your data" : "ein sicherer Ort für all deine Daten", "File is currently busy, please try again later" : "Die Datei ist zur Zeit in Benutzung, bitte versuche es später noch einmal", "Can't read file" : "Datei kann nicht gelesen werden", diff --git a/lib/l10n/de.json b/lib/l10n/de.json index 96c684f48cf..8f806af36c6 100644 --- a/lib/l10n/de.json +++ b/lib/l10n/de.json @@ -113,6 +113,7 @@ "The username is already being used" : "Dieser Benutzername existiert bereits", "Login canceled by app" : "Anmeldung durch die App abgebrochen", "User disabled" : "Nutzer deaktiviert", + "Help" : "Hilfe", "Personal" : "Persönlich", "Users" : "Benutzer", "Admin" : "Administration", @@ -121,6 +122,7 @@ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Die App \"%s\" kann nicht installiert werden, da sie mit dieser Serverversion nicht kompatibel ist.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Die App „%s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %s", "No app name specified" : "Es wurde kein App-Name angegeben", + "App '%s' could not be installed!" : "'%s' - App konnte nicht installiert werden!", "a safe home for all your data" : "ein sicherer Ort für all deine Daten", "File is currently busy, please try again later" : "Die Datei ist zur Zeit in Benutzung, bitte versuche es später noch einmal", "Can't read file" : "Datei kann nicht gelesen werden", diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js index 52c30cab0bf..333f3a8981a 100644 --- a/lib/l10n/de_DE.js +++ b/lib/l10n/de_DE.js @@ -115,6 +115,7 @@ OC.L10N.register( "The username is already being used" : "Der Benutzername existiert bereits", "Login canceled by app" : "Anmeldung durch die App abgebrochen", "User disabled" : "Nutzer deaktiviert", + "Help" : "Hilfe", "Personal" : "Persönlich", "Users" : "Benutzer", "Admin" : "Administrator", @@ -123,6 +124,7 @@ OC.L10N.register( "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Die App \"%s\" kann nicht installiert werden, da sie mit dieser Serverversion nicht kompatibel ist.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Die App „%s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %s", "No app name specified" : "Es wurde kein App-Name angegeben", + "App '%s' could not be installed!" : "'%s' - App konnte nicht installiert werden!", "a safe home for all your data" : "ein sicherer Ort für all Ihre Daten", "File is currently busy, please try again later" : "Die Datei ist zur Zeit in Benutzung, bitte versuchen Sie es später noch einmal", "Can't read file" : "Datei kann nicht gelesen werden", diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json index 317284274a0..2fe0f17e051 100644 --- a/lib/l10n/de_DE.json +++ b/lib/l10n/de_DE.json @@ -113,6 +113,7 @@ "The username is already being used" : "Der Benutzername existiert bereits", "Login canceled by app" : "Anmeldung durch die App abgebrochen", "User disabled" : "Nutzer deaktiviert", + "Help" : "Hilfe", "Personal" : "Persönlich", "Users" : "Benutzer", "Admin" : "Administrator", @@ -121,6 +122,7 @@ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Die App \"%s\" kann nicht installiert werden, da sie mit dieser Serverversion nicht kompatibel ist.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Die App „%s“ kann nicht installiert werden, da die folgenden Abhängigkeiten nicht erfüllt sind: %s", "No app name specified" : "Es wurde kein App-Name angegeben", + "App '%s' could not be installed!" : "'%s' - App konnte nicht installiert werden!", "a safe home for all your data" : "ein sicherer Ort für all Ihre Daten", "File is currently busy, please try again later" : "Die Datei ist zur Zeit in Benutzung, bitte versuchen Sie es später noch einmal", "Can't read file" : "Datei kann nicht gelesen werden", diff --git a/lib/l10n/id.js b/lib/l10n/id.js index 37bc819315b..c45e3d90a87 100644 --- a/lib/l10n/id.js +++ b/lib/l10n/id.js @@ -9,12 +9,15 @@ OC.L10N.register( "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Ditemukan bahwa konfigurasi sampel telah disalin. Hal ini dapat merusak instalasi Anda dan tidak didukung. Silahkan baca dokumentasi sebelum melakukan perubahan pada config.php", "PHP %s or higher is required." : "Diperlukan PHP %s atau yang lebih tinggi.", "PHP with a version lower than %s is required." : "Diperlukan PHP dengan versi yang lebh rendah dari %s.", + "%sbit or higher PHP required." : "PHP %sbit atau yang lebih tinggi diperlukan.", "Following databases are supported: %s" : "Berikut adalah basis data yang didukung: %s", "The command line tool %s could not be found" : "Alat baris perintah %s tidak ditemukan", "The library %s is not available." : "Pustaka %s tidak tersedia.", "Library %s with a version higher than %s is required - available version %s." : "Diperlukan pustaka %s dengan versi yang lebih tinggi dari %s - versi yang tersedia %s.", "Library %s with a version lower than %s is required - available version %s." : "Diperlukan pustaka %s dengan versi yang lebih rendah dari %s - versi yang tersedia %s.", "Following platforms are supported: %s" : "Berikut adalah platform yang didukung: %s", + "Server version %s or higher is required." : "Server versi %s atau yang lebih tinggi diperlukan.", + "Server version %s or lower is required." : "Server versi %s atau yang lebih rendah diperlukan.", "Unknown filetype" : "Tipe berkas tak dikenal", "Invalid image" : "Gambar tidak sah", "today" : "hari ini", @@ -34,17 +37,22 @@ OC.L10N.register( "File name is a reserved word" : "Nama berkas merupakan kata yang disediakan", "File name contains at least one invalid character" : "Nama berkas berisi setidaknya satu karakter yang tidak sah.", "File name is too long" : "Nama berkas terlalu panjang", - "App directory already exists" : "Direktori Apl sudah ada", - "Can't create app folder. Please fix permissions. %s" : "Tidak dapat membuat folder apl. Silakan perbaiki perizinan. %s", + "App directory already exists" : "Direktori Aplikasi sudah ada", + "Can't create app folder. Please fix permissions. %s" : "Tidak dapat membuat folder Aplikasi. Silakan perbaiki perizinan. %s", "Archive does not contain a directory named %s" : "Arsip tidak berisi direktori yang bernama %s", - "No source specified when installing app" : "Tidak ada sumber yang ditentukan saat menginstal apl", - "No href specified when installing app from http" : "Href tidak ditentukan saat menginstal apl dari http", - "No path specified when installing app from local file" : "Lokasi tidak ditentukan saat menginstal apl dari berkas lokal", + "No source specified when installing app" : "Tidak ada sumber yang ditentukan saat menginstal Aplikasi", + "No href specified when installing app from http" : "Href tidak ditentukan saat menginstal Aplikasi dari http", + "No path specified when installing app from local file" : "Lokasi tidak ditentukan saat menginstal Aplikasi dari berkas lokal", "Archives of type %s are not supported" : "Arsip dengan tipe %s tidak didukung", - "Failed to open archive when installing app" : "Gagal membuka arsip saat menginstal apl", - "App does not provide an info.xml file" : "Apl tidak menyediakan berkas info.xml", - "App can't be installed because of not allowed code in the App" : "Apl tidak dapat diinstal karena terdapat kode yang tidak diizinkan didalam Apl", - "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Apl tidak dapat diinstal karena mengandung tag <shipped>true</shipped> yang tidak diizinkan untuk apl yang bukan bawaan.", + "Failed to open archive when installing app" : "Gagal membuka arsip saat menginstal Aplikasi", + "App does not provide an info.xml file" : "Aplikasi tidak menyediakan berkas info.xml", + "App cannot be installed because appinfo file cannot be read." : "Aplikasi tidak dapat dipasang karena berkas appinfo tidak dapat dibaca.", + "Signature could not get checked. Please contact the app developer and check your admin screen." : "Tandatangan tidak dapat dicek. Hubungi pengembang Aplikasi dan cek layar admin Anda.", + "App can't be installed because of not allowed code in the App" : "Aplikasi tidak dapat dipasang karena terdapat kode yang tidak diizinkan didalam Aplikasi", + "App can't be installed because it is not compatible with this version of the server" : "Aplikasi tidak dapat dipasang karena tidak kompatibel dengan versi server ini", + "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Aplikasi tidak dapat dipasang karena mengandung tag <shipped>true</shipped> yang tidak diizinkan untuk Aplikasi yang bukan bawaan.", + "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Aplikasi tidak dapat dipasang karena versi dalam info.xml tidak sama dengan versi yang ada dari toko aplikasi", + "%s enter the database username and name." : "%s masukkan nama pengguna database dan nama database.", "%s enter the database username." : "%s masukkan nama pengguna basis data.", "%s enter the database name." : "%s masukkan nama basis data.", "%s you may not use dots in the database name" : "%s anda tidak boleh menggunakan karakter titik pada nama basis data", @@ -77,6 +85,7 @@ OC.L10N.register( "Sharing %s failed, because %s is not a member of the group %s" : "Gagal membagikan %s, karena %s bukan anggota dari grup %s", "You need to provide a password to create a public link, only protected links are allowed" : "Anda perlu memberikan sandi untuk membuat tautan publik, hanya tautan yang terlindungi yang diizinkan", "Sharing %s failed, because sharing with links is not allowed" : "Gagal membagikan %s, karena berbag dengan tautan tidak diizinkan", + "Not allowed to create a federated share with the same user" : "Tidak diizinkan membuat pembagian terfederasi dengan pengguna yang sama", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Berbagi %s gagal, tidak menemukan %s, kemungkinan saat ini server tidak dapat dijangkau.", "Share type %s is not valid for %s" : "Barbagi tipe %s tidak sah untuk %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Pengaturan perizinan untuk %s gagal, karena karena izin melebihi izin yang diberikan untuk %s", @@ -92,37 +101,56 @@ OC.L10N.register( "Sharing %s failed, because resharing is not allowed" : "Gagal berbagi %s, karena membagikan ulang tidak diizinkan", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Berbagi %s gagal, karena backend berbagi untuk %s tidak menemukan sumbernya", "Sharing %s failed, because the file could not be found in the file cache" : "Gagal berbagi %s, karena berkas tidak ditemukan di berkas cache", + "Cannot increase permissions of %s" : "Tidak dapat menambah izin %s", + "Files can't be shared with delete permissions" : "Berkas tidak dapat dibagikan dengan izin penghapusan", + "Files can't be shared with create permissions" : "Berkas tidak dapat dibagikan dengan izin pembuatan", + "Expiration date is in the past" : "Tanggal kedaluwarsa sudah lewat", + "Cannot set expiration date more than %s days in the future" : "Tidak dapat menyetel tanggal kedaluwarsa lebih dari %s hari di masa depan", "Could not find category \"%s\"" : "Tidak menemukan kategori \"%s\"", - "Apps" : "Aplikasi", + "Apps" : "aplikasi", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Hanya karakter ini yang diizinkan dalam nama pengguna: \"a-z\", \"A-Z\", \"0-9\", dan \"_.@-'\"", "A valid username must be provided" : "Tuliskan nama pengguna yang valid", + "Username contains whitespace at the beginning or at the end" : "Nama pengguna mengandung spasi di depan atau di belakang.", "A valid password must be provided" : "Tuliskan sandi yang valid", "The username is already being used" : "Nama pengguna ini telah digunakan", + "Login canceled by app" : "Log masuk dibatalkan oleh aplikasi", + "User disabled" : "Pengguna dinonaktifkan", + "Help" : "Bantuan", "Personal" : "Pribadi", "Users" : "Pengguna", "Admin" : "Admin", "Recommended" : "Direkomendasikan", - "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Aplikasi \"%s\" tidak dapat diinstal karena dependensi berikut belum terpenuhi: %s", - "No app name specified" : "Tidak ada nama apl yang ditentukan", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "Aplikasi \"%s\" tidak dapat dipasang karena berkas appinfo tidak dapat dibaca.", + "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Aplikasi \"%s\" tidak dapat dipasang karena tidak kompatibel dengan versi server ini", + "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "aplikasi \"%s\" tidak dapat dipasang karena dependensi berikut belum terpenuhi: %s", + "No app name specified" : "Tidak ada nama Aplikasi yang ditentukan", + "App '%s' could not be installed!" : "Aplikasi '%s' tidak dapat dipasang!", + "a safe home for all your data" : "rumah yang aman untuk semua datamu", "File is currently busy, please try again later" : "Berkas sedang sibuk, mohon coba lagi nanti", "Can't read file" : "Tidak dapat membaca berkas", - "Application is not enabled" : "Aplikasi tidak diaktifkan", + "Application is not enabled" : "aplikasi tidak diaktifkan", "Authentication error" : "Galat saat otentikasi", "Token expired. Please reload page." : "Token sudah kedaluwarsa. Silakan muat ulang halaman.", "Unknown user" : "Pengguna tidak dikenal", "No database drivers (sqlite, mysql, or postgresql) installed." : "Tidak ada driver (sqlite, mysql, or postgresql) yang terinstal.", "Microsoft Windows Platform is not supported" : "Platform Microsoft Windows tidak didukung", + "Running Nextcloud Server on the Microsoft Windows platform is not supported. We suggest you use a Linux server in a virtual machine if you have no option for migrating the server itself." : "Menjalankan Nextcloud Server pada platform Microsoft Windows tidak didukung. Kami menyarankan Anda menggunakan server Linux di mesin virtual jika Anda tidak memiliki pilihan untuk migrasi server itu sendiri.", "Cannot write into \"config\" directory" : "Tidak dapat menulis kedalam direktori \"config\"", "Cannot write into \"apps\" directory" : "Tidak dapat menulis kedalam direktori \"apps\"", "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Hal ini biasanya dapat diperbaiki dengan %s memberikan akses tulis bagi situs web ke %s direktori apps atau menonaktifkan toko aplikasi didalam berkas config.", "Cannot create \"data\" directory (%s)" : "Tidak dapat membuat direktori (%s) \"data\"", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Perizinan biasanya dapat diperbaiki dengan <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">memberikan akses tulis bagi situs web ke direktori root</a>.", "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Perizinan biasanya dapat diperbaiki dengan %s memberikan akses tulis bagi situs web ke %s direktori root.", "Setting locale to %s failed" : "Pengaturan lokal ke %s gagal", "Please install one of these locales on your system and restart your webserver." : "Mohon instal paling tidak satu lokal pada sistem Anda dan jalankan ulang server web.", "Please ask your server administrator to install the module." : "Mohon tanyakan administrator Anda untuk menginstal module.", "PHP module %s not installed." : "Module PHP %s tidak terinstal.", "PHP setting \"%s\" is not set to \"%s\"." : "Pengaturan PHP \"%s\" tidak diatur ke \"%s\".", + "Adjusting this setting in php.ini will make Nextcloud run again" : "Menyesuaikan pengaturan ini di php.ini akan membuat Nextcloud berjalan kembali", "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload diatur menjadi \"%s\" bukan nilai yang diharapkan \"0\"", "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Untuk memperbaiki masalah ini, atur <code>mbstring.func_overload</code> menjadi <code>0</code> pada berkas php.ini Anda", + "libxml2 2.7.0 is at least required. Currently %s is installed." : "Setidaknya libxml2 2.7.0 dibutuhkan. Saat ini %s dipasang.", + "To fix this issue update your libxml2 version and restart your web server." : "Untuk mengatasi masalah ini, perbarui versi libxml2 Anda dan mulai-ulang server web Anda.", "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Tampaknya PHP diatur untuk memotong inline doc blocks. Hal ini akan menyebabkan beberapa aplikasi inti menjadi tidak dapat diakses.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Hal ini kemungkinan disebabkan oleh cache/akselerator seperti Zend OPcache atau eAccelerator.", "PHP modules have been installed, but they are still listed as missing?" : "Modul PHP telah terinstal, tetapi mereka terlihat tidak ada?", @@ -136,6 +164,10 @@ OC.L10N.register( "Data directory (%s) is invalid" : "Direktori data (%s) tidak sah", "Please check that the data directory contains a file \".ocdata\" in its root." : "Mohon periksa apakah direktori data berisi sebuah berkas \".ocdata\" di direktori induknya.", "Could not obtain lock type %d on \"%s\"." : "Tidak bisa memperoleh jenis kunci %d pada \"%s\".", - "Storage not available" : "Penyimpanan tidak tersedia" + "Storage unauthorized. %s" : "Penyimpanan tidak terotorisasi. %s", + "Storage incomplete configuration. %s" : "Konfigurasi penyimpanan tidak terselesaikan. %s", + "Storage connection error. %s" : "Koneksi penyimpanan bermasalah. %s", + "Storage not available" : "Penyimpanan tidak tersedia", + "Storage connection timeout. %s" : "Koneksi penyimpanan waktu-habis. %s" }, "nplurals=1; plural=0;"); diff --git a/lib/l10n/id.json b/lib/l10n/id.json index 797d2382171..da6d1f848e6 100644 --- a/lib/l10n/id.json +++ b/lib/l10n/id.json @@ -7,12 +7,15 @@ "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Ditemukan bahwa konfigurasi sampel telah disalin. Hal ini dapat merusak instalasi Anda dan tidak didukung. Silahkan baca dokumentasi sebelum melakukan perubahan pada config.php", "PHP %s or higher is required." : "Diperlukan PHP %s atau yang lebih tinggi.", "PHP with a version lower than %s is required." : "Diperlukan PHP dengan versi yang lebh rendah dari %s.", + "%sbit or higher PHP required." : "PHP %sbit atau yang lebih tinggi diperlukan.", "Following databases are supported: %s" : "Berikut adalah basis data yang didukung: %s", "The command line tool %s could not be found" : "Alat baris perintah %s tidak ditemukan", "The library %s is not available." : "Pustaka %s tidak tersedia.", "Library %s with a version higher than %s is required - available version %s." : "Diperlukan pustaka %s dengan versi yang lebih tinggi dari %s - versi yang tersedia %s.", "Library %s with a version lower than %s is required - available version %s." : "Diperlukan pustaka %s dengan versi yang lebih rendah dari %s - versi yang tersedia %s.", "Following platforms are supported: %s" : "Berikut adalah platform yang didukung: %s", + "Server version %s or higher is required." : "Server versi %s atau yang lebih tinggi diperlukan.", + "Server version %s or lower is required." : "Server versi %s atau yang lebih rendah diperlukan.", "Unknown filetype" : "Tipe berkas tak dikenal", "Invalid image" : "Gambar tidak sah", "today" : "hari ini", @@ -32,17 +35,22 @@ "File name is a reserved word" : "Nama berkas merupakan kata yang disediakan", "File name contains at least one invalid character" : "Nama berkas berisi setidaknya satu karakter yang tidak sah.", "File name is too long" : "Nama berkas terlalu panjang", - "App directory already exists" : "Direktori Apl sudah ada", - "Can't create app folder. Please fix permissions. %s" : "Tidak dapat membuat folder apl. Silakan perbaiki perizinan. %s", + "App directory already exists" : "Direktori Aplikasi sudah ada", + "Can't create app folder. Please fix permissions. %s" : "Tidak dapat membuat folder Aplikasi. Silakan perbaiki perizinan. %s", "Archive does not contain a directory named %s" : "Arsip tidak berisi direktori yang bernama %s", - "No source specified when installing app" : "Tidak ada sumber yang ditentukan saat menginstal apl", - "No href specified when installing app from http" : "Href tidak ditentukan saat menginstal apl dari http", - "No path specified when installing app from local file" : "Lokasi tidak ditentukan saat menginstal apl dari berkas lokal", + "No source specified when installing app" : "Tidak ada sumber yang ditentukan saat menginstal Aplikasi", + "No href specified when installing app from http" : "Href tidak ditentukan saat menginstal Aplikasi dari http", + "No path specified when installing app from local file" : "Lokasi tidak ditentukan saat menginstal Aplikasi dari berkas lokal", "Archives of type %s are not supported" : "Arsip dengan tipe %s tidak didukung", - "Failed to open archive when installing app" : "Gagal membuka arsip saat menginstal apl", - "App does not provide an info.xml file" : "Apl tidak menyediakan berkas info.xml", - "App can't be installed because of not allowed code in the App" : "Apl tidak dapat diinstal karena terdapat kode yang tidak diizinkan didalam Apl", - "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Apl tidak dapat diinstal karena mengandung tag <shipped>true</shipped> yang tidak diizinkan untuk apl yang bukan bawaan.", + "Failed to open archive when installing app" : "Gagal membuka arsip saat menginstal Aplikasi", + "App does not provide an info.xml file" : "Aplikasi tidak menyediakan berkas info.xml", + "App cannot be installed because appinfo file cannot be read." : "Aplikasi tidak dapat dipasang karena berkas appinfo tidak dapat dibaca.", + "Signature could not get checked. Please contact the app developer and check your admin screen." : "Tandatangan tidak dapat dicek. Hubungi pengembang Aplikasi dan cek layar admin Anda.", + "App can't be installed because of not allowed code in the App" : "Aplikasi tidak dapat dipasang karena terdapat kode yang tidak diizinkan didalam Aplikasi", + "App can't be installed because it is not compatible with this version of the server" : "Aplikasi tidak dapat dipasang karena tidak kompatibel dengan versi server ini", + "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Aplikasi tidak dapat dipasang karena mengandung tag <shipped>true</shipped> yang tidak diizinkan untuk Aplikasi yang bukan bawaan.", + "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Aplikasi tidak dapat dipasang karena versi dalam info.xml tidak sama dengan versi yang ada dari toko aplikasi", + "%s enter the database username and name." : "%s masukkan nama pengguna database dan nama database.", "%s enter the database username." : "%s masukkan nama pengguna basis data.", "%s enter the database name." : "%s masukkan nama basis data.", "%s you may not use dots in the database name" : "%s anda tidak boleh menggunakan karakter titik pada nama basis data", @@ -75,6 +83,7 @@ "Sharing %s failed, because %s is not a member of the group %s" : "Gagal membagikan %s, karena %s bukan anggota dari grup %s", "You need to provide a password to create a public link, only protected links are allowed" : "Anda perlu memberikan sandi untuk membuat tautan publik, hanya tautan yang terlindungi yang diizinkan", "Sharing %s failed, because sharing with links is not allowed" : "Gagal membagikan %s, karena berbag dengan tautan tidak diizinkan", + "Not allowed to create a federated share with the same user" : "Tidak diizinkan membuat pembagian terfederasi dengan pengguna yang sama", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Berbagi %s gagal, tidak menemukan %s, kemungkinan saat ini server tidak dapat dijangkau.", "Share type %s is not valid for %s" : "Barbagi tipe %s tidak sah untuk %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Pengaturan perizinan untuk %s gagal, karena karena izin melebihi izin yang diberikan untuk %s", @@ -90,37 +99,56 @@ "Sharing %s failed, because resharing is not allowed" : "Gagal berbagi %s, karena membagikan ulang tidak diizinkan", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Berbagi %s gagal, karena backend berbagi untuk %s tidak menemukan sumbernya", "Sharing %s failed, because the file could not be found in the file cache" : "Gagal berbagi %s, karena berkas tidak ditemukan di berkas cache", + "Cannot increase permissions of %s" : "Tidak dapat menambah izin %s", + "Files can't be shared with delete permissions" : "Berkas tidak dapat dibagikan dengan izin penghapusan", + "Files can't be shared with create permissions" : "Berkas tidak dapat dibagikan dengan izin pembuatan", + "Expiration date is in the past" : "Tanggal kedaluwarsa sudah lewat", + "Cannot set expiration date more than %s days in the future" : "Tidak dapat menyetel tanggal kedaluwarsa lebih dari %s hari di masa depan", "Could not find category \"%s\"" : "Tidak menemukan kategori \"%s\"", - "Apps" : "Aplikasi", + "Apps" : "aplikasi", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Hanya karakter ini yang diizinkan dalam nama pengguna: \"a-z\", \"A-Z\", \"0-9\", dan \"_.@-'\"", "A valid username must be provided" : "Tuliskan nama pengguna yang valid", + "Username contains whitespace at the beginning or at the end" : "Nama pengguna mengandung spasi di depan atau di belakang.", "A valid password must be provided" : "Tuliskan sandi yang valid", "The username is already being used" : "Nama pengguna ini telah digunakan", + "Login canceled by app" : "Log masuk dibatalkan oleh aplikasi", + "User disabled" : "Pengguna dinonaktifkan", + "Help" : "Bantuan", "Personal" : "Pribadi", "Users" : "Pengguna", "Admin" : "Admin", "Recommended" : "Direkomendasikan", - "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Aplikasi \"%s\" tidak dapat diinstal karena dependensi berikut belum terpenuhi: %s", - "No app name specified" : "Tidak ada nama apl yang ditentukan", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "Aplikasi \"%s\" tidak dapat dipasang karena berkas appinfo tidak dapat dibaca.", + "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Aplikasi \"%s\" tidak dapat dipasang karena tidak kompatibel dengan versi server ini", + "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "aplikasi \"%s\" tidak dapat dipasang karena dependensi berikut belum terpenuhi: %s", + "No app name specified" : "Tidak ada nama Aplikasi yang ditentukan", + "App '%s' could not be installed!" : "Aplikasi '%s' tidak dapat dipasang!", + "a safe home for all your data" : "rumah yang aman untuk semua datamu", "File is currently busy, please try again later" : "Berkas sedang sibuk, mohon coba lagi nanti", "Can't read file" : "Tidak dapat membaca berkas", - "Application is not enabled" : "Aplikasi tidak diaktifkan", + "Application is not enabled" : "aplikasi tidak diaktifkan", "Authentication error" : "Galat saat otentikasi", "Token expired. Please reload page." : "Token sudah kedaluwarsa. Silakan muat ulang halaman.", "Unknown user" : "Pengguna tidak dikenal", "No database drivers (sqlite, mysql, or postgresql) installed." : "Tidak ada driver (sqlite, mysql, or postgresql) yang terinstal.", "Microsoft Windows Platform is not supported" : "Platform Microsoft Windows tidak didukung", + "Running Nextcloud Server on the Microsoft Windows platform is not supported. We suggest you use a Linux server in a virtual machine if you have no option for migrating the server itself." : "Menjalankan Nextcloud Server pada platform Microsoft Windows tidak didukung. Kami menyarankan Anda menggunakan server Linux di mesin virtual jika Anda tidak memiliki pilihan untuk migrasi server itu sendiri.", "Cannot write into \"config\" directory" : "Tidak dapat menulis kedalam direktori \"config\"", "Cannot write into \"apps\" directory" : "Tidak dapat menulis kedalam direktori \"apps\"", "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Hal ini biasanya dapat diperbaiki dengan %s memberikan akses tulis bagi situs web ke %s direktori apps atau menonaktifkan toko aplikasi didalam berkas config.", "Cannot create \"data\" directory (%s)" : "Tidak dapat membuat direktori (%s) \"data\"", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Perizinan biasanya dapat diperbaiki dengan <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">memberikan akses tulis bagi situs web ke direktori root</a>.", "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Perizinan biasanya dapat diperbaiki dengan %s memberikan akses tulis bagi situs web ke %s direktori root.", "Setting locale to %s failed" : "Pengaturan lokal ke %s gagal", "Please install one of these locales on your system and restart your webserver." : "Mohon instal paling tidak satu lokal pada sistem Anda dan jalankan ulang server web.", "Please ask your server administrator to install the module." : "Mohon tanyakan administrator Anda untuk menginstal module.", "PHP module %s not installed." : "Module PHP %s tidak terinstal.", "PHP setting \"%s\" is not set to \"%s\"." : "Pengaturan PHP \"%s\" tidak diatur ke \"%s\".", + "Adjusting this setting in php.ini will make Nextcloud run again" : "Menyesuaikan pengaturan ini di php.ini akan membuat Nextcloud berjalan kembali", "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload diatur menjadi \"%s\" bukan nilai yang diharapkan \"0\"", "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Untuk memperbaiki masalah ini, atur <code>mbstring.func_overload</code> menjadi <code>0</code> pada berkas php.ini Anda", + "libxml2 2.7.0 is at least required. Currently %s is installed." : "Setidaknya libxml2 2.7.0 dibutuhkan. Saat ini %s dipasang.", + "To fix this issue update your libxml2 version and restart your web server." : "Untuk mengatasi masalah ini, perbarui versi libxml2 Anda dan mulai-ulang server web Anda.", "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Tampaknya PHP diatur untuk memotong inline doc blocks. Hal ini akan menyebabkan beberapa aplikasi inti menjadi tidak dapat diakses.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Hal ini kemungkinan disebabkan oleh cache/akselerator seperti Zend OPcache atau eAccelerator.", "PHP modules have been installed, but they are still listed as missing?" : "Modul PHP telah terinstal, tetapi mereka terlihat tidak ada?", @@ -134,6 +162,10 @@ "Data directory (%s) is invalid" : "Direktori data (%s) tidak sah", "Please check that the data directory contains a file \".ocdata\" in its root." : "Mohon periksa apakah direktori data berisi sebuah berkas \".ocdata\" di direktori induknya.", "Could not obtain lock type %d on \"%s\"." : "Tidak bisa memperoleh jenis kunci %d pada \"%s\".", - "Storage not available" : "Penyimpanan tidak tersedia" + "Storage unauthorized. %s" : "Penyimpanan tidak terotorisasi. %s", + "Storage incomplete configuration. %s" : "Konfigurasi penyimpanan tidak terselesaikan. %s", + "Storage connection error. %s" : "Koneksi penyimpanan bermasalah. %s", + "Storage not available" : "Penyimpanan tidak tersedia", + "Storage connection timeout. %s" : "Koneksi penyimpanan waktu-habis. %s" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js index 7b34d758c49..0ea76e4ba6f 100644 --- a/lib/l10n/ru.js +++ b/lib/l10n/ru.js @@ -115,6 +115,7 @@ OC.L10N.register( "The username is already being used" : "Имя пользователя уже используется", "Login canceled by app" : "Вход отменен приложением", "User disabled" : "Пользователь отключен", + "Help" : "Помощь", "Personal" : "Личное", "Users" : "Пользователи", "Admin" : "Администрирование", @@ -123,6 +124,7 @@ OC.L10N.register( "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Приложение \"%s\" не может быть установлено, потому что оно несовместимо с этой версией сервера", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Приложение \"%s\" не может быть установлено, так как следующие зависимости не выполнены: %s", "No app name specified" : "Не указано имя приложения", + "App '%s' could not be installed!" : "Приложение '%s' не может быть установлено!", "a safe home for all your data" : "надежный дом для ваших файлов", "File is currently busy, please try again later" : "Файл в данный момент используется, повторите попытку позже.", "Can't read file" : "Не удается прочитать файл", @@ -144,6 +146,7 @@ OC.L10N.register( "Please ask your server administrator to install the module." : "Пожалуйста, попростите администратора сервера установить модуль.", "PHP module %s not installed." : "Не установлен PHP-модуль %s.", "PHP setting \"%s\" is not set to \"%s\"." : "Параметр PHP \"%s\" не установлен в \"%s\".", + "Adjusting this setting in php.ini will make Nextcloud run again" : "Настройка этого параметра в php.ini поможет Nextcloud работать снова", "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload установлен в \"%s\", при этом требуется \"0\"", "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Чтобы исправить эту проблему установите параметр <code>mbstring.func_overload</code> в значение <code>0</code> в php.ini", "libxml2 2.7.0 is at least required. Currently %s is installed." : "Требуется как минимум libxml2 версии 2.7.0. На данный момент установлена %s.", diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json index 3e3c860e72a..210146675d9 100644 --- a/lib/l10n/ru.json +++ b/lib/l10n/ru.json @@ -113,6 +113,7 @@ "The username is already being used" : "Имя пользователя уже используется", "Login canceled by app" : "Вход отменен приложением", "User disabled" : "Пользователь отключен", + "Help" : "Помощь", "Personal" : "Личное", "Users" : "Пользователи", "Admin" : "Администрирование", @@ -121,6 +122,7 @@ "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Приложение \"%s\" не может быть установлено, потому что оно несовместимо с этой версией сервера", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "Приложение \"%s\" не может быть установлено, так как следующие зависимости не выполнены: %s", "No app name specified" : "Не указано имя приложения", + "App '%s' could not be installed!" : "Приложение '%s' не может быть установлено!", "a safe home for all your data" : "надежный дом для ваших файлов", "File is currently busy, please try again later" : "Файл в данный момент используется, повторите попытку позже.", "Can't read file" : "Не удается прочитать файл", @@ -142,6 +144,7 @@ "Please ask your server administrator to install the module." : "Пожалуйста, попростите администратора сервера установить модуль.", "PHP module %s not installed." : "Не установлен PHP-модуль %s.", "PHP setting \"%s\" is not set to \"%s\"." : "Параметр PHP \"%s\" не установлен в \"%s\".", + "Adjusting this setting in php.ini will make Nextcloud run again" : "Настройка этого параметра в php.ini поможет Nextcloud работать снова", "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload установлен в \"%s\", при этом требуется \"0\"", "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Чтобы исправить эту проблему установите параметр <code>mbstring.func_overload</code> в значение <code>0</code> в php.ini", "libxml2 2.7.0 is at least required. Currently %s is installed." : "Требуется как минимум libxml2 версии 2.7.0. На данный момент установлена %s.", diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js index f255cd9fa25..8697ebc8bdb 100644 --- a/lib/l10n/tr.js +++ b/lib/l10n/tr.js @@ -9,12 +9,15 @@ OC.L10N.register( "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Örnek yapılandırmanın kopyalanmış olabileceği tespit edildi. Bu kurulumunuzu bozabilir ve desteklenmemektedir. Lütfen config.php dosyasında değişiklik yapmadan önce belgelendirmeyi okuyun", "PHP %s or higher is required." : "PHP %s veya daha üst sürümü gerekli.", "PHP with a version lower than %s is required." : "PHP'nin %s sürümü öncesi gerekli.", + "%sbit or higher PHP required." : "%sbit veya daha üzeri PHP sürümü gereklidir.", "Following databases are supported: %s" : "Şu veritabanları desteklenmekte: %s", "The command line tool %s could not be found" : "Komut satırı aracı %s bulunamadı", "The library %s is not available." : "%s kütüphanesi mevcut değil.", "Library %s with a version higher than %s is required - available version %s." : "%s kütüphanesinin %s sürümünden daha yüksek sürümü gerekli - kullanılabilir sürüm %s.", "Library %s with a version lower than %s is required - available version %s." : "%s kütüphanesinin %s sürümünden daha düşük sürümü gerekli - kullanılabilir sürüm %s.", "Following platforms are supported: %s" : "Aşağıdaki platformlar destekleniyor: %s", + "Server version %s or higher is required." : "Sunucu sürümü %s veya daha üzeri olmalıdır.", + "Server version %s or lower is required." : "Sunucu sürümü %s veya daha altı olmalıdır.", "Unknown filetype" : "Bilinmeyen dosya türü", "Invalid image" : "Geçersiz resim", "today" : "bugün", @@ -46,6 +49,7 @@ OC.L10N.register( "App cannot be installed because appinfo file cannot be read." : "uygulama yüklenemiyor çünkü appinfo dosyası okunamıyor.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "İmza denetlenemedi. Lütfen uygulama yöneticisi ile iletişime geçin ve yönetici ekranınıza bakın.", "App can't be installed because of not allowed code in the App" : "Uygulama, izin verilmeyen kodlar barındırdığından kurulamıyor", + "App can't be installed because it is not compatible with this version of the server" : "Sunucu sürümüyle uyumlu olmadığından uygulama yüklenemez.", "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Uygulama, birlikte gelmeyen uygulama olmasına rağmen <shipped>true</shipped> etiketi içerdiği için kurulamıyor", "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Uygulama info.xml içindeki sürüm ile uygulama marketinde belirtilen sürüm aynı olmadığından kurulamıyor", "%s enter the database username and name." : "%s veritabanı adı ve kullanıcı adını girin.", @@ -98,6 +102,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s paylaşımı, %s için arka ucun kaynağını bulamamasından dolayı başarısız oldu", "Sharing %s failed, because the file could not be found in the file cache" : "%s paylaşımı, dosyanın dosya önbelleğinde bulunamamasınndan dolayı başarısız oldu", "Cannot increase permissions of %s" : "%s izinleri yükseltilemiyor", + "Files can't be shared with delete permissions" : "Dosyalar silme izniyle paylaşılamaz", + "Files can't be shared with create permissions" : "Dosyalar oluşturma izniyle paylaşılamaz", "Expiration date is in the past" : "Son kullanma tarihi geçmişte", "Cannot set expiration date more than %s days in the future" : "Paylaşımların son kullanım süreleri, gelecekte %s günden fazla olamaz", "Could not find category \"%s\"" : "\"%s\" kategorisi bulunamadı", @@ -107,12 +113,19 @@ OC.L10N.register( "Username contains whitespace at the beginning or at the end" : "Kullanıcı adı başlangıç veya sonda boşluk içeriyor", "A valid password must be provided" : "Geçerli bir parola mutlaka sağlanmalı", "The username is already being used" : "Bu kullanıcı adı zaten kullanımda", + "Login canceled by app" : "Oturum açma işlemi uygulama tarafından iptal edildi", + "User disabled" : "Kullanıcı devre dışı", + "Help" : "Yardım", "Personal" : "Kişisel", "Users" : "Kullanıcılar", "Admin" : "Yönetici", "Recommended" : "Önerilen", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "\"%s\" uygulaması yüklenemiyor çünkü appinfo dosyası okunamıyor.", + "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Sunucu sürümüyle uyumlu olmadığından \"%s\" uygulaması yüklenemez.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "\"%s\" uygulaması, şu bağımlılıklar sağlanmadığı için yüklenemiyor: %s", "No app name specified" : "Uygulama adı belirtilmedi", + "App '%s' could not be installed!" : "'%s' uygulaması kurulamadı!", + "a safe home for all your data" : "tüm verileriniz için güvenli bir yer", "File is currently busy, please try again later" : "Dosya şu anda meşgul, lütfen daha sonra deneyin", "Can't read file" : "Dosya okunamıyor", "Application is not enabled" : "Uygulama etkin değil", @@ -121,6 +134,7 @@ OC.L10N.register( "Unknown user" : "Bilinmeyen kullanıcı", "No database drivers (sqlite, mysql, or postgresql) installed." : "Yüklü veritabanı sürücüsü (sqlite, mysql veya postgresql) yok.", "Microsoft Windows Platform is not supported" : "Microsoft Windows Platformu desteklenmiyor", + "Running Nextcloud Server on the Microsoft Windows platform is not supported. We suggest you use a Linux server in a virtual machine if you have no option for migrating the server itself." : "Nextcloud Sunucusunu Microsoft Windows platformunda çalıştırmak desteklenmiyor. Sunucunun kendisini değiştiremiyorsanız üzerinde bir Linux sanal makine kullanmanızı öneririz.", "Cannot write into \"config\" directory" : "\"config\" dizinine yazılamıyor", "Cannot write into \"apps\" directory" : "\"apps\" dizinine yazılamıyor", "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Bu genellikle, %sweb sunucusuna apps dizinine yazma erişimi verilerek%s veya yapılandırma dosyasında appstore (uygulama mağazası) devre dışı bırakılarak çözülebilir.", @@ -132,6 +146,7 @@ OC.L10N.register( "Please ask your server administrator to install the module." : "Lütfen modülün kurulması için sunucu yöneticinize danışın.", "PHP module %s not installed." : "PHP modülü %s yüklü değil.", "PHP setting \"%s\" is not set to \"%s\"." : "PHP ayarı \"%s\", \"%s\" olarak ayarlanmamış.", + "Adjusting this setting in php.ini will make Nextcloud run again" : "Bu ayarı php.ini dosyasında yapmak Nextcloud'u yeniden çalıştıracaktır", "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload, beklenen \"0\" değerinin aksine \"%s\" olarak ayarlanmış", "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Bu hatayı düzeltmek için php.ini içerisindeki <code>mbstring.func_overload</code> ayarını <code>0</code> olarak ayarlayın", "libxml2 2.7.0 is at least required. Currently %s is installed." : "En düşük libxml2 2.7.0 gerekli. Şu anda %s kurulu.", diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json index 365b8ddc6c4..1ab48d38080 100644 --- a/lib/l10n/tr.json +++ b/lib/l10n/tr.json @@ -7,12 +7,15 @@ "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Örnek yapılandırmanın kopyalanmış olabileceği tespit edildi. Bu kurulumunuzu bozabilir ve desteklenmemektedir. Lütfen config.php dosyasında değişiklik yapmadan önce belgelendirmeyi okuyun", "PHP %s or higher is required." : "PHP %s veya daha üst sürümü gerekli.", "PHP with a version lower than %s is required." : "PHP'nin %s sürümü öncesi gerekli.", + "%sbit or higher PHP required." : "%sbit veya daha üzeri PHP sürümü gereklidir.", "Following databases are supported: %s" : "Şu veritabanları desteklenmekte: %s", "The command line tool %s could not be found" : "Komut satırı aracı %s bulunamadı", "The library %s is not available." : "%s kütüphanesi mevcut değil.", "Library %s with a version higher than %s is required - available version %s." : "%s kütüphanesinin %s sürümünden daha yüksek sürümü gerekli - kullanılabilir sürüm %s.", "Library %s with a version lower than %s is required - available version %s." : "%s kütüphanesinin %s sürümünden daha düşük sürümü gerekli - kullanılabilir sürüm %s.", "Following platforms are supported: %s" : "Aşağıdaki platformlar destekleniyor: %s", + "Server version %s or higher is required." : "Sunucu sürümü %s veya daha üzeri olmalıdır.", + "Server version %s or lower is required." : "Sunucu sürümü %s veya daha altı olmalıdır.", "Unknown filetype" : "Bilinmeyen dosya türü", "Invalid image" : "Geçersiz resim", "today" : "bugün", @@ -44,6 +47,7 @@ "App cannot be installed because appinfo file cannot be read." : "uygulama yüklenemiyor çünkü appinfo dosyası okunamıyor.", "Signature could not get checked. Please contact the app developer and check your admin screen." : "İmza denetlenemedi. Lütfen uygulama yöneticisi ile iletişime geçin ve yönetici ekranınıza bakın.", "App can't be installed because of not allowed code in the App" : "Uygulama, izin verilmeyen kodlar barındırdığından kurulamıyor", + "App can't be installed because it is not compatible with this version of the server" : "Sunucu sürümüyle uyumlu olmadığından uygulama yüklenemez.", "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Uygulama, birlikte gelmeyen uygulama olmasına rağmen <shipped>true</shipped> etiketi içerdiği için kurulamıyor", "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Uygulama info.xml içindeki sürüm ile uygulama marketinde belirtilen sürüm aynı olmadığından kurulamıyor", "%s enter the database username and name." : "%s veritabanı adı ve kullanıcı adını girin.", @@ -96,6 +100,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s paylaşımı, %s için arka ucun kaynağını bulamamasından dolayı başarısız oldu", "Sharing %s failed, because the file could not be found in the file cache" : "%s paylaşımı, dosyanın dosya önbelleğinde bulunamamasınndan dolayı başarısız oldu", "Cannot increase permissions of %s" : "%s izinleri yükseltilemiyor", + "Files can't be shared with delete permissions" : "Dosyalar silme izniyle paylaşılamaz", + "Files can't be shared with create permissions" : "Dosyalar oluşturma izniyle paylaşılamaz", "Expiration date is in the past" : "Son kullanma tarihi geçmişte", "Cannot set expiration date more than %s days in the future" : "Paylaşımların son kullanım süreleri, gelecekte %s günden fazla olamaz", "Could not find category \"%s\"" : "\"%s\" kategorisi bulunamadı", @@ -105,12 +111,19 @@ "Username contains whitespace at the beginning or at the end" : "Kullanıcı adı başlangıç veya sonda boşluk içeriyor", "A valid password must be provided" : "Geçerli bir parola mutlaka sağlanmalı", "The username is already being used" : "Bu kullanıcı adı zaten kullanımda", + "Login canceled by app" : "Oturum açma işlemi uygulama tarafından iptal edildi", + "User disabled" : "Kullanıcı devre dışı", + "Help" : "Yardım", "Personal" : "Kişisel", "Users" : "Kullanıcılar", "Admin" : "Yönetici", "Recommended" : "Önerilen", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "\"%s\" uygulaması yüklenemiyor çünkü appinfo dosyası okunamıyor.", + "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "Sunucu sürümüyle uyumlu olmadığından \"%s\" uygulaması yüklenemez.", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "\"%s\" uygulaması, şu bağımlılıklar sağlanmadığı için yüklenemiyor: %s", "No app name specified" : "Uygulama adı belirtilmedi", + "App '%s' could not be installed!" : "'%s' uygulaması kurulamadı!", + "a safe home for all your data" : "tüm verileriniz için güvenli bir yer", "File is currently busy, please try again later" : "Dosya şu anda meşgul, lütfen daha sonra deneyin", "Can't read file" : "Dosya okunamıyor", "Application is not enabled" : "Uygulama etkin değil", @@ -119,6 +132,7 @@ "Unknown user" : "Bilinmeyen kullanıcı", "No database drivers (sqlite, mysql, or postgresql) installed." : "Yüklü veritabanı sürücüsü (sqlite, mysql veya postgresql) yok.", "Microsoft Windows Platform is not supported" : "Microsoft Windows Platformu desteklenmiyor", + "Running Nextcloud Server on the Microsoft Windows platform is not supported. We suggest you use a Linux server in a virtual machine if you have no option for migrating the server itself." : "Nextcloud Sunucusunu Microsoft Windows platformunda çalıştırmak desteklenmiyor. Sunucunun kendisini değiştiremiyorsanız üzerinde bir Linux sanal makine kullanmanızı öneririz.", "Cannot write into \"config\" directory" : "\"config\" dizinine yazılamıyor", "Cannot write into \"apps\" directory" : "\"apps\" dizinine yazılamıyor", "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Bu genellikle, %sweb sunucusuna apps dizinine yazma erişimi verilerek%s veya yapılandırma dosyasında appstore (uygulama mağazası) devre dışı bırakılarak çözülebilir.", @@ -130,6 +144,7 @@ "Please ask your server administrator to install the module." : "Lütfen modülün kurulması için sunucu yöneticinize danışın.", "PHP module %s not installed." : "PHP modülü %s yüklü değil.", "PHP setting \"%s\" is not set to \"%s\"." : "PHP ayarı \"%s\", \"%s\" olarak ayarlanmamış.", + "Adjusting this setting in php.ini will make Nextcloud run again" : "Bu ayarı php.ini dosyasında yapmak Nextcloud'u yeniden çalıştıracaktır", "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload, beklenen \"0\" değerinin aksine \"%s\" olarak ayarlanmış", "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Bu hatayı düzeltmek için php.ini içerisindeki <code>mbstring.func_overload</code> ayarını <code>0</code> olarak ayarlayın", "libxml2 2.7.0 is at least required. Currently %s is installed." : "En düşük libxml2 2.7.0 gerekli. Şu anda %s kurulu.", diff --git a/lib/l10n/zh_TW.js b/lib/l10n/zh_TW.js index 9f1661e813a..bf9f98219d9 100644 --- a/lib/l10n/zh_TW.js +++ b/lib/l10n/zh_TW.js @@ -9,12 +9,15 @@ OC.L10N.register( "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "看來您直接複製了範本設定來使用,這可能會毀掉你的安裝,請閱讀說明文件後對 config.php 進行適當的修改", "PHP %s or higher is required." : "需要 PHP %s 或更高版本", "PHP with a version lower than %s is required." : "需要 PHP 版本低於 %s ", + "%sbit or higher PHP required." : "%s 或需要更高階版本的php", "Following databases are supported: %s" : "這些資料庫支援: %s", "The command line tool %s could not be found" : "無法找到命令提示位元工具 %s", "The library %s is not available." : "套件庫 %s 無法使用", "Library %s with a version higher than %s is required - available version %s." : "需要套件庫 %s 版本高於 %s - 可使用的版本是 %s", "Library %s with a version lower than %s is required - available version %s." : "需要套件庫 %s 版本低於 %s - 可使用的版本是 %s", "Following platforms are supported: %s" : "這些平台支援: %s", + "Server version %s or higher is required." : "需要伺服器版本 %s 或更高階版本", + "Server version %s or lower is required." : "需要伺服器版本 %s 或更低階版本", "Unknown filetype" : "未知的檔案類型", "Invalid image" : "無效的圖片", "today" : "今天", @@ -36,15 +39,20 @@ OC.L10N.register( "File name is too long" : "檔案名稱太長", "App directory already exists" : "應用程式目錄已經存在", "Can't create app folder. Please fix permissions. %s" : "無法建立應用程式目錄,請檢查權限:%s", + "Archive does not contain a directory named %s" : "檔案文件未包含目錄名稱 %s", "No source specified when installing app" : "沒有指定應用程式安裝來源", "No href specified when installing app from http" : "從 http 安裝應用程式,找不到 href 屬性", "No path specified when installing app from local file" : "從本地檔案安裝應用程式時沒有指定路徑", "Archives of type %s are not supported" : "不支援 %s 格式的壓縮檔", "Failed to open archive when installing app" : "安裝應用程式時無法開啓壓縮檔", "App does not provide an info.xml file" : "應用程式沒有提供 info.xml 檔案", + "App cannot be installed because appinfo file cannot be read." : "程式無法安裝,因為無法讀取appinfo檔案。", "Signature could not get checked. Please contact the app developer and check your admin screen." : "無法驗證數位簽章,請聯絡 app 開發者,並檢查您的管理頁面", "App can't be installed because of not allowed code in the App" : "無法安裝應用程式因為在當中找到危險的代碼", + "App can't be installed because it is not compatible with this version of the server" : "程式無法安裝,因為伺服器版本不符。", "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "無法安裝應用程式,因為它包含了 <shipped>true</shipped> 標籤,在未發行的應用程式當中這是不允許的", + "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "程式無法安裝,因為info.xml檔案中版本與app商店中要求不同。", + "%s enter the database username and name." : "%s 輸入資料庫名稱及使用者名稱", "%s enter the database username." : "%s 輸入資料庫使用者名稱。", "%s enter the database name." : "%s 輸入資料庫名稱。", "%s you may not use dots in the database name" : "%s 資料庫名稱不能包含小數點", @@ -94,6 +102,8 @@ OC.L10N.register( "Sharing %s failed, because the sharing backend for %s could not find its source" : "分享 %s 失敗,因為 %s 的分享後端找不到它的來源", "Sharing %s failed, because the file could not be found in the file cache" : "分享 %s 失敗,因為在快取中找不到該檔案", "Cannot increase permissions of %s" : "無法增加%s的權限", + "Files can't be shared with delete permissions" : "無法分享具有刪除權限的檔案", + "Files can't be shared with create permissions" : "無法分享具有新建權限的檔案", "Expiration date is in the past" : "到期日是之前的時間", "Cannot set expiration date more than %s days in the future" : "無法設定到期日超過未來%s天", "Could not find category \"%s\"" : "找不到分類:\"%s\"", @@ -103,12 +113,19 @@ OC.L10N.register( "Username contains whitespace at the beginning or at the end" : "使用者名詞的開頭或結尾有空白", "A valid password must be provided" : "一定要提供一個有效的密碼", "The username is already being used" : "這個使用者名稱已經有人使用了", + "Login canceled by app" : "程式取消登入", + "User disabled" : "使用者取消", + "Help" : "說明", "Personal" : "個人", "Users" : "使用者", "Admin" : "管理", "Recommended" : "建議", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "程式\"%s\"無法安裝,因為無法讀取appinfo檔案。", + "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "程式\"%s\"無法安裝,因為伺服器版本不符。", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "應用程式 \"%s\" 無法被安裝,下列的相依性並不是完整的: %s", "No app name specified" : "沒有指定應用程式名稱", + "App '%s' could not be installed!" : "程式\"%s\"無法安裝。", + "a safe home for all your data" : "您資料的安全屋", "File is currently busy, please try again later" : "檔案目前忙碌中,請稍候再試", "Can't read file" : "無法讀取檔案", "Application is not enabled" : "應用程式未啟用", @@ -117,18 +134,23 @@ OC.L10N.register( "Unknown user" : "未知的使用者", "No database drivers (sqlite, mysql, or postgresql) installed." : "沒有安裝資料庫驅動程式 (sqlite, mysql, 或 postgresql)", "Microsoft Windows Platform is not supported" : "不支援微軟Windows系統", + "Running Nextcloud Server on the Microsoft Windows platform is not supported. We suggest you use a Linux server in a virtual machine if you have no option for migrating the server itself." : "微軟Windows不支援Nextcloud伺服器,如果您一定要使用,我們建議您在虛擬機中安裝Linux版本伺服器。", "Cannot write into \"config\" directory" : "無法寫入 config 目錄", "Cannot write into \"apps\" directory" : "無法寫入 apps 目錄", "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "通常藉由%s開放網頁伺服器對 apps 目錄的權限%s或是在設定檔中關閉 appstore 就可以修正這個問題", "Cannot create \"data\" directory (%s)" : "無法建立 data 目錄 (%s)", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "可試試修改<a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">給予網頁伺服器寫入根目錄的權限。", "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "通常藉由%s開放網頁伺服器對根目錄的權限%s就可以修正權限問題", "Setting locale to %s failed" : "設定語系為 %s 失敗", "Please install one of these locales on your system and restart your webserver." : "請在系統中安裝這些語系的其中一個,然後重啓網頁伺服器", "Please ask your server administrator to install the module." : "請詢問系統管理員來安裝這些模組", "PHP module %s not installed." : "未安裝 PHP 模組 %s", "PHP setting \"%s\" is not set to \"%s\"." : "PHP設定值 \"%s\" 沒有被設定為 \"%s\"", + "Adjusting this setting in php.ini will make Nextcloud run again" : "調整php.ini中的設定,使Nextcloud重新運作。", "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload 應該要被設定成 \"0\"而不是目前的設定 \"%s\" ", "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "為了修正這個問題,請到php.ini將 <code>mbstring.func_overload</code> 的值改為 <code>0</code>", + "libxml2 2.7.0 is at least required. Currently %s is installed." : "libxml2版本最低需求為2.7.0。目前安裝版本為 %s 。", + "To fix this issue update your libxml2 version and restart your web server." : "修正方式為更新您的libxml2為2.7.0以上版本,再重啟網頁伺服器。", "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP 已經設定成「剪除 inline doc block」模式,這將會使幾個核心應用程式無法使用", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "這大概是由快取或是加速器像是 Zend OPcache, eAccelerator 造成的", "PHP modules have been installed, but they are still listed as missing?" : "你已經安裝了指定的 PHP 模組,可是還是顯示為找不到嗎?", diff --git a/lib/l10n/zh_TW.json b/lib/l10n/zh_TW.json index 7ad8f180fb3..4383312af1e 100644 --- a/lib/l10n/zh_TW.json +++ b/lib/l10n/zh_TW.json @@ -7,12 +7,15 @@ "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "看來您直接複製了範本設定來使用,這可能會毀掉你的安裝,請閱讀說明文件後對 config.php 進行適當的修改", "PHP %s or higher is required." : "需要 PHP %s 或更高版本", "PHP with a version lower than %s is required." : "需要 PHP 版本低於 %s ", + "%sbit or higher PHP required." : "%s 或需要更高階版本的php", "Following databases are supported: %s" : "這些資料庫支援: %s", "The command line tool %s could not be found" : "無法找到命令提示位元工具 %s", "The library %s is not available." : "套件庫 %s 無法使用", "Library %s with a version higher than %s is required - available version %s." : "需要套件庫 %s 版本高於 %s - 可使用的版本是 %s", "Library %s with a version lower than %s is required - available version %s." : "需要套件庫 %s 版本低於 %s - 可使用的版本是 %s", "Following platforms are supported: %s" : "這些平台支援: %s", + "Server version %s or higher is required." : "需要伺服器版本 %s 或更高階版本", + "Server version %s or lower is required." : "需要伺服器版本 %s 或更低階版本", "Unknown filetype" : "未知的檔案類型", "Invalid image" : "無效的圖片", "today" : "今天", @@ -34,15 +37,20 @@ "File name is too long" : "檔案名稱太長", "App directory already exists" : "應用程式目錄已經存在", "Can't create app folder. Please fix permissions. %s" : "無法建立應用程式目錄,請檢查權限:%s", + "Archive does not contain a directory named %s" : "檔案文件未包含目錄名稱 %s", "No source specified when installing app" : "沒有指定應用程式安裝來源", "No href specified when installing app from http" : "從 http 安裝應用程式,找不到 href 屬性", "No path specified when installing app from local file" : "從本地檔案安裝應用程式時沒有指定路徑", "Archives of type %s are not supported" : "不支援 %s 格式的壓縮檔", "Failed to open archive when installing app" : "安裝應用程式時無法開啓壓縮檔", "App does not provide an info.xml file" : "應用程式沒有提供 info.xml 檔案", + "App cannot be installed because appinfo file cannot be read." : "程式無法安裝,因為無法讀取appinfo檔案。", "Signature could not get checked. Please contact the app developer and check your admin screen." : "無法驗證數位簽章,請聯絡 app 開發者,並檢查您的管理頁面", "App can't be installed because of not allowed code in the App" : "無法安裝應用程式因為在當中找到危險的代碼", + "App can't be installed because it is not compatible with this version of the server" : "程式無法安裝,因為伺服器版本不符。", "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "無法安裝應用程式,因為它包含了 <shipped>true</shipped> 標籤,在未發行的應用程式當中這是不允許的", + "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "程式無法安裝,因為info.xml檔案中版本與app商店中要求不同。", + "%s enter the database username and name." : "%s 輸入資料庫名稱及使用者名稱", "%s enter the database username." : "%s 輸入資料庫使用者名稱。", "%s enter the database name." : "%s 輸入資料庫名稱。", "%s you may not use dots in the database name" : "%s 資料庫名稱不能包含小數點", @@ -92,6 +100,8 @@ "Sharing %s failed, because the sharing backend for %s could not find its source" : "分享 %s 失敗,因為 %s 的分享後端找不到它的來源", "Sharing %s failed, because the file could not be found in the file cache" : "分享 %s 失敗,因為在快取中找不到該檔案", "Cannot increase permissions of %s" : "無法增加%s的權限", + "Files can't be shared with delete permissions" : "無法分享具有刪除權限的檔案", + "Files can't be shared with create permissions" : "無法分享具有新建權限的檔案", "Expiration date is in the past" : "到期日是之前的時間", "Cannot set expiration date more than %s days in the future" : "無法設定到期日超過未來%s天", "Could not find category \"%s\"" : "找不到分類:\"%s\"", @@ -101,12 +111,19 @@ "Username contains whitespace at the beginning or at the end" : "使用者名詞的開頭或結尾有空白", "A valid password must be provided" : "一定要提供一個有效的密碼", "The username is already being used" : "這個使用者名稱已經有人使用了", + "Login canceled by app" : "程式取消登入", + "User disabled" : "使用者取消", + "Help" : "說明", "Personal" : "個人", "Users" : "使用者", "Admin" : "管理", "Recommended" : "建議", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "程式\"%s\"無法安裝,因為無法讀取appinfo檔案。", + "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "程式\"%s\"無法安裝,因為伺服器版本不符。", "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "應用程式 \"%s\" 無法被安裝,下列的相依性並不是完整的: %s", "No app name specified" : "沒有指定應用程式名稱", + "App '%s' could not be installed!" : "程式\"%s\"無法安裝。", + "a safe home for all your data" : "您資料的安全屋", "File is currently busy, please try again later" : "檔案目前忙碌中,請稍候再試", "Can't read file" : "無法讀取檔案", "Application is not enabled" : "應用程式未啟用", @@ -115,18 +132,23 @@ "Unknown user" : "未知的使用者", "No database drivers (sqlite, mysql, or postgresql) installed." : "沒有安裝資料庫驅動程式 (sqlite, mysql, 或 postgresql)", "Microsoft Windows Platform is not supported" : "不支援微軟Windows系統", + "Running Nextcloud Server on the Microsoft Windows platform is not supported. We suggest you use a Linux server in a virtual machine if you have no option for migrating the server itself." : "微軟Windows不支援Nextcloud伺服器,如果您一定要使用,我們建議您在虛擬機中安裝Linux版本伺服器。", "Cannot write into \"config\" directory" : "無法寫入 config 目錄", "Cannot write into \"apps\" directory" : "無法寫入 apps 目錄", "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "通常藉由%s開放網頁伺服器對 apps 目錄的權限%s或是在設定檔中關閉 appstore 就可以修正這個問題", "Cannot create \"data\" directory (%s)" : "無法建立 data 目錄 (%s)", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "可試試修改<a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">給予網頁伺服器寫入根目錄的權限。", "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "通常藉由%s開放網頁伺服器對根目錄的權限%s就可以修正權限問題", "Setting locale to %s failed" : "設定語系為 %s 失敗", "Please install one of these locales on your system and restart your webserver." : "請在系統中安裝這些語系的其中一個,然後重啓網頁伺服器", "Please ask your server administrator to install the module." : "請詢問系統管理員來安裝這些模組", "PHP module %s not installed." : "未安裝 PHP 模組 %s", "PHP setting \"%s\" is not set to \"%s\"." : "PHP設定值 \"%s\" 沒有被設定為 \"%s\"", + "Adjusting this setting in php.ini will make Nextcloud run again" : "調整php.ini中的設定,使Nextcloud重新運作。", "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload 應該要被設定成 \"0\"而不是目前的設定 \"%s\" ", "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "為了修正這個問題,請到php.ini將 <code>mbstring.func_overload</code> 的值改為 <code>0</code>", + "libxml2 2.7.0 is at least required. Currently %s is installed." : "libxml2版本最低需求為2.7.0。目前安裝版本為 %s 。", + "To fix this issue update your libxml2 version and restart your web server." : "修正方式為更新您的libxml2為2.7.0以上版本,再重啟網頁伺服器。", "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP 已經設定成「剪除 inline doc block」模式,這將會使幾個核心應用程式無法使用", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "這大概是由快取或是加速器像是 Zend OPcache, eAccelerator 造成的", "PHP modules have been installed, but they are still listed as missing?" : "你已經安裝了指定的 PHP 模組,可是還是顯示為找不到嗎?", diff --git a/lib/private/AppFramework/App.php b/lib/private/AppFramework/App.php index 01844e4c2d5..c7670953b4e 100644 --- a/lib/private/AppFramework/App.php +++ b/lib/private/AppFramework/App.php @@ -93,7 +93,13 @@ class App { try { $controller = $container->query($controllerName); } catch(QueryException $e) { - $appNameSpace = self::buildAppNamespace($appName); + if ($appName === 'core') { + $appNameSpace = 'OC\\Core'; + } else if ($appName === 'settings') { + $appNameSpace = 'OC\\Settings'; + } else { + $appNameSpace = self::buildAppNamespace($appName); + } $controllerName = $appNameSpace . '\\Controller\\' . $controllerName; $controller = $container->query($controllerName); } diff --git a/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php b/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php index daac36606f2..3bfef2df025 100644 --- a/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php +++ b/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php @@ -42,6 +42,7 @@ use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Middleware; use OCP\AppFramework\Http\Response; use OCP\AppFramework\Http\JSONResponse; +use OCP\AppFramework\OCSController; use OCP\INavigationManager; use OCP\IURLGenerator; use OCP\IRequest; @@ -112,7 +113,7 @@ class SecurityMiddleware extends Middleware { * This runs all the security checks before a method call. The * security checks are determined by inspecting the controller method * annotations - * @param string $controller the controllername or string + * @param Controller $controller the controller * @param string $methodName the name of the method * @throws SecurityException when a security check fails */ @@ -145,7 +146,14 @@ class SecurityMiddleware extends Middleware { // CSRF check - also registers the CSRF token since the session may be closed later Util::callRegister(); if(!$this->reflector->hasAnnotation('NoCSRFRequired')) { - if(!$this->request->passesCSRFCheck()) { + /* + * Only allow the CSRF check to fail on OCS Requests. This kind of + * hacks around that we have no full token auth in place yet and we + * do want to offer CSRF checks for web requests. + */ + if(!$this->request->passesCSRFCheck() && !( + $controller instanceof OCSController && + $this->request->getHeader('OCS-APIREQUEST') === 'true')) { throw new CrossSiteRequestForgeryException(); } } diff --git a/lib/private/Authentication/Token/DefaultTokenCleanupJob.php b/lib/private/Authentication/Token/DefaultTokenCleanupJob.php index a0af822d986..389a25a9bba 100644 --- a/lib/private/Authentication/Token/DefaultTokenCleanupJob.php +++ b/lib/private/Authentication/Token/DefaultTokenCleanupJob.php @@ -28,9 +28,8 @@ use OC\BackgroundJob\Job; class DefaultTokenCleanupJob extends Job { protected function run($argument) { - /* @var $provider DefaultTokenProvider */ - // TODO: add OC\Authentication\Token\IProvider::invalidateOldTokens and query interface - $provider = OC::$server->query('OC\Authentication\Token\DefaultTokenProvider'); + /* @var $provider IProvider */ + $provider = OC::$server->query('OC\Authentication\Token\IProvider'); $provider->invalidateOldTokens(); } diff --git a/lib/private/Authentication/Token/IProvider.php b/lib/private/Authentication/Token/IProvider.php index 4fb2830c3ac..65b515960ea 100644 --- a/lib/private/Authentication/Token/IProvider.php +++ b/lib/private/Authentication/Token/IProvider.php @@ -66,6 +66,11 @@ interface IProvider { public function invalidateTokenById(IUser $user, $id); /** + * Invalidate (delete) old session tokens + */ + public function invalidateOldTokens(); + + /** * Save the updated token * * @param IToken $token diff --git a/lib/private/Console/Application.php b/lib/private/Console/Application.php index b3e7003c82c..cad16a070c8 100644 --- a/lib/private/Console/Application.php +++ b/lib/private/Console/Application.php @@ -88,10 +88,10 @@ class Application { require_once __DIR__ . '/../../../core/register_command.php'; if ($this->config->getSystemValue('installed', false)) { if (\OCP\Util::needUpgrade()) { - $output->writeln("ownCloud or one of the apps require upgrade - only a limited number of commands are available"); + $output->writeln("Nextcloud or one of the apps require upgrade - only a limited number of commands are available"); $output->writeln("You may use your browser or the occ upgrade command to do the upgrade"); } elseif ($this->config->getSystemValue('maintenance', false)) { - $output->writeln("ownCloud is in maintenance mode - no app have been loaded"); + $output->writeln("Nextcloud is in maintenance mode - no app have been loaded"); } else { OC_App::loadApps(); foreach (\OC::$server->getAppManager()->getInstalledApps() as $app) { @@ -107,7 +107,7 @@ class Application { } } } else { - $output->writeln("ownCloud is not installed - only a limited number of commands are available"); + $output->writeln("Nextcloud is not installed - only a limited number of commands are available"); } $input = new ArgvInput(); if ($input->getFirstArgument() !== 'check') { diff --git a/lib/private/Repair.php b/lib/private/Repair.php index 6c1eef5b9f6..cd23f5cb806 100644 --- a/lib/private/Repair.php +++ b/lib/private/Repair.php @@ -49,6 +49,7 @@ use OC\Repair\RepairMimeTypes; use OC\Repair\SearchLuceneTables; use OC\Repair\UpdateOutdatedOcsIds; use OC\Repair\RepairInvalidShares; +use OC\Repair\RepairUnmergedShares; use OCP\AppFramework\QueryException; use OCP\Migration\IOutput; use OCP\Migration\IRepairStep; @@ -140,6 +141,12 @@ class Repair implements IOutput{ new RemoveOldShares(\OC::$server->getDatabaseConnection()), new AvatarPermissions(\OC::$server->getDatabaseConnection()), new RemoveRootShares(\OC::$server->getDatabaseConnection(), \OC::$server->getUserManager(), \OC::$server->getLazyRootFolder()), + new RepairUnmergedShares( + \OC::$server->getConfig(), + \OC::$server->getDatabaseConnection(), + \OC::$server->getUserManager(), + \OC::$server->getGroupManager() + ), ]; } diff --git a/lib/private/Repair/RepairUnmergedShares.php b/lib/private/Repair/RepairUnmergedShares.php new file mode 100644 index 00000000000..353877bb873 --- /dev/null +++ b/lib/private/Repair/RepairUnmergedShares.php @@ -0,0 +1,328 @@ +<?php +/** + * @author Vincent Petry <pvince81@owncloud.com> + * + * @copyright Copyright (c) 2016, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OC\Repair; + +use OCP\Migration\IOutput; +use OCP\Migration\IRepairStep; +use OC\Share\Constants; +use OCP\DB\QueryBuilder\IQueryBuilder; +use OCP\IConfig; +use OCP\IDBConnection; +use OCP\IUserManager; +use OCP\IUser; +use OCP\IGroupManager; +use OC\Share20\DefaultShareProvider; + +/** + * Repairs shares for which the received folder was not properly deduplicated. + * + * An unmerged share can for example happen when sharing a folder with the same + * user through multiple ways, like several groups and also directly, additionally + * to group shares. Since 9.0.0 these would create duplicate entries "folder (2)", + * one for every share. This repair step rearranges them so they only appear as a single + * folder. + */ +class RepairUnmergedShares implements IRepairStep { + + /** @var \OCP\IConfig */ + protected $config; + + /** @var \OCP\IDBConnection */ + protected $connection; + + /** @var IUserManager */ + protected $userManager; + + /** @var IGroupManager */ + protected $groupManager; + + /** @var IQueryBuilder */ + private $queryGetSharesWithUsers; + + /** @var IQueryBuilder */ + private $queryUpdateSharePermissionsAndTarget; + + /** @var IQueryBuilder */ + private $queryUpdateShareInBatch; + + /** + * @param \OCP\IConfig $config + * @param \OCP\IDBConnection $connection + */ + public function __construct( + IConfig $config, + IDBConnection $connection, + IUserManager $userManager, + IGroupManager $groupManager + ) { + $this->connection = $connection; + $this->config = $config; + $this->userManager = $userManager; + $this->groupManager = $groupManager; + } + + public function getName() { + return 'Repair unmerged shares'; + } + + /** + * Builds prepared queries for reuse + */ + private function buildPreparedQueries() { + /** + * Retrieve shares for a given user/group and share type + */ + $query = $this->connection->getQueryBuilder(); + $query + ->select('item_source', 'id', 'file_target', 'permissions', 'parent', 'share_type') + ->from('share') + ->where($query->expr()->eq('share_type', $query->createParameter('shareType'))) + ->andWhere($query->expr()->in('share_with', $query->createParameter('shareWiths'))) + ->andWhere($query->expr()->in('item_type', $query->createParameter('itemTypes'))) + ->orderBy('item_source', 'ASC') + ->addOrderBy('stime', 'ASC'); + + $this->queryGetSharesWithUsers = $query; + + /** + * Updates the file_target to the given value for all given share ids. + * + * This updates several shares in bulk which is faster than individually. + */ + $query = $this->connection->getQueryBuilder(); + $query->update('share') + ->set('file_target', $query->createParameter('file_target')) + ->where($query->expr()->in('id', $query->createParameter('ids'))); + + $this->queryUpdateShareInBatch = $query; + + /** + * Updates the share permissions and target path of a single share. + */ + $query = $this->connection->getQueryBuilder(); + $query->update('share') + ->set('permissions', $query->createParameter('permissions')) + ->set('file_target', $query->createParameter('file_target')) + ->where($query->expr()->eq('id', $query->createParameter('shareid'))); + + $this->queryUpdateSharePermissionsAndTarget = $query; + + } + + private function getSharesWithUser($shareType, $shareWiths) { + $groupedShares = []; + + $query = $this->queryGetSharesWithUsers; + $query->setParameter('shareWiths', $shareWiths, IQueryBuilder::PARAM_STR_ARRAY); + $query->setParameter('shareType', $shareType); + $query->setParameter('itemTypes', ['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY); + + $shares = $query->execute()->fetchAll(); + + // group by item_source + foreach ($shares as $share) { + if (!isset($groupedShares[$share['item_source']])) { + $groupedShares[$share['item_source']] = []; + } + $groupedShares[$share['item_source']][] = $share; + } + return $groupedShares; + } + + /** + * Fix the given received share represented by the set of group shares + * and matching sub shares + * + * @param array $groupShares group share entries + * @param array $subShares sub share entries + * + * @return boolean false if the share was not repaired, true if it was + */ + private function fixThisShare($groupShares, $subShares) { + if (empty($subShares)) { + return false; + } + + $groupSharesById = []; + foreach ($groupShares as $groupShare) { + $groupSharesById[$groupShare['id']] = $groupShare; + } + + if ($this->isThisShareValid($groupSharesById, $subShares)) { + return false; + } + + $targetPath = $groupShares[0]['file_target']; + + // check whether the user opted out completely of all subshares + $optedOut = true; + foreach ($subShares as $subShare) { + if ((int)$subShare['permissions'] !== 0) { + $optedOut = false; + break; + } + } + + $shareIds = []; + foreach ($subShares as $subShare) { + // only if the user deleted some subshares but not all, adjust the permissions of that subshare + if (!$optedOut && (int)$subShare['permissions'] === 0 && (int)$subShare['share_type'] === DefaultShareProvider::SHARE_TYPE_USERGROUP) { + // set permissions from parent group share + $permissions = $groupSharesById[$subShare['parent']]['permissions']; + + // fix permissions and target directly + $query = $this->queryUpdateSharePermissionsAndTarget; + $query->setParameter('shareid', $subShare['id']); + $query->setParameter('file_target', $targetPath); + $query->setParameter('permissions', $permissions); + $query->execute(); + } else { + // gather share ids for bulk target update + if ($subShare['file_target'] !== $targetPath) { + $shareIds[] = (int)$subShare['id']; + } + } + } + + if (!empty($shareIds)) { + $query = $this->queryUpdateShareInBatch; + $query->setParameter('ids', $shareIds, IQueryBuilder::PARAM_INT_ARRAY); + $query->setParameter('file_target', $targetPath); + $query->execute(); + } + + return true; + } + + /** + * Checks whether the number of group shares is balanced with the child subshares. + * If all group shares have exactly one subshare, and the target of every subshare + * is the same, then the share is valid. + * If however there is a group share entry that has no matching subshare, it means + * we're in the bogus situation and the whole share must be repaired + * + * @param array $groupSharesById + * @param array $subShares + * + * @return true if the share is valid, false if it needs repair + */ + private function isThisShareValid($groupSharesById, $subShares) { + $foundTargets = []; + + // every group share needs to have exactly one matching subshare + foreach ($subShares as $subShare) { + $foundTargets[$subShare['file_target']] = true; + if (count($foundTargets) > 1) { + // not all the same target path value => invalid + return false; + } + if (isset($groupSharesById[$subShare['parent']])) { + // remove it from the list as we found it + unset($groupSharesById[$subShare['parent']]); + } + } + + // if we found one subshare per group entry, the set will be empty. + // If not empty, it means that one of the group shares did not have + // a matching subshare entry. + return empty($groupSharesById); + } + + /** + * Detect unmerged received shares and merge them properly + */ + private function fixUnmergedShares(IOutput $out, IUser $user) { + $groups = $this->groupManager->getUserGroupIds($user); + if (empty($groups)) { + // user is in no groups, so can't have received group shares + return; + } + + // get all subshares grouped by item source + $subSharesByItemSource = $this->getSharesWithUser(DefaultShareProvider::SHARE_TYPE_USERGROUP, [$user->getUID()]); + + // because sometimes one wants to give the user more permissions than the group share + $userSharesByItemSource = $this->getSharesWithUser(Constants::SHARE_TYPE_USER, [$user->getUID()]); + + if (empty($subSharesByItemSource) && empty($userSharesByItemSource)) { + // nothing to repair for this user, no need to do extra queries + return; + } + + $groupSharesByItemSource = $this->getSharesWithUser(Constants::SHARE_TYPE_GROUP, $groups); + if (empty($groupSharesByItemSource) && empty($userSharesByItemSource)) { + // nothing to repair for this user + return; + } + + foreach ($groupSharesByItemSource as $itemSource => $groupShares) { + $subShares = []; + if (isset($subSharesByItemSource[$itemSource])) { + $subShares = $subSharesByItemSource[$itemSource]; + } + + if (isset($userSharesByItemSource[$itemSource])) { + // add it to the subshares to get a similar treatment + $subShares = array_merge($subShares, $userSharesByItemSource[$itemSource]); + } + + $this->fixThisShare($groupShares, $subShares); + } + } + + /** + * Count all the users + * + * @return int + */ + private function countUsers() { + $allCount = $this->userManager->countUsers(); + + $totalCount = 0; + foreach ($allCount as $backend => $count) { + $totalCount += $count; + } + + return $totalCount; + } + + public function run(IOutput $output) { + $ocVersionFromBeforeUpdate = $this->config->getSystemValue('version', '0.0.0'); + if (version_compare($ocVersionFromBeforeUpdate, '9.1.0.16', '<')) { + // this situation was only possible between 9.0.0 and 9.0.3 included + + $function = function(IUser $user) use ($output) { + $this->fixUnmergedShares($output, $user); + $output->advance(); + }; + + $this->buildPreparedQueries(); + + $userCount = $this->countUsers(); + $output->startProgress($userCount); + + $this->userManager->callForAllUsers($function); + + $output->finishProgress(); + } + } +} diff --git a/lib/private/Share/Share.php b/lib/private/Share/Share.php index fdc5818dbf7..9210dfd1fd1 100644 --- a/lib/private/Share/Share.php +++ b/lib/private/Share/Share.php @@ -2533,7 +2533,7 @@ class Share extends Constants { } } else { if ($fileDependent) { - if ($format == \OC_Share_Backend_File::FORMAT_GET_FOLDER_CONTENTS || $format == \OC_Share_Backend_File::FORMAT_FILE_APP_ROOT) { + if ($format == \OCA\Files_Sharing\ShareBackend\File::FORMAT_GET_FOLDER_CONTENTS || $format == \OCA\Files_Sharing\ShareBackend\File::FORMAT_FILE_APP_ROOT) { $select = '`*PREFIX*share`.`id`, `item_type`, `item_source`, `*PREFIX*share`.`parent`, `uid_owner`, ' . '`share_type`, `share_with`, `file_source`, `path`, `file_target`, `stime`, ' . '`*PREFIX*share`.`permissions`, `expiration`, `storage`, `*PREFIX*filecache`.`parent` as `file_parent`, ' diff --git a/lib/private/User/Database.php b/lib/private/User/Database.php index 354609d0a98..e2cbebab2e4 100644 --- a/lib/private/User/Database.php +++ b/lib/private/User/Database.php @@ -83,6 +83,8 @@ class Database extends \OC\User\Backend implements \OCP\IUserBackend { */ public function createUser($uid, $password) { if (!$this->userExists($uid)) { + $event = new GenericEvent($password); + $this->eventDispatcher->dispatch('OCP\PasswordPolicy::validate', $event); $query = \OC_DB::prepare('INSERT INTO `*PREFIX*users` ( `uid`, `password` ) VALUES( ?, ? )'); $result = $query->execute(array($uid, \OC::$server->getHasher()->hash($password))); diff --git a/settings/js/apps.js b/settings/js/apps.js index 55847162350..66c097e1257 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -396,7 +396,9 @@ OC.Settings.Apps = OC.Settings.Apps || { if(container.children('li[data-id="'+entry.id+'"]').length === 0){ var li=$('<li></li>'); li.attr('data-id', entry.id); - var img= $('<img class="app-icon"/>').attr({ src: entry.icon}); + var img = '<svg width="32" height="32" viewBox="0 0 32 32">'; + img += '<defs><filter id="invert"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" /></filter></defs>'; + img += '<image x="0" y="0" width="32" height="32" preserveAspectRatio="xMinYMin meet" filter="url(#invert)" xlink:href="' + entry.icon + '" class="app-icon" /></svg>'; var a=$('<a></a>').attr('href', entry.href); var filename=$('<span></span>'); var loading = $('<div class="icon-loading-dark"></div>').css('display', 'none'); @@ -425,11 +427,6 @@ OC.Settings.Apps = OC.Settings.Apps || { .animate({opacity: 0.5}) .animate({opacity: 1}) .animate({opacity: 0.75}); - - if (!OC.Util.hasSVGSupport() && entry.icon.match(/\.svg$/i)) { - $(img).addClass('svg'); - OC.Util.replaceSVG(); - } } } diff --git a/settings/l10n/cs_CZ.js b/settings/l10n/cs_CZ.js index a24a6a42845..114e3d1fe78 100644 --- a/settings/l10n/cs_CZ.js +++ b/settings/l10n/cs_CZ.js @@ -117,8 +117,10 @@ OC.L10N.register( "A valid group name must be provided" : "Musíte zadat platný název skupiny", "deleted {groupName}" : "smazána {groupName}", "undo" : "vrátit zpět", + "No group" : "Žádná skupina", "never" : "nikdy", "deleted {userName}" : "smazán {userName}", + "Add group" : "Přidat skupinu", "Invalid quota value \"{val}\"" : "Neplatná hodnota kvóty \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Změna hesla bude mít za následek ztrátu dat, protože jejich obnova není pro tohoto uživatele dostupná.", "A valid username must be provided" : "Musíte zadat platné uživatelské jméno", @@ -147,7 +149,6 @@ OC.L10N.register( "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Konfigurace je nastavena pouze pro čtení. Toto znemožňuje některá nastavení přes webové rozhraní. Dále musí být pro každou změnu povolen zápis do konfiguračního souboru ručně.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP je patrně nastaveno tak, aby odstraňovalo bloky komentářů. Toto bude mít za následek nedostupnost množství hlavních aplikací.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Toto je pravděpodobně způsobeno aplikacemi pro urychlení načítání jako jsou Zend OPcache nebo eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Vaše databáze neběží s úrovní izolace transakcí \"READ COMMITTED\". Toto může způsobit problémy při paralelním spouštění více akcí současně.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "Je nainstalován %1$s nižší verze než %2$s, z důvodu lepší stability a výkonu doporučujeme aktualizovat na novější verzi %1$s.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Schází PHP modul 'fileinfo'. Doporučujeme jej povolit pro nejlepší výsledky detekce typů MIME.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transakční uzamykání souborů je vypnuto, což může vést k problémům s \"race\" podmínkami. Pro zabránění těmto problémům povolte 'filelocking.enabled' v souboru config.php. Více informací lze nalézt v <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentaci ↗</a>.", @@ -279,6 +280,7 @@ OC.L10N.register( "Change password" : "Změnit heslo", "Language" : "Jazyk", "Help translate" : "Pomoci s překladem", + "Web, desktop and mobile clients currently logged in to your account." : "Weboví, desktopoví a mobilní klienti aktuálně přihlášeni k vašemu účtu.", "Device" : "Přístroj", "Last activity" : "Poslední aktivita", "Passcodes that give an app or device permissions to access your account." : "Přihlašovací údaj poskytující aplikaci nebo přístroji oprávnění pro přístup k tomuto účtu.", @@ -307,9 +309,14 @@ OC.L10N.register( "Group" : "Skupina", "Everyone" : "Všichni", "Admins" : "Administrátoři", + "Default quota" : "Výchozí kvóta", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Zvolte prosím kvótu pro úložiště (např. \"512 MB\" nebo \"12 GB\")", "Other" : "Jiný", + "Group admin for" : "Seskupit skupiny pro", "Quota" : "Kvóta", + "Storage location" : "Umístění úložiště", + "User backend" : "Backend uživatelů", + "Last login" : "Poslední přihlášení", "change full name" : "změnit celé jméno", "set new password" : "nastavit nové heslo", "change email address" : "změnit emailovou adresu", diff --git a/settings/l10n/cs_CZ.json b/settings/l10n/cs_CZ.json index 20b008382d4..e026e0b5e1e 100644 --- a/settings/l10n/cs_CZ.json +++ b/settings/l10n/cs_CZ.json @@ -115,8 +115,10 @@ "A valid group name must be provided" : "Musíte zadat platný název skupiny", "deleted {groupName}" : "smazána {groupName}", "undo" : "vrátit zpět", + "No group" : "Žádná skupina", "never" : "nikdy", "deleted {userName}" : "smazán {userName}", + "Add group" : "Přidat skupinu", "Invalid quota value \"{val}\"" : "Neplatná hodnota kvóty \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Změna hesla bude mít za následek ztrátu dat, protože jejich obnova není pro tohoto uživatele dostupná.", "A valid username must be provided" : "Musíte zadat platné uživatelské jméno", @@ -145,7 +147,6 @@ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Konfigurace je nastavena pouze pro čtení. Toto znemožňuje některá nastavení přes webové rozhraní. Dále musí být pro každou změnu povolen zápis do konfiguračního souboru ručně.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP je patrně nastaveno tak, aby odstraňovalo bloky komentářů. Toto bude mít za následek nedostupnost množství hlavních aplikací.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Toto je pravděpodobně způsobeno aplikacemi pro urychlení načítání jako jsou Zend OPcache nebo eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Vaše databáze neběží s úrovní izolace transakcí \"READ COMMITTED\". Toto může způsobit problémy při paralelním spouštění více akcí současně.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "Je nainstalován %1$s nižší verze než %2$s, z důvodu lepší stability a výkonu doporučujeme aktualizovat na novější verzi %1$s.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Schází PHP modul 'fileinfo'. Doporučujeme jej povolit pro nejlepší výsledky detekce typů MIME.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transakční uzamykání souborů je vypnuto, což může vést k problémům s \"race\" podmínkami. Pro zabránění těmto problémům povolte 'filelocking.enabled' v souboru config.php. Více informací lze nalézt v <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentaci ↗</a>.", @@ -277,6 +278,7 @@ "Change password" : "Změnit heslo", "Language" : "Jazyk", "Help translate" : "Pomoci s překladem", + "Web, desktop and mobile clients currently logged in to your account." : "Weboví, desktopoví a mobilní klienti aktuálně přihlášeni k vašemu účtu.", "Device" : "Přístroj", "Last activity" : "Poslední aktivita", "Passcodes that give an app or device permissions to access your account." : "Přihlašovací údaj poskytující aplikaci nebo přístroji oprávnění pro přístup k tomuto účtu.", @@ -305,9 +307,14 @@ "Group" : "Skupina", "Everyone" : "Všichni", "Admins" : "Administrátoři", + "Default quota" : "Výchozí kvóta", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Zvolte prosím kvótu pro úložiště (např. \"512 MB\" nebo \"12 GB\")", "Other" : "Jiný", + "Group admin for" : "Seskupit skupiny pro", "Quota" : "Kvóta", + "Storage location" : "Umístění úložiště", + "User backend" : "Backend uživatelů", + "Last login" : "Poslední přihlášení", "change full name" : "změnit celé jméno", "set new password" : "nastavit nové heslo", "change email address" : "změnit emailovou adresu", diff --git a/settings/l10n/de.js b/settings/l10n/de.js index 89eb0f13f0b..76ea414a09b 100644 --- a/settings/l10n/de.js +++ b/settings/l10n/de.js @@ -3,7 +3,7 @@ OC.L10N.register( { "Wrong password" : "Falsches Passwort", "Saved" : "Gespeichert", - "No user supplied" : "Keinen Benutzer übermittelt", + "No user supplied" : "Kein Benutzer übermittelt", "Authentication error" : "Authentifizierungsfehler", "Please provide an admin recovery password, otherwise all user data will be lost" : "Bitte gib ein Wiederherstellungspasswort für das Administratorkonto an, da sonst alle Benutzerdaten verlorengehen können", "Wrong admin recovery password. Please check the password and try again." : "Falsches Wiederherstellungspasswort für das Admin-Konto. Bitte überprüfe das Passwort und versuche es erneut.", @@ -89,12 +89,15 @@ OC.L10N.register( "Disconnect" : "Trennen", "Internet Explorer" : "Internet Explorer", "Edge" : "Edge", + "Firefox" : "Firefox", "Google Chrome" : "Google Chrome", "Safari" : "Safari", "Google Chrome for Android" : "Google Chrome für Android", "iPhone" : "iPhone", "iOS Client" : "iOS Client", "Android Client" : "Android Client", + "Sync client - {os}" : "Synchronisationssoftware - {os}", + "This session" : "Diese Sitzung", "Error while loading browser sessions and device tokens" : "Fehler beim Laden der Browser-Sitzungen und Gerätetoken", "Error while creating device token" : "Fehler beim Erstellen des Gerätetokens", "Error while deleting the token" : "Fehler beim Löschen des Gerätetokens", @@ -114,8 +117,10 @@ OC.L10N.register( "A valid group name must be provided" : "Ein gültiger Gruppenname muss angegeben werden", "deleted {groupName}" : "{groupName} gelöscht", "undo" : "rückgängig machen", + "No group" : "Keine Gruppe", "never" : "niemals", "deleted {userName}" : "{userName} gelöscht", + "Add group" : "Gruppe hinzufügen", "Invalid quota value \"{val}\"" : "Ungültiger Grenzwert \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Die Änderung des Passworts führt zu Datenverlust, weil die Datenwiederherstellung für diesen Benutzer nicht verfügbar ist", "A valid username must be provided" : "Es muss ein gültiger Benutzername angegeben werden", @@ -144,7 +149,7 @@ OC.L10N.register( "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP ist offenbar so konfiguriert, dass PHPDoc-Blöcke in der Anweisung entfernt werden. Dadurch sind mehrere Kern-Apps nicht erreichbar.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dies wird wahrscheinlich durch Zwischenspeicher/Beschleuniger wie etwa Zend OPcache oder eAccelerator verursacht.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Deine Datenbank läuft nicht mit der \"READ COMMITTED\" Transaktionsisolationsstufe. Dies kann Probleme hervorrufen, wenn mehrere Aktionen parallel ausgeführt werden.", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Deine Datenbank läuft nicht mit der \"READ COMMITED\" Transaktionsisolationsstufe. Dies kann Probleme hervorrufen, wenn mehrere Aktionen parallel ausgeführt werden.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s ist in einer älteren Version als %2$s installiert. Aus Stabilitäts- und Performancegründen empfehlen wir eine Aktualisierung auf eine neuere %1$s-Version", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Das PHP-Modul 'fileinfo' fehlt. Wir empfehlen dieses Modul zu aktivieren um die besten Resultate bei der Erkennung der Dateitypen zu erreichen.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transaktionales Sperren ist deaktiviert, was zu Problemen mit Laufzeitbedingungen führen kann. 'filelocking.enabled' in der config.php aktivieren, um diese Probleme zu vermeiden. Weitere Informationen findest du in unserer <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Dokumentation ↗</a>.", @@ -241,7 +246,7 @@ OC.L10N.register( "Uninstall App" : "App deinstallieren", "Enable experimental apps" : "Experimentelle Apps aktivieren", "SSL Root Certificates" : "SSL Root Zertifikate", - "Common Name" : "Common Name", + "Common Name" : "Allgemeiner Name", "Valid until" : "Gültig bis", "Issued By" : "Ausgestellt von:", "Valid until %s" : "Gültig bis %s", @@ -276,6 +281,10 @@ OC.L10N.register( "Change password" : "Passwort ändern", "Language" : "Sprache", "Help translate" : "Hilf bei der Übersetzung", + "Web, desktop and mobile clients currently logged in to your account." : "Aktuell in Deinem Konto eingeloggte Web-, Desktop- und Mobil-Clients.", + "Device" : "Gerät", + "Last activity" : "Letzte Aktivität", + "Passcodes that give an app or device permissions to access your account." : "PINs mit denen APPs oder Geräte auf Dein Konto zugreifen können.", "Name" : "Name", "App name" : "App-Name", "Create new app password" : "Neues App-Passwort erstellen", @@ -301,9 +310,14 @@ OC.L10N.register( "Group" : "Gruppe", "Everyone" : "Jeder", "Admins" : "Administratoren", + "Default quota" : "Standard Speicherplatzgröße", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Bitte Speicherkontingent eingeben (z. B.: „512 MB“ oder „12 GB“)", "Other" : "Andere", + "Group admin for" : "Gruppenadministrator für", "Quota" : "Quota", + "Storage location" : "Speicherort", + "User backend" : "Benutzer-Backend", + "Last login" : "Letztes Login", "change full name" : "Vollständigen Namen ändern", "set new password" : "Neues Passwort setzen", "change email address" : "E-Mail-Adresse ändern", diff --git a/settings/l10n/de.json b/settings/l10n/de.json index 7cba3b5fa6a..8e40adaa26d 100644 --- a/settings/l10n/de.json +++ b/settings/l10n/de.json @@ -1,7 +1,7 @@ { "translations": { "Wrong password" : "Falsches Passwort", "Saved" : "Gespeichert", - "No user supplied" : "Keinen Benutzer übermittelt", + "No user supplied" : "Kein Benutzer übermittelt", "Authentication error" : "Authentifizierungsfehler", "Please provide an admin recovery password, otherwise all user data will be lost" : "Bitte gib ein Wiederherstellungspasswort für das Administratorkonto an, da sonst alle Benutzerdaten verlorengehen können", "Wrong admin recovery password. Please check the password and try again." : "Falsches Wiederherstellungspasswort für das Admin-Konto. Bitte überprüfe das Passwort und versuche es erneut.", @@ -87,12 +87,15 @@ "Disconnect" : "Trennen", "Internet Explorer" : "Internet Explorer", "Edge" : "Edge", + "Firefox" : "Firefox", "Google Chrome" : "Google Chrome", "Safari" : "Safari", "Google Chrome for Android" : "Google Chrome für Android", "iPhone" : "iPhone", "iOS Client" : "iOS Client", "Android Client" : "Android Client", + "Sync client - {os}" : "Synchronisationssoftware - {os}", + "This session" : "Diese Sitzung", "Error while loading browser sessions and device tokens" : "Fehler beim Laden der Browser-Sitzungen und Gerätetoken", "Error while creating device token" : "Fehler beim Erstellen des Gerätetokens", "Error while deleting the token" : "Fehler beim Löschen des Gerätetokens", @@ -112,8 +115,10 @@ "A valid group name must be provided" : "Ein gültiger Gruppenname muss angegeben werden", "deleted {groupName}" : "{groupName} gelöscht", "undo" : "rückgängig machen", + "No group" : "Keine Gruppe", "never" : "niemals", "deleted {userName}" : "{userName} gelöscht", + "Add group" : "Gruppe hinzufügen", "Invalid quota value \"{val}\"" : "Ungültiger Grenzwert \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Die Änderung des Passworts führt zu Datenverlust, weil die Datenwiederherstellung für diesen Benutzer nicht verfügbar ist", "A valid username must be provided" : "Es muss ein gültiger Benutzername angegeben werden", @@ -142,7 +147,7 @@ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP ist offenbar so konfiguriert, dass PHPDoc-Blöcke in der Anweisung entfernt werden. Dadurch sind mehrere Kern-Apps nicht erreichbar.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dies wird wahrscheinlich durch Zwischenspeicher/Beschleuniger wie etwa Zend OPcache oder eAccelerator verursacht.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Deine Datenbank läuft nicht mit der \"READ COMMITTED\" Transaktionsisolationsstufe. Dies kann Probleme hervorrufen, wenn mehrere Aktionen parallel ausgeführt werden.", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Deine Datenbank läuft nicht mit der \"READ COMMITED\" Transaktionsisolationsstufe. Dies kann Probleme hervorrufen, wenn mehrere Aktionen parallel ausgeführt werden.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s ist in einer älteren Version als %2$s installiert. Aus Stabilitäts- und Performancegründen empfehlen wir eine Aktualisierung auf eine neuere %1$s-Version", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Das PHP-Modul 'fileinfo' fehlt. Wir empfehlen dieses Modul zu aktivieren um die besten Resultate bei der Erkennung der Dateitypen zu erreichen.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transaktionales Sperren ist deaktiviert, was zu Problemen mit Laufzeitbedingungen führen kann. 'filelocking.enabled' in der config.php aktivieren, um diese Probleme zu vermeiden. Weitere Informationen findest du in unserer <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Dokumentation ↗</a>.", @@ -239,7 +244,7 @@ "Uninstall App" : "App deinstallieren", "Enable experimental apps" : "Experimentelle Apps aktivieren", "SSL Root Certificates" : "SSL Root Zertifikate", - "Common Name" : "Common Name", + "Common Name" : "Allgemeiner Name", "Valid until" : "Gültig bis", "Issued By" : "Ausgestellt von:", "Valid until %s" : "Gültig bis %s", @@ -274,6 +279,10 @@ "Change password" : "Passwort ändern", "Language" : "Sprache", "Help translate" : "Hilf bei der Übersetzung", + "Web, desktop and mobile clients currently logged in to your account." : "Aktuell in Deinem Konto eingeloggte Web-, Desktop- und Mobil-Clients.", + "Device" : "Gerät", + "Last activity" : "Letzte Aktivität", + "Passcodes that give an app or device permissions to access your account." : "PINs mit denen APPs oder Geräte auf Dein Konto zugreifen können.", "Name" : "Name", "App name" : "App-Name", "Create new app password" : "Neues App-Passwort erstellen", @@ -299,9 +308,14 @@ "Group" : "Gruppe", "Everyone" : "Jeder", "Admins" : "Administratoren", + "Default quota" : "Standard Speicherplatzgröße", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Bitte Speicherkontingent eingeben (z. B.: „512 MB“ oder „12 GB“)", "Other" : "Andere", + "Group admin for" : "Gruppenadministrator für", "Quota" : "Quota", + "Storage location" : "Speicherort", + "User backend" : "Benutzer-Backend", + "Last login" : "Letztes Login", "change full name" : "Vollständigen Namen ändern", "set new password" : "Neues Passwort setzen", "change email address" : "E-Mail-Adresse ändern", diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js index 8083e41ceab..4474c11a040 100644 --- a/settings/l10n/de_DE.js +++ b/settings/l10n/de_DE.js @@ -3,7 +3,7 @@ OC.L10N.register( { "Wrong password" : "Falsches Passwort", "Saved" : "Gespeichert", - "No user supplied" : "Keinen Benutzer angegeben", + "No user supplied" : "Kein Benutzer angegeben", "Authentication error" : "Authentifizierungsfehler", "Please provide an admin recovery password, otherwise all user data will be lost" : "Bitte geben Sie ein Wiederherstellungspasswort für das Administratorkonto an, da sonst alle Benutzerdaten verlorengehen können", "Wrong admin recovery password. Please check the password and try again." : "Falsches Wiederherstellungspasswort für das Admin-Konto. Bitte überprüfen Sie das Passwort und versuchen Sie es erneut.", @@ -94,11 +94,13 @@ OC.L10N.register( "Safari" : "Safari", "Google Chrome for Android" : "Google Chrome für Android", "iPhone" : "iPhone", - "iOS Client" : "iOS Client", - "Android Client" : "Android Client", + "iOS Client" : "iOS-Client", + "Android Client" : "Android-Client", + "Sync client - {os}" : "Synchronisationssoftware - {os}", + "This session" : "Diese Sitzung", "Error while loading browser sessions and device tokens" : "Fehler beim Laden der Browser-Sitzungen und Gerätetoken", - "Error while creating device token" : "Fehler beim Erstellen des Gerätetokens", - "Error while deleting the token" : "Fehler beim Löschen des Gerätetokens", + "Error while creating device token" : "Fehler beim Erstellen des Geräte-Tokens", + "Error while deleting the token" : "Fehler beim Löschen des Geräte-Tokens", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Es ist ein Fehler aufgetreten. Bitte laden Sie ein ASCII-kodiertes PEM-Zertifikat hoch.", "Valid until {date}" : "Gültig bis {date}", "Delete" : "Löschen", @@ -106,7 +108,7 @@ OC.L10N.register( "Select a profile picture" : "Wählen Sie ein Profilbild", "Very weak password" : "Sehr schwaches Passwort", "Weak password" : "Schwaches Passwort", - "So-so password" : "Passables Passwort", + "So-so password" : "Akzeptables Passwort", "Good password" : "Gutes Passwort", "Strong password" : "Starkes Passwort", "Groups" : "Gruppen", @@ -115,8 +117,10 @@ OC.L10N.register( "A valid group name must be provided" : "Ein gültiger Gruppenname muss angegeben werden", "deleted {groupName}" : "{groupName} gelöscht", "undo" : "rückgängig machen", + "No group" : "Keine Gruppe", "never" : "niemals", "deleted {userName}" : "{userName} gelöscht", + "Add group" : "Gruppe hinzufügen", "Invalid quota value \"{val}\"" : "Ungültiger Grenzwert \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Die Änderung des Passworts führt zu Datenverlust, weil die Datenwiederherstellung für diesen Benutzer nicht verfügbar ist", "A valid username must be provided" : "Es muss ein gültiger Benutzername angegeben werden", @@ -145,7 +149,7 @@ OC.L10N.register( "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP ist offenbar so konfiguriert, dass PHPDoc-Blöcke in der Anweisung entfernt werden. Dadurch sind mehrere Kern-Apps nicht erreichbar.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dies wird wahrscheinlich durch Zwischenspeicher/Beschleuniger wie etwa Zend OPcache oder eAccelerator verursacht.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "ihre Datenbank läuft nicht mit der \"READ COMMITTED\" Transaktionsisolationsstufe. Dies kann Probleme hervorrufen, wenn mehrere Aktionen parallel ausgeführt werden.", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Ihre Datenbank läuft nicht mit der \"READ COMMITED\" Transaktionsisolationsstufe. Dies kann Probleme hervorrufen, wenn mehrere Aktionen parallel ausgeführt werden.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s ist in einer älteren Version als %2$s installiert. Aus Stabilitäts- und Performancegründen empfehlen wir eine Aktualisierung auf eine neuere %1$s-Version", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Das PHP-Modul 'fileinfo' fehlt. Wir empfehlen Ihnen dieses Modul zu aktivieren, um die besten Resultate bei der Bestimmung der Dateitypen zu erzielen.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transaktionales Sperren ist deaktiviert, was zu Problemen mit Laufzeitbedingungen führen kann. Aktivieren Sie 'filelocking.enabled' in der config.php diese Probleme zu vermeiden. Weitere Informationen findest Sie in unserer <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Dokumentation ↗</a>.", @@ -166,7 +170,7 @@ OC.L10N.register( "Expire after " : "Ablauf nach ", "days" : "Tagen", "Enforce expiration date" : "Ablaufdatum erzwingen", - "Allow resharing" : "Weiterverteilen erlauben", + "Allow resharing" : "Weiterteilen erlauben", "Allow sharing with groups" : "Mit Gruppen teilen erlauben", "Restrict users to only share with users in their groups" : "Benutzer auf das Teilen innerhalb ihrer Gruppen beschränken", "Allow users to send mail notification for shared files to other users" : "Benutzern erlauben, E-Mail-Benachrichtigungen für freigegebene Dateien an andere Benutzer zu senden", @@ -180,7 +184,7 @@ OC.L10N.register( "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php ist als Webcron-Dienst registriert, der die cron.php alle 15 Minuten per HTTP aufruft.", "Use system's cron service to call the cron.php file every 15 minutes." : "Benutzen Sie den systemeigenen Cron-Dienst, um die cron.php alle 15 Minuten aufzurufen.", "Enable server-side encryption" : "Serverseitige Verschlüsselung aktivieren", - "Please read carefully before activating server-side encryption: " : "Bitte lesen Sie ganz genau, bevor Sie die Serverseite Verschlüsselung aktivieren:", + "Please read carefully before activating server-side encryption: " : "Bitte lesen Sie ganz genau, bevor Sie die serverseitige Verschlüsselung aktivieren:", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Wird die Verschlüsselung einmal aktiviert, so werden alle ab diesem Zeitpunkt hochgeladene Dateien verschlüsselt. Sie kann nur wieder deaktiviert werden, wenn das Verschlüsselungsmodul dies unterstützt und alle Voraussetzungen (wie das Setzen eines Wiederherstellungsschlüssels) im Vorhinein erfüllt wurden.", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Verschlüsselung alleine garantiert nicht die Systemsicherheit. Bitte lese in der Dokumentation nach, wie die Verschlüsselungs-app funktioniert und welche Anwendungsfälle unterstützt werden.", "Be aware that encryption always increases the file size." : "Bedenke das durch die Verschlüsselung die Dateigröße zunimmt. ", @@ -202,8 +206,8 @@ OC.L10N.register( "Server address" : "Serveradresse", "Port" : "Port", "Credentials" : "Zugangsdaten", - "SMTP Username" : "SMTP Benutzername", - "SMTP Password" : "SMTP Passwort", + "SMTP Username" : "SMTP-Benutzername", + "SMTP Password" : "SMTP-Passwort", "Store credentials" : "Anmeldeinformationen speichern", "Test email settings" : "E-Mail-Einstellungen testen", "Send email" : "E-Mail senden", @@ -215,7 +219,7 @@ OC.L10N.register( "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "SQLite wird als Datenbank verwendet. Bei größeren Installationen wird empfohlen, auf ein anderes Datenbank-Backend zu wechseln.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Insbesondere bei der Nutzung des Desktop Clients zur Dateisynchronisierung wird vom Einsatz von SQLite abgeraten.", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Um zu einer anderen Datenbank zu migrieren, benutzen Sie bitte die Kommandozeile: 'occ db:convert-type', oder in die <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Dokumentation ↗</a> schauen.", - "How to do backups" : "Wie man Backups anlegt", + "How to do backups" : "Wie man Datensicherungen anlegt", "Advanced monitoring" : "Erweitertes Monitoring", "Performance tuning" : "Leistungsoptimierung", "Improving the config.php" : "Die config.php optimieren", @@ -242,7 +246,7 @@ OC.L10N.register( "Uninstall App" : "App deinstallieren", "Enable experimental apps" : "Experimentelle Apps aktivieren", "SSL Root Certificates" : "SSL Root Zertifikate", - "Common Name" : "Common Name", + "Common Name" : "Allgemeiner Name", "Valid until" : "Gültig bis", "Issued By" : "Ausgestellt von:", "Valid until %s" : "Gültig bis %s", @@ -277,6 +281,10 @@ OC.L10N.register( "Change password" : "Passwort ändern", "Language" : "Sprache", "Help translate" : "Helfen Sie bei der Übersetzung", + "Web, desktop and mobile clients currently logged in to your account." : "Aktuell in Ihrem Konto eingeloggte Web-, Desktop- und Mobil-Clients.", + "Device" : "Gerät", + "Last activity" : "Letzte Aktivität", + "Passcodes that give an app or device permissions to access your account." : "PINs mit denen APPs oder Geräte auf Ihr Konto zugreifen können.", "Name" : "Name", "App name" : "App-Name", "Create new app password" : "Neues App-Passwort erstellen", @@ -302,9 +310,14 @@ OC.L10N.register( "Group" : "Gruppe", "Everyone" : "Jeder", "Admins" : "Administratoren", + "Default quota" : "Standard-Kontingent", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Bitte Speicherkontingent eingeben (z.B.: „512 MB“ oder „12 GB“)", "Other" : "Andere", + "Group admin for" : "Gruppenadministrator für", "Quota" : "Kontingent", + "Storage location" : "Speicherort", + "User backend" : "Benutzer-Backend", + "Last login" : "Letzte Anmeldung", "change full name" : "Vollständigen Namen ändern", "set new password" : "Neues Passwort setzen", "change email address" : "E-Mail-Adresse ändern", diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json index ce7b44aaec0..030f3f1cea2 100644 --- a/settings/l10n/de_DE.json +++ b/settings/l10n/de_DE.json @@ -1,7 +1,7 @@ { "translations": { "Wrong password" : "Falsches Passwort", "Saved" : "Gespeichert", - "No user supplied" : "Keinen Benutzer angegeben", + "No user supplied" : "Kein Benutzer angegeben", "Authentication error" : "Authentifizierungsfehler", "Please provide an admin recovery password, otherwise all user data will be lost" : "Bitte geben Sie ein Wiederherstellungspasswort für das Administratorkonto an, da sonst alle Benutzerdaten verlorengehen können", "Wrong admin recovery password. Please check the password and try again." : "Falsches Wiederherstellungspasswort für das Admin-Konto. Bitte überprüfen Sie das Passwort und versuchen Sie es erneut.", @@ -92,11 +92,13 @@ "Safari" : "Safari", "Google Chrome for Android" : "Google Chrome für Android", "iPhone" : "iPhone", - "iOS Client" : "iOS Client", - "Android Client" : "Android Client", + "iOS Client" : "iOS-Client", + "Android Client" : "Android-Client", + "Sync client - {os}" : "Synchronisationssoftware - {os}", + "This session" : "Diese Sitzung", "Error while loading browser sessions and device tokens" : "Fehler beim Laden der Browser-Sitzungen und Gerätetoken", - "Error while creating device token" : "Fehler beim Erstellen des Gerätetokens", - "Error while deleting the token" : "Fehler beim Löschen des Gerätetokens", + "Error while creating device token" : "Fehler beim Erstellen des Geräte-Tokens", + "Error while deleting the token" : "Fehler beim Löschen des Geräte-Tokens", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Es ist ein Fehler aufgetreten. Bitte laden Sie ein ASCII-kodiertes PEM-Zertifikat hoch.", "Valid until {date}" : "Gültig bis {date}", "Delete" : "Löschen", @@ -104,7 +106,7 @@ "Select a profile picture" : "Wählen Sie ein Profilbild", "Very weak password" : "Sehr schwaches Passwort", "Weak password" : "Schwaches Passwort", - "So-so password" : "Passables Passwort", + "So-so password" : "Akzeptables Passwort", "Good password" : "Gutes Passwort", "Strong password" : "Starkes Passwort", "Groups" : "Gruppen", @@ -113,8 +115,10 @@ "A valid group name must be provided" : "Ein gültiger Gruppenname muss angegeben werden", "deleted {groupName}" : "{groupName} gelöscht", "undo" : "rückgängig machen", + "No group" : "Keine Gruppe", "never" : "niemals", "deleted {userName}" : "{userName} gelöscht", + "Add group" : "Gruppe hinzufügen", "Invalid quota value \"{val}\"" : "Ungültiger Grenzwert \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Die Änderung des Passworts führt zu Datenverlust, weil die Datenwiederherstellung für diesen Benutzer nicht verfügbar ist", "A valid username must be provided" : "Es muss ein gültiger Benutzername angegeben werden", @@ -143,7 +147,7 @@ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP ist offenbar so konfiguriert, dass PHPDoc-Blöcke in der Anweisung entfernt werden. Dadurch sind mehrere Kern-Apps nicht erreichbar.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dies wird wahrscheinlich durch Zwischenspeicher/Beschleuniger wie etwa Zend OPcache oder eAccelerator verursacht.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "ihre Datenbank läuft nicht mit der \"READ COMMITTED\" Transaktionsisolationsstufe. Dies kann Probleme hervorrufen, wenn mehrere Aktionen parallel ausgeführt werden.", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Ihre Datenbank läuft nicht mit der \"READ COMMITED\" Transaktionsisolationsstufe. Dies kann Probleme hervorrufen, wenn mehrere Aktionen parallel ausgeführt werden.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s ist in einer älteren Version als %2$s installiert. Aus Stabilitäts- und Performancegründen empfehlen wir eine Aktualisierung auf eine neuere %1$s-Version", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Das PHP-Modul 'fileinfo' fehlt. Wir empfehlen Ihnen dieses Modul zu aktivieren, um die besten Resultate bei der Bestimmung der Dateitypen zu erzielen.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transaktionales Sperren ist deaktiviert, was zu Problemen mit Laufzeitbedingungen führen kann. Aktivieren Sie 'filelocking.enabled' in der config.php diese Probleme zu vermeiden. Weitere Informationen findest Sie in unserer <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Dokumentation ↗</a>.", @@ -164,7 +168,7 @@ "Expire after " : "Ablauf nach ", "days" : "Tagen", "Enforce expiration date" : "Ablaufdatum erzwingen", - "Allow resharing" : "Weiterverteilen erlauben", + "Allow resharing" : "Weiterteilen erlauben", "Allow sharing with groups" : "Mit Gruppen teilen erlauben", "Restrict users to only share with users in their groups" : "Benutzer auf das Teilen innerhalb ihrer Gruppen beschränken", "Allow users to send mail notification for shared files to other users" : "Benutzern erlauben, E-Mail-Benachrichtigungen für freigegebene Dateien an andere Benutzer zu senden", @@ -178,7 +182,7 @@ "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php ist als Webcron-Dienst registriert, der die cron.php alle 15 Minuten per HTTP aufruft.", "Use system's cron service to call the cron.php file every 15 minutes." : "Benutzen Sie den systemeigenen Cron-Dienst, um die cron.php alle 15 Minuten aufzurufen.", "Enable server-side encryption" : "Serverseitige Verschlüsselung aktivieren", - "Please read carefully before activating server-side encryption: " : "Bitte lesen Sie ganz genau, bevor Sie die Serverseite Verschlüsselung aktivieren:", + "Please read carefully before activating server-side encryption: " : "Bitte lesen Sie ganz genau, bevor Sie die serverseitige Verschlüsselung aktivieren:", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Wird die Verschlüsselung einmal aktiviert, so werden alle ab diesem Zeitpunkt hochgeladene Dateien verschlüsselt. Sie kann nur wieder deaktiviert werden, wenn das Verschlüsselungsmodul dies unterstützt und alle Voraussetzungen (wie das Setzen eines Wiederherstellungsschlüssels) im Vorhinein erfüllt wurden.", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Verschlüsselung alleine garantiert nicht die Systemsicherheit. Bitte lese in der Dokumentation nach, wie die Verschlüsselungs-app funktioniert und welche Anwendungsfälle unterstützt werden.", "Be aware that encryption always increases the file size." : "Bedenke das durch die Verschlüsselung die Dateigröße zunimmt. ", @@ -200,8 +204,8 @@ "Server address" : "Serveradresse", "Port" : "Port", "Credentials" : "Zugangsdaten", - "SMTP Username" : "SMTP Benutzername", - "SMTP Password" : "SMTP Passwort", + "SMTP Username" : "SMTP-Benutzername", + "SMTP Password" : "SMTP-Passwort", "Store credentials" : "Anmeldeinformationen speichern", "Test email settings" : "E-Mail-Einstellungen testen", "Send email" : "E-Mail senden", @@ -213,7 +217,7 @@ "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "SQLite wird als Datenbank verwendet. Bei größeren Installationen wird empfohlen, auf ein anderes Datenbank-Backend zu wechseln.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Insbesondere bei der Nutzung des Desktop Clients zur Dateisynchronisierung wird vom Einsatz von SQLite abgeraten.", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Um zu einer anderen Datenbank zu migrieren, benutzen Sie bitte die Kommandozeile: 'occ db:convert-type', oder in die <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Dokumentation ↗</a> schauen.", - "How to do backups" : "Wie man Backups anlegt", + "How to do backups" : "Wie man Datensicherungen anlegt", "Advanced monitoring" : "Erweitertes Monitoring", "Performance tuning" : "Leistungsoptimierung", "Improving the config.php" : "Die config.php optimieren", @@ -240,7 +244,7 @@ "Uninstall App" : "App deinstallieren", "Enable experimental apps" : "Experimentelle Apps aktivieren", "SSL Root Certificates" : "SSL Root Zertifikate", - "Common Name" : "Common Name", + "Common Name" : "Allgemeiner Name", "Valid until" : "Gültig bis", "Issued By" : "Ausgestellt von:", "Valid until %s" : "Gültig bis %s", @@ -275,6 +279,10 @@ "Change password" : "Passwort ändern", "Language" : "Sprache", "Help translate" : "Helfen Sie bei der Übersetzung", + "Web, desktop and mobile clients currently logged in to your account." : "Aktuell in Ihrem Konto eingeloggte Web-, Desktop- und Mobil-Clients.", + "Device" : "Gerät", + "Last activity" : "Letzte Aktivität", + "Passcodes that give an app or device permissions to access your account." : "PINs mit denen APPs oder Geräte auf Ihr Konto zugreifen können.", "Name" : "Name", "App name" : "App-Name", "Create new app password" : "Neues App-Passwort erstellen", @@ -300,9 +308,14 @@ "Group" : "Gruppe", "Everyone" : "Jeder", "Admins" : "Administratoren", + "Default quota" : "Standard-Kontingent", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Bitte Speicherkontingent eingeben (z.B.: „512 MB“ oder „12 GB“)", "Other" : "Andere", + "Group admin for" : "Gruppenadministrator für", "Quota" : "Kontingent", + "Storage location" : "Speicherort", + "User backend" : "Benutzer-Backend", + "Last login" : "Letzte Anmeldung", "change full name" : "Vollständigen Namen ändern", "set new password" : "Neues Passwort setzen", "change email address" : "E-Mail-Adresse ändern", diff --git a/settings/l10n/el.js b/settings/l10n/el.js index 2f059f02b1f..7802dd2b04b 100644 --- a/settings/l10n/el.js +++ b/settings/l10n/el.js @@ -196,6 +196,7 @@ OC.L10N.register( "Admin documentation" : "Τεκμηρίωση Διαχειριστή", "Show description …" : "Εμφάνιση περιγραφής", "Hide description …" : "Απόκρυψη περιγραφής", + "This app has an update available." : "Αυτή η εφαρμογή έχει διαθέσιμη ενημέρωση.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Αυτή η εφαρμογή δεν μπορεί να εγκατασταθεί διότι δεν εκπληρώνονται οι ακόλουθες εξαρτήσεις:", "Enable only for specific groups" : "Ενεργοποίηση μόνο για καθορισμένες ομάδες", "Uninstall App" : "Απεγκατάσταση Εφαρμογής", @@ -215,8 +216,11 @@ OC.L10N.register( "Commercial support" : "Εμπορική Υποστήριξη", "Profile picture" : "Φωτογραφία προφίλ", "Upload new" : "Μεταφόρτωση νέου", + "Select from Files" : "Επιλογή από τα Αρχεία", "Remove image" : "Αφαίρεση εικόνας", + "png or jpg, max. 20 MB" : "png ή jpg, μεγ. 20 MB", "Cancel" : "Άκυρο", + "Choose as profile picture" : "Επιλέξτε εικόνα προφίλ", "Full name" : "Πλήρες όνομα", "No display name set" : "Δεν ορίστηκε όνομα", "Email" : "Ηλεκτρονικό ταχυδρομείο", @@ -229,7 +233,10 @@ OC.L10N.register( "Change password" : "Αλλαγή συνθηματικού", "Language" : "Γλώσσα", "Help translate" : "Βοηθήστε στη μετάφραση", + "Device" : "Συσκευή", "Name" : "Όνομα", + "App name" : "Όνομα εφαρμογής", + "Create new app password" : "Δημιουργία νέου συνθηματικού εφαρμογής", "Username" : "Όνομα χρήστη", "Done" : "Ολοκληρώθηκε", "Get the apps to sync your files" : "Λήψη της εφαρμογής για συγχρονισμό των αρχείων σας", @@ -252,6 +259,7 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Παρακαλώ εισάγετε επιτρεπόμενα μερίδια αποθηκευτικού χώρου (π.χ. \"512 MB\" ή \"12 GB\")", "Other" : "Άλλο", "Quota" : "Σύνολο Χώρου", + "Last login" : "Τελευταία είσοδος", "change full name" : "αλλαγή πλήρους ονόματος", "set new password" : "επιλογή νέου κωδικού", "change email address" : "αλλαγή διεύθυνσης ηλ. αλληλογραφίας", diff --git a/settings/l10n/el.json b/settings/l10n/el.json index 170b009b58e..a2885a79aba 100644 --- a/settings/l10n/el.json +++ b/settings/l10n/el.json @@ -194,6 +194,7 @@ "Admin documentation" : "Τεκμηρίωση Διαχειριστή", "Show description …" : "Εμφάνιση περιγραφής", "Hide description …" : "Απόκρυψη περιγραφής", + "This app has an update available." : "Αυτή η εφαρμογή έχει διαθέσιμη ενημέρωση.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Αυτή η εφαρμογή δεν μπορεί να εγκατασταθεί διότι δεν εκπληρώνονται οι ακόλουθες εξαρτήσεις:", "Enable only for specific groups" : "Ενεργοποίηση μόνο για καθορισμένες ομάδες", "Uninstall App" : "Απεγκατάσταση Εφαρμογής", @@ -213,8 +214,11 @@ "Commercial support" : "Εμπορική Υποστήριξη", "Profile picture" : "Φωτογραφία προφίλ", "Upload new" : "Μεταφόρτωση νέου", + "Select from Files" : "Επιλογή από τα Αρχεία", "Remove image" : "Αφαίρεση εικόνας", + "png or jpg, max. 20 MB" : "png ή jpg, μεγ. 20 MB", "Cancel" : "Άκυρο", + "Choose as profile picture" : "Επιλέξτε εικόνα προφίλ", "Full name" : "Πλήρες όνομα", "No display name set" : "Δεν ορίστηκε όνομα", "Email" : "Ηλεκτρονικό ταχυδρομείο", @@ -227,7 +231,10 @@ "Change password" : "Αλλαγή συνθηματικού", "Language" : "Γλώσσα", "Help translate" : "Βοηθήστε στη μετάφραση", + "Device" : "Συσκευή", "Name" : "Όνομα", + "App name" : "Όνομα εφαρμογής", + "Create new app password" : "Δημιουργία νέου συνθηματικού εφαρμογής", "Username" : "Όνομα χρήστη", "Done" : "Ολοκληρώθηκε", "Get the apps to sync your files" : "Λήψη της εφαρμογής για συγχρονισμό των αρχείων σας", @@ -250,6 +257,7 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Παρακαλώ εισάγετε επιτρεπόμενα μερίδια αποθηκευτικού χώρου (π.χ. \"512 MB\" ή \"12 GB\")", "Other" : "Άλλο", "Quota" : "Σύνολο Χώρου", + "Last login" : "Τελευταία είσοδος", "change full name" : "αλλαγή πλήρους ονόματος", "set new password" : "επιλογή νέου κωδικού", "change email address" : "αλλαγή διεύθυνσης ηλ. αλληλογραφίας", diff --git a/settings/l10n/en_GB.js b/settings/l10n/en_GB.js index 4cbe5ddbc2f..452d2d22655 100644 --- a/settings/l10n/en_GB.js +++ b/settings/l10n/en_GB.js @@ -136,7 +136,6 @@ OC.L10N.register( "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "The PHP module 'fileinfo' is missing. We strongly recommend enabling this module to get best results with mime-type detection.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information.", diff --git a/settings/l10n/en_GB.json b/settings/l10n/en_GB.json index 7fbbffc6f2a..f425beccc13 100644 --- a/settings/l10n/en_GB.json +++ b/settings/l10n/en_GB.json @@ -134,7 +134,6 @@ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "The PHP module 'fileinfo' is missing. We strongly recommend enabling this module to get best results with mime-type detection.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information.", diff --git a/settings/l10n/es.js b/settings/l10n/es.js index d8e13389546..53567326957 100644 --- a/settings/l10n/es.js +++ b/settings/l10n/es.js @@ -117,8 +117,10 @@ OC.L10N.register( "A valid group name must be provided" : "Se debe dar un nombre válido para el grupo ", "deleted {groupName}" : "{groupName} eliminado", "undo" : "deshacer", + "No group" : "Sin grupo", "never" : "nunca", "deleted {userName}" : "borrado {userName}", + "Add group" : "Añadir grupo", "Invalid quota value \"{val}\"" : "Valor de cuota inválido \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Cambiar la contraseña provocará pérdida de datos porque la recuperación de datos no está disponible para este usuario", "A valid username must be provided" : "Se debe proporcionar un nombre de usuario válido", @@ -308,9 +310,14 @@ OC.L10N.register( "Group" : "Grupo", "Everyone" : "Todos", "Admins" : "Administradores", + "Default quota" : "Cuota predeterminada", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Por favor indique la cúota de almacenamiento (ej: \"512 MB\" o \"12 GB\")", "Other" : "Otro", + "Group admin for" : "Administrador de grupo para", "Quota" : "Cuota", + "Storage location" : "Ubicación de almacenamiento", + "User backend" : "Motor de usuario", + "Last login" : "Último inicio de sesión", "change full name" : "cambiar el nombre completo", "set new password" : "establecer nueva contraseña", "change email address" : "cambiar dirección de correo electrónico", diff --git a/settings/l10n/es.json b/settings/l10n/es.json index f60800697fa..766fffb15fb 100644 --- a/settings/l10n/es.json +++ b/settings/l10n/es.json @@ -115,8 +115,10 @@ "A valid group name must be provided" : "Se debe dar un nombre válido para el grupo ", "deleted {groupName}" : "{groupName} eliminado", "undo" : "deshacer", + "No group" : "Sin grupo", "never" : "nunca", "deleted {userName}" : "borrado {userName}", + "Add group" : "Añadir grupo", "Invalid quota value \"{val}\"" : "Valor de cuota inválido \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Cambiar la contraseña provocará pérdida de datos porque la recuperación de datos no está disponible para este usuario", "A valid username must be provided" : "Se debe proporcionar un nombre de usuario válido", @@ -306,9 +308,14 @@ "Group" : "Grupo", "Everyone" : "Todos", "Admins" : "Administradores", + "Default quota" : "Cuota predeterminada", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Por favor indique la cúota de almacenamiento (ej: \"512 MB\" o \"12 GB\")", "Other" : "Otro", + "Group admin for" : "Administrador de grupo para", "Quota" : "Cuota", + "Storage location" : "Ubicación de almacenamiento", + "User backend" : "Motor de usuario", + "Last login" : "Último inicio de sesión", "change full name" : "cambiar el nombre completo", "set new password" : "establecer nueva contraseña", "change email address" : "cambiar dirección de correo electrónico", diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js index fbc8fec2d08..c3db9933a4a 100644 --- a/settings/l10n/fr.js +++ b/settings/l10n/fr.js @@ -117,8 +117,10 @@ OC.L10N.register( "A valid group name must be provided" : "Vous devez spécifier un nom de groupe valide", "deleted {groupName}" : "{groupName} supprimé", "undo" : "annuler", + "No group" : "Aucun groupe", "never" : "jamais", "deleted {userName}" : "{userName} supprimé", + "Add group" : "Ajouter un groupe", "Invalid quota value \"{val}\"" : "Valeur de quota invalide \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "La modification du mot de passe entrainera la perte des données car la restauration de données n'est pas disponible pour cet utilisateur", "A valid username must be provided" : "Un nom d'utilisateur valide doit être saisi", @@ -147,7 +149,7 @@ OC.L10N.register( "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "La configuration est en mode lecture seule. Ceci empêche la modification de certaines configurations via l'interface web. De plus, le fichier doit être passé manuellement en lecture-écriture avant chaque mise à jour.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP est apparemment configuré pour supprimer les blocs de documentation internes. Cela rendra plusieurs applications de base inaccessibles.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "La raison est probablement l'utilisation d'un cache / accélérateur tel que Zend OPcache ou eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Votre base de données ne fonctionne pas avec le niveau d'isolation de transaction \"READ COMMITTED\". Ceci peut causer des problèmes quand plusieurs actions sont exécutées en parallèle.", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Votre base de données ne fonctionne pas avec le niveau d'isolation de transaction \"READ COMMITED\". Ceci peut causer des problèmes quand plusieurs actions sont exécutées en parallèle.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "Une version de %1$s plus ancienne que %2$s est installée. Pour améliorer la stabilité et les performances, nous recommandons de mettre %1$s à jour.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Le module PHP 'fileinfo' est manquant. Il est vivement recommandé de l'activer afin d'obtenir de meilleurs résultats de détection mime-type.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Le verrouillage transactionnel de fichiers est désactivé. Cela peut causer des conflits en cas d'accès concurrent. Configurez 'filelocking.enabled' dans config.php pour éviter ces problèmes. Consultez la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> pour plus d'informations.", @@ -293,7 +295,7 @@ OC.L10N.register( "Desktop client" : "Client de bureau", "Android app" : "Application Android", "iOS app" : "Application iOS", - "If you want to support the project\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Si vous voulez supporter le projet\n⇥⇥<a href=\"https://nextcloud.com/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">rejoindre le développement</a>\n⇥⇥ou\n⇥⇥<a href=\"https://nextcloud.com/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">faites découvrir</a>!", + "If you want to support the project\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Si vous voulez supporter le projet <a href=\"https://nextcloud.com/contribute\" target=\"_blank\" rel=\"noreferrer\">rejoindre le développement</a> ou <a href=\"https://nextcloud.com/contribute\" target=\"_blank\" rel=\"noreferrer\">promouvoir</a> !", "Show First Run Wizard again" : "Revoir la fenêtre d'accueil affichée lors de votre première connexion", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Développé par la {communityopen}communauté Nextcloud{linkclose}, le {githubopen}code source{linkclose} est sous licence {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.", "Show storage location" : "Afficher l'emplacement du stockage", @@ -308,9 +310,14 @@ OC.L10N.register( "Group" : "Groupe", "Everyone" : "Tout le monde", "Admins" : "Administrateurs", + "Default quota" : "Quota par défaut", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Veuillez entrer le quota de stockage (ex. \"512 MB\" ou \"12 GB\")", "Other" : "Autre", + "Group admin for" : "Administrateur de groupe pour", "Quota" : "Quota", + "Storage location" : "Emplacement du stockage", + "User backend" : "Retour utilisateur", + "Last login" : "Dernière connexion", "change full name" : "Modifier le nom complet", "set new password" : "Changer le mot de passe", "change email address" : "changer l'adresse e-mail", diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json index 3ed573ab546..05bfeb89a7a 100644 --- a/settings/l10n/fr.json +++ b/settings/l10n/fr.json @@ -115,8 +115,10 @@ "A valid group name must be provided" : "Vous devez spécifier un nom de groupe valide", "deleted {groupName}" : "{groupName} supprimé", "undo" : "annuler", + "No group" : "Aucun groupe", "never" : "jamais", "deleted {userName}" : "{userName} supprimé", + "Add group" : "Ajouter un groupe", "Invalid quota value \"{val}\"" : "Valeur de quota invalide \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "La modification du mot de passe entrainera la perte des données car la restauration de données n'est pas disponible pour cet utilisateur", "A valid username must be provided" : "Un nom d'utilisateur valide doit être saisi", @@ -145,7 +147,7 @@ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "La configuration est en mode lecture seule. Ceci empêche la modification de certaines configurations via l'interface web. De plus, le fichier doit être passé manuellement en lecture-écriture avant chaque mise à jour.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP est apparemment configuré pour supprimer les blocs de documentation internes. Cela rendra plusieurs applications de base inaccessibles.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "La raison est probablement l'utilisation d'un cache / accélérateur tel que Zend OPcache ou eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Votre base de données ne fonctionne pas avec le niveau d'isolation de transaction \"READ COMMITTED\". Ceci peut causer des problèmes quand plusieurs actions sont exécutées en parallèle.", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Votre base de données ne fonctionne pas avec le niveau d'isolation de transaction \"READ COMMITED\". Ceci peut causer des problèmes quand plusieurs actions sont exécutées en parallèle.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "Une version de %1$s plus ancienne que %2$s est installée. Pour améliorer la stabilité et les performances, nous recommandons de mettre %1$s à jour.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Le module PHP 'fileinfo' est manquant. Il est vivement recommandé de l'activer afin d'obtenir de meilleurs résultats de détection mime-type.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Le verrouillage transactionnel de fichiers est désactivé. Cela peut causer des conflits en cas d'accès concurrent. Configurez 'filelocking.enabled' dans config.php pour éviter ces problèmes. Consultez la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> pour plus d'informations.", @@ -291,7 +293,7 @@ "Desktop client" : "Client de bureau", "Android app" : "Application Android", "iOS app" : "Application iOS", - "If you want to support the project\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Si vous voulez supporter le projet\n⇥⇥<a href=\"https://nextcloud.com/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">rejoindre le développement</a>\n⇥⇥ou\n⇥⇥<a href=\"https://nextcloud.com/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">faites découvrir</a>!", + "If you want to support the project\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Si vous voulez supporter le projet <a href=\"https://nextcloud.com/contribute\" target=\"_blank\" rel=\"noreferrer\">rejoindre le développement</a> ou <a href=\"https://nextcloud.com/contribute\" target=\"_blank\" rel=\"noreferrer\">promouvoir</a> !", "Show First Run Wizard again" : "Revoir la fenêtre d'accueil affichée lors de votre première connexion", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Développé par la {communityopen}communauté Nextcloud{linkclose}, le {githubopen}code source{linkclose} est sous licence {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.", "Show storage location" : "Afficher l'emplacement du stockage", @@ -306,9 +308,14 @@ "Group" : "Groupe", "Everyone" : "Tout le monde", "Admins" : "Administrateurs", + "Default quota" : "Quota par défaut", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Veuillez entrer le quota de stockage (ex. \"512 MB\" ou \"12 GB\")", "Other" : "Autre", + "Group admin for" : "Administrateur de groupe pour", "Quota" : "Quota", + "Storage location" : "Emplacement du stockage", + "User backend" : "Retour utilisateur", + "Last login" : "Dernière connexion", "change full name" : "Modifier le nom complet", "set new password" : "Changer le mot de passe", "change email address" : "changer l'adresse e-mail", diff --git a/settings/l10n/he.js b/settings/l10n/he.js index 7748519305e..bfdcb9de110 100644 --- a/settings/l10n/he.js +++ b/settings/l10n/he.js @@ -134,7 +134,6 @@ OC.L10N.register( "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "תצורת קריאה בלבד הופעלה. תצורה זו מונעת קביעת מספר הגדרות באמצעות ממשק האינטרנט. יתר על כן, יש צורך להגדיר ההרשאות כתיבה באופן ידני לכל עדכון.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP מוגדר ככל הנראה להפשיט בלוקי קוד. מצב זה יגרום למספר יישומי ליבה להיות לא נגישים.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "זה ככל הנראה נגרם על ידי מאיץ/מטמון כמו Zend OPcache או eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "מסד הנתונים שלך אינו רץ עם \"READ COMMITTED\" ברמת בידוד פעולה. דבר זה עלול להוות בעייה בזמן הרצת מספר פעולות במקביל.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s מתחת לגרסה %2$s מותקנת, מסיבות יציבות וביצועים אנו ממליצים לעדכן לגרסה חדשה יותר גרסה %1$s.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "מודול ה- PHP מסוג 'fileinfo' חסר. אנו ממליצים בחום לאפשר מודול זה כדי לקבל תוצאות מיטביות עם גילוי mime-type.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "נעילת קבצים בפעולות מושבתת, זה עלול להוביל לבעיות גרסאות תזמון. יש לאפשר 'filelocking.enabled' בקובץ config.php למניעת בעיות אלו. ניתן לראות מידע נוסף ב- <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">תיעוד ↗</a>.", diff --git a/settings/l10n/he.json b/settings/l10n/he.json index 2f1dbd1eacd..89129380062 100644 --- a/settings/l10n/he.json +++ b/settings/l10n/he.json @@ -132,7 +132,6 @@ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "תצורת קריאה בלבד הופעלה. תצורה זו מונעת קביעת מספר הגדרות באמצעות ממשק האינטרנט. יתר על כן, יש צורך להגדיר ההרשאות כתיבה באופן ידני לכל עדכון.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP מוגדר ככל הנראה להפשיט בלוקי קוד. מצב זה יגרום למספר יישומי ליבה להיות לא נגישים.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "זה ככל הנראה נגרם על ידי מאיץ/מטמון כמו Zend OPcache או eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "מסד הנתונים שלך אינו רץ עם \"READ COMMITTED\" ברמת בידוד פעולה. דבר זה עלול להוות בעייה בזמן הרצת מספר פעולות במקביל.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s מתחת לגרסה %2$s מותקנת, מסיבות יציבות וביצועים אנו ממליצים לעדכן לגרסה חדשה יותר גרסה %1$s.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "מודול ה- PHP מסוג 'fileinfo' חסר. אנו ממליצים בחום לאפשר מודול זה כדי לקבל תוצאות מיטביות עם גילוי mime-type.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "נעילת קבצים בפעולות מושבתת, זה עלול להוביל לבעיות גרסאות תזמון. יש לאפשר 'filelocking.enabled' בקובץ config.php למניעת בעיות אלו. ניתן לראות מידע נוסף ב- <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">תיעוד ↗</a>.", diff --git a/settings/l10n/hu_HU.js b/settings/l10n/hu_HU.js index f21c2cfce0d..f0df2d87a65 100644 --- a/settings/l10n/hu_HU.js +++ b/settings/l10n/hu_HU.js @@ -135,7 +135,6 @@ OC.L10N.register( "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Csak olvasható beállítófájl engedélyezve. Ez meggátolja a beállítások módosítását a webes felületről. Továbbá, a fájlt kézzel kell írhatóvá tenni minden frissítés alkalmával.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Úgy tűnik, hogy a PHP úgy van beállítva, hogy eltávolítja programok belsejében elhelyezett szövegblokkokat. Emiatt a rendszer több alapvető fontosságú eleme működésképtelen lesz.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Ezt valószínűleg egy gyorsítótár ill. kódgyorsító, mint pl, a Zend, OPcache vagy eAccelererator okozza.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Az adatbázisa nem tud \"READ COMMITTED\" tranzakció elkülinítési szinttel. Ez problémákat okozhat ha több egyidejű esemény van végrehajtva.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s %2$s verziója van telepítve, de a stabilitási és teljesítményi okok miatt javasoljuk az újabb, %1$s verzióra való frissítést.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "A 'fileinfo' PHP modul hiányzik. Erősen javasolt ennek a modulnak a telepítése, mert ezzel lényegesen jobb a MIME-típusok felismerése.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Tranzakcionális fájl lezárás tiltva van, ez problémákat okozhat versenyhelyzetben. Engedélyezze a 'filelocking.enabled' beállítást a config.php -ben, hogy elkerülje ezeket a problémákat. Nézze meg a <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentációt ↗</a> bővebb információért.", diff --git a/settings/l10n/hu_HU.json b/settings/l10n/hu_HU.json index 03be6a6a51c..738345cf9b4 100644 --- a/settings/l10n/hu_HU.json +++ b/settings/l10n/hu_HU.json @@ -133,7 +133,6 @@ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Csak olvasható beállítófájl engedélyezve. Ez meggátolja a beállítások módosítását a webes felületről. Továbbá, a fájlt kézzel kell írhatóvá tenni minden frissítés alkalmával.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Úgy tűnik, hogy a PHP úgy van beállítva, hogy eltávolítja programok belsejében elhelyezett szövegblokkokat. Emiatt a rendszer több alapvető fontosságú eleme működésképtelen lesz.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Ezt valószínűleg egy gyorsítótár ill. kódgyorsító, mint pl, a Zend, OPcache vagy eAccelererator okozza.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Az adatbázisa nem tud \"READ COMMITTED\" tranzakció elkülinítési szinttel. Ez problémákat okozhat ha több egyidejű esemény van végrehajtva.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s %2$s verziója van telepítve, de a stabilitási és teljesítményi okok miatt javasoljuk az újabb, %1$s verzióra való frissítést.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "A 'fileinfo' PHP modul hiányzik. Erősen javasolt ennek a modulnak a telepítése, mert ezzel lényegesen jobb a MIME-típusok felismerése.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Tranzakcionális fájl lezárás tiltva van, ez problémákat okozhat versenyhelyzetben. Engedélyezze a 'filelocking.enabled' beállítást a config.php -ben, hogy elkerülje ezeket a problémákat. Nézze meg a <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentációt ↗</a> bővebb információért.", diff --git a/settings/l10n/id.js b/settings/l10n/id.js index 39164b19ce8..4d64d5a1b8d 100644 --- a/settings/l10n/id.js +++ b/settings/l10n/id.js @@ -63,14 +63,20 @@ OC.L10N.register( "Experimental" : "Uji Coba", "All" : "Semua", "No apps found for your version" : "Aplikasi tidak ditemukan untuk versi ini.", + "The app will be downloaded from the app store" : "Aplikasi akan diunduh melalui toko aplikasi", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Aplikasi resmi dikembangkan oleh dan didalam komunitas. Mereka menawarkan fungsi sentral dan siap untuk penggunaan produksi.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Aplikasi tersetujui dikembangkan oleh pengembang terpercaya dan telah lulus pemeriksaan keamanan. Mereka secara aktif dipelihara direpositori kode terbuka dan pemelihara sudah memastikan mereka stabil untuk penggunaan normal.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Apl ini belum diperiksa masalah keamanannya dan masih baru atau biasanya tidak stabil. Instal dengan resiko Anda sendiri.", "Update to %s" : "Perbarui ke %s", + "_You have %n app update pending_::_You have %n app updates pending_" : ["Anda memiliki %n pembaruan aplikasi tertunda"], "Please wait...." : "Mohon tunggu....", "Error while disabling app" : "Terjadi kesalahan saat menonaktifkan aplikasi", "Disable" : "Nonaktifkan", "Enable" : "Aktifkan", "Error while enabling app" : "Terjadi kesalahan saat mengakifkan aplikasi", + "Error: this app cannot be enabled because it makes the server unstable" : "Kesalahan: Aplikasi ini tidak bisa diaktifkan karena membuat server tidak stabil", + "Error: could not disable broken app" : "Kesalahan: Tidak dapat menonaktifkan aplikasi rusak", + "Error while disabling broken app" : "Terjadi kesalahan saat menonaktifkan aplikasi rusak", "Updating...." : "Memperbarui....", "Error while updating app" : "Terjadi kesalahan saat memperbarui aplikasi", "Updated" : "Diperbarui", @@ -79,6 +85,22 @@ OC.L10N.register( "Uninstall" : "Copot", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikasi sudah diaktifkan tetapi perlu diperbarui. Anda akan dialihkan ke halaman pembaruan dalam 5 detik.", "App update" : "Pembaruan Aplikasi", + "No apps found for {query}" : "Tidak ditemukan aplikasi untuk {query}", + "Disconnect" : "Putuskan", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome untuk Android", + "iPhone" : "iPhone", + "iOS Client" : "Klien iOS", + "Android Client" : "Klien Android", + "Sync client - {os}" : "Klien sync - {os}", + "This session" : "Sesi ini", + "Error while loading browser sessions and device tokens" : "Terjadi kesalahan saat memuat sesi browser dan token perangkat", + "Error while creating device token" : "Terjadi kesalahan saat membuat token perangkat", + "Error while deleting the token" : "Terjadi kesalahan saat menghapus token", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Terjadi kesalahan. Mohon unggah sertifikat PEM terenkode-ASCII.", "Valid until {date}" : "Berlaku sampai {date}", "Delete" : "Hapus", @@ -91,18 +113,25 @@ OC.L10N.register( "Strong password" : "Sandi kuat", "Groups" : "Grup", "Unable to delete {objName}" : "Tidak dapat menghapus {objName}", + "Error creating group: {message}" : "Kesalahan membuat grup: {message}", "A valid group name must be provided" : "Harus memberikan nama grup yang benar.", "deleted {groupName}" : "menghapus {groupName}", "undo" : "urungkan", + "No group" : "Tidak ada grup", "never" : "tidak pernah", "deleted {userName}" : "menghapus {userName}", + "Add group" : "Tambah grup", + "Invalid quota value \"{val}\"" : "Jumlah kuota tidak valid \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Pengubahan kata sandi akan ditampilkan di data kehilangan, karena data pemulihan tidak tersedia bagi pengguna ini", "A valid username must be provided" : "Harus memberikan nama pengguna yang benar", + "Error creating user: {message}" : "Gagal membuat pengguna: {message}", "A valid password must be provided" : "Harus memberikan sandi yang benar", "A valid email must be provided" : "Email yang benar harus diberikan", "__language_name__" : "__language_name__", "Unlimited" : "Tak terbatas", "Personal info" : "Info pribadi", + "Sessions" : "Sesi", + "App passwords" : "Sandi aplikasi", "Sync clients" : "Klien sync", "Everything (fatal issues, errors, warnings, info, debug)" : "Semuanya (Masalah fatal, kesalahan, peringatan, info, debug)", "Info, warnings, errors and fatal issues" : "Info, peringatan, kesalahan dan masalah fatal", @@ -116,15 +145,20 @@ OC.L10N.register( "SSL" : "SSL", "TLS" : "TLS", "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "kelihatannya php tidak diatur dengan benar untuk variabel lingkungan sistem kueri. Pemeriksaan dengan getenv(\"PATH\") hanya mengembalikan respon kosong.", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Mohon cek <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentasi instalasi↗</a> untuk catatan konfigurasi php dan konfigurasi PHP server Anda, khususnya saat menggunakan php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Konfig Hanya-Baca telah diaktifkan. Ini akan mencegah setelan beberapa konfigurasi melalui antarmuka-web. Selanjutnya, berkas perlu dibuat dapat-dibaca secara manual untuk setiap pembaruan.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP tampaknya disetel menjadi strip inline doc blocks. Hal ini akan membuat beberapa aplikasi inti tidak dapat diakses.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Hal ini kemungkinan disebabkan oleh cache/akselerator seperti Zend OPcache atau eAccelerator.", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Database Anda tidak dijalankan dengan isolasi transaksi level \"READ COMMITED\". Ini dapat menyebabkan masalah saat banyak tindakan dilakukan secara paralel.", + "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s dibawah versi %2$s, untuk performa dan stabilitas kami merekomendasikan Anda memperbarui versi %1$s.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Module 'fileinfo' pada PHP tidak ada. Kami sangat menyarankan untuk mengaktifkan modul ini untuk mendapatkan hasil terbaik pada proses pendeteksian mime-type.", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Penguncian berkas transaksional nonaktif, ini dapat menyebabkan masalah dengan kondisi tertentu. Aktifkan 'filelocking.enabled' dalam config.php untuk menghindari masalah ini. Lihat <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentasi ↗</a> untuk informasi lebih lanjut.", "System locale can not be set to a one which supports UTF-8." : "Sistem lokal tidak dapat diatur untuk satu yang mendukung UTF-8.", "This means that there might be problems with certain characters in file names." : "Ini artinya mungkin ada masalah dengan karakter tertentu pada nama berkas.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Kamu sangat menyarankan untuk menginstal paket-paket yang dibutuhkan pada sistem agar mendukung lokal berikut: %s.", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Jika instalasi Anda tidak di root domain dan menggunakan sistem cron, hal tersebut dapat menyebabkan masalah dengan pembuatan URL. Untuk mencegah masalah tersebut, mohon atur opsi \"overwrite.cli.url\" pada berkas config.php Anda ke jalur lokasi webroot instalasi Anda (Disarankan: \"%s\")", "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "Tidak mungkin untuk mengeksekusi cronjob via CLI. Kesalahan teknis berikut muncul:", + "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Mohon cek <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">petunjuk instalasi ↗</a>, dan cek masalah atau peringatan di <a href=\"#log-section\">log</a>.", "All checks passed." : "Semua pemeriksaan lulus.", "Open documentation" : "Buka dokumentasi", "Allow apps to use the Share API" : "Izinkan aplikasi untuk menggunakan API Pembagian", @@ -137,6 +171,7 @@ OC.L10N.register( "days" : "hari", "Enforce expiration date" : "Berlakukan tanggal kadaluarsa", "Allow resharing" : "Izinkan pembagian ulang", + "Allow sharing with groups" : "Izinkan pembagian dengan grup", "Restrict users to only share with users in their groups" : "Batasi pengguna untuk hanya membagikan dengan pengguna didalam grup mereka", "Allow users to send mail notification for shared files to other users" : "Izinkan pengguna mengirim pemberitahuan email saat berbagi berkas kepada pengguna lainnya", "Exclude groups from sharing" : "Tidak termasuk grup untuk berbagi", @@ -151,6 +186,7 @@ OC.L10N.register( "Enable server-side encryption" : "Aktifkan enkripsi sisi-server", "Please read carefully before activating server-side encryption: " : "Mohon baca dengan teliti sebelum mengaktifkan enkripsi server-side:", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Setelah enkripsi diaktifkan, semua berkas yang diunggah pada server mulai saat ini akan dienkripsi saat singgah pada server. Penonaktifan enkripsi hanya mungkin berhasil jika modul enkripsi yang aktif mendukung fungsi ini dan semua prasyarat (misalnya pengaturan kunci pemulihan) sudah terpenuhi.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Enkripsi saja tidak dapat menjamin keamanan sistem. Silakan lihat dokumentasi untuk informasi lebih lanjut dalam bagaimana aplikasi enkripsi bekerja, dan kasus pendukung.", "Be aware that encryption always increases the file size." : "Ingat bahwa enkripsi selalu menambah ukuran berkas.", "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Alangkah baiknya untuk membuat cadangan data secara rutin, dalam kasus enkripsi, pastikan untuk mencadangkan kunci enkripsi bersama dengan data Anda.", "This is the final warning: Do you really want to enable encryption?" : "Ini adalah peringatan terakhir: Apakah Anda yakin ingin mengaktifkan enkripsi?", @@ -175,12 +211,14 @@ OC.L10N.register( "Store credentials" : "Simpan kredensial", "Test email settings" : "Pengaturan email percobaan", "Send email" : "Kirim email", + "What to log" : "Apa yang akan di log", "Download logfile" : "Unduh berkas log", "More" : "Lainnya", "Less" : "Ciutkan", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Berkas log lebih besar dari 100MB. Pengunduhan ini memerlukan beberapa saat!", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "SQLite digunakan sebagai basis data. Untuk instalasi yang lebih besar, kami menyarankan untuk beralih ke backend basis data yang berbeda.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Terutama saat menggunakan klien desktop untuk sinkronisasi berkas, penggunaan SQLite tidak disarankan.", + "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Untuk migrasi ke database lain, gunakan alat command line: 'occ db:convert-type', atau lihat <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentasi ↗</a>.", "How to do backups" : "Bagaimana cara membuat cadangan", "Advanced monitoring" : "Pemantauan tingkat lanjut", "Performance tuning" : "Pemeliharaan performa", @@ -191,15 +229,23 @@ OC.L10N.register( "Developer documentation" : "Dokumentasi pengembang", "Experimental applications ahead" : "Aplikasi percobaan terdepan", "Experimental apps are not checked for security issues, new or known to be unstable and under heavy development. Installing them can cause data loss or security breaches." : "Aplikasi percobaan belum diperiksa untuk masalah keamanan, baru atau dikenal tidak stabil dan dalam proses pengembangan. Menginstalnya dapat menyebabkan kehilangan data atau penerobosan keamanan.", + "by %s" : "oleh %s", + "%s-licensed" : "dilisensikan %s", "Documentation:" : "Dokumentasi:", "User documentation" : "Dokumentasi pengguna.", "Admin documentation" : "Dokumentasi admin", + "Visit website" : "Kunjungi laman web", + "Report a bug" : "Laporkan kerusakan", "Show description …" : "Tampilkan deskripsi ...", "Hide description …" : "Sembunyikan deskripsi ...", + "This app has an update available." : "Aplikasi ini dapat diperbarui.", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Aplikasi ini tidak mempunyai versi minimum Nextcloud yang ditetapkan. Di masa depan nanti ini akan menjadi kesalahan.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Aplikasi ini tidak mempunyai versi maksimum Nextcloud yang ditetapkan. Di masa depan nanti ini akan menjadi kesalahan.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Apl ini tidak dapat diinstal karena ketergantungan berikut belum terpenuhi:", "Enable only for specific groups" : "Aktifkan hanya untuk grup tertentu", "Uninstall App" : "Copot aplikasi", "Enable experimental apps" : "Aktifkan aplikasi percobaan", + "SSL Root Certificates" : "Sertifikat Root SSL", "Common Name" : "Nama umum", "Valid until" : "Berlaku sampai", "Issued By" : "Diterbitkan oleh", @@ -213,14 +259,20 @@ OC.L10N.register( "Forum" : "Forum", "Issue tracker" : "Pelacak masalah", "Commercial support" : "Dukungan komersial", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Anda sedang menggunakan <strong>%s</strong> dari <strong>%s</strong>", "Profile picture" : "Foto profil", "Upload new" : "Unggah baru", + "Select from Files" : "Pilih dari berkas", "Remove image" : "Hapus gambar", + "png or jpg, max. 20 MB" : "png atau jpg, maks. 20 MB", + "Picture provided by original account" : "Gambar disediakan oleh akun asli", "Cancel" : "Batal", + "Choose as profile picture" : "Pilih sebagai gambar profil", "Full name" : "Nama lengkap", "No display name set" : "Nama tampilan tidak diatur", "Email" : "Email", "Your email address" : "Alamat email Anda", + "For password recovery and notifications" : "Untuk pemulihan sandi dan pemberitahuan", "No email address set" : "Alamat email tidak diatur", "You are member of the following groups:" : "Anda adalah anggota dari grup berikut:", "Password" : "Sandi", @@ -229,14 +281,23 @@ OC.L10N.register( "Change password" : "Ubah sandi", "Language" : "Bahasa", "Help translate" : "Bantu menerjemahkan", + "Web, desktop and mobile clients currently logged in to your account." : "Klien web, desktop dan mobile yang sedang login di akun Anda.", + "Device" : "Perangkat", + "Last activity" : "Aktivitas terakhir", + "Passcodes that give an app or device permissions to access your account." : "Kode kunci yang memberikan aplikasi atau perangkat izin untuk mengakses akun Anda.", "Name" : "Nama", + "App name" : "Nama aplikasi", + "Create new app password" : "Buat sandi aplikasi baru", + "Use the credentials below to configure your app or device." : "Gunakan kredensial berikut untuk mengkonfigurasi aplikasi atau perangkat.", "Username" : "Nama pengguna", "Done" : "Selesai", "Get the apps to sync your files" : "Dapatkan aplikasi untuk sinkronisasi berkas Anda", "Desktop client" : "Klien desktop", "Android app" : "Aplikasi Android", "iOS app" : "Aplikasi iOS", + "If you want to support the project\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Apabila Anda ingin mendukung proyek ini\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">ikuti pengembangannya</a>\n\t\tatau\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">sebarkan</a>!", "Show First Run Wizard again" : "Tampilkan Penuntun Konfigurasi Awal", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Dikembangkan oleh {commmunityopen}komunitas Nextcloud{linkclose}, {githubopen}sumber kode{linkclose} dilisensikan dibawah {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.", "Show storage location" : "Tampilkan kolasi penyimpanan", "Show last log in" : "Tampilkan masuk terakhir", "Show user backend" : "Tampilkan pengguna backend", @@ -249,9 +310,14 @@ OC.L10N.register( "Group" : "Grup", "Everyone" : "Semua orang", "Admins" : "Admin", + "Default quota" : "Kuota standar", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Silakan masukkan jumlah penyimpanan (contoh: \"512 MB\" atau \"12 GB\")", "Other" : "Lainnya", + "Group admin for" : "Grup admin untuk", "Quota" : "Kuota", + "Storage location" : "Lokasi penyimpanan", + "User backend" : "Backend pengguna", + "Last login" : "Log masuk terakhir", "change full name" : "ubah nama lengkap", "set new password" : "setel sandi baru", "change email address" : "ubah alamat email", diff --git a/settings/l10n/id.json b/settings/l10n/id.json index 5d9f6a5803f..2e62d420404 100644 --- a/settings/l10n/id.json +++ b/settings/l10n/id.json @@ -61,14 +61,20 @@ "Experimental" : "Uji Coba", "All" : "Semua", "No apps found for your version" : "Aplikasi tidak ditemukan untuk versi ini.", + "The app will be downloaded from the app store" : "Aplikasi akan diunduh melalui toko aplikasi", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Aplikasi resmi dikembangkan oleh dan didalam komunitas. Mereka menawarkan fungsi sentral dan siap untuk penggunaan produksi.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Aplikasi tersetujui dikembangkan oleh pengembang terpercaya dan telah lulus pemeriksaan keamanan. Mereka secara aktif dipelihara direpositori kode terbuka dan pemelihara sudah memastikan mereka stabil untuk penggunaan normal.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Apl ini belum diperiksa masalah keamanannya dan masih baru atau biasanya tidak stabil. Instal dengan resiko Anda sendiri.", "Update to %s" : "Perbarui ke %s", + "_You have %n app update pending_::_You have %n app updates pending_" : ["Anda memiliki %n pembaruan aplikasi tertunda"], "Please wait...." : "Mohon tunggu....", "Error while disabling app" : "Terjadi kesalahan saat menonaktifkan aplikasi", "Disable" : "Nonaktifkan", "Enable" : "Aktifkan", "Error while enabling app" : "Terjadi kesalahan saat mengakifkan aplikasi", + "Error: this app cannot be enabled because it makes the server unstable" : "Kesalahan: Aplikasi ini tidak bisa diaktifkan karena membuat server tidak stabil", + "Error: could not disable broken app" : "Kesalahan: Tidak dapat menonaktifkan aplikasi rusak", + "Error while disabling broken app" : "Terjadi kesalahan saat menonaktifkan aplikasi rusak", "Updating...." : "Memperbarui....", "Error while updating app" : "Terjadi kesalahan saat memperbarui aplikasi", "Updated" : "Diperbarui", @@ -77,6 +83,22 @@ "Uninstall" : "Copot", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikasi sudah diaktifkan tetapi perlu diperbarui. Anda akan dialihkan ke halaman pembaruan dalam 5 detik.", "App update" : "Pembaruan Aplikasi", + "No apps found for {query}" : "Tidak ditemukan aplikasi untuk {query}", + "Disconnect" : "Putuskan", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome untuk Android", + "iPhone" : "iPhone", + "iOS Client" : "Klien iOS", + "Android Client" : "Klien Android", + "Sync client - {os}" : "Klien sync - {os}", + "This session" : "Sesi ini", + "Error while loading browser sessions and device tokens" : "Terjadi kesalahan saat memuat sesi browser dan token perangkat", + "Error while creating device token" : "Terjadi kesalahan saat membuat token perangkat", + "Error while deleting the token" : "Terjadi kesalahan saat menghapus token", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Terjadi kesalahan. Mohon unggah sertifikat PEM terenkode-ASCII.", "Valid until {date}" : "Berlaku sampai {date}", "Delete" : "Hapus", @@ -89,18 +111,25 @@ "Strong password" : "Sandi kuat", "Groups" : "Grup", "Unable to delete {objName}" : "Tidak dapat menghapus {objName}", + "Error creating group: {message}" : "Kesalahan membuat grup: {message}", "A valid group name must be provided" : "Harus memberikan nama grup yang benar.", "deleted {groupName}" : "menghapus {groupName}", "undo" : "urungkan", + "No group" : "Tidak ada grup", "never" : "tidak pernah", "deleted {userName}" : "menghapus {userName}", + "Add group" : "Tambah grup", + "Invalid quota value \"{val}\"" : "Jumlah kuota tidak valid \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Pengubahan kata sandi akan ditampilkan di data kehilangan, karena data pemulihan tidak tersedia bagi pengguna ini", "A valid username must be provided" : "Harus memberikan nama pengguna yang benar", + "Error creating user: {message}" : "Gagal membuat pengguna: {message}", "A valid password must be provided" : "Harus memberikan sandi yang benar", "A valid email must be provided" : "Email yang benar harus diberikan", "__language_name__" : "__language_name__", "Unlimited" : "Tak terbatas", "Personal info" : "Info pribadi", + "Sessions" : "Sesi", + "App passwords" : "Sandi aplikasi", "Sync clients" : "Klien sync", "Everything (fatal issues, errors, warnings, info, debug)" : "Semuanya (Masalah fatal, kesalahan, peringatan, info, debug)", "Info, warnings, errors and fatal issues" : "Info, peringatan, kesalahan dan masalah fatal", @@ -114,15 +143,20 @@ "SSL" : "SSL", "TLS" : "TLS", "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "kelihatannya php tidak diatur dengan benar untuk variabel lingkungan sistem kueri. Pemeriksaan dengan getenv(\"PATH\") hanya mengembalikan respon kosong.", + "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Mohon cek <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentasi instalasi↗</a> untuk catatan konfigurasi php dan konfigurasi PHP server Anda, khususnya saat menggunakan php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Konfig Hanya-Baca telah diaktifkan. Ini akan mencegah setelan beberapa konfigurasi melalui antarmuka-web. Selanjutnya, berkas perlu dibuat dapat-dibaca secara manual untuk setiap pembaruan.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP tampaknya disetel menjadi strip inline doc blocks. Hal ini akan membuat beberapa aplikasi inti tidak dapat diakses.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Hal ini kemungkinan disebabkan oleh cache/akselerator seperti Zend OPcache atau eAccelerator.", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Database Anda tidak dijalankan dengan isolasi transaksi level \"READ COMMITED\". Ini dapat menyebabkan masalah saat banyak tindakan dilakukan secara paralel.", + "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s dibawah versi %2$s, untuk performa dan stabilitas kami merekomendasikan Anda memperbarui versi %1$s.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Module 'fileinfo' pada PHP tidak ada. Kami sangat menyarankan untuk mengaktifkan modul ini untuk mendapatkan hasil terbaik pada proses pendeteksian mime-type.", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Penguncian berkas transaksional nonaktif, ini dapat menyebabkan masalah dengan kondisi tertentu. Aktifkan 'filelocking.enabled' dalam config.php untuk menghindari masalah ini. Lihat <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentasi ↗</a> untuk informasi lebih lanjut.", "System locale can not be set to a one which supports UTF-8." : "Sistem lokal tidak dapat diatur untuk satu yang mendukung UTF-8.", "This means that there might be problems with certain characters in file names." : "Ini artinya mungkin ada masalah dengan karakter tertentu pada nama berkas.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Kamu sangat menyarankan untuk menginstal paket-paket yang dibutuhkan pada sistem agar mendukung lokal berikut: %s.", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Jika instalasi Anda tidak di root domain dan menggunakan sistem cron, hal tersebut dapat menyebabkan masalah dengan pembuatan URL. Untuk mencegah masalah tersebut, mohon atur opsi \"overwrite.cli.url\" pada berkas config.php Anda ke jalur lokasi webroot instalasi Anda (Disarankan: \"%s\")", "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "Tidak mungkin untuk mengeksekusi cronjob via CLI. Kesalahan teknis berikut muncul:", + "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Mohon cek <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">petunjuk instalasi ↗</a>, dan cek masalah atau peringatan di <a href=\"#log-section\">log</a>.", "All checks passed." : "Semua pemeriksaan lulus.", "Open documentation" : "Buka dokumentasi", "Allow apps to use the Share API" : "Izinkan aplikasi untuk menggunakan API Pembagian", @@ -135,6 +169,7 @@ "days" : "hari", "Enforce expiration date" : "Berlakukan tanggal kadaluarsa", "Allow resharing" : "Izinkan pembagian ulang", + "Allow sharing with groups" : "Izinkan pembagian dengan grup", "Restrict users to only share with users in their groups" : "Batasi pengguna untuk hanya membagikan dengan pengguna didalam grup mereka", "Allow users to send mail notification for shared files to other users" : "Izinkan pengguna mengirim pemberitahuan email saat berbagi berkas kepada pengguna lainnya", "Exclude groups from sharing" : "Tidak termasuk grup untuk berbagi", @@ -149,6 +184,7 @@ "Enable server-side encryption" : "Aktifkan enkripsi sisi-server", "Please read carefully before activating server-side encryption: " : "Mohon baca dengan teliti sebelum mengaktifkan enkripsi server-side:", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Setelah enkripsi diaktifkan, semua berkas yang diunggah pada server mulai saat ini akan dienkripsi saat singgah pada server. Penonaktifan enkripsi hanya mungkin berhasil jika modul enkripsi yang aktif mendukung fungsi ini dan semua prasyarat (misalnya pengaturan kunci pemulihan) sudah terpenuhi.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Enkripsi saja tidak dapat menjamin keamanan sistem. Silakan lihat dokumentasi untuk informasi lebih lanjut dalam bagaimana aplikasi enkripsi bekerja, dan kasus pendukung.", "Be aware that encryption always increases the file size." : "Ingat bahwa enkripsi selalu menambah ukuran berkas.", "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Alangkah baiknya untuk membuat cadangan data secara rutin, dalam kasus enkripsi, pastikan untuk mencadangkan kunci enkripsi bersama dengan data Anda.", "This is the final warning: Do you really want to enable encryption?" : "Ini adalah peringatan terakhir: Apakah Anda yakin ingin mengaktifkan enkripsi?", @@ -173,12 +209,14 @@ "Store credentials" : "Simpan kredensial", "Test email settings" : "Pengaturan email percobaan", "Send email" : "Kirim email", + "What to log" : "Apa yang akan di log", "Download logfile" : "Unduh berkas log", "More" : "Lainnya", "Less" : "Ciutkan", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Berkas log lebih besar dari 100MB. Pengunduhan ini memerlukan beberapa saat!", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "SQLite digunakan sebagai basis data. Untuk instalasi yang lebih besar, kami menyarankan untuk beralih ke backend basis data yang berbeda.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Terutama saat menggunakan klien desktop untuk sinkronisasi berkas, penggunaan SQLite tidak disarankan.", + "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "Untuk migrasi ke database lain, gunakan alat command line: 'occ db:convert-type', atau lihat <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentasi ↗</a>.", "How to do backups" : "Bagaimana cara membuat cadangan", "Advanced monitoring" : "Pemantauan tingkat lanjut", "Performance tuning" : "Pemeliharaan performa", @@ -189,15 +227,23 @@ "Developer documentation" : "Dokumentasi pengembang", "Experimental applications ahead" : "Aplikasi percobaan terdepan", "Experimental apps are not checked for security issues, new or known to be unstable and under heavy development. Installing them can cause data loss or security breaches." : "Aplikasi percobaan belum diperiksa untuk masalah keamanan, baru atau dikenal tidak stabil dan dalam proses pengembangan. Menginstalnya dapat menyebabkan kehilangan data atau penerobosan keamanan.", + "by %s" : "oleh %s", + "%s-licensed" : "dilisensikan %s", "Documentation:" : "Dokumentasi:", "User documentation" : "Dokumentasi pengguna.", "Admin documentation" : "Dokumentasi admin", + "Visit website" : "Kunjungi laman web", + "Report a bug" : "Laporkan kerusakan", "Show description …" : "Tampilkan deskripsi ...", "Hide description …" : "Sembunyikan deskripsi ...", + "This app has an update available." : "Aplikasi ini dapat diperbarui.", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Aplikasi ini tidak mempunyai versi minimum Nextcloud yang ditetapkan. Di masa depan nanti ini akan menjadi kesalahan.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Aplikasi ini tidak mempunyai versi maksimum Nextcloud yang ditetapkan. Di masa depan nanti ini akan menjadi kesalahan.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Apl ini tidak dapat diinstal karena ketergantungan berikut belum terpenuhi:", "Enable only for specific groups" : "Aktifkan hanya untuk grup tertentu", "Uninstall App" : "Copot aplikasi", "Enable experimental apps" : "Aktifkan aplikasi percobaan", + "SSL Root Certificates" : "Sertifikat Root SSL", "Common Name" : "Nama umum", "Valid until" : "Berlaku sampai", "Issued By" : "Diterbitkan oleh", @@ -211,14 +257,20 @@ "Forum" : "Forum", "Issue tracker" : "Pelacak masalah", "Commercial support" : "Dukungan komersial", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Anda sedang menggunakan <strong>%s</strong> dari <strong>%s</strong>", "Profile picture" : "Foto profil", "Upload new" : "Unggah baru", + "Select from Files" : "Pilih dari berkas", "Remove image" : "Hapus gambar", + "png or jpg, max. 20 MB" : "png atau jpg, maks. 20 MB", + "Picture provided by original account" : "Gambar disediakan oleh akun asli", "Cancel" : "Batal", + "Choose as profile picture" : "Pilih sebagai gambar profil", "Full name" : "Nama lengkap", "No display name set" : "Nama tampilan tidak diatur", "Email" : "Email", "Your email address" : "Alamat email Anda", + "For password recovery and notifications" : "Untuk pemulihan sandi dan pemberitahuan", "No email address set" : "Alamat email tidak diatur", "You are member of the following groups:" : "Anda adalah anggota dari grup berikut:", "Password" : "Sandi", @@ -227,14 +279,23 @@ "Change password" : "Ubah sandi", "Language" : "Bahasa", "Help translate" : "Bantu menerjemahkan", + "Web, desktop and mobile clients currently logged in to your account." : "Klien web, desktop dan mobile yang sedang login di akun Anda.", + "Device" : "Perangkat", + "Last activity" : "Aktivitas terakhir", + "Passcodes that give an app or device permissions to access your account." : "Kode kunci yang memberikan aplikasi atau perangkat izin untuk mengakses akun Anda.", "Name" : "Nama", + "App name" : "Nama aplikasi", + "Create new app password" : "Buat sandi aplikasi baru", + "Use the credentials below to configure your app or device." : "Gunakan kredensial berikut untuk mengkonfigurasi aplikasi atau perangkat.", "Username" : "Nama pengguna", "Done" : "Selesai", "Get the apps to sync your files" : "Dapatkan aplikasi untuk sinkronisasi berkas Anda", "Desktop client" : "Klien desktop", "Android app" : "Aplikasi Android", "iOS app" : "Aplikasi iOS", + "If you want to support the project\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Apabila Anda ingin mendukung proyek ini\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">ikuti pengembangannya</a>\n\t\tatau\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">sebarkan</a>!", "Show First Run Wizard again" : "Tampilkan Penuntun Konfigurasi Awal", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Dikembangkan oleh {commmunityopen}komunitas Nextcloud{linkclose}, {githubopen}sumber kode{linkclose} dilisensikan dibawah {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.", "Show storage location" : "Tampilkan kolasi penyimpanan", "Show last log in" : "Tampilkan masuk terakhir", "Show user backend" : "Tampilkan pengguna backend", @@ -247,9 +308,14 @@ "Group" : "Grup", "Everyone" : "Semua orang", "Admins" : "Admin", + "Default quota" : "Kuota standar", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Silakan masukkan jumlah penyimpanan (contoh: \"512 MB\" atau \"12 GB\")", "Other" : "Lainnya", + "Group admin for" : "Grup admin untuk", "Quota" : "Kuota", + "Storage location" : "Lokasi penyimpanan", + "User backend" : "Backend pengguna", + "Last login" : "Log masuk terakhir", "change full name" : "ubah nama lengkap", "set new password" : "setel sandi baru", "change email address" : "ubah alamat email", diff --git a/settings/l10n/it.js b/settings/l10n/it.js index 3069540794d..7448f92cbf1 100644 --- a/settings/l10n/it.js +++ b/settings/l10n/it.js @@ -117,8 +117,10 @@ OC.L10N.register( "A valid group name must be provided" : "Deve essere fornito un nome valido per il gruppo", "deleted {groupName}" : "{groupName} eliminato", "undo" : "annulla", + "No group" : "Nessun gruppo", "never" : "mai", "deleted {userName}" : "{userName} eliminato", + "Add group" : "Aggiungi gruppo", "Invalid quota value \"{val}\"" : "Valore di quota \"{val}\" non valido", "Changing the password will result in data loss, because data recovery is not available for this user" : "Il cambiamento della password causerà una perdita di dati, poiché il ripristino dei dati non è disponibile per questo utente", "A valid username must be provided" : "Deve essere fornito un nome utente valido", @@ -308,9 +310,14 @@ OC.L10N.register( "Group" : "Gruppo", "Everyone" : "Chiunque", "Admins" : "Amministratori", + "Default quota" : "Quota predefinita", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Digita la quota di archiviazione (ad es.: \"512 MB\" or \"12 GB\")", "Other" : "Altro", + "Group admin for" : "Gruppo di amministrazione per", "Quota" : "Quote", + "Storage location" : "Posizione di archiviazione", + "User backend" : "Motore utente", + "Last login" : "Ultimo accesso", "change full name" : "modica nome completo", "set new password" : "imposta una nuova password", "change email address" : "cambia l'indirizzo email", diff --git a/settings/l10n/it.json b/settings/l10n/it.json index 739b2e6a456..f23e662f72f 100644 --- a/settings/l10n/it.json +++ b/settings/l10n/it.json @@ -115,8 +115,10 @@ "A valid group name must be provided" : "Deve essere fornito un nome valido per il gruppo", "deleted {groupName}" : "{groupName} eliminato", "undo" : "annulla", + "No group" : "Nessun gruppo", "never" : "mai", "deleted {userName}" : "{userName} eliminato", + "Add group" : "Aggiungi gruppo", "Invalid quota value \"{val}\"" : "Valore di quota \"{val}\" non valido", "Changing the password will result in data loss, because data recovery is not available for this user" : "Il cambiamento della password causerà una perdita di dati, poiché il ripristino dei dati non è disponibile per questo utente", "A valid username must be provided" : "Deve essere fornito un nome utente valido", @@ -306,9 +308,14 @@ "Group" : "Gruppo", "Everyone" : "Chiunque", "Admins" : "Amministratori", + "Default quota" : "Quota predefinita", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Digita la quota di archiviazione (ad es.: \"512 MB\" or \"12 GB\")", "Other" : "Altro", + "Group admin for" : "Gruppo di amministrazione per", "Quota" : "Quote", + "Storage location" : "Posizione di archiviazione", + "User backend" : "Motore utente", + "Last login" : "Ultimo accesso", "change full name" : "modica nome completo", "set new password" : "imposta una nuova password", "change email address" : "cambia l'indirizzo email", diff --git a/settings/l10n/ja.js b/settings/l10n/ja.js index 1f7398741f3..8d3dd803044 100644 --- a/settings/l10n/ja.js +++ b/settings/l10n/ja.js @@ -136,7 +136,6 @@ OC.L10N.register( "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "\"config\"は読み取り専用になってます。そのためにWEBインターフェースで設定できません可能性があります。さらに、更新時に\"config\"ファイルを書き込み権限を与えることが必要", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHPでインラインドキュメントブロックを取り除く設定になっています。これによりコアアプリで利用できないものがいくつかあります。", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "これは、Zend OPcacheやeAccelerator 等のキャッシュ/アクセラレーターが原因かもしれません。", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "データベースのトランザクション分離レベルが \"READ COMMITTED\" になっていません。この場合、複数の操作が同時に実行されたときに問題が発生する可能性があります。", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%2$s よりも古いバージョンの %1$s がインストールされています。安定した稼働とパフォーマンスの観点から、新しいバージョンの %1$s にアップデートすることをお勧めします。", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP のモジュール 'fileinfo' が見つかりません。mimeタイプの検出を精度良く行うために、このモジュールを有効にすることを強くお勧めします。", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "ファイルの書き込み時のロックが無効になっており、競合時に問題となる可能性があります。この問題を避ける為に config.php 中の 'filelocking.enabled' を有効にしてください。詳細については、<a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">ドキュメント↗ </a>を参照してください。", diff --git a/settings/l10n/ja.json b/settings/l10n/ja.json index 22391c16a20..67007d97fdd 100644 --- a/settings/l10n/ja.json +++ b/settings/l10n/ja.json @@ -134,7 +134,6 @@ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "\"config\"は読み取り専用になってます。そのためにWEBインターフェースで設定できません可能性があります。さらに、更新時に\"config\"ファイルを書き込み権限を与えることが必要", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHPでインラインドキュメントブロックを取り除く設定になっています。これによりコアアプリで利用できないものがいくつかあります。", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "これは、Zend OPcacheやeAccelerator 等のキャッシュ/アクセラレーターが原因かもしれません。", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "データベースのトランザクション分離レベルが \"READ COMMITTED\" になっていません。この場合、複数の操作が同時に実行されたときに問題が発生する可能性があります。", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%2$s よりも古いバージョンの %1$s がインストールされています。安定した稼働とパフォーマンスの観点から、新しいバージョンの %1$s にアップデートすることをお勧めします。", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP のモジュール 'fileinfo' が見つかりません。mimeタイプの検出を精度良く行うために、このモジュールを有効にすることを強くお勧めします。", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "ファイルの書き込み時のロックが無効になっており、競合時に問題となる可能性があります。この問題を避ける為に config.php 中の 'filelocking.enabled' を有効にしてください。詳細については、<a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">ドキュメント↗ </a>を参照してください。", diff --git a/settings/l10n/nl.js b/settings/l10n/nl.js index b9793a2e2b4..9747c2d3991 100644 --- a/settings/l10n/nl.js +++ b/settings/l10n/nl.js @@ -117,8 +117,10 @@ OC.L10N.register( "A valid group name must be provided" : "Er moet een geldige groepsnaam worden opgegeven", "deleted {groupName}" : "verwijderd {groupName}", "undo" : "ongedaan maken", + "No group" : "Geen groep", "never" : "geen", "deleted {userName}" : "verwijderd {userName}", + "Add group" : "Groep toevoegen", "Invalid quota value \"{val}\"" : "Ongeldige quota waarde \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Wijzigen van het wachtwoord leidt tot gegevensverlies, omdat gegevensherstel voor deze gebruiker niet beschikbaar is", "A valid username must be provided" : "Er moet een geldige gebruikersnaam worden opgegeven", @@ -147,7 +149,7 @@ OC.L10N.register( "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "De Alleen-lezen config is geactiveerd. Dit voorkomt het via de webinterface wijzigen van verschillende instellingen. Bovendien moet het bestand voor elke aanpassing handmatig op beschrijfbaar worden ingesteld.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP is blijkbaar zo ingesteld dat inline doc blokken worden gestript. Hierdoor worden verschillende kernmodules onbruikbaar.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dit wordt vermoedelijk veroorzaakt door een cache/accelerator, zoals Zend OPcache of eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Je database draait niet met \"READ COMMITTED\" transactie isolatie niveau. Dit kan problemen opleveren als er meerdere acties tegelijkertijd worden uitgevoerd.", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Je database draait niet met \"READ COMMITTED\" transactie-isolatie niveau. Dit kan problemen opleveren als er meerdere acties tegelijkertijd worden uitgevoerd.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s lager dan versie %2$s geïnstalleerd, voor betere stabiliteit en prestaties adviseren wij om %1$s te upgraden naar een nieuwere versie.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "De PHP module 'fileinfo' ontbreekt. We adviseren met klem om deze module te activeren om de beste resultaten te bereiken voor mime-type detectie.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transactionele bestandlocking is gedeactiveerd, dat zou kunnen leiden tot versiebeheerproblemen. Schakel 'filelocking enabled' in config.php in om deze problemen te voorkomen. Zie de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentatie ↗</a> voor meer informatie.", @@ -308,9 +310,14 @@ OC.L10N.register( "Group" : "Groep", "Everyone" : "Iedereen", "Admins" : "Beheerders", + "Default quota" : "Standaard quota", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Geef de opslagquotering op (bijv. \"512 MB\" of \"12 GB\")", "Other" : "Anders", + "Group admin for" : "Groepsbeheerder voor", "Quota" : "Limieten", + "Storage location" : "Opslag locatie", + "User backend" : "Backend gebruiker", + "Last login" : "Laatste login", "change full name" : "wijzigen volledige naam", "set new password" : "Instellen nieuw wachtwoord", "change email address" : "wijzig e-mailadres", diff --git a/settings/l10n/nl.json b/settings/l10n/nl.json index 43cc46217f0..e5cb8d11020 100644 --- a/settings/l10n/nl.json +++ b/settings/l10n/nl.json @@ -115,8 +115,10 @@ "A valid group name must be provided" : "Er moet een geldige groepsnaam worden opgegeven", "deleted {groupName}" : "verwijderd {groupName}", "undo" : "ongedaan maken", + "No group" : "Geen groep", "never" : "geen", "deleted {userName}" : "verwijderd {userName}", + "Add group" : "Groep toevoegen", "Invalid quota value \"{val}\"" : "Ongeldige quota waarde \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Wijzigen van het wachtwoord leidt tot gegevensverlies, omdat gegevensherstel voor deze gebruiker niet beschikbaar is", "A valid username must be provided" : "Er moet een geldige gebruikersnaam worden opgegeven", @@ -145,7 +147,7 @@ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "De Alleen-lezen config is geactiveerd. Dit voorkomt het via de webinterface wijzigen van verschillende instellingen. Bovendien moet het bestand voor elke aanpassing handmatig op beschrijfbaar worden ingesteld.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP is blijkbaar zo ingesteld dat inline doc blokken worden gestript. Hierdoor worden verschillende kernmodules onbruikbaar.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dit wordt vermoedelijk veroorzaakt door een cache/accelerator, zoals Zend OPcache of eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Je database draait niet met \"READ COMMITTED\" transactie isolatie niveau. Dit kan problemen opleveren als er meerdere acties tegelijkertijd worden uitgevoerd.", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Je database draait niet met \"READ COMMITTED\" transactie-isolatie niveau. Dit kan problemen opleveren als er meerdere acties tegelijkertijd worden uitgevoerd.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s lager dan versie %2$s geïnstalleerd, voor betere stabiliteit en prestaties adviseren wij om %1$s te upgraden naar een nieuwere versie.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "De PHP module 'fileinfo' ontbreekt. We adviseren met klem om deze module te activeren om de beste resultaten te bereiken voor mime-type detectie.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transactionele bestandlocking is gedeactiveerd, dat zou kunnen leiden tot versiebeheerproblemen. Schakel 'filelocking enabled' in config.php in om deze problemen te voorkomen. Zie de <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentatie ↗</a> voor meer informatie.", @@ -306,9 +308,14 @@ "Group" : "Groep", "Everyone" : "Iedereen", "Admins" : "Beheerders", + "Default quota" : "Standaard quota", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Geef de opslagquotering op (bijv. \"512 MB\" of \"12 GB\")", "Other" : "Anders", + "Group admin for" : "Groepsbeheerder voor", "Quota" : "Limieten", + "Storage location" : "Opslag locatie", + "User backend" : "Backend gebruiker", + "Last login" : "Laatste login", "change full name" : "wijzigen volledige naam", "set new password" : "Instellen nieuw wachtwoord", "change email address" : "wijzig e-mailadres", diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js index b897734abf5..1ef37d471fd 100644 --- a/settings/l10n/pt_BR.js +++ b/settings/l10n/pt_BR.js @@ -117,8 +117,10 @@ OC.L10N.register( "A valid group name must be provided" : "Um nome de grupo válido deve ser fornecido", "deleted {groupName}" : "eliminado {groupName}", "undo" : "desfazer", + "No group" : "Nenhum grupo", "never" : "nunca", "deleted {userName}" : "eliminado {userName}", + "Add group" : "Adicionar grupo", "Invalid quota value \"{val}\"" : "Valor da quota inválido \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Trocar a senha irá resultar em perda de dados, porque recuperação de dados não está disponível para este usuário", "A valid username must be provided" : "Forneça um nome de usuário válido", @@ -147,7 +149,7 @@ OC.L10N.register( "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "A configuração Somente-Leitura foi habilitada. Isso impede que algumas configurações sejam definidas via a interface web. Além disso, o arquivo precisa ter permissão de escrita manual para cada atualização.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP é, aparentemente, a configuração para retirar blocos doc inline. Isso fará com que vários aplicativos do núcleo fiquem inacessíveis.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isso provavelmente é causado por uma cache/acelerador, como Zend OPcache ou eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Seu banco de dados não está sendo executado com \"READ COMMITTED\" nível de isolamento da transação. Isto pode causar problemas quando várias ações são executadas em paralelo.", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Seu banco de dados não está em execução com o nível de isolamento de transação \"READ COMITTED\". Isso poderá causar problemas quando várias ações são executadas em paralelo.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s abaixo da versão %2$s está instalado, por razões de estabilidade e desempenho recomendamos a atualização para uma nova versão %1$s.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "O módulo PHP 'fileinfo' está faltando. Recomendamos que ative este módulo para obter uma melhor detecção do tipo de mídia (mime-type).", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Bloqueio de arquivo transacional está desativado, isso pode levar a problemas com as condições de corrida. Ativar 'filelocking.enabled' em config.php para evitar esses problemas. Veja a <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentação ↗</a> para mais informações.", @@ -308,9 +310,14 @@ OC.L10N.register( "Group" : "Grupo", "Everyone" : "Para todos", "Admins" : "Administradores", + "Default quota" : "Quota padrão", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Por favor insira cota de armazenamento (ex: \"512\" ou \"12 GB\")", "Other" : "Outro", + "Group admin for" : "Grupo administrativo para", "Quota" : "Cota", + "Storage location" : "Local do armazenamento", + "User backend" : "Backend de usuário", + "Last login" : "Última autenticação", "change full name" : "alterar nome completo", "set new password" : "definir nova senha", "change email address" : "Trocar o endereço de email", diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json index 5d1da589fc2..09f609fa78f 100644 --- a/settings/l10n/pt_BR.json +++ b/settings/l10n/pt_BR.json @@ -115,8 +115,10 @@ "A valid group name must be provided" : "Um nome de grupo válido deve ser fornecido", "deleted {groupName}" : "eliminado {groupName}", "undo" : "desfazer", + "No group" : "Nenhum grupo", "never" : "nunca", "deleted {userName}" : "eliminado {userName}", + "Add group" : "Adicionar grupo", "Invalid quota value \"{val}\"" : "Valor da quota inválido \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Trocar a senha irá resultar em perda de dados, porque recuperação de dados não está disponível para este usuário", "A valid username must be provided" : "Forneça um nome de usuário válido", @@ -145,7 +147,7 @@ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "A configuração Somente-Leitura foi habilitada. Isso impede que algumas configurações sejam definidas via a interface web. Além disso, o arquivo precisa ter permissão de escrita manual para cada atualização.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP é, aparentemente, a configuração para retirar blocos doc inline. Isso fará com que vários aplicativos do núcleo fiquem inacessíveis.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isso provavelmente é causado por uma cache/acelerador, como Zend OPcache ou eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Seu banco de dados não está sendo executado com \"READ COMMITTED\" nível de isolamento da transação. Isto pode causar problemas quando várias ações são executadas em paralelo.", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Seu banco de dados não está em execução com o nível de isolamento de transação \"READ COMITTED\". Isso poderá causar problemas quando várias ações são executadas em paralelo.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s abaixo da versão %2$s está instalado, por razões de estabilidade e desempenho recomendamos a atualização para uma nova versão %1$s.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "O módulo PHP 'fileinfo' está faltando. Recomendamos que ative este módulo para obter uma melhor detecção do tipo de mídia (mime-type).", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Bloqueio de arquivo transacional está desativado, isso pode levar a problemas com as condições de corrida. Ativar 'filelocking.enabled' em config.php para evitar esses problemas. Veja a <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentação ↗</a> para mais informações.", @@ -306,9 +308,14 @@ "Group" : "Grupo", "Everyone" : "Para todos", "Admins" : "Administradores", + "Default quota" : "Quota padrão", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Por favor insira cota de armazenamento (ex: \"512\" ou \"12 GB\")", "Other" : "Outro", + "Group admin for" : "Grupo administrativo para", "Quota" : "Cota", + "Storage location" : "Local do armazenamento", + "User backend" : "Backend de usuário", + "Last login" : "Última autenticação", "change full name" : "alterar nome completo", "set new password" : "definir nova senha", "change email address" : "Trocar o endereço de email", diff --git a/settings/l10n/pt_PT.js b/settings/l10n/pt_PT.js index bc5b10030fd..9d430082365 100644 --- a/settings/l10n/pt_PT.js +++ b/settings/l10n/pt_PT.js @@ -133,7 +133,6 @@ OC.L10N.register( "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "A configuração Só-de-Leitura foi ativada. Isto evita definir algumas configurações através da interface da Web. Além disso, o ficheiro precisa de ser definido gravável manualmente para cada atualização.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "O PHP está aparentemente configurado para remover blocos doc em linha. Isto vai tornar inacessíveis várias aplicações básicas.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isto é provavelmente causado por uma cache/acelerador como o Zend OPcache or eAcelerador.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "A base de dados não tem o nível de isolamento da transacção \"READ COMMITTED\" activado. Isto pode causar problemas quando várias acções são executadas em paralelo.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s abaixo da versão %2$s está instalado. Por motivos de estabilidade e desempenho, recomendamos que atualize para a nova versão %1$s.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "O Módulo PHP 'fileinfo' não se encontra instalado/activado. É fortemente recomendado que active este módulo para obter os melhores resultado com a detecção dos tipos de mime.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Bloqueio de arquivos transacionais está desativado, isto poderá levar a problemas com condições de corrida. Ative 'filelocking.enabled' no config.php para evitar estes problemas. Consulte a <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentação ↗</a> para mais informação.", diff --git a/settings/l10n/pt_PT.json b/settings/l10n/pt_PT.json index d9e31632b02..7a0acaf80da 100644 --- a/settings/l10n/pt_PT.json +++ b/settings/l10n/pt_PT.json @@ -131,7 +131,6 @@ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "A configuração Só-de-Leitura foi ativada. Isto evita definir algumas configurações através da interface da Web. Além disso, o ficheiro precisa de ser definido gravável manualmente para cada atualização.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "O PHP está aparentemente configurado para remover blocos doc em linha. Isto vai tornar inacessíveis várias aplicações básicas.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isto é provavelmente causado por uma cache/acelerador como o Zend OPcache or eAcelerador.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "A base de dados não tem o nível de isolamento da transacção \"READ COMMITTED\" activado. Isto pode causar problemas quando várias acções são executadas em paralelo.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s abaixo da versão %2$s está instalado. Por motivos de estabilidade e desempenho, recomendamos que atualize para a nova versão %1$s.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "O Módulo PHP 'fileinfo' não se encontra instalado/activado. É fortemente recomendado que active este módulo para obter os melhores resultado com a detecção dos tipos de mime.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Bloqueio de arquivos transacionais está desativado, isto poderá levar a problemas com condições de corrida. Ative 'filelocking.enabled' no config.php para evitar estes problemas. Consulte a <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentação ↗</a> para mais informação.", diff --git a/settings/l10n/ru.js b/settings/l10n/ru.js index cb3a451eccd..0b8d8bdaea8 100644 --- a/settings/l10n/ru.js +++ b/settings/l10n/ru.js @@ -87,6 +87,17 @@ OC.L10N.register( "App update" : "Обновить приложения", "No apps found for {query}" : "Приложения не найдены по {query}", "Disconnect" : "Отключить", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome для Android", + "iPhone" : "iPhone", + "iOS Client" : "Клиент iOS", + "Android Client" : "Клиент Android", + "Sync client - {os}" : "Синхронизировать клиента - {os}", + "This session" : "Эта сессия", "Error while loading browser sessions and device tokens" : "Ошибка при загрузке браузерных сессий и токенов устройств", "Error while creating device token" : "Ошибка при создании токена для устройства", "Error while deleting the token" : "Ошибка при удалении токена устройства", @@ -106,8 +117,11 @@ OC.L10N.register( "A valid group name must be provided" : "Введите правильное имя группы", "deleted {groupName}" : "удалена {groupName}", "undo" : "отмена", + "No group" : "Без группы", "never" : "никогда", "deleted {userName}" : "удалён {userName}", + "Add group" : "Добавить группу", + "Invalid quota value \"{val}\"" : "Недопустимая величина квоты \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Изменение пароля приведёт к потере данных, так как восстановление данных не доступно для этого пользователя", "A valid username must be provided" : "Укажите правильное имя пользователя", "Error creating user: {message}" : "Ошибка создания пользователя: {message}", @@ -135,7 +149,7 @@ OC.L10N.register( "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Конфигурационный файл в режиме только для чтения. В связи с этим некоторые настройки веб-интерфейса невозможно изменить. Учтите, что для установки обновлений, вам потребуется самостоятельно разрешить запись в конфигурационный файл.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Очевидно, PHP настроен на вычищение блоков встроенной документации. Это сделает несколько центральных приложений недоступными.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Возможно это вызвано кешем/ускорителем вроде Zend OPcache или eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Ваша база данных не работает в режиме изоляции транзакций \"READ COMMITTED\". Это может вызвать проблемы, если несколько действий выполняется одновременно.", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Ваша база данных не работает в режиме изоляции транзакций \"READ COMMITED\". Это может вызвать проблемы, если несколько действий выполняется одновременно.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s ниже установленной версии %2$s, по причинам стабильности и производительности мы рекомендуем обновиться до новой версии %1$s.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP-модуль 'fileinfo' отсутствует. Мы настоятельно рекомендуем включить этот модуль для улучшения определения типов (mime-type) файлов.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Блокировка передаваемых файлов отключена, это может привести к состоянию гонки. Включите параметр 'filelocking.enabled' в файла config.php для решения проблемы. Обратитесь к <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документации ↗</a> для получения дополнительной информации.", @@ -172,6 +186,7 @@ OC.L10N.register( "Enable server-side encryption" : "Включить шифрование на стороне сервера", "Please read carefully before activating server-side encryption: " : "Пожалуйста прочтите внимательно прежде чем включать шифрование на стороне сервера:", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Когда вы включите шифрование, все файлы, загруженные с этого момента на сервер, будут храниться в зашифрованном виде. Отключить шифрование в более позднее время возможно только в случае, если выбранный модуль шифрования поддерживает эту функцию, и все дополнительные условия соблюдены (например настроен ключ восстановления).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Шифрование само по себе не гарантирует безопасность системы. Пожалуйста ознакомтесь с документацией для получения более подробной информации о том, как работают приложения шифрования и соответствующие примеры.", "Be aware that encryption always increases the file size." : "Будьте в курсе, что шифрование всегда увеличивает размер файла.", "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Хорошая практика делать регулярные резервные копии ваших данных. При использовании шифрования сохраняйте не только данные, но и ключи.", "This is the final warning: Do you really want to enable encryption?" : "Это последнее предупреждение: Вы действительно желаете включить шифрование?", @@ -266,9 +281,14 @@ OC.L10N.register( "Change password" : "Сменить пароль", "Language" : "Язык", "Help translate" : "Помочь с переводом", + "Web, desktop and mobile clients currently logged in to your account." : "Веб, настольные и мобильные клиенты, которые в настоящий момент авторизованы вашей учётной записью.", + "Device" : "Устройство", + "Last activity" : "Последние действия", + "Passcodes that give an app or device permissions to access your account." : "Код доступа, который дает приложению или устройству разрешения на доступ к вашей учётной записи.", "Name" : "Название", "App name" : "Название приложения", "Create new app password" : "Создать новый пароль для приложения", + "Use the credentials below to configure your app or device." : "Используйте учётные данные ниже для настройки вашего приложения или устройства.", "Username" : "Имя пользователя", "Done" : "Выполнено", "Get the apps to sync your files" : "Получить приложения для синхронизации ваших файлов", @@ -290,9 +310,14 @@ OC.L10N.register( "Group" : "Группа", "Everyone" : "Все", "Admins" : "Администраторы", + "Default quota" : "Квота по умолчанию", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Пожалуйста, введите квоту на хранилище (например: \"512 MB\" или \"12 GB\")", "Other" : "Другая", + "Group admin for" : "Администратор групп", "Quota" : "Квота", + "Storage location" : "Место хранилища", + "User backend" : "Механизм учёта пользователей", + "Last login" : "Последний вход", "change full name" : "изменить полное имя", "set new password" : "установить новый пароль", "change email address" : "изменить адрес почты", diff --git a/settings/l10n/ru.json b/settings/l10n/ru.json index 921bdd78374..5e33c1689ad 100644 --- a/settings/l10n/ru.json +++ b/settings/l10n/ru.json @@ -85,6 +85,17 @@ "App update" : "Обновить приложения", "No apps found for {query}" : "Приложения не найдены по {query}", "Disconnect" : "Отключить", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome для Android", + "iPhone" : "iPhone", + "iOS Client" : "Клиент iOS", + "Android Client" : "Клиент Android", + "Sync client - {os}" : "Синхронизировать клиента - {os}", + "This session" : "Эта сессия", "Error while loading browser sessions and device tokens" : "Ошибка при загрузке браузерных сессий и токенов устройств", "Error while creating device token" : "Ошибка при создании токена для устройства", "Error while deleting the token" : "Ошибка при удалении токена устройства", @@ -104,8 +115,11 @@ "A valid group name must be provided" : "Введите правильное имя группы", "deleted {groupName}" : "удалена {groupName}", "undo" : "отмена", + "No group" : "Без группы", "never" : "никогда", "deleted {userName}" : "удалён {userName}", + "Add group" : "Добавить группу", + "Invalid quota value \"{val}\"" : "Недопустимая величина квоты \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Изменение пароля приведёт к потере данных, так как восстановление данных не доступно для этого пользователя", "A valid username must be provided" : "Укажите правильное имя пользователя", "Error creating user: {message}" : "Ошибка создания пользователя: {message}", @@ -133,7 +147,7 @@ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Конфигурационный файл в режиме только для чтения. В связи с этим некоторые настройки веб-интерфейса невозможно изменить. Учтите, что для установки обновлений, вам потребуется самостоятельно разрешить запись в конфигурационный файл.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Очевидно, PHP настроен на вычищение блоков встроенной документации. Это сделает несколько центральных приложений недоступными.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Возможно это вызвано кешем/ускорителем вроде Zend OPcache или eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Ваша база данных не работает в режиме изоляции транзакций \"READ COMMITTED\". Это может вызвать проблемы, если несколько действий выполняется одновременно.", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Ваша база данных не работает в режиме изоляции транзакций \"READ COMMITED\". Это может вызвать проблемы, если несколько действий выполняется одновременно.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s ниже установленной версии %2$s, по причинам стабильности и производительности мы рекомендуем обновиться до новой версии %1$s.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP-модуль 'fileinfo' отсутствует. Мы настоятельно рекомендуем включить этот модуль для улучшения определения типов (mime-type) файлов.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Блокировка передаваемых файлов отключена, это может привести к состоянию гонки. Включите параметр 'filelocking.enabled' в файла config.php для решения проблемы. Обратитесь к <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документации ↗</a> для получения дополнительной информации.", @@ -170,6 +184,7 @@ "Enable server-side encryption" : "Включить шифрование на стороне сервера", "Please read carefully before activating server-side encryption: " : "Пожалуйста прочтите внимательно прежде чем включать шифрование на стороне сервера:", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Когда вы включите шифрование, все файлы, загруженные с этого момента на сервер, будут храниться в зашифрованном виде. Отключить шифрование в более позднее время возможно только в случае, если выбранный модуль шифрования поддерживает эту функцию, и все дополнительные условия соблюдены (например настроен ключ восстановления).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Шифрование само по себе не гарантирует безопасность системы. Пожалуйста ознакомтесь с документацией для получения более подробной информации о том, как работают приложения шифрования и соответствующие примеры.", "Be aware that encryption always increases the file size." : "Будьте в курсе, что шифрование всегда увеличивает размер файла.", "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Хорошая практика делать регулярные резервные копии ваших данных. При использовании шифрования сохраняйте не только данные, но и ключи.", "This is the final warning: Do you really want to enable encryption?" : "Это последнее предупреждение: Вы действительно желаете включить шифрование?", @@ -264,9 +279,14 @@ "Change password" : "Сменить пароль", "Language" : "Язык", "Help translate" : "Помочь с переводом", + "Web, desktop and mobile clients currently logged in to your account." : "Веб, настольные и мобильные клиенты, которые в настоящий момент авторизованы вашей учётной записью.", + "Device" : "Устройство", + "Last activity" : "Последние действия", + "Passcodes that give an app or device permissions to access your account." : "Код доступа, который дает приложению или устройству разрешения на доступ к вашей учётной записи.", "Name" : "Название", "App name" : "Название приложения", "Create new app password" : "Создать новый пароль для приложения", + "Use the credentials below to configure your app or device." : "Используйте учётные данные ниже для настройки вашего приложения или устройства.", "Username" : "Имя пользователя", "Done" : "Выполнено", "Get the apps to sync your files" : "Получить приложения для синхронизации ваших файлов", @@ -288,9 +308,14 @@ "Group" : "Группа", "Everyone" : "Все", "Admins" : "Администраторы", + "Default quota" : "Квота по умолчанию", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Пожалуйста, введите квоту на хранилище (например: \"512 MB\" или \"12 GB\")", "Other" : "Другая", + "Group admin for" : "Администратор групп", "Quota" : "Квота", + "Storage location" : "Место хранилища", + "User backend" : "Механизм учёта пользователей", + "Last login" : "Последний вход", "change full name" : "изменить полное имя", "set new password" : "установить новый пароль", "change email address" : "изменить адрес почты", diff --git a/settings/l10n/sq.js b/settings/l10n/sq.js index 1f995960486..6fb6afaf4b4 100644 --- a/settings/l10n/sq.js +++ b/settings/l10n/sq.js @@ -134,7 +134,6 @@ OC.L10N.register( "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Rregullimi Vetëm-Lexim u aktivizua. Kjo parandalon rregullimin e disa parametrave përmes ndërfaqes web. Më tej, për çdo përditësim kartela lyp të kalohet dorazi si e shkrueshme.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Duket se PHP-ja është rregulluar që të heqë blloqe të brendshme dokumentimi. Kjo do t’i bëjë të papërdrshme disa aplikacione bazë.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Kjo ka gjasa të jetë shkaktuar nga një fshehtinë/përshpejtues i tillë si Zend OPcache ose eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Baza juaj e të dhënave nuk xhiron me nivelin \"READ COMMITTED\" e izolimit për ndërveprimet. Kjo mund të shkaktojë probleme, kur kryhen paralelisht disa veprime njëherësh.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "Ka të instaluar %1$s nën versionin %2$s, për arsye qëndrueshmërie dhe performance këshillojmë të përditësohet me një version %1$s më të ri.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Moduli PHP 'fileinfo' mungon. Ju këshillojmë me forcë ta aktivizoni këtë modul, për të patur përfundimet më të mira në zbulim llojesh MIME.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Kyçja e kartelave gjatë transaksioneve është e çaktivizuar, kjo mund të sjellë probleme me gjendje <em>race conditions</em>. Që të shmangni këto probleme, aktivizoni 'filelocking.enabled' te config.php. Për më tepër të dhëna, shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentimin ↗</a>.", diff --git a/settings/l10n/sq.json b/settings/l10n/sq.json index cb7440e04d9..e4b4ac4dee5 100644 --- a/settings/l10n/sq.json +++ b/settings/l10n/sq.json @@ -132,7 +132,6 @@ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Rregullimi Vetëm-Lexim u aktivizua. Kjo parandalon rregullimin e disa parametrave përmes ndërfaqes web. Më tej, për çdo përditësim kartela lyp të kalohet dorazi si e shkrueshme.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Duket se PHP-ja është rregulluar që të heqë blloqe të brendshme dokumentimi. Kjo do t’i bëjë të papërdrshme disa aplikacione bazë.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Kjo ka gjasa të jetë shkaktuar nga një fshehtinë/përshpejtues i tillë si Zend OPcache ose eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Baza juaj e të dhënave nuk xhiron me nivelin \"READ COMMITTED\" e izolimit për ndërveprimet. Kjo mund të shkaktojë probleme, kur kryhen paralelisht disa veprime njëherësh.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "Ka të instaluar %1$s nën versionin %2$s, për arsye qëndrueshmërie dhe performance këshillojmë të përditësohet me një version %1$s më të ri.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Moduli PHP 'fileinfo' mungon. Ju këshillojmë me forcë ta aktivizoni këtë modul, për të patur përfundimet më të mira në zbulim llojesh MIME.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Kyçja e kartelave gjatë transaksioneve është e çaktivizuar, kjo mund të sjellë probleme me gjendje <em>race conditions</em>. Që të shmangni këto probleme, aktivizoni 'filelocking.enabled' te config.php. Për më tepër të dhëna, shihni <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentimin ↗</a>.", diff --git a/settings/l10n/sv.js b/settings/l10n/sv.js index 2906e3e92d0..cdde7e7e6e7 100644 --- a/settings/l10n/sv.js +++ b/settings/l10n/sv.js @@ -133,7 +133,6 @@ OC.L10N.register( "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Läs-bara konfigureringen har blivit aktiv. Detta förhindrar att några konfigureringar kan sättas via web-gränssnittet.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP är tydligen inställd för att rensa inline doc block. Detta kommer att göra flera kärnapplikationer otillgängliga.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Detta orsakas troligtvis av en cache/accelerator som t ex Zend OPchache eller eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Din databas kör inte \"READ COMMITTED\" tansaktionsisoleringsnvån. Detta kan orsaka problem när multipla aktioner körs parallellt.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s under version %2$s är installerad, för stabilitet och prestanda rekommenderar vi uppdatering till en nyare %1$s version.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP-modulen 'fileinfo' saknas. Vi rekommenderar starkt att aktivera den här modulen för att kunna upptäcka korrekt mime-typ.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transactional file locking är inaktiverad, detta kan innebära konkurrenstillstånd. Aktivera \"filelocking.enabled' i config.php för att undvika dessa problem. Se <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentationen ↗</a> för mer information.", diff --git a/settings/l10n/sv.json b/settings/l10n/sv.json index fafda86500f..6f77c010307 100644 --- a/settings/l10n/sv.json +++ b/settings/l10n/sv.json @@ -131,7 +131,6 @@ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Läs-bara konfigureringen har blivit aktiv. Detta förhindrar att några konfigureringar kan sättas via web-gränssnittet.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP är tydligen inställd för att rensa inline doc block. Detta kommer att göra flera kärnapplikationer otillgängliga.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Detta orsakas troligtvis av en cache/accelerator som t ex Zend OPchache eller eAccelerator.", - "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Din databas kör inte \"READ COMMITTED\" tansaktionsisoleringsnvån. Detta kan orsaka problem när multipla aktioner körs parallellt.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s under version %2$s är installerad, för stabilitet och prestanda rekommenderar vi uppdatering till en nyare %1$s version.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP-modulen 'fileinfo' saknas. Vi rekommenderar starkt att aktivera den här modulen för att kunna upptäcka korrekt mime-typ.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transactional file locking är inaktiverad, detta kan innebära konkurrenstillstånd. Aktivera \"filelocking.enabled' i config.php för att undvika dessa problem. Se <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentationen ↗</a> för mer information.", diff --git a/settings/l10n/tr.js b/settings/l10n/tr.js index f454050da63..ee70f99e35c 100644 --- a/settings/l10n/tr.js +++ b/settings/l10n/tr.js @@ -64,6 +64,7 @@ OC.L10N.register( "All" : "Tümü", "No apps found for your version" : "Sürümünüz için uygulama bulunamadı", "The app will be downloaded from the app store" : "uygulama uygulama dükkanından indirilebilecek", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Resmi uygulamalar topluluk tarafından geliştirilmiştir. Merkezi işlevleri yerine getirdikleri gibi kullanıma da hazırdırlar.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Onaylanan uygulamalar güvenilir geliştiriciler tarafından geliştirilir ve detaylı olmayan bir güvenlik kontrolünden geçirilir. Bunlar açık kaynak kod deposunda bulunmakta ve normal kullanım için kararlı oldukları varsayılmaktadır.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Bu uygulama güvenlik kontrolünden geçmedi veya yeni ya da kararsız olarak bilinmektedir. Kendiniz bu riski alarak yükleyebilirsiniz.", "Update to %s" : "%s sürümüne güncelle", @@ -86,6 +87,20 @@ OC.L10N.register( "App update" : "Uygulama güncellemesi", "No apps found for {query}" : "sorgulayabilmeniz için hiçbir uygulama bulunmamakta", "Disconnect" : "Bağlantıyı kes", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Android için Google Chrome", + "iPhone" : "iPhone", + "iOS Client" : "iOS İstemcisi", + "Android Client" : "Android İstemcisi", + "Sync client - {os}" : "Eşitleme istemcisi - {os}", + "This session" : "Bu oturum", + "Error while loading browser sessions and device tokens" : "Tarayıcı oturumu ve aygıt jetonları yüklenirken hata oluştu", + "Error while creating device token" : "Aygıt jetonu oluşturulurken hata oluştu", + "Error while deleting the token" : "Jeton silinirken hata oluştu", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Bir hata oluştu. Lütfen ASCII-kodlanmış PEM sertifikasını yükleyin.", "Valid until {date}" : "{date} tarihine kadar geçerli", "Delete" : "Sil", @@ -102,8 +117,11 @@ OC.L10N.register( "A valid group name must be provided" : "Geçerli bir grup adı mutlaka sağlanmalı", "deleted {groupName}" : "{groupName} silindi", "undo" : "geri al", + "No group" : "Grup yok", "never" : "hiçbir zaman", "deleted {userName}" : "{userName} silindi", + "Add group" : "Grup ekle", + "Invalid quota value \"{val}\"" : "Geçersiz alıntı değeri \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Parolayı değiştirmek, bu kullanıcı için veri kurtarması kullanılamadığından veri kaybına sebep olacak", "A valid username must be provided" : "Geçerli bir kullanıcı adı mutlaka sağlanmalı", "Error creating user: {message}" : "Kullanıcı oluşturulurken hata: {message}", @@ -112,6 +130,7 @@ OC.L10N.register( "__language_name__" : "Türkçe", "Unlimited" : "Sınırsız", "Personal info" : "Kişisel bilgi", + "Sessions" : "Oturum", "App passwords" : "Uygulama parolaları", "Sync clients" : "Eşitleme istemcileri", "Everything (fatal issues, errors, warnings, info, debug)" : "Her şey (Ciddi sorunlar, hatalar, uyarılar, bilgi, hata ayıklama)", @@ -130,6 +149,7 @@ OC.L10N.register( "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Salt Okunur yapılandırma etkinleştirilmiş. Bu, bazı ayarların web arayüzü ile yapılandırılmasını önler. Ayrıca, bu dosya her güncelleme sırasında el ile yazılabilir yapılmalıdır.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP satırıçi doc bloklarını ayıklamak üzere yapılandırılmış gibi görünüyor. Bu, bazı çekirdek (core) uygulamalarını erişilemez yapacak.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu, muhtemelen Zend OPcache veya eAccelerator gibi bir önbellek/hızlandırıcı nedeniyle gerçekleşir.", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Veritabanınız \"READ COMMITTED\" geçiş soyutlama seviyesinde çalışmıyor. Bu aynı anda birden çok eylem yapıldığında sorunlara yol açabilir.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s, %2$s sürümü altı kurulu. Kararlılık ve performans için daha yeni bir %1$s sürümüne güncellemenizi öneririz.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP modülü 'fileinfo' kayıp. MIME türü tanıma ile en iyi sonuçları elde etmek için bu modülü etkinleştirmenizi öneririz.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "İşlemsel dosya kilidi devre dışı. Bu yarış koşulu (race condition) sorunlarına neden olabilir. Bu sorunlardan kaçınmak için config.php içindeki 'filelocking.enabled' ayarını etkinleştirin. Daha fazla bilgi için <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">belgelendirmeye ↗</a> bakın.", @@ -166,6 +186,7 @@ OC.L10N.register( "Enable server-side encryption" : "Sunucu taraflı şifrelemeyi aç", "Please read carefully before activating server-side encryption: " : "Lütfen sunucu tarafında şifrelemeyi etkinleştirmeden önce dikkatlice okuyun: ", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Şifreleme etkinleştirildiğinde, sunucuya yüklenen tüm dosyalar şifrelenmiş olarak kalacaktır. Şifrelemeyi devre dışı bırakmak sadece ileriki zamanlarda aktif şifreleme modülü desteklediğinde ve ön koşullar (örn: düzenleme anahtarı oluşturulması) yerine getirildiğinde yapılabilir.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Şifreleme tek başına sistemin güvenliğini garanti etmez. Lütfen şifreleme uygulamasının nasıl çalıştığı ve desteklenen durumlar hakkında daha fazla bilgi almak için belgelendirmeye bakınız.", "Be aware that encryption always increases the file size." : "Şifrelemenin dosya boyutunu büyüteceğini unutmayın.", "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Verilerinizi düzenli yedekleyin ve şifreleme anahtarlarınızın verilerinizle birlikte yedeklendiğinden emin olun. ", "This is the final warning: Do you really want to enable encryption?" : "Bu son uyarıdır: Şifrelemeyi etkinleştirmek istiyor musunuz?", @@ -213,9 +234,13 @@ OC.L10N.register( "Documentation:" : "Belgelendirme:", "User documentation" : "Kullanıcı belgelendirmesi", "Admin documentation" : "Yönetici belgelendirmesi", + "Visit website" : "İnternet adresini ziyaret et", + "Report a bug" : "Hata raporla", "Show description …" : "Açıklamayı göster...", "Hide description …" : "Açıklamayı gizle...", "This app has an update available." : "Bu uygulamanın bir güncellemesi var.", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Bu uygulama için atanan en düşük Nextcloud sürümü bulunmuyor. Bu ileride bir hata olacaktır.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Bu uygulama için atanan en yüksek Nextcloud sürümü bulunmuyor. Bu ileride bir hata olacaktır.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Bu uygulama, aşağıdaki bağımlılıklar sağlanmadığından yüklenemiyor:", "Enable only for specific groups" : "Sadece belirli gruplar için etkinleştir", "Uninstall App" : "Uygulamayı Kaldır", @@ -256,14 +281,23 @@ OC.L10N.register( "Change password" : "Parola değiştir", "Language" : "Dil", "Help translate" : "Çevirilere yardım edin", + "Web, desktop and mobile clients currently logged in to your account." : "Web, masaüstü ve mobil şu anda hesabınıza oturum açmış durumda.", + "Device" : "Aygıt", + "Last activity" : "Son etkinlik", + "Passcodes that give an app or device permissions to access your account." : "Bir uygulama veya aygıtın hesabınıza erişimine izin veren geçiş kodlarıdır.", "Name" : "Ad", + "App name" : "Uygulama adı", + "Create new app password" : "Yeni uygulama parolası oluştur", + "Use the credentials below to configure your app or device." : "Uygulama veya aygıtınızı yapılandırmak için aşağıdaki kimlik bilgilerini kullan.", "Username" : "Kullanıcı Adı", "Done" : "Bitti", "Get the apps to sync your files" : "Dosyalarınızı eşitlemek için uygulamaları indirin", "Desktop client" : "Masaüstü istemcisi", "Android app" : "Android uygulaması", "iOS app" : "iOS uygulaması", + "If you want to support the project\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Projeyi desteklemek isterseniz\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">gelişimine katılın</a>\n\t\tya da\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">dünyaya duyurun</a>!", "Show First Run Wizard again" : "İlk Çalıştırma Sihirbazı'nı yeniden göster", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "{communityopen}Nextcloud topluluğu tarafından geliştirilmiştir{linkclose}, {githubopen}kaynak kod{linkclose} {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose} ile lisanslanmıştır.", "Show storage location" : "Depolama konumunu göster", "Show last log in" : "Son oturum açılma zamanını göster", "Show user backend" : "Kullanıcı arka ucunu göster", @@ -276,9 +310,14 @@ OC.L10N.register( "Group" : "Grup", "Everyone" : "Herkes", "Admins" : "Yöneticiler", + "Default quota" : "Varsayılan kota", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Lütfen disk alanı kotasını girin (örnek: \"512MB\" veya \"12GB\")", "Other" : "Diğer", + "Group admin for" : "Grup Yöneticisi", "Quota" : "Kota", + "Storage location" : "Depolama konumu", + "User backend" : "Kullanıcı Arka Ucu", + "Last login" : "Son giriş", "change full name" : "tam adı değiştir", "set new password" : "yeni parola belirle", "change email address" : "e-posta adresini değiştir", diff --git a/settings/l10n/tr.json b/settings/l10n/tr.json index 209c0305c55..401fdb3e1cf 100644 --- a/settings/l10n/tr.json +++ b/settings/l10n/tr.json @@ -62,6 +62,7 @@ "All" : "Tümü", "No apps found for your version" : "Sürümünüz için uygulama bulunamadı", "The app will be downloaded from the app store" : "uygulama uygulama dükkanından indirilebilecek", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Resmi uygulamalar topluluk tarafından geliştirilmiştir. Merkezi işlevleri yerine getirdikleri gibi kullanıma da hazırdırlar.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Onaylanan uygulamalar güvenilir geliştiriciler tarafından geliştirilir ve detaylı olmayan bir güvenlik kontrolünden geçirilir. Bunlar açık kaynak kod deposunda bulunmakta ve normal kullanım için kararlı oldukları varsayılmaktadır.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Bu uygulama güvenlik kontrolünden geçmedi veya yeni ya da kararsız olarak bilinmektedir. Kendiniz bu riski alarak yükleyebilirsiniz.", "Update to %s" : "%s sürümüne güncelle", @@ -84,6 +85,20 @@ "App update" : "Uygulama güncellemesi", "No apps found for {query}" : "sorgulayabilmeniz için hiçbir uygulama bulunmamakta", "Disconnect" : "Bağlantıyı kes", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Android için Google Chrome", + "iPhone" : "iPhone", + "iOS Client" : "iOS İstemcisi", + "Android Client" : "Android İstemcisi", + "Sync client - {os}" : "Eşitleme istemcisi - {os}", + "This session" : "Bu oturum", + "Error while loading browser sessions and device tokens" : "Tarayıcı oturumu ve aygıt jetonları yüklenirken hata oluştu", + "Error while creating device token" : "Aygıt jetonu oluşturulurken hata oluştu", + "Error while deleting the token" : "Jeton silinirken hata oluştu", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Bir hata oluştu. Lütfen ASCII-kodlanmış PEM sertifikasını yükleyin.", "Valid until {date}" : "{date} tarihine kadar geçerli", "Delete" : "Sil", @@ -100,8 +115,11 @@ "A valid group name must be provided" : "Geçerli bir grup adı mutlaka sağlanmalı", "deleted {groupName}" : "{groupName} silindi", "undo" : "geri al", + "No group" : "Grup yok", "never" : "hiçbir zaman", "deleted {userName}" : "{userName} silindi", + "Add group" : "Grup ekle", + "Invalid quota value \"{val}\"" : "Geçersiz alıntı değeri \"{val}\"", "Changing the password will result in data loss, because data recovery is not available for this user" : "Parolayı değiştirmek, bu kullanıcı için veri kurtarması kullanılamadığından veri kaybına sebep olacak", "A valid username must be provided" : "Geçerli bir kullanıcı adı mutlaka sağlanmalı", "Error creating user: {message}" : "Kullanıcı oluşturulurken hata: {message}", @@ -110,6 +128,7 @@ "__language_name__" : "Türkçe", "Unlimited" : "Sınırsız", "Personal info" : "Kişisel bilgi", + "Sessions" : "Oturum", "App passwords" : "Uygulama parolaları", "Sync clients" : "Eşitleme istemcileri", "Everything (fatal issues, errors, warnings, info, debug)" : "Her şey (Ciddi sorunlar, hatalar, uyarılar, bilgi, hata ayıklama)", @@ -128,6 +147,7 @@ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Salt Okunur yapılandırma etkinleştirilmiş. Bu, bazı ayarların web arayüzü ile yapılandırılmasını önler. Ayrıca, bu dosya her güncelleme sırasında el ile yazılabilir yapılmalıdır.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP satırıçi doc bloklarını ayıklamak üzere yapılandırılmış gibi görünüyor. Bu, bazı çekirdek (core) uygulamalarını erişilemez yapacak.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu, muhtemelen Zend OPcache veya eAccelerator gibi bir önbellek/hızlandırıcı nedeniyle gerçekleşir.", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Veritabanınız \"READ COMMITTED\" geçiş soyutlama seviyesinde çalışmıyor. Bu aynı anda birden çok eylem yapıldığında sorunlara yol açabilir.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s, %2$s sürümü altı kurulu. Kararlılık ve performans için daha yeni bir %1$s sürümüne güncellemenizi öneririz.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP modülü 'fileinfo' kayıp. MIME türü tanıma ile en iyi sonuçları elde etmek için bu modülü etkinleştirmenizi öneririz.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "İşlemsel dosya kilidi devre dışı. Bu yarış koşulu (race condition) sorunlarına neden olabilir. Bu sorunlardan kaçınmak için config.php içindeki 'filelocking.enabled' ayarını etkinleştirin. Daha fazla bilgi için <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">belgelendirmeye ↗</a> bakın.", @@ -164,6 +184,7 @@ "Enable server-side encryption" : "Sunucu taraflı şifrelemeyi aç", "Please read carefully before activating server-side encryption: " : "Lütfen sunucu tarafında şifrelemeyi etkinleştirmeden önce dikkatlice okuyun: ", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Şifreleme etkinleştirildiğinde, sunucuya yüklenen tüm dosyalar şifrelenmiş olarak kalacaktır. Şifrelemeyi devre dışı bırakmak sadece ileriki zamanlarda aktif şifreleme modülü desteklediğinde ve ön koşullar (örn: düzenleme anahtarı oluşturulması) yerine getirildiğinde yapılabilir.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Şifreleme tek başına sistemin güvenliğini garanti etmez. Lütfen şifreleme uygulamasının nasıl çalıştığı ve desteklenen durumlar hakkında daha fazla bilgi almak için belgelendirmeye bakınız.", "Be aware that encryption always increases the file size." : "Şifrelemenin dosya boyutunu büyüteceğini unutmayın.", "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Verilerinizi düzenli yedekleyin ve şifreleme anahtarlarınızın verilerinizle birlikte yedeklendiğinden emin olun. ", "This is the final warning: Do you really want to enable encryption?" : "Bu son uyarıdır: Şifrelemeyi etkinleştirmek istiyor musunuz?", @@ -211,9 +232,13 @@ "Documentation:" : "Belgelendirme:", "User documentation" : "Kullanıcı belgelendirmesi", "Admin documentation" : "Yönetici belgelendirmesi", + "Visit website" : "İnternet adresini ziyaret et", + "Report a bug" : "Hata raporla", "Show description …" : "Açıklamayı göster...", "Hide description …" : "Açıklamayı gizle...", "This app has an update available." : "Bu uygulamanın bir güncellemesi var.", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Bu uygulama için atanan en düşük Nextcloud sürümü bulunmuyor. Bu ileride bir hata olacaktır.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Bu uygulama için atanan en yüksek Nextcloud sürümü bulunmuyor. Bu ileride bir hata olacaktır.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Bu uygulama, aşağıdaki bağımlılıklar sağlanmadığından yüklenemiyor:", "Enable only for specific groups" : "Sadece belirli gruplar için etkinleştir", "Uninstall App" : "Uygulamayı Kaldır", @@ -254,14 +279,23 @@ "Change password" : "Parola değiştir", "Language" : "Dil", "Help translate" : "Çevirilere yardım edin", + "Web, desktop and mobile clients currently logged in to your account." : "Web, masaüstü ve mobil şu anda hesabınıza oturum açmış durumda.", + "Device" : "Aygıt", + "Last activity" : "Son etkinlik", + "Passcodes that give an app or device permissions to access your account." : "Bir uygulama veya aygıtın hesabınıza erişimine izin veren geçiş kodlarıdır.", "Name" : "Ad", + "App name" : "Uygulama adı", + "Create new app password" : "Yeni uygulama parolası oluştur", + "Use the credentials below to configure your app or device." : "Uygulama veya aygıtınızı yapılandırmak için aşağıdaki kimlik bilgilerini kullan.", "Username" : "Kullanıcı Adı", "Done" : "Bitti", "Get the apps to sync your files" : "Dosyalarınızı eşitlemek için uygulamaları indirin", "Desktop client" : "Masaüstü istemcisi", "Android app" : "Android uygulaması", "iOS app" : "iOS uygulaması", + "If you want to support the project\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Projeyi desteklemek isterseniz\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">gelişimine katılın</a>\n\t\tya da\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">dünyaya duyurun</a>!", "Show First Run Wizard again" : "İlk Çalıştırma Sihirbazı'nı yeniden göster", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "{communityopen}Nextcloud topluluğu tarafından geliştirilmiştir{linkclose}, {githubopen}kaynak kod{linkclose} {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose} ile lisanslanmıştır.", "Show storage location" : "Depolama konumunu göster", "Show last log in" : "Son oturum açılma zamanını göster", "Show user backend" : "Kullanıcı arka ucunu göster", @@ -274,9 +308,14 @@ "Group" : "Grup", "Everyone" : "Herkes", "Admins" : "Yöneticiler", + "Default quota" : "Varsayılan kota", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Lütfen disk alanı kotasını girin (örnek: \"512MB\" veya \"12GB\")", "Other" : "Diğer", + "Group admin for" : "Grup Yöneticisi", "Quota" : "Kota", + "Storage location" : "Depolama konumu", + "User backend" : "Kullanıcı Arka Ucu", + "Last login" : "Son giriş", "change full name" : "tam adı değiştir", "set new password" : "yeni parola belirle", "change email address" : "e-posta adresini değiştir", diff --git a/settings/templates/personal.php b/settings/templates/personal.php index 4f580e41287..890bfd1bbeb 100644 --- a/settings/templates/personal.php +++ b/settings/templates/personal.php @@ -158,7 +158,7 @@ if($_['passwordChangeSupported']) { <?php endforeach;?> </select> <?php if (OC_Util::getEditionString() === ''): ?> - <a href="https://www.transifex.com/projects/p/owncloud/" + <a href="https://www.transifex.com/nextcloud/nextcloud/" target="_blank" rel="noreferrer"> <em><?php p($l->t('Help translate'));?></em> </a> diff --git a/tests/lib/AppFramework/AppTest.php b/tests/lib/AppFramework/AppTest.php index 7288e686d52..92ebd1f81e7 100644 --- a/tests/lib/AppFramework/AppTest.php +++ b/tests/lib/AppFramework/AppTest.php @@ -162,4 +162,55 @@ class AppTest extends \Test\TestCase { App::main($this->controllerName, $this->controllerMethod, $this->container, []); } + public function testCoreApp() { + $this->container['AppName'] = 'core'; + $this->container['OC\Core\Controller\Foo'] = $this->controller; + + $return = array(null, array(), array(), null, new Response()); + $this->dispatcher->expects($this->once()) + ->method('dispatch') + ->with($this->equalTo($this->controller), + $this->equalTo($this->controllerMethod)) + ->will($this->returnValue($return)); + + $this->io->expects($this->never()) + ->method('setOutput'); + + App::main('Foo', $this->controllerMethod, $this->container); + } + + public function testSettingsApp() { + $this->container['AppName'] = 'settings'; + $this->container['OC\Settings\Controller\Foo'] = $this->controller; + + $return = array(null, array(), array(), null, new Response()); + $this->dispatcher->expects($this->once()) + ->method('dispatch') + ->with($this->equalTo($this->controller), + $this->equalTo($this->controllerMethod)) + ->will($this->returnValue($return)); + + $this->io->expects($this->never()) + ->method('setOutput'); + + App::main('Foo', $this->controllerMethod, $this->container); + } + + public function testApp() { + $this->container['AppName'] = 'bar'; + $this->container['OCA\Bar\Controller\Foo'] = $this->controller; + + $return = array(null, array(), array(), null, new Response()); + $this->dispatcher->expects($this->once()) + ->method('dispatch') + ->with($this->equalTo($this->controller), + $this->equalTo($this->controllerMethod)) + ->will($this->returnValue($return)); + + $this->io->expects($this->never()) + ->method('setOutput'); + + App::main('Foo', $this->controllerMethod, $this->container); + } + } diff --git a/tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php b/tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php index 487b83c0bef..bfd810bc6b9 100644 --- a/tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php @@ -35,22 +35,38 @@ use OC\Appframework\Middleware\Security\Exceptions\StrictCookieMissingException; use OC\AppFramework\Middleware\Security\SecurityMiddleware; use OC\AppFramework\Utility\ControllerMethodReflector; use OC\Security\CSP\ContentSecurityPolicy; +use OC\Security\CSP\ContentSecurityPolicyManager; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\RedirectResponse; use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Http\TemplateResponse; +use OCP\ILogger; +use OCP\INavigationManager; +use OCP\IRequest; +use OCP\IURLGenerator; class SecurityMiddlewareTest extends \Test\TestCase { + /** @var SecurityMiddleware|\PHPUnit_Framework_MockObject_MockObject */ private $middleware; + /** @var Controller|\PHPUnit_Framework_MockObject_MockObject */ private $controller; + /** @var SecurityException */ private $secException; + /** @var SecurityException */ private $secAjaxException; + /** @var IRequest|\PHPUnit_Framework_MockObject_MockObject */ private $request; + /** @var ControllerMethodReflector */ private $reader; + /** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */ private $logger; + /** @var INavigationManager|\PHPUnit_Framework_MockObject_MockObject */ private $navigationManager; + /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ private $urlGenerator; + /** @var ContentSecurityPolicyManager|\PHPUnit_Framework_MockObject_MockObject */ private $contentSecurityPolicyManager; protected function setUp() { @@ -354,6 +370,46 @@ class SecurityMiddlewareTest extends \Test\TestCase { $this->middleware->beforeController(__CLASS__, __FUNCTION__); } + public function dataCsrfOcsController() { + $controller = $this->getMockBuilder('OCP\AppFramework\Controller') + ->disableOriginalConstructor() + ->getMock(); + $ocsController = $this->getMockBuilder('OCP\AppFramework\OCSController') + ->disableOriginalConstructor() + ->getMock(); + + return [ + [$controller, false, true], + [$controller, true, true], + + [$ocsController, false, true], + [$ocsController, true, false], + ]; + } + + /** + * @dataProvider dataCsrfOcsController + * @param Controller $controller + * @param bool $hasOcsApiHeader + * @param bool $exception + */ + public function testCsrfOcsController(Controller $controller, $hasOcsApiHeader, $exception) { + $this->request + ->method('getHeader') + ->with('OCS-APIREQUEST') + ->willReturn($hasOcsApiHeader ? 'true' : null); + $this->request->expects($this->once()) + ->method('passesStrictCookieCheck') + ->willReturn(true); + + try { + $this->middleware->beforeController($controller, 'foo'); + $this->assertFalse($exception); + } catch (CrossSiteRequestForgeryException $e) { + $this->assertTrue($exception); + } + } + /** * @NoCSRFRequired * @NoAdminRequired diff --git a/tests/lib/Files/EtagTest.php b/tests/lib/Files/EtagTest.php index d8e44000f9c..67ddd6ca514 100644 --- a/tests/lib/Files/EtagTest.php +++ b/tests/lib/Files/EtagTest.php @@ -34,8 +34,8 @@ class EtagTest extends \Test\TestCase { \OC_Hook::clear('OC_Filesystem', 'setup'); $application = new \OCA\Files_Sharing\AppInfo\Application(); $application->registerMountProviders(); - \OCP\Share::registerBackend('file', 'OC_Share_Backend_File'); - \OCP\Share::registerBackend('folder', 'OC_Share_Backend_Folder', 'file'); + \OCP\Share::registerBackend('file', 'OCA\Files_Sharing\ShareBackend\File'); + \OCP\Share::registerBackend('folder', 'OCA\Files_Sharing\ShareBackend\Folder', 'file'); $config = \OC::$server->getConfig(); $this->datadir = $config->getSystemValue('datadirectory'); diff --git a/tests/lib/Repair/RepairUnmergedSharesTest.php b/tests/lib/Repair/RepairUnmergedSharesTest.php new file mode 100644 index 00000000000..fe9b3e5b96f --- /dev/null +++ b/tests/lib/Repair/RepairUnmergedSharesTest.php @@ -0,0 +1,449 @@ +<?php +/** + * @author Vincent Petry <pvince81@owncloud.com> + * + * @copyright Copyright (c) 2016, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace Test\Repair; + + +use OC\Repair\RepairUnmergedShares; +use OC\Share\Constants; +use OCP\Migration\IOutput; +use OCP\Migration\IRepairStep; +use Test\TestCase; +use OC\Share20\DefaultShareProvider; + +/** + * Tests for repairing invalid shares + * + * @group DB + * + * @see \OC\Repair\RepairUnmergedShares + */ +class RepairUnmergedSharesTest extends TestCase { + + /** @var IRepairStep */ + private $repair; + + /** @var \OCP\IDBConnection */ + private $connection; + + protected function setUp() { + parent::setUp(); + + $config = $this->getMockBuilder('OCP\IConfig') + ->disableOriginalConstructor() + ->getMock(); + $config->expects($this->any()) + ->method('getSystemValue') + ->with('version') + ->will($this->returnValue('9.0.3.0')); + + $this->connection = \OC::$server->getDatabaseConnection(); + $this->deleteAllShares(); + + $user1 = $this->getMock('\OCP\IUser'); + $user1->expects($this->any()) + ->method('getUID') + ->will($this->returnValue('user1')); + + $user2 = $this->getMock('\OCP\IUser'); + $user2->expects($this->any()) + ->method('getUID') + ->will($this->returnValue('user2')); + + $users = [$user1, $user2]; + + $groupManager = $this->getMock('\OCP\IGroupManager'); + $groupManager->expects($this->any()) + ->method('getUserGroupIds') + ->will($this->returnValueMap([ + // owner + [$user1, ['samegroup1', 'samegroup2']], + // recipient + [$user2, ['recipientgroup1', 'recipientgroup2']], + ])); + + $userManager = $this->getMock('\OCP\IUserManager'); + $userManager->expects($this->once()) + ->method('countUsers') + ->will($this->returnValue([2])); + $userManager->expects($this->once()) + ->method('callForAllUsers') + ->will($this->returnCallback(function(\Closure $closure) use ($users) { + foreach ($users as $user) { + $closure($user); + } + })); + + /** @var \OCP\IConfig $config */ + $this->repair = new RepairUnmergedShares($config, $this->connection, $userManager, $groupManager); + } + + protected function tearDown() { + $this->deleteAllShares(); + + parent::tearDown(); + } + + protected function deleteAllShares() { + $qb = $this->connection->getQueryBuilder(); + $qb->delete('share')->execute(); + } + + private function createShare($type, $sourceId, $recipient, $targetName, $permissions, $parentId = null) { + $qb = $this->connection->getQueryBuilder(); + $values = [ + 'share_type' => $qb->expr()->literal($type), + 'share_with' => $qb->expr()->literal($recipient), + 'uid_owner' => $qb->expr()->literal('user1'), + 'item_type' => $qb->expr()->literal('folder'), + 'item_source' => $qb->expr()->literal($sourceId), + 'item_target' => $qb->expr()->literal('/' . $sourceId), + 'file_source' => $qb->expr()->literal($sourceId), + 'file_target' => $qb->expr()->literal($targetName), + 'permissions' => $qb->expr()->literal($permissions), + 'stime' => $qb->expr()->literal(time()), + ]; + if ($parentId !== null) { + $values['parent'] = $qb->expr()->literal($parentId); + } + $qb->insert('share') + ->values($values) + ->execute(); + + return $this->connection->lastInsertId('*PREFIX*share'); + } + + private function getShareById($id) { + $query = $this->connection->getQueryBuilder(); + $results = $query + ->select('*') + ->from('share') + ->where($query->expr()->eq('id', $query->expr()->literal($id))) + ->execute() + ->fetchAll(); + + if (!empty($results)) { + return $results[0]; + } + return null; + } + + public function sharesDataProvider() { + /** + * For all these test cases we have the following situation: + * + * - "user1" is the share owner + * - "user2" is the recipient, and member of "recipientgroup1" and "recipientgroup2" + * - "user1" is member of "samegroup1", "samegroup2" for same group tests + */ + return [ + [ + // #0 legitimate share: + // - outsider shares with group1, group2 + // - recipient renamed, resulting in subshares + // - one subshare for each group share + // - targets of subshare all match + [ + [Constants::SHARE_TYPE_GROUP, 123, 'recipientgroup1', '/test', 31], + [Constants::SHARE_TYPE_GROUP, 123, 'recipientgroup2', '/test', 31], + // child of the previous ones + [DefaultShareProvider::SHARE_TYPE_USERGROUP, 123, 'user2', '/test renamed', 31, 0], + // child of the previous ones + [DefaultShareProvider::SHARE_TYPE_USERGROUP, 123, 'user2', '/test renamed', 31, 1], + // different unrelated share + [Constants::SHARE_TYPE_GROUP, 456, 'recipientgroup1', '/test (4)', 31], + ], + [ + ['/test', 31], + ['/test', 31], + // leave them alone + ['/test renamed', 31], + ['/test renamed', 31], + // leave unrelated alone + ['/test (4)', 31], + ] + ], + [ + // #1 broken share: + // - outsider shares with group1, group2 + // - only one subshare for two group shares + [ + [Constants::SHARE_TYPE_GROUP, 123, 'recipientgroup1', '/test', 31], + [Constants::SHARE_TYPE_GROUP, 123, 'recipientgroup2', '/test', 31], + // child of the previous one + [DefaultShareProvider::SHARE_TYPE_USERGROUP, 123, 'user2', '/test (2)', 31, 1], + // different unrelated share + [Constants::SHARE_TYPE_GROUP, 456, 'recipientgroup1', '/test (4)', 31], + ], + [ + ['/test', 31], + ['/test', 31], + ['/test', 31], + // leave unrelated alone + ['/test (4)', 31], + ] + ], + [ + // #2 bogus share + // - outsider shares with group1, group2 + // - one subshare for each group share + // - but the targets do not match when grouped + [ + [Constants::SHARE_TYPE_GROUP, 123, 'recipientgroup1', '/test', 31], + [Constants::SHARE_TYPE_GROUP, 123, 'recipientgroup2', '/test', 31], + // child of the previous ones + [DefaultShareProvider::SHARE_TYPE_USERGROUP, 123, 'user2', '/test (2)', 31, 0], + [DefaultShareProvider::SHARE_TYPE_USERGROUP, 123, 'user2', '/test (3)', 31, 1], + // different unrelated share + [Constants::SHARE_TYPE_GROUP, 456, 'recipientgroup1', '/test (4)', 31], + ], + [ + ['/test', 31], + ['/test', 31], + // reset to original name + ['/test', 31], + ['/test', 31], + // leave unrelated alone + ['/test (4)', 31], + ] + ], + [ + // #3 bogus share + // - outsider shares with group1, group2 + // - one subshare for each group share + // - first subshare not renamed (as in real world scenario) + // - but the targets do not match when grouped + [ + [Constants::SHARE_TYPE_GROUP, 123, 'recipientgroup1', '/test', 31], + [Constants::SHARE_TYPE_GROUP, 123, 'recipientgroup2', '/test', 31], + // child of the previous ones + [DefaultShareProvider::SHARE_TYPE_USERGROUP, 123, 'user2', '/test', 31, 0], + [DefaultShareProvider::SHARE_TYPE_USERGROUP, 123, 'user2', '/test (2)', 31, 1], + // different unrelated share + [Constants::SHARE_TYPE_GROUP, 456, 'recipientgroup1', '/test (4)', 31], + ], + [ + ['/test', 31], + ['/test', 31], + // reset to original name + ['/test', 31], + ['/test', 31], + // leave unrelated alone + ['/test (4)', 31], + ] + ], + [ + // #4 bogus share: + // - outsider shares with group1, group2 + // - one subshare for each group share + // - non-matching targets + // - recipient deletes one duplicate (unshare from self, permissions 0) + [ + [Constants::SHARE_TYPE_GROUP, 123, 'recipientgroup1', '/test', 31], + [Constants::SHARE_TYPE_GROUP, 123, 'recipientgroup2', '/test', 15], + // child of the previous ones + [DefaultShareProvider::SHARE_TYPE_USERGROUP, 123, 'user2', '/test (2)', 0, 0], + [DefaultShareProvider::SHARE_TYPE_USERGROUP, 123, 'user2', '/test (3)', 15, 1], + // different unrelated share + [Constants::SHARE_TYPE_GROUP, 456, 'recipientgroup1', '/test (4)', 31], + ], + [ + ['/test', 31], + ['/test', 15], + // subshares repaired and permissions restored to the max allowed + ['/test', 31], + ['/test', 15], + // leave unrelated alone + ['/test (4)', 31], + ] + ], + [ + // #5 bogus share: + // - outsider shares with group1, group2 + // - one subshare for each group share + // - non-matching targets + // - recipient deletes ALL duplicates (unshare from self, permissions 0) + [ + [Constants::SHARE_TYPE_GROUP, 123, 'recipientgroup1', '/test', 31], + [Constants::SHARE_TYPE_GROUP, 123, 'recipientgroup2', '/test', 15], + // child of the previous ones + [DefaultShareProvider::SHARE_TYPE_USERGROUP, 123, 'user2', '/test (2)', 0, 0], + [DefaultShareProvider::SHARE_TYPE_USERGROUP, 123, 'user2', '/test (3)', 0, 1], + // different unrelated share + [Constants::SHARE_TYPE_GROUP, 456, 'recipientgroup1', '/test (4)', 31], + ], + [ + ['/test', 31], + ['/test', 15], + // subshares target repaired but left "deleted" as it was the user's choice + ['/test', 0], + ['/test', 0], + // leave unrelated alone + ['/test (4)', 31], + ] + ], + [ + // #6 bogus share: + // - outsider shares with group1, group2 and also user2 + // - one subshare for each group share + // - one extra share entry for direct share to user2 + // - non-matching targets + // - user share has more permissions + [ + [Constants::SHARE_TYPE_GROUP, 123, 'recipientgroup1', '/test', 1], + [Constants::SHARE_TYPE_GROUP, 123, 'recipientgroup2', '/test', 15], + // child of the previous ones + [DefaultShareProvider::SHARE_TYPE_USERGROUP, 123, 'user2', '/test (2)', 1, 0], + [DefaultShareProvider::SHARE_TYPE_USERGROUP, 123, 'user2', '/test (3)', 15, 1], + [Constants::SHARE_TYPE_USER, 123, 'user2', '/test (4)', 31], + // different unrelated share + [Constants::SHARE_TYPE_GROUP, 456, 'recipientgroup1', '/test (5)', 31], + ], + [ + ['/test', 1], + ['/test', 15], + // subshares repaired + ['/test', 1], + ['/test', 15], + ['/test', 31], + // leave unrelated alone + ['/test (5)', 31], + ] + ], + [ + // #7 bogus share: + // - outsider shares with group1 and also user2 + // - no subshare at all + // - one extra share entry for direct share to user2 + // - non-matching targets + // - user share has more permissions + [ + [Constants::SHARE_TYPE_GROUP, 123, 'recipientgroup1', '/test', 1], + [Constants::SHARE_TYPE_USER, 123, 'user2', '/test (2)', 31], + // different unrelated share + [Constants::SHARE_TYPE_GROUP, 456, 'recipientgroup1', '/test (5)', 31], + ], + [ + ['/test', 1], + // user share repaired + ['/test', 31], + // leave unrelated alone + ['/test (5)', 31], + ] + ], + [ + // #8 legitimate share with own group: + // - insider shares with both groups the user is already in + // - no subshares in this case + [ + [Constants::SHARE_TYPE_GROUP, 123, 'samegroup1', '/test', 31], + [Constants::SHARE_TYPE_GROUP, 123, 'samegroup2', '/test', 31], + // different unrelated share + [Constants::SHARE_TYPE_GROUP, 456, 'recipientgroup1', '/test (4)', 31], + ], + [ + // leave all alone + ['/test', 31], + ['/test', 31], + // leave unrelated alone + ['/test (4)', 31], + ] + ], + [ + // #9 legitimate shares: + // - group share with same group + // - group share with other group + // - user share where recipient renamed + // - user share where recipient did not rename + [ + [Constants::SHARE_TYPE_GROUP, 123, 'samegroup1', '/test', 31], + [Constants::SHARE_TYPE_GROUP, 123, 'recipientgroup1', '/test', 31], + [Constants::SHARE_TYPE_USER, 123, 'user3', '/test legit rename', 31], + [Constants::SHARE_TYPE_USER, 123, 'user4', '/test', 31], + // different unrelated share + [Constants::SHARE_TYPE_GROUP, 456, 'recipientgroup1', '/test (4)', 31], + ], + [ + // leave all alone + ['/test', 31], + ['/test', 31], + ['/test legit rename', 31], + ['/test', 31], + // leave unrelated alone + ['/test (4)', 31], + ] + ], + [ + // #10 legitimate share: + // - outsider shares with group and user directly with different permissions + // - no subshares + // - same targets + [ + [Constants::SHARE_TYPE_GROUP, 123, 'samegroup1', '/test', 1], + [Constants::SHARE_TYPE_USER, 123, 'user3', '/test', 31], + // different unrelated share + [Constants::SHARE_TYPE_GROUP, 456, 'recipientgroup1', '/test (4)', 31], + ], + [ + // leave all alone + ['/test', 1], + ['/test', 31], + // leave unrelated alone + ['/test (4)', 31], + ] + ], + ]; + } + + /** + * Test merge shares from group shares + * + * @dataProvider sharesDataProvider + */ + public function testMergeGroupShares($shares, $expectedShares) { + $shareIds = []; + + foreach ($shares as $share) { + // if parent + if (isset($share[5])) { + // adjust to real id + $share[5] = $shareIds[$share[5]]; + } else { + $share[5] = null; + } + $shareIds[] = $this->createShare($share[0], $share[1], $share[2], $share[3], $share[4], $share[5]); + } + + /** @var IOutput | \PHPUnit_Framework_MockObject_MockObject $outputMock */ + $outputMock = $this->getMockBuilder('\OCP\Migration\IOutput') + ->disableOriginalConstructor() + ->getMock(); + + $this->repair->run($outputMock); + + foreach ($expectedShares as $index => $expectedShare) { + $share = $this->getShareById($shareIds[$index]); + $this->assertEquals($expectedShare[0], $share['file_target']); + $this->assertEquals($expectedShare[1], $share['permissions']); + } + } +} + diff --git a/version.php b/version.php index 562dda0a792..e6298ae238f 100644 --- a/version.php +++ b/version.php @@ -25,7 +25,7 @@ // We only can count up. The 4. digit is only for the internal patchlevel to trigger DB upgrades // between betas, final and RCs. This is _not_ the public version number. Reset minor/patchlevel // when updating major/minor version number. -$OC_Version = array(9, 2, 0, 0); +$OC_Version = array(9, 2, 0, 1); // The human readable string $OC_VersionString = '11.0 alpha'; |