♻️(backend) change email invitation content
Change the email invitation content. More document related variables are added. To benefit of the document inheritance, we moved the function email_invitation to the document model.
This commit is contained in:
@@ -12,6 +12,7 @@ and this project adheres to
|
||||
## Changed
|
||||
|
||||
- 💄(frontend) error alert closeable on editor #284
|
||||
- ♻️(backend) Change email content #283
|
||||
|
||||
## Fixed
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@ from rest_framework import (
|
||||
)
|
||||
|
||||
from core import models
|
||||
from core.utils import email_invitation
|
||||
|
||||
from . import permissions, serializers, utils
|
||||
|
||||
@@ -567,9 +566,10 @@ class DocumentAccessViewSet(
|
||||
def perform_create(self, serializer):
|
||||
"""Add a new access to the document and send an email to the new added user."""
|
||||
access = serializer.save()
|
||||
|
||||
language = self.request.headers.get("Content-Language", "en-us")
|
||||
email_invitation(language, access.user.email, access.document.id)
|
||||
access.document.email_invitation(
|
||||
language, access.user.email, access.role, self.request.user.email
|
||||
)
|
||||
|
||||
|
||||
class TemplateViewSet(
|
||||
@@ -769,4 +769,6 @@ class InvitationViewset(
|
||||
invitation = serializer.save()
|
||||
|
||||
language = self.request.headers.get("Content-Language", "en-us")
|
||||
email_invitation(language, invitation.email, invitation.document.id)
|
||||
invitation.document.email_invitation(
|
||||
language, invitation.email, invitation.role, self.request.user.email
|
||||
)
|
||||
|
||||
@@ -3,6 +3,7 @@ Declare and configure the models for the impress core application
|
||||
"""
|
||||
|
||||
import hashlib
|
||||
import smtplib
|
||||
import tempfile
|
||||
import textwrap
|
||||
import uuid
|
||||
@@ -13,16 +14,20 @@ from logging import getLogger
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import models as auth_models
|
||||
from django.contrib.auth.base_user import AbstractBaseUser
|
||||
from django.contrib.sites.models import Site
|
||||
from django.core import exceptions, mail, validators
|
||||
from django.core.files.base import ContentFile
|
||||
from django.core.files.storage import default_storage
|
||||
from django.core.mail import send_mail
|
||||
from django.db import models
|
||||
from django.http import FileResponse
|
||||
from django.template.base import Template as DjangoTemplate
|
||||
from django.template.context import Context
|
||||
from django.template.loader import render_to_string
|
||||
from django.utils import html, timezone
|
||||
from django.utils.functional import cached_property, lazy
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.utils.translation import override
|
||||
|
||||
import frontmatter
|
||||
import markdown
|
||||
@@ -522,6 +527,39 @@ class Document(BaseModel):
|
||||
"versions_retrieve": can_get_versions,
|
||||
}
|
||||
|
||||
def email_invitation(self, language, email, role, username_sender):
|
||||
"""Send email invitation."""
|
||||
|
||||
domain = Site.objects.get_current().domain
|
||||
|
||||
try:
|
||||
with override(language):
|
||||
title = _("%(username)s shared a document with you: %(document)s") % {
|
||||
"username": username_sender,
|
||||
"document": self.title,
|
||||
}
|
||||
template_vars = {
|
||||
"title": title,
|
||||
"domain": domain,
|
||||
"document": self,
|
||||
"link": f"{domain}/docs/{self.id}/",
|
||||
"username": username_sender,
|
||||
"role": RoleChoices(role).label.lower(),
|
||||
}
|
||||
msg_html = render_to_string("mail/html/invitation.html", template_vars)
|
||||
msg_plain = render_to_string("mail/text/invitation.txt", template_vars)
|
||||
send_mail(
|
||||
title,
|
||||
msg_plain,
|
||||
settings.EMAIL_FROM,
|
||||
[email],
|
||||
html_message=msg_html,
|
||||
fail_silently=False,
|
||||
)
|
||||
|
||||
except smtplib.SMTPException as exception:
|
||||
logger.error("invitation to %s was not sent: %s", email, exception)
|
||||
|
||||
|
||||
class LinkTrace(BaseModel):
|
||||
"""
|
||||
|
||||
@@ -171,7 +171,7 @@ def test_api_document_accesses_create_authenticated_administrator(via, mock_user
|
||||
email = mail.outbox[0]
|
||||
assert email.to == [other_user["email"]]
|
||||
email_content = " ".join(email.body.split())
|
||||
assert "Invitation to join Docs!" in email_content
|
||||
assert f"{user.email} shared a document with you: {document.title}" in email_content
|
||||
assert "docs/" + str(document.id) + "/" in email_content
|
||||
|
||||
|
||||
@@ -225,5 +225,5 @@ def test_api_document_accesses_create_authenticated_owner(via, mock_user_teams):
|
||||
email = mail.outbox[0]
|
||||
assert email.to == [other_user["email"]]
|
||||
email_content = " ".join(email.body.split())
|
||||
assert "Invitation to join Docs!" in email_content
|
||||
assert f"{user.email} shared a document with you: {document.title}" in email_content
|
||||
assert "docs/" + str(document.id) + "/" in email_content
|
||||
|
||||
@@ -118,7 +118,10 @@ def test_api_document_invitations__create__privileged_members(
|
||||
email = mail.outbox[0]
|
||||
assert email.to == ["guest@example.com"]
|
||||
email_content = " ".join(email.body.split())
|
||||
assert "Invitation to join Docs!" in email_content
|
||||
assert (
|
||||
f"{user.email} shared a document with you: {document.title}"
|
||||
in email_content
|
||||
)
|
||||
else:
|
||||
assert response.status_code == status.HTTP_403_FORBIDDEN
|
||||
assert models.Invitation.objects.exists() is False
|
||||
@@ -158,7 +161,10 @@ def test_api_document_invitations__create__email_from_content_language():
|
||||
assert email.to == ["guest@example.com"]
|
||||
|
||||
email_content = " ".join(email.body.split())
|
||||
assert "Invitation à rejoindre Docs !" in email_content
|
||||
assert (
|
||||
f"{user.email} a partagé un document avec vous: {document.title}"
|
||||
in email_content
|
||||
)
|
||||
|
||||
|
||||
def test_api_document_invitations__create__email_from_content_language_not_supported():
|
||||
@@ -196,7 +202,7 @@ def test_api_document_invitations__create__email_from_content_language_not_suppo
|
||||
assert email.to == ["guest@example.com"]
|
||||
|
||||
email_content = " ".join(email.body.split())
|
||||
assert "Invitation to join Docs!" in email_content
|
||||
assert f"{user.email} shared a document with you: {document.title}" in email_content
|
||||
|
||||
|
||||
def test_api_document_invitations__create__issuer_and_document_override():
|
||||
|
||||
@@ -2,7 +2,12 @@
|
||||
Unit tests for the Document model
|
||||
"""
|
||||
|
||||
import smtplib
|
||||
from logging import Logger
|
||||
from unittest import mock
|
||||
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
from django.core import mail
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.files.storage import default_storage
|
||||
|
||||
@@ -322,3 +327,94 @@ def test_models_documents_version_duplicate():
|
||||
Bucket=default_storage.bucket_name, Prefix=file_key
|
||||
)
|
||||
assert len(response["Versions"]) == 2
|
||||
|
||||
|
||||
def test_models_documents__email_invitation__success():
|
||||
"""
|
||||
The email invitation is sent successfully.
|
||||
"""
|
||||
document = factories.DocumentFactory()
|
||||
|
||||
# pylint: disable-next=no-member
|
||||
assert len(mail.outbox) == 0
|
||||
|
||||
document.email_invitation(
|
||||
"en", "guest@example.com", models.RoleChoices.EDITOR, "sender@example.com"
|
||||
)
|
||||
|
||||
# pylint: disable-next=no-member
|
||||
assert len(mail.outbox) == 1
|
||||
|
||||
# pylint: disable-next=no-member
|
||||
email = mail.outbox[0]
|
||||
|
||||
assert email.to == ["guest@example.com"]
|
||||
email_content = " ".join(email.body.split())
|
||||
|
||||
assert (
|
||||
f"sender@example.com invited you as an editor on the following document : {document.title}"
|
||||
in email_content
|
||||
)
|
||||
assert f"docs/{document.id}/" in email_content
|
||||
|
||||
|
||||
def test_models_documents__email_invitation__success_fr():
|
||||
"""
|
||||
The email invitation is sent successfully in french.
|
||||
"""
|
||||
document = factories.DocumentFactory()
|
||||
|
||||
# pylint: disable-next=no-member
|
||||
assert len(mail.outbox) == 0
|
||||
|
||||
document.email_invitation(
|
||||
"fr-fr", "guest2@example.com", models.RoleChoices.OWNER, "sender2@example.com"
|
||||
)
|
||||
|
||||
# pylint: disable-next=no-member
|
||||
assert len(mail.outbox) == 1
|
||||
|
||||
# pylint: disable-next=no-member
|
||||
email = mail.outbox[0]
|
||||
|
||||
assert email.to == ["guest2@example.com"]
|
||||
email_content = " ".join(email.body.split())
|
||||
|
||||
assert (
|
||||
f"sender2@example.com vous a invité en tant que propriétaire "
|
||||
f"sur le document suivant : {document.title}" in email_content
|
||||
)
|
||||
assert f"docs/{document.id}/" in email_content
|
||||
|
||||
|
||||
@mock.patch(
|
||||
"core.models.send_mail",
|
||||
side_effect=smtplib.SMTPException("Error SMTPException"),
|
||||
)
|
||||
@mock.patch.object(Logger, "error")
|
||||
def test_models_documents__email_invitation__failed(mock_logger, _mock_send_mail):
|
||||
"""Check mail behavior when an SMTP error occurs when sent an email invitation."""
|
||||
document = factories.DocumentFactory()
|
||||
|
||||
# pylint: disable-next=no-member
|
||||
assert len(mail.outbox) == 0
|
||||
|
||||
document.email_invitation(
|
||||
"en", "guest3@example.com", models.RoleChoices.ADMIN, "sender3@example.com"
|
||||
)
|
||||
|
||||
# No email has been sent
|
||||
# pylint: disable-next=no-member
|
||||
assert len(mail.outbox) == 0
|
||||
|
||||
# Logger should be called
|
||||
mock_logger.assert_called_once()
|
||||
|
||||
(
|
||||
_,
|
||||
email,
|
||||
exception,
|
||||
) = mock_logger.call_args.args
|
||||
|
||||
assert email == "guest3@example.com"
|
||||
assert isinstance(exception, smtplib.SMTPException)
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
"""
|
||||
Unit tests for the Invitation model
|
||||
"""
|
||||
|
||||
import smtplib
|
||||
from logging import Logger
|
||||
from unittest import mock
|
||||
|
||||
from django.core import mail
|
||||
|
||||
import pytest
|
||||
|
||||
from core.utils import email_invitation
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
def test_utils__email_invitation_success():
|
||||
"""
|
||||
The email invitation is sent successfully.
|
||||
"""
|
||||
# pylint: disable-next=no-member
|
||||
assert len(mail.outbox) == 0
|
||||
|
||||
email_invitation("en", "guest@example.com", "123-456-789")
|
||||
|
||||
# pylint: disable-next=no-member
|
||||
assert len(mail.outbox) == 1
|
||||
|
||||
# pylint: disable-next=no-member
|
||||
email = mail.outbox[0]
|
||||
|
||||
assert email.to == ["guest@example.com"]
|
||||
email_content = " ".join(email.body.split())
|
||||
assert "Invitation to join Docs!" in email_content
|
||||
assert "docs/123-456-789/" in email_content
|
||||
|
||||
|
||||
def test_utils__email_invitation_success_fr():
|
||||
"""
|
||||
The email invitation is sent successfully in french.
|
||||
"""
|
||||
# pylint: disable-next=no-member
|
||||
assert len(mail.outbox) == 0
|
||||
|
||||
email_invitation("fr-fr", "guest@example.com", "123-456-789")
|
||||
|
||||
# pylint: disable-next=no-member
|
||||
assert len(mail.outbox) == 1
|
||||
|
||||
# pylint: disable-next=no-member
|
||||
email = mail.outbox[0]
|
||||
|
||||
assert email.to == ["guest@example.com"]
|
||||
email_content = " ".join(email.body.split())
|
||||
assert "Invitation à rejoindre Docs !" in email_content
|
||||
assert "docs/123-456-789/" in email_content
|
||||
|
||||
|
||||
@mock.patch(
|
||||
"core.utils.send_mail",
|
||||
side_effect=smtplib.SMTPException("Error SMTPException"),
|
||||
)
|
||||
@mock.patch.object(Logger, "error")
|
||||
def test_utils__email_invitation_failed(mock_logger, _mock_send_mail):
|
||||
"""Check mail behavior when an SMTP error occurs when sent an email invitation."""
|
||||
|
||||
# pylint: disable-next=no-member
|
||||
assert len(mail.outbox) == 0
|
||||
|
||||
email_invitation("en", "guest@example.com", "123-456-789")
|
||||
|
||||
# No email has been sent
|
||||
# pylint: disable-next=no-member
|
||||
assert len(mail.outbox) == 0
|
||||
|
||||
# Logger should be called
|
||||
mock_logger.assert_called_once()
|
||||
|
||||
(
|
||||
_,
|
||||
email,
|
||||
exception,
|
||||
) = mock_logger.call_args.args
|
||||
|
||||
assert email == "guest@example.com"
|
||||
assert isinstance(exception, smtplib.SMTPException)
|
||||
@@ -1,40 +0,0 @@
|
||||
"""
|
||||
Utilities for the core app.
|
||||
"""
|
||||
|
||||
import smtplib
|
||||
from logging import getLogger
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.sites.models import Site
|
||||
from django.core.mail import send_mail
|
||||
from django.template.loader import render_to_string
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.utils.translation import override
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
||||
|
||||
def email_invitation(language, email, document_id):
|
||||
"""Send email invitation."""
|
||||
try:
|
||||
with override(language):
|
||||
title = _("Invitation to join Docs!")
|
||||
template_vars = {
|
||||
"title": title,
|
||||
"site": Site.objects.get_current(),
|
||||
"document_id": document_id,
|
||||
}
|
||||
msg_html = render_to_string("mail/html/invitation.html", template_vars)
|
||||
msg_plain = render_to_string("mail/text/invitation.txt", template_vars)
|
||||
send_mail(
|
||||
title,
|
||||
msg_plain,
|
||||
settings.EMAIL_FROM,
|
||||
[email],
|
||||
html_message=msg_html,
|
||||
fail_silently=False,
|
||||
)
|
||||
|
||||
except smtplib.SMTPException as exception:
|
||||
logger.error("invitation to %s was not sent: %s", email, exception)
|
||||
Binary file not shown.
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-people\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-08-14 12:43+0000\n"
|
||||
"PO-Revision-Date: 2024-08-14 12:48\n"
|
||||
"POT-Creation-Date: 2024-09-25 10:15+0000\n"
|
||||
"PO-Revision-Date: 2024-09-25 10:17\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: English\n"
|
||||
"Language: en_US\n"
|
||||
@@ -17,547 +17,330 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/admin.py:31
|
||||
#: build/lib/build/lib/build/lib/core/admin.py:31
|
||||
#: build/lib/build/lib/core/admin.py:31 build/lib/core/admin.py:31
|
||||
#: core/admin.py:31
|
||||
#: core/admin.py:32
|
||||
msgid "Personal info"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/admin.py:33
|
||||
#: build/lib/build/lib/build/lib/core/admin.py:33
|
||||
#: build/lib/build/lib/core/admin.py:33 build/lib/core/admin.py:33
|
||||
#: core/admin.py:33
|
||||
#: core/admin.py:34
|
||||
msgid "Permissions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/admin.py:45
|
||||
#: build/lib/build/lib/build/lib/core/admin.py:45
|
||||
#: build/lib/build/lib/core/admin.py:45 build/lib/core/admin.py:45
|
||||
#: core/admin.py:45
|
||||
#: core/admin.py:46
|
||||
msgid "Important dates"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/api/serializers.py:176
|
||||
#: build/lib/build/lib/build/lib/core/api/serializers.py:176
|
||||
#: build/lib/build/lib/core/api/serializers.py:176
|
||||
#: build/lib/core/api/serializers.py:176 core/api/serializers.py:176
|
||||
#: core/api/serializers.py:253
|
||||
msgid "Body"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/api/serializers.py:179
|
||||
#: build/lib/build/lib/build/lib/core/api/serializers.py:179
|
||||
#: build/lib/build/lib/core/api/serializers.py:179
|
||||
#: build/lib/core/api/serializers.py:179 core/api/serializers.py:179
|
||||
#: core/api/serializers.py:256
|
||||
msgid "Body type"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/authentication/backends.py:71
|
||||
#: build/lib/build/lib/build/lib/core/authentication/backends.py:71
|
||||
#: build/lib/build/lib/core/authentication/backends.py:71
|
||||
#: build/lib/core/authentication/backends.py:71
|
||||
#: core/authentication/backends.py:71
|
||||
msgid "User info contained no recognizable user identification"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/authentication/backends.py:91
|
||||
#: build/lib/build/lib/build/lib/core/authentication/backends.py:91
|
||||
#: build/lib/build/lib/core/authentication/backends.py:91
|
||||
#: build/lib/core/authentication/backends.py:91
|
||||
#: core/authentication/backends.py:91
|
||||
msgid "Claims contained no recognizable user identification"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:60
|
||||
#: build/lib/build/lib/build/lib/core/models.py:60
|
||||
#: build/lib/build/lib/core/models.py:60 build/lib/core/models.py:60
|
||||
#: core/models.py:61
|
||||
msgid "Reader"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:61
|
||||
#: build/lib/build/lib/build/lib/core/models.py:61
|
||||
#: build/lib/build/lib/core/models.py:61 build/lib/core/models.py:61
|
||||
#: core/models.py:62
|
||||
msgid "Editor"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:62
|
||||
#: build/lib/build/lib/build/lib/core/models.py:62
|
||||
#: build/lib/build/lib/core/models.py:62 build/lib/core/models.py:62
|
||||
#: core/models.py:63
|
||||
msgid "Administrator"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:63
|
||||
#: build/lib/build/lib/build/lib/core/models.py:63
|
||||
#: build/lib/build/lib/core/models.py:63 build/lib/core/models.py:63
|
||||
#: core/models.py:64
|
||||
msgid "Owner"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:75
|
||||
#: build/lib/build/lib/build/lib/core/models.py:75
|
||||
#: build/lib/build/lib/core/models.py:75 build/lib/core/models.py:75
|
||||
#: core/models.py:76
|
||||
msgid "id"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:76
|
||||
#: build/lib/build/lib/build/lib/core/models.py:76
|
||||
#: build/lib/build/lib/core/models.py:76 build/lib/core/models.py:76
|
||||
#: core/models.py:77
|
||||
msgid "primary key for the record as UUID"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:82
|
||||
#: build/lib/build/lib/build/lib/core/models.py:82
|
||||
#: build/lib/build/lib/core/models.py:82 build/lib/core/models.py:82
|
||||
#: core/models.py:83
|
||||
msgid "created on"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:83
|
||||
#: build/lib/build/lib/build/lib/core/models.py:83
|
||||
#: build/lib/build/lib/core/models.py:83 build/lib/core/models.py:83
|
||||
#: core/models.py:84
|
||||
msgid "date and time at which a record was created"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:88
|
||||
#: build/lib/build/lib/build/lib/core/models.py:88
|
||||
#: build/lib/build/lib/core/models.py:88 build/lib/core/models.py:88
|
||||
#: core/models.py:89
|
||||
msgid "updated on"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:89
|
||||
#: build/lib/build/lib/build/lib/core/models.py:89
|
||||
#: build/lib/build/lib/core/models.py:89 build/lib/core/models.py:89
|
||||
#: core/models.py:90
|
||||
msgid "date and time at which a record was last updated"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:109
|
||||
#: build/lib/build/lib/build/lib/core/models.py:109
|
||||
#: build/lib/build/lib/core/models.py:109 build/lib/core/models.py:109
|
||||
#: core/models.py:110
|
||||
msgid "Enter a valid sub. This value may contain only letters, numbers, and @/./+/-/_ characters."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:115
|
||||
#: build/lib/build/lib/build/lib/core/models.py:115
|
||||
#: build/lib/build/lib/core/models.py:115 build/lib/core/models.py:115
|
||||
#: core/models.py:116
|
||||
msgid "sub"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:117
|
||||
#: build/lib/build/lib/build/lib/core/models.py:117
|
||||
#: build/lib/build/lib/core/models.py:117 build/lib/core/models.py:117
|
||||
#: core/models.py:118
|
||||
msgid "Required. 255 characters or fewer. Letters, numbers, and @/./+/-/_ characters only."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:125
|
||||
#: build/lib/build/lib/build/lib/core/models.py:125
|
||||
#: build/lib/build/lib/core/models.py:125 build/lib/core/models.py:125
|
||||
#: core/models.py:126
|
||||
msgid "identity email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:130
|
||||
#: build/lib/build/lib/build/lib/core/models.py:130
|
||||
#: build/lib/build/lib/core/models.py:130 build/lib/core/models.py:130
|
||||
#: core/models.py:131
|
||||
msgid "admin email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:137
|
||||
#: build/lib/build/lib/build/lib/core/models.py:137
|
||||
#: build/lib/build/lib/core/models.py:137 build/lib/core/models.py:137
|
||||
#: core/models.py:138
|
||||
msgid "language"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:138
|
||||
#: build/lib/build/lib/build/lib/core/models.py:138
|
||||
#: build/lib/build/lib/core/models.py:138 build/lib/core/models.py:138
|
||||
#: core/models.py:139
|
||||
msgid "The language in which the user wants to see the interface."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:144
|
||||
#: build/lib/build/lib/build/lib/core/models.py:144
|
||||
#: build/lib/build/lib/core/models.py:144 build/lib/core/models.py:144
|
||||
#: core/models.py:145
|
||||
msgid "The timezone in which the user wants to see times."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:147
|
||||
#: build/lib/build/lib/build/lib/core/models.py:147
|
||||
#: build/lib/build/lib/core/models.py:147 build/lib/core/models.py:147
|
||||
#: core/models.py:148
|
||||
msgid "device"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:149
|
||||
#: build/lib/build/lib/build/lib/core/models.py:149
|
||||
#: build/lib/build/lib/core/models.py:149 build/lib/core/models.py:149
|
||||
#: core/models.py:150
|
||||
msgid "Whether the user is a device or a real user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:152
|
||||
#: build/lib/build/lib/build/lib/core/models.py:152
|
||||
#: build/lib/build/lib/core/models.py:152 build/lib/core/models.py:152
|
||||
#: core/models.py:153
|
||||
msgid "staff status"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:154
|
||||
#: build/lib/build/lib/build/lib/core/models.py:154
|
||||
#: build/lib/build/lib/core/models.py:154 build/lib/core/models.py:154
|
||||
#: core/models.py:155
|
||||
msgid "Whether the user can log into this admin site."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:157
|
||||
#: build/lib/build/lib/build/lib/core/models.py:157
|
||||
#: build/lib/build/lib/core/models.py:157 build/lib/core/models.py:157
|
||||
#: core/models.py:158
|
||||
msgid "active"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:160
|
||||
#: build/lib/build/lib/build/lib/core/models.py:160
|
||||
#: build/lib/build/lib/core/models.py:160 build/lib/core/models.py:160
|
||||
#: core/models.py:161
|
||||
msgid "Whether this user should be treated as active. Unselect this instead of deleting accounts."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:172
|
||||
#: build/lib/build/lib/build/lib/core/models.py:172
|
||||
#: build/lib/build/lib/core/models.py:172 build/lib/core/models.py:172
|
||||
#: core/models.py:173
|
||||
msgid "user"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:173
|
||||
#: build/lib/build/lib/build/lib/core/models.py:173
|
||||
#: build/lib/build/lib/core/models.py:173 build/lib/core/models.py:173
|
||||
#: core/models.py:174
|
||||
msgid "users"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:304
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:531
|
||||
#: build/lib/build/lib/build/lib/core/models.py:304
|
||||
#: build/lib/build/lib/build/lib/core/models.py:531
|
||||
#: build/lib/build/lib/core/models.py:304
|
||||
#: build/lib/build/lib/core/models.py:531 build/lib/core/models.py:304
|
||||
#: build/lib/core/models.py:531 core/models.py:305 core/models.py:532
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:306
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:536
|
||||
#: build/lib/build/lib/build/lib/core/models.py:306
|
||||
#: build/lib/build/lib/build/lib/core/models.py:536
|
||||
#: build/lib/build/lib/core/models.py:306
|
||||
#: build/lib/build/lib/core/models.py:536 build/lib/core/models.py:306
|
||||
#: build/lib/core/models.py:536 core/models.py:307 core/models.py:537
|
||||
msgid "public"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:308
|
||||
#: build/lib/build/lib/build/lib/core/models.py:308
|
||||
#: build/lib/build/lib/core/models.py:308 build/lib/core/models.py:308
|
||||
#: core/models.py:309
|
||||
msgid "Whether this document is public for anyone to use."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:316
|
||||
#: build/lib/build/lib/build/lib/core/models.py:316
|
||||
#: build/lib/build/lib/core/models.py:316 build/lib/core/models.py:316
|
||||
#: core/models.py:317
|
||||
msgid "Document"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:317
|
||||
#: build/lib/build/lib/build/lib/core/models.py:317
|
||||
#: build/lib/build/lib/core/models.py:317 build/lib/core/models.py:317
|
||||
#: core/models.py:318
|
||||
msgid "Documents"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:495
|
||||
#: build/lib/build/lib/build/lib/core/models.py:495
|
||||
#: build/lib/build/lib/core/models.py:495 build/lib/core/models.py:495
|
||||
#: core/models.py:496
|
||||
msgid "Document/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:496
|
||||
#: build/lib/build/lib/build/lib/core/models.py:496
|
||||
#: build/lib/build/lib/core/models.py:496 build/lib/core/models.py:496
|
||||
#: core/models.py:497
|
||||
msgid "Document/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:502
|
||||
#: build/lib/build/lib/build/lib/core/models.py:502
|
||||
#: build/lib/build/lib/core/models.py:502 build/lib/core/models.py:502
|
||||
#: core/models.py:503
|
||||
msgid "This user is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:508
|
||||
#: build/lib/build/lib/build/lib/core/models.py:508
|
||||
#: build/lib/build/lib/core/models.py:508 build/lib/core/models.py:508
|
||||
#: core/models.py:509
|
||||
msgid "This team is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:514
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:691
|
||||
#: build/lib/build/lib/build/lib/core/models.py:514
|
||||
#: build/lib/build/lib/build/lib/core/models.py:691
|
||||
#: build/lib/build/lib/core/models.py:514
|
||||
#: build/lib/build/lib/core/models.py:691 build/lib/core/models.py:514
|
||||
#: build/lib/core/models.py:691 core/models.py:515 core/models.py:704
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:532
|
||||
#: build/lib/build/lib/build/lib/core/models.py:532
|
||||
#: build/lib/build/lib/core/models.py:532 build/lib/core/models.py:532
|
||||
#: core/models.py:533
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:533
|
||||
#: build/lib/build/lib/build/lib/core/models.py:533
|
||||
#: build/lib/build/lib/core/models.py:533 build/lib/core/models.py:533
|
||||
#: core/models.py:534
|
||||
msgid "code"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:534
|
||||
#: build/lib/build/lib/build/lib/core/models.py:534
|
||||
#: build/lib/build/lib/core/models.py:534 build/lib/core/models.py:534
|
||||
#: core/models.py:535
|
||||
msgid "css"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:538
|
||||
#: build/lib/build/lib/build/lib/core/models.py:538
|
||||
#: build/lib/build/lib/core/models.py:538 build/lib/core/models.py:538
|
||||
#: core/models.py:539
|
||||
msgid "Whether this template is public for anyone to use."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:544
|
||||
#: build/lib/build/lib/build/lib/core/models.py:544
|
||||
#: build/lib/build/lib/core/models.py:544 build/lib/core/models.py:544
|
||||
#: core/models.py:545
|
||||
msgid "Template"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:545
|
||||
#: build/lib/build/lib/build/lib/core/models.py:545
|
||||
#: build/lib/build/lib/core/models.py:545 build/lib/core/models.py:545
|
||||
#: core/models.py:546
|
||||
msgid "Templates"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:672
|
||||
#: build/lib/build/lib/build/lib/core/models.py:672
|
||||
#: build/lib/build/lib/core/models.py:672 build/lib/core/models.py:672
|
||||
#: core/models.py:685
|
||||
msgid "Template/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:673
|
||||
#: build/lib/build/lib/build/lib/core/models.py:673
|
||||
#: build/lib/build/lib/core/models.py:673 build/lib/core/models.py:673
|
||||
#: core/models.py:686
|
||||
msgid "Template/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:679
|
||||
#: build/lib/build/lib/build/lib/core/models.py:679
|
||||
#: build/lib/build/lib/core/models.py:679 build/lib/core/models.py:679
|
||||
#: core/models.py:692
|
||||
msgid "This user is already in this template."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:685
|
||||
#: build/lib/build/lib/build/lib/core/models.py:685
|
||||
#: build/lib/build/lib/core/models.py:685 build/lib/core/models.py:685
|
||||
#: core/models.py:698
|
||||
msgid "This team is already in this template."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:708
|
||||
#: build/lib/build/lib/build/lib/core/models.py:708
|
||||
#: build/lib/build/lib/core/models.py:708 build/lib/core/models.py:708
|
||||
#: core/models.py:721
|
||||
msgid "email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:725
|
||||
#: build/lib/build/lib/build/lib/core/models.py:725
|
||||
#: build/lib/build/lib/core/models.py:725 build/lib/core/models.py:725
|
||||
#: core/models.py:738
|
||||
msgid "Document invitation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:726
|
||||
#: build/lib/build/lib/build/lib/core/models.py:726
|
||||
#: build/lib/build/lib/core/models.py:726 build/lib/core/models.py:726
|
||||
#: core/models.py:739
|
||||
msgid "Document invitations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:751
|
||||
#: build/lib/build/lib/build/lib/core/models.py:751
|
||||
#: build/lib/build/lib/core/models.py:751 build/lib/core/models.py:751
|
||||
#: core/models.py:764
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:795
|
||||
#: build/lib/build/lib/build/lib/core/models.py:795
|
||||
#: build/lib/build/lib/core/models.py:795 build/lib/core/models.py:795
|
||||
msgid "Invitation to join Impress!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/impress/settings.py:158
|
||||
#: build/lib/build/lib/build/lib/impress/settings.py:158
|
||||
#: build/lib/build/lib/impress/settings.py:158
|
||||
#: build/lib/impress/settings.py:158 impress/settings.py:158
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/impress/settings.py:159
|
||||
#: build/lib/build/lib/build/lib/impress/settings.py:159
|
||||
#: build/lib/build/lib/impress/settings.py:159
|
||||
#: build/lib/impress/settings.py:159 impress/settings.py:159
|
||||
msgid "French"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/core/api/serializers.py:185
|
||||
#: build/lib/core/api/serializers.py:185 core/api/serializers.py:185
|
||||
#: core/api/serializers.py:262
|
||||
msgid "Format"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:808
|
||||
msgid "Invitation to join Docs!"
|
||||
#: core/authentication/backends.py:56
|
||||
msgid "Invalid response format or token verification failed"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/hello.html:159 core/templates/mail/text/hello.txt:3
|
||||
msgid "Company logo"
|
||||
#: core/authentication/backends.py:81
|
||||
msgid "User info contained no recognizable user identification"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/hello.html:188 core/templates/mail/text/hello.txt:5
|
||||
#: core/authentication/backends.py:101
|
||||
msgid "Claims contained no recognizable user identification"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:62 core/models.py:69
|
||||
msgid "Reader"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:63 core/models.py:70
|
||||
msgid "Editor"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:71
|
||||
msgid "Administrator"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:72
|
||||
msgid "Owner"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:80
|
||||
msgid "Restricted"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:84
|
||||
msgid "Authenticated"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:86
|
||||
msgid "Public"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:98
|
||||
msgid "id"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:99
|
||||
msgid "primary key for the record as UUID"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:105
|
||||
msgid "created on"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:106
|
||||
msgid "date and time at which a record was created"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:111
|
||||
msgid "updated on"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:112
|
||||
msgid "date and time at which a record was last updated"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:132
|
||||
msgid "Enter a valid sub. This value may contain only letters, numbers, and @/./+/-/_ characters."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:138
|
||||
msgid "sub"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:140
|
||||
msgid "Required. 255 characters or fewer. Letters, numbers, and @/./+/-/_ characters only."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:148
|
||||
msgid "identity email address"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:153
|
||||
msgid "admin email address"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:160
|
||||
msgid "language"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:161
|
||||
msgid "The language in which the user wants to see the interface."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:167
|
||||
msgid "The timezone in which the user wants to see times."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:170
|
||||
msgid "device"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:172
|
||||
msgid "Whether the user is a device or a real user."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:175
|
||||
msgid "staff status"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:177
|
||||
msgid "Whether the user can log into this admin site."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:180
|
||||
msgid "active"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:183
|
||||
msgid "Whether this user should be treated as active. Unselect this instead of deleting accounts."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:195
|
||||
msgid "user"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:196
|
||||
msgid "users"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:328 core/models.py:644
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:343
|
||||
msgid "Document"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:344
|
||||
msgid "Documents"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:347
|
||||
msgid "Untitled Document"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:537
|
||||
#, python-format
|
||||
msgid "Hello %(name)s"
|
||||
msgid "%(username)s shared a document with you: %(document)s"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/hello.html:188 core/templates/mail/text/hello.txt:5
|
||||
msgid "Hello"
|
||||
#: core/models.py:580
|
||||
msgid "Document/user link trace"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/hello.html:189 core/templates/mail/text/hello.txt:6
|
||||
msgid "Thank you very much for your visit!"
|
||||
#: core/models.py:581
|
||||
msgid "Document/user link traces"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/hello.html:221
|
||||
#, python-format
|
||||
msgid "This mail has been sent to %(email)s by <a href=\"%(href)s\">%(name)s</a>"
|
||||
#: core/models.py:587
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:608
|
||||
msgid "Document/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:609
|
||||
msgid "Document/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:615
|
||||
msgid "This user is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:621
|
||||
msgid "This team is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:627 core/models.py:816
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:645
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:646
|
||||
msgid "code"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:647
|
||||
msgid "css"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:649
|
||||
msgid "public"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:651
|
||||
msgid "Whether this template is public for anyone to use."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:657
|
||||
msgid "Template"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:658
|
||||
msgid "Templates"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:797
|
||||
msgid "Template/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:798
|
||||
msgid "Template/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:804
|
||||
msgid "This user is already in this template."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:810
|
||||
msgid "This team is already in this template."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:833
|
||||
msgid "email address"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:850
|
||||
msgid "Document invitation"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:851
|
||||
msgid "Document invitations"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:868
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:160
|
||||
#: core/templates/mail/html/invitation2.html:160
|
||||
#: core/templates/mail/text/invitation.txt:3
|
||||
#: core/templates/mail/text/invitation2.txt:3
|
||||
msgid "La Suite Numérique"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:190
|
||||
#: core/templates/mail/text/invitation.txt:5
|
||||
msgid "Invitation to join a document !"
|
||||
#: core/templates/mail/text/invitation.txt:6
|
||||
#, python-format
|
||||
msgid " %(username)s shared a document with you ! "
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:198
|
||||
msgid "Welcome to <strong>Docs!</strong>"
|
||||
#: core/templates/mail/html/invitation.html:197
|
||||
#: core/templates/mail/text/invitation.txt:8
|
||||
#, python-format
|
||||
msgid " %(username)s invited you as an %(role)s on the following document : "
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:213
|
||||
#: core/templates/mail/text/invitation.txt:12
|
||||
msgid "We are delighted to welcome you to our community on Docs, your new companion to collaborate on documents efficiently, intuitively, and securely."
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:218
|
||||
#: core/templates/mail/text/invitation.txt:13
|
||||
msgid "Our application is designed to help you organize, collaborate, and manage permissions."
|
||||
#: core/templates/mail/html/invitation.html:206
|
||||
#: core/templates/mail/html/invitation2.html:211
|
||||
#: core/templates/mail/text/invitation.txt:10
|
||||
#: core/templates/mail/text/invitation2.txt:11
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:223
|
||||
#: core/templates/mail/text/invitation.txt:14
|
||||
msgid "With Docs, you will be able to:"
|
||||
msgid " Docs, your new essential tool for organizing, sharing and collaborate on your documents as a team. "
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:224
|
||||
#: core/templates/mail/text/invitation.txt:15
|
||||
msgid "Create documents."
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:225
|
||||
#: core/templates/mail/html/invitation.html:230
|
||||
#: core/templates/mail/html/invitation2.html:235
|
||||
#: core/templates/mail/text/invitation.txt:16
|
||||
msgid "Work offline."
|
||||
#: core/templates/mail/text/invitation2.txt:17
|
||||
msgid "Brought to you by La Suite Numérique"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:226
|
||||
#: core/templates/mail/text/invitation.txt:17
|
||||
msgid "Invite members of your community to your document in just a few clicks."
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:237
|
||||
#: core/templates/mail/text/invitation.txt:19
|
||||
msgid "Visit Docs"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:246
|
||||
#: core/templates/mail/text/invitation.txt:21
|
||||
msgid "We are confident that Docs will help you increase efficiency and productivity while strengthening the bond among members."
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:251
|
||||
#: core/templates/mail/text/invitation.txt:22
|
||||
msgid "Feel free to explore all the features of the application and share your feedback and suggestions with us. Your feedback is valuable to us and will enable us to continually improve our service."
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:256
|
||||
#: core/templates/mail/text/invitation.txt:23
|
||||
msgid "Once again, welcome aboard! We are eager to accompany you on your collaboration adventure."
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:263
|
||||
#: core/templates/mail/text/invitation.txt:25
|
||||
msgid "Sincerely,"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:264
|
||||
#: core/templates/mail/text/invitation.txt:27
|
||||
msgid "The La Suite Numérique Team"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/text/hello.txt:8
|
||||
#: core/templates/mail/html/invitation2.html:190
|
||||
#, python-format
|
||||
msgid "This mail has been sent to %(email)s by %(name)s [%(href)s]"
|
||||
msgid "%(username)s shared a document with you"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/text/invitation.txt:8
|
||||
msgid "Welcome to Docs!"
|
||||
#: core/templates/mail/html/invitation2.html:197
|
||||
#: core/templates/mail/text/invitation2.txt:8
|
||||
#, python-format
|
||||
msgid "%(username)s invited you as an %(role)s on the following document :"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation2.html:228
|
||||
#: core/templates/mail/text/invitation2.txt:15
|
||||
msgid "Docs, your new essential tool for organizing, sharing and collaborate on your document as a team."
|
||||
msgstr ""
|
||||
|
||||
#: impress/settings.py:176
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
#: impress/settings.py:177
|
||||
msgid "French"
|
||||
msgstr ""
|
||||
|
||||
|
||||
Binary file not shown.
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-people\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-08-14 12:43+0000\n"
|
||||
"PO-Revision-Date: 2024-08-14 12:48\n"
|
||||
"POT-Creation-Date: 2024-09-25 10:15+0000\n"
|
||||
"PO-Revision-Date: 2024-09-25 10:21\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: French\n"
|
||||
"Language: fr_FR\n"
|
||||
@@ -17,547 +17,330 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/admin.py:31
|
||||
#: build/lib/build/lib/build/lib/core/admin.py:31
|
||||
#: build/lib/build/lib/core/admin.py:31 build/lib/core/admin.py:31
|
||||
#: core/admin.py:31
|
||||
#: core/admin.py:32
|
||||
msgid "Personal info"
|
||||
msgstr "Infos Personnelles"
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/admin.py:33
|
||||
#: build/lib/build/lib/build/lib/core/admin.py:33
|
||||
#: build/lib/build/lib/core/admin.py:33 build/lib/core/admin.py:33
|
||||
#: core/admin.py:33
|
||||
#: core/admin.py:34
|
||||
msgid "Permissions"
|
||||
msgstr "Permissions"
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/admin.py:45
|
||||
#: build/lib/build/lib/build/lib/core/admin.py:45
|
||||
#: build/lib/build/lib/core/admin.py:45 build/lib/core/admin.py:45
|
||||
#: core/admin.py:45
|
||||
#: core/admin.py:46
|
||||
msgid "Important dates"
|
||||
msgstr "Dates importantes"
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/api/serializers.py:176
|
||||
#: build/lib/build/lib/build/lib/core/api/serializers.py:176
|
||||
#: build/lib/build/lib/core/api/serializers.py:176
|
||||
#: build/lib/core/api/serializers.py:176 core/api/serializers.py:176
|
||||
#: core/api/serializers.py:253
|
||||
msgid "Body"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/api/serializers.py:179
|
||||
#: build/lib/build/lib/build/lib/core/api/serializers.py:179
|
||||
#: build/lib/build/lib/core/api/serializers.py:179
|
||||
#: build/lib/core/api/serializers.py:179 core/api/serializers.py:179
|
||||
#: core/api/serializers.py:256
|
||||
msgid "Body type"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/authentication/backends.py:71
|
||||
#: build/lib/build/lib/build/lib/core/authentication/backends.py:71
|
||||
#: build/lib/build/lib/core/authentication/backends.py:71
|
||||
#: build/lib/core/authentication/backends.py:71
|
||||
#: core/authentication/backends.py:71
|
||||
msgid "User info contained no recognizable user identification"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/authentication/backends.py:91
|
||||
#: build/lib/build/lib/build/lib/core/authentication/backends.py:91
|
||||
#: build/lib/build/lib/core/authentication/backends.py:91
|
||||
#: build/lib/core/authentication/backends.py:91
|
||||
#: core/authentication/backends.py:91
|
||||
msgid "Claims contained no recognizable user identification"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:60
|
||||
#: build/lib/build/lib/build/lib/core/models.py:60
|
||||
#: build/lib/build/lib/core/models.py:60 build/lib/core/models.py:60
|
||||
#: core/models.py:61
|
||||
msgid "Reader"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:61
|
||||
#: build/lib/build/lib/build/lib/core/models.py:61
|
||||
#: build/lib/build/lib/core/models.py:61 build/lib/core/models.py:61
|
||||
#: core/models.py:62
|
||||
msgid "Editor"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:62
|
||||
#: build/lib/build/lib/build/lib/core/models.py:62
|
||||
#: build/lib/build/lib/core/models.py:62 build/lib/core/models.py:62
|
||||
#: core/models.py:63
|
||||
msgid "Administrator"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:63
|
||||
#: build/lib/build/lib/build/lib/core/models.py:63
|
||||
#: build/lib/build/lib/core/models.py:63 build/lib/core/models.py:63
|
||||
#: core/models.py:64
|
||||
msgid "Owner"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:75
|
||||
#: build/lib/build/lib/build/lib/core/models.py:75
|
||||
#: build/lib/build/lib/core/models.py:75 build/lib/core/models.py:75
|
||||
#: core/models.py:76
|
||||
msgid "id"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:76
|
||||
#: build/lib/build/lib/build/lib/core/models.py:76
|
||||
#: build/lib/build/lib/core/models.py:76 build/lib/core/models.py:76
|
||||
#: core/models.py:77
|
||||
msgid "primary key for the record as UUID"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:82
|
||||
#: build/lib/build/lib/build/lib/core/models.py:82
|
||||
#: build/lib/build/lib/core/models.py:82 build/lib/core/models.py:82
|
||||
#: core/models.py:83
|
||||
msgid "created on"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:83
|
||||
#: build/lib/build/lib/build/lib/core/models.py:83
|
||||
#: build/lib/build/lib/core/models.py:83 build/lib/core/models.py:83
|
||||
#: core/models.py:84
|
||||
msgid "date and time at which a record was created"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:88
|
||||
#: build/lib/build/lib/build/lib/core/models.py:88
|
||||
#: build/lib/build/lib/core/models.py:88 build/lib/core/models.py:88
|
||||
#: core/models.py:89
|
||||
msgid "updated on"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:89
|
||||
#: build/lib/build/lib/build/lib/core/models.py:89
|
||||
#: build/lib/build/lib/core/models.py:89 build/lib/core/models.py:89
|
||||
#: core/models.py:90
|
||||
msgid "date and time at which a record was last updated"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:109
|
||||
#: build/lib/build/lib/build/lib/core/models.py:109
|
||||
#: build/lib/build/lib/core/models.py:109 build/lib/core/models.py:109
|
||||
#: core/models.py:110
|
||||
msgid "Enter a valid sub. This value may contain only letters, numbers, and @/./+/-/_ characters."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:115
|
||||
#: build/lib/build/lib/build/lib/core/models.py:115
|
||||
#: build/lib/build/lib/core/models.py:115 build/lib/core/models.py:115
|
||||
#: core/models.py:116
|
||||
msgid "sub"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:117
|
||||
#: build/lib/build/lib/build/lib/core/models.py:117
|
||||
#: build/lib/build/lib/core/models.py:117 build/lib/core/models.py:117
|
||||
#: core/models.py:118
|
||||
msgid "Required. 255 characters or fewer. Letters, numbers, and @/./+/-/_ characters only."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:125
|
||||
#: build/lib/build/lib/build/lib/core/models.py:125
|
||||
#: build/lib/build/lib/core/models.py:125 build/lib/core/models.py:125
|
||||
#: core/models.py:126
|
||||
msgid "identity email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:130
|
||||
#: build/lib/build/lib/build/lib/core/models.py:130
|
||||
#: build/lib/build/lib/core/models.py:130 build/lib/core/models.py:130
|
||||
#: core/models.py:131
|
||||
msgid "admin email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:137
|
||||
#: build/lib/build/lib/build/lib/core/models.py:137
|
||||
#: build/lib/build/lib/core/models.py:137 build/lib/core/models.py:137
|
||||
#: core/models.py:138
|
||||
msgid "language"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:138
|
||||
#: build/lib/build/lib/build/lib/core/models.py:138
|
||||
#: build/lib/build/lib/core/models.py:138 build/lib/core/models.py:138
|
||||
#: core/models.py:139
|
||||
msgid "The language in which the user wants to see the interface."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:144
|
||||
#: build/lib/build/lib/build/lib/core/models.py:144
|
||||
#: build/lib/build/lib/core/models.py:144 build/lib/core/models.py:144
|
||||
#: core/models.py:145
|
||||
msgid "The timezone in which the user wants to see times."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:147
|
||||
#: build/lib/build/lib/build/lib/core/models.py:147
|
||||
#: build/lib/build/lib/core/models.py:147 build/lib/core/models.py:147
|
||||
#: core/models.py:148
|
||||
msgid "device"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:149
|
||||
#: build/lib/build/lib/build/lib/core/models.py:149
|
||||
#: build/lib/build/lib/core/models.py:149 build/lib/core/models.py:149
|
||||
#: core/models.py:150
|
||||
msgid "Whether the user is a device or a real user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:152
|
||||
#: build/lib/build/lib/build/lib/core/models.py:152
|
||||
#: build/lib/build/lib/core/models.py:152 build/lib/core/models.py:152
|
||||
#: core/models.py:153
|
||||
msgid "staff status"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:154
|
||||
#: build/lib/build/lib/build/lib/core/models.py:154
|
||||
#: build/lib/build/lib/core/models.py:154 build/lib/core/models.py:154
|
||||
#: core/models.py:155
|
||||
msgid "Whether the user can log into this admin site."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:157
|
||||
#: build/lib/build/lib/build/lib/core/models.py:157
|
||||
#: build/lib/build/lib/core/models.py:157 build/lib/core/models.py:157
|
||||
#: core/models.py:158
|
||||
msgid "active"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:160
|
||||
#: build/lib/build/lib/build/lib/core/models.py:160
|
||||
#: build/lib/build/lib/core/models.py:160 build/lib/core/models.py:160
|
||||
#: core/models.py:161
|
||||
msgid "Whether this user should be treated as active. Unselect this instead of deleting accounts."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:172
|
||||
#: build/lib/build/lib/build/lib/core/models.py:172
|
||||
#: build/lib/build/lib/core/models.py:172 build/lib/core/models.py:172
|
||||
#: core/models.py:173
|
||||
msgid "user"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:173
|
||||
#: build/lib/build/lib/build/lib/core/models.py:173
|
||||
#: build/lib/build/lib/core/models.py:173 build/lib/core/models.py:173
|
||||
#: core/models.py:174
|
||||
msgid "users"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:304
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:531
|
||||
#: build/lib/build/lib/build/lib/core/models.py:304
|
||||
#: build/lib/build/lib/build/lib/core/models.py:531
|
||||
#: build/lib/build/lib/core/models.py:304
|
||||
#: build/lib/build/lib/core/models.py:531 build/lib/core/models.py:304
|
||||
#: build/lib/core/models.py:531 core/models.py:305 core/models.py:532
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:306
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:536
|
||||
#: build/lib/build/lib/build/lib/core/models.py:306
|
||||
#: build/lib/build/lib/build/lib/core/models.py:536
|
||||
#: build/lib/build/lib/core/models.py:306
|
||||
#: build/lib/build/lib/core/models.py:536 build/lib/core/models.py:306
|
||||
#: build/lib/core/models.py:536 core/models.py:307 core/models.py:537
|
||||
msgid "public"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:308
|
||||
#: build/lib/build/lib/build/lib/core/models.py:308
|
||||
#: build/lib/build/lib/core/models.py:308 build/lib/core/models.py:308
|
||||
#: core/models.py:309
|
||||
msgid "Whether this document is public for anyone to use."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:316
|
||||
#: build/lib/build/lib/build/lib/core/models.py:316
|
||||
#: build/lib/build/lib/core/models.py:316 build/lib/core/models.py:316
|
||||
#: core/models.py:317
|
||||
msgid "Document"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:317
|
||||
#: build/lib/build/lib/build/lib/core/models.py:317
|
||||
#: build/lib/build/lib/core/models.py:317 build/lib/core/models.py:317
|
||||
#: core/models.py:318
|
||||
msgid "Documents"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:495
|
||||
#: build/lib/build/lib/build/lib/core/models.py:495
|
||||
#: build/lib/build/lib/core/models.py:495 build/lib/core/models.py:495
|
||||
#: core/models.py:496
|
||||
msgid "Document/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:496
|
||||
#: build/lib/build/lib/build/lib/core/models.py:496
|
||||
#: build/lib/build/lib/core/models.py:496 build/lib/core/models.py:496
|
||||
#: core/models.py:497
|
||||
msgid "Document/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:502
|
||||
#: build/lib/build/lib/build/lib/core/models.py:502
|
||||
#: build/lib/build/lib/core/models.py:502 build/lib/core/models.py:502
|
||||
#: core/models.py:503
|
||||
msgid "This user is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:508
|
||||
#: build/lib/build/lib/build/lib/core/models.py:508
|
||||
#: build/lib/build/lib/core/models.py:508 build/lib/core/models.py:508
|
||||
#: core/models.py:509
|
||||
msgid "This team is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:514
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:691
|
||||
#: build/lib/build/lib/build/lib/core/models.py:514
|
||||
#: build/lib/build/lib/build/lib/core/models.py:691
|
||||
#: build/lib/build/lib/core/models.py:514
|
||||
#: build/lib/build/lib/core/models.py:691 build/lib/core/models.py:514
|
||||
#: build/lib/core/models.py:691 core/models.py:515 core/models.py:704
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:532
|
||||
#: build/lib/build/lib/build/lib/core/models.py:532
|
||||
#: build/lib/build/lib/core/models.py:532 build/lib/core/models.py:532
|
||||
#: core/models.py:533
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:533
|
||||
#: build/lib/build/lib/build/lib/core/models.py:533
|
||||
#: build/lib/build/lib/core/models.py:533 build/lib/core/models.py:533
|
||||
#: core/models.py:534
|
||||
msgid "code"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:534
|
||||
#: build/lib/build/lib/build/lib/core/models.py:534
|
||||
#: build/lib/build/lib/core/models.py:534 build/lib/core/models.py:534
|
||||
#: core/models.py:535
|
||||
msgid "css"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:538
|
||||
#: build/lib/build/lib/build/lib/core/models.py:538
|
||||
#: build/lib/build/lib/core/models.py:538 build/lib/core/models.py:538
|
||||
#: core/models.py:539
|
||||
msgid "Whether this template is public for anyone to use."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:544
|
||||
#: build/lib/build/lib/build/lib/core/models.py:544
|
||||
#: build/lib/build/lib/core/models.py:544 build/lib/core/models.py:544
|
||||
#: core/models.py:545
|
||||
msgid "Template"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:545
|
||||
#: build/lib/build/lib/build/lib/core/models.py:545
|
||||
#: build/lib/build/lib/core/models.py:545 build/lib/core/models.py:545
|
||||
#: core/models.py:546
|
||||
msgid "Templates"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:672
|
||||
#: build/lib/build/lib/build/lib/core/models.py:672
|
||||
#: build/lib/build/lib/core/models.py:672 build/lib/core/models.py:672
|
||||
#: core/models.py:685
|
||||
msgid "Template/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:673
|
||||
#: build/lib/build/lib/build/lib/core/models.py:673
|
||||
#: build/lib/build/lib/core/models.py:673 build/lib/core/models.py:673
|
||||
#: core/models.py:686
|
||||
msgid "Template/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:679
|
||||
#: build/lib/build/lib/build/lib/core/models.py:679
|
||||
#: build/lib/build/lib/core/models.py:679 build/lib/core/models.py:679
|
||||
#: core/models.py:692
|
||||
msgid "This user is already in this template."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:685
|
||||
#: build/lib/build/lib/build/lib/core/models.py:685
|
||||
#: build/lib/build/lib/core/models.py:685 build/lib/core/models.py:685
|
||||
#: core/models.py:698
|
||||
msgid "This team is already in this template."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:708
|
||||
#: build/lib/build/lib/build/lib/core/models.py:708
|
||||
#: build/lib/build/lib/core/models.py:708 build/lib/core/models.py:708
|
||||
#: core/models.py:721
|
||||
msgid "email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:725
|
||||
#: build/lib/build/lib/build/lib/core/models.py:725
|
||||
#: build/lib/build/lib/core/models.py:725 build/lib/core/models.py:725
|
||||
#: core/models.py:738
|
||||
msgid "Document invitation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:726
|
||||
#: build/lib/build/lib/build/lib/core/models.py:726
|
||||
#: build/lib/build/lib/core/models.py:726 build/lib/core/models.py:726
|
||||
#: core/models.py:739
|
||||
msgid "Document invitations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:751
|
||||
#: build/lib/build/lib/build/lib/core/models.py:751
|
||||
#: build/lib/build/lib/core/models.py:751 build/lib/core/models.py:751
|
||||
#: core/models.py:764
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/core/models.py:795
|
||||
#: build/lib/build/lib/build/lib/core/models.py:795
|
||||
#: build/lib/build/lib/core/models.py:795 build/lib/core/models.py:795
|
||||
msgid "Invitation to join Impress!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/impress/settings.py:158
|
||||
#: build/lib/build/lib/build/lib/impress/settings.py:158
|
||||
#: build/lib/build/lib/impress/settings.py:158
|
||||
#: build/lib/impress/settings.py:158 impress/settings.py:158
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/build/lib/build/lib/impress/settings.py:159
|
||||
#: build/lib/build/lib/build/lib/impress/settings.py:159
|
||||
#: build/lib/build/lib/impress/settings.py:159
|
||||
#: build/lib/impress/settings.py:159 impress/settings.py:159
|
||||
msgid "French"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/build/lib/core/api/serializers.py:185
|
||||
#: build/lib/core/api/serializers.py:185 core/api/serializers.py:185
|
||||
#: core/api/serializers.py:262
|
||||
msgid "Format"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:808
|
||||
msgid "Invitation to join Docs!"
|
||||
msgstr "Invitation à rejoindre Docs !"
|
||||
|
||||
#: core/templates/mail/html/hello.html:159 core/templates/mail/text/hello.txt:3
|
||||
msgid "Company logo"
|
||||
#: core/authentication/backends.py:56
|
||||
msgid "Invalid response format or token verification failed"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/hello.html:188 core/templates/mail/text/hello.txt:5
|
||||
#: core/authentication/backends.py:81
|
||||
msgid "User info contained no recognizable user identification"
|
||||
msgstr ""
|
||||
|
||||
#: core/authentication/backends.py:101
|
||||
msgid "Claims contained no recognizable user identification"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:62 core/models.py:69
|
||||
msgid "Reader"
|
||||
msgstr "Lecteur"
|
||||
|
||||
#: core/models.py:63 core/models.py:70
|
||||
msgid "Editor"
|
||||
msgstr "Éditeur"
|
||||
|
||||
#: core/models.py:71
|
||||
msgid "Administrator"
|
||||
msgstr "Administrateur"
|
||||
|
||||
#: core/models.py:72
|
||||
msgid "Owner"
|
||||
msgstr "Propriétaire"
|
||||
|
||||
#: core/models.py:80
|
||||
msgid "Restricted"
|
||||
msgstr "Restreint"
|
||||
|
||||
#: core/models.py:84
|
||||
msgid "Authenticated"
|
||||
msgstr "Authentifié"
|
||||
|
||||
#: core/models.py:86
|
||||
msgid "Public"
|
||||
msgstr "Public"
|
||||
|
||||
#: core/models.py:98
|
||||
msgid "id"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:99
|
||||
msgid "primary key for the record as UUID"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:105
|
||||
msgid "created on"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:106
|
||||
msgid "date and time at which a record was created"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:111
|
||||
msgid "updated on"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:112
|
||||
msgid "date and time at which a record was last updated"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:132
|
||||
msgid "Enter a valid sub. This value may contain only letters, numbers, and @/./+/-/_ characters."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:138
|
||||
msgid "sub"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:140
|
||||
msgid "Required. 255 characters or fewer. Letters, numbers, and @/./+/-/_ characters only."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:148
|
||||
msgid "identity email address"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:153
|
||||
msgid "admin email address"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:160
|
||||
msgid "language"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:161
|
||||
msgid "The language in which the user wants to see the interface."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:167
|
||||
msgid "The timezone in which the user wants to see times."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:170
|
||||
msgid "device"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:172
|
||||
msgid "Whether the user is a device or a real user."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:175
|
||||
msgid "staff status"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:177
|
||||
msgid "Whether the user can log into this admin site."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:180
|
||||
msgid "active"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:183
|
||||
msgid "Whether this user should be treated as active. Unselect this instead of deleting accounts."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:195
|
||||
msgid "user"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:196
|
||||
msgid "users"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:328 core/models.py:644
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:343
|
||||
msgid "Document"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:344
|
||||
msgid "Documents"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:347
|
||||
msgid "Untitled Document"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:537
|
||||
#, python-format
|
||||
msgid "Hello %(name)s"
|
||||
msgid "%(username)s shared a document with you: %(document)s"
|
||||
msgstr "%(username)s a partagé un document avec vous: %(document)s"
|
||||
|
||||
#: core/models.py:580
|
||||
msgid "Document/user link trace"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/hello.html:188 core/templates/mail/text/hello.txt:5
|
||||
msgid "Hello"
|
||||
#: core/models.py:581
|
||||
msgid "Document/user link traces"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/hello.html:189 core/templates/mail/text/hello.txt:6
|
||||
msgid "Thank you very much for your visit!"
|
||||
#: core/models.py:587
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/hello.html:221
|
||||
#, python-format
|
||||
msgid "This mail has been sent to %(email)s by <a href=\"%(href)s\">%(name)s</a>"
|
||||
#: core/models.py:608
|
||||
msgid "Document/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:609
|
||||
msgid "Document/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:615
|
||||
msgid "This user is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:621
|
||||
msgid "This team is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:627 core/models.py:816
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:645
|
||||
msgid "description"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:646
|
||||
msgid "code"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:647
|
||||
msgid "css"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:649
|
||||
msgid "public"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:651
|
||||
msgid "Whether this template is public for anyone to use."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:657
|
||||
msgid "Template"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:658
|
||||
msgid "Templates"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:797
|
||||
msgid "Template/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:798
|
||||
msgid "Template/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:804
|
||||
msgid "This user is already in this template."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:810
|
||||
msgid "This team is already in this template."
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:833
|
||||
msgid "email address"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:850
|
||||
msgid "Document invitation"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:851
|
||||
msgid "Document invitations"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:868
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:160
|
||||
#: core/templates/mail/html/invitation2.html:160
|
||||
#: core/templates/mail/text/invitation.txt:3
|
||||
#: core/templates/mail/text/invitation2.txt:3
|
||||
msgid "La Suite Numérique"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/invitation.html:190
|
||||
#: core/templates/mail/text/invitation.txt:5
|
||||
msgid "Invitation to join a document !"
|
||||
msgstr "Invitation à rejoindre un document !"
|
||||
#: core/templates/mail/text/invitation.txt:6
|
||||
#, python-format
|
||||
msgid " %(username)s shared a document with you ! "
|
||||
msgstr " %(username)s a partagé un document avec vous ! "
|
||||
|
||||
#: core/templates/mail/html/invitation.html:198
|
||||
msgid "Welcome to <strong>Docs!</strong>"
|
||||
msgstr "Bienvenue sur <strong>Docs !</strong>"
|
||||
#: core/templates/mail/html/invitation.html:197
|
||||
#: core/templates/mail/text/invitation.txt:8
|
||||
#, python-format
|
||||
msgid " %(username)s invited you as an %(role)s on the following document : "
|
||||
msgstr " %(username)s vous a invité en tant que %(role)s sur le document suivant : "
|
||||
|
||||
#: core/templates/mail/html/invitation.html:213
|
||||
#: core/templates/mail/text/invitation.txt:12
|
||||
msgid "We are delighted to welcome you to our community on Docs, your new companion to collaborate on documents efficiently, intuitively, and securely."
|
||||
msgstr "Nous sommes heureux de vous accueillir dans notre communauté sur Docs, votre nouveau compagnon pour collaborer sur des documents efficacement, intuitivement, et en toute sécurité."
|
||||
|
||||
#: core/templates/mail/html/invitation.html:218
|
||||
#: core/templates/mail/text/invitation.txt:13
|
||||
msgid "Our application is designed to help you organize, collaborate, and manage permissions."
|
||||
msgstr "Notre application est conçue pour vous aider à organiser, collaborer et gérer vos permissions."
|
||||
#: core/templates/mail/html/invitation.html:206
|
||||
#: core/templates/mail/html/invitation2.html:211
|
||||
#: core/templates/mail/text/invitation.txt:10
|
||||
#: core/templates/mail/text/invitation2.txt:11
|
||||
msgid "Open"
|
||||
msgstr "Ouvrir"
|
||||
|
||||
#: core/templates/mail/html/invitation.html:223
|
||||
#: core/templates/mail/text/invitation.txt:14
|
||||
msgid "With Docs, you will be able to:"
|
||||
msgstr "Avec Docs, vous serez capable de :"
|
||||
msgid " Docs, your new essential tool for organizing, sharing and collaborate on your documents as a team. "
|
||||
msgstr " Docs, votre nouvel outil incontournable pour organiser, partager et collaborer sur vos documents en équipe. "
|
||||
|
||||
#: core/templates/mail/html/invitation.html:224
|
||||
#: core/templates/mail/text/invitation.txt:15
|
||||
msgid "Create documents."
|
||||
msgstr "Créez des documents."
|
||||
|
||||
#: core/templates/mail/html/invitation.html:225
|
||||
#: core/templates/mail/html/invitation.html:230
|
||||
#: core/templates/mail/html/invitation2.html:235
|
||||
#: core/templates/mail/text/invitation.txt:16
|
||||
msgid "Work offline."
|
||||
msgstr "Travailler hors ligne."
|
||||
#: core/templates/mail/text/invitation2.txt:17
|
||||
msgid "Brought to you by La Suite Numérique"
|
||||
msgstr "Proposé par La Suite Numérique"
|
||||
|
||||
#: core/templates/mail/html/invitation.html:226
|
||||
#: core/templates/mail/text/invitation.txt:17
|
||||
msgid "Invite members of your community to your document in just a few clicks."
|
||||
msgstr "Invitez des membres de votre communauté sur votre document en quelques clics."
|
||||
|
||||
#: core/templates/mail/html/invitation.html:237
|
||||
#: core/templates/mail/text/invitation.txt:19
|
||||
msgid "Visit Docs"
|
||||
msgstr "Visitez Docs"
|
||||
|
||||
#: core/templates/mail/html/invitation.html:246
|
||||
#: core/templates/mail/text/invitation.txt:21
|
||||
msgid "We are confident that Docs will help you increase efficiency and productivity while strengthening the bond among members."
|
||||
msgstr "Nous sommes persuadés que Docs vous aidera à améliorer votre efficacité et votre productivité tout en renforçant les liens entre vos membres."
|
||||
|
||||
#: core/templates/mail/html/invitation.html:251
|
||||
#: core/templates/mail/text/invitation.txt:22
|
||||
msgid "Feel free to explore all the features of the application and share your feedback and suggestions with us. Your feedback is valuable to us and will enable us to continually improve our service."
|
||||
msgstr "N'hésitez pas à explorer toutes les fonctionnalités de l'application et à nous faire part de vos commentaires et suggestions. Vos commentaires nous sont précieux et nous permettront d'améliorer continuellement notre service."
|
||||
|
||||
#: core/templates/mail/html/invitation.html:256
|
||||
#: core/templates/mail/text/invitation.txt:23
|
||||
msgid "Once again, welcome aboard! We are eager to accompany you on your collaboration adventure."
|
||||
msgstr "Encore une fois, bienvenue à bord ! Nous sommes impatients de vous accompagner dans votre aventure collaborative."
|
||||
|
||||
#: core/templates/mail/html/invitation.html:263
|
||||
#: core/templates/mail/text/invitation.txt:25
|
||||
msgid "Sincerely,"
|
||||
msgstr "Sincèrement,"
|
||||
|
||||
#: core/templates/mail/html/invitation.html:264
|
||||
#: core/templates/mail/text/invitation.txt:27
|
||||
msgid "The La Suite Numérique Team"
|
||||
msgstr "L'équipe La Suite Numérique"
|
||||
|
||||
#: core/templates/mail/text/hello.txt:8
|
||||
#: core/templates/mail/html/invitation2.html:190
|
||||
#, python-format
|
||||
msgid "This mail has been sent to %(email)s by %(name)s [%(href)s]"
|
||||
msgid "%(username)s shared a document with you"
|
||||
msgstr "%(username)s a partagé un document avec vous"
|
||||
|
||||
#: core/templates/mail/html/invitation2.html:197
|
||||
#: core/templates/mail/text/invitation2.txt:8
|
||||
#, python-format
|
||||
msgid "%(username)s invited you as an %(role)s on the following document :"
|
||||
msgstr "%(username)s vous a invité en tant que %(role)s sur le document suivant :"
|
||||
|
||||
#: core/templates/mail/html/invitation2.html:228
|
||||
#: core/templates/mail/text/invitation2.txt:15
|
||||
msgid "Docs, your new essential tool for organizing, sharing and collaborate on your document as a team."
|
||||
msgstr "Docs, votre nouvel outil essentiel pour organiser, partager et collaborer sur votre document en équipe."
|
||||
|
||||
#: impress/settings.py:176
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/text/invitation.txt:8
|
||||
msgid "Welcome to Docs!"
|
||||
msgstr "Bienvenue sur Docs !"
|
||||
#: impress/settings.py:177
|
||||
msgid "French"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -3,48 +3,64 @@
|
||||
|
||||
<mj-body mj-class="bg--blue-100">
|
||||
<mj-wrapper css-class="wrapper" padding="0 25px 0px 25px">
|
||||
<mj-section background-url="{{site.domain}}/assets/mail-header-background.png" background-size="cover" background-repeat="no-repeat" background-position="0 -30px">
|
||||
<mj-section
|
||||
background-url="{{domain}}/assets/mail-header-background.png"
|
||||
background-size="cover"
|
||||
background-repeat="no-repeat"
|
||||
background-position="0 -30px"
|
||||
>
|
||||
<mj-column>
|
||||
<mj-image align="center" src="{{site.domain}}/assets/logo-suite-numerique.png" width="250px" align="left" alt="{%trans 'La Suite Numérique' %}" />
|
||||
<mj-image
|
||||
align="center"
|
||||
src="{{domain}}/assets/logo-suite-numerique.png"
|
||||
width="250px"
|
||||
align="left"
|
||||
alt="{%trans 'La Suite Numérique' %}"
|
||||
/>
|
||||
</mj-column>
|
||||
</mj-section>
|
||||
<mj-section mj-class="bg--white-100" padding="30px 20px 60px 20px">
|
||||
<mj-column>
|
||||
<mj-text font-size="16px">
|
||||
<p>{% trans "Invitation to join a document !" %}</p>
|
||||
<mj-text align="center">
|
||||
<h1>
|
||||
{% blocktrans %}
|
||||
{{username}} shared a document with you !
|
||||
{% endblocktrans %}
|
||||
</h1>
|
||||
</mj-text>
|
||||
|
||||
<!-- Welcome Message -->
|
||||
<mj-text>
|
||||
<h1> {% blocktrans %}Welcome to <strong>Docs!</strong>{% endblocktrans %}</h1>
|
||||
</mj-text>
|
||||
<mj-divider border-width="1px" border-style="solid" border-color="#DDDDDD" width="30%" align="left"/>
|
||||
<!-- Main Message -->
|
||||
<mj-text>{% trans "We are delighted to welcome you to our community on Docs, your new companion to collaborate on documents efficiently, intuitively, and securely." %}</mj-text>
|
||||
<mj-text>{% trans "Our application is designed to help you organize, collaborate, and manage permissions." %}</mj-text>
|
||||
<mj-text>
|
||||
{% trans "With Docs, you will be able to:" %}
|
||||
<ul>
|
||||
<li>{% trans "Create documents."%}</li>
|
||||
<li>{% trans "Work offline."%}</li>
|
||||
<li>{% trans "Invite members of your community to your document in just a few clicks."%}</li>
|
||||
</ul>
|
||||
{% blocktrans %}
|
||||
{{username}} invited you as an {{role}} on the following document :
|
||||
{% endblocktrans %}
|
||||
<a href="{{link}}">{{document.title}}</a>
|
||||
</mj-text>
|
||||
<mj-button href="{{site.domain}}/docs/{{document_id}}/" background-color="#000091" color="white" padding-bottom="30px">
|
||||
{% trans "Visit Docs"%}
|
||||
<mj-button
|
||||
href="{{link}}"
|
||||
background-color="#000091"
|
||||
color="white"
|
||||
padding-bottom="30px"
|
||||
>
|
||||
{% trans "Open"%}
|
||||
</mj-button>
|
||||
<mj-text>{% trans "We are confident that Docs will help you increase efficiency and productivity while strengthening the bond among members." %}</mj-text>
|
||||
<mj-text>{% trans "Feel free to explore all the features of the application and share your feedback and suggestions with us. Your feedback is valuable to us and will enable us to continually improve our service." %}</mj-text>
|
||||
<mj-text>{% trans "Once again, welcome aboard! We are eager to accompany you on your collaboration adventure." %}</mj-text>
|
||||
|
||||
<mj-divider
|
||||
border-width="1px"
|
||||
border-style="solid"
|
||||
border-color="#DDDDDD"
|
||||
width="30%"
|
||||
align="center"
|
||||
/>
|
||||
<mj-text>
|
||||
{% blocktrans %}
|
||||
Docs, your new essential tool for organizing, sharing and collaborate on your documents as a team.
|
||||
{% endblocktrans %}
|
||||
</mj-text>
|
||||
<!-- Signature -->
|
||||
<mj-text>
|
||||
<p>{% trans "Sincerely," %}</p>
|
||||
<p>{% trans "The La Suite Numérique Team" %}</p>
|
||||
<p>{% trans "Brought to you by La Suite Numérique" %}</p>
|
||||
</mj-text>
|
||||
</mj-column>
|
||||
</mj-section>
|
||||
</mj-wrapper>
|
||||
</mj-body>
|
||||
</mjml>
|
||||
|
||||
|
||||
@@ -25,14 +25,14 @@
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
color: #000091;
|
||||
}
|
||||
</mj-style>
|
||||
<mj-style>
|
||||
/* Global styles */
|
||||
h1 {
|
||||
color: #161616;
|
||||
font-size: 2rem;
|
||||
font-size: 1.5rem;
|
||||
line-height: 1em;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user