diff options
51 files changed, 836 insertions, 184 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index cab2fbc..df5f02c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## Added +- Dutch translation +- Chinese (Traditional, Taiwan), Basque (Spain) empty file templates + +## Changed +- generate preview by default + ## 7.5.4 ## Changed - fix opening editor in new tab diff --git a/appinfo/info.xml b/appinfo/info.xml index 670c404..13ca15e 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -28,6 +28,7 @@ <screenshot>https://raw.githubusercontent.com/ONLYOFFICE/onlyoffice-nextcloud/master/screenshots/settings.png</screenshot> <screenshot>https://raw.githubusercontent.com/ONLYOFFICE/onlyoffice-nextcloud/master/screenshots/new.png</screenshot> <screenshot>https://raw.githubusercontent.com/ONLYOFFICE/onlyoffice-nextcloud/master/screenshots/open.png</screenshot> + <screenshot>https://raw.githubusercontent.com/ONLYOFFICE/onlyoffice-nextcloud/master/screenshots/open_form.png</screenshot> <dependencies> <nextcloud min-version="24" max-version="24"/> </dependencies> diff --git a/appinfo/routes.php b/appinfo/routes.php index bf5ea6d..cab5c84 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -47,6 +47,7 @@ return [ "ocs" => [ ["name" => "federation#key", "url" => "/api/v1/key", "verb" => "POST"], ["name" => "federation#keylock", "url" => "/api/v1/keylock", "verb" => "POST"], + ["name" => "federation#healthcheck", "url" => "/api/v1/healthcheck", "verb" => "GET"], ["name" => "editorapi#config", "url" => "/api/v1/config/{fileId}", "verb" => "GET"], ["name" => "sharingapi#get_shares", "url" => "/api/v1/shares/{fileId}", "verb" => "GET"], ["name" => "sharingapi#set_shares", "url" => "/api/v1/shares", "verb" => "PUT"] diff --git a/assets b/assets -Subproject 01a35499a3cfb4013d990100e119a7f47f02616 +Subproject 4b96e283924e0481299b6400520829649634c23 diff --git a/controller/callbackcontroller.php b/controller/callbackcontroller.php index 962587a..a83edfa 100644 --- a/controller/callbackcontroller.php +++ b/controller/callbackcontroller.php @@ -45,7 +45,6 @@ use OCP\Lock\LockedException; use OCP\Share\Exceptions\ShareNotFound; use OCP\Share\IManager; -use OCA\Files_Sharing\External\Storage as SharingExternalStorage; use OCA\Files_Versions\Versions\IVersionManager; use OCA\Onlyoffice\AppConfig; @@ -53,6 +52,7 @@ use OCA\Onlyoffice\Crypt; use OCA\Onlyoffice\DocumentService; use OCA\Onlyoffice\FileVersions; use OCA\Onlyoffice\KeyManager; +use OCA\Onlyoffice\RemoteInstance; use OCA\Onlyoffice\TemplateManager; /** @@ -551,8 +551,8 @@ class CallbackController extends Controller { $prevIsForcesave = KeyManager::wasForcesave($fileId); - if ($file->getStorage()->instanceOfStorage(SharingExternalStorage::class)) { - $isLock = KeyManager::lockFederatedKey($file, $isForcesave, null); + if (RemoteInstance::isRemoteFile($file)) { + $isLock = RemoteInstance::lockRemoteKey($file, $isForcesave, null); if ($isForcesave && !$isLock) { break; } @@ -578,9 +578,9 @@ class CallbackController extends Controller { $retryOperation(); } catch (PreConditionNotMetException $e) {} - if ($file->getStorage()->instanceOfStorage(SharingExternalStorage::class)) { + if (RemoteInstance::isRemoteFile($file)) { if ($isForcesave) { - KeyManager::lockFederatedKey($file, false, $isForcesave); + RemoteInstance::lockRemoteKey($file, false, $isForcesave); } } else { KeyManager::lock($fileId, false); diff --git a/controller/editorapicontroller.php b/controller/editorapicontroller.php index ce03f3a..713b865 100644 --- a/controller/editorapicontroller.php +++ b/controller/editorapicontroller.php @@ -42,6 +42,7 @@ use OCP\IUser; use OCP\IUserManager; use OCP\IUserSession; use OCP\Share\IManager; +use OCP\Share\IShare; use OCA\Files_Versions\Versions\IVersionManager; @@ -331,6 +332,7 @@ class EditorApiController extends OCSController { $params["document"]["permissions"]["modifyFilter"] = $permissions_modifyFilter; } + $canDownload = true; $restrictedEditing = false; $fileStorage = $file->getStorage(); if (empty($shareToken) && $fileStorage->instanceOfStorage("\OCA\Files_Sharing\SharedStorage")) { @@ -371,6 +373,14 @@ class EditorApiController extends OCSController { $params["document"]["permissions"]["modifyFilter"] = $modifyFilter; } } + + if (method_exists(IShare::class, "getAttributes")) { + $share = empty($share) ? $fileStorage->getShare() : $share; + $attributes = $share->getAttributes(); + if ($attributes !== null && !$attributes->getAttribute("permissions", "download")) { + $canDownload = false; + } + } } $isTempLock = false; @@ -445,9 +455,7 @@ class EditorApiController extends OCSController { if (!empty($shareToken)) { if (method_exists($share, "getHideDownload") && $share->getHideDownload()) { - $params["document"]["permissions"]["download"] = false; - $params["document"]["permissions"]["print"] = false; - $params["document"]["permissions"]["copy"] = false; + $canDownload = false; } $node = $share->getNode(); @@ -541,6 +549,12 @@ class EditorApiController extends OCSController { } } + if (!$canDownload) { + $params["document"]["permissions"]["download"] = false; + $params["document"]["permissions"]["print"] = false; + $params["document"]["permissions"]["copy"] = false; + } + if ($inframe === true) { $params["_files_sharing"] = \OC::$server->getAppManager()->isInstalled("files_sharing"); } @@ -866,7 +880,8 @@ class EditorApiController extends OCSController { return $watermarkText; } } - if ($watermarkSettings["allGroups"]) { + if ($watermarkSettings["allGroups"] + && $userId !== null) { $groups = $watermarkSettings["allGroupsList"]; foreach ($groups as $group) { if (\OC::$server->getGroupManager()->isInGroup($userId, $group)) { diff --git a/controller/editorcontroller.php b/controller/editorcontroller.php index 80b25d3..92e7b60 100644 --- a/controller/editorcontroller.php +++ b/controller/editorcontroller.php @@ -1048,6 +1048,17 @@ class EditorController extends Controller { } } + $fileStorage = $file->getStorage(); + if ($fileStorage->instanceOfStorage("\OCA\Files_Sharing\SharedStorage")) { + if (method_exists(IShare::class, "getAttributes")) { + $share = empty($share) ? $fileStorage->getShare() : $share; + $attributes = $share->getAttributes(); + if ($attributes !== null && !$attributes->getAttribute("permissions", "download")) { + return $this->renderError($this->trans->t("Not permitted")); + } + } + } + $fileName = $file->getName(); $ext = strtolower(pathinfo($fileName, PATHINFO_EXTENSION)); $toExtension = strtolower($toExtension); diff --git a/controller/federationcontroller.php b/controller/federationcontroller.php index 8d68daf..27a9f64 100644 --- a/controller/federationcontroller.php +++ b/controller/federationcontroller.php @@ -27,12 +27,11 @@ use OCP\IRequest; use OCP\ISession; use OCP\Share\IManager; -use OCA\Files_Sharing\External\Storage as SharingExternalStorage; - use OCA\Onlyoffice\AppConfig; use OCA\Onlyoffice\DocumentService; use OCA\Onlyoffice\FileUtility; use OCA\Onlyoffice\KeyManager; +use OCA\Onlyoffice\RemoteInstance; /** * OCS handler @@ -136,8 +135,8 @@ class FederationController extends OCSController { $fileId = $file->getId(); - if ($file->getStorage()->instanceOfStorage(SharingExternalStorage::class)) { - $isLock = KeyManager::lockFederatedKey($file, $lock, $fs); + if (RemoteInstance::isRemoteFile($file)) { + $isLock = RemoteInstance::lockRemoteKey($file, $lock, $fs); if (!$isLock) { return new DataResponse(["error" => "Failed request"]); } @@ -151,4 +150,19 @@ class FederationController extends OCSController { $this->logger->debug("Federated request lock for " . $fileId, ["app" => $this->appName]); return new DataResponse(); } + + /** + * Health check instance + * + * @return DataResponse + * + * @NoAdminRequired + * @NoCSRFRequired + * @PublicPage + */ + public function healthcheck() { + $this->logger->debug("Federated healthcheck", ["app" => $this->appName]); + + return new DataResponse(["alive" => true]); + } } diff --git a/controller/settingscontroller.php b/controller/settingscontroller.php index 9768b2b..aa8ffe4 100644 --- a/controller/settingscontroller.php +++ b/controller/settingscontroller.php @@ -19,7 +19,6 @@ namespace OCA\Onlyoffice\Controller; -use OCP\App; use OCP\AppFramework\Controller; use OCP\AppFramework\Http\TemplateResponse; use OCP\IL10N; @@ -128,7 +127,7 @@ class SettingsController extends Controller { "successful" => $this->config->SettingsAreSuccessful(), "watermark" => $this->config->GetWatermarkSettings(), "macros" => $this->config->GetCustomizationMacros(), - "tagsEnabled" => App::isEnabled("systemtags"), + "tagsEnabled" => \OC::$server->getAppManager()->isEnabledForUser("systemtags"), "reviewDisplay" => $this->config->GetCustomizationReviewDisplay(), "theme" => $this->config->GetCustomizationTheme(), "templates" => $this->GetGlobalTemplates() diff --git a/js/editor.js b/js/editor.js index e5838e2..fdb5a2d 100644 --- a/js/editor.js +++ b/js/editor.js @@ -107,6 +107,11 @@ url: configUrl, success: function onSuccess(config) { if (config) { + if (config.redirectUrl) { + location.href = config.redirectUrl; + return; + } + if (config.error != null) { OCA.Onlyoffice.showMessage(config.error, "error", {timeout: -1}); return; @@ -118,11 +123,6 @@ return; } - if (config.redirectUrl) { - location.href = config.redirectUrl; - return; - } - var docIsChanged = null; var docIsChangedTimeout = null; @@ -87,6 +87,7 @@ OC.L10N.register( "Keep intermediate versions when editing (forcesave)": "Съхранявайте междинни версии при редактиране (force save)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Използвайте ONLYOFFICE, за да генерирате преглед на документа (ще заеме дисково пространство)", "Keep metadata for each version once the document is edited (it will take up disk space)": "Запазете метаданните за всяка версия, щом документът бъде редактиран (ще заеме дисково пространство)", + "Clear": "Изчисти", "All history successfully deleted": "Цялата история е успешно изтрита", "Create": "Създай", "Select template" : "Избор на шаблон", diff --git a/l10n/bg.json b/l10n/bg.json index 9f1bdd2..9da3f7d 100644 --- a/l10n/bg.json +++ b/l10n/bg.json @@ -85,6 +85,7 @@ "Keep intermediate versions when editing (forcesave)": "Съхранявайте междинни версии при редактиране (force save)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Използвайте ONLYOFFICE, за да генерирате преглед на документа (ще заеме дисково пространство)", "Keep metadata for each version once the document is edited (it will take up disk space)": "Запазете метаданните за всяка версия, щом документът бъде редактиран (ще заеме дисково пространство)", + "Clear": "Изчисти", "All history successfully deleted": "Цялата история е успешно изтрита", "Create": "Създай", "Select template": "Избор на шаблон", @@ -87,6 +87,7 @@ OC.L10N.register( "Keep intermediate versions when editing (forcesave)": "Mantenir les versions intermèdies durant l'edició (forçar guardar)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Usar ONLYOFFICE per a generar una vista prèvia del document (ocuparà espai en el disc)", "Keep metadata for each version once the document is edited (it will take up disk space)": "Guardar les metadades de cada versió en editar el document (ocuparà espai en el disc)", + "Clear": "Suprimeix", "All history successfully deleted": "Tot l'historial s'ha eliminat correctament", "Create": "Crear", "Select template": "Seleccionar plantilla", diff --git a/l10n/ca.json b/l10n/ca.json index 226b19e..879357c 100644 --- a/l10n/ca.json +++ b/l10n/ca.json @@ -85,6 +85,7 @@ "Keep intermediate versions when editing (forcesave)": "Mantenir les versions intermèdies durant l'edició (forçar guardar)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Usar ONLYOFFICE per a generar una vista prèvia del document (ocuparà espai en el disc)", "Keep metadata for each version once the document is edited (it will take up disk space)": "Guardar les metadades de cada versió en editar el document (ocuparà espai en el disc)", + "Clear": "Suprimeix", "All history successfully deleted": "Tot l'historial s'ha eliminat correctament", "Create": "Crear", "Select template": "Seleccionar plantilla", @@ -87,6 +87,7 @@ OC.L10N.register( "Keep intermediate versions when editing (forcesave)": "Zwischenversionen bei der Bearbeitung aufbewahren (force save)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "ONLYOFFICE verwenden, um eine Dokumentvorschau zu erstellen (Speicherplatz erforderlich)", "Keep metadata for each version once the document is edited (it will take up disk space)": "Metadaten für jede Version beim Bearbeiten des Dokuments aufbewahren (Speicherplatz erforderlich)", + "Clear": "Leeren", "All history successfully deleted": "Gesamtverlauf wurde erfolgreich gelöscht", "Create": "Erstellen", "Select template" : "Vorlage auswählen", @@ -117,6 +118,7 @@ OC.L10N.register( "Fill in form in ONLYOFFICE": "Formular in ONLYOFFICE ausfüllen", "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Für Online-Arbeit mit Formularen ist Version 7.0 von ONLYOFFICE Docs erforderlich", "Security": "Sicherheit", + "Run document macros": "Makros im Dokument ausführen", "Anonymous": "Anonym", "Default editor theme": "Standardmäßiges Thema des Editors", "Light": "Hell", diff --git a/l10n/de.json b/l10n/de.json index 3e2bd4a..a279c6d 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -85,6 +85,7 @@ "Keep intermediate versions when editing (forcesave)": "Zwischenversionen bei der Bearbeitung aufbewahren (force save)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "ONLYOFFICE verwenden, um eine Dokumentvorschau zu erstellen (Speicherplatz erforderlich)", "Keep metadata for each version once the document is edited (it will take up disk space)": "Metadaten für jede Version beim Bearbeiten des Dokuments aufbewahren (Speicherplatz erforderlich)", + "Clear": "Leeren", "All history successfully deleted": "Gesamtverlauf wurde erfolgreich gelöscht", "Create": "Erstellen", "Select template" : "Vorlage auswählen", @@ -115,6 +116,7 @@ "Fill in form in ONLYOFFICE": "Formular in ONLYOFFICE ausfüllen", "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Für Online-Arbeit mit Formularen ist Version 7.0 von ONLYOFFICE Docs erforderlich", "Security": "Sicherheit", + "Run document macros": "Makros im Dokument ausführen", "Anonymous": "Anonym", "Default editor theme": "Standardmäßiges Thema des Editors", "Light": "Hell", diff --git a/l10n/de_DE.js b/l10n/de_DE.js index d3199f6..ef659bd 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -87,6 +87,7 @@ OC.L10N.register( "Keep intermediate versions when editing (forcesave)": "Zwischenversionen bei der Bearbeitung aufbewahren (force save)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "ONLYOFFICE verwenden, um eine Dokumentvorschau zu erstellen (Speicherplatz erforderlich)", "Keep metadata for each version once the document is edited (it will take up disk space)": "Metadaten für jede Version beim Bearbeiten des Dokuments aufbewahren (Speicherplatz erforderlich)", + "Clear": "Leeren", "All history successfully deleted": "Gesamtverlauf wurde erfolgreich gelöscht", "Create": "Erstellen", "Select template" : "Vorlage auswählen", @@ -117,6 +118,7 @@ OC.L10N.register( "Fill in form in ONLYOFFICE": "Formular in ONLYOFFICE ausfüllen", "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Für Online-Arbeit mit Formularen ist Version 7.0 von ONLYOFFICE Docs erforderlich", "Security": "Sicherheit", + "Run document macros": "Makros im Dokument ausführen", "Anonymous": "Anonym", "Default editor theme": "Standardmäßiges Thema des Editors", "Light": "Hell", diff --git a/l10n/de_DE.json b/l10n/de_DE.json index c341b07..d15a66a 100644 --- a/l10n/de_DE.json +++ b/l10n/de_DE.json @@ -85,6 +85,7 @@ "Keep intermediate versions when editing (forcesave)": "Zwischenversionen bei der Bearbeitung aufbewahren (force save)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "ONLYOFFICE verwenden, um eine Dokumentvorschau zu erstellen (Speicherplatz erforderlich)", "Keep metadata for each version once the document is edited (it will take up disk space)": "Metadaten für jede Version beim Bearbeiten des Dokuments aufbewahren (Speicherplatz erforderlich)", + "Clear": "Leeren", "All history successfully deleted": "Gesamtverlauf wurde erfolgreich gelöscht", "Create": "Erstellen", "Select template" : "Vorlage auswählen", @@ -115,6 +116,7 @@ "Fill in form in ONLYOFFICE": "Formular in ONLYOFFICE ausfüllen", "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Für Online-Arbeit mit Formularen ist Version 7.0 von ONLYOFFICE Docs erforderlich", "Security": "Sicherheit", + "Run document macros": "Makros im Dokument ausführen", "Anonymous": "Anonym", "Default editor theme": "Standardmäßiges Thema des Editors", "Light": "Hell", @@ -87,6 +87,7 @@ OC.L10N.register( "Keep intermediate versions when editing (forcesave)": "Mantener las versiones intermedias durante la edición (forzar guardar)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Usar ONLYOFFICE para generar una vista previa del documento (ocupará espacio en el disco)", "Keep metadata for each version once the document is edited (it will take up disk space)": "Guardar los metadatos de cada versión al editar el documento (ocupará espacio en el disco)", + "Clear": "Limpiar", "All history successfully deleted": "Todo el historial se ha eliminado correctamente", "Create": "Crear", "Select template" : "Seleccionar plantilla", @@ -117,6 +118,7 @@ OC.L10N.register( "Fill in form in ONLYOFFICE": "Rellenar el formulario en ONLYOFFICE", "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Por favor, actualice ONLYOFFICE Docs a la versión 7.0 para poder trabajar con formularios rellenables en línea", "Security": "Seguridad", + "Run document macros": "Ejecutar macros de documentos", "Anonymous": "Anónimo", "Default editor theme": "Tema del editor predeterminado", "Light": "Claro", diff --git a/l10n/es.json b/l10n/es.json index ac872ea..74907e0 100644 --- a/l10n/es.json +++ b/l10n/es.json @@ -85,6 +85,7 @@ "Keep intermediate versions when editing (forcesave)": "Mantener las versiones intermedias durante la edición (forzar guardar)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Usar ONLYOFFICE para generar una vista previa del documento (ocupará espacio en el disco)", "Keep metadata for each version once the document is edited (it will take up disk space)": "Guardar los metadatos de cada versión al editar el documento (ocupará espacio en el disco)", + "Clear": "Limpiar", "All history successfully deleted": "Todo el historial se ha eliminado correctamente", "Create": "Crear", "Select template" : "Seleccionar plantilla", @@ -115,6 +116,7 @@ "Fill in form in ONLYOFFICE": "Rellenar el formulario en ONLYOFFICE", "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Por favor, actualice ONLYOFFICE Docs a la versión 7.0 para poder trabajar con formularios rellenables en línea", "Security": "Seguridad", + "Run document macros": "Ejecutar macros de documentos", "Anonymous": "Anónimo", "Default editor theme": "Tema del editor predeterminado", "Light": "Claro", @@ -87,6 +87,7 @@ OC.L10N.register( "Keep intermediate versions when editing (forcesave)": "Sauvegarder les versions intermédiaires lors de l'édition (enregistrement obligatoire)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Utilisez ONLYOFFICE pour générer l'aperçu du document (occupe de l'espace disque)", "Keep metadata for each version once the document is edited (it will take up disk space)": "Gardez les métadonnées pour chaque version dès que le document est modifié (occupe de l'espace disque)", + "Clear": "Effacer", "All history successfully deleted": "L'historique a été supprimé avec succès", "Create": "Créer", "Select template" : "Sélectionnez un modèle", @@ -117,6 +118,7 @@ OC.L10N.register( "Fill in form in ONLYOFFICE": "Remplir le formulaire dans ONLYOFFICE", "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Veuillez mettre à jour ONLYOFFICE Docs vers la version 7.0 pour travailler sur les formulaires à remplir en ligne", "Security": "Sécurité", + "Run document macros": "Exécuter des macros de documents", "Anonymous": "Anonyme", "Default editor theme": "Thème d'éditeur par défaut", "Light": "Clair", diff --git a/l10n/fr.json b/l10n/fr.json index 8eefc51..7b05833 100644 --- a/l10n/fr.json +++ b/l10n/fr.json @@ -85,6 +85,7 @@ "Keep intermediate versions when editing (forcesave)": "Sauvegarder les versions intermédiaires lors de l'édition (enregistrement obligatoire)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Utilisez ONLYOFFICE pour générer l'aperçu du document (occupe de l'espace disque)", "Keep metadata for each version once the document is edited (it will take up disk space)": "Gardez les métadonnées pour chaque version dès que le document est modifié (occupe de l'espace disque)", + "Clear": "Effacer", "All history successfully deleted": "L'historique a été supprimé avec succès", "Create": "Créer", "Select template" : "Sélectionnez un modèle", @@ -115,6 +116,7 @@ "Fill in form in ONLYOFFICE": "Remplir le formulaire dans ONLYOFFICE", "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Veuillez mettre à jour ONLYOFFICE Docs vers la version 7.0 pour travailler sur les formulaires à remplir en ligne", "Security": "Sécurité", + "Run document macros": "Exécuter des macros de documents", "Anonymous": "Anonyme", "Default editor theme": "Thème d'éditeur par défaut", "Light": "Clair", @@ -87,6 +87,7 @@ OC.L10N.register( "Keep intermediate versions when editing (forcesave)": "Mantieni le versioni intermedie durante la modifica (forzare salvataggio)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Usare ONLYOFFICE per generare anteprima documenti (occuperà spazio su disco)", "Keep metadata for each version once the document is edited (it will take up disk space)": "Salvare metadati per ogni versione una volta modificato il documento (occuperà spazio su disco)", + "Clear": "Svuota", "All history successfully deleted": "Cronologia eliminata con successo", "Create": "Crea", "Select template" : "Seleziona modello", @@ -117,6 +118,7 @@ OC.L10N.register( "Fill in form in ONLYOFFICE": "Compilare il modulo in ONLYOFFICE", "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Si prega di aggiornare ONLYOFFICE Docs alla versione 7.0 per lavorare su moduli compilabili online", "Security": "Sicurezza", + "Run document macros": "Esegui le macro del documento", "Anonymous": "Anonimo", "Default editor theme": "Tema dell'editor predefinito", "Light": "Chiaro", diff --git a/l10n/it.json b/l10n/it.json index df7d782..fbdb0d6 100644 --- a/l10n/it.json +++ b/l10n/it.json @@ -85,6 +85,7 @@ "Keep intermediate versions when editing (forcesave)": "Mantieni le versioni intermedie durante la modifica (forzare salvataggio)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Usare ONLYOFFICE per generare anteprima documenti (occuperà spazio su disco)", "Keep metadata for each version once the document is edited (it will take up disk space)": "Salvare metadati per ogni versione una volta modificato il documento (occuperà spazio su disco)", + "Clear": "Svuota", "All history successfully deleted": "Cronologia eliminata con successo", "Create": "Crea", "Select template" : "Seleziona modello", @@ -115,6 +116,7 @@ "Fill in form in ONLYOFFICE": "Compilare il modulo in ONLYOFFICE", "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Si prega di aggiornare ONLYOFFICE Docs alla versione 7.0 per lavorare su moduli compilabili online", "Security": "Sicurezza", + "Run document macros": "Esegui le macro del documento", "Anonymous": "Anonimo", "Default editor theme": "Tema dell'editor predefinito", "Light": "Chiaro", @@ -1,27 +1,27 @@ OC.L10N.register( "onlyoffice", { - "Access denied" : "アクセス拒否されました", + "Access denied" : "アクセスが拒否されました", "Invalid request" : "リクエストが不正です", "Files not found" : "ファイルが見つかりません", "File not found" : "ファイルが見つかりません", "Not permitted" : "権限がありません", "Download failed" : "ダウンロードできませんでした", "The required folder was not found" : "開こうとしたフォルダーがありません", - "You don't have enough permission to create" : "充分な作成権限がありません", + "You don't have enough permission to create": "作成権限がありません", "Template not found" : "テンプレートが見つかりません", "Can't create file" : "ファイルを作成できません", "Format is not supported" : "このフォーマットはサポートされていません", "Conversion is not required" : "変換する必要はありません", - "Failed to download converted file" : "コンバート済みファイルをダウンロードできませんでした", + "Failed to download converted file": "変換されたファイルをダウンロードできませんでした", "ONLYOFFICE app is not configured. Please contact admin" : "ONLYOFFICEアプリが設定されていません。管理者に相談してください", "FileId is empty" : "ファイルIDが空です", - "You do not have enough permissions to view the file" : "ファイルを閲覧する権限が足りません", + "You do not have enough permissions to view the file": "ファイルを閲覧する権限ありません", "Error occurred in the document service" : "ドキュメントサービスでエラーが発生しました", - "Not supported version" : "未サポートバージョン", + "Not supported version": "サポートされていないバージョン", "ONLYOFFICE cannot be reached. Please contact admin" : "ONLYOFFICEに接続できません。管理者に相談してください", "Loading, please wait." : "読み込み中です...。しばらくお待ちください。", - "File created" : "ファイル作成されました", + "File created": "ファイルが作成されました", "Open in ONLYOFFICE" : "ONLYOFFICEで開く", "Convert with ONLYOFFICE" : "ONLYOFFICEで変換", "New document" : "新しいドキュメント", @@ -32,11 +32,11 @@ OC.L10N.register( "Server can't read xml" : "サーバーでxmlを読み込ませんでした", "Bad Response. Errors: " : "不正なレスポンス エラー: ", "Documentation" : "ドキュメンテーション", - "ONLYOFFICE Docs Location specifies the address of the server with the document services installed. Please change the '<documentserver>' for the server address in the below line." : "ONLYOFFICE Docs の位置は、ドキュメントサービスがインストールされているサーバーのアドレスを指定します。以下の行の'<documentserver>'をサーバーアドレスに変更してください。", + "ONLYOFFICE Docs Location specifies the address of the server with the document services installed. Please change the '<documentserver>' for the server address in the below line.": "Docsアドレスにはドキュメントサービスがインストールされているサーバーのアドレスを指定します。以下の行の'<documentserver>'をサーバーアドレスに変更してください。", "ONLYOFFICE Docs address" : "ONLYOFFICE Docs アドレス", - "Advanced server settings" : "詳細サーバー設定", - "ONLYOFFICE Docs address for internal requests from the server" : "サーバーからの内部リクエストにはONLYOFFICE Docs アドレス", - "Server address for internal requests from ONLYOFFICE Docs" : "ONLYOFFICE Docsからの内部リクエストにはサーバーアドレス", + "Advanced server settings": "サーバー詳細設定", + "ONLYOFFICE Docs address for internal requests from the server": "サーバーから内部リクエストに利用されるONLYOFFICE Docs アドレス", + "Server address for internal requests from ONLYOFFICE Docs": "ONLYOFFICE Docsから内部リクエストに利用されるサーバーアドレス", "Secret key (leave blank to disable)" : "シークレットキー (ブランクで無効)", "Open file in the same tab" : "ファイルを同じタブで開く", "The default application for opening the format": "以下のファイルフォーマットをデフォルトで開く", @@ -44,16 +44,16 @@ OC.L10N.register( "View details" : "詳細表示", "Save" : "保存", "Mixed Active Content is not allowed. HTTPS address for ONLYOFFICE Docs is required." : "アクティブコンテンツの混在は許可されていません。ONLYOFFICE DocsにはHTTPSアドレスが必要です", - "Restrict access to editors to following groups" : "アクセス編集できる人を以下のグループに制限する", + "Restrict access to editors to following groups": "エディターの利用を以下のグループに制限する", "Server settings" : "サーバー設定", "Common settings" : "共通設定", "Editor customization settings" : "エディターカスタム設定", - "The customization section allows personalizing the editor interface": "カスタマイズセクションでは、エディターインターフェイスをパーソナライズできます", - "Display Chat menu button" : "チャットメニューホタンを表示", - "Display the header more compact" : "ヘッダーをよりコンパクトに表示", - "Display Feedback & Support menu button" : "フィードバックとサポートメニューホタンを表示", - "Display Help menu button" : "ヘルプメニューホタンを表示", - "Display monochrome toolbar header" : "モノクローム・ツールバーヘッダーを表示する", + "The customization section allows personalizing the editor interface": "エディターインターフェイスのカスタマイズ", + "Display Chat menu button": "チャットメニューボタンを表示する", + "Display the header more compact": "ヘッダーをよりコンパクトに表示する", + "Display Feedback & Support menu button": "フィードバックとサポートメニューボタンを表示する", + "Display Help menu button": "ヘルプメニューボタンを表示する", + "Display monochrome toolbar header": "ツールバーヘッダーをモノクロで表示する", "Save as" : "別名で保存", "File saved" : "ファイルが保存されました", "Insert image" : "画像を挿入", @@ -78,19 +78,20 @@ OC.L10N.register( "Show watermark on link shares with specific system tags" : "特定のシステムタグが付いていてリンク共有されたものに透かしを入れる", "Select tag" : "タグを選択", "Select file to compare" : "比較するファイルを選択", - "Review mode for viewing": "表示するためのレビューモード", + "Review mode for viewing": "レビューモード時の表示方式", "Markup": "マークアップ", "Final": "最終版", "Original": "オリジナル", "version": "バージョン", - "Disable certificate verification (insecure)": "証明書の検証を無効にする(安全でない", + "Disable certificate verification (insecure)": "証明書の検証を無効にする(安全ではありません)", "Keep intermediate versions when editing (forcesave)": "編集時に、中間バージョンを保持する (強制保存)", - "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "ONLYOFFICEを使用して、ドキュメントプレビューを生成する(ディスク容量がかかる)", - "Keep metadata for each version once the document is edited (it will take up disk space)": "ドキュメントが編集されたら、各バージョンのメタデータを保持する(ディスクス容量がかかる)", + "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "ONLYOFFICEを使用してドキュメントのサムネールを生成する(ディスク容量を消費します)", + "Keep metadata for each version once the document is edited (it will take up disk space)": "編集されたドキュメントの各バージョンのメタデータを保持する(ディスク容量を消費します)", + "Clear": "消去", "All history successfully deleted": "すべての履歴が正常に削除されました", "Create": "作成", "Select template" : "テンプレートを選択する", - "Invalid file provided" : "無効なファイルが提供されました", + "Invalid file provided": "提供されたファイルは無効です", "Empty": "空", "Error" : "エラー", "Add a new template": "新しいテンプレートを追加する:", @@ -99,7 +100,7 @@ OC.L10N.register( "Template successfully added": "テンプレートが正常に追加されました", "Template successfully deleted": "テンプレートが正常に削除されました", "Common templates": "よく使われるテンプレート", - "Failed to delete template": "テンプレートの削除に失敗しました", + "Failed to delete template": "テンプレートを削除できませんでした", "File has been converted. Its content might look different.": "ファイルが変換されました。 その内容は異なって見えるかもしれません。", "Download as": "別の形式でダウンロード", "Download": "ダウンロード", @@ -117,10 +118,11 @@ OC.L10N.register( "Fill in form in ONLYOFFICE": "ONLYOFFICEでフォームを記入する", "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "オンラインで入力可能なフォームを作成するには、ONLYOFFICE Docs 7.0版まで更新してください", "Security": "セキュリティ", + "Run document macros": "ドキュメントマクロを実行する", "Anonymous": "匿名", - "Default editor theme": "デフォルトのエディタテーマ", + "Default editor theme": "エディターのデフォルトテーマ", "Light": "明るい", - "Classic Light": "明るい(クラシック)", + "Classic Light": "ライト(クラシック)", "Dark": "ダーク", "Review": "レビュー", "Comment": "コメント", diff --git a/l10n/ja.json b/l10n/ja.json index 21543c1..4fda068 100644 --- a/l10n/ja.json +++ b/l10n/ja.json @@ -1,25 +1,25 @@ { "translations": { - "Access denied" : "アクセス拒否されました", + "Access denied" : "アクセスが拒否されました", "Invalid request" : "リクエストが不正です", "Files not found" : "ファイルが見つかりません", "File not found" : "ファイルが見つかりません", "Not permitted" : "権限がありません", "Download failed" : "ダウンロードできませんでした", "The required folder was not found" : "開こうとしたフォルダーがありません", - "You don't have enough permission to create" : "充分な作成権限がありません", + "You don't have enough permission to create" : "作成権限がありません", "Template not found" : "テンプレートが見つかりません", "Can't create file" : "ファイルを作成できません", "Format is not supported" : "このフォーマットはサポートされていません", "Conversion is not required" : "変換する必要はありません", - "Failed to download converted file" : "コンバート済みファイルをダウンロードできませんでした", + "Failed to download converted file" : "変換されたファイルをダウンロードできませんでした", "ONLYOFFICE app is not configured. Please contact admin" : "ONLYOFFICEアプリが設定されていません。管理者に相談してください", "FileId is empty" : "ファイルIDが空です", - "You do not have enough permissions to view the file" : "ファイルを閲覧する権限が足りません", + "You do not have enough permissions to view the file" : "ファイルを閲覧する権限がありません", "Error occurred in the document service" : "ドキュメントサービスでエラーが発生しました", - "Not supported version" : "未サポートバージョン", + "Not supported version" : "サポートされていなバージョン", "ONLYOFFICE cannot be reached. Please contact admin" : "ONLYOFFICEに接続できません。管理者に相談してください", "Loading, please wait." : "読み込み中です...。しばらくお待ちください。", - "File created" : "ファイル作成されました", + "File created" : "ファイルが作成されました", "Open in ONLYOFFICE" : "ONLYOFFICEで開く", "Convert with ONLYOFFICE" : "ONLYOFFICEで変換", "New document" : "新しいドキュメント", @@ -30,11 +30,11 @@ "Server can't read xml" : "サーバーでxmlを読み込ませんでした", "Bad Response. Errors: " : "不正なレスポンス エラー: ", "Documentation" : "ドキュメンテーション", - "ONLYOFFICE Docs Location specifies the address of the server with the document services installed. Please change the '<documentserver>' for the server address in the below line." : "ONLYOFFICE Docs の位置は、ドキュメントサービスがインストールされているサーバーのアドレスを指定します。以下の行の'<documentserver>'をサーバーアドレスに変更してください。", + "ONLYOFFICE Docs Location specifies the address of the server with the document services installed. Please change the '<documentserver>' for the server address in the below line." : "ONLYOFFICE Docsアドレスにはドキュメントサービスがインストールされているサーバーのアドレスを指定します。以下の行の'<documentserver>'をサーバーアドレスに変更してください。", "ONLYOFFICE Docs address" : "ONLYOFFICE Docs アドレス", - "Advanced server settings" : "詳細サーバー設定", - "ONLYOFFICE Docs address for internal requests from the server" : "サーバーからの内部リクエストにはONLYOFFICE Docs アドレス", - "Server address for internal requests from ONLYOFFICE Docs" : "ONLYOFFICE Docsからの内部リクエストにはサーバーアドレス", + "Advanced server settings" : "サーバー詳細設定", + "ONLYOFFICE Docs address for internal requests from the server" : "サーバーから内部リクエストに利用されるONLYOFFICE Docs アドレス", + "Server address for internal requests from ONLYOFFICE Docs" : "ONLYOFFICE Docsから内部リクエストに利用されるサーバーアドレス", "Secret key (leave blank to disable)" : "シークレットキー (ブランクで無効)", "Open file in the same tab" : "ファイルを同じタブで開く", "The default application for opening the format": "以下のファイルフォーマットをデフォルトで開く", @@ -42,16 +42,16 @@ "View details" : "詳細表示", "Save" : "保存", "Mixed Active Content is not allowed. HTTPS address for ONLYOFFICE Docs is required." : "アクティブコンテンツの混在は許可されていません。ONLYOFFICE DocsにはHTTPSアドレスが必要です", - "Restrict access to editors to following groups" : "アクセス編集できる人を以下のグループに制限する", + "Restrict access to editors to following groups" : "エディターの利用を以下のグループに制限する", "Server settings" : "サーバー設定", "Common settings" : "共通設定", "Editor customization settings" : "エディターカスタム設定", - "The customization section allows personalizing the editor interface": "カスタマイズセクションでは、エディターインターフェイスをパーソナライズできます", - "Display Chat menu button" : "チャットメニューホタンを表示", - "Display the header more compact" : "ヘッダーをよりコンパクトに表示", - "Display Feedback & Support menu button" : "フィードバックとサポートメニューホタンを表示", - "Display Help menu button" : "ヘルプメニューホタンを表示", - "Display monochrome toolbar header" : "モノクローム・ツールバーヘッダーを表示する", + "The customization section allows personalizing the editor interface": "エディターインターフェイスのカスタマイズ", + "Display Chat menu button" : "チャットメニューボタンを表示する", + "Display the header more compact" : "ヘッダーをよりコンパクトに表示する", + "Display Feedback & Support menu button" : "フィードバックとサポートメニューボタンを表示する", + "Display Help menu button" : "ヘルプメニューボタンを表示する", + "Display monochrome toolbar header" : "ツールバーヘッダーをモノクロで表示する", "Save as" : "別名で保存", "File saved" : "ファイルが保存されました", "Insert image" : "画像を挿入", @@ -76,19 +76,20 @@ "Show watermark on link shares with specific system tags" : "特定のシステムタグが付いていてリンク共有されたものに透かしを入れる", "Select tag" : "タグを選択", "Select file to compare" : "比較するファイルを選択", - "Review mode for viewing": "表示するためのレビューモード", + "Review mode for viewing": "レビューモード時の表示方式", "Markup": "マークアップ", "Final": "最終版", "Original": "オリジナル", "version": "バージョン", - "Disable certificate verification (insecure)": "証明書の検証を無効にする(安全でない", + "Disable certificate verification (insecure)": "証明書の検証を無効にする(安全ではありません)", "Keep intermediate versions when editing (forcesave)": "編集時に、中間バージョンを保持する (強制保存)", - "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "ONLYOFFICEを使用して、ドキュメントプレビューを生成する(ディスク容量がかかる)", - "Keep metadata for each version once the document is edited (it will take up disk space)": "ドキュメントが編集されたら、各バージョンのメタデータを保持する(ディスクス容量がかかる)", + "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "ONLYOFFICEを使用してドキュメントのサムネールを生成する(ディスク容量を消費します)", + "Keep metadata for each version once the document is edited (it will take up disk space)": "編集されたドキュメントの各バージョンのメタデータを保持する(ディスク容量を消費します)", + "Clear": "消去", "All history successfully deleted": "すべての履歴が正常に削除されました", "Create": "作成", "Select template" : "テンプレートを選択する", - "Invalid file provided" : "無効なファイルが提供されました", + "Invalid file provided" : "提供されたファイルは無効です", "Empty": "空", "Error" : "エラー", "Add a new template": "新しいテンプレートを追加する:", @@ -97,7 +98,7 @@ "Template successfully added": "テンプレートが正常に追加されました", "Template successfully deleted": "テンプレートが正常に削除されました", "Common templates": "よく使われるテンプレート", - "Failed to delete template": "テンプレートの削除に失敗しました", + "Failed to delete template": "テンプレートを削除できませんでした", "File has been converted. Its content might look different.": "ファイルが変換されました。 その内容は異なって見えるかもしれません。", "Download as": "別の形式でダウンロード", "Download": "ダウンロード", @@ -115,10 +116,11 @@ "Fill in form in ONLYOFFICE": "ONLYOFFICEでフォームを記入する", "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "オンラインで入力可能なフォームを作成するには、ONLYOFFICE Docs 7.0版まで更新してください", "Security": "セキュリティ", + "Run document macros": "ドキュメントマクロを実行する", "Anonymous": "匿名", - "Default editor theme": "デフォルトのエディタテーマ", + "Default editor theme": "エディターのデフォルトテーマ", "Light": "明るい", - "Classic Light": "明るい(クラシック)", + "Classic Light": "ライト(クラシック)", "Dark": "ダーク", "Review": "レビュー", "Comment": "コメント", diff --git a/l10n/nl.js b/l10n/nl.js new file mode 100644 index 0000000..05633ae --- /dev/null +++ b/l10n/nl.js @@ -0,0 +1,134 @@ +OC.L10N.register( + "onlyoffice", + { + "Access denied" : "Toegang geweigerd", + "Invalid request": "Ongeldig verzoek", + "Files not found": "Bestanden niet gevonden", + "File not found": "Bestand niet gevonden", + "Not permitted": "Niet toegestaan", + "Download failed": "Download mislukt", + "The required folder was not found": "De vereiste map is niet gevonden", + "You don't have enough permission to create": "U heeft geen voldoende aanmaak rechten", + "Template not found": "Sjabloon niet gevonden", + "Can't create file": "Kan bestand niet aanmaken", + "Format is not supported": "Bestandsindeling wordt niet ondersteund", + "Conversion is not required": "Converteren is niet vereist", + "Failed to download converted file": "Kan geconverteerd bestand niet downloaden", + "ONLYOFFICE app is not configured. Please contact admin": "ONLYOFFICE app is niet geconfigureerd. Neem contact op met de admin", + "FileId is empty": "FileId is leeg", + "You do not have enough permissions to view the file": "U heeft niet genoeg rechten om het bestand te bekijken", + "Error occurred in the document service": "Er is een fout opgetreden in de documentservice", + "Not supported version": "Niet ondersteunde versie", + "ONLYOFFICE cannot be reached. Please contact admin": "ONLYOFFICE kan niet worden bereikt. Neem contact op met de admin", + "Loading, please wait.": "Laden, wacht alstublieft.", + "File created": "Bestand Aangemaakt", + "Open in ONLYOFFICE": "Openen in ONLYOFFICE", + "Convert with ONLYOFFICE": "Converteer met ONLYOFFICE", + "New document": "Nieuw Document", + "New spreadsheet": "Nieuwe spreadsheet", + "New presentation": "Nieuwe presentatien", + "Error when trying to connect": "Fout bij het verbinden", + "Settings have been successfully updated": "Instellingen zijn met succes bijgewerkt", + "Server can't read xml": "Server kan xml niet lezen", + "Bad Response. Errors: ": "Slechte Reactie. Fouten", + "Documentation": "Documentatie", + "ONLYOFFICE Docs Location specifies the address of the server with the document services installed. Please change the '<documentserver>' for the server address in the below line.": "ONLYOFFICE Docs Location geeft het adres op van de server waarop de documentdiensten geïnstalleerd zijn. Verander de '<documenterver>' voor het serveradres in de onderstaande regel.", + "ONLYOFFICE Docs address": "ONLYOFFICE Docs adres", + "Advanced server settings": "Geavanceerde serverinstellingen", + "ONLYOFFICE Docs address for internal requests from the server": "Adres van de ONLYOFFICE Docs voor interne verzoeken van de server", + "Server address for internal requests from ONLYOFFICE Docs": "Serveradres voor interne verzoeken van de ONLYOFFICE Docs", + "Secret key (leave blank to disable)": "Geheime sleutel (leeg laten om niet te te gebruiken)", + "Open file in the same tab": "Bestand in dezelfde tabblad openen", + "The default application for opening the format": "De standaardtoepassing voor het openen van het formaat", + "Open the file for editing (due to format restrictions, the data might be lost when saving to the formats from the list below)": "Open het bestand om het te bewerken (wegens formaatbeperkingen kunnen de gegevens verloren gaan bij het opslaan in de formaten van de onderstaande lijst)", + "View details": "Bekijk details", + "Save": "Opslaan", + "Mixed Active Content is not allowed. HTTPS address for ONLYOFFICE Docs is required.": "Gemende Actieve Inhoud is niet toegestaan. HTTPS-adres voor ONLYOFFICE Docs is vereist.", + "Restrict access to editors to following groups": "Beperk de toegang tot editors tot de volgende groepen", + "Server settings": "Serverinstellingen", + "Common settings": "Algemene instellingen", + "Editor customization settings": "Editor aanpassingsinstellingen", + "The customization section allows personalizing the editor interface": "Met de aanpassingssectie kunt u de interface van de editor personaliseren", + "Display Chat menu button": "Chat Menuknop weergeven", + "Display the header more compact": "De koptekst compacter weergeven", + "Display Feedback & Support menu button": "Menuknop Terugkoppeling & Ondersteuning weergeven", + "Display Help menu button": "Menuknop Help weergeven", + "Display monochrome toolbar header": "Toon de monochrome koptekst van de werkbalk", + "Save as": "Opslaan als", + "File saved": "Bestand opgeslagen", + "Insert image": "Afbeelding invoegen", + "Select recipients": "Kies ontvangers", + "Connect to demo ONLYOFFICE Docs server": "Verbinden met de demo ONLYOFFICE Docs server", + "This is a public test server, please do not use it for private sensitive data. The server will be available during a 30-day period.": "Dit is een openbare testserver, gelieve deze niet te gebruiken voor persoonlijke en vertrouwelijke gegevens. De server zal gedurende een periode van 30 dagen beschikbaar zijn.", + "The 30-day test period is over, you can no longer connect to demo ONLYOFFICE Docs server.": "De 30-dagen proefperiode is voorbij, u kunt niet langer verbinding maken met demo ONLYOFFICE Docs server.", + "You are using public demo ONLYOFFICE Docs server. Please do not store private sensitive data.": "U gebruikt de openbare demo ONLYOFFICE Docs server. Sla geen vertrouwelijke gegevens op.", + "Secure view enables you to secure documents by embedding a watermark": "Met de beveiligde weergave kunt u documenten beveiligen door een watermerk in te sluiten", + "Enable watermarking": "Watermerken inschakelen", + "Watermark text": "Tekst watermerken", + "DO NOT SHARE THIS": "NIET DELEN", + "Show watermark on tagged files": "Toon watermerk op getagde bestanden", + "Show watermark for users of groups": "Toon watermerk voor gebruikers van groepen", + "Supported placeholders": "Ondersteunde plaatsaanduidingen", + "Show watermark for all shares": "Watermerk voor al het delen", + "Show watermark for read only shares": "Watermerk voor alleen-lezen delen", + "Link shares": "Link delen", + "Show watermark for all link shares": "Toon watermerk voor alle link delen", + "Show watermark for download hidden shares": "Watermerk voor verborgen download delen", + "Show watermark for read only link shares": "Watermerk op alleen-lezen link aandelen", + "Show watermark on link shares with specific system tags": "Watermerk tonen op link aandelen met specifieke systeemtags", + "Select tag": "Tag kiezen", + "Select file to compare": "Kies het bestand dat u wilt vergelijken", + "Review mode for viewing": "Beoordelingsmodus voor bekijken", + "Markup": "Markup", + "Final": "Einde", + "Original": "Origineel", + "version": "versie", + "Disable certificate verification (insecure)": "Verificatie van certificaten uitschakelen (onveilig)", + "Keep intermediate versions when editing (forcesave)": "Bewaar tussentijdse versies bij bewerken (forcesave)", + "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Gebruik ONLYOFFICE om een voorbeeld van een document te genereren (dit neemt schijfruimte in beslag)", + "Keep metadata for each version once the document is edited (it will take up disk space)": "Bewaar metadata voor elke versie zodra het document bewerkt is (dit neemt schijfruimte in beslag)", + "Clear": "Wissen", + "All history successfully deleted": "Alle geschiedenis met succes gewist", + "Create": "Maak", + "Select template": "Kies een sjabloon", + "Invalid file provided": "Ongeldig bestand opgegeven", + "Empty": "Leeg", + "Error": "Fout", + "Add a new template": "Voeg een nieuw sjabloon toe", + "Template already exists": "Sjabloon bestaat al", + "Template must be in OOXML format": "Sjabloon moet in OOXML formaat zijn", + "Template successfully added": "Sjabloon met succes toegevoegd", + "Template successfully deleted": "Sjabloon met succes verwijderd", + "Common templates": "Algemene Sjablonen", + "Failed to delete template": "Sjabloon verwijderen mislukt", + "File has been converted. Its content might look different.": "Het bestand is geconverteerd. De inhoud kan er anders uitzien.", + "Download as": "Downloaden als", + "Download": "Downloaden", + "Origin format": "Oorsprong formaat", + "Failed to send notification": "Kennisgeving niet verzonden", + "Notification sent successfully": "Kennisgeving succesvol verzonden", + "%1\$s mentioned in the %2\$s: \"%3\$s\".": "%1\$s genoemd in de %2\$s: \"%3\$s\".", + "{notifier} mentioned in the {file}: \"%1\$s\".": "{notifier} genoemd in {file}: \"%1\$s\".", + "Choose a format to convert {fileName}": "Kies een formaat om {fileName} te converteren", + "New form template": "Nieuw formulier sjabloon", + "Blank": "Blanco", + "From text document": "Van tekstdocument", + "Create new Form template": "Nieuw Formulier sjabloon maken", + "Create form": "Formulier maken", + "Fill in form in ONLYOFFICE": "Formulier invullen in ONLYOFFICE", + "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Update ONLYOFFICE Docs naar versie 7.0 om online invulbare formulieren te kunnen gebruiken", + "Security": "Beveiliging", + "Anonymous": "Anoniem", + "Default editor theme": "Standaard editor thema", + "Light": "Licht", + "Classic Light": "Klassiek Licht", + "Dark": "Donker", + "Review": "Overzicht", + "Comment": "Opmerking", + "Form filling": "Formulier invullen", + "Custom filter": "Aangepast filter", + "group": "groep", + "Advanced": "Geavanceerd", + "Provide advanced document permissions using ONLYOFFICE Docs": "Geavanceerde documentrechten geven met ONLYOFFICE Docs" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/l10n/nl.json b/l10n/nl.json new file mode 100644 index 0000000..a5db918 --- /dev/null +++ b/l10n/nl.json @@ -0,0 +1,132 @@ +{ "translations": { + "Access denied" : "Toegang geweigerd", + "Invalid request" : "Ongeldig verzoek", + "Files not found" : "Bestanden niet gevonden", + "File not found" : "Bestand niet gevonden", + "Not permitted" : "Niet toegestaan", + "Download failed" : "Download mislukt", + "The required folder was not found" : "De vereiste map is niet gevonden", + "You don't have enough permission to create" : "U heeft geen voldoende aanmaak rechten", + "Template not found" : "Sjabloon niet gevonden", + "Can't create file" : "Kan bestand niet aanmaken", + "Format is not supported" : "Bestandsindeling wordt niet ondersteund", + "Conversion is not required" : "Converteren is niet vereist", + "Failed to download converted file" : "Kan geconverteerd bestand niet downloaden", + "ONLYOFFICE app is not configured. Please contact admin" : "ONLYOFFICE app is niet geconfigureerd. Neem contact op met de admin", + "FileId is empty" : "FileId is leeg", + "You do not have enough permissions to view the file" : "U heeft niet genoeg rechten om het bestand te bekijken", + "Error occurred in the document service" : "Er is een fout opgetreden in de documentservice", + "Not supported version" : "Niet ondersteunde versie", + "ONLYOFFICE cannot be reached. Please contact admin" : "ONLYOFFICE kan niet worden bereikt. Neem contact op met de admin", + "Loading, please wait." : "Laden, wacht alstublieft.", + "File created" : "Bestand Aangemaakt", + "Open in ONLYOFFICE" : "Openen in ONLYOFFICE", + "Convert with ONLYOFFICE" : "Converteer met ONLYOFFICE", + "New document" : "Nieuw Document", + "New spreadsheet" : "Nieuwe spreadsheet", + "New presentation" : "Nieuwe presentatie", + "Error when trying to connect" : "Fout bij het verbinden", + "Settings have been successfully updated" : "Instellingen zijn met succes bijgewerkt", + "Server can't read xml" : "Server kan xml niet lezen", + "Bad Response. Errors: " : "Slechte Reactie. Fouten", + "Documentation" : "Documentatie", + "ONLYOFFICE Docs Location specifies the address of the server with the document services installed. Please change the '<documentserver>' for the server address in the below line." : "ONLYOFFICE Docs Location geeft het adres op van de server waarop de documentdiensten geïnstalleerd zijn. Verander de '<documenterver>' voor het serveradres in de onderstaande regel.", + "ONLYOFFICE Docs address" : "ONLYOFFICE Docs adres", + "Advanced server settings" : "Geavanceerde serverinstellingen", + "ONLYOFFICE Docs address for internal requests from the server" : "Adres van de ONLYOFFICE Docs voor interne verzoeken van de server", + "Server address for internal requests from ONLYOFFICE Docs" : "Serveradres voor interne verzoeken van de ONLYOFFICE Docs", + "Secret key (leave blank to disable)" : "Geheime sleutel (leeg laten om niet te te gebruiken)", + "Open file in the same tab" : "Bestand in dezelfde tabblad openen", + "The default application for opening the format" : "De standaardtoepassing voor het openen van het formaat", + "Open the file for editing (due to format restrictions, the data might be lost when saving to the formats from the list below)" : "Open het bestand om het te bewerken (wegens formaatbeperkingen kunnen de gegevens verloren gaan bij het opslaan in de formaten van de onderstaande lijst)", + "View details" : "Bekijk details", + "Save" : "Opslaan", + "Mixed Active Content is not allowed. HTTPS address for ONLYOFFICE Docs is required." : "Gemende Actieve Inhoud is niet toegestaan. HTTPS-adres voor ONLYOFFICE Docs is vereist.", + "Restrict access to editors to following groups" : "Beperk de toegang tot editors tot de volgende groepen", + "Server settings" : "Serverinstellingen", + "Common settings" : "Algemene instellingen", + "Editor customization settings" : "Editor aanpassingsinstellingen", + "The customization section allows personalizing the editor interface" : "Met de aanpassingssectie kunt u de interface van de editor personaliseren", + "Display Chat menu button" : "Chat Menuknop weergeven", + "Display the header more compact" : "De koptekst compacter weergeven", + "Display Feedback & Support menu button" : "Menuknop Terugkoppeling & Ondersteuning weergeven", + "Display Help menu button" : "Menuknop Help weergeven", + "Display monochrome toolbar header" : "Toon de monochrome koptekst van de werkbalk", + "Save as" : "Opslaan als", + "File saved" : "Bestand opgeslagen", + "Insert image" : "Afbeelding invoegen", + "Select recipients" : "Kies ontvangers", + "Connect to demo ONLYOFFICE Docs server" : "Verbinden met de demo ONLYOFFICE Docs server", + "This is a public test server, please do not use it for private sensitive data. The server will be available during a 30-day period." : "Dit is een openbare testserver, gelieve deze niet te gebruiken voor persoonlijke en vertrouwelijke gegevens. De server zal gedurende een periode van 30 dagen beschikbaar zijn.", + "The 30-day test period is over, you can no longer connect to demo ONLYOFFICE Docs server." : "De 30-dagen proefperiode is voorbij, u kunt niet langer verbinding maken met demo ONLYOFFICE Docs server.", + "You are using public demo ONLYOFFICE Docs server. Please do not store private sensitive data." : "U gebruikt de openbare demo ONLYOFFICE Docs server. Sla geen vertrouwelijke gegevens op.", + "Secure view enables you to secure documents by embedding a watermark" : "Met de beveiligde weergave kunt u documenten beveiligen door een watermerk in te sluiten", + "Enable watermarking" : "Watermerken inschakelen", + "Watermark text" : "Tekst watermerken", + "DO NOT SHARE THIS" : "NIET DELEN", + "Show watermark on tagged files" : "Toon watermerk op getagde bestanden", + "Show watermark for users of groups" : "Toon watermerk voor gebruikers van groepen", + "Supported placeholders" : "Ondersteunde plaatsaanduidingen", + "Show watermark for all shares" : "Watermerk voor al het delen", + "Show watermark for read only shares" : "Watermerk voor alleen-lezen delen", + "Link shares" : "Link delen", + "Show watermark for all link shares" : "Toon watermerk voor alle link delen", + "Show watermark for download hidden shares" : "Watermerk voor verborgen download delen", + "Show watermark for read only link shares" : "Watermerk op alleen-lezen link aandelen", + "Show watermark on link shares with specific system tags" : "Watermerk tonen op link aandelen met specifieke systeemtags", + "Select tag" : "Tag kiezen", + "Select file to compare" : "Kies het bestand dat u wilt vergelijken", + "Review mode for viewing": "Beoordelingsmodus voor bekijken", + "Markup": "Markup", + "Final": "Einde", + "Original": "Origineel", + "version": "versie", + "Disable certificate verification (insecure)": "Verificatie van certificaten uitschakelen (onveilig)", + "Keep intermediate versions when editing (forcesave)": "Bewaar tussentijdse versies bij bewerken (forcesave)", + "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Gebruik ONLYOFFICE om een voorbeeld van een document te genereren (dit neemt schijfruimte in beslag)", + "Keep metadata for each version once the document is edited (it will take up disk space)": "Bewaar metadata voor elke versie zodra het document bewerkt is (dit neemt schijfruimte in beslag)", + "Clear": "Wissen", + "All history successfully deleted": "Alle geschiedenis met succes gewist", + "Create": "Maak", + "Select template" : "Kies een sjabloon", + "Invalid file provided" : "Ongeldig bestand opgegeven", + "Empty": "Leeg", + "Error" : "Fout", + "Add a new template": "Voeg een nieuw sjabloon toe", + "Template already exists": "Sjabloon bestaat al", + "Template must be in OOXML format": "Sjabloon moet in OOXML formaat zijn", + "Template successfully added": "Sjabloon met succes toegevoegd", + "Template successfully deleted": "Sjabloon met succes verwijderd", + "Common templates": "Algemene Sjablonen", + "Failed to delete template": "Sjabloon verwijderen mislukt", + "File has been converted. Its content might look different.": "Het bestand is geconverteerd. De inhoud kan er anders uitzien.", + "Download as": "Downloaden als", + "Download": "Downloaden", + "Origin format": "Oorsprong formaat", + "Failed to send notification": "Kennisgeving niet verzonden", + "Notification sent successfully": "Kennisgeving succesvol verzonden", + "%1$s mentioned in the %2$s: \"%3$s\".": "%1$s genoemd in de %2$s: \"%3$s\".", + "{notifier} mentioned in the {file}: \"%1$s\".": "{notifier} genoemd in {file}: \"%1$s\".", + "Choose a format to convert {fileName}": "Kies een formaat om {fileName} te converteren", + "New form template": "Nieuw formulier sjabloon", + "Blank": "Blanco", + "From text document": "Van tekstdocument", + "Create new Form template": "Nieuw Formulier sjabloon maken", + "Create form": "Formulier maken", + "Fill in form in ONLYOFFICE": "Formulier invullen in ONLYOFFICE", + "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Update ONLYOFFICE Docs naar versie 7.0 om online invulbare formulieren te kunnen gebruiken", + "Security": "Beveiliging", + "Anonymous": "Anoniem", + "Default editor theme": "Standaard editor thema", + "Light": "Licht", + "Classic Light": "Klassiek Licht", + "Dark": "Donker", + "Review": "Overzicht", + "Comment": "Opmerking", + "Form filling": "Formulier invullen", + "Custom filter": "Aangepast filter", + "group": "groep", + "Advanced": "Geavanceerd", + "Provide advanced document permissions using ONLYOFFICE Docs": "Geavanceerde documentrechten geven met ONLYOFFICE Docs" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file @@ -87,6 +87,7 @@ OC.L10N.register( "Keep intermediate versions when editing (forcesave)": "Zachowuj wersje pośrednie w trakcie edycji (zapisuj automatycznie)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Skorzystaj z ONLYOFFICE, aby wygenerować podgląd dokumentu (zajmie to miejsce na dysku)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Zachowaj metadane dla każdej wersji, gdy dokument jest edytowany (zajmie to miejsce na dysku)",
+ "Clear": "Wyczyść",
"All history successfully deleted": "Cała historia została pomyślnie usunięta",
"Create": "Utwórz",
"Select template" : "Wybierz szablon",
@@ -118,6 +119,7 @@ OC.L10N.register( "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Zaktualizuj ONLYOFFICE Docs do wersji 7.0, aby działały w formularzach do wypełniania online",
"Security": "Bezpieczeństwo",
"Anonymous": "Anonimowy",
+ "Default editor theme": "Domyślny motyw edytora",
"Light": "Jasny",
"Classic Light": "Klasyczny jasny",
"Dark": "Ciemny",
@@ -126,6 +128,7 @@ OC.L10N.register( "Form filling": "Wypełnianie formularza",
"Custom filter": "Niestandardowy filtr",
"group": "grupa",
- "Advanced": "Zaawansowane"
+ "Advanced": "Zaawansowane",
+ "Provide advanced document permissions using ONLYOFFICE Docs": "Udziel zaawansowanych uprawnień do edycji dokumentów w ONLYOFFICE Docs"
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
\ No newline at end of file diff --git a/l10n/pl.json b/l10n/pl.json index 2987f9f..1bd7603 100644 --- a/l10n/pl.json +++ b/l10n/pl.json @@ -85,6 +85,7 @@ "Keep intermediate versions when editing (forcesave)": "Zachowuj wersje pośrednie w trakcie edycji (zapisuj automatycznie)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Skorzystaj z ONLYOFFICE, aby wygenerować podgląd dokumentu (zajmie to miejsce na dysku)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Zachowaj metadane dla każdej wersji, gdy dokument jest edytowany (zajmie to miejsce na dysku)",
+ "Clear": "Wyczyść",
"All history successfully deleted": "Cała historia została pomyślnie usunięta",
"Create": "Utwórz",
"Select template" : "Wybierz szablon",
@@ -116,6 +117,7 @@ "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Zaktualizuj ONLYOFFICE Docs do wersji 7.0, aby działały w formularzach do wypełniania online",
"Security": "Bezpieczeństwo",
"Anonymous": "Anonimowy",
+ "Default editor theme": "Domyślny motyw edytora",
"Light": "Jasny",
"Classic Light": "Klasyczny jasny",
"Dark": "Ciemny",
@@ -124,6 +126,7 @@ "Form filling": "Wypełnianie formularza",
"Custom filter": "Niestandardowy filtr",
"group": "grupa",
- "Advanced": "Zaawansowane"
+ "Advanced": "Zaawansowane",
+ "Provide advanced document permissions using ONLYOFFICE Docs": "Udziel zaawansowanych uprawnień do edycji dokumentów w ONLYOFFICE Docs"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
}
\ No newline at end of file diff --git a/l10n/pt_BR.js b/l10n/pt_BR.js index f77060e..aef07f8 100644 --- a/l10n/pt_BR.js +++ b/l10n/pt_BR.js @@ -86,7 +86,8 @@ OC.L10N.register( "Disable certificate verification (insecure)": "Desativar a verificação do certificado (inseguro)", "Keep intermediate versions when editing (forcesave)": "Manter versões intermediárias ao editar (forçar salvar)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Usar ONLYOFFICE para gerar uma visualização do documento (ocupará espaço em disco)", - "Keep metadata for each version once the document is edited (it will take up disk space)": "Manter os metadados para cada versão após a edição (ocupará espaço em disco) (ocupará espaço em disco)", + "Keep metadata for each version once the document is edited (it will take up disk space)": "Manter os metadados para cada versão após a edição (ocupará espaço em disco) (ocupará espaço em disco)", + "Clear": "Limpar", "All history successfully deleted": "O histórico foi excluído com sucesso", "Create": "Criar", "Select template" : "Selecionar um modelo", @@ -101,8 +102,8 @@ OC.L10N.register( "Common templates": "Modelos comuns", "Failed to delete template": "Falha ao excluir modelo", "File has been converted. Its content might look different.": "O arquivo foi convertido. Seu conteúdo pode ser diferente.", - "Download as": "Baixar", - "Download": "Baixar como", + "Download as": "Baixar como", + "Download": "Baixar", "Origin format": "Formato de origem", "Failed to send notification": "Falha ao enviar notificação", "Notification sent successfully": "Notificação enviada com sucesso", @@ -118,6 +119,7 @@ OC.L10N.register( "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Atualize o ONLYOFFICE Docs para a versão 7.0 para trabalhar em formulários preenchíveis online", "Security": "Segurança", "Anonymous": "Anônimo", + "Default editor theme": "Tema do editor padrão", "Light": "Claro", "Classic Light": "Clássico claro", "Dark": "Escuro", @@ -126,6 +128,7 @@ OC.L10N.register( "Form filling": "Preenchimento de formularios", "Custom filter": "Filtro personalizado", "group": "grupo", - "Advanced": "Avançado" + "Advanced": "Avançado", + "Provide advanced document permissions using ONLYOFFICE Docs": "Forneça permissões avançadas de documentos usando o ONLYOFFICE Docs" }, "nplurals=2; plural=(n > 1);"); diff --git a/l10n/pt_BR.json b/l10n/pt_BR.json index e1cdd69..a174bbe 100644 --- a/l10n/pt_BR.json +++ b/l10n/pt_BR.json @@ -84,7 +84,8 @@ "Disable certificate verification (insecure)": "Desativar a verificação do certificado (inseguro)", "Keep intermediate versions when editing (forcesave)": "Manter versões intermediárias ao editar (forçar salvar)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Usar ONLYOFFICE para gerar uma visualização do documento (ocupará espaço em disco)", - "Keep metadata for each version once the document is edited (it will take up disk space)": "Manter os metadados para cada versão após a edição (ocupará espaço em disco) (ocupará espaço em disco)", + "Keep metadata for each version once the document is edited (it will take up disk space)": "Manter os metadados para cada versão após a edição (ocupará espaço em disco) (ocupará espaço em disco)", + "Clear": "Limpar", "All history successfully deleted": "O histórico foi excluído com sucesso", "Create": "Criar", "Select template" : "Selecionar um modelo", @@ -99,8 +100,8 @@ "Common templates": "Modelos comuns", "Failed to delete template": "Falha ao excluir modelo", "File has been converted. Its content might look different.": "O arquivo foi convertido. Seu conteúdo pode ser diferente.", - "Download as": "Baixar", - "Download": "Baixar como", + "Download as": "Baixar como", + "Download": "Baixar", "Origin format": "Formato de origem", "Failed to send notification": "Falha ao enviar notificação", "Notification sent successfully": "Notificação enviada com sucesso", @@ -116,6 +117,7 @@ "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Atualize o ONLYOFFICE Docs para a versão 7.0 para trabalhar em formulários preenchíveis online", "Security": "Segurança", "Anonymous": "Anônimo", + "Default editor theme": "Tema do editor padrão", "Light": "Claro", "Classic Light": "Clássico claro", "Dark": "Escuro", @@ -124,6 +126,7 @@ "Form filling": "Preenchimento de formularios", "Custom filter": "Filtro personalizado", "group": "grupo", - "Advanced": "Avançado" + "Advanced": "Avançado", + "Provide advanced document permissions using ONLYOFFICE Docs": "Forneça permissões avançadas de documentos usando o ONLYOFFICE Docs" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file @@ -87,6 +87,7 @@ OC.L10N.register( "Keep intermediate versions when editing (forcesave)": "Хранить промежуточные версии при редактировании (принудительное сохранение)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Использовать ONLYOFFICE для создания превью документа (займет место на диске)", "Keep metadata for each version once the document is edited (it will take up disk space)": "Сохранять метаданные для каждой версии после редактирования (займет место на диске)", + "Clear": "Очистить", "All history successfully deleted": "История успешно удалена", "Create": "Создать", "Select template" : "Выбрать шаблон", @@ -117,6 +118,7 @@ OC.L10N.register( "Fill in form in ONLYOFFICE": "Заполнить форму в ONLYOFFICE", "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Обновите сервер ONLYOFFICE Docs до версии 7.0 для работы с формами онлайн", "Security": "Безопасность", + "Run document macros": "Запускать макросы документа", "Anonymous": "Аноним", "Default editor theme": "Тема редактора по умолчанию", "Light": "Светлая", diff --git a/l10n/ru.json b/l10n/ru.json index e4bc0b5..fe82be6 100644 --- a/l10n/ru.json +++ b/l10n/ru.json @@ -85,6 +85,7 @@ "Keep intermediate versions when editing (forcesave)": "Хранить промежуточные версии при редактировании (принудительное сохранение)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Использовать ONLYOFFICE для создания превью документа (займет место на диске)", "Keep metadata for each version once the document is edited (it will take up disk space)": "Сохранять метаданные для каждой версии после редактирования (займет место на диске)", + "Clear": "Очистить", "All history successfully deleted": "История успешно удалена", "Create": "Создать", "Select template" : "Выбрать шаблон", @@ -115,6 +116,7 @@ "Fill in form in ONLYOFFICE": "Заполнить форму в ONLYOFFICE", "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Обновите сервер ONLYOFFICE Docs до версии 7.0 для работы с формами онлайн", "Security": "Безопасность", + "Run document macros": "Запускать макросы документа", "Anonymous": "Аноним", "Default editor theme": "Тема редактора по умолчанию", "Light": "Светлая", @@ -86,7 +86,8 @@ OC.L10N.register( "Disable certificate verification (insecure)": "Använd inte certifikatsverifiering (osäkert)", "Keep intermediate versions when editing (forcesave)": "Behåll mellanliggande versioner vid redigering (tvinga att spara)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Använd ONLYOFFICE för att generera en förhandsgranskning av dokument (detta använder diskutrymme)", - "Keep metadata for each version once the document is edited (it will take up disk space)": "Behåll metadata för varje version när dokumentet redigeras (detta använder diskutrymme) ", + "Keep metadata for each version once the document is edited (it will take up disk space)": "Behåll metadata för varje version när dokumentet redigeras (detta använder diskutrymme)", + "Clear": "Rensa", "All history successfully deleted": "All historik har tagits bort", "Create": "Skapa", "Select template" : "Välj mall", diff --git a/l10n/sv.json b/l10n/sv.json index ebce00d..d7820cc 100644 --- a/l10n/sv.json +++ b/l10n/sv.json @@ -84,7 +84,8 @@ "Disable certificate verification (insecure)": "Använd inte certifikatsverifiering (osäkert)", "Keep intermediate versions when editing (forcesave)": "Behåll mellanliggande versioner vid redigering (tvinga att spara)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Använd ONLYOFFICE för att generera en förhandsgranskning av dokument (detta använder diskutrymme)", - "Keep metadata for each version once the document is edited (it will take up disk space)": "Behåll metadata för varje version när dokumentet redigeras (detta använder diskutrymme) ", + "Keep metadata for each version once the document is edited (it will take up disk space)": "Behåll metadata för varje version när dokumentet redigeras (detta använder diskutrymme)", + "Clear": "Rensa", "All history successfully deleted": "All historik har tagits bort", "Create": "Skapa", "Select template" : "Välj mall", diff --git a/l10n/zh_CN.js b/l10n/zh_CN.js index 46cdefd..565cda0 100644 --- a/l10n/zh_CN.js +++ b/l10n/zh_CN.js @@ -87,6 +87,7 @@ OC.L10N.register( "Keep intermediate versions when editing (forcesave)": "编辑时保留中间版本 (强制保存)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "使用ONLYOFFICE生成文档预览(将占用磁盘空间)", "Keep metadata for each version once the document is edited (it will take up disk space)": "编辑文档后保留每个版本的元数据(它将占用磁盘空间)", + "Clear": "清除", "All history successfully deleted": "所有历史记录成功删除", "Create": "创建", "Select template" : "选择模板", diff --git a/l10n/zh_CN.json b/l10n/zh_CN.json index 0c8dfbc..1ebc255 100644 --- a/l10n/zh_CN.json +++ b/l10n/zh_CN.json @@ -85,6 +85,7 @@ "Keep intermediate versions when editing (forcesave)": "编辑时保留中间版本 (强制保存)", "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "使用ONLYOFFICE生成文档预览(将占用磁盘空间)", "Keep metadata for each version once the document is edited (it will take up disk space)": "编辑文档后保留每个版本的元数据(它将占用磁盘空间)", + "Clear": "清除", "All history successfully deleted": "所有历史记录成功删除", "Create": "创建", "Select template" : "选择模板", diff --git a/lib/Migration/Version070400Date20220929111111.php b/lib/Migration/Version070400Date20220929111111.php new file mode 100644 index 0000000..d42b3db --- /dev/null +++ b/lib/Migration/Version070400Date20220929111111.php @@ -0,0 +1,111 @@ +<?php + +declare(strict_types=1); + +namespace OCA\Onlyoffice\Migration; + +use Closure; +use OCP\DB\ISchemaWrapper; +use OCP\Migration\IOutput; +use OCP\Migration\SimpleMigrationStep; + +/** + * Auto-generated migration step: Please modify to your needs! + */ +class Version070400Date20220929111111 extends SimpleMigrationStep { + + /** + * @param IOutput $output + * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper` + * @param array $options + */ + public function preSchemaChange(IOutput $output, Closure $schemaClosure, array $options): void { + } + + /** + * @param IOutput $output + * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper` + * @param array $options + * @return null|ISchemaWrapper + */ + public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper { + /** @var ISchemaWrapper $schema */ + $schema = $schemaClosure(); + + if (!$schema->hasTable('onlyoffice_filekey')) { + $table = $schema->createTable('onlyoffice_filekey'); + $table->addColumn('id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + ]); + $table->addColumn('file_id', 'bigint', [ + 'notnull' => false, + 'default' => '-1', + ]); + $table->addColumn('key', 'string', [ + 'notnull' => true, + 'length' => 128, + ]); + $table->addColumn('lock', 'integer', [ + 'notnull' => true, + 'default' => 0, + ]); + $table->addColumn('fs', 'integer', [ + 'notnull' => true, + 'default' => 0, + ]); + $table->setPrimaryKey(['id']); + $table->addUniqueIndex(['file_id'], 'onlyoffice_file_id_index'); + } + + if (!$schema->hasTable('onlyoffice_permissions')) { + $table = $schema->createTable('onlyoffice_permissions'); + $table->addColumn('id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + ]); + $table->addColumn('share_id', 'bigint', [ + 'notnull' => true, + 'default' => '-1', + ]); + $table->addColumn('permissions', 'integer', [ + 'notnull' => true, + 'default' => 0, + ]); + $table->setPrimaryKey(['id']); + $table->addUniqueIndex(['share_id'], 'onlyoffice_share_id_index'); + } + + if (!$schema->hasTable('onlyoffice_instance')) { + $table = $schema->createTable('onlyoffice_instance'); + $table->addColumn('id', 'integer', [ + 'autoincrement' => true, + 'notnull' => true, + ]); + $table->addColumn('remote', 'string', [ + 'notnull' => true, + 'length' => 128, + ]); + $table->addColumn('expire', 'bigint', [ + 'notnull' => true, + 'default' => 0, + ]); + $table->addColumn('status', 'integer', [ + 'notnull' => true, + 'default' => 0, + ]); + $table->setPrimaryKey(['id']); + $table->addUniqueIndex(['remote'], 'onlyoffice_remote_index'); + } + + return $schema; + } + + /** + * @param IOutput $output + * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper` + * @param array $options + */ + public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options): void { + } +} diff --git a/lib/appconfig.php b/lib/appconfig.php index b3d0af4..e73b4ee 100644 --- a/lib/appconfig.php +++ b/lib/appconfig.php @@ -691,7 +691,7 @@ class AppConfig { * @return bool */ public function GetPreview() { - return $this->config->getAppValue($this->appName, $this->_preview, "false") === "true"; + return $this->config->getAppValue($this->appName, $this->_preview, "true") === "true"; } /** diff --git a/lib/extrapermissions.php b/lib/extrapermissions.php index 26a7d33..66d2e83 100644 --- a/lib/extrapermissions.php +++ b/lib/extrapermissions.php @@ -383,9 +383,11 @@ class ExtraPermissions { } $node = $share->getNode(); - $pathinfo = pathinfo($node->getName()); - $extension = $pathinfo["extension"]; - $format = $this->config->FormatsSetting()[$extension]; + $ext = strtolower(pathinfo($node->getName(), PATHINFO_EXTENSION)); + $format = !empty($ext) && array_key_exists($ext, $this->config->FormatsSetting()) ? $this->config->FormatsSetting()[$ext] : null; + if (!isset($format)) { + return [$availableExtra, $defaultExtra]; + } if (($share->getPermissions() & Constants::PERMISSION_UPDATE) === Constants::PERMISSION_UPDATE) { if (isset($format["modifyFilter"]) && $format["modifyFilter"]) { diff --git a/lib/fileutility.php b/lib/fileutility.php index 2d2a65f..cc50a45 100644 --- a/lib/fileutility.php +++ b/lib/fileutility.php @@ -27,10 +27,9 @@ use OCP\ILogger; use OCP\ISession; use OCP\Share\IManager; -use OCA\Files_Sharing\External\Storage as SharingExternalStorage; - use OCA\Onlyoffice\AppConfig; use OCA\Onlyoffice\KeyManager; +use OCA\Onlyoffice\RemoteInstance; /** * File utility @@ -221,10 +220,10 @@ class FileUtility { $fileId = $file->getId(); if ($origin - && $file->getStorage()->instanceOfStorage(SharingExternalStorage::class)) { + && RemoteInstance::isRemoteFile($file)) { try { - $key = $this->getFederatedKey($file); + $key = RemoteInstance::getRemoteKey($file); if (!empty($key)) { return $key; @@ -263,41 +262,6 @@ class FileUtility { } /** - * Generate unique document identifier in federated share - * - * @param File $file - file - * - * @return string - */ - private function getFederatedKey($file) { - $remote = rtrim($file->getStorage()->getRemote(), "/") . "/"; - $shareToken = $file->getStorage()->getToken(); - $internalPath = $file->getInternalPath(); - - $httpClientService = \OC::$server->getHTTPClientService(); - $client = $httpClientService->newClient(); - $response = $client->post($remote . "ocs/v2.php/apps/" . $this->appName . "/api/v1/key?format=json", [ - "timeout" => 5, - "body" => [ - "shareToken" => $shareToken, - "path" => $internalPath - ] - ]); - $body = \json_decode($response->getBody(), true); - - $data = $body["ocs"]["data"]; - if (!empty($data["error"])) { - $this->logger->error("Error federated key " . $data["error"], ["app" => $this->appName]); - return null; - } - - $key = $data["key"]; - $this->logger->debug("Federated key: $key", ["app" => $this->appName]); - - return $key; - } - - /** * Generate unique file version key * * @param OCA\Files_Versions\Versions\IVersion $version - file version diff --git a/lib/keymanager.php b/lib/keymanager.php index f86f949..bdde78c 100644 --- a/lib/keymanager.php +++ b/lib/keymanager.php @@ -19,8 +19,6 @@ namespace OCA\Onlyoffice; -use OCP\Files\File; - /** * Key manager * @@ -29,11 +27,6 @@ use OCP\Files\File; class KeyManager { /** - * App name - */ - private const App_Name = "onlyoffice"; - - /** * Table name */ private const TableName_Key = "onlyoffice_filekey"; @@ -153,56 +146,4 @@ class KeyManager { return $fs === "1"; } - - /** - * Change lock status in the federated share - * - * @param File $file - file - * @param bool $lock - status - * @param bool $fs - status - * - * @return bool - */ - public static function lockFederatedKey($file, $lock, $fs) { - $logger = \OC::$server->getLogger(); - $action = $lock ? "lock" : "unlock"; - - $remote = rtrim($file->getStorage()->getRemote(), "/") . "/"; - $shareToken = $file->getStorage()->getToken(); - $internalPath = $file->getInternalPath(); - - $httpClientService = \OC::$server->getHTTPClientService(); - $client = $httpClientService->newClient(); - $data = [ - "timeout" => 5, - "body" => [ - "shareToken" => $shareToken, - "path" => $internalPath, - "lock" => $lock - ] - ]; - if (!empty($fs)) { - $data["body"]["fs"] = $fs; - } - - try { - $response = $client->post($remote . "ocs/v2.php/apps/" . self::App_Name . "/api/v1/keylock?format=json", $data); - $body = \json_decode($response->getBody(), true); - - $data = $body["ocs"]["data"]; - - if (empty($data)) { - $logger->debug("Federated request " . $action . " for " . $file->getFileInfo()->getId() . " is successful", ["app" => self::App_Name]); - return true; - } - - if (!empty($data["error"])) { - $logger->error("Error " . $action . " federated key for " . $file->getFileInfo()->getId() . ": " . $data["error"], ["app" => self::App_Name]); - return false; - } - } catch (\Exception $e) { - $logger->logException($e, ["message" => "Failed to request federated " . $action . " for " . $file->getFileInfo()->getId(), "app" => self::App_Name]); - return false; - } - } } diff --git a/lib/remoteinstance.php b/lib/remoteinstance.php new file mode 100644 index 0000000..000de44 --- /dev/null +++ b/lib/remoteinstance.php @@ -0,0 +1,272 @@ +<?php +/** + * + * (c) Copyright Ascensio System SIA 2021 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +namespace OCA\Onlyoffice; + +use OCP\Files\File; + +use OCA\Files_Sharing\External\Storage as SharingExternalStorage; + +/** + * Remote instance manager + * + * @package OCA\Onlyoffice + */ +class RemoteInstance { + + /** + * App name + */ + private const App_Name = "onlyoffice"; + + /** + * Table name + */ + private const TableName_Key = "onlyoffice_instance"; + + /** + * Time to live of remote instance (12 hours) + */ + private static $ttl = 60 * 60 * 12; + + /** + * Health remote list + */ + private static $healthRemote = []; + + /** + * Get remote instance + * + * @param string $remote - remote instance + * + * @return array + */ + private static function get($remote) { + $connection = \OC::$server->getDatabaseConnection(); + $select = $connection->prepare(" + SELECT remote, expire, status + FROM `*PREFIX*" . self::TableName_Key . "` + WHERE `remote` = ? + "); + $result = $select->execute([$remote]); + + $dbremote = $result ? $select->fetch() : []; + + return $dbremote; + } + + /** + * Store remote instance + * + * @param string $remote - remote instance + * @param bool $status - remote status + * + * @return bool + */ + private static function set($remote, $status) { + $connection = \OC::$server->getDatabaseConnection(); + $insert = $connection->prepare(" + INSERT INTO `*PREFIX*" . self::TableName_Key . "` + (`remote`, `status`, `expire`) + VALUES (?, ?, ?) + "); + return (bool)$insert->execute([$remote, $status === true ? 1 : 0, time()]); + } + + /** + * Update remote instance + * + * @param string $remote - remote instance + * @param bool $status - remote status + * + * @return bool + */ + private static function update($remote, $status) { + $connection = \OC::$server->getDatabaseConnection(); + $update = $connection->prepare(" + UPDATE `*PREFIX*" . self::TableName_Key . "` + SET status = ?, expire = ? + WHERE remote = ? + "); + return (bool)$update->execute([$status === true ? 1 : 0, time(), $remote]); + } + + /** + * Health check remote instance + * + * @param string $remote - remote instance + * + * @return bool + */ + public static function healthCheck($remote) { + $logger = \OC::$server->getLogger(); + $remote = rtrim($remote, "/") . "/"; + + if (array_key_exists($remote, self::$healthRemote)) { + $logger->debug("Remote instance " . $remote . " from local cache", ["app" => self::App_Name]); + return self::$healthRemote[$remote]; + } + + $dbremote = self::get($remote); + if (!empty($dbremote) && $dbremote["expire"] + self::$ttl > time()) { + $logger->debug("Remote instance " . $remote . " from database status " . $dbremote["status"], ["app" => self::App_Name]); + self::$healthRemote[$remote] = $dbremote["status"]; + return self::$healthRemote[$remote]; + } + + $httpClientService = \OC::$server->getHTTPClientService(); + $client = $httpClientService->newClient(); + + $status = false; + try { + $response = $client->get($remote . "ocs/v2.php/apps/" . self::App_Name . "/api/v1/healthcheck?format=json"); + $body = json_decode($response->getBody(), true); + + $data = $body["ocs"]["data"]; + + if (isset($data["alive"])) { + $status = $data["alive"] === true; + } + + } catch (\Exception $e) { + $logger->logException($e, ["message" => "Failed to request federated health check for" . $remote, "app" => self::App_Name]); + } + + if (empty($dbremote)) { + self::set($remote, $status); + } else { + self::update($remote, $status); + } + + $logger->debug("Remote instance " . $remote . " was stored to database status " . $dbremote["status"], ["app" => self::App_Name]); + + self::$healthRemote[$remote] = $status; + + return self::$healthRemote[$remote]; + } + + /** + * Generate unique document identifier in federated share + * + * @param File $file - file + * + * @return string + */ + public static function getRemoteKey($file) { + $logger = \OC::$server->getLogger(); + + $remote = rtrim($file->getStorage()->getRemote(), "/") . "/"; + $shareToken = $file->getStorage()->getToken(); + $internalPath = $file->getInternalPath(); + + $httpClientService = \OC::$server->getHTTPClientService(); + $client = $httpClientService->newClient(); + $response = $client->post($remote . "ocs/v2.php/apps/" . self::App_Name . "/api/v1/key?format=json", [ + "timeout" => 5, + "body" => [ + "shareToken" => $shareToken, + "path" => $internalPath + ] + ]); + $body = \json_decode($response->getBody(), true); + + $data = $body["ocs"]["data"]; + if (!empty($data["error"])) { + $logger->error("Error federated key " . $data["error"], ["app" => self::App_Name]); + return null; + } + + $key = $data["key"]; + $logger->debug("Federated key: $key", ["app" => self::App_Name]); + + return $key; + } + + /** + * Change lock status in the federated share + * + * @param File $file - file + * @param bool $lock - status + * @param bool $fs - status + * + * @return bool + */ + public static function lockRemoteKey($file, $lock, $fs) { + $logger = \OC::$server->getLogger(); + $action = $lock ? "lock" : "unlock"; + + $remote = rtrim($file->getStorage()->getRemote(), "/") . "/"; + $shareToken = $file->getStorage()->getToken(); + $internalPath = $file->getInternalPath(); + + $httpClientService = \OC::$server->getHTTPClientService(); + $client = $httpClientService->newClient(); + $data = [ + "timeout" => 5, + "body" => [ + "shareToken" => $shareToken, + "path" => $internalPath, + "lock" => $lock + ] + ]; + if (!empty($fs)) { + $data["body"]["fs"] = $fs; + } + + try { + $response = $client->post($remote . "ocs/v2.php/apps/" . self::App_Name . "/api/v1/keylock?format=json", $data); + $body = \json_decode($response->getBody(), true); + + $data = $body["ocs"]["data"]; + + if (empty($data)) { + $logger->debug("Federated request " . $action . " for " . $file->getFileInfo()->getId() . " is successful", ["app" => self::App_Name]); + return true; + } + + if (!empty($data["error"])) { + $logger->error("Error " . $action . " federated key for " . $file->getFileInfo()->getId() . ": " . $data["error"], ["app" => self::App_Name]); + return false; + } + } catch (\Exception $e) { + $logger->logException($e, ["message" => "Failed to request federated " . $action . " for " . $file->getFileInfo()->getId(), "app" => self::App_Name]); + return false; + } + } + + /** + * Check of federated capable + * + * @param File $file - file + * + * @return bool + */ + public static function isRemoteFile($file) { + $storage = $file->getStorage(); + + $alive = false; + $isFederated = $storage->instanceOfStorage(SharingExternalStorage::class); + if (!$isFederated) { + return false; + } + + $alive = RemoteInstance::healthCheck($storage->getRemote()); + return $alive; + } +}
\ No newline at end of file diff --git a/screenshots/icon.png b/screenshots/icon.png Binary files differindex 03bc00a..b8d5fd3 100644 --- a/screenshots/icon.png +++ b/screenshots/icon.png diff --git a/screenshots/main.png b/screenshots/main.png Binary files differindex 504e16e..ab9e216 100644 --- a/screenshots/main.png +++ b/screenshots/main.png diff --git a/screenshots/main_small.png b/screenshots/main_small.png Binary files differindex 5294be1..4842e14 100644 --- a/screenshots/main_small.png +++ b/screenshots/main_small.png diff --git a/screenshots/new.png b/screenshots/new.png Binary files differindex fcec2f6..5f2d722 100644 --- a/screenshots/new.png +++ b/screenshots/new.png diff --git a/screenshots/open.png b/screenshots/open.png Binary files differindex 8fabfc0..d32fe31 100644 --- a/screenshots/open.png +++ b/screenshots/open.png diff --git a/screenshots/open_form.png b/screenshots/open_form.png Binary files differnew file mode 100644 index 0000000..b5eb38c --- /dev/null +++ b/screenshots/open_form.png diff --git a/screenshots/settings.png b/screenshots/settings.png Binary files differindex 8d380ce..2c63881 100644 --- a/screenshots/settings.png +++ b/screenshots/settings.png |