+
+
+
+
\ No newline at end of file
diff --git a/src/onlyoffice/plone/browser/templates/download-as.pt b/src/onlyoffice/plone/browser/templates/download-as.pt
new file mode 100644
index 0000000..c982a1c
--- /dev/null
+++ b/src/onlyoffice/plone/browser/templates/download-as.pt
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
Download as
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/onlyoffice/connector/browser/templates/error.pt b/src/onlyoffice/plone/browser/templates/error.pt
similarity index 92%
rename from src/onlyoffice/connector/browser/templates/error.pt
rename to src/onlyoffice/plone/browser/templates/error.pt
index c00d5b9..94634d6 100644
--- a/src/onlyoffice/connector/browser/templates/error.pt
+++ b/src/onlyoffice/plone/browser/templates/error.pt
@@ -4,11 +4,11 @@
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
lang="en"
metal:use-macro="here/main_template/macros/master"
- i18n:domain="onlyoffice.connector">
+ i18n:domain="onlyoffice.plone">
diff --git a/src/onlyoffice/connector/core/__init__.py b/src/onlyoffice/plone/core/__init__.py
similarity index 100%
rename from src/onlyoffice/connector/core/__init__.py
rename to src/onlyoffice/plone/core/__init__.py
diff --git a/src/onlyoffice/connector/core/config.py b/src/onlyoffice/plone/core/config.py
similarity index 52%
rename from src/onlyoffice/connector/core/config.py
rename to src/onlyoffice/plone/core/config.py
index f5d3c38..635215c 100644
--- a/src/onlyoffice/connector/core/config.py
+++ b/src/onlyoffice/plone/core/config.py
@@ -1,5 +1,5 @@
#
-# (c) Copyright Ascensio System SIA 2021
+# (c) Copyright Ascensio System SIA 2022
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -16,8 +16,18 @@
class Config():
docUrl = None
+ ploneUrl = None
+ docInnerUrl = None
jwtSecret = None
+ demoDocUrl = "https://onlinedocs.onlyoffice.com/"
+ demoHeader = "AuthorizationJWT"
+ demoJwtSecret = "sn2puSUF7muF5Jas"
+ demoTrial = 30
+
def __init__(self, registry):
- self.docUrl = registry.get('onlyoffice.connector.docUrl')
- self.jwtSecret = registry.get('onlyoffice.connector.jwtSecret')
\ No newline at end of file
+ self.docUrl = registry.get('onlyoffice.plone.docUrl')
+ self.ploneUrl = registry.get('onlyoffice.plone.ploneUrl')
+ self.docInnerUrl = registry.get('onlyoffice.plone.docInnerUrl')
+ self.jwtSecret = registry.get('onlyoffice.plone.jwtSecret')
+ self.demoEnabled = registry.get('onlyoffice.plone.demoEnabled')
diff --git a/src/onlyoffice/plone/core/conversionUtils.py b/src/onlyoffice/plone/core/conversionUtils.py
new file mode 100644
index 0000000..1e90067
--- /dev/null
+++ b/src/onlyoffice/plone/core/conversionUtils.py
@@ -0,0 +1,138 @@
+#
+# (c) Copyright Ascensio System SIA 2022
+#
+# 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.
+#
+
+from onlyoffice.plone.core import utils
+from onlyoffice.plone.core import formatUtils
+from onlyoffice.plone.interfaces import logger
+from onlyoffice.plone.interfaces import _
+
+import requests
+import json
+import os
+
+def convert(
+ key, url, fileType, outputType, title = None, region = None,
+ asyncType = False, docUrl = None, jwtEnabled = None,
+ jwtSecret = None, jwtHeader = None
+ ):
+
+ if docUrl == None:
+ docUrl = utils.getInnerDocUrl()
+ if jwtEnabled == None:
+ jwtEnabled = utils.isJwtEnabled()
+ if jwtSecret == None:
+ jwtSecret = utils.getJwtSecret()
+ if jwtHeader == None:
+ jwtHeader = utils.getJwtHeader()
+
+ bodyJson = {
+ "key": key,
+ "url": url,
+ "filetype": fileType,
+ "outputtype": outputType,
+ "title": title,
+ "region": region,
+ "async": asyncType
+ }
+
+ headers = {
+ "Content-Type" : "application/json",
+ "Accept": "application/json",
+ }
+
+ if jwtEnabled:
+ payload = { "payload": bodyJson }
+
+ headerToken = utils.createSecurityToken(payload, jwtSecret)
+ headers[jwtHeader] = "Bearer " + headerToken
+
+ token = utils.createSecurityToken(bodyJson, jwtSecret)
+ bodyJson["token"] = token
+
+ data = {}
+ error = None
+
+ try:
+ response = requests.post(
+ os.path.join(docUrl, "ConvertService.ashx"),
+ data = json.dumps(bodyJson),
+ headers = headers
+ )
+
+ if response.status_code == 200:
+ response_json = response.json()
+
+ if "error" in response_json:
+ error = {
+ "type": 1,
+ "message": getConversionErrorMessage(response_json.get("error"))
+ }
+ else:
+ data = response_json
+
+ else:
+ logger.debug("ConvertService returned status: " + response.status_code)
+ error = {
+ "type": 2,
+ "message": _("Document conversion service returned status ${status_code}", mapping = {
+ "status_code": response.status_code
+ })
+ }
+
+ except:
+ logger.debug("ConvertService cannot be reached")
+ error = {
+ "type": 2,
+ "message": _('Document conversion service cannot be reached')
+ }
+
+ return data, error
+
+def getConversionErrorMessage(errorCode):
+ errorDictionary = {
+ -1: _("Unknown error"),
+ -2: _("Conversion timeout error"),
+ -3: _("Conversion error"),
+ -4: _("Error while downloading the document file to be converted"),
+ -5: _("Incorrect password"),
+ -6: _("Error while accessing the conversion result database"),
+ -7: _("Input error"),
+ -8: _("Invalid token")
+ }
+
+ try:
+ return errorDictionary[errorCode]
+ except:
+ return _("Undefined error code")
+
+def getTargetExt(ext):
+ for format in formatUtils.getSupportedFormats():
+ if format.name == ext:
+ if format.type == "word":
+ if "docx" in format.convertTo: return "docx"
+ if format.type == "cell":
+ if "xlsx" in format.convertTo: return "xlsx"
+ if format.type == "slide":
+ if "pptx" in format.convertTo: return "pptx"
+
+ return None
+
+def getConvertToExtArray(ext):
+ for format in formatUtils.getSupportedFormats():
+ if format.name == ext:
+ return format.convertTo
+
+ return None
\ No newline at end of file
diff --git a/src/onlyoffice/plone/core/featureUtils.py b/src/onlyoffice/plone/core/featureUtils.py
new file mode 100644
index 0000000..79d1b2b
--- /dev/null
+++ b/src/onlyoffice/plone/core/featureUtils.py
@@ -0,0 +1,39 @@
+#
+# (c) Copyright Ascensio System SIA 2022
+#
+# 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.
+#
+
+from Products.CMFCore.utils import getToolByName
+from zope.i18n import translate
+from onlyoffice.plone.interfaces import _
+from onlyoffice.plone.core import utils
+
+import json
+
+def getSaveAsObject(self):
+ return json.dumps({
+ 'available': not getToolByName(self.context, 'portal_membership').isAnonymousUser(),
+ 'title': translate(_(u'Save file copy as'), context = self.request),
+ 'helpTitle': translate(_(u'Leave the field blank to save to the root of the site'), context = self.request),
+ 'messages': {
+ 'success': translate(_(u'The file was successfully saved as '), context = self.request),
+ 'errorNotAuthorized': translate(_(u'You are not authorized to add content to this folder'), context = self.request),
+ 'errorUnknown': translate(_(u'Unknown error while saving file'), context = self.request)
+ }
+ })
+
+def getDemoAsObject(self):
+ return json.dumps({
+ 'message': translate(_(u'You are using public demo ONLYOFFICE Document Server. Please do not store private sensitive data.'), context = self.request),
+ }) if utils.getDemoActive() else None
diff --git a/src/onlyoffice/plone/core/fileUtils.py b/src/onlyoffice/plone/core/fileUtils.py
new file mode 100644
index 0000000..458acf4
--- /dev/null
+++ b/src/onlyoffice/plone/core/fileUtils.py
@@ -0,0 +1,155 @@
+#
+# (c) Copyright Ascensio System SIA 2022
+#
+# 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.
+#
+
+from plone.app.widgets.utils import get_relateditems_options
+from plone.app.dexterity.interfaces import IDXFileFactory
+from AccessControl import getSecurityManager
+from zope.event import notify
+from zope.lifecycleevent import ObjectModifiedEvent
+from onlyoffice.plone.interfaces import _
+from onlyoffice.plone.core import formatUtils
+from onlyoffice.plone.core import conversionUtils
+import re
+from onlyoffice.plone.interfaces import logger
+
+localePath = {
+ 'az': 'az-Latn-AZ',
+ 'bg': 'bg-BG',
+ 'cs': 'cs-CZ',
+ 'de': 'de-DE',
+ 'el': 'el-GR',
+ 'en-gb': 'en-GB',
+ 'en': 'en-US',
+ 'es': 'es-ES',
+ 'fr': 'fr-FR',
+ 'it': 'it-IT',
+ 'ja': 'ja-JP',
+ 'ko': 'ko-KR',
+ 'lv': 'lv-LV',
+ 'nl': 'nl-NL',
+ 'pl': 'pl-PL',
+ 'pt-br': 'pt-BR',
+ 'pt': 'pt-PT',
+ 'ru': 'ru-RU',
+ 'sk': 'sk-SK',
+ 'sv': 'sv-SE',
+ 'uk': 'uk-UA',
+ 'vi': 'vi-VN',
+ 'zh': 'zh-CN'
+ }
+
+def getCorrectFileName(str):
+ return re.sub(r'[*?:\"<>/|\\\\]', '_', str)
+
+def getFileTitleWithoutExt(context):
+ title = context.Title()
+ ind = context.Title().rfind('.')
+ return title[:ind]
+
+def getFileNameWithoutExt(context):
+ filename = context.file.filename
+ ind = context.file.filename.rfind('.')
+ return filename[:ind]
+
+def getFileExt(context):
+ portal_type = context.portal_type
+
+ if portal_type == "Image" :
+ filename = context.image.filename if hasattr(context, "image") else None
+
+ if portal_type == "File" or portal_type == "Document" :
+ filename = context.file.filename if hasattr(context, "file") else None
+
+ if filename :
+ return filename[filename.rfind('.') + 1:].lower()
+
+ return None
+
+def getFileType(context):
+ for format in formatUtils.getSupportedFormats():
+ if format.name == getFileExt(context):
+ return format.type
+
+ return None
+
+def canView(context):
+ for format in formatUtils.getSupportedFormats():
+ if format.name == getFileExt(context):
+ return True
+
+ return False
+
+def canEdit(context):
+ for format in formatUtils.getSupportedFormats():
+ if format.name == getFileExt(context):
+ return format.edit
+
+ return False
+
+def canFillForm(context):
+ for format in formatUtils.getSupportedFormats():
+ if format.name == getFileExt(context):
+ return format.fillForm
+
+ return False
+
+def canConvert(context):
+ return conversionUtils.getTargetExt(getFileExt(context)) != None
+
+def getDefaultExtByType(str):
+ if (str == 'word'):
+ return 'docx'
+ if (str == 'cell'):
+ return 'xlsx'
+ if (str == 'slide'):
+ return 'pptx'
+ if (str == 'form'):
+ return 'docxf'
+
+ return None
+
+def getDefaultNameByType(str):
+ if (str == 'word'):
+ return _(u'Document')
+ if (str == 'cell'):
+ return _(u'Spreadsheet')
+ if (str == 'slide'):
+ return _(u'Presentation')
+ if (str == 'form'):
+ return _(u'Form template')
+
+ return None
+
+def addNewFile(fileName, contentType, fileData, folder, title = None):
+ factory = IDXFileFactory(folder)
+ file = factory(fileName, contentType, fileData)
+
+ if title != None and title != "":
+ getSecurityManager().validate(file, file, "setTitle", file.setTitle)
+ file.setTitle(title)
+ notify(ObjectModifiedEvent(file))
+
+ return file
+
+def getRelatedRtemsOptions(context):
+ return get_relateditems_options(
+ context=context,
+ value=None,
+ separator=";",
+ vocabulary_name="plone.app.vocabularies.Catalog",
+ vocabulary_view="@@getVocabulary",
+ field_name="relatedItems",
+ )
\ No newline at end of file
diff --git a/src/onlyoffice/plone/core/formatUtils.py b/src/onlyoffice/plone/core/formatUtils.py
new file mode 100644
index 0000000..9c8f869
--- /dev/null
+++ b/src/onlyoffice/plone/core/formatUtils.py
@@ -0,0 +1,75 @@
+#
+# (c) Copyright Ascensio System SIA 2022
+#
+# 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.
+#
+
+
+class Format:
+ def __init__(self, name, type, edit = False, fillForm = False, convertTo = []):
+ self.name = name
+ self.type = type
+ self.edit = edit
+ self.fillForm = fillForm
+ self.convertTo = convertTo
+
+def getSupportedFormats():
+ return [
+ Format("djvu", "word"),
+ Format("doc", "word", convertTo = ["docx", "docxf", "docm", "dotm", "dotx", "epub", "fb2", "html", "odt", "ott", "pdf", "pdfa", "rtf", "txt"]),
+ Format("docm", "word", convertTo = ["docx", "docxf", "dotm", "dotx", "epub", "fb2", "html", "odt", "ott", "pdf", "pdfa", "rtf", "txt"]),
+ Format("docx", "word", True, convertTo = ["docxf", "oform", "docm", "dotm", "dotx", "epub", "fb2", "html", "odt", "ott", "pdf", "pdfa", "rtf", "txt"]),
+ Format("docxf", "word", True, convertTo = ["docx", "oform", "docm", "dotm", "dotx", "epub", "fb2", "html", "odt", "ott", "pdf", "pdfa", "rtf", "txt"]),
+ Format("dot", "word", convertTo = ["docx", "docxf", "docm", "dotm", "dotx", "epub", "fb2", "html", "odt", "ott", "pdf", "pdfa", "rtf", "txt"]),
+ Format("dotm", "word", convertTo = ["docx", "docxf", "docm", "dotx", "epub", "fb2", "html", "odt", "ott", "pdf", "pdfa", "rtf", "txt"]),
+ Format("dotx", "word", convertTo = ["docx", "docxf", "docm", "dotm", "epub", "fb2", "html", "odt", "ott", "pdf", "pdfa", "rtf", "txt"]),
+ Format("epub", "word", convertTo = ["docx", "docxf", "docm", "dotm", "dotx", "fb2", "html", "odt", "ott", "pdf", "pdfa", "rtf", "txt"]),
+ Format("fb2", "word", convertTo = ["docx", "docxf", "docm", "dotm", "dotx", "epub", "html", "odt", "ott", "pdf", "pdfa", "rtf", "txt"]),
+ Format("fodt", "word", convertTo = ["docx", "docxf", "docm", "dotm", "dotx", "epub", "fb2", "html", "odt", "ott", "pdf", "pdfa", "rtf", "txt"]),
+ Format("html", "word", convertTo = ["docx", "docxf", "docm", "dotm", "dotx", "epub", "fb2", "odt", "ott", "pdf", "pdfa", "rtf", "txt"]),
+ Format("mht", "word", convertTo = ["docx", "docxf", "docm", "dotm", "dotx", "epub", "fb2", "odt", "ott", "pdf", "pdfa", "rtf", "txt"]),
+ Format("odt", "word", convertTo = ["docx", "docxf", "docm", "dotm", "dotx", "epub", "fb2", "html", "ott", "pdf", "pdfa", "rtf", "txt"]),
+ Format("ott", "word", convertTo = ["docx", "docxf", "docm", "dotm", "dotx", "epub", "fb2", "html", "odt", "pdf", "pdfa", "rtf", "txt"]),
+ Format("oxps", "word", convertTo = ["docx", "docxf", "docm", "dotm", "dotx", "epub", "fb2", "html", "odt", "ott", "pdf", "pdfa", "rtf", "txt"]),
+ Format("pdf", "word", convertTo = ["docx", "docxf", "docm", "dotm", "dotx", "epub", "fb2", "html", "odt", "ott", "pdfa", "rtf", "txt"]),
+ Format("rtf", "word", convertTo = ["docx", "docxf", "docm", "dotm", "dotx", "epub", "fb2", "html", "odt", "ott", "pdf", "pdfa", "txt"]),
+ Format("txt", "word"),
+ Format("xps", "word", convertTo = ["docx", "docxf", "docm", "dotm", "dotx", "epub", "fb2", "html", "odt", "ott", "pdf", "pdfa", "rtf", "txt"]),
+ Format("xml", "word", convertTo = ["docx", "docxf", "docm", "dotm", "dotx", "epub", "fb2", "html", "odt", "ott", "pdf", "pdfa", "rtf", "txt"]),
+ Format("oform", "word", fillForm = True),
+
+ Format("csv", "cell"),
+ Format("fods", "cell", convertTo = ["xlsx", "csv", "ods", "ots", "pdf", "pdfa", "xlsm", "xltm", "xltx"]),
+ Format("ods", "cell", convertTo = ["xlsx", "csv", "ots", "pdf", "pdfa", "xlsm", "xltm", "xltx"]),
+ Format("ots", "cell", convertTo = ["xlsx", "csv", "ods", "pdf", "pdfa", "xlsm", "xltm", "xltx"]),
+ Format("xls", "cell", convertTo = ["xlsx", "csv", "ods", "ots", "pdf", "pdfa", "xlsm", "xltm", "xltx"]),
+ Format("xlsb", "cell", convertTo = ["xlsx", "csv", "ods", "ots", "pdf", "pdfa", "xlsm", "xltm", "xltx"]),
+ Format("xlsm", "cell", convertTo = ["xlsx", "csv", "ods", "ots", "pdf", "pdfa", "xltm", "xltx"]),
+ Format("xlsx", "cell", True, convertTo = ["csv", "ods", "ots", "pdf", "pdfa", "xlsm", "xltm", "xltx"]),
+ Format("xlt", "cell", convertTo = ["xlsx", "csv", "ods", "ots", "pdf", "pdfa", "xlsm", "xltm", "xltx"]),
+ Format("xltm", "cell", convertTo = ["xlsx", "csv", "ods", "ots", "pdf", "pdfa", "xlsm", "xltx"]),
+ Format("xltx", "cell", convertTo = ["xlsx", "csv", "ods", "ots", "pdf", "pdfa", "xlsm", "xltm"]),
+
+ Format("fodp", "slide", convertTo = ["pptx", "odp", "otp", "pdf", "pdfa", "potm", "potx", "pptm"]),
+ Format("odp", "slide", convertTo = ["pptx", "otp", "pdf", "pdfa", "potm", "potx", "pptm"]),
+ Format("otp", "slide", convertTo = ["pptx", "odp", "pdf", "pdfa", "potm", "potx", "pptm"]),
+ Format("pot", "slide", convertTo = ["pptx", "odp", "otp", "pdf", "pdfa", "potm", "potx", "pptm"]),
+ Format("potm", "slide", convertTo = ["pptx", "odp", "otp", "pdf", "pdfa", "potx", "pptm"]),
+ Format("potx", "slide", convertTo = ["pptx", "odp", "otp", "pdf", "pdfa", "potm", "pptm"]),
+ Format("pps", "slide", convertTo = ["pptx", "odp", "otp", "pdf", "pdfa", "potm", "potx", "pptm"]),
+ Format("ppsm", "slide", convertTo = ["pptx", "odp", "otp", "pdf", "pdfa", "potm", "potx", "pptm"]),
+ Format("ppsx", "slide", convertTo = ["pptx", "odp", "otp", "pdf", "pdfa", "potm", "potx", "pptm"]),
+ Format("ppt", "slide", convertTo = ["pptx", "odp", "otp", "pdf", "pdfa", "potm", "potx", "pptm"]),
+ Format("pptm", "slide", convertTo = ["pptx", "odp", "otp", "pdf", "pdfa", "potm", "potx"]),
+ Format("pptx", "slide", True, convertTo = ["odp", "otp", "pdf", "pdfa", "potm", "potx", "pptm"]),
+ ]
diff --git a/src/onlyoffice/plone/core/utils.py b/src/onlyoffice/plone/core/utils.py
new file mode 100644
index 0000000..c4c424b
--- /dev/null
+++ b/src/onlyoffice/plone/core/utils.py
@@ -0,0 +1,141 @@
+#
+# (c) Copyright Ascensio System SIA 2022
+#
+# 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.
+#
+
+from logging import log
+from plone.uuid.interfaces import IUUID
+from zope.publisher.interfaces import Unauthorized
+from urllib.parse import parse_qs
+from plone.registry.interfaces import IRegistry
+from zope.component import getUtility
+from zope.annotation.interfaces import IAnnotations
+from plone import api
+from DateTime import DateTime
+from onlyoffice.plone.core.config import Config
+from onlyoffice.plone.interfaces import logger
+
+import base64
+import jwt
+import os
+
+def getDocumentKey(obj):
+ return base64.b64encode((obj.id + '_' + str(obj.modification_date)).encode('utf8')).decode('ascii')
+
+def isJwtEnabled():
+ if getDemoActive():
+ return True
+ else:
+ return bool(Config(getUtility(IRegistry)).jwtSecret)
+
+def createSecurityToken(payload, jwtSecret = None):
+ if (jwtSecret is None):
+ jwtSecret = getJwtSecret()
+ return jwt.encode(payload, jwtSecret, algorithm="HS256").decode("utf-8")
+
+def createSecurityTokenFromContext(obj):
+ return createSecurityToken({"key": obj.id}, IUUID(obj))
+
+def decodeSecurityToken(token):
+ return jwt.decode(token, getJwtSecret(), algorithms=['HS256'])
+
+def checkSecurityToken(obj, token):
+ if (token != createSecurityTokenFromContext(obj)):
+ raise Unauthorized
+
+def getTokenFromRequest(request):
+ query = parse_qs(request['QUERY_STRING'])
+ if 'token' in query:
+ return query['token'][0]
+ return None
+
+def getTokenFromHeader(request):
+ jwtHeader = "HTTP_" + getJwtHeader().upper()
+ token = request._orig_env.get(jwtHeader)
+ if token:
+ token = token[len("Bearer "):]
+ return token
+
+def getJwtSecret():
+ if getDemoActive():
+ return Config(getUtility(IRegistry)).demoJwtSecret
+ else:
+ return Config(getUtility(IRegistry)).jwtSecret
+
+def getJwtHeader():
+ if getDemoActive():
+ return Config(getUtility(IRegistry)).demoHeader
+ else:
+ return getJwtHeaderEnv()
+
+def getJwtHeaderEnv():
+ return os.getenv("ONLYOFFICE_JWT_HEADER") if os.getenv("ONLYOFFICE_JWT_HEADER", None) else "Authorization"
+
+def replaceDocUrlToInternal(url):
+ docUrl = Config(getUtility(IRegistry)).docUrl
+ docInnerUrl = Config(getUtility(IRegistry)).docInnerUrl
+ if docInnerUrl and not getDemoActive():
+ url = url.replace(docUrl, docInnerUrl)
+ return url
+
+def getPublicDocUrl():
+ if getDemoActive():
+ return os.path.join(Config(getUtility(IRegistry)).demoDocUrl, "")
+ else:
+ return os.path.join(Config(getUtility(IRegistry)).docUrl, "")
+
+def getInnerDocUrl():
+ docInnerUrl = Config(getUtility(IRegistry)).docInnerUrl
+ if getDemoActive() or docInnerUrl == None or docInnerUrl == "":
+ return os.path.join(getPublicDocUrl(), "")
+ else:
+ return os.path.join(docInnerUrl, "")
+
+def getPloneContextUrl(context):
+ innerPloneUrl = Config(getUtility(IRegistry)).ploneUrl
+
+ if innerPloneUrl:
+ return os.path.join(innerPloneUrl, "/".join(context.getPhysicalPath())[1:])
+ else:
+ return context.absolute_url()
+
+def getTestConvertDocUrl(innerPloneUrl):
+ portal = api.portal.get()
+
+ if innerPloneUrl:
+ return os.path.join(innerPloneUrl, "/".join(portal.getPhysicalPath()[1:]), "onlyoffice-test-convert")
+ else:
+ return os.path.join(portal.absolute_url(), "onlyoffice-test-convert")
+
+def setDemo():
+ potralAnnotations = IAnnotations(api.portal.get())
+ if "onlyoffice.plone.demoStart" not in potralAnnotations:
+ potralAnnotations["onlyoffice.plone.demoStart"] = int(DateTime())
+
+def getDemoAvailable(forActive):
+ potralAnnotations = IAnnotations(api.portal.get())
+
+ if "onlyoffice.plone.demoStart" in potralAnnotations:
+ dateStart = potralAnnotations["onlyoffice.plone.demoStart"]
+
+ try:
+ dateEnd = dateStart + Config(getUtility(IRegistry)).demoTrial * 60 * 60 * 24
+ return DateTime(dateEnd).isFuture()
+ except:
+ return False
+
+ return forActive
+
+def getDemoActive():
+ return Config(getUtility(IRegistry)).demoEnabled and getDemoAvailable(False)
\ No newline at end of file
diff --git a/src/onlyoffice/connector/interfaces.py b/src/onlyoffice/plone/interfaces.py
similarity index 86%
rename from src/onlyoffice/connector/interfaces.py
rename to src/onlyoffice/plone/interfaces.py
index 7ba6194..42e8816 100644
--- a/src/onlyoffice/connector/interfaces.py
+++ b/src/onlyoffice/plone/interfaces.py
@@ -1,5 +1,5 @@
#
-# (c) Copyright Ascensio System SIA 2021
+# (c) Copyright Ascensio System SIA 2022
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -23,7 +23,7 @@
import logging
logger = logging.getLogger("onlyoffice")
-_ = MessageFactory('onlyoffice.connector')
+_ = MessageFactory('onlyoffice.plone')
-class IOnlyofficeConnectorLayer(IDefaultBrowserLayer):
+class IOnlyofficePloneLayer(IDefaultBrowserLayer):
"""Marker interface that defines a browser layer."""
\ No newline at end of file
diff --git a/src/onlyoffice/connector/locales/README.rst b/src/onlyoffice/plone/locales/README.rst
similarity index 100%
rename from src/onlyoffice/connector/locales/README.rst
rename to src/onlyoffice/plone/locales/README.rst
diff --git a/src/onlyoffice/connector/locales/__init__.py b/src/onlyoffice/plone/locales/__init__.py
similarity index 100%
rename from src/onlyoffice/connector/locales/__init__.py
rename to src/onlyoffice/plone/locales/__init__.py
diff --git a/src/onlyoffice/plone/locales/cs/LC_MESSAGES/onlyoffice.plone.po b/src/onlyoffice/plone/locales/cs/LC_MESSAGES/onlyoffice.plone.po
new file mode 100644
index 0000000..53fe76c
--- /dev/null
+++ b/src/onlyoffice/plone/locales/cs/LC_MESSAGES/onlyoffice.plone.po
@@ -0,0 +1,257 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2020-02-14 10:33+0000\n"
+"PO-Revision-Date: 2022-09-30 17:43+0300\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+"X-Generator: Poedit 3.1.1\n"
+
+#: ../browser/controlpanel.py:12
+msgid "Document Editing service"
+msgstr "Služba Úpravy dokumentů"
+
+#: ../configure.zcml:28
+msgid "Installs the ONLYOFFICE connector add-on."
+msgstr "Nainstaluje doplněk konektor ONLYOFFICE"
+
+#: ../browser/controlpanel.py:21
+msgid "ONLYOFFICE Configuration"
+msgstr "Konfigurace ONLYOFFICE"
+
+#: ../profiles/default/types/File.xml
+msgid "ONLYOFFICE Edit"
+msgstr "Úprava ONLYOFFICE"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View"
+msgstr "Náhled ONLYOFFICE"
+
+#: ../browser/configure.zcml
+msgid "Fill in form in ONLYOFFICE"
+msgstr "Vyplňte formulář v ONLYOFFICE"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View page"
+msgstr "Stránka náhledu ONLYOFFICE"
+
+#: ../browser/templates/error.pt:10
+msgid "ONLYOFFICE can't open this file."
+msgstr "ONLYOFFICE nedokáže otevřít tento soubor."
+
+#: ../configure.zcml:37
+msgid "Uninstalls the ONLYOFFICE connector add-on."
+msgstr "Odinstaluje doplněk konektor ONLYOFFICE"
+
+#: ../configure.zcml:28
+msgid "onlyoffice.plone"
+msgstr "onlyoffice.plone"
+
+#: ../configure.zcml:37
+msgid "onlyoffice.plone (uninstall)"
+msgstr "onlyoffice.plone (odinstalovat)"
+
+#: ../browser/controlpanel.py:34
+msgid "Secret key (leave blank to disable)"
+msgstr "Tajný klíč (pro deaktivaci ponechte prázdné)"
+
+#: ../browser/controlpanel.py:34
+msgid "Server address for internal requests from the Document Editing Service"
+msgstr ""
+
+#: ../browser/controlpanel.py:34
+msgid "Document Editing Service address for internal requests from the server"
+msgstr ""
+
+#: ../browser/menu.py
+msgid "Create in ONLYOFFICE"
+msgstr "Vytvořit v ONLYOFFICE"
+
+#: ../core/fileUtils.py
+msgid "Document"
+msgstr "Dokument"
+
+#: ../core/fileUtils.py
+msgid "Spreadsheet"
+msgstr "Tabulka"
+
+#: ../core/fileUtils.py
+msgid "Presentation"
+msgstr "Prezentace"
+
+#: ../core/fileUtils.py
+msgid "Form template"
+msgstr "Šablona formuláře"
+
+#: ../browser/api.py
+msgid "Save file copy as"
+msgstr "Uložit kopii souboru jako"
+
+#: ../browser/api.py
+msgid "Leave the field blank to save to the root of the site"
+msgstr "Pro uložení do kořenového adresáře webu ponechte pole prázdné"
+
+#: ../browser/api.py
+msgid "The file was successfully saved as "
+msgstr "Soubor byl úspěšně uložen jako"
+
+#: ../browser/api.py
+msgid "You are not authorized to add content to this folder"
+msgstr "Nejste oprávněni přidávat obsah do této složky"
+
+#: ../browser/api.py
+msgid "Unknown error while saving file"
+msgstr "Neznámá chyba při ukládání souboru"
+
+#: ../browser/templates/view.pt
+msgid "Not supported version DocumentServer."
+msgstr "Nepodporovaná verze DocumentServer."
+
+#: ../browser/templates/view.pt
+msgid "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online."
+msgstr "Aktualizujte prosím Dokumenty ONLYOFFICE na verzi 7.0, abyste mohli pracovat s vyplnitelnými formuláři online."
+
+#: ../browser/templates/view.pt
+msgid "Required input is missing."
+msgstr "Chybí požadovaný vstup."
+
+#: ../browser/controlpanel.py
+msgid "ONLYOFFICE cannot be reached"
+msgstr "ONLYOFFICE nelze dosáhnout"
+
+#: ../browser/controlpanel.py
+msgid "Authorization error"
+msgstr "Chyba autorizace"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check CommandService"
+msgstr "Chyba při pokusu o kontrolu služby CommandService"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check ConvertService"
+msgstr "Chyba při pokusu o kontrolu služby ConvertService"
+
+#: ../browser/controlpanel.py
+msgid "Mixed Active Content is not allowed. HTTPS address for Document Server is required."
+msgstr "Smíšený aktivní obsah není povolen. Je vyžadována adresa HTTPS pro Document Server."
+
+#: ../browser/controlpanel.py
+msgid "Connect to demo ONLYOFFICE Document Server"
+msgstr "Připojení k ukázkovému serveru dokumentů ONLYOFFICE"
+
+#: ../browser/controlpanel.py
+msgid "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."
+msgstr "Jedná se o veřejný testovací server, nepoužívejte jej pro soukromá citlivá data. Server bude k dispozici po dobu 30 dnů."
+
+#: ../browser/static/js/controlpanel.js
+msgid "The 30-day test period is over, you can no longer connect to demo ONLYOFFICE Document Server."
+msgstr "Po uplynutí 30denního testovacího období se již nelze k demo verzi Dokumentového serveru ONLYOFFICE připojit."
+
+#: ../browser/controlpanel.py
+msgid "Error connecting to demo server (${error})"
+msgstr "Chyba při připojování k demo serveru (${error})"
+
+#: ../browser/actions.py
+msgid "You are using public demo ONLYOFFICE Document Server. Please do not store private sensitive data."
+msgstr "Používáte veřejný demo server ONLYOFFICE Document Server. Neukládejte prosím soukromá citlivá data."
+
+#: ../browser/api.py
+msgid "Conversion in ONLYOFFICE"
+msgstr "Konverze v ONLYOFFICE"
+
+#: ../browser/api.py
+msgid "You can convert you document in format OOXML"
+msgstr "Dokument můžete převést do formátu OOXML"
+
+#: ../browser/interfaces.py
+msgid "Current type:"
+msgstr "Aktuální typ:"
+
+#: ../browser/interfaces.py
+msgid "Target type:"
+msgstr "Cílový typ:"
+
+#: ../browser/apy.py
+msgid "Convert"
+msgstr "Převod"
+
+#: ../browser/static/js/convert.js
+msgid "Item converted"
+msgstr "Převáděná položka"
+
+#: ../browser/static/js/convert.js
+msgid "Converting ${currentType} to ${targetType} in progress."
+msgstr "Probíhá konverze ${currentType} na ${targetType}."
+
+#: ../browser/static/js/convert.js
+msgid "Converting is finished"
+msgstr "Převod je dokončen"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned error (${error})"
+msgstr "Služba převodu dokumentu vrátila chybu (${error})"
+
+#: ../core/conversionUtils.py
+msgid "Unknown error"
+msgstr "Neznámá chyba"
+
+#: ../core/conversionUtils.py
+msgid "Conversion timeout error"
+msgstr "Chyba časového limitu převodu"
+
+#: ../core/conversionUtils.py
+msgid "Conversion error"
+msgstr "Chyba převodu"
+
+#: ../core/conversionUtils.py
+msgid "Error while downloading the document file to be converted"
+msgstr "Chyba při stahování souboru dokumentu, který má být převeden"
+
+#: ../core/conversionUtils.py
+msgid "Incorrect password"
+msgstr "Nesprávné heslo"
+
+#: ../core/conversionUtils.py
+msgid "Error while accessing the conversion result database"
+msgstr "Chyba při přístupu do databáze výsledků převodu"
+
+#: ../core/conversionUtils.py
+msgid "Input error"
+msgstr "Chyba při zadávání"
+
+#: ../core/conversionUtils.py
+msgid "Invalid token"
+msgstr "Neplatný token"
+
+#: ../core/conversionUtils.py
+msgid "Undefined error code"
+msgstr "Nedefinovaný chybový kód"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned status ${status_code}"
+msgstr "Služba převodu dokumentů vrátila stav ${status_code}"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service cannot be reached"
+msgstr "Službu převodu dokumentů nelze kontaktovat"
+
+#: ../browser/interfaces.py
+msgid "Select file type you want to download"
+msgstr "Vyberte typ souboru, který chcete stáhnout"
+
+#: ../browser/interfaces.py
+msgid "Download as"
+msgstr "Stáhnout jako"
+
+#: ../browser/interfaces.py
+msgid "Download"
+msgstr "Stáhnout"
diff --git a/src/onlyoffice/plone/locales/de/LC_MESSAGES/onlyoffice.plone.po b/src/onlyoffice/plone/locales/de/LC_MESSAGES/onlyoffice.plone.po
new file mode 100644
index 0000000..43642db
--- /dev/null
+++ b/src/onlyoffice/plone/locales/de/LC_MESSAGES/onlyoffice.plone.po
@@ -0,0 +1,257 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2020-02-14 10:33+0000\n"
+"PO-Revision-Date: 2022-10-07 18:53+0300\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+"X-Generator: Poedit 3.1.1\n"
+
+#: ../browser/controlpanel.py:12
+msgid "Document Editing service"
+msgstr "Dienst zur Dokumentenbearbeitung"
+
+#: ../configure.zcml:28
+msgid "Installs the ONLYOFFICE connector add-on."
+msgstr "Connector-Add-On von ONLYOFFICE installieren"
+
+#: ../browser/controlpanel.py:21
+msgid "ONLYOFFICE Configuration"
+msgstr "ONLYOFFICE Konfiguration"
+
+#: ../profiles/default/types/File.xml
+msgid "ONLYOFFICE Edit"
+msgstr "ONLYOFFICE Bearbeiten"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View"
+msgstr "ONLYOFFICE Anzeigen"
+
+#: ../browser/configure.zcml
+msgid "Fill in form in ONLYOFFICE"
+msgstr "Formular in ONLYOFFICE ausfüllen"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View page"
+msgstr "ONLYOFFICE Seite anzeigen"
+
+#: ../browser/templates/error.pt:10
+msgid "ONLYOFFICE can't open this file."
+msgstr "ONLYOFFICE kann diese Datei nicht öffnen"
+
+#: ../configure.zcml:37
+msgid "Uninstalls the ONLYOFFICE connector add-on."
+msgstr "Connector-Add-On von ONLYOFFICE deinstallieren"
+
+#: ../configure.zcml:28
+msgid "onlyoffice.plone"
+msgstr "onlyoffice.plone"
+
+#: ../configure.zcml:37
+msgid "onlyoffice.plone (uninstall)"
+msgstr "onlyoffice.plone (deinstallieren)"
+
+#: ../browser/controlpanel.py:34
+msgid "Secret key (leave blank to disable)"
+msgstr "Geheimer Schlüssel (freilassen, um zu deaktivieren)"
+
+#: ../browser/controlpanel.py:34
+msgid "Server address for internal requests from the Document Editing Service"
+msgstr "Serveradresse für interne Anforderungen vom Dokumentbearbeitung-Service"
+
+#: ../browser/controlpanel.py:34
+msgid "Document Editing Service address for internal requests from the server"
+msgstr "Serviceadresse der Dokumentbearbeitung für interne Anforderungen vom Server"
+
+#: ../browser/menu.py
+msgid "Create in ONLYOFFICE"
+msgstr "In ONLYOFFICE erstellen"
+
+#: ../core/fileUtils.py
+msgid "Document"
+msgstr "Dokument"
+
+#: ../core/fileUtils.py
+msgid "Spreadsheet"
+msgstr "Tabelle"
+
+#: ../core/fileUtils.py
+msgid "Presentation"
+msgstr "Präsentation"
+
+#: ../core/fileUtils.py
+msgid "Form template"
+msgstr "Formularvorlage"
+
+#: ../browser/api.py
+msgid "Save file copy as"
+msgstr "Dateikopie speichern als"
+
+#: ../browser/api.py
+msgid "Leave the field blank to save to the root of the site"
+msgstr "Lassen Sie das Feld leer, um im Stammverzeichnis der Site zu speicher"
+
+#: ../browser/api.py
+msgid "The file was successfully saved as"
+msgstr "Die Datei wurde gespeichert als"
+
+#: ../browser/api.py
+msgid "You are not authorized to add content to this folder"
+msgstr "Sie dürfen zu diesem Ordner keine Inhalte hinzufügen"
+
+#: ../browser/api.py
+msgid "Unknown error while saving file"
+msgstr "Unbekannter Fehler beim Speichern"
+
+#: ../browser/templates/view.pt
+msgid "Not supported version DocumentServer."
+msgstr "Die Version des Document Servers ist nicht unterstützt."
+
+#: ../browser/templates/view.pt
+msgid "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online."
+msgstr "Für Online-Arbeit mit Formularen ist Version 7.0 von ONLYOFFICE Docs erforderlich"
+
+#: ../browser/templates/view.pt
+msgid "Required input is missing."
+msgstr "Erforderliche Eingabe fehlt."
+
+#: ../browser/controlpanel.py
+msgid "ONLYOFFICE cannot be reached"
+msgstr "ONLYOFFICE ist zurzeit nicht erreichbar"
+
+#: ../browser/controlpanel.py
+msgid "Authorization error"
+msgstr "Fehler bei der Autorisierung"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check CommandService"
+msgstr "Fehler beim Versuch, CommandService zu überprüfen"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check ConvertService"
+msgstr "Fehler beim Versuch, ConvertService zu überprüfen"
+
+#: ../browser/controlpanel.py
+msgid "Mixed Active Content is not allowed. HTTPS address for Document Server is required."
+msgstr "Mixed Active Content ist nicht möglich. HTTPS-Adresse für Document Server ist erforderlich."
+
+#: ../browser/controlpanel.py
+msgid "Connect to demo ONLYOFFICE Document Server"
+msgstr "Demo-Verbindung zum ONLYOFFICE Document Server herstellen"
+
+#: ../browser/controlpanel.py
+msgid "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."
+msgstr "Dies ist ein öffentlicher Testserver. Bitte verwende beim Testen keine privaten sensiblen Daten. Der Server ist 30 Tage lang verfügbar."
+
+#: ../browser/static/js/controlpanel.js
+msgid "The 30-day test period is over, you can no longer connect to demo ONLYOFFICE Document Server."
+msgstr "Der 30-tägige Testzeitraum ist abgelaufen. Du kannst keine Verbindung mehr zu Demo ONLYOFFICE Document Server herstellen."
+
+#: ../browser/controlpanel.py
+msgid "Error connecting to demo server (${error})"
+msgstr "Fehler beim Verbindung zum Demo-Server: (${error})"
+
+#: ../browser/actions.py
+msgid "You are using public demo ONLYOFFICE Document Server. Please do not store private sensitive data."
+msgstr "Du verwendest den öffentlichen Demo ONLYOFFICE Document Server. Bitte benutze ihn nicht zum Speichern von Deinen privaten sensiblen Daten."
+
+#: ../browser/api.py
+msgid "Conversion in ONLYOFFICE"
+msgstr "Konvertierung in ONLYOFFICE"
+
+#: ../browser/api.py
+msgid "You can convert you document in format OOXML"
+msgstr "Sie können Ihr Dokument ins OOXML-Format konvertieren"
+
+#: ../browser/interfaces.py
+msgid "Current type:"
+msgstr "Derzeitiges Format:"
+
+#: ../browser/interfaces.py
+msgid "Target type:"
+msgstr "Zielformat:"
+
+#: ../browser/apy.py
+msgid "Convert"
+msgstr "Konvertieren"
+
+#: ../browser/static/js/convert.js
+msgid "Item converted"
+msgstr "Datei wurde konvertiert"
+
+#: ../browser/static/js/convert.js
+msgid "Converting ${currentType} to ${targetType} in progress.."
+msgstr "Umwandlung von ${currentType} in ${targetType} wird durchgeführt."
+
+#: ../browser/static/js/convert.js
+msgid "Converting is finished"
+msgstr "Die Konvertierung ist abgeschlossen"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned error (${error})"
+msgstr "Der Dienst für die Dokumentenkonvertierung hat einen Fehler gemeldet: (${error})"
+
+#: ../core/conversionUtils.py
+msgid "Unknown error"
+msgstr "Unbekannter Fehler"
+
+#: ../core/conversionUtils.py
+msgid "Conversion timeout error"
+msgstr "Fehler bei der Konvertierung: Timeout"
+
+#: ../core/conversionUtils.py
+msgid "Conversion error"
+msgstr "Fehler bei der Umwandlung"
+
+#: ../core/conversionUtils.py
+msgid "Error while downloading the document file to be converted"
+msgstr "Fehler beim Herunterladen der Datei, die konvertiert werden muss"
+
+#: ../core/conversionUtils.py
+msgid "Incorrect password"
+msgstr "Ungültiges Passwort"
+
+#: ../core/conversionUtils.py
+msgid "Error while accessing the conversion result database"
+msgstr "Fehler beim Zugriff auf die Datenbank der Ergebnisse der Konvertierung"
+
+#: ../core/conversionUtils.py
+msgid "Input error"
+msgstr "Eingabefehler"
+
+#: ../core/conversionUtils.py
+msgid "Invalid token"
+msgstr "Ungültiges Token"
+
+#: ../core/conversionUtils.py
+msgid "Undefined error code"
+msgstr "Unbekannter Fehlercode"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned status ${status_code}"
+msgstr "Der Dienst für die Dokumentenkonvertierung hat den Status ${status_code} zurückgegeben"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service cannot be reached"
+msgstr "Der Dienst für die Dokumentenkonvertierung ist nicht erreichbar"
+
+#: ../browser/interfaces.py
+msgid "Select file type you want to download"
+msgstr "Wählen Sie den Dateityp aus, den Sie herunterladen möchten"
+
+#: ../browser/interfaces.py
+msgid "Download as"
+msgstr "Herunterladen als"
+
+#: ../browser/interfaces.py
+msgid "Download"
+msgstr "Herunterladen"
diff --git a/src/onlyoffice/plone/locales/en/LC_MESSAGES/onlyoffice.plone.po b/src/onlyoffice/plone/locales/en/LC_MESSAGES/onlyoffice.plone.po
new file mode 100644
index 0000000..c2efd47
--- /dev/null
+++ b/src/onlyoffice/plone/locales/en/LC_MESSAGES/onlyoffice.plone.po
@@ -0,0 +1,255 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2020-02-14 10:33+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+
+#: ../browser/controlpanel.py:12
+msgid "Document Editing service"
+msgstr ""
+
+#: ../configure.zcml:28
+msgid "Installs the ONLYOFFICE connector add-on."
+msgstr ""
+
+#: ../browser/controlpanel.py:21
+msgid "ONLYOFFICE Configuration"
+msgstr ""
+
+#: ../profiles/default/types/File.xml
+msgid "ONLYOFFICE Edit"
+msgstr ""
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View"
+msgstr ""
+
+#: ../browser/configure.zcml
+msgid "Fill in form in ONLYOFFICE"
+msgstr ""
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View page"
+msgstr ""
+
+#: ../browser/templates/error.pt:10
+msgid "ONLYOFFICE can't open this file."
+msgstr ""
+
+#: ../configure.zcml:37
+msgid "Uninstalls the ONLYOFFICE connector add-on."
+msgstr ""
+
+#: ../configure.zcml:28
+msgid "onlyoffice.plone"
+msgstr ""
+
+#: ../configure.zcml:37
+msgid "onlyoffice.plone (uninstall)"
+msgstr ""
+
+#: ../browser/controlpanel.py:34
+msgid "Secret key (leave blank to disable)"
+msgstr ""
+
+#: ../browser/controlpanel.py:34
+msgid "Server address for internal requests from the Document Editing Service"
+msgstr ""
+
+#: ../browser/controlpanel.py:34
+msgid "Document Editing Service address for internal requests from the server"
+msgstr ""
+
+#: ../browser/menu.py
+msgid "Create in ONLYOFFICE"
+msgstr ""
+
+#: ../core/fileUtils.py
+msgid "Document"
+msgstr ""
+
+#: ../core/fileUtils.py
+msgid "Spreadsheet"
+msgstr ""
+
+#: ../core/fileUtils.py
+msgid "Presentation"
+msgstr ""
+
+#: ../core/fileUtils.py
+msgid "Form template"
+msgstr ""
+
+#: ../browser/api.py
+msgid "Save file copy as"
+msgstr ""
+
+#: ../browser/api.py
+msgid "Leave the field blank to save to the root of the site"
+msgstr ""
+
+#: ../browser/api.py
+msgid "The file was successfully saved as "
+msgstr ""
+
+#: ../browser/api.py
+msgid "You are not authorized to add content to this folder"
+msgstr ""
+
+#: ../browser/api.py
+msgid "Unknown error while saving file"
+msgstr ""
+
+#: ../browser/templates/view.pt
+msgid "Not supported version DocumentServer."
+msgstr ""
+
+#: ../browser/templates/view.pt
+msgid "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online."
+msgstr ""
+
+#: ../browser/templates/view.pt
+msgid "Required input is missing."
+msgstr ""
+
+#: ../browser/controlpanel.py
+msgid "ONLYOFFICE cannot be reached"
+msgstr ""
+
+#: ../browser/controlpanel.py
+msgid "Authorization error"
+msgstr ""
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check CommandService"
+msgstr ""
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check ConvertService"
+msgstr ""
+
+#: ../browser/controlpanel.py
+msgid "Mixed Active Content is not allowed. HTTPS address for Document Server is required."
+msgstr ""
+
+#: ../browser/controlpanel.py
+msgid "Connect to demo ONLYOFFICE Document Server"
+msgstr ""
+
+#: ../browser/controlpanel.py
+msgid "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."
+msgstr ""
+
+#: ../browser/static/js/controlpanel.js
+msgid "The 30-day test period is over, you can no longer connect to demo ONLYOFFICE Document Server."
+msgstr ""
+
+#: ../browser/controlpanel.py
+msgid "Error connecting to demo server (${error})"
+msgstr ""
+
+#: ../browser/actions.py
+msgid "You are using public demo ONLYOFFICE Document Server. Please do not store private sensitive data."
+msgstr ""
+
+#: ../browser/api.py
+msgid "Conversion in ONLYOFFICE"
+msgstr ""
+
+#: ../browser/api.py
+msgid "You can convert you document in format OOXML"
+msgstr ""
+
+#: ../browser/interfaces.py
+msgid "Current type:"
+msgstr ""
+
+#: ../browser/interfaces.py
+msgid "Target type:"
+msgstr ""
+
+#: ../browser/apy.py
+msgid "Convert"
+msgstr ""
+
+#: ../browser/static/js/convert.js
+msgid "Item converted"
+msgstr ""
+
+#: ../browser/static/js/convert.js
+msgid "Converting ${currentType} to ${targetType} in progress."
+msgstr ""
+
+#: ../browser/static/js/convert.js
+msgid "Converting is finished"
+msgstr ""
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned error (${error})"
+msgstr ""
+
+#: ../core/conversionUtils.py
+msgid "Unknown error"
+msgstr ""
+
+#: ../core/conversionUtils.py
+msgid "Conversion timeout error"
+msgstr ""
+
+#: ../core/conversionUtils.py
+msgid "Conversion error"
+msgstr ""
+
+#: ../core/conversionUtils.py
+msgid "Error while downloading the document file to be converted"
+msgstr ""
+
+#: ../core/conversionUtils.py
+msgid "Incorrect password"
+msgstr ""
+
+#: ../core/conversionUtils.py
+msgid "Error while accessing the conversion result database"
+msgstr ""
+
+#: ../core/conversionUtils.py
+msgid "Input error"
+msgstr ""
+
+#: ../core/conversionUtils.py
+msgid "Invalid token"
+msgstr ""
+
+#: ../core/conversionUtils.py
+msgid "Undefined error code"
+msgstr ""
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned status ${status_code}"
+msgstr ""
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service cannot be reached"
+msgstr ""
+
+#: ../browser/interfaces.py
+msgid "Select file type you want to download"
+msgstr ""
+
+#: ../browser/interfaces.py
+msgid "Download as"
+msgstr ""
+
+#: ../browser/interfaces.py
+msgid "Download"
+msgstr ""
\ No newline at end of file
diff --git a/src/onlyoffice/plone/locales/es/LC_MESSAGES/onlyoffice.plone.po b/src/onlyoffice/plone/locales/es/LC_MESSAGES/onlyoffice.plone.po
new file mode 100644
index 0000000..1b90f63
--- /dev/null
+++ b/src/onlyoffice/plone/locales/es/LC_MESSAGES/onlyoffice.plone.po
@@ -0,0 +1,257 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2020-02-14 10:33+0000\n"
+"PO-Revision-Date: 2022-10-07 18:58+0300\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+"X-Generator: Poedit 3.1.1\n"
+
+#: ../browser/controlpanel.py:12
+msgid "Document Editing service"
+msgstr "Servicio de edición de documentos"
+
+#: ../configure.zcml:28
+msgid "Installs the ONLYOFFICE connector add-on."
+msgstr "Instalar add-on del conector de ONLYOFFICE"
+
+#: ../browser/controlpanel.py:21
+msgid "ONLYOFFICE Configuration"
+msgstr "ONLYOFFICE Configuración"
+
+#: ../profiles/default/types/File.xml
+msgid "ONLYOFFICE Edit"
+msgstr "ONLYOFFICE Edición"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View"
+msgstr "ONLYOFFICE Vista"
+
+#: ../browser/configure.zcml
+msgid "Fill in form in ONLYOFFICE"
+msgstr "Rellenar el formulario en ONLYOFFICE"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View page"
+msgstr "ONLYOFFICE Vista de páginas"
+
+#: ../browser/templates/error.pt:10
+msgid "ONLYOFFICE can't open this file."
+msgstr "ONLYOFFICE no puede abrir este archivo"
+
+#: ../configure.zcml:37
+msgid "Uninstalls the ONLYOFFICE connector add-on."
+msgstr "Desinstalar add-on del conector de ONLYOFFICE"
+
+#: ../configure.zcml:28
+msgid "onlyoffice.plone"
+msgstr "onlyoffice.plone"
+
+#: ../configure.zcml:37
+msgid "onlyoffice.plone (uninstall)"
+msgstr "onlyoffice.plone (desinstalar)"
+
+#: ../browser/controlpanel.py:34
+msgid "Secret key (leave blank to disable)"
+msgstr "Clave secreta (deje en blanco o desactive)"
+
+#: ../browser/controlpanel.py:34
+msgid "Server address for internal requests from the Document Editing Service"
+msgstr "Dirección de servidor para solicitudes internas del Servicio de Edición de Documentos"
+
+#: ../browser/controlpanel.py:34
+msgid "Document Editing Service address for internal requests from the server"
+msgstr "Dirección del Servicio de Edición de Documentos para solicitudes internas del servidor"
+
+#: ../browser/menu.py
+msgid "Create in ONLYOFFICE"
+msgstr "Crear en ONLYOFFICE"
+
+#: ../core/fileUtils.py
+msgid "Document"
+msgstr "Documento"
+
+#: ../core/fileUtils.py
+msgid "Spreadsheet"
+msgstr "Hoja de cálculo"
+
+#: ../core/fileUtils.py
+msgid "Presentation"
+msgstr "Presentación"
+
+#: ../core/fileUtils.py
+msgid "Form template"
+msgstr "Plantilla de formulario"
+
+#: ../browser/api.py
+msgid "Save file copy as"
+msgstr "Guardar copia del archivo como"
+
+#: ../browser/api.py
+msgid "Leave the field blank to save to the root of the site"
+msgstr "Deje el campo en blanco para guardar en la raíz del sitio"
+
+#: ../browser/api.py
+msgid "The file was successfully saved as "
+msgstr "El archivo se ha guardado correctamente como"
+
+#: ../browser/api.py
+msgid "You are not authorized to add content to this folder"
+msgstr "No tiene autorización para añadir contenido a esta carpeta"
+
+#: ../browser/api.py
+msgid "Unknown error while saving file"
+msgstr "Error desconocido al guardar el documento"
+
+#: ../browser/templates/view.pt
+msgid "Not supported version DocumentServer."
+msgstr "Versión no soportada del Servidor de documentos."
+
+#: ../browser/templates/view.pt
+msgid "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online."
+msgstr "Por favor, actualice ONLYOFFICE Docs a la versión 7.0 para poder trabajar con formularios rellenables en línea"
+
+#: ../browser/templates/view.pt
+msgid "Required input is missing."
+msgstr "Un campo requerido esta sin tomar en cuenta."
+
+#: ../browser/controlpanel.py
+msgid "ONLYOFFICE cannot be reached"
+msgstr "No se puede acceder al ONLYOFFICE"
+
+#: ../browser/controlpanel.py
+msgid "Authorization error"
+msgstr "Error de autorización"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check CommandService"
+msgstr "Error al intentar comprobar CommandService"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check ConvertService"
+msgstr "Error al intentar comprobar ConvertService"
+
+#: ../browser/controlpanel.py
+msgid "Mixed Active Content is not allowed. HTTPS address for Document Server is required."
+msgstr "Contenido Mixto Activo no está permitido. Se requiere la dirección HTTPS para el Servidor de documentos."
+
+#: ../browser/controlpanel.py
+msgid "Connect to demo ONLYOFFICE Document Server"
+msgstr "Conectarse al Servidor de documentos de ONLYOFFICE de demostración"
+
+#: ../browser/controlpanel.py
+msgid "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."
+msgstr "Este es un servidor de pruebas público, por favor no lo uses para tus datos confidenciales. El servidor estará disponible durante un período de 30 días."
+
+#: ../browser/static/js/controlpanel.js
+msgid "The 30-day test period is over, you can no longer connect to demo ONLYOFFICE Document Server."
+msgstr "El período de prueba de 30 días ha terminado, ya no puedes conectarte al Servidor de documentos de ONLYOFFICE de demostración."
+
+#: ../browser/controlpanel.py
+msgid "Error connecting to demo server (${error})"
+msgstr "Error al conectarse al Servidor de demostración (${error})"
+
+#: ../browser/actions.py
+msgid "You are using public demo ONLYOFFICE Document Server. Please do not store private sensitive data."
+msgstr "Estás usando el Servidor de documentos de ONLYOFFICE de demostración. Por favor, no almacenes tus datos confidenciales aquí."
+
+#: ../browser/api.py
+msgid "Conversion in ONLYOFFICE"
+msgstr "Conversión en ONLYOFFICE"
+
+#: ../browser/api.py
+msgid "You can convert you document in format OOXML"
+msgstr "Puedes convertir tu documento en formato OOXM"
+
+#: ../browser/interfaces.py
+msgid "Current type:"
+msgstr "Tipo actual:"
+
+#: ../browser/interfaces.py
+msgid "Target type:"
+msgstr "Tipo de destino:"
+
+#: ../browser/apy.py
+msgid "Convert"
+msgstr "Convertir"
+
+#: ../browser/static/js/convert.js
+msgid "Item converted"
+msgstr "Elemento convertido"
+
+#: ../browser/static/js/convert.js
+msgid "Converting ${currentType} to ${targetType} in progress.."
+msgstr "Conversión de ${currentType} a ${targetType} en progreso."
+
+#: ../browser/static/js/convert.js
+msgid "Converting is finished"
+msgstr "La conversión ha finalizado"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned error (${error})"
+msgstr "El servicio de conversión de documentos ha devuelto un error (${error})"
+
+#: ../core/conversionUtils.py
+msgid "Unknown error"
+msgstr "Error desconocido"
+
+#: ../core/conversionUtils.py
+msgid "Conversion timeout error"
+msgstr "Error de tiempo de conversión"
+
+#: ../core/conversionUtils.py
+msgid "Conversion error"
+msgstr "Error de conversión"
+
+#: ../core/conversionUtils.py
+msgid "Error while downloading the document file to be converted"
+msgstr "Error al descargar el archivo para conversión"
+
+#: ../core/conversionUtils.py
+msgid "Incorrect password"
+msgstr "Contraseña incorrecta"
+
+#: ../core/conversionUtils.py
+msgid "Error while accessing the conversion result database"
+msgstr "Error al acceder la base de datos de resultados de conversión"
+
+#: ../core/conversionUtils.py
+msgid "Input error"
+msgstr "Error de entrada"
+
+#: ../core/conversionUtils.py
+msgid "Invalid token"
+msgstr "Token no válido"
+
+#: ../core/conversionUtils.py
+msgid "Undefined error code"
+msgstr "Código de error no definido"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned status ${status_code}"
+msgstr "El servicio de conversión de documentos ha devuelto el estado ${status_code}"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service cannot be reached"
+msgstr "No se puede acceder al servicio de conversión de documentos"
+
+#: ../browser/interfaces.py
+msgid "Select file type you want to download"
+msgstr "Selecciona el tipo de archivo que quieres descargar"
+
+#: ../browser/interfaces.py
+msgid "Download as"
+msgstr "Descargar como"
+
+#: ../browser/interfaces.py
+msgid "Download"
+msgstr "Descargar"
diff --git a/src/onlyoffice/plone/locales/fr/LC_MESSAGES/onlyoffice.plone.po b/src/onlyoffice/plone/locales/fr/LC_MESSAGES/onlyoffice.plone.po
new file mode 100644
index 0000000..4d9c206
--- /dev/null
+++ b/src/onlyoffice/plone/locales/fr/LC_MESSAGES/onlyoffice.plone.po
@@ -0,0 +1,257 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2020-02-14 10:33+0000\n"
+"PO-Revision-Date: 2022-10-07 18:55+0300\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+"X-Generator: Poedit 3.1.1\n"
+
+#: ../browser/controlpanel.py:12
+msgid "Document Editing service"
+msgstr "Service d'édition de documents"
+
+#: ../configure.zcml:28
+msgid "Installs the ONLYOFFICE connector add-on."
+msgstr "Installer le module complémentaire du connecteur ONLYOFFICE"
+
+#: ../browser/controlpanel.py:21
+msgid "ONLYOFFICE Configuration"
+msgstr "Configuration ONLYOFFICE"
+
+#: ../profiles/default/types/File.xml
+msgid "ONLYOFFICE Edit"
+msgstr "ONLYOFFICE Éditer"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View"
+msgstr "ONLYOFFICE Voir"
+
+#: ../browser/configure.zcml
+msgid "Fill in form in ONLYOFFICE"
+msgstr "Remplir le formulaire dans ONLYOFFICE"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View page"
+msgstr "ONLYOFFICE Voir la page"
+
+#: ../browser/templates/error.pt:10
+msgid "ONLYOFFICE can't open this file."
+msgstr "ONLYOFFICE ne peut pas ouvrir ce fichier"
+
+#: ../configure.zcml:37
+msgid "Uninstalls the ONLYOFFICE connector add-on."
+msgstr "Désinstaller le module complémentaire du connecteur ONLYOFFICE"
+
+#: ../configure.zcml:28
+msgid "onlyoffice.plone"
+msgstr "onlyoffice.plone"
+
+#: ../configure.zcml:37
+msgid "onlyoffice.plone (uninstall)"
+msgstr "onlyoffice.plone (désinstaller)"
+
+#: ../browser/controlpanel.py:34
+msgid "Secret key (leave blank to disable)"
+msgstr "Clé secrète (laisser vide pour désactiver)"
+
+#: ../browser/controlpanel.py:34
+msgid "Server address for internal requests from the Document Editing Service"
+msgstr "Adresse du serveur pour les demandes internes du service d'édition de document"
+
+#: ../browser/controlpanel.py:34
+msgid "Document Editing Service address for internal requests from the server"
+msgstr "Adresse du service d'édition de document pour les demandes internes du serveur"
+
+#: ../browser/menu.py
+msgid "Create in ONLYOFFICE"
+msgstr "Créer dans ONLYOFFICE"
+
+#: ../core/fileUtils.py
+msgid "Document"
+msgstr "Document"
+
+#: ../core/fileUtils.py
+msgid "Spreadsheet"
+msgstr "Feuille de calcul"
+
+#: ../core/fileUtils.py
+msgid "Presentation"
+msgstr "Présentation"
+
+#: ../core/fileUtils.py
+msgid "Form template"
+msgstr "Modèle de formulaire"
+
+#: ../browser/api.py
+msgid "Save file copy as"
+msgstr "Enregistrer une copie du fichier comme"
+
+#: ../browser/api.py
+msgid "Leave the field blank to save to the root of the site"
+msgstr "Laisser le champ vide pour enregistrer à la racine du site"
+
+#: ../browser/api.py
+msgid "The file was successfully saved as "
+msgstr "Le fichier a été enregistré avec succès comme"
+
+#: ../browser/api.py
+msgid "You are not authorized to add content to this folder"
+msgstr "Vous n'êtes pas autorisé à ajouter du contenu à ce dossier"
+
+#: ../browser/api.py
+msgid "Unknown error while saving file"
+msgstr "Une erreur inconnue s'est produite lors de l'enregistrement du fichier"
+
+#: ../browser/templates/view.pt
+msgid "Not supported version DocumentServer."
+msgstr "Version de DocumentServer non prise en charge."
+
+#: ../browser/templates/view.pt
+msgid "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online."
+msgstr "Veuillez mettre à jour ONLYOFFICE Docs vers la version 7.0 pour travailler sur les formulaires à remplir en ligne"
+
+#: ../browser/templates/view.pt
+msgid "Required input is missing."
+msgstr "Un champ obligatoire est manquant"
+
+#: ../browser/controlpanel.py
+msgid "ONLYOFFICE cannot be reached"
+msgstr "ONLYOFFICE est indisponible"
+
+#: ../browser/controlpanel.py
+msgid "Authorization error"
+msgstr "Erreur d'autorisation"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check CommandService"
+msgstr "Erreur lors de la vérification de CommandService"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check ConvertService"
+msgstr "Erreur lors de la vérification de ConvertService"
+
+#: ../browser/controlpanel.py
+msgid "Mixed Active Content is not allowed. HTTPS address for Document Server is required."
+msgstr "Le contenu mixte actif n'est pas autorisé. Une adresse HTTPS pour le Document Server est requise."
+
+#: ../browser/controlpanel.py
+msgid "Connect to demo ONLYOFFICE Document Server"
+msgstr "Se connecter à la version démo de ONLYOFFICE Document Server"
+
+#: ../browser/controlpanel.py
+msgid "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."
+msgstr "C'est un serveur public proposé à des fins de tests, veuillez ne pas l’utiliser pour vos données personnelles sensibles. Le serveur est disponible pendant 30 jours."
+
+#: ../browser/static/js/controlpanel.js
+msgid "The 30-day test period is over, you can no longer connect to demo ONLYOFFICE Document Server."
+msgstr "La période d'essai de 30 jours est expirée, vous n’êtes plus en mesure de vous connecter à la version démo de ONLYOFFICE Document Server."
+
+#: ../browser/controlpanel.py
+msgid "Error connecting to demo server (${error})"
+msgstr "Erreur de connexion au serveur de démo"
+
+#: ../browser/actions.py
+msgid "You are using public demo ONLYOFFICE Document Server. Please do not store private sensitive data."
+msgstr "Vous utilisez la version démo de ONLYOFFICE Docs, proposée à des fins de tests. Veuillez ne pas stocker vos données confidentielles."
+
+#: ../browser/api.py
+msgid "Conversion in ONLYOFFICE"
+msgstr "Conversion dans ONLYOFFICE"
+
+#: ../browser/api.py
+msgid "You can convert you document in format OOXML"
+msgstr "Vous pouvez concertir votre documents dans le format OOXML"
+
+#: ../browser/interfaces.py
+msgid "Current type:"
+msgstr "Type actuel :"
+
+#: ../browser/interfaces.py
+msgid "Target type:"
+msgstr "Type de cible :"
+
+#: ../browser/apy.py
+msgid "Convert"
+msgstr "Convertir"
+
+#: ../browser/static/js/convert.js
+msgid "Item converted"
+msgstr "Élément converti"
+
+#: ../browser/static/js/convert.js
+msgid "Converting ${currentType} to ${targetType} in progress.."
+msgstr "La conversion de ${currentType} en ${targetType} est en cours."
+
+#: ../browser/static/js/convert.js
+msgid "Converting is finished"
+msgstr "La conversion est terminée"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned error (${error})"
+msgstr "Le service de conversion de documents a renvoyé une erreur (${error})"
+
+#: ../core/conversionUtils.py
+msgid "Unknown error"
+msgstr "Erreur inconnue"
+
+#: ../core/conversionUtils.py
+msgid "Conversion timeout error"
+msgstr "Erreur de délai de conversion"
+
+#: ../core/conversionUtils.py
+msgid "Conversion error"
+msgstr "Erreur de conversion"
+
+#: ../core/conversionUtils.py
+msgid "Error while downloading the document file to be converted"
+msgstr "Erreur lors du téléchargement du fichier à convertir"
+
+#: ../core/conversionUtils.py
+msgid "Incorrect password"
+msgstr "Mot de passe incorrect"
+
+#: ../core/conversionUtils.py
+msgid "Error while accessing the conversion result database"
+msgstr "Erreur lors de l'accès à la base de données des résultats de la conversion"
+
+#: ../core/conversionUtils.py
+msgid "Input error"
+msgstr "Erreur de saisie"
+
+#: ../core/conversionUtils.py
+msgid "Invalid token"
+msgstr "Jeton non valide"
+
+#: ../core/conversionUtils.py
+msgid "Undefined error code"
+msgstr "Code d'erreur non défini"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned status ${status_code}"
+msgstr "Le service de conversion de documents a renvoyé le statut ${status_code}"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service cannot be reached"
+msgstr "Le service de conversion des documents n'est pas accessible"
+
+#: ../browser/interfaces.py
+msgid "Select file type you want to download"
+msgstr "Sélectionnez le type de fichier que vous souhaitez télécharger"
+
+#: ../browser/interfaces.py
+msgid "Download as"
+msgstr "Télécharger sous"
+
+#: ../browser/interfaces.py
+msgid "Download"
+msgstr "Télécharger"
diff --git a/src/onlyoffice/plone/locales/it/LC_MESSAGES/onlyoffice.plone.po b/src/onlyoffice/plone/locales/it/LC_MESSAGES/onlyoffice.plone.po
new file mode 100644
index 0000000..64ba4cb
--- /dev/null
+++ b/src/onlyoffice/plone/locales/it/LC_MESSAGES/onlyoffice.plone.po
@@ -0,0 +1,257 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2020-02-14 10:33+0000\n"
+"PO-Revision-Date: 2022-10-07 18:55+0300\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+"X-Generator: Poedit 3.1.1\n"
+
+#: ../browser/controlpanel.py:12
+msgid "Document Editing service"
+msgstr "Servizio Documenti Editing"
+
+#: ../configure.zcml:28
+msgid "Installs the ONLYOFFICE connector add-on."
+msgstr "Installa il componente aggiuntivo ONLYOFFICE"
+
+#: ../browser/controlpanel.py:21
+msgid "ONLYOFFICE Configuration"
+msgstr "ONLYOFFICE Configurazione"
+
+#: ../profiles/default/types/File.xml
+msgid "ONLYOFFICE Edit"
+msgstr "ONLYOFFICE Modifica"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View"
+msgstr "ONLYOFFICE Visualizza"
+
+#: ../browser/configure.zcml
+msgid "Fill in form in ONLYOFFICE"
+msgstr "Compilare il modulo in ONLYOFFICE"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View page"
+msgstr "ONLYOFFICE Visualizza pagina"
+
+#: ../browser/templates/error.pt:10
+msgid "ONLYOFFICE can't open this file."
+msgstr "ONLYOFFICE non può aprire questo file."
+
+#: ../configure.zcml:37
+msgid "Uninstalls the ONLYOFFICE connector add-on."
+msgstr "Disinstalla il componente aggiuntivo ONLYOFFICE."
+
+#: ../configure.zcml:28
+msgid "onlyoffice.plone"
+msgstr "onlyoffice.plone"
+
+#: ../configure.zcml:37
+msgid "onlyoffice.plone (uninstall)"
+msgstr "onlyoffice.plone (disinstalla)"
+
+#: ../browser/controlpanel.py:34
+msgid "Secret key (leave blank to disable)"
+msgstr "Chiave segreta (lasciare vuoto per disabilitare)"
+
+#: ../browser/controlpanel.py:34
+msgid "Server address for internal requests from the Document Editing Service"
+msgstr "Indirizzo del server per richieste interne dal Document Editing Service"
+
+#: ../browser/controlpanel.py:34
+msgid "Document Editing Service address for internal requests from the server"
+msgstr "Indirizzo di Document Editing Service per richieste interne dal server"
+
+#: ../browser/menu.py
+msgid "Create in ONLYOFFICE"
+msgstr "Creare in ONLYOFFICE"
+
+#: ../core/fileUtils.py
+msgid "Document"
+msgstr "Documento"
+
+#: ../core/fileUtils.py
+msgid "Spreadsheet"
+msgstr "Foglio di calcolo"
+
+#: ../core/fileUtils.py
+msgid "Presentation"
+msgstr "Presentazione"
+
+#: ../core/fileUtils.py
+msgid "Form template"
+msgstr "Modello di modulo"
+
+#: ../browser/api.py
+msgid "Save file copy as"
+msgstr "Salvare la copia del file come"
+
+#: ../browser/api.py
+msgid "Leave the field blank to save to the root of the site"
+msgstr "Lasciare il campo vuoto per salvare nella radice del sito"
+
+#: ../browser/api.py
+msgid "The file was successfully saved as "
+msgstr "Il file è stato salvato con successo come"
+
+#: ../browser/api.py
+msgid "You are not authorized to add content to this folder"
+msgstr "Non sei autorizzato ad aggiungere contenuti a questa cartella"
+
+#: ../browser/api.py
+msgid "Unknown error while saving file"
+msgstr "Errore sconosciuto durante il salvataggio del documento"
+
+#: ../browser/templates/view.pt
+msgid "Not supported version DocumentServer."
+msgstr "Versione di DocumentServer non supportata."
+
+#: ../browser/templates/view.pt
+msgid "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online."
+msgstr "Si prega di aggiornare ONLYOFFICE Docs alla versione 7.0 per lavorare su moduli compilabili online"
+
+#: ../browser/templates/view.pt
+msgid "Required input is missing."
+msgstr "Un campo richiesto è mancante."
+
+#: ../browser/controlpanel.py
+msgid "ONLYOFFICE cannot be reached"
+msgstr "Impossibile raggiungere ONLYOFFICE"
+
+#: ../browser/controlpanel.py
+msgid "Authorization error"
+msgstr "Errore di autorizzazione"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check CommandService"
+msgstr "Errore durante il tentativo di controllare CommandService"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check ConvertService"
+msgstr "Errore durante il tentativo di controllare ConvertService"
+
+#: ../browser/controlpanel.py
+msgid "Mixed Active Content is not allowed. HTTPS address for Document Server is required."
+msgstr "Il contenuto attivo misto non è consentito. L'indirizzo HTTPS per Document Server è obbligatorio."
+
+#: ../browser/controlpanel.py
+msgid "Connect to demo ONLYOFFICE Document Server"
+msgstr "Connettiti alla demo ONLYOFFICE Document Server"
+
+#: ../browser/controlpanel.py
+msgid "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."
+msgstr "Questo è un server di prova pubblico, non utilizzarlo per dati sensibili privati. Il server sarà disponibile per un periodo di 30 giorni."
+
+#: ../browser/static/js/controlpanel.js
+msgid "The 30-day test period is over, you can no longer connect to demo ONLYOFFICE Document Server."
+msgstr "Il periodo di prova di 30 giorni è scaduto, non puoi più connetterti alla demo di ONLYOFFICE Document Server."
+
+#: ../browser/controlpanel.py
+msgid "Error connecting to demo server (${error})"
+msgstr "Errore di connessione al server demo (${error})"
+
+#: ../browser/actions.py
+msgid "You are using public demo ONLYOFFICE Document Server. Please do not store private sensitive data."
+msgstr "Stai usando la demo pubblica di ONLYOFFICE Document Server. Ti preghiamo di non archiviare dati sensibili privati."
+
+#: ../browser/api.py
+msgid "Conversion in ONLYOFFICE"
+msgstr "Conversione in ONLYOFFICE"
+
+#: ../browser/api.py
+msgid "You can convert you document in format OOXML"
+msgstr "Puoi convertire il tuo documento in formato OOXML"
+
+#: ../browser/interfaces.py
+msgid "Current type:"
+msgstr "Tipo presente:"
+
+#: ../browser/interfaces.py
+msgid "Target type:"
+msgstr "Tipo di obiettivo:"
+
+#: ../browser/apy.py
+msgid "Convert"
+msgstr "Convertire"
+
+#: ../browser/static/js/convert.js
+msgid "Item converted"
+msgstr "Elemento convertito"
+
+#: ../browser/static/js/convert.js
+msgid "Converting ${currentType} to ${targetType} in progress.."
+msgstr "Conversione ${currentType} in ${targetType} in corso."
+
+#: ../browser/static/js/convert.js
+msgid "Converting is finished"
+msgstr "La conversione è compiuta"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned error (${error})"
+msgstr "Il servizio di conversione dei documenti ha restituito un errore (${error})"
+
+#: ../core/conversionUtils.py
+msgid "Unknown error"
+msgstr "Errore sconosciuto"
+
+#: ../core/conversionUtils.py
+msgid "Conversion timeout error"
+msgstr "Errore di timeout di conversione"
+
+#: ../core/conversionUtils.py
+msgid "Conversion error"
+msgstr "Errore di conversione"
+
+#: ../core/conversionUtils.py
+msgid "Error while downloading the document file to be converted"
+msgstr "Errore di download del documento da convertire"
+
+#: ../core/conversionUtils.py
+msgid "Incorrect password"
+msgstr "Password errata"
+
+#: ../core/conversionUtils.py
+msgid "Error while accessing the conversion result database"
+msgstr "Errore durante l'accesso al database dei risultati della conversione"
+
+#: ../core/conversionUtils.py
+msgid "Input error"
+msgstr "Errore di input"
+
+#: ../core/conversionUtils.py
+msgid "Invalid token"
+msgstr "Token non valido"
+
+#: ../core/conversionUtils.py
+msgid "Undefined error code"
+msgstr "Codice di errore non definito"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned status ${status_code}"
+msgstr "Il servizio di conversione dei documenti ha restituito lo stato ${status_code}"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service cannot be reached"
+msgstr "Impossibile raggiungere il servizio di conversione di documenti"
+
+#: ../browser/interfaces.py
+msgid "Select file type you want to download"
+msgstr "Scegli il tipo di file che vuoi scaricare"
+
+#: ../browser/interfaces.py
+msgid "Download as"
+msgstr "Scaricare come"
+
+#: ../browser/interfaces.py
+msgid "Download"
+msgstr "Scaricare"
diff --git a/src/onlyoffice/plone/locales/ja/LC_MESSAGES/onlyoffice.plone.po b/src/onlyoffice/plone/locales/ja/LC_MESSAGES/onlyoffice.plone.po
new file mode 100644
index 0000000..f72b91a
--- /dev/null
+++ b/src/onlyoffice/plone/locales/ja/LC_MESSAGES/onlyoffice.plone.po
@@ -0,0 +1,257 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2020-02-14 10:33+0000\n"
+"PO-Revision-Date: 2022-10-10 14:08+0300\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+"X-Generator: Poedit 3.1.1\n"
+
+#: ../browser/controlpanel.py:12
+msgid "Document Editing service"
+msgstr "ドキュメント編集サービス"
+
+#: ../configure.zcml:28
+msgid "Installs the ONLYOFFICE connector add-on."
+msgstr "ONLYOFFICE コネクターアドオンをインストールします"
+
+#: ../browser/controlpanel.py:21
+msgid "ONLYOFFICE Configuration"
+msgstr "ONLYOFFICE コンフィギュレーション"
+
+#: ../profiles/default/types/File.xml
+msgid "ONLYOFFICE Edit"
+msgstr "ONLYOFFICE 編集"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View"
+msgstr "ONLYOFFICE 閲覧"
+
+#: ../browser/configure.zcml
+msgid "Fill in form in ONLYOFFICE"
+msgstr "ONLYOFFICEでフォームを記入する"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View page"
+msgstr "ONLYOFFICE 閲覧ページ"
+
+#: ../browser/templates/error.pt:10
+msgid "ONLYOFFICE can't open this file."
+msgstr "このファイルを開くことができません"
+
+#: ../configure.zcml:37
+msgid "Uninstalls the ONLYOFFICE connector add-on."
+msgstr "ONLYOFFICE コネクターアドオンをアンインストールします"
+
+#: ../configure.zcml:28
+msgid "onlyoffice.plone"
+msgstr "onlyoffice.plone"
+
+#: ../configure.zcml:37
+msgid "onlyoffice.plone (uninstall)"
+msgstr "onlyoffice.plone (アンインストールする)"
+
+#: ../browser/controlpanel.py:34
+msgid "Secret key (leave blank to disable)"
+msgstr "シークレットキー (ブランクで無効)"
+
+#: ../browser/controlpanel.py:34
+msgid "Server address for internal requests from the Document Editing Service"
+msgstr "ドキュメント編集サービスからの内部リクエスト用サーバーアドレス"
+
+#: ../browser/controlpanel.py:34
+msgid "Document Editing Service address for internal requests from the server"
+msgstr "サーバーからの内部リクエスト用ドキュメント編集サービスアドレス"
+
+#: ../browser/menu.py
+msgid "Create in ONLYOFFICE"
+msgstr "ONLYOFFICEで作成"
+
+#: ../core/fileUtils.py
+msgid "Document"
+msgstr "ドキュメント"
+
+#: ../core/fileUtils.py
+msgid "Spreadsheet"
+msgstr "スプレッドシート"
+
+#: ../core/fileUtils.py
+msgid "Presentation"
+msgstr "プレゼンテーション"
+
+#: ../core/fileUtils.py
+msgid "Form template"
+msgstr "フォーム テンプレート"
+
+#: ../browser/api.py
+msgid "Save file copy as"
+msgstr "ファイルのコピーを保存する形は"
+
+#: ../browser/api.py
+msgid "Leave the field blank to save to the root of the site"
+msgstr "サイトのルートに保存するには、フィールドを空白のままにしてください"
+
+#: ../browser/api.py
+msgid "The file was successfully saved as "
+msgstr "正常に保存されたファイル形は"
+
+#: ../browser/api.py
+msgid "You are not authorized to add content to this folder"
+msgstr "このフォルダにコンテンツを追加する権限がありません"
+
+#: ../browser/api.py
+msgid "Unknown error while saving file"
+msgstr "ファイルの保存中に不明なエラーが発生しました"
+
+#: ../browser/templates/view.pt
+msgid "Not supported version DocumentServer."
+msgstr "この DocumentServerのバージョンはサポートされていません。"
+
+#: ../browser/templates/view.pt
+msgid "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online."
+msgstr "オンラインで入力可能なフォームを作成するには、ONLYOFFICE Docs 7.0版まで更新してください"
+
+#: ../browser/templates/view.pt
+msgid "Required input is missing."
+msgstr "必要な入力がありません"
+
+#: ../browser/controlpanel.py
+msgid "ONLYOFFICE cannot be reached"
+msgstr "ONLYOFFICEに接続できません。"
+
+#: ../browser/controlpanel.py
+msgid "Authorization error"
+msgstr "認識エラー"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check CommandService"
+msgstr "CommandServiceをチェック中にエラーが出ました"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check ConvertService"
+msgstr "ConvertServiceをチェック中にエラーが出ました"
+
+#: ../browser/controlpanel.py
+msgid "Mixed Active Content is not allowed. HTTPS address for Document Server is required."
+msgstr "アクティブコンテンツの混在は許可されていません。Document ServerにはHTTPSアドレスが必要です"
+
+#: ../browser/controlpanel.py
+msgid "Connect to demo ONLYOFFICE Document Server"
+msgstr "ONLYOFFICE Document Serverのデモ版へ接続します。"
+
+#: ../browser/controlpanel.py
+msgid "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."
+msgstr "このサーバーは公開テストサーバーであり、個人の機密データには使用しないでください。サーバーは30日間利用可能です。"
+
+#: ../browser/static/js/controlpanel.js
+msgid "The 30-day test period is over, you can no longer connect to demo ONLYOFFICE Document Server."
+msgstr "30日間のテスト期間が終了したら、ONLYOFFICE Document Server デモサーバーには繋がらなくなります"
+
+#: ../browser/controlpanel.py
+msgid "Error connecting to demo server (${error})"
+msgstr "デモサーバへの接続エラー (${error})"
+
+#: ../browser/actions.py
+msgid "You are using public demo ONLYOFFICE Document Server. Please do not store private sensitive data."
+msgstr "パブリック ONLYOFFICE Docs サーバーを使っているので、プライベートな機密データを利用しないようにしてください。"
+
+#: ../browser/api.py
+msgid "Conversion in ONLYOFFICE"
+msgstr "ONLYOFFICEでのファイル変換"
+
+#: ../browser/api.py
+msgid "You can convert you document in format OOXML"
+msgstr "OOXMLへの変換が可能です"
+
+#: ../browser/interfaces.py
+msgid "Current type:"
+msgstr "現在のタイプ:"
+
+#: ../browser/interfaces.py
+msgid "Target type:"
+msgstr "ターゲットのタイプ:"
+
+#: ../browser/apy.py
+msgid "Convert"
+msgstr "変換"
+
+#: ../browser/static/js/convert.js
+msgid "Item converted"
+msgstr "変換されたアイテム"
+
+#: ../browser/static/js/convert.js
+msgid "Converting ${currentType} to ${targetType} in progress.."
+msgstr "${currentType}から${targetType}への変換中"
+
+#: ../browser/static/js/convert.js
+msgid "Converting is finished"
+msgstr "変換終了"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned error (${error})"
+msgstr "文書変換サービスが(${error})エラーを返しました"
+
+#: ../core/conversionUtils.py
+msgid "Unknown error"
+msgstr "不明なエラー"
+
+#: ../core/conversionUtils.py
+msgid "Conversion timeout error"
+msgstr "変換のタイムアウトエラー"
+
+#: ../core/conversionUtils.py
+msgid "Conversion error"
+msgstr "変換エラー"
+
+#: ../core/conversionUtils.py
+msgid "Error while downloading the document file to be converted"
+msgstr "変換したいファイルのアップロード中にエラーが出ました"
+
+#: ../core/conversionUtils.py
+msgid "Incorrect password"
+msgstr "パスワードが正しくありません"
+
+#: ../core/conversionUtils.py
+msgid "Error while accessing the conversion result database"
+msgstr "変換結果のデータベースへのアクセス中にエラーが出ました"
+
+#: ../core/conversionUtils.py
+msgid "Input error"
+msgstr "入力エラー"
+
+#: ../core/conversionUtils.py
+msgid "Invalid token"
+msgstr "トークンが無効です"
+
+#: ../core/conversionUtils.py
+msgid "Undefined error code"
+msgstr "エラーコードが定義されていません"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned status ${status_code}"
+msgstr "文書変換サービスが${status_code}ステータスを返しました。"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service cannot be reached"
+msgstr "文書変換サービスがアクセスできません"
+
+#: ../browser/interfaces.py
+msgid "Select file type you want to download"
+msgstr "ダウンロードしたいファイルを選択してください"
+
+#: ../browser/interfaces.py
+msgid "Download as"
+msgstr "別の形式でダウンロード"
+
+#: ../browser/interfaces.py
+msgid "Download"
+msgstr "ダウンロード"
diff --git a/src/onlyoffice/plone/locales/nl/LC_MESSAGES/onlyoffice.plone.po b/src/onlyoffice/plone/locales/nl/LC_MESSAGES/onlyoffice.plone.po
new file mode 100644
index 0000000..3c782f3
--- /dev/null
+++ b/src/onlyoffice/plone/locales/nl/LC_MESSAGES/onlyoffice.plone.po
@@ -0,0 +1,257 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2020-02-14 10:33+0000\n"
+"PO-Revision-Date: 2022-09-30 17:58+0300\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+"X-Generator: Poedit 3.1.1\n"
+
+#: ../browser/controlpanel.py:12
+msgid "Document Editing service"
+msgstr "Documentbewerkingsservice"
+
+#: ../configure.zcml:28
+msgid "Installs the ONLYOFFICE connector add-on."
+msgstr "Installeert de add-on van de ONLYOFFICE connector"
+
+#: ../browser/controlpanel.py:21
+msgid "ONLYOFFICE Configuration"
+msgstr "ONLYOFFICE Configuratie"
+
+#: ../profiles/default/types/File.xml
+msgid "ONLYOFFICE Edit"
+msgstr "ONLYOFFICE Bewerken"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View"
+msgstr "ONLYOFFICE Bekijken"
+
+#: ../browser/configure.zcml
+msgid "Fill in form in ONLYOFFICE"
+msgstr "Formulier invullen in ONLYOFFICE"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View page"
+msgstr "ONLYOFFICE Bekijk pagina"
+
+#: ../browser/templates/error.pt:10
+msgid "ONLYOFFICE can't open this file."
+msgstr "ONLYOFFICE kan dit bestand niet openen."
+
+#: ../configure.zcml:37
+msgid "Uninstalls the ONLYOFFICE connector add-on."
+msgstr "Hiermee wordt de add-on ONLYOFFICE-connector verwijderd."
+
+#: ../configure.zcml:28
+msgid "onlyoffice.plone"
+msgstr "onlyoffice.plone"
+
+#: ../configure.zcml:37
+msgid "onlyoffice.plone (uninstall)"
+msgstr "onlyoffice.plone (verwijdering)"
+
+#: ../browser/controlpanel.py:34
+msgid "Secret key (leave blank to disable)"
+msgstr "Geheime sleutel (leeg laten om uit te schakelen)"
+
+#: ../browser/controlpanel.py:34
+msgid "Server address for internal requests from the Document Editing Service"
+msgstr ""
+
+#: ../browser/controlpanel.py:34
+msgid "Document Editing Service address for internal requests from the server"
+msgstr ""
+
+#: ../browser/menu.py
+msgid "Create in ONLYOFFICE"
+msgstr "Aanmaken in ONLYOFFICE"
+
+#: ../core/fileUtils.py
+msgid "Document"
+msgstr "Tekst"
+
+#: ../core/fileUtils.py
+msgid "Spreadsheet"
+msgstr "Spreadsheet"
+
+#: ../core/fileUtils.py
+msgid "Presentation"
+msgstr "Presentatie"
+
+#: ../core/fileUtils.py
+msgid "Form template"
+msgstr "Formulier sjabloon"
+
+#: ../browser/api.py
+msgid "Save file copy as"
+msgstr "Bestand opslaan als"
+
+#: ../browser/api.py
+msgid "Leave the field blank to save to the root of the site"
+msgstr "Laat het veld leeg om op te slaan in de hoofdmap van de site"
+
+#: ../browser/api.py
+msgid "The file was successfully saved as "
+msgstr "Het bestand is succesvol opgeslagen als"
+
+#: ../browser/api.py
+msgid "You are not authorized to add content to this folder"
+msgstr "U bent niet gemachtigd om materiaal aan deze map toe te voegen"
+
+#: ../browser/api.py
+msgid "Unknown error while saving file"
+msgstr "Onbekende fout bij het opslaan van bestand de site"
+
+#: ../browser/templates/view.pt
+msgid "Not supported version DocumentServer."
+msgstr "Niet ondersteunde versie DocumentServer."
+
+#: ../browser/templates/view.pt
+msgid "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online."
+msgstr "Update ONLYOFFICE Docs naar versie 7.0 om online invulbare formulieren te kunnen gebruiken."
+
+#: ../browser/templates/view.pt
+msgid "Required input is missing."
+msgstr "Verplichte waarde mist."
+
+#: ../browser/controlpanel.py
+msgid "ONLYOFFICE cannot be reached"
+msgstr "ONLYOFFICE kan niet worden bereikt"
+
+#: ../browser/controlpanel.py
+msgid "Authorization error"
+msgstr "Autorisatie fout"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check CommandService"
+msgstr "Fout bij de controle van CommandService"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check ConvertService"
+msgstr "Fout bij de controle van ConvertService"
+
+#: ../browser/controlpanel.py
+msgid "Mixed Active Content is not allowed. HTTPS address for Document Server is required."
+msgstr "Gemende Actieve Inhoud is niet toegestaan. HTTPS-adres voor ONLYOFFICE Docs is vereist."
+
+#: ../browser/controlpanel.py
+msgid "Connect to demo ONLYOFFICE Document Server"
+msgstr "Verbinding maken met demo ONLYOFFICE documentserver"
+
+#: ../browser/controlpanel.py
+msgid "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."
+msgstr "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."
+
+#: ../browser/static/js/controlpanel.js
+msgid "The 30-day test period is over, you can no longer connect to demo ONLYOFFICE Document Server."
+msgstr "De 30-dagen proefperiode is voorbij, u kunt niet langer verbinding maken met demo ONLYOFFICE Document server."
+
+#: ../browser/controlpanel.py
+msgid "Error connecting to demo server (${error})"
+msgstr "Fout bij verbinding met demoserver (${error})"
+
+#: ../browser/actions.py
+msgid "You are using public demo ONLYOFFICE Document Server. Please do not store private sensitive data."
+msgstr "U gebruikt de openbare demo ONLYOFFICE Document server. Sla geen vertrouwelijke gegevens op."
+
+#: ../browser/api.py
+msgid "Conversion in ONLYOFFICE"
+msgstr "Conversie in ONLYOFFICE"
+
+#: ../browser/api.py
+msgid "You can convert you document in format OOXML"
+msgstr "U kunt uw document converteren in het formaat OOXML"
+
+#: ../browser/interfaces.py
+msgid "Current type:"
+msgstr "Huidig type:"
+
+#: ../browser/interfaces.py
+msgid "Target type:"
+msgstr "Gewenst type:"
+
+#: ../browser/apy.py
+msgid "Convert"
+msgstr "Omzetten"
+
+#: ../browser/static/js/convert.js
+msgid "Item converted"
+msgstr "Item geconverteerd"
+
+#: ../browser/static/js/convert.js
+msgid "Converting ${currentType} to ${targetType} in progress."
+msgstr "Conversie van ${currentType} naar ${targetType} bezig."
+
+#: ../browser/static/js/convert.js
+msgid "Converting is finished"
+msgstr "Het converteren is voltooid"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned error (${error})"
+msgstr "Document conversiedienst gaf foutmelding (${error})"
+
+#: ../core/conversionUtils.py
+msgid "Unknown error"
+msgstr "Onbekende fout"
+
+#: ../core/conversionUtils.py
+msgid "Conversion timeout error"
+msgstr "Conversie time-out fout"
+
+#: ../core/conversionUtils.py
+msgid "Conversion error"
+msgstr "Conversiefout"
+
+#: ../core/conversionUtils.py
+msgid "Error while downloading the document file to be converted"
+msgstr "Fout bij de toegang tot de database met conversieresultaten"
+
+#: ../core/conversionUtils.py
+msgid "Incorrect password"
+msgstr "Onjuist wachtwoord"
+
+#: ../core/conversionUtils.py
+msgid "Error while accessing the conversion result database"
+msgstr "Fout bij de toegang tot de database met conversieresultaten"
+
+#: ../core/conversionUtils.py
+msgid "Input error"
+msgstr "Invoerfout"
+
+#: ../core/conversionUtils.py
+msgid "Invalid token"
+msgstr "Ongeldig token"
+
+#: ../core/conversionUtils.py
+msgid "Undefined error code"
+msgstr "Ongedefinieerde foutcode"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned status ${status_code}"
+msgstr "Document conversiedienst heeft status ${status_code} teruggestuurd"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service cannot be reached"
+msgstr "Document conversiedienst kan niet worden bereikt"
+
+#: ../browser/interfaces.py
+msgid "Select file type you want to download"
+msgstr "Kies het bestandstype dat u wilt downloaden"
+
+#: ../browser/interfaces.py
+msgid "Download as"
+msgstr "Downloaden als"
+
+#: ../browser/interfaces.py
+msgid "Download"
+msgstr "Downloaden"
diff --git a/src/onlyoffice/plone/locales/pt/LC_MESSAGES/onlyoffice.plone.po b/src/onlyoffice/plone/locales/pt/LC_MESSAGES/onlyoffice.plone.po
new file mode 100644
index 0000000..f7cacae
--- /dev/null
+++ b/src/onlyoffice/plone/locales/pt/LC_MESSAGES/onlyoffice.plone.po
@@ -0,0 +1,257 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2020-02-14 10:33+0000\n"
+"PO-Revision-Date: 2022-10-10 14:07+0300\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+"X-Generator: Poedit 3.1.1\n"
+
+#: ../browser/controlpanel.py:12
+msgid "Document Editing service"
+msgstr "Serviço de edição de documentos"
+
+#: ../configure.zcml:28
+msgid "Installs the ONLYOFFICE connector add-on."
+msgstr "Instala o complemento do conector do ONLYOFFICE"
+
+#: ../browser/controlpanel.py:21
+msgid "ONLYOFFICE Configuration"
+msgstr "Configuração do ONLYOFFICE"
+
+#: ../profiles/default/types/File.xml
+msgid "ONLYOFFICE Edit"
+msgstr "ONLYOFFICE Editar"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View"
+msgstr "ONLYOFFICE Ver"
+
+#: ../browser/configure.zcml
+msgid "Fill in form in ONLYOFFICE"
+msgstr "Preencher formulário no ONLYOFFICE"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View page"
+msgstr "ONLYOFFICE Ver página"
+
+#: ../browser/templates/error.pt:10
+msgid "ONLYOFFICE can't open this file."
+msgstr "O ONLYOFFICE não pode abrir este arquivo"
+
+#: ../configure.zcml:37
+msgid "Uninstalls the ONLYOFFICE connector add-on."
+msgstr "Desinstala o complemento do conector do ONLYOFFICE"
+
+#: ../configure.zcml:28
+msgid "onlyoffice.plone"
+msgstr "onlyoffice.plone"
+
+#: ../configure.zcml:37
+msgid "onlyoffice.plone (uninstall)"
+msgstr "onlyoffice.plone (desinstalar)"
+
+#: ../browser/controlpanel.py:34
+msgid "Secret key (leave blank to disable)"
+msgstr "Chave secreta (deixe em branco para desativar)"
+
+#: ../browser/controlpanel.py:34
+msgid "Server address for internal requests from the Document Editing Service"
+msgstr "Endereço do servidor para solicitações internas do Serviço de Edição de Documentos"
+
+#: ../browser/controlpanel.py:34
+msgid "Document Editing Service address for internal requests from the server"
+msgstr "Endereço do serviço de edição de documentos para solicitações internas do servidor"
+
+#: ../browser/menu.py
+msgid "Create in ONLYOFFICE"
+msgstr "Criar no ONLYOFFICE"
+
+#: ../core/fileUtils.py
+msgid "Document"
+msgstr "Documento"
+
+#: ../core/fileUtils.py
+msgid "Spreadsheet"
+msgstr "Planilha"
+
+#: ../core/fileUtils.py
+msgid "Presentation"
+msgstr "Apresentação"
+
+#: ../core/fileUtils.py
+msgid "Form template"
+msgstr "Modelo de formulário"
+
+#: ../browser/api.py
+msgid "Save file copy as"
+msgstr "Salvar cópia de arquivo como"
+
+#: ../browser/api.py
+msgid "Leave the field blank to save to the root of the site"
+msgstr "Deixe o campo em branco para salvar na raiz do site"
+
+#: ../browser/api.py
+msgid "The file was successfully saved as "
+msgstr "O arquivo foi salvo com sucesso como"
+
+#: ../browser/api.py
+msgid "You are not authorized to add content to this folder"
+msgstr "Você não está autorizado a adicionar conteúdo a esta pasta"
+
+#: ../browser/api.py
+msgid "Unknown error while saving file"
+msgstr "Erro desconhecido ao salvar o documento"
+
+#: ../browser/templates/view.pt
+msgid "Not supported version DocumentServer."
+msgstr "Versão não suportada Servidor de documentos."
+
+#: ../browser/templates/view.pt
+msgid "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online."
+msgstr "Atualize o ONLYOFFICE Docs para a versão 7.0 para trabalhar em formulários preenchíveis online"
+
+#: ../browser/templates/view.pt
+msgid "Required input is missing."
+msgstr "Falta informação obrigatória."
+
+#: ../browser/controlpanel.py
+msgid "ONLYOFFICE cannot be reached"
+msgstr "ONLYOFFICE não pode ser alcançado"
+
+#: ../browser/controlpanel.py
+msgid "Authorization error"
+msgstr "Erro de autorização"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check CommandService"
+msgstr "Erro ao tentar verificar o serviço de comando"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check ConvertService"
+msgstr "Erro ao tentar verificar o serviço de conversão"
+
+#: ../browser/controlpanel.py
+msgid "Mixed Active Content is not allowed. HTTPS address for Document Server is required."
+msgstr "Conteúdo Misto não é permitido. É necessário um endereço HTTPS para o ONLYOFFICE Docs."
+
+#: ../browser/controlpanel.py
+msgid "Connect to demo ONLYOFFICE Document Server"
+msgstr "Conecte-se ao servidor de documentos do ONLYOFFICE de demonstração"
+
+#: ../browser/controlpanel.py
+msgid "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."
+msgstr "Este é um servidor de teste público, não o use para dados confidenciais. O servidor estará disponível por um período de 30 dias."
+
+#: ../browser/static/js/controlpanel.js
+msgid "The 30-day test period is over, you can no longer connect to demo ONLYOFFICE Document Server."
+msgstr "O período de teste de 30 dias acabou, você não pode mais se conectar ao Servidor do documento ONLYOFFICE de demonstração"
+
+#: ../browser/controlpanel.py
+msgid "Error connecting to demo server (${error})"
+msgstr "Erro ao conectar ao servidor de demonstração (${error})"
+
+#: ../browser/actions.py
+msgid "You are using public demo ONLYOFFICE Document Server. Please do not store private sensitive data."
+msgstr "Você está usando o Servidor do documento ONLYOFFICE de demonstração pública. Não armazene dados confidenciais."
+
+#: ../browser/api.py
+msgid "Conversion in ONLYOFFICE"
+msgstr "Conversão no ONLYOFFICE"
+
+#: ../browser/api.py
+msgid "You can convert you document in format OOXML"
+msgstr "Você pode converter seu documento no formato OOXML"
+
+#: ../browser/interfaces.py
+msgid "Current type:"
+msgstr "Tipo atual:"
+
+#: ../browser/interfaces.py
+msgid "Target type:"
+msgstr "Tipo de alvo:"
+
+#: ../browser/apy.py
+msgid "Convert"
+msgstr "Converter"
+
+#: ../browser/static/js/convert.js
+msgid "Item converted"
+msgstr "Item convertido"
+
+#: ../browser/static/js/convert.js
+msgid "Converting ${currentType} to ${targetType} in progress."
+msgstr "Convertendo ${currentType} para ${targetType} em andamento."
+
+#: ../browser/static/js/convert.js
+msgid "Converting is finished"
+msgstr "A conversão está concluída"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned error (${error})"
+msgstr "O serviço de conversão de documentos retornou um erro (${error})"
+
+#: ../core/conversionUtils.py
+msgid "Unknown error"
+msgstr "Erro desconhecido"
+
+#: ../core/conversionUtils.py
+msgid "Conversion timeout error"
+msgstr "Erro de tempo limite de conversão"
+
+#: ../core/conversionUtils.py
+msgid "Conversion error"
+msgstr "Erro de conversão"
+
+#: ../core/conversionUtils.py
+msgid "Error while downloading the document file to be converted"
+msgstr "Erro ao baixar o arquivo do documento a ser convertido"
+
+#: ../core/conversionUtils.py
+msgid "Incorrect password"
+msgstr "Senha incorreta"
+
+#: ../core/conversionUtils.py
+msgid "Error while accessing the conversion result database"
+msgstr "Erro ao acessar o banco de dados de resultados de conversão"
+
+#: ../core/conversionUtils.py
+msgid "Input error"
+msgstr "Erro de entrada"
+
+#: ../core/conversionUtils.py
+msgid "Invalid token"
+msgstr "Token inválido"
+
+#: ../core/conversionUtils.py
+msgid "Undefined error code"
+msgstr "Código de erro indefinido"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned status ${status_code}"
+msgstr "O serviço de conversão de documentos retornou o status ${status_code}"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service cannot be reached"
+msgstr "O serviço de conversão de documentos não pode ser alcançado"
+
+#: ../browser/interfaces.py
+msgid "Select file type you want to download"
+msgstr "Selecione o tipo de arquivo que deseja baixar"
+
+#: ../browser/interfaces.py
+msgid "Download as"
+msgstr "Baixar como"
+
+#: ../browser/interfaces.py
+msgid "Download"
+msgstr "Baixar"
diff --git a/src/onlyoffice/plone/locales/ru/LC_MESSAGES/onlyoffice.plone.po b/src/onlyoffice/plone/locales/ru/LC_MESSAGES/onlyoffice.plone.po
new file mode 100644
index 0000000..cd6b62f
--- /dev/null
+++ b/src/onlyoffice/plone/locales/ru/LC_MESSAGES/onlyoffice.plone.po
@@ -0,0 +1,257 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2020-02-14 10:33+0000\n"
+"PO-Revision-Date: 2022-10-07 19:00+0300\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+"X-Generator: Poedit 3.1.1\n"
+
+#: ../browser/controlpanel.py:12
+msgid "Document Editing service"
+msgstr "Адрес Document Server"
+
+#: ../configure.zcml:28
+msgid "Installs the ONLYOFFICE connector add-on."
+msgstr "Установка коннектора ONLYOFFICE"
+
+#: ../browser/controlpanel.py:21
+msgid "ONLYOFFICE Configuration"
+msgstr "Настройка ONLYOFFICE"
+
+#: ../profiles/default/types/File.xml
+msgid "ONLYOFFICE Edit"
+msgstr "Редактирование файла в ONLYOFFICE"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View"
+msgstr "Просмотр файла в ONLYOFFICE"
+
+#: ../browser/configure.zcml
+msgid "Fill in form in ONLYOFFICE"
+msgstr "Заполнить форму в ONLYOFFICE"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View page"
+msgstr "ONLYOFFICE (Страница просмотра файла)"
+
+#: ../browser/templates/error.pt:10
+msgid "ONLYOFFICE can't open this file."
+msgstr "Невозможно открыть этот файл с помощью ONLYOFFICE"
+
+#: ../configure.zcml:37
+msgid "Uninstalls the ONLYOFFICE connector add-on."
+msgstr "Удаление коннектора ONLYOFFICE."
+
+#: ../configure.zcml:28
+msgid "onlyoffice.plone"
+msgstr "onlyoffice.plone"
+
+#: ../configure.zcml:37
+msgid "onlyoffice.plone (uninstall)"
+msgstr "onlyoffice.plone (удаление)"
+
+#: ../browser/controlpanel.py:34
+msgid "Secret key (leave blank to disable)"
+msgstr "Секретный ключ (оставьте пустым для отключения)"
+
+#: ../browser/controlpanel.py:34
+msgid "Server address for internal requests from the Document Editing Service"
+msgstr "Адрес сервера для внутренних запросов службы редактирования документов"
+
+#: ../browser/controlpanel.py:34
+msgid "Document Editing Service address for internal requests from the server"
+msgstr "Адрес службы редактирования документов для внутренних запросов сервера"
+
+#: ../browser/menu.py
+msgid "Create in ONLYOFFICE"
+msgstr "Создать в ONLYOFFICE"
+
+#: ../core/fileUtils.py
+msgid "Document"
+msgstr "Документ"
+
+#: ../core/fileUtils.py
+msgid "Spreadsheet"
+msgstr "Таблица"
+
+#: ../core/fileUtils.py
+msgid "Presentation"
+msgstr "Презентация"
+
+#: ../core/fileUtils.py
+msgid "Form template"
+msgstr "Шаблон формы"
+
+#: ../browser/api.py
+msgid "Save file copy as"
+msgstr "Сохранить копию файла как"
+
+#: ../browser/api.py
+msgid "Leave the field blank to save to the root of the site"
+msgstr "Оставьте поле пустым, чтобы сохранить в корень сайта"
+
+#: ../browser/api.py
+msgid "The file was successfully saved as "
+msgstr "Файл был успешно сохранен как "
+
+#: ../browser/api.py
+msgid "You are not authorized to add content to this folder"
+msgstr "У вас нет прав на добавление содержимого в эту папку"
+
+#: ../browser/api.py
+msgid "Unknown error while saving file"
+msgstr "Неизвестная ошибка при сохранении файла"
+
+#: ../browser/templates/view.pt
+msgid "Not supported version DocumentServer."
+msgstr "Неподдерживаемая версия Сервера документов."
+
+#: ../browser/templates/view.pt
+msgid "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online."
+msgstr "Обновите сервер документов ONLYOFFICE до версии 7.0, чтобы работать с заполняемыми формами."
+
+#: ../browser/templates/view.pt
+msgid "Required input is missing."
+msgstr "Отсутствуют требуемые входные данные"
+
+#: ../browser/controlpanel.py
+msgid "ONLYOFFICE cannot be reached"
+msgstr "Приложение ONLYOFFICE недоступно"
+
+#: ../browser/controlpanel.py
+msgid "Authorization error"
+msgstr "Ошибка авторизации"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check CommandService"
+msgstr "Ошибка во время проверки CommandService"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check ConvertService"
+msgstr "Ошибка во время проверки ConvertService"
+
+#: ../browser/controlpanel.py
+msgid "Mixed Active Content is not allowed. HTTPS address for Document Server is required."
+msgstr "Смешанное активное содержимое запрещено. Для Сервера документов необходимо использовать HTTPS-адрес."
+
+#: ../browser/controlpanel.py
+msgid "Connect to demo ONLYOFFICE Document Server"
+msgstr "Подключиться к демонстрационному Серверу Документов ONLYOFFICE"
+
+#: ../browser/controlpanel.py
+msgid "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."
+msgstr "Это публичный тестовый сервер, пожалуйста, не используйте его для личных конфиденциальных данных. Сервер будет доступен в течение 30 дней."
+
+#: ../browser/static/js/controlpanel.js
+msgid "The 30-day test period is over, you can no longer connect to demo ONLYOFFICE Document Server."
+msgstr "30-дневный тестовый период закончен, вы больше не можете подключаться к демонстрационному Серверу Документов ONLYOFFICE"
+
+#: ../browser/controlpanel.py
+msgid "Error connecting to demo server (${error})"
+msgstr "Ошибка подключения к демонстрационному серверу (${error})"
+
+#: ../browser/actions.py
+msgid "You are using public demo ONLYOFFICE Document Server. Please do not store private sensitive data."
+msgstr "Вы используете публичный демонстрационный Сервер документов ONLYOFFICE. Пожалуйста, не храните конфиденциальные данные."
+
+#: ../browser/api.py
+msgid "Conversion in ONLYOFFICE"
+msgstr "Конвертация в ONLYOFFICE"
+
+#: ../browser/api.py
+msgid "You can convert you document in format OOXML"
+msgstr "Вы можете преобразовать документ в формат OOXML"
+
+#: ../browser/interfaces.py
+msgid "Current type:"
+msgstr "Текущий тип:"
+
+#: ../browser/interfaces.py
+msgid "Target type:"
+msgstr "Целевой тип:"
+
+#: ../browser/apy.py
+msgid "Convert"
+msgstr "Конвертировать"
+
+#: ../browser/static/js/convert.js
+msgid "Item converted"
+msgstr "Элемент преобразован"
+
+#: ../browser/static/js/convert.js
+msgid "Converting ${currentType} to ${targetType} in progress.."
+msgstr "Выполняется преобразование ${currentType} в ${targetType}"
+
+#: ../browser/static/js/convert.js
+msgid "Converting is finished"
+msgstr "Преобразование завершено"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned error (${error})"
+msgstr "Служба преобразования документов вернула ошибку (${error})"
+
+#: ../core/conversionUtils.py
+msgid "Unknown error"
+msgstr "Неизвестная ошибка"
+
+#: ../core/conversionUtils.py
+msgid "Conversion timeout error"
+msgstr "Ошибка тайм-аута конвертации"
+
+#: ../core/conversionUtils.py
+msgid "Conversion error"
+msgstr "Ошибка преобразования"
+
+#: ../core/conversionUtils.py
+msgid "Error while downloading the document file to be converted"
+msgstr "Ошибка при загрузке файла документа для преобразования"
+
+#: ../core/conversionUtils.py
+msgid "Incorrect password"
+msgstr "Неверный пароль"
+
+#: ../core/conversionUtils.py
+msgid "Error while accessing the conversion result database"
+msgstr "Ошибка при доступе к базе данных результатов конвертации"
+
+#: ../core/conversionUtils.py
+msgid "Input error"
+msgstr "Ошибка ввода"
+
+#: ../core/conversionUtils.py
+msgid "Invalid token"
+msgstr "Неверный токен"
+
+#: ../core/conversionUtils.py
+msgid "Undefined error code"
+msgstr "Неопределенный код ошибки"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned status ${status_code}"
+msgstr "Служба преобразования документов вернула статус ${status_code}"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service cannot be reached"
+msgstr "Служба преобразования документов недоступна"
+
+#: ../browser/interfaces.py
+msgid "Select file type you want to download"
+msgstr "Выберите тип файла, который вы хотите скачать"
+
+#: ../browser/interfaces.py
+msgid "Download as"
+msgstr "Скачать как"
+
+#: ../browser/interfaces.py
+msgid "Download"
+msgstr "Скачать"
diff --git a/src/onlyoffice/connector/locales/update.py b/src/onlyoffice/plone/locales/update.py
similarity index 95%
rename from src/onlyoffice/connector/locales/update.py
rename to src/onlyoffice/plone/locales/update.py
index 60cd9fa..e2db31a 100644
--- a/src/onlyoffice/connector/locales/update.py
+++ b/src/onlyoffice/plone/locales/update.py
@@ -5,10 +5,10 @@
import subprocess
-domain = 'onlyoffice.connector'
+domain = 'onlyoffice.plone'
os.chdir(pkg_resources.resource_filename(domain, ''))
os.chdir('../../../')
-target_path = 'src/onlyoffice/connector/'
+target_path = 'src/onlyoffice/plone/'
locale_path = target_path + 'locales/'
i18ndude = './bin/i18ndude'
diff --git a/src/onlyoffice/connector/locales/update.sh b/src/onlyoffice/plone/locales/update.sh
similarity index 73%
rename from src/onlyoffice/connector/locales/update.sh
rename to src/onlyoffice/plone/locales/update.sh
index f84f278..a3653a5 100644
--- a/src/onlyoffice/connector/locales/update.sh
+++ b/src/onlyoffice/plone/locales/update.sh
@@ -3,10 +3,10 @@
# ``export PATH=$PATH:$BUILDOUT_DIR/bin`` when i18ndude is located in your buildout's bin directory)
#
# For every language you want to translate into you need a
-# locales/[language]/LC_MESSAGES/onlyoffice.connector.po
-# (e.g. locales/de/LC_MESSAGES/onlyoffice.connector.po)
+# locales/[language]/LC_MESSAGES/onlyoffice.plone.po
+# (e.g. locales/de/LC_MESSAGES/onlyoffice.plone.po)
-domain=onlyoffice.connector
+domain=onlyoffice.plone
../../../../bin/i18ndude rebuild-pot --pot $domain.pot --create $domain ../
../../../../bin/i18ndude sync --pot $domain.pot */LC_MESSAGES/$domain.po
diff --git a/src/onlyoffice/plone/locales/zh/LC_MESSAGES/onlyoffice.plone.po b/src/onlyoffice/plone/locales/zh/LC_MESSAGES/onlyoffice.plone.po
new file mode 100644
index 0000000..3cc012f
--- /dev/null
+++ b/src/onlyoffice/plone/locales/zh/LC_MESSAGES/onlyoffice.plone.po
@@ -0,0 +1,257 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2020-02-14 10:33+0000\n"
+"PO-Revision-Date: 2022-10-10 14:08+0300\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Language: zh\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: DOMAIN\n"
+"X-Generator: Poedit 3.1.1\n"
+
+#: ../browser/controlpanel.py:12
+msgid "Document Editing service"
+msgstr "文档编辑服务"
+
+#: ../configure.zcml:28
+msgid "Installs the ONLYOFFICE connector add-on."
+msgstr "安装ONLYOFFICE连接器附加组件"
+
+#: ../browser/controlpanel.py:21
+msgid "ONLYOFFICE Configuration"
+msgstr "ONLYOFFICE配置"
+
+#: ../profiles/default/types/File.xml
+msgid "ONLYOFFICE Edit"
+msgstr "ONLYOFFICE 编辑"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View"
+msgstr "ONLYOFFICE视图"
+
+#: ../browser/configure.zcml
+msgid "Fill in form in ONLYOFFICE"
+msgstr "在ONLYOFFICE上填写表单"
+
+#: ../browser/configure.zcml:52
+msgid "ONLYOFFICE View page"
+msgstr "ONLYOFFICE视图页"
+
+#: ../browser/templates/error.pt:10
+msgid "ONLYOFFICE can't open this file."
+msgstr "ONLYOFFICE无法打开该文件"
+
+#: ../configure.zcml:37
+msgid "Uninstalls the ONLYOFFICE connector add-on."
+msgstr "卸载ONLYOFFICE连接器附加组件"
+
+#: ../configure.zcml:28
+msgid "onlyoffice.plone"
+msgstr "onlyoffice.plone"
+
+#: ../configure.zcml:37
+msgid "onlyoffice.plone (uninstall)"
+msgstr "onlyoffice.plone (卸载)"
+
+#: ../browser/controlpanel.py:34
+msgid "Secret key (leave blank to disable)"
+msgstr "秘钥(留空为关闭)"
+
+#: ../browser/controlpanel.py:34
+msgid "Server address for internal requests from the Document Editing Service"
+msgstr "来自文档编辑服务用于内部请求的服务器地址"
+
+#: ../browser/controlpanel.py:34
+msgid "Document Editing Service address for internal requests from the server"
+msgstr "来自服务器用于内部请求的文档编辑服务"
+
+#: ../browser/menu.py
+msgid "Create in ONLYOFFICE"
+msgstr "在ONLYOFFICE中创建"
+
+#: ../core/fileUtils.py
+msgid "Document"
+msgstr "文档"
+
+#: ../core/fileUtils.py
+msgid "Spreadsheet"
+msgstr "电子表格"
+
+#: ../core/fileUtils.py
+msgid "Presentation"
+msgstr "演示文稿"
+
+#: ../core/fileUtils.py
+msgid "Form template"
+msgstr "表单模板"
+
+#: ../browser/api.py
+msgid "Save file copy as"
+msgstr "文件副本另存为"
+
+#: ../browser/api.py
+msgid "Leave the field blank to save to the root of the site"
+msgstr " 请将该字段留空以保存到网站根目录下"
+
+#: ../browser/api.py
+msgid "The file was successfully saved as "
+msgstr "文档已另存为"
+
+#: ../browser/api.py
+msgid "You are not authorized to add content to this folder"
+msgstr "您无权将内容添加到此文件夹中"
+
+#: ../browser/api.py
+msgid "Unknown error while saving file"
+msgstr "保存文件时出现未知错误"
+
+#: ../browser/templates/view.pt
+msgid "Not supported version DocumentServer."
+msgstr "不支持的DocumentServer 版本"
+
+#: ../browser/templates/view.pt
+msgid "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online."
+msgstr "请将ONLYOFFICE Docs更新到7.0版本,以便在线编辑可填写的表单"
+
+#: ../browser/templates/view.pt
+msgid "Required input is missing."
+msgstr "缺失所需输入内容"
+
+#: ../browser/controlpanel.py
+msgid "ONLYOFFICE cannot be reached"
+msgstr "ONLYOFFICE服务器无法连接"
+
+#: ../browser/controlpanel.py
+msgid "Authorization error"
+msgstr "授权错误"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check CommandService"
+msgstr "在尝试检查CommandService时出错"
+
+#: ../browser/controlpanel.py
+msgid "Error when trying to check ConvertService"
+msgstr "在尝试检查ConvertService时出错"
+
+#: ../browser/controlpanel.py
+msgid "Mixed Active Content is not allowed. HTTPS address for Document Server is required."
+msgstr "不允许混合活动内容,请使用HTTPS连接Document Server"
+
+#: ../browser/controlpanel.py
+msgid "Connect to demo ONLYOFFICE Document Server"
+msgstr "连接到演示ONLYOFFICE文件服务器"
+
+#: ../browser/controlpanel.py
+msgid "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."
+msgstr "这是公开的测试服务器,请勿用于隐私数据。服务器试用期限为30天。"
+
+#: ../browser/static/js/controlpanel.js
+msgid "The 30-day test period is over, you can no longer connect to demo ONLYOFFICE Document Server."
+msgstr "30天试用期已结束,无法连接演示ONLYOFFICE 文档服务器。"
+
+#: ../browser/controlpanel.py
+msgid "Error connecting to demo server (${error})"
+msgstr "连接到演示服务器出错(${error})"
+
+#: ../browser/actions.py
+msgid "You are using public demo ONLYOFFICE Document Server. Please do not store private sensitive data."
+msgstr "您正在使用公开的演示ONLYOFFICE 文档服务器,请勿存储隐私数据"
+
+#: ../browser/api.py
+msgid "Conversion in ONLYOFFICE"
+msgstr "在ONLYOFFICE中进行转换"
+
+#: ../browser/api.py
+msgid "You can convert you document in format OOXML"
+msgstr "您可以将您的文件转换为OOXML格式"
+
+#: ../browser/interfaces.py
+msgid "Current type:"
+msgstr "目前类型:"
+
+#: ../browser/interfaces.py
+msgid "Target type:"
+msgstr "目标类型:"
+
+#: ../browser/apy.py
+msgid "Convert"
+msgstr "转换"
+
+#: ../browser/static/js/convert.js
+msgid "Item converted"
+msgstr "项目已转换"
+
+#: ../browser/static/js/convert.js
+msgid "Converting ${currentType} to ${targetType} in progress.."
+msgstr "正在将${currentType}转换为${targetType}"
+
+#: ../browser/static/js/convert.js
+msgid "Converting is finished"
+msgstr "转换完成"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned error (${error})"
+msgstr "文件转换服务返回(${error})错误"
+
+#: ../core/conversionUtils.py
+msgid "Unknown error"
+msgstr "未知错误"
+
+#: ../core/conversionUtils.py
+msgid "Conversion timeout error"
+msgstr "转换超时错误"
+
+#: ../core/conversionUtils.py
+msgid "Conversion error"
+msgstr "转换错误"
+
+#: ../core/conversionUtils.py
+msgid "Error while downloading the document file to be converted"
+msgstr "下载要转换的文件时出错"
+
+#: ../core/conversionUtils.py
+msgid "Incorrect password"
+msgstr "密码不正确"
+
+#: ../core/conversionUtils.py
+msgid "Error while accessing the conversion result database"
+msgstr "访问转换结果数据库时出错"
+
+#: ../core/conversionUtils.py
+msgid "Input error"
+msgstr "输入错误"
+
+#: ../core/conversionUtils.py
+msgid "Invalid token"
+msgstr "令牌无效"
+
+#: ../core/conversionUtils.py
+msgid "Undefined error code"
+msgstr "未定义的错误代码"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service returned status ${status_code}"
+msgstr "文件转换服务返回 ${status_code} 状态"
+
+#: ../core/conversionUtils.py
+msgid "Document conversion service cannot be reached"
+msgstr "无法链接到文件转换服务"
+
+#: ../browser/interfaces.py
+msgid "Select file type you want to download"
+msgstr "选择需要下载的文件类型"
+
+#: ../browser/interfaces.py
+msgid "Download as"
+msgstr "下载为"
+
+#: ../browser/interfaces.py
+msgid "Download"
+msgstr "下载"
diff --git a/src/onlyoffice/connector/permissions.zcml b/src/onlyoffice/plone/permissions.zcml
similarity index 100%
rename from src/onlyoffice/connector/permissions.zcml
rename to src/onlyoffice/plone/permissions.zcml
diff --git a/src/onlyoffice/plone/profiles/default/actions.xml b/src/onlyoffice/plone/profiles/default/actions.xml
new file mode 100644
index 0000000..614be6b
--- /dev/null
+++ b/src/onlyoffice/plone/profiles/default/actions.xml
@@ -0,0 +1,34 @@
+
+
\ No newline at end of file
diff --git a/src/onlyoffice/plone/profiles/default/browserlayer.xml b/src/onlyoffice/plone/profiles/default/browserlayer.xml
new file mode 100644
index 0000000..76f7b5a
--- /dev/null
+++ b/src/onlyoffice/plone/profiles/default/browserlayer.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/src/onlyoffice/connector/profiles/default/catalog.xml b/src/onlyoffice/plone/profiles/default/catalog.xml
similarity index 100%
rename from src/onlyoffice/connector/profiles/default/catalog.xml
rename to src/onlyoffice/plone/profiles/default/catalog.xml
diff --git a/src/onlyoffice/connector/profiles/default/controlpanel.xml b/src/onlyoffice/plone/profiles/default/controlpanel.xml
similarity index 100%
rename from src/onlyoffice/connector/profiles/default/controlpanel.xml
rename to src/onlyoffice/plone/profiles/default/controlpanel.xml
diff --git a/src/onlyoffice/connector/profiles/default/metadata.xml b/src/onlyoffice/plone/profiles/default/metadata.xml
similarity index 86%
rename from src/onlyoffice/connector/profiles/default/metadata.xml
rename to src/onlyoffice/plone/profiles/default/metadata.xml
index 2c01a41..d066f7b 100644
--- a/src/onlyoffice/connector/profiles/default/metadata.xml
+++ b/src/onlyoffice/plone/profiles/default/metadata.xml
@@ -1,6 +1,6 @@
- 2110
+ 3000
diff --git a/src/onlyoffice/connector/profiles/default/registry.xml b/src/onlyoffice/plone/profiles/default/registry.xml
similarity index 77%
rename from src/onlyoffice/connector/profiles/default/registry.xml
rename to src/onlyoffice/plone/profiles/default/registry.xml
index a39ec97..3201f83 100644
--- a/src/onlyoffice/connector/profiles/default/registry.xml
+++ b/src/onlyoffice/plone/profiles/default/registry.xml
@@ -1,11 +1,11 @@
+ i18n:domain="onlyoffice.plone">
-
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/onlyoffice/connector/profiles/default/types/File.xml b/src/onlyoffice/plone/profiles/default/types/File.xml
similarity index 64%
rename from src/onlyoffice/connector/profiles/default/types/File.xml
rename to src/onlyoffice/plone/profiles/default/types/File.xml
index bafe7e9..1323d89 100644
--- a/src/onlyoffice/connector/profiles/default/types/File.xml
+++ b/src/onlyoffice/plone/profiles/default/types/File.xml
@@ -3,14 +3,14 @@
meta_type="Factory-based Type Information with dynamic views"
i18n:domain="plone" xmlns:i18n="http://xml.zope.org/namespaces/i18n">
-
+
+
+
+
+
\ No newline at end of file
diff --git a/src/onlyoffice/plone/profiles/uninstall/actions.xml b/src/onlyoffice/plone/profiles/uninstall/actions.xml
new file mode 100644
index 0000000..cbc97a6
--- /dev/null
+++ b/src/onlyoffice/plone/profiles/uninstall/actions.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/onlyoffice/connector/profiles/uninstall/browserlayer.xml b/src/onlyoffice/plone/profiles/uninstall/browserlayer.xml
similarity index 73%
rename from src/onlyoffice/connector/profiles/uninstall/browserlayer.xml
rename to src/onlyoffice/plone/profiles/uninstall/browserlayer.xml
index 9e27ff9..74dfeaf 100644
--- a/src/onlyoffice/connector/profiles/uninstall/browserlayer.xml
+++ b/src/onlyoffice/plone/profiles/uninstall/browserlayer.xml
@@ -1,7 +1,7 @@
diff --git a/src/onlyoffice/connector/profiles/uninstall/controlpanel.xml b/src/onlyoffice/plone/profiles/uninstall/controlpanel.xml
similarity index 100%
rename from src/onlyoffice/connector/profiles/uninstall/controlpanel.xml
rename to src/onlyoffice/plone/profiles/uninstall/controlpanel.xml
diff --git a/src/onlyoffice/connector/profiles/uninstall/registry.xml b/src/onlyoffice/plone/profiles/uninstall/registry.xml
similarity index 84%
rename from src/onlyoffice/connector/profiles/uninstall/registry.xml
rename to src/onlyoffice/plone/profiles/uninstall/registry.xml
index 20366de..6d5a4e3 100644
--- a/src/onlyoffice/connector/profiles/uninstall/registry.xml
+++ b/src/onlyoffice/plone/profiles/uninstall/registry.xml
@@ -1,7 +1,7 @@
+ i18n:domain="onlyoffice.plone">
diff --git a/src/onlyoffice/plone/profiles/uninstall/types/Document.xml b/src/onlyoffice/plone/profiles/uninstall/types/Document.xml
new file mode 100644
index 0000000..4c70773
--- /dev/null
+++ b/src/onlyoffice/plone/profiles/uninstall/types/Document.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/onlyoffice/connector/profiles/uninstall/types/File.xml b/src/onlyoffice/plone/profiles/uninstall/types/File.xml
similarity index 72%
rename from src/onlyoffice/connector/profiles/uninstall/types/File.xml
rename to src/onlyoffice/plone/profiles/uninstall/types/File.xml
index b2c7a39..13eb413 100644
--- a/src/onlyoffice/connector/profiles/uninstall/types/File.xml
+++ b/src/onlyoffice/plone/profiles/uninstall/types/File.xml
@@ -3,7 +3,7 @@
meta_type="Factory-based Type Information with dynamic views"
i18n:domain="plone" xmlns:i18n="http://xml.zope.org/namespaces/i18n">
-
+
+
+
+
\ No newline at end of file
diff --git a/src/onlyoffice/connector/profiles/upgrades/to_2/registry.xml b/src/onlyoffice/plone/profiles/upgrades/to_2/registry.xml
similarity index 51%
rename from src/onlyoffice/connector/profiles/upgrades/to_2/registry.xml
rename to src/onlyoffice/plone/profiles/upgrades/to_2/registry.xml
index ef90ebd..b4104cd 100644
--- a/src/onlyoffice/connector/profiles/upgrades/to_2/registry.xml
+++ b/src/onlyoffice/plone/profiles/upgrades/to_2/registry.xml
@@ -1,7 +1,7 @@
-
+
\ No newline at end of file
diff --git a/src/onlyoffice/connector/setuphandlers.py b/src/onlyoffice/plone/setuphandlers.py
similarity index 92%
rename from src/onlyoffice/connector/setuphandlers.py
rename to src/onlyoffice/plone/setuphandlers.py
index a71826c..b140d2d 100644
--- a/src/onlyoffice/connector/setuphandlers.py
+++ b/src/onlyoffice/plone/setuphandlers.py
@@ -1,5 +1,5 @@
#
-# (c) Copyright Ascensio System SIA 2021
+# (c) Copyright Ascensio System SIA 2022
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -25,7 +25,7 @@ class HiddenProfiles(object):
def getNonInstallableProfiles(self):
"""Hide uninstall profile from site-creation and quickinstaller."""
return [
- 'onlyoffice.connector:uninstall',
+ 'onlyoffice.plone:uninstall',
]
diff --git a/src/onlyoffice/connector/testing.py b/src/onlyoffice/plone/testing.py
similarity index 64%
rename from src/onlyoffice/connector/testing.py
rename to src/onlyoffice/plone/testing.py
index 0c4c77d..90972c6 100644
--- a/src/onlyoffice/connector/testing.py
+++ b/src/onlyoffice/plone/testing.py
@@ -1,5 +1,5 @@
#
-# (c) Copyright Ascensio System SIA 2021
+# (c) Copyright Ascensio System SIA 2022
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -23,10 +23,10 @@
from plone.app.testing import PloneSandboxLayer
from plone.testing import z2
-import onlyoffice.connector
+import onlyoffice.plone
-class OnlyofficeConnectorLayer(PloneSandboxLayer):
+class OnlyofficePloneLayer(PloneSandboxLayer):
defaultBases = (PLONE_APP_CONTENTTYPES_FIXTURE,)
@@ -36,32 +36,32 @@ def setUpZope(self, app, configurationContext):
# layer.
import plone.restapi
self.loadZCML(package=plone.restapi)
- self.loadZCML(package=onlyoffice.connector)
+ self.loadZCML(package=onlyoffice.plone)
def setUpPloneSite(self, portal):
- applyProfile(portal, 'onlyoffice.connector:default')
+ applyProfile(portal, 'onlyoffice.plone:default')
-ONLYOFFICE_CONNECTOR_FIXTURE = OnlyofficeConnectorLayer()
+ONLYOFFICE_PLONE_FIXTURE = OnlyofficePloneLayer()
-ONLYOFFICE_CONNECTOR_INTEGRATION_TESTING = IntegrationTesting(
- bases=(ONLYOFFICE_CONNECTOR_FIXTURE,),
- name='OnlyofficeConnectorLayer:IntegrationTesting',
+ONLYOFFICE_PLONE_INTEGRATION_TESTING = IntegrationTesting(
+ bases=(ONLYOFFICE_PLONE_FIXTURE,),
+ name='OnlyofficePloneLayer:IntegrationTesting',
)
-ONLYOFFICE_CONNECTOR_FUNCTIONAL_TESTING = FunctionalTesting(
- bases=(ONLYOFFICE_CONNECTOR_FIXTURE,),
- name='OnlyofficeConnectorLayer:FunctionalTesting',
+ONLYOFFICE_PLONE_FUNCTIONAL_TESTING = FunctionalTesting(
+ bases=(ONLYOFFICE_PLONE_FIXTURE,),
+ name='OnlyofficePloneLayer:FunctionalTesting',
)
-ONLYOFFICE_CONNECTOR_ACCEPTANCE_TESTING = FunctionalTesting(
+ONLYOFFICE_PLONE_ACCEPTANCE_TESTING = FunctionalTesting(
bases=(
- ONLYOFFICE_CONNECTOR_FIXTURE,
+ ONLYOFFICE_PLONE_FIXTURE,
REMOTE_LIBRARY_BUNDLE_FIXTURE,
z2.ZSERVER_FIXTURE,
),
- name='OnlyofficeConnectorLayer:AcceptanceTesting',
+ name='OnlyofficePloneLayer:AcceptanceTesting',
)
diff --git a/src/onlyoffice/connector/tests/__init__.py b/src/onlyoffice/plone/tests/__init__.py
similarity index 100%
rename from src/onlyoffice/connector/tests/__init__.py
rename to src/onlyoffice/plone/tests/__init__.py
diff --git a/src/onlyoffice/connector/tests/robot/test_example.robot b/src/onlyoffice/plone/tests/robot/test_example.robot
similarity index 87%
rename from src/onlyoffice/connector/tests/robot/test_example.robot
rename to src/onlyoffice/plone/tests/robot/test_example.robot
index 6ff2524..2209bdb 100644
--- a/src/onlyoffice/connector/tests/robot/test_example.robot
+++ b/src/onlyoffice/plone/tests/robot/test_example.robot
@@ -4,17 +4,17 @@
#
# Run this robot test stand-alone:
#
-# $ bin/test -s onlyoffice.connector -t test_example.robot --all
+# $ bin/test -s onlyoffice.plone -t test_example.robot --all
#
# Run this robot test with robot server (which is faster):
#
# 1) Start robot server:
#
-# $ bin/robot-server --reload-path src onlyoffice.connector.testing.ONLYOFFICE_CONNECTOR_ACCEPTANCE_TESTING
+# $ bin/robot-server --reload-path src onlyoffice.plone.testing.ONLYOFFICE_PLONE_ACCEPTANCE_TESTING
#
# 2) Run robot tests:
#
-# $ bin/robot src/onlyoffice/connector/tests/robot/test_example.robot
+# $ bin/robot src/onlyoffice/plone/tests/robot/test_example.robot
#
# See the http://docs.plone.org for further details (search for robot
# framework).
diff --git a/src/onlyoffice/connector/tests/test_robot.py b/src/onlyoffice/plone/tests/test_robot.py
similarity index 86%
rename from src/onlyoffice/connector/tests/test_robot.py
rename to src/onlyoffice/plone/tests/test_robot.py
index 095e604..af6f3f6 100644
--- a/src/onlyoffice/connector/tests/test_robot.py
+++ b/src/onlyoffice/plone/tests/test_robot.py
@@ -1,5 +1,5 @@
#
-# (c) Copyright Ascensio System SIA 2021
+# (c) Copyright Ascensio System SIA 2022
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -15,7 +15,7 @@
#
# -*- coding: utf-8 -*-
-from onlyoffice.connector.testing import ONLYOFFICE_CONNECTOR_ACCEPTANCE_TESTING # noqa: E501
+from onlyoffice.plone.testing import ONLYOFFICE_PLONE_ACCEPTANCE_TESTING # noqa: E501
from plone.app.testing import ROBOT_TEST_LEVEL
from plone.testing import layered
@@ -38,7 +38,7 @@ def test_suite():
suite.addTests([
layered(
robottestsuite,
- layer=ONLYOFFICE_CONNECTOR_ACCEPTANCE_TESTING,
+ layer=ONLYOFFICE_PLONE_ACCEPTANCE_TESTING,
),
])
return suite
diff --git a/src/onlyoffice/connector/tests/test_setup.py b/src/onlyoffice/plone/tests/test_setup.py
similarity index 69%
rename from src/onlyoffice/connector/tests/test_setup.py
rename to src/onlyoffice/plone/tests/test_setup.py
index bd2c983..93e7603 100644
--- a/src/onlyoffice/connector/tests/test_setup.py
+++ b/src/onlyoffice/plone/tests/test_setup.py
@@ -1,5 +1,5 @@
#
-# (c) Copyright Ascensio System SIA 2021
+# (c) Copyright Ascensio System SIA 2022
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -16,7 +16,7 @@
# -*- coding: utf-8 -*-
"""Setup tests for this package."""
-from onlyoffice.connector.testing import ONLYOFFICE_CONNECTOR_INTEGRATION_TESTING # noqa: E501
+from onlyoffice.plone.testing import ONLYOFFICE_PLONE_INTEGRATION_TESTING # noqa: E501
from plone import api
from plone.app.testing import setRoles
from plone.app.testing import TEST_USER_ID
@@ -31,9 +31,9 @@
class TestSetup(unittest.TestCase):
- """Test that onlyoffice.connector is properly installed."""
+ """Test that onlyoffice.plone is properly installed."""
- layer = ONLYOFFICE_CONNECTOR_INTEGRATION_TESTING
+ layer = ONLYOFFICE_PLONE_INTEGRATION_TESTING
def setUp(self):
"""Custom shared utility setup for tests."""
@@ -44,23 +44,23 @@ def setUp(self):
self.installer = api.portal.get_tool('portal_quickinstaller')
def test_product_installed(self):
- """Test if onlyoffice.connector is installed."""
+ """Test if onlyoffice.plone is installed."""
self.assertTrue(self.installer.isProductInstalled(
- 'onlyoffice.connector'))
+ 'onlyoffice.plone'))
def test_browserlayer(self):
- """Test that IOnlyofficeConnectorLayer is registered."""
- from onlyoffice.connector.interfaces import (
- IOnlyofficeConnectorLayer)
+ """Test that IOnlyofficePloneLayer is registered."""
+ from onlyoffice.plone.interfaces import (
+ IOnlyofficePloneLayer)
from plone.browserlayer import utils
self.assertIn(
- IOnlyofficeConnectorLayer,
+ IOnlyofficePloneLayer,
utils.registered_layers())
class TestUninstall(unittest.TestCase):
- layer = ONLYOFFICE_CONNECTOR_INTEGRATION_TESTING
+ layer = ONLYOFFICE_PLONE_INTEGRATION_TESTING
def setUp(self):
self.portal = self.layer['portal']
@@ -70,19 +70,19 @@ def setUp(self):
self.installer = api.portal.get_tool('portal_quickinstaller')
roles_before = api.user.get_roles(TEST_USER_ID)
setRoles(self.portal, TEST_USER_ID, ['Manager'])
- self.installer.uninstallProducts(['onlyoffice.connector'])
+ self.installer.uninstallProducts(['onlyoffice.plone'])
setRoles(self.portal, TEST_USER_ID, roles_before)
def test_product_uninstalled(self):
- """Test if onlyoffice.connector is cleanly uninstalled."""
+ """Test if onlyoffice.plone is cleanly uninstalled."""
self.assertFalse(self.installer.isProductInstalled(
- 'onlyoffice.connector'))
+ 'onlyoffice.plone'))
def test_browserlayer_removed(self):
- """Test that IOnlyofficeConnectorLayer is removed."""
- from onlyoffice.connector.interfaces import \
- IOnlyofficeConnectorLayer
+ """Test that IOnlyofficePloneLayer is removed."""
+ from onlyoffice.plone.interfaces import \
+ IOnlyofficePloneLayer
from plone.browserlayer import utils
self.assertNotIn(
- IOnlyofficeConnectorLayer,
+ IOnlyofficePloneLayer,
utils.registered_layers())
diff --git a/src/onlyoffice/connector/upgrades.py b/src/onlyoffice/plone/upgrades.py
similarity index 89%
rename from src/onlyoffice/connector/upgrades.py
rename to src/onlyoffice/plone/upgrades.py
index 46ad97b..a6b2461 100644
--- a/src/onlyoffice/connector/upgrades.py
+++ b/src/onlyoffice/plone/upgrades.py
@@ -1,5 +1,5 @@
#
-# (c) Copyright Ascensio System SIA 2021
+# (c) Copyright Ascensio System SIA 2022
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
# limitations under the License.
#
-PROFILE_ID = 'onlyoffice.connector:default'
+PROFILE_ID = 'onlyoffice.plone:default'
def upgrade_to_2(context):
context.runImportStepFromProfile(
diff --git a/src/onlyoffice/connector/upgrades.zcml b/src/onlyoffice/plone/upgrades.zcml
similarity index 78%
rename from src/onlyoffice/connector/upgrades.zcml
rename to src/onlyoffice/plone/upgrades.zcml
index 094ade2..c0c363e 100644
--- a/src/onlyoffice/connector/upgrades.zcml
+++ b/src/onlyoffice/plone/upgrades.zcml
@@ -1,7 +1,7 @@
+ i18n_domain="onlyoffice.plone">
\ No newline at end of file