mirror of
https://github.com/suitenumerique/docs.git
synced 2026-05-06 15:12:27 +02:00
Compare commits
5 Commits
prepare-5.
...
experiment
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
294b1a0dc5 | ||
|
|
cbd2705c9f | ||
|
|
21100b986d | ||
|
|
eaddbd83d7 | ||
|
|
22c587fdd0 |
26
CHANGELOG.md
26
CHANGELOG.md
@@ -6,11 +6,18 @@ and this project adheres to
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Changed
|
||||
|
||||
- 🐛(frontend) sanitize pasted and dropped content in document title #2210
|
||||
- 🐛(backend) replace document creation table locks with retry strategy
|
||||
|
||||
## [v5.0.0] - 2026-04-08
|
||||
|
||||
### Added
|
||||
|
||||
- ✨(backend) create a dedicated endpoint to update document content
|
||||
- ⚡️(backend) stream s3 file content with a dedicated endpoint
|
||||
- ✨(backend) allow to use new ai feature using mistral sdk
|
||||
- ✨(backend) create a dedicated endpoint to update document content #2171
|
||||
- ⚡️(backend) stream s3 file content with a dedicated endpoint #2171
|
||||
- ✨(backend) allow to use new ai feature using mistral sdk #2193
|
||||
|
||||
### Changed
|
||||
|
||||
@@ -33,11 +40,14 @@ and this project adheres to
|
||||
- 🐛(backend) load jwks url when OIDC_RS_PRIVATE_KEY_STR is set
|
||||
- 🐛(backend) Prevent moving document to its own descendant or self #2208
|
||||
- 🐛(backend) return 400 when restoring a non-deleted document #2225
|
||||
- 🐛(backend) fix race condition in reconciliation requests CSV import #2153
|
||||
- 🐛(backend) create_for_owner: add accesses before saving doc content #2124
|
||||
- 🐛(backend) enforce emoji validation for reactions #1965
|
||||
|
||||
### Removed
|
||||
|
||||
- 🔥(backend) remove deprecated descendants endpoint #2243
|
||||
- 🔥(backend) remove content in document responses
|
||||
- 🔥(backend) remove content in document responses #2171
|
||||
|
||||
## [v4.8.6] - 2026-04-08
|
||||
|
||||
@@ -76,7 +86,6 @@ and this project adheres to
|
||||
- ⚡️(frontend) add jitter to WS reconnection #2162
|
||||
- 🐛(frontend) fix tree pagination #2145
|
||||
- 🐛(nginx) add page reconciliation on nginx #2154
|
||||
- 🐛(backend) fix race condition in reconciliation requests CSV import #2153
|
||||
|
||||
## [v4.8.4] - 2026-03-25
|
||||
|
||||
@@ -98,9 +107,6 @@ and this project adheres to
|
||||
- 🐛(y-provider) destroy Y.Doc instances after each convert request #2129
|
||||
- 🐛(backend) remove deleted sub documents in favorite_list endpoint #2083
|
||||
|
||||
### Fixed
|
||||
|
||||
- 🐛(backend) create_for_owner: add accesses before saving doc content #2124
|
||||
|
||||
## [v4.8.3] - 2026-03-23
|
||||
|
||||
@@ -206,7 +212,6 @@ and this project adheres to
|
||||
|
||||
### Fixed
|
||||
|
||||
- 🐛(backend) enforce emoji validation for reactions #1965
|
||||
- 🐛(frontend) analytic feature flags problem #1953
|
||||
- 🐛(frontend) fix home collapsing panel #1954
|
||||
- 🐛(frontend) fix disabled color on icon Dropdown #1950
|
||||
@@ -1270,7 +1275,8 @@ and this project adheres to
|
||||
- ✨(frontend) Coming Soon page (#67)
|
||||
- 🚀 Impress, project to manage your documents easily and collaboratively.
|
||||
|
||||
[unreleased]: https://github.com/suitenumerique/docs/compare/v4.8.6...main
|
||||
[unreleased]: https://github.com/suitenumerique/docs/compare/v5.0.0...main
|
||||
[v5.0.0]: https://github.com/suitenumerique/docs/releases/v5.0.0
|
||||
[v4.8.6]: https://github.com/suitenumerique/docs/releases/v4.8.6
|
||||
[v4.8.5]: https://github.com/suitenumerique/docs/releases/v4.8.5
|
||||
[v4.8.4]: https://github.com/suitenumerique/docs/releases/v4.8.4
|
||||
|
||||
@@ -16,6 +16,8 @@ the following command inside your docker container:
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### [5.0.0] - 2026-04-30
|
||||
|
||||
We made several changes around document content management leading to several breaking changes in the API.
|
||||
|
||||
- The endpoint `/api/v1.0/documents/{document_id}/content/` has been renamed in `/api/v1.0/documents/{document_id}/formatted-content/`
|
||||
|
||||
@@ -134,6 +134,7 @@ These are the environment variables you can set for the `impress-backend` contai
|
||||
| THEME_CUSTOMIZATION_CACHE_TIMEOUT | Cache duration for the customization settings | 86400 |
|
||||
| THEME_CUSTOMIZATION_FILE_PATH | Full path to the file customizing the theme. An example is provided in src/backend/impress/configuration/theme/default.json | BASE_DIR/impress/configuration/theme/default.json |
|
||||
| TRASHBIN_CUTOFF_DAYS | Trashbin cutoff | 30 |
|
||||
| TREEBEARD_PATH_COMPUTE_RETRY_MAX_ATTEMPTS | Number of attempts to create a document before failing. | 10 |
|
||||
| USER_OIDC_ESSENTIAL_CLAIMS | Essential claims in OIDC token | [] |
|
||||
| USER_ONBOARDING_DOCUMENTS | A list of documents IDs for which a read-only access will be created for new s | [] |
|
||||
| USER_ONBOARDING_SANDBOX_DOCUMENT | ID of a template sandbox document that will be duplicated for new users | |
|
||||
|
||||
@@ -7,7 +7,6 @@ from base64 import b64decode
|
||||
from os.path import splitext
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import connection, transaction
|
||||
from django.db.models import Q
|
||||
from django.utils.functional import lazy
|
||||
from django.utils.text import slugify
|
||||
@@ -24,6 +23,7 @@ from core.services.converter_services import (
|
||||
ConversionError,
|
||||
Converter,
|
||||
)
|
||||
from core.utils.treebeard import create_tree_node_with_retry
|
||||
|
||||
|
||||
class UserSerializer(serializers.ModelSerializer):
|
||||
@@ -467,18 +467,12 @@ class ServerCreateDocumentSerializer(serializers.Serializer):
|
||||
{"content": ["Could not convert content"]}
|
||||
) from err
|
||||
|
||||
with transaction.atomic():
|
||||
# locks the table to ensure safe concurrent access
|
||||
with connection.cursor() as cursor:
|
||||
cursor.execute(
|
||||
f'LOCK TABLE "{models.Document._meta.db_table}" ' # noqa: SLF001
|
||||
"IN SHARE ROW EXCLUSIVE MODE;"
|
||||
)
|
||||
|
||||
document = models.Document.add_root(
|
||||
document = create_tree_node_with_retry(
|
||||
lambda: models.Document.add_root(
|
||||
title=validated_data["title"],
|
||||
creator=user,
|
||||
)
|
||||
)
|
||||
|
||||
if user:
|
||||
# Associate the document with the pre-existing user
|
||||
|
||||
@@ -67,11 +67,10 @@ from core.services.search_indexers import (
|
||||
get_visited_document_ids_of,
|
||||
)
|
||||
from core.tasks.mail import send_ask_for_access_mail
|
||||
from core.utils import (
|
||||
extract_attachments,
|
||||
filter_descendants,
|
||||
users_sharing_documents_with,
|
||||
)
|
||||
from core.utils.paths import filter_descendants
|
||||
from core.utils.treebeard import create_tree_node_with_retry
|
||||
from core.utils.users import users_sharing_documents_with
|
||||
from core.utils.yjs import extract_attachments
|
||||
|
||||
from ..enums import FeatureFlag, SearchType
|
||||
from . import permissions, serializers, utils
|
||||
@@ -708,18 +707,12 @@ class DocumentViewSet(
|
||||
{"file": ["Could not convert file content"]}
|
||||
) from err
|
||||
|
||||
with transaction.atomic():
|
||||
# locks the table to ensure safe concurrent access
|
||||
with connection.cursor() as cursor:
|
||||
cursor.execute(
|
||||
f'LOCK TABLE "{models.Document._meta.db_table}" ' # noqa: SLF001
|
||||
"IN SHARE ROW EXCLUSIVE MODE;"
|
||||
)
|
||||
|
||||
obj = models.Document.add_root(
|
||||
obj = create_tree_node_with_retry(
|
||||
lambda: models.Document.add_root(
|
||||
creator=self.request.user,
|
||||
**serializer.validated_data,
|
||||
)
|
||||
)
|
||||
serializer.instance = obj
|
||||
models.DocumentAccess.objects.create(
|
||||
document=obj,
|
||||
@@ -1023,16 +1016,12 @@ class DocumentViewSet(
|
||||
)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
|
||||
with transaction.atomic():
|
||||
# "select_for_update" locks the table to ensure safe concurrent access
|
||||
locked_parent = models.Document.objects.select_for_update().get(
|
||||
pk=document.pk
|
||||
)
|
||||
|
||||
child_document = locked_parent.add_child(
|
||||
child_document = create_tree_node_with_retry(
|
||||
lambda: document.add_child(
|
||||
creator=request.user,
|
||||
**serializer.validated_data,
|
||||
)
|
||||
)
|
||||
|
||||
# Set the created instance to the serializer
|
||||
serializer.instance = child_document
|
||||
|
||||
@@ -9,7 +9,7 @@ from django.db import migrations, models
|
||||
from botocore.exceptions import ClientError
|
||||
|
||||
import core.models
|
||||
from core.utils import extract_attachments
|
||||
from core.utils.yjs import extract_attachments
|
||||
|
||||
|
||||
def populate_attachments_on_all_documents(apps, schema_editor):
|
||||
|
||||
@@ -19,7 +19,7 @@ from django.core.cache import cache
|
||||
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 connection, models, transaction
|
||||
from django.db import models, transaction
|
||||
from django.db.models.functions import Left, Length
|
||||
from django.template.loader import render_to_string
|
||||
from django.utils import timezone
|
||||
@@ -39,6 +39,7 @@ from core.choices import (
|
||||
RoleChoices,
|
||||
get_equivalent_link_definition,
|
||||
)
|
||||
from core.utils.treebeard import create_tree_node_with_retry
|
||||
from core.validators import sub_validator
|
||||
|
||||
logger = getLogger(__name__)
|
||||
@@ -265,8 +266,6 @@ class User(AbstractBaseUser, BaseModel, auth_models.PermissionsMixin):
|
||||
duplicate the sandbox document for the user
|
||||
"""
|
||||
if settings.USER_ONBOARDING_SANDBOX_DOCUMENT:
|
||||
# transaction.atomic is used in a context manager to avoid a transaction if
|
||||
# the settings USER_ONBOARDING_SANDBOX_DOCUMENT is unused
|
||||
sandbox_id = settings.USER_ONBOARDING_SANDBOX_DOCUMENT
|
||||
try:
|
||||
template_document = Document.objects.get(id=sandbox_id)
|
||||
@@ -276,20 +275,15 @@ class User(AbstractBaseUser, BaseModel, auth_models.PermissionsMixin):
|
||||
sandbox_id,
|
||||
)
|
||||
return
|
||||
|
||||
with transaction.atomic():
|
||||
# locks the table to ensure safe concurrent access
|
||||
with connection.cursor() as cursor:
|
||||
cursor.execute(
|
||||
f'LOCK TABLE "{Document._meta.db_table}" ' # noqa: SLF001
|
||||
"IN SHARE ROW EXCLUSIVE MODE;"
|
||||
sandbox_document = create_tree_node_with_retry(
|
||||
lambda: Document.add_root(
|
||||
title=template_document.title,
|
||||
content=template_document.content,
|
||||
attachments=template_document.attachments,
|
||||
duplicated_from=template_document,
|
||||
creator=self,
|
||||
)
|
||||
sandbox_document = Document.add_root(
|
||||
title=template_document.title,
|
||||
content=template_document.content,
|
||||
attachments=template_document.attachments,
|
||||
duplicated_from=template_document,
|
||||
creator=self,
|
||||
)
|
||||
|
||||
DocumentAccess.objects.create(
|
||||
|
||||
@@ -12,8 +12,11 @@ from django.utils.module_loading import import_string
|
||||
|
||||
import requests
|
||||
|
||||
from core import models, utils
|
||||
from core import models
|
||||
from core.enums import SearchType
|
||||
from core.utils.dicts import get_value_by_pattern
|
||||
from core.utils.paths import get_ancestor_to_descendants_map
|
||||
from core.utils.yjs import base64_yjs_to_text
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -44,7 +47,7 @@ def get_batch_accesses_by_users_and_teams(paths):
|
||||
Get accesses related to a list of document paths,
|
||||
grouped by users and teams, including all ancestor paths.
|
||||
"""
|
||||
ancestor_map = utils.get_ancestor_to_descendants_map(
|
||||
ancestor_map = get_ancestor_to_descendants_map(
|
||||
paths, steplen=models.Document.steplen
|
||||
)
|
||||
ancestor_paths = list(ancestor_map.keys())
|
||||
@@ -297,7 +300,7 @@ class FindDocumentIndexer(BaseDocumentIndexer):
|
||||
>>> get_title({"id": 1})
|
||||
""
|
||||
"""
|
||||
titles = utils.get_value_by_pattern(source, r"^title\.")
|
||||
titles = get_value_by_pattern(source, r"^title\.")
|
||||
for title in titles:
|
||||
if title:
|
||||
return title
|
||||
@@ -318,7 +321,7 @@ class FindDocumentIndexer(BaseDocumentIndexer):
|
||||
"""
|
||||
doc_path = document.path
|
||||
doc_content = document.content
|
||||
text_content = utils.base64_yjs_to_text(doc_content) if doc_content else ""
|
||||
text_content = base64_yjs_to_text(doc_content) if doc_content else ""
|
||||
|
||||
return {
|
||||
"id": str(document.id),
|
||||
|
||||
@@ -11,7 +11,7 @@ from django.dispatch import receiver
|
||||
|
||||
from core import models
|
||||
from core.tasks.search import trigger_batch_document_indexer
|
||||
from core.utils import get_users_sharing_documents_with_cache_key
|
||||
from core.utils.users import get_users_sharing_documents_with_cache_key
|
||||
|
||||
|
||||
@receiver(signals.post_save, sender=models.Document)
|
||||
|
||||
@@ -12,13 +12,14 @@ import pytest
|
||||
import responses
|
||||
from requests import HTTPError
|
||||
|
||||
from core import factories, models, utils
|
||||
from core import factories, models
|
||||
from core.services.search_indexers import (
|
||||
BaseDocumentIndexer,
|
||||
FindDocumentIndexer,
|
||||
get_document_indexer,
|
||||
get_visited_document_ids_of,
|
||||
)
|
||||
from core.utils.yjs import base64_yjs_to_text
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
@@ -199,7 +200,7 @@ def test_services_search_indexers_serialize_document_returns_expected_json():
|
||||
"depth": 1,
|
||||
"path": document.path,
|
||||
"numchild": 1,
|
||||
"content": utils.base64_yjs_to_text(document.content),
|
||||
"content": base64_yjs_to_text(document.content),
|
||||
"created_at": document.created_at.isoformat(),
|
||||
"updated_at": document.updated_at.isoformat(),
|
||||
"reach": document.link_reach,
|
||||
|
||||
@@ -8,7 +8,18 @@ from django.core.cache import cache
|
||||
import pycrdt
|
||||
import pytest
|
||||
|
||||
from core import factories, utils
|
||||
from core import factories
|
||||
from core.utils.dicts import get_value_by_pattern
|
||||
from core.utils.paths import get_ancestor_to_descendants_map
|
||||
from core.utils.users import (
|
||||
get_users_sharing_documents_with_cache_key,
|
||||
users_sharing_documents_with,
|
||||
)
|
||||
from core.utils.yjs import (
|
||||
base64_yjs_to_text,
|
||||
base64_yjs_to_xml,
|
||||
extract_attachments,
|
||||
)
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
@@ -34,12 +45,12 @@ TEST_BASE64_STRING = (
|
||||
|
||||
def test_utils_base64_yjs_to_text():
|
||||
"""Test extract text from saved yjs document"""
|
||||
assert utils.base64_yjs_to_text(TEST_BASE64_STRING) == "Hello w or ld"
|
||||
assert base64_yjs_to_text(TEST_BASE64_STRING) == "Hello w or ld"
|
||||
|
||||
|
||||
def test_utils_base64_yjs_to_xml():
|
||||
"""Test extract xml from saved yjs document"""
|
||||
content = utils.base64_yjs_to_xml(TEST_BASE64_STRING)
|
||||
content = base64_yjs_to_xml(TEST_BASE64_STRING)
|
||||
assert (
|
||||
'<heading textAlignment="left" level="1"><italic>Hello</italic></heading>'
|
||||
in content
|
||||
@@ -79,13 +90,13 @@ def test_utils_extract_attachments():
|
||||
update = ydoc.get_update()
|
||||
base64_string = base64.b64encode(update).decode("utf-8")
|
||||
# image_key2 is missing the "/media/" part and shouldn't get extracted
|
||||
assert utils.extract_attachments(base64_string) == [image_key1, image_key3]
|
||||
assert extract_attachments(base64_string) == [image_key1, image_key3]
|
||||
|
||||
|
||||
def test_utils_get_ancestor_to_descendants_map_single_path():
|
||||
"""Test ancestor mapping of a single path."""
|
||||
paths = ["000100020005"]
|
||||
result = utils.get_ancestor_to_descendants_map(paths, steplen=4)
|
||||
result = get_ancestor_to_descendants_map(paths, steplen=4)
|
||||
|
||||
assert result == {
|
||||
"0001": {"000100020005"},
|
||||
@@ -97,7 +108,7 @@ def test_utils_get_ancestor_to_descendants_map_single_path():
|
||||
def test_utils_get_ancestor_to_descendants_map_multiple_paths():
|
||||
"""Test ancestor mapping of multiple paths with shared prefixes."""
|
||||
paths = ["000100020005", "00010003"]
|
||||
result = utils.get_ancestor_to_descendants_map(paths, steplen=4)
|
||||
result = get_ancestor_to_descendants_map(paths, steplen=4)
|
||||
|
||||
assert result == {
|
||||
"0001": {"000100020005", "00010003"},
|
||||
@@ -119,10 +130,10 @@ def test_utils_users_sharing_documents_with_cache_miss():
|
||||
factories.UserDocumentAccessFactory(user=user2, document=doc1)
|
||||
factories.UserDocumentAccessFactory(user=user3, document=doc2)
|
||||
|
||||
cache_key = utils.get_users_sharing_documents_with_cache_key(user1)
|
||||
cache_key = get_users_sharing_documents_with_cache_key(user1)
|
||||
cache.delete(cache_key)
|
||||
|
||||
result = utils.users_sharing_documents_with(user1)
|
||||
result = users_sharing_documents_with(user1)
|
||||
|
||||
assert user2.id in result
|
||||
|
||||
@@ -139,12 +150,12 @@ def test_utils_users_sharing_documents_with_cache_hit():
|
||||
factories.UserDocumentAccessFactory(user=user1, document=doc1)
|
||||
factories.UserDocumentAccessFactory(user=user2, document=doc1)
|
||||
|
||||
cache_key = utils.get_users_sharing_documents_with_cache_key(user1)
|
||||
cache_key = get_users_sharing_documents_with_cache_key(user1)
|
||||
|
||||
test_cached_data = {user2.id: "2025-02-10"}
|
||||
cache.set(cache_key, test_cached_data, 86400)
|
||||
|
||||
result = utils.users_sharing_documents_with(user1)
|
||||
result = users_sharing_documents_with(user1)
|
||||
assert result == test_cached_data
|
||||
|
||||
|
||||
@@ -156,7 +167,7 @@ def test_utils_users_sharing_documents_with_cache_invalidation_on_create():
|
||||
doc1 = factories.DocumentFactory()
|
||||
|
||||
# Pre-populate cache
|
||||
cache_key = utils.get_users_sharing_documents_with_cache_key(user1)
|
||||
cache_key = get_users_sharing_documents_with_cache_key(user1)
|
||||
cache.set(cache_key, {}, 86400)
|
||||
|
||||
# Verify cache exists
|
||||
@@ -182,7 +193,7 @@ def test_utils_users_sharing_documents_with_cache_invalidation_on_delete():
|
||||
|
||||
doc_access = factories.UserDocumentAccessFactory(user=user1, document=doc1)
|
||||
|
||||
cache_key = utils.get_users_sharing_documents_with_cache_key(user1)
|
||||
cache_key = get_users_sharing_documents_with_cache_key(user1)
|
||||
cache.set(cache_key, {user2.id: "2025-02-10"}, 86400)
|
||||
|
||||
assert cache.get(cache_key) is not None
|
||||
@@ -196,10 +207,10 @@ def test_utils_users_sharing_documents_with_empty_result():
|
||||
"""Test when user is not sharing any documents."""
|
||||
user1 = factories.UserFactory()
|
||||
|
||||
cache_key = utils.get_users_sharing_documents_with_cache_key(user1)
|
||||
cache_key = get_users_sharing_documents_with_cache_key(user1)
|
||||
cache.delete(cache_key)
|
||||
|
||||
result = utils.users_sharing_documents_with(user1)
|
||||
result = users_sharing_documents_with(user1)
|
||||
|
||||
assert result == {}
|
||||
|
||||
@@ -210,7 +221,7 @@ def test_utils_users_sharing_documents_with_empty_result():
|
||||
def test_utils_get_value_by_pattern_matching_key():
|
||||
"""Test extracting value from a dictionary with a matching key pattern."""
|
||||
data = {"title.extension": "Bonjour", "id": 1, "content": "test"}
|
||||
result = utils.get_value_by_pattern(data, r"^title\.")
|
||||
result = get_value_by_pattern(data, r"^title\.")
|
||||
|
||||
assert set(result) == {"Bonjour"}
|
||||
|
||||
@@ -218,7 +229,7 @@ def test_utils_get_value_by_pattern_matching_key():
|
||||
def test_utils_get_value_by_pattern_multiple_matches():
|
||||
"""Test that all matching keys are returned."""
|
||||
data = {"title.extension_1": "Bonjour", "title.extension_2": "Hello", "id": 1}
|
||||
result = utils.get_value_by_pattern(data, r"^title\.")
|
||||
result = get_value_by_pattern(data, r"^title\.")
|
||||
|
||||
assert set(result) == {
|
||||
"Bonjour",
|
||||
@@ -229,7 +240,7 @@ def test_utils_get_value_by_pattern_multiple_matches():
|
||||
def test_utils_get_value_by_pattern_multiple_extensions():
|
||||
"""Test that all matching keys are returned."""
|
||||
data = {"title.extension_1.extension_2": "Bonjour", "id": 1}
|
||||
result = utils.get_value_by_pattern(data, r"^title\.")
|
||||
result = get_value_by_pattern(data, r"^title\.")
|
||||
|
||||
assert set(result) == {"Bonjour"}
|
||||
|
||||
@@ -237,6 +248,6 @@ def test_utils_get_value_by_pattern_multiple_extensions():
|
||||
def test_utils_get_value_by_pattern_no_match():
|
||||
"""Test that empty list is returned when no key matches the pattern."""
|
||||
data = {"name": "Test", "id": 1}
|
||||
result = utils.get_value_by_pattern(data, r"^title\.")
|
||||
result = get_value_by_pattern(data, r"^title\.")
|
||||
|
||||
assert result == []
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
"""Tests for the create_tree_node_with_retry utils."""
|
||||
|
||||
from unittest import mock
|
||||
|
||||
from django.core.exceptions import ValidationError as DjangoValidationError
|
||||
from django.db import IntegrityError
|
||||
|
||||
import pytest
|
||||
|
||||
from core.factories import UserFactory
|
||||
from core.models import Document
|
||||
from core.utils.treebeard import _is_tree_path_collision, create_tree_node_with_retry
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"exc",
|
||||
[
|
||||
DjangoValidationError({"path": "not unique"}),
|
||||
IntegrityError("impress_document_path_key"),
|
||||
],
|
||||
)
|
||||
def test_utils_create_tree_node_with_retry_exceed_max_attempts(settings, exc):
|
||||
"""Test exceeding the max attempts should reraise the exception."""
|
||||
|
||||
settings.TREEBEARD_PATH_COMPUTE_RETRY_MAX_ATTEMPTS = 2
|
||||
|
||||
create_fn = mock.MagicMock()
|
||||
create_fn.side_effect = exc
|
||||
|
||||
with (
|
||||
pytest.raises(exc.__class__),
|
||||
mock.patch(
|
||||
"core.utils.treebeard._is_tree_path_collision"
|
||||
) as mock__is_tree_path_collision,
|
||||
):
|
||||
mock__is_tree_path_collision.side_effect = _is_tree_path_collision
|
||||
create_tree_node_with_retry(create_fn)
|
||||
|
||||
mock__is_tree_path_collision.assert_called()
|
||||
assert mock__is_tree_path_collision.call_count == 2
|
||||
assert create_fn.call_count == 2
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"exc",
|
||||
[
|
||||
DjangoValidationError({"foo": "bar"}),
|
||||
IntegrityError("not handled"),
|
||||
],
|
||||
)
|
||||
def test_utils_create_tree_node_with_retry_exceed_exception_not_handled(settings, exc):
|
||||
"""Test with an exception not handled should return reraise it immediatly."""
|
||||
|
||||
settings.TREEBEARD_PATH_COMPUTE_RETRY_MAX_ATTEMPTS = 2
|
||||
|
||||
create_fn = mock.MagicMock()
|
||||
create_fn.side_effect = exc
|
||||
|
||||
with (
|
||||
pytest.raises(exc.__class__),
|
||||
mock.patch(
|
||||
"core.utils.treebeard._is_tree_path_collision"
|
||||
) as mock__is_tree_path_collision,
|
||||
):
|
||||
mock__is_tree_path_collision.side_effect = _is_tree_path_collision
|
||||
create_tree_node_with_retry(create_fn)
|
||||
|
||||
mock__is_tree_path_collision.assert_called()
|
||||
assert mock__is_tree_path_collision.call_count == 1
|
||||
assert create_fn.call_count == 1
|
||||
|
||||
|
||||
def test_utils_create_tree_node_with_retry_success():
|
||||
"""Test executing successfully the create_fn callback."""
|
||||
|
||||
user = UserFactory()
|
||||
|
||||
document = create_tree_node_with_retry(
|
||||
lambda: Document.add_root(
|
||||
creator=user,
|
||||
title="success",
|
||||
)
|
||||
)
|
||||
|
||||
assert isinstance(document, Document)
|
||||
assert document.title == "success"
|
||||
assert document.path is not None
|
||||
@@ -2,7 +2,7 @@
|
||||
Unit tests for the filter_root_paths utility function.
|
||||
"""
|
||||
|
||||
from core.utils import filter_descendants
|
||||
from core.utils.paths import filter_descendants
|
||||
|
||||
|
||||
def test_utils_filter_descendants_success():
|
||||
|
||||
@@ -4,7 +4,8 @@ from django.utils import timezone
|
||||
|
||||
import pytest
|
||||
|
||||
from core import factories, utils
|
||||
from core import factories
|
||||
from core.utils.users import users_sharing_documents_with
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
@@ -54,7 +55,7 @@ def test_utils_users_sharing_documents_with():
|
||||
doc_3_pierre_2.created_at = yesterday
|
||||
doc_3_pierre_2.save()
|
||||
|
||||
shared_map = utils.users_sharing_documents_with(user)
|
||||
shared_map = users_sharing_documents_with(user)
|
||||
|
||||
assert shared_map == {
|
||||
pierre_1.id: last_week,
|
||||
|
||||
@@ -1,170 +0,0 @@
|
||||
"""Utils for the core app."""
|
||||
|
||||
import base64
|
||||
import logging
|
||||
import re
|
||||
import time
|
||||
from collections import defaultdict
|
||||
|
||||
from django.core.cache import cache
|
||||
from django.db import models as db
|
||||
from django.db.models import Subquery
|
||||
|
||||
import pycrdt
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
from core import enums, models
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def get_value_by_pattern(data, pattern):
|
||||
"""
|
||||
Get all values from keys matching a regex pattern in a dictionary.
|
||||
|
||||
Args:
|
||||
data (dict): Source dictionary to search
|
||||
pattern (str): Regex pattern to match against keys
|
||||
|
||||
Returns:
|
||||
list: List of values for all matching keys, empty list if no matches
|
||||
|
||||
Example:
|
||||
>>> get_value_by_pattern({"title.fr": "Bonjour", "id": 1}, r"^title\\.")
|
||||
["Bonjour"]
|
||||
>>> get_value_by_pattern({"title.fr": "Bonjour", "title.en": "Hello"}, r"^title\\.")
|
||||
["Bonjour", "Hello"]
|
||||
"""
|
||||
regex = re.compile(pattern)
|
||||
return [value for key, value in data.items() if regex.match(key)]
|
||||
|
||||
|
||||
def get_ancestor_to_descendants_map(paths, steplen):
|
||||
"""
|
||||
Given a list of document paths, return a mapping of ancestor_path -> set of descendant_paths.
|
||||
|
||||
Each path is assumed to use materialized path format with fixed-length segments.
|
||||
|
||||
Args:
|
||||
paths (list of str): List of full document paths.
|
||||
steplen (int): Length of each path segment.
|
||||
|
||||
Returns:
|
||||
dict[str, set[str]]: Mapping from ancestor path to its descendant paths (including itself).
|
||||
"""
|
||||
ancestor_map = defaultdict(set)
|
||||
for path in paths:
|
||||
for i in range(steplen, len(path) + 1, steplen):
|
||||
ancestor = path[:i]
|
||||
ancestor_map[ancestor].add(path)
|
||||
return ancestor_map
|
||||
|
||||
|
||||
def filter_descendants(paths, root_paths, skip_sorting=False):
|
||||
"""
|
||||
Filters paths to keep only those that are descendants of any path in root_paths.
|
||||
|
||||
A path is considered a descendant of a root path if it starts with the root path.
|
||||
If `skip_sorting` is not set to True, the function will sort both lists before
|
||||
processing because both `paths` and `root_paths` need to be in lexicographic order
|
||||
before going through the algorithm.
|
||||
|
||||
Args:
|
||||
paths (iterable of str): List of paths to be filtered.
|
||||
root_paths (iterable of str): List of paths to check as potential prefixes.
|
||||
skip_sorting (bool): If True, assumes both `paths` and `root_paths` are already sorted.
|
||||
|
||||
Returns:
|
||||
list of str: A list of sorted paths that are descendants of any path in `root_paths`.
|
||||
"""
|
||||
results = []
|
||||
i = 0
|
||||
n = len(root_paths)
|
||||
|
||||
if not skip_sorting:
|
||||
paths.sort()
|
||||
root_paths.sort()
|
||||
|
||||
for path in paths:
|
||||
# Try to find a matching prefix in the sorted accessible paths
|
||||
while i < n:
|
||||
if path.startswith(root_paths[i]):
|
||||
results.append(path)
|
||||
break
|
||||
if root_paths[i] < path:
|
||||
i += 1
|
||||
else:
|
||||
# If paths[i] > path, no need to keep searching
|
||||
break
|
||||
return results
|
||||
|
||||
|
||||
def base64_yjs_to_xml(base64_string):
|
||||
"""Extract xml from base64 yjs document."""
|
||||
|
||||
decoded_bytes = base64.b64decode(base64_string)
|
||||
# uint8_array = bytearray(decoded_bytes)
|
||||
|
||||
doc = pycrdt.Doc()
|
||||
doc.apply_update(decoded_bytes)
|
||||
return str(doc.get("document-store", type=pycrdt.XmlFragment))
|
||||
|
||||
|
||||
def base64_yjs_to_text(base64_string):
|
||||
"""Extract text from base64 yjs document."""
|
||||
|
||||
blocknote_structure = base64_yjs_to_xml(base64_string)
|
||||
soup = BeautifulSoup(blocknote_structure, "lxml-xml")
|
||||
return soup.get_text(separator=" ", strip=True)
|
||||
|
||||
|
||||
def extract_attachments(content):
|
||||
"""Helper method to extract media paths from a document's content."""
|
||||
if not content:
|
||||
return []
|
||||
|
||||
xml_content = base64_yjs_to_xml(content)
|
||||
return re.findall(enums.MEDIA_STORAGE_URL_EXTRACT, xml_content)
|
||||
|
||||
|
||||
def get_users_sharing_documents_with_cache_key(user):
|
||||
"""Generate a unique cache key for each user."""
|
||||
return f"users_sharing_documents_with_{user.id}"
|
||||
|
||||
|
||||
def users_sharing_documents_with(user):
|
||||
"""
|
||||
Returns a map of users sharing documents with the given user,
|
||||
sorted by last shared date.
|
||||
"""
|
||||
start_time = time.time()
|
||||
cache_key = get_users_sharing_documents_with_cache_key(user)
|
||||
cached_result = cache.get(cache_key)
|
||||
|
||||
if cached_result is not None:
|
||||
elapsed = time.time() - start_time
|
||||
logger.info(
|
||||
"users_sharing_documents_with cache hit for user %s (took %.3fs)",
|
||||
user.id,
|
||||
elapsed,
|
||||
)
|
||||
return cached_result
|
||||
|
||||
user_docs_qs = models.DocumentAccess.objects.filter(user=user).values_list(
|
||||
"document_id", flat=True
|
||||
)
|
||||
shared_qs = (
|
||||
models.DocumentAccess.objects.filter(document_id__in=Subquery(user_docs_qs))
|
||||
.exclude(user=user)
|
||||
.values("user")
|
||||
.annotate(last_shared=db.Max("created_at"))
|
||||
)
|
||||
result = {item["user"]: item["last_shared"] for item in shared_qs}
|
||||
cache.set(cache_key, result, 86400) # Cache for 1 day
|
||||
elapsed = time.time() - start_time
|
||||
logger.info(
|
||||
"users_sharing_documents_with cache miss for user %s (took %.3fs)",
|
||||
user.id,
|
||||
elapsed,
|
||||
)
|
||||
return result
|
||||
1
src/backend/core/utils/__init__.py
Normal file
1
src/backend/core/utils/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
"""Core utilities package."""
|
||||
24
src/backend/core/utils/dicts.py
Normal file
24
src/backend/core/utils/dicts.py
Normal file
@@ -0,0 +1,24 @@
|
||||
"""Dictionary utility functions."""
|
||||
|
||||
import re
|
||||
|
||||
|
||||
def get_value_by_pattern(data, pattern):
|
||||
"""
|
||||
Get all values from keys matching a regex pattern in a dictionary.
|
||||
|
||||
Args:
|
||||
data (dict): Source dictionary to search
|
||||
pattern (str): Regex pattern to match against keys
|
||||
|
||||
Returns:
|
||||
list: List of values for all matching keys, empty list if no matches
|
||||
|
||||
Example:
|
||||
>>> get_value_by_pattern({"title.fr": "Bonjour", "id": 1}, r"^title\\.")
|
||||
["Bonjour"]
|
||||
>>> get_value_by_pattern({"title.fr": "Bonjour", "title.en": "Hello"}, r"^title\\.")
|
||||
["Bonjour", "Hello"]
|
||||
"""
|
||||
regex = re.compile(pattern)
|
||||
return [value for key, value in data.items() if regex.match(key)]
|
||||
63
src/backend/core/utils/paths.py
Normal file
63
src/backend/core/utils/paths.py
Normal file
@@ -0,0 +1,63 @@
|
||||
"""Path and tree structure utilities."""
|
||||
|
||||
from collections import defaultdict
|
||||
|
||||
|
||||
def get_ancestor_to_descendants_map(paths, steplen):
|
||||
"""
|
||||
Given a list of document paths, return a mapping of ancestor_path -> set of descendant_paths.
|
||||
|
||||
Each path is assumed to use materialized path format with fixed-length segments.
|
||||
|
||||
Args:
|
||||
paths (list of str): List of full document paths.
|
||||
steplen (int): Length of each path segment.
|
||||
|
||||
Returns:
|
||||
dict[str, set[str]]: Mapping from ancestor path to its descendant paths (including itself).
|
||||
"""
|
||||
ancestor_map = defaultdict(set)
|
||||
for path in paths:
|
||||
for i in range(steplen, len(path) + 1, steplen):
|
||||
ancestor = path[:i]
|
||||
ancestor_map[ancestor].add(path)
|
||||
return ancestor_map
|
||||
|
||||
|
||||
def filter_descendants(paths, root_paths, skip_sorting=False):
|
||||
"""
|
||||
Filters paths to keep only those that are descendants of any path in root_paths.
|
||||
|
||||
A path is considered a descendant of a root path if it starts with the root path.
|
||||
If `skip_sorting` is not set to True, the function will sort both lists before
|
||||
processing because both `paths` and `root_paths` need to be in lexicographic order
|
||||
before going through the algorithm.
|
||||
|
||||
Args:
|
||||
paths (iterable of str): List of paths to be filtered.
|
||||
root_paths (iterable of str): List of paths to check as potential prefixes.
|
||||
skip_sorting (bool): If True, assumes both `paths` and `root_paths` are already sorted.
|
||||
|
||||
Returns:
|
||||
list of str: A list of sorted paths that are descendants of any path in `root_paths`.
|
||||
"""
|
||||
results = []
|
||||
i = 0
|
||||
n = len(root_paths)
|
||||
|
||||
if not skip_sorting:
|
||||
paths.sort()
|
||||
root_paths.sort()
|
||||
|
||||
for path in paths:
|
||||
# Try to find a matching prefix in the sorted accessible paths
|
||||
while i < n:
|
||||
if path.startswith(root_paths[i]):
|
||||
results.append(path)
|
||||
break
|
||||
if root_paths[i] < path:
|
||||
i += 1
|
||||
else:
|
||||
# If paths[i] > path, no need to keep searching
|
||||
break
|
||||
return results
|
||||
56
src/backend/core/utils/treebeard.py
Normal file
56
src/backend/core/utils/treebeard.py
Normal file
@@ -0,0 +1,56 @@
|
||||
"""Treebeard path collision handling utilities."""
|
||||
|
||||
import logging
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import ValidationError as DjangoValidationError
|
||||
from django.db import IntegrityError, transaction
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def _is_tree_path_collision(exc):
|
||||
"""Return True when `exc` is caused by a Document.path uniqueness conflict.
|
||||
|
||||
Treebeard computes the materialized path by reading the current siblings;
|
||||
under concurrency two callers may compute the same value. Depending on
|
||||
timing this surfaces either as:
|
||||
|
||||
- `django.core.exceptions.ValidationError` raised by `full_clean()` /
|
||||
`validate_unique()` before the INSERT (BaseModel.save calls full_clean),
|
||||
- or `IntegrityError` from the database unique index when the validate
|
||||
step misses the conflict.
|
||||
"""
|
||||
if isinstance(exc, DjangoValidationError):
|
||||
message_dict = getattr(exc, "message_dict", None)
|
||||
if message_dict is not None:
|
||||
return "path" in message_dict
|
||||
return "path" in str(exc).lower()
|
||||
|
||||
# search in the IntegrityError exception
|
||||
return "impress_document_path_key" in str(exc).lower()
|
||||
|
||||
|
||||
def create_tree_node_with_retry(create_fn):
|
||||
"""Run `create_fn` in a fresh atomic block, retrying on path collisions.
|
||||
|
||||
The Document.path field carries a unique constraint, which is the source of
|
||||
truth that prevents duplicate paths. On collision we let the failed
|
||||
transaction roll back, and call `create_fn` again so treebeard recomputes
|
||||
the path from the latest state.
|
||||
"""
|
||||
max_attempts = settings.TREEBEARD_PATH_COMPUTE_RETRY_MAX_ATTEMPTS
|
||||
for attempt in range(max_attempts):
|
||||
try:
|
||||
with transaction.atomic():
|
||||
return create_fn()
|
||||
except (IntegrityError, DjangoValidationError) as exc:
|
||||
if not _is_tree_path_collision(exc) or attempt == max_attempts - 1:
|
||||
raise
|
||||
logger.info(
|
||||
"tree path collision on attempt %d/%d, retrying",
|
||||
attempt + 1,
|
||||
max_attempts,
|
||||
)
|
||||
|
||||
raise RuntimeError("create_tree_node_with_retry exited without result")
|
||||
55
src/backend/core/utils/users.py
Normal file
55
src/backend/core/utils/users.py
Normal file
@@ -0,0 +1,55 @@
|
||||
"""User sharing cache utilities."""
|
||||
|
||||
import logging
|
||||
import time
|
||||
|
||||
from django.core.cache import cache
|
||||
from django.db import models as db
|
||||
from django.db.models import Subquery
|
||||
|
||||
from core import models
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def get_users_sharing_documents_with_cache_key(user):
|
||||
"""Generate a unique cache key for each user."""
|
||||
return f"users_sharing_documents_with_{user.id}"
|
||||
|
||||
|
||||
def users_sharing_documents_with(user):
|
||||
"""
|
||||
Returns a map of users sharing documents with the given user,
|
||||
sorted by last shared date.
|
||||
"""
|
||||
start_time = time.time()
|
||||
cache_key = get_users_sharing_documents_with_cache_key(user)
|
||||
cached_result = cache.get(cache_key)
|
||||
|
||||
if cached_result is not None:
|
||||
elapsed = time.time() - start_time
|
||||
logger.info(
|
||||
"users_sharing_documents_with cache hit for user %s (took %.3fs)",
|
||||
user.id,
|
||||
elapsed,
|
||||
)
|
||||
return cached_result
|
||||
|
||||
user_docs_qs = models.DocumentAccess.objects.filter(user=user).values_list(
|
||||
"document_id", flat=True
|
||||
)
|
||||
shared_qs = (
|
||||
models.DocumentAccess.objects.filter(document_id__in=Subquery(user_docs_qs))
|
||||
.exclude(user=user)
|
||||
.values("user")
|
||||
.annotate(last_shared=db.Max("created_at"))
|
||||
)
|
||||
result = {item["user"]: item["last_shared"] for item in shared_qs}
|
||||
cache.set(cache_key, result, 86400) # Cache for 1 day
|
||||
elapsed = time.time() - start_time
|
||||
logger.info(
|
||||
"users_sharing_documents_with cache miss for user %s (took %.3fs)",
|
||||
user.id,
|
||||
elapsed,
|
||||
)
|
||||
return result
|
||||
36
src/backend/core/utils/yjs.py
Normal file
36
src/backend/core/utils/yjs.py
Normal file
@@ -0,0 +1,36 @@
|
||||
"""Yjs document conversion utilities."""
|
||||
|
||||
import base64
|
||||
import re
|
||||
|
||||
import pycrdt
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
from core import enums
|
||||
|
||||
|
||||
def base64_yjs_to_xml(base64_string):
|
||||
"""Extract xml from base64 yjs document."""
|
||||
|
||||
decoded_bytes = base64.b64decode(base64_string)
|
||||
|
||||
doc = pycrdt.Doc()
|
||||
doc.apply_update(decoded_bytes)
|
||||
return str(doc.get("document-store", type=pycrdt.XmlFragment))
|
||||
|
||||
|
||||
def base64_yjs_to_text(base64_string):
|
||||
"""Extract text from base64 yjs document."""
|
||||
|
||||
blocknote_structure = base64_yjs_to_xml(base64_string)
|
||||
soup = BeautifulSoup(blocknote_structure, "lxml-xml")
|
||||
return soup.get_text(separator=" ", strip=True)
|
||||
|
||||
|
||||
def extract_attachments(content):
|
||||
"""Helper method to extract media paths from a document's content."""
|
||||
if not content:
|
||||
return []
|
||||
|
||||
xml_content = base64_yjs_to_xml(content)
|
||||
return re.findall(enums.MEDIA_STORAGE_URL_EXTRACT, xml_content)
|
||||
@@ -1081,6 +1081,12 @@ class Base(Configuration):
|
||||
60 * 60 * 24, environ_name="CONTENT_METADATA_CACHE_TIMEOUT", environ_prefix=None
|
||||
)
|
||||
|
||||
TREEBEARD_PATH_COMPUTE_RETRY_MAX_ATTEMPTS = values.IntegerValue(
|
||||
10,
|
||||
environ_name="TREEBEARD_PATH_COMPUTE_RETRY_MAX_ATTEMPTS",
|
||||
environ_prefix=None,
|
||||
)
|
||||
|
||||
# pylint: disable=invalid-name
|
||||
@property
|
||||
def ENVIRONMENT(self):
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-02 09:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 13:28\n"
|
||||
"POT-Creation-Date: 2026-04-30 12:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-30 13:05\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Breton\n"
|
||||
"Language: br_FR\n"
|
||||
@@ -17,28 +17,28 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 18\n"
|
||||
|
||||
#: build/lib/core/admin.py:30 core/admin.py:30
|
||||
#: build/lib/core/admin.py:33 core/admin.py:33
|
||||
msgid "Personal info"
|
||||
msgstr "Titouroù personel"
|
||||
|
||||
#: build/lib/core/admin.py:43 build/lib/core/admin.py:161 core/admin.py:43
|
||||
#: core/admin.py:161
|
||||
#: build/lib/core/admin.py:46 build/lib/core/admin.py:166 core/admin.py:46
|
||||
#: core/admin.py:166
|
||||
msgid "Permissions"
|
||||
msgstr "Aotreoù"
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
#: build/lib/core/admin.py:58 core/admin.py:58
|
||||
msgid "Important dates"
|
||||
msgstr "Deiziadoù a-bouez"
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
#: build/lib/core/admin.py:117 core/admin.py:117
|
||||
msgid "Import job created and queued."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
#: build/lib/core/admin.py:121 core/admin.py:121
|
||||
msgid "Process selected user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:171 core/admin.py:171
|
||||
#: build/lib/core/admin.py:176 core/admin.py:176
|
||||
msgid "Tree structure"
|
||||
msgstr "Gwezennadur"
|
||||
|
||||
@@ -62,24 +62,24 @@ msgstr "Kuzhet"
|
||||
msgid "Favorite"
|
||||
msgstr "Sinedoù"
|
||||
|
||||
#: build/lib/core/api/serializers.py:544 core/api/serializers.py:544
|
||||
#: build/lib/core/api/serializers.py:507 core/api/serializers.py:507
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Ur restr nevez a zo bet krouet ganeoc'h!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
|
||||
#: build/lib/core/api/serializers.py:511 core/api/serializers.py:511
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "C'hwi zo bet disklaeriet perc'henn ur restr nevez:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:584 core/api/serializers.py:584
|
||||
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
|
||||
msgid "This field is required."
|
||||
msgstr "Ar vaezienn-mañ a zo rekis."
|
||||
|
||||
#: build/lib/core/api/serializers.py:595 core/api/serializers.py:595
|
||||
#: build/lib/core/api/serializers.py:558 core/api/serializers.py:558
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1312 core/api/viewsets.py:1312
|
||||
#: build/lib/core/api/viewsets.py:1299 core/api/viewsets.py:1299
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "eilenn {title}"
|
||||
@@ -375,151 +375,151 @@ msgstr "Restr"
|
||||
msgid "Documents"
|
||||
msgstr "Restroù"
|
||||
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1345
|
||||
#: core/models.py:940 core/models.py:1345
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1347
|
||||
#: core/models.py:940 core/models.py:1347
|
||||
msgid "Untitled Document"
|
||||
msgstr "Restr hep titl"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1348 core/models.py:1348
|
||||
msgid "Open"
|
||||
msgstr "Digeriñ"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1383 core/models.py:1383
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you!"
|
||||
msgstr "{name} en deus rannet ur restr ganeoc'h!"
|
||||
|
||||
#: build/lib/core/models.py:1385 core/models.py:1385
|
||||
#: build/lib/core/models.py:1387 core/models.py:1387
|
||||
#, python-brace-format
|
||||
msgid "{name} invited you with the role \"{role}\" on the following document:"
|
||||
msgstr "{name} en deus pedet ac'hanoc'h gant ar rol \"{role}\" war ar restr da-heul:"
|
||||
|
||||
#: build/lib/core/models.py:1391 core/models.py:1391
|
||||
#: build/lib/core/models.py:1393 core/models.py:1393
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you: {title}"
|
||||
msgstr "{name} en deus rannet ur restr ganeoc'h: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1492 core/models.py:1492
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link trace"
|
||||
msgstr "Roud liamm ar restr/an implijer"
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1495 core/models.py:1495
|
||||
msgid "Document/user link traces"
|
||||
msgstr "Roudoù liamm ar restr/an implijer"
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1501 core/models.py:1501
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr "Ur roud liamm a zo dija evit an restr/an implijer."
|
||||
|
||||
#: build/lib/core/models.py:1522 core/models.py:1522
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorite"
|
||||
msgstr "Restr muiañ-karet"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1525 core/models.py:1525
|
||||
msgid "Document favorites"
|
||||
msgstr "Restroù muiañ-karet"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1531 core/models.py:1531
|
||||
msgid "This document is already targeted by a favorite relation instance for the same user."
|
||||
msgstr "Ar restr-mañ a zo ur restr muiañ karet gant an implijer-mañ."
|
||||
|
||||
#: build/lib/core/models.py:1551 core/models.py:1551
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relation"
|
||||
msgstr "Liamm restr/implijer"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1554 core/models.py:1554
|
||||
msgid "Document/user relations"
|
||||
msgstr "Liammoù restr/implijer"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1560 core/models.py:1560
|
||||
msgid "This user is already in this document."
|
||||
msgstr "An implijer-mañ a zo dija er restr-mañ."
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1566 core/models.py:1566
|
||||
msgid "This team is already in this document."
|
||||
msgstr "Ar skipailh-mañ a zo dija en restr-mañ."
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1572 core/models.py:1572
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr "An implijer pe ar skipailh a rank bezañ termenet, ket an daou avat."
|
||||
|
||||
#: build/lib/core/models.py:1721 core/models.py:1721
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for access"
|
||||
msgstr "Goulenn tizhout ar restr"
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1724 core/models.py:1724
|
||||
msgid "Document ask for accesses"
|
||||
msgstr "Goulennoù tizhout ar restr"
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1730 core/models.py:1730
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr "An implijer en deus goulennet tizhout ar restr-mañ."
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#: build/lib/core/models.py:1787 core/models.py:1787
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr "{name} en defe c'hoant da dizhout ar restr-mañ!"
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#: build/lib/core/models.py:1791 core/models.py:1791
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr "{name} en defe c'hoant da dizhout ar restr da-heul:"
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#: build/lib/core/models.py:1797 core/models.py:1797
|
||||
#, python-brace-format
|
||||
msgid "{name} is asking for access to the document: {title}"
|
||||
msgstr "{name} en defe c'hoant da dizhout ar restr: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1837 core/models.py:1837
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1840 core/models.py:1840
|
||||
msgid "Threads"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1841 build/lib/core/models.py:1893
|
||||
#: core/models.py:1841 core/models.py:1893
|
||||
#: build/lib/core/models.py:1843 build/lib/core/models.py:1895
|
||||
#: core/models.py:1843 core/models.py:1895
|
||||
msgid "Anonymous"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1891 core/models.py:1891
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1940 core/models.py:1940
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reaction"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1945 core/models.py:1945
|
||||
msgid "Reactions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1955 core/models.py:1955
|
||||
msgid "email address"
|
||||
msgstr "postel"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitation"
|
||||
msgstr "Pedadenn d'ur restr"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1975 core/models.py:1975
|
||||
msgid "Document invitations"
|
||||
msgstr "Pedadennoù d'ur restr"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1995 core/models.py:1995
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr "Ar postel-mañ a zo liammet ouzh un implijer enskrivet."
|
||||
|
||||
#: build/lib/impress/settings.py:808 impress/settings.py:808
|
||||
#: build/lib/impress/settings.py:837 impress/settings.py:837
|
||||
msgid "Docs AI"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-02 09:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 13:28\n"
|
||||
"POT-Creation-Date: 2026-04-30 12:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-30 13:05\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: German\n"
|
||||
"Language: de_DE\n"
|
||||
@@ -17,28 +17,28 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 18\n"
|
||||
|
||||
#: build/lib/core/admin.py:30 core/admin.py:30
|
||||
#: build/lib/core/admin.py:33 core/admin.py:33
|
||||
msgid "Personal info"
|
||||
msgstr "Persönliche Daten"
|
||||
|
||||
#: build/lib/core/admin.py:43 build/lib/core/admin.py:161 core/admin.py:43
|
||||
#: core/admin.py:161
|
||||
#: build/lib/core/admin.py:46 build/lib/core/admin.py:166 core/admin.py:46
|
||||
#: core/admin.py:166
|
||||
msgid "Permissions"
|
||||
msgstr "Berechtigungen"
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
#: build/lib/core/admin.py:58 core/admin.py:58
|
||||
msgid "Important dates"
|
||||
msgstr "Wichtige Termine"
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
#: build/lib/core/admin.py:117 core/admin.py:117
|
||||
msgid "Import job created and queued."
|
||||
msgstr "Import-Job erstellt und in der Warteschlange."
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
#: build/lib/core/admin.py:121 core/admin.py:121
|
||||
msgid "Process selected user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:171 core/admin.py:171
|
||||
#: build/lib/core/admin.py:176 core/admin.py:176
|
||||
msgid "Tree structure"
|
||||
msgstr "Baumstruktur"
|
||||
|
||||
@@ -62,24 +62,24 @@ msgstr "Maskiert"
|
||||
msgid "Favorite"
|
||||
msgstr "Favorit"
|
||||
|
||||
#: build/lib/core/api/serializers.py:544 core/api/serializers.py:544
|
||||
#: build/lib/core/api/serializers.py:507 core/api/serializers.py:507
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Ein neues Dokument wurde in Ihrem Namen erstellt!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
|
||||
#: build/lib/core/api/serializers.py:511 core/api/serializers.py:511
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "Sie sind Besitzer eines neuen Dokuments:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:584 core/api/serializers.py:584
|
||||
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
|
||||
msgid "This field is required."
|
||||
msgstr "Dies ist ein Pflichtfeld."
|
||||
|
||||
#: build/lib/core/api/serializers.py:595 core/api/serializers.py:595
|
||||
#: build/lib/core/api/serializers.py:558 core/api/serializers.py:558
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr "Der Zugriff auf den Link '%(link_reach)s' ist aufgrund der Konfiguration übergeordneter Dokumente nicht erlaubt."
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1312 core/api/viewsets.py:1312
|
||||
#: build/lib/core/api/viewsets.py:1299 core/api/viewsets.py:1299
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "Kopie von {title}"
|
||||
@@ -149,15 +149,15 @@ msgstr "Rechts"
|
||||
|
||||
#: build/lib/core/models.py:80 core/models.py:80
|
||||
msgid "id"
|
||||
msgstr "id"
|
||||
msgstr "ID"
|
||||
|
||||
#: build/lib/core/models.py:81 core/models.py:81
|
||||
msgid "primary key for the record as UUID"
|
||||
msgstr "primärer Schlüssel für den Datensatz als UUID"
|
||||
msgstr "Primärschlüssel für den Datensatz als UUID"
|
||||
|
||||
#: build/lib/core/models.py:87 core/models.py:87
|
||||
msgid "created on"
|
||||
msgstr "Erstellt"
|
||||
msgstr "Erstellt am"
|
||||
|
||||
#: build/lib/core/models.py:88 core/models.py:88
|
||||
msgid "date and time at which a record was created"
|
||||
@@ -375,151 +375,151 @@ msgstr "Dokument"
|
||||
msgid "Documents"
|
||||
msgstr "Dokumente"
|
||||
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1345
|
||||
#: core/models.py:940 core/models.py:1345
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1347
|
||||
#: core/models.py:940 core/models.py:1347
|
||||
msgid "Untitled Document"
|
||||
msgstr "Unbenanntes Dokument"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1348 core/models.py:1348
|
||||
msgid "Open"
|
||||
msgstr "Öffnen"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1383 core/models.py:1383
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you!"
|
||||
msgstr "{name} hat ein Dokument mit Ihnen geteilt!"
|
||||
|
||||
#: build/lib/core/models.py:1385 core/models.py:1385
|
||||
#: build/lib/core/models.py:1387 core/models.py:1387
|
||||
#, python-brace-format
|
||||
msgid "{name} invited you with the role \"{role}\" on the following document:"
|
||||
msgstr "{name} hat Sie mit der Rolle \"{role}\" zu folgendem Dokument eingeladen:"
|
||||
|
||||
#: build/lib/core/models.py:1391 core/models.py:1391
|
||||
#: build/lib/core/models.py:1393 core/models.py:1393
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you: {title}"
|
||||
msgstr "{name} hat ein Dokument mit Ihnen geteilt: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1492 core/models.py:1492
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link trace"
|
||||
msgstr "Dokument/Benutzer Linkverfolgung"
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1495 core/models.py:1495
|
||||
msgid "Document/user link traces"
|
||||
msgstr "Dokument/Benutzer Linkverfolgung"
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1501 core/models.py:1501
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr "Für dieses Dokument/ diesen Benutzer ist bereits eine Linkverfolgung vorhanden."
|
||||
|
||||
#: build/lib/core/models.py:1522 core/models.py:1522
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorite"
|
||||
msgstr "Dokumentenfavorit"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1525 core/models.py:1525
|
||||
msgid "Document favorites"
|
||||
msgstr "Dokumentfavoriten"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1531 core/models.py:1531
|
||||
msgid "This document is already targeted by a favorite relation instance for the same user."
|
||||
msgstr "Dieses Dokument ist bereits durch den gleichen Benutzer favorisiert worden."
|
||||
|
||||
#: build/lib/core/models.py:1551 core/models.py:1551
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relation"
|
||||
msgstr "Dokument/Benutzerbeziehung"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1554 core/models.py:1554
|
||||
msgid "Document/user relations"
|
||||
msgstr "Dokument/Benutzerbeziehungen"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1560 core/models.py:1560
|
||||
msgid "This user is already in this document."
|
||||
msgstr "Dieser Benutzer befindet sich bereits in diesem Dokument."
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1566 core/models.py:1566
|
||||
msgid "This team is already in this document."
|
||||
msgstr "Dieses Team befindet sich bereits in diesem Dokument."
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1572 core/models.py:1572
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr "Benutzer oder Team müssen gesetzt werden, nicht beides."
|
||||
|
||||
#: build/lib/core/models.py:1721 core/models.py:1721
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for access"
|
||||
msgstr "Dokument um Zugriff bitten"
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1724 core/models.py:1724
|
||||
msgid "Document ask for accesses"
|
||||
msgstr "Dokumentenabfragen"
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1730 core/models.py:1730
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr "Dieser Benutzer hat bereits um Zugang zu diesem Dokument gebeten."
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#: build/lib/core/models.py:1787 core/models.py:1787
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr "{name} möchte Zugriff auf ein Dokument erhalten!"
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#: build/lib/core/models.py:1791 core/models.py:1791
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr "{name} möchte auf das folgende Dokument zugreifen:"
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#: build/lib/core/models.py:1797 core/models.py:1797
|
||||
#, python-brace-format
|
||||
msgid "{name} is asking for access to the document: {title}"
|
||||
msgstr "{name} bittet um Zugang zum Dokument: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1837 core/models.py:1837
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Thread"
|
||||
msgstr "Thread"
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1840 core/models.py:1840
|
||||
msgid "Threads"
|
||||
msgstr "Threads"
|
||||
|
||||
#: build/lib/core/models.py:1841 build/lib/core/models.py:1893
|
||||
#: core/models.py:1841 core/models.py:1893
|
||||
#: build/lib/core/models.py:1843 build/lib/core/models.py:1895
|
||||
#: core/models.py:1843 core/models.py:1895
|
||||
msgid "Anonymous"
|
||||
msgstr "Gast"
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1891 core/models.py:1891
|
||||
msgid "Comments"
|
||||
msgstr "Kommentare"
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1940 core/models.py:1940
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reaction"
|
||||
msgstr "Reaktion"
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1945 core/models.py:1945
|
||||
msgid "Reactions"
|
||||
msgstr "Reaktionen"
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1955 core/models.py:1955
|
||||
msgid "email address"
|
||||
msgstr "E-Mail-Adresse"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitation"
|
||||
msgstr "Einladung zum Dokument"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1975 core/models.py:1975
|
||||
msgid "Document invitations"
|
||||
msgstr "Dokumenteinladungen"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1995 core/models.py:1995
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr "Diese E-Mail ist bereits einem registrierten Benutzer zugeordnet."
|
||||
|
||||
#: build/lib/impress/settings.py:808 impress/settings.py:808
|
||||
#: build/lib/impress/settings.py:837 impress/settings.py:837
|
||||
msgid "Docs AI"
|
||||
msgstr "Docs AI"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-02 09:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 13:28\n"
|
||||
"POT-Creation-Date: 2026-04-30 12:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-30 13:05\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Greek\n"
|
||||
"Language: el_GR\n"
|
||||
@@ -17,28 +17,28 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 18\n"
|
||||
|
||||
#: build/lib/core/admin.py:30 core/admin.py:30
|
||||
#: build/lib/core/admin.py:33 core/admin.py:33
|
||||
msgid "Personal info"
|
||||
msgstr "Προσωπικές πληροφορίες"
|
||||
|
||||
#: build/lib/core/admin.py:43 build/lib/core/admin.py:161 core/admin.py:43
|
||||
#: core/admin.py:161
|
||||
#: build/lib/core/admin.py:46 build/lib/core/admin.py:166 core/admin.py:46
|
||||
#: core/admin.py:166
|
||||
msgid "Permissions"
|
||||
msgstr "Δικαιώματα"
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
#: build/lib/core/admin.py:58 core/admin.py:58
|
||||
msgid "Important dates"
|
||||
msgstr "Σημαντικές ημερομηνίες"
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
#: build/lib/core/admin.py:117 core/admin.py:117
|
||||
msgid "Import job created and queued."
|
||||
msgstr "Η εργασία εισαγωγής δημιουργήθηκε και μπήκε στην ουρά."
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
#: build/lib/core/admin.py:121 core/admin.py:121
|
||||
msgid "Process selected user reconciliations"
|
||||
msgstr "Επεξεργασία επιλεγμένων συμφωνιών χρηστών"
|
||||
|
||||
#: build/lib/core/admin.py:171 core/admin.py:171
|
||||
#: build/lib/core/admin.py:176 core/admin.py:176
|
||||
msgid "Tree structure"
|
||||
msgstr "Δομή δέντρου"
|
||||
|
||||
@@ -62,24 +62,24 @@ msgstr "Με κάλυψη"
|
||||
msgid "Favorite"
|
||||
msgstr "Αγαπημένο"
|
||||
|
||||
#: build/lib/core/api/serializers.py:544 core/api/serializers.py:544
|
||||
#: build/lib/core/api/serializers.py:507 core/api/serializers.py:507
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Ένα νέο έγγραφο δημιουργήθηκε εκ μέρους σας!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
|
||||
#: build/lib/core/api/serializers.py:511 core/api/serializers.py:511
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "Σας παραχωρήθηκε η ιδιοκτησία ενός νέου εγγράφου:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:584 core/api/serializers.py:584
|
||||
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
|
||||
msgid "This field is required."
|
||||
msgstr "Αυτό το πεδίο είναι υποχρεωτικό."
|
||||
|
||||
#: build/lib/core/api/serializers.py:595 core/api/serializers.py:595
|
||||
#: build/lib/core/api/serializers.py:558 core/api/serializers.py:558
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr "Η εμβέλεια συνδέσμου '%(link_reach)s' δεν επιτρέπεται βάσει της διαμόρφωσης του γονικού εγγράφου."
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1312 core/api/viewsets.py:1312
|
||||
#: build/lib/core/api/viewsets.py:1299 core/api/viewsets.py:1299
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "αντίγραφο του {title}"
|
||||
@@ -382,151 +382,151 @@ msgstr "Έγγραφο"
|
||||
msgid "Documents"
|
||||
msgstr "Έγγραφα"
|
||||
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1345
|
||||
#: core/models.py:940 core/models.py:1345
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1347
|
||||
#: core/models.py:940 core/models.py:1347
|
||||
msgid "Untitled Document"
|
||||
msgstr "Έγγραφο χωρίς τίτλο"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1348 core/models.py:1348
|
||||
msgid "Open"
|
||||
msgstr "Άνοιγμα"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1383 core/models.py:1383
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you!"
|
||||
msgstr "Ο/Η {name} μοιράστηκε ένα έγγραφο μαζί σας!"
|
||||
|
||||
#: build/lib/core/models.py:1385 core/models.py:1385
|
||||
#: build/lib/core/models.py:1387 core/models.py:1387
|
||||
#, python-brace-format
|
||||
msgid "{name} invited you with the role \"{role}\" on the following document:"
|
||||
msgstr "Ο/Η {name} σας προσκάλεσε με τον ρόλο \"{role}\" στο ακόλουθο έγγραφο:"
|
||||
|
||||
#: build/lib/core/models.py:1391 core/models.py:1391
|
||||
#: build/lib/core/models.py:1393 core/models.py:1393
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you: {title}"
|
||||
msgstr "Ο/Η {name} μοιράστηκε ένα έγγραφο μαζί σας: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1492 core/models.py:1492
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link trace"
|
||||
msgstr "Ίχνος συνδέσμου εγγράφου/χρήστη"
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1495 core/models.py:1495
|
||||
msgid "Document/user link traces"
|
||||
msgstr "Ίχνη συνδέσμου εγγράφου/χρήστη"
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1501 core/models.py:1501
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr "Ένα ίχνος συνδέσμου υπάρχει ήδη για αυτό το έγγραφο/χρήστη."
|
||||
|
||||
#: build/lib/core/models.py:1522 core/models.py:1522
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorite"
|
||||
msgstr "Αγαπημένο έγγραφο"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1525 core/models.py:1525
|
||||
msgid "Document favorites"
|
||||
msgstr "Αγαπημένα έγγραφα"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1531 core/models.py:1531
|
||||
msgid "This document is already targeted by a favorite relation instance for the same user."
|
||||
msgstr "Αυτό το έγγραφο στοχεύεται ήδη από μια σχέση αγαπημένου για τον ίδιο χρήστη."
|
||||
|
||||
#: build/lib/core/models.py:1551 core/models.py:1551
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relation"
|
||||
msgstr "Σχέση εγγράφου/χρήστη"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1554 core/models.py:1554
|
||||
msgid "Document/user relations"
|
||||
msgstr "Σχέσεις εγγράφου/χρήστη"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1560 core/models.py:1560
|
||||
msgid "This user is already in this document."
|
||||
msgstr "Αυτός ο χρήστης συμμετέχει ήδη σε αυτό το έγγραφο."
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1566 core/models.py:1566
|
||||
msgid "This team is already in this document."
|
||||
msgstr "Αυτή η ομάδα συμμετέχει ήδη σε αυτό το έγγραφο."
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1572 core/models.py:1572
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr "Πρέπει να οριστεί είτε χρήστης είτε ομάδα, όχι και τα δύο."
|
||||
|
||||
#: build/lib/core/models.py:1721 core/models.py:1721
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for access"
|
||||
msgstr "Αίτημα πρόσβασης σε έγγραφο"
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1724 core/models.py:1724
|
||||
msgid "Document ask for accesses"
|
||||
msgstr "Αιτήματα πρόσβασης σε έγγραφα"
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1730 core/models.py:1730
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr "Αυτός ο χρήστης έχει ήδη ζητήσει πρόσβαση σε αυτό το έγγραφο."
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#: build/lib/core/models.py:1787 core/models.py:1787
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr "Ο/Η {name} θα ήθελε πρόσβαση σε ένα έγγραφο!"
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#: build/lib/core/models.py:1791 core/models.py:1791
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr "Ο/Η {name} θα ήθελε πρόσβαση στο ακόλουθο έγγραφο:"
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#: build/lib/core/models.py:1797 core/models.py:1797
|
||||
#, python-brace-format
|
||||
msgid "{name} is asking for access to the document: {title}"
|
||||
msgstr "Ο/Η {name} ζητά πρόσβαση στο έγγραφο: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1837 core/models.py:1837
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Thread"
|
||||
msgstr "Νήμα"
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1840 core/models.py:1840
|
||||
msgid "Threads"
|
||||
msgstr "Νήματα"
|
||||
|
||||
#: build/lib/core/models.py:1841 build/lib/core/models.py:1893
|
||||
#: core/models.py:1841 core/models.py:1893
|
||||
#: build/lib/core/models.py:1843 build/lib/core/models.py:1895
|
||||
#: core/models.py:1843 core/models.py:1895
|
||||
msgid "Anonymous"
|
||||
msgstr "Ανώνυμος"
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comment"
|
||||
msgstr "Σχόλιο"
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1891 core/models.py:1891
|
||||
msgid "Comments"
|
||||
msgstr "Σχόλια"
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1940 core/models.py:1940
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr "Αυτό το emoji έχει χρησιμοποιηθεί ήδη ως αντίδραση σε αυτό το σχόλιο."
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reaction"
|
||||
msgstr "Αντίδραση"
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1945 core/models.py:1945
|
||||
msgid "Reactions"
|
||||
msgstr "Αντιδράσεις"
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1955 core/models.py:1955
|
||||
msgid "email address"
|
||||
msgstr "διεύθυνση email"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitation"
|
||||
msgstr "Πρόσκληση σε έγγραφο"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1975 core/models.py:1975
|
||||
msgid "Document invitations"
|
||||
msgstr "Προσκλήσεις εγγράφου"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1995 core/models.py:1995
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr "Αυτό το email σχετίζεται ήδη με έναν εγγεγραμμένο χρήστη."
|
||||
|
||||
#: build/lib/impress/settings.py:808 impress/settings.py:808
|
||||
#: build/lib/impress/settings.py:837 impress/settings.py:837
|
||||
msgid "Docs AI"
|
||||
msgstr "Τεχνητή Νοημοσύνη (AI) Docs"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-02 09:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 13:28\n"
|
||||
"POT-Creation-Date: 2026-04-30 12:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-30 13:05\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: English\n"
|
||||
"Language: en_US\n"
|
||||
@@ -17,28 +17,28 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 18\n"
|
||||
|
||||
#: build/lib/core/admin.py:30 core/admin.py:30
|
||||
#: build/lib/core/admin.py:33 core/admin.py:33
|
||||
msgid "Personal info"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:43 build/lib/core/admin.py:161 core/admin.py:43
|
||||
#: core/admin.py:161
|
||||
#: build/lib/core/admin.py:46 build/lib/core/admin.py:166 core/admin.py:46
|
||||
#: core/admin.py:166
|
||||
msgid "Permissions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
#: build/lib/core/admin.py:58 core/admin.py:58
|
||||
msgid "Important dates"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
#: build/lib/core/admin.py:117 core/admin.py:117
|
||||
msgid "Import job created and queued."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
#: build/lib/core/admin.py:121 core/admin.py:121
|
||||
msgid "Process selected user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:171 core/admin.py:171
|
||||
#: build/lib/core/admin.py:176 core/admin.py:176
|
||||
msgid "Tree structure"
|
||||
msgstr ""
|
||||
|
||||
@@ -62,24 +62,24 @@ msgstr ""
|
||||
msgid "Favorite"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:544 core/api/serializers.py:544
|
||||
#: build/lib/core/api/serializers.py:507 core/api/serializers.py:507
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
|
||||
#: build/lib/core/api/serializers.py:511 core/api/serializers.py:511
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:584 core/api/serializers.py:584
|
||||
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
|
||||
msgid "This field is required."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:595 core/api/serializers.py:595
|
||||
#: build/lib/core/api/serializers.py:558 core/api/serializers.py:558
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1312 core/api/viewsets.py:1312
|
||||
#: build/lib/core/api/viewsets.py:1299 core/api/viewsets.py:1299
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr ""
|
||||
@@ -375,151 +375,151 @@ msgstr ""
|
||||
msgid "Documents"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1345
|
||||
#: core/models.py:940 core/models.py:1345
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1347
|
||||
#: core/models.py:940 core/models.py:1347
|
||||
msgid "Untitled Document"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1348 core/models.py:1348
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1383 core/models.py:1383
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1385 core/models.py:1385
|
||||
#: build/lib/core/models.py:1387 core/models.py:1387
|
||||
#, python-brace-format
|
||||
msgid "{name} invited you with the role \"{role}\" on the following document:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1391 core/models.py:1391
|
||||
#: build/lib/core/models.py:1393 core/models.py:1393
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you: {title}"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1492 core/models.py:1492
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link trace"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1495 core/models.py:1495
|
||||
msgid "Document/user link traces"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1501 core/models.py:1501
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1522 core/models.py:1522
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorite"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1525 core/models.py:1525
|
||||
msgid "Document favorites"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1531 core/models.py:1531
|
||||
msgid "This document is already targeted by a favorite relation instance for the same user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1551 core/models.py:1551
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1554 core/models.py:1554
|
||||
msgid "Document/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1560 core/models.py:1560
|
||||
msgid "This user is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1566 core/models.py:1566
|
||||
msgid "This team is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1572 core/models.py:1572
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1721 core/models.py:1721
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for access"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1724 core/models.py:1724
|
||||
msgid "Document ask for accesses"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1730 core/models.py:1730
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#: build/lib/core/models.py:1787 core/models.py:1787
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#: build/lib/core/models.py:1791 core/models.py:1791
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#: build/lib/core/models.py:1797 core/models.py:1797
|
||||
#, python-brace-format
|
||||
msgid "{name} is asking for access to the document: {title}"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1837 core/models.py:1837
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1840 core/models.py:1840
|
||||
msgid "Threads"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1841 build/lib/core/models.py:1893
|
||||
#: core/models.py:1841 core/models.py:1893
|
||||
#: build/lib/core/models.py:1843 build/lib/core/models.py:1895
|
||||
#: core/models.py:1843 core/models.py:1895
|
||||
msgid "Anonymous"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1891 core/models.py:1891
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1940 core/models.py:1940
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reaction"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1945 core/models.py:1945
|
||||
msgid "Reactions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1955 core/models.py:1955
|
||||
msgid "email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1975 core/models.py:1975
|
||||
msgid "Document invitations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1995 core/models.py:1995
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/impress/settings.py:808 impress/settings.py:808
|
||||
#: build/lib/impress/settings.py:837 impress/settings.py:837
|
||||
msgid "Docs AI"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-02 09:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 13:28\n"
|
||||
"POT-Creation-Date: 2026-04-30 12:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-30 13:05\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Spanish\n"
|
||||
"Language: es_ES\n"
|
||||
@@ -17,28 +17,28 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 18\n"
|
||||
|
||||
#: build/lib/core/admin.py:30 core/admin.py:30
|
||||
#: build/lib/core/admin.py:33 core/admin.py:33
|
||||
msgid "Personal info"
|
||||
msgstr "Información Personal"
|
||||
|
||||
#: build/lib/core/admin.py:43 build/lib/core/admin.py:161 core/admin.py:43
|
||||
#: core/admin.py:161
|
||||
#: build/lib/core/admin.py:46 build/lib/core/admin.py:166 core/admin.py:46
|
||||
#: core/admin.py:166
|
||||
msgid "Permissions"
|
||||
msgstr "Permisos"
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
#: build/lib/core/admin.py:58 core/admin.py:58
|
||||
msgid "Important dates"
|
||||
msgstr "Fechas importantes"
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
#: build/lib/core/admin.py:117 core/admin.py:117
|
||||
msgid "Import job created and queued."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
#: build/lib/core/admin.py:121 core/admin.py:121
|
||||
msgid "Process selected user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:171 core/admin.py:171
|
||||
#: build/lib/core/admin.py:176 core/admin.py:176
|
||||
msgid "Tree structure"
|
||||
msgstr "Estructura en árbol"
|
||||
|
||||
@@ -62,24 +62,24 @@ msgstr "Enmascarado"
|
||||
msgid "Favorite"
|
||||
msgstr "Favorito"
|
||||
|
||||
#: build/lib/core/api/serializers.py:544 core/api/serializers.py:544
|
||||
#: build/lib/core/api/serializers.py:507 core/api/serializers.py:507
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "¡Un nuevo documento se ha creado por ti!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
|
||||
#: build/lib/core/api/serializers.py:511 core/api/serializers.py:511
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "Se le ha concedido la propiedad de un nuevo documento :"
|
||||
|
||||
#: build/lib/core/api/serializers.py:584 core/api/serializers.py:584
|
||||
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
|
||||
msgid "This field is required."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:595 core/api/serializers.py:595
|
||||
#: build/lib/core/api/serializers.py:558 core/api/serializers.py:558
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1312 core/api/viewsets.py:1312
|
||||
#: build/lib/core/api/viewsets.py:1299 core/api/viewsets.py:1299
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "copia de {title}"
|
||||
@@ -375,151 +375,151 @@ msgstr "Documento"
|
||||
msgid "Documents"
|
||||
msgstr "Documentos"
|
||||
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1345
|
||||
#: core/models.py:940 core/models.py:1345
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1347
|
||||
#: core/models.py:940 core/models.py:1347
|
||||
msgid "Untitled Document"
|
||||
msgstr "Documento sin título"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1348 core/models.py:1348
|
||||
msgid "Open"
|
||||
msgstr "Abrir"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1383 core/models.py:1383
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you!"
|
||||
msgstr "¡{name} ha compartido un documento contigo!"
|
||||
|
||||
#: build/lib/core/models.py:1385 core/models.py:1385
|
||||
#: build/lib/core/models.py:1387 core/models.py:1387
|
||||
#, python-brace-format
|
||||
msgid "{name} invited you with the role \"{role}\" on the following document:"
|
||||
msgstr "Te ha invitado {name} al siguiente documento con el rol \"{role}\" :"
|
||||
|
||||
#: build/lib/core/models.py:1391 core/models.py:1391
|
||||
#: build/lib/core/models.py:1393 core/models.py:1393
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you: {title}"
|
||||
msgstr "{name} ha compartido un documento contigo: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1492 core/models.py:1492
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link trace"
|
||||
msgstr "Traza del enlace de documento/usuario"
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1495 core/models.py:1495
|
||||
msgid "Document/user link traces"
|
||||
msgstr "Trazas del enlace de documento/usuario"
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1501 core/models.py:1501
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr "Ya existe una traza de enlace para este documento/usuario."
|
||||
|
||||
#: build/lib/core/models.py:1522 core/models.py:1522
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorite"
|
||||
msgstr "Documento favorito"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1525 core/models.py:1525
|
||||
msgid "Document favorites"
|
||||
msgstr "Documentos favoritos"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1531 core/models.py:1531
|
||||
msgid "This document is already targeted by a favorite relation instance for the same user."
|
||||
msgstr "Este documento ya ha sido marcado como favorito por el usuario."
|
||||
|
||||
#: build/lib/core/models.py:1551 core/models.py:1551
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relation"
|
||||
msgstr "Relación documento/usuario"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1554 core/models.py:1554
|
||||
msgid "Document/user relations"
|
||||
msgstr "Relaciones documento/usuario"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1560 core/models.py:1560
|
||||
msgid "This user is already in this document."
|
||||
msgstr "Este usuario ya forma parte del documento."
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1566 core/models.py:1566
|
||||
msgid "This team is already in this document."
|
||||
msgstr "Este equipo ya forma parte del documento."
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1572 core/models.py:1572
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr "Debe establecerse un usuario o un equipo, no ambos."
|
||||
|
||||
#: build/lib/core/models.py:1721 core/models.py:1721
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for access"
|
||||
msgstr "Solicitud de acceso"
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1724 core/models.py:1724
|
||||
msgid "Document ask for accesses"
|
||||
msgstr "Solicitud de accesos"
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1730 core/models.py:1730
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr "Este usuario ya ha solicitado acceso a este documento."
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#: build/lib/core/models.py:1787 core/models.py:1787
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr "¡{name} desea acceder a un documento!"
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#: build/lib/core/models.py:1791 core/models.py:1791
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr "{name} desea acceso al siguiente documento:"
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#: build/lib/core/models.py:1797 core/models.py:1797
|
||||
#, python-brace-format
|
||||
msgid "{name} is asking for access to the document: {title}"
|
||||
msgstr "{name} está pidiendo acceso al documento: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1837 core/models.py:1837
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Thread"
|
||||
msgstr "Thread"
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1840 core/models.py:1840
|
||||
msgid "Threads"
|
||||
msgstr "Threads"
|
||||
|
||||
#: build/lib/core/models.py:1841 build/lib/core/models.py:1893
|
||||
#: core/models.py:1841 core/models.py:1893
|
||||
#: build/lib/core/models.py:1843 build/lib/core/models.py:1895
|
||||
#: core/models.py:1843 core/models.py:1895
|
||||
msgid "Anonymous"
|
||||
msgstr "Anónimo"
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comment"
|
||||
msgstr "Comentario"
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1891 core/models.py:1891
|
||||
msgid "Comments"
|
||||
msgstr "Comentarios"
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1940 core/models.py:1940
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reaction"
|
||||
msgstr "Reacción"
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1945 core/models.py:1945
|
||||
msgid "Reactions"
|
||||
msgstr "Reacciones"
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1955 core/models.py:1955
|
||||
msgid "email address"
|
||||
msgstr "dirección de correo electrónico"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitation"
|
||||
msgstr "Invitación al documento"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1975 core/models.py:1975
|
||||
msgid "Document invitations"
|
||||
msgstr "Invitaciones a documentos"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1995 core/models.py:1995
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr "Este correo electrónico está asociado a un usuario registrado."
|
||||
|
||||
#: build/lib/impress/settings.py:808 impress/settings.py:808
|
||||
#: build/lib/impress/settings.py:837 impress/settings.py:837
|
||||
msgid "Docs AI"
|
||||
msgstr "Docs AI"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-02 09:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 13:28\n"
|
||||
"POT-Creation-Date: 2026-04-30 12:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-30 13:05\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: French\n"
|
||||
"Language: fr_FR\n"
|
||||
@@ -17,28 +17,28 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 18\n"
|
||||
|
||||
#: build/lib/core/admin.py:30 core/admin.py:30
|
||||
#: build/lib/core/admin.py:33 core/admin.py:33
|
||||
msgid "Personal info"
|
||||
msgstr "Infos Personnelles"
|
||||
|
||||
#: build/lib/core/admin.py:43 build/lib/core/admin.py:161 core/admin.py:43
|
||||
#: core/admin.py:161
|
||||
#: build/lib/core/admin.py:46 build/lib/core/admin.py:166 core/admin.py:46
|
||||
#: core/admin.py:166
|
||||
msgid "Permissions"
|
||||
msgstr "Permissions"
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
#: build/lib/core/admin.py:58 core/admin.py:58
|
||||
msgid "Important dates"
|
||||
msgstr "Dates importantes"
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
#: build/lib/core/admin.py:117 core/admin.py:117
|
||||
msgid "Import job created and queued."
|
||||
msgstr "Tâche d'importation créée et mise en file d'attente."
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
#: build/lib/core/admin.py:121 core/admin.py:121
|
||||
msgid "Process selected user reconciliations"
|
||||
msgstr "Traiter les rapprochements de l'utilisateur sélectionné"
|
||||
|
||||
#: build/lib/core/admin.py:171 core/admin.py:171
|
||||
#: build/lib/core/admin.py:176 core/admin.py:176
|
||||
msgid "Tree structure"
|
||||
msgstr "Arborescence"
|
||||
|
||||
@@ -62,24 +62,24 @@ msgstr "Masqué"
|
||||
msgid "Favorite"
|
||||
msgstr "Favoris"
|
||||
|
||||
#: build/lib/core/api/serializers.py:544 core/api/serializers.py:544
|
||||
#: build/lib/core/api/serializers.py:507 core/api/serializers.py:507
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Un nouveau document a été créé pour vous !"
|
||||
|
||||
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
|
||||
#: build/lib/core/api/serializers.py:511 core/api/serializers.py:511
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "Vous avez été déclaré propriétaire d'un nouveau document :"
|
||||
|
||||
#: build/lib/core/api/serializers.py:584 core/api/serializers.py:584
|
||||
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
|
||||
msgid "This field is required."
|
||||
msgstr "Ce champ est obligatoire."
|
||||
|
||||
#: build/lib/core/api/serializers.py:595 core/api/serializers.py:595
|
||||
#: build/lib/core/api/serializers.py:558 core/api/serializers.py:558
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr "La portée du lien '%(link_reach)s' n'est pas autorisée en fonction de la configuration du document parent."
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1312 core/api/viewsets.py:1312
|
||||
#: build/lib/core/api/viewsets.py:1299 core/api/viewsets.py:1299
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "copie de {title}"
|
||||
@@ -382,151 +382,151 @@ msgstr "Document"
|
||||
msgid "Documents"
|
||||
msgstr "Documents"
|
||||
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1345
|
||||
#: core/models.py:940 core/models.py:1345
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1347
|
||||
#: core/models.py:940 core/models.py:1347
|
||||
msgid "Untitled Document"
|
||||
msgstr "Document sans titre"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1348 core/models.py:1348
|
||||
msgid "Open"
|
||||
msgstr "Ouvrir"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1383 core/models.py:1383
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you!"
|
||||
msgstr "{name} a partagé un document avec vous!"
|
||||
|
||||
#: build/lib/core/models.py:1385 core/models.py:1385
|
||||
#: build/lib/core/models.py:1387 core/models.py:1387
|
||||
#, python-brace-format
|
||||
msgid "{name} invited you with the role \"{role}\" on the following document:"
|
||||
msgstr "{name} vous a invité avec le rôle \"{role}\" sur le document suivant :"
|
||||
|
||||
#: build/lib/core/models.py:1391 core/models.py:1391
|
||||
#: build/lib/core/models.py:1393 core/models.py:1393
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you: {title}"
|
||||
msgstr "{name} a partagé un document avec vous : {title}"
|
||||
|
||||
#: build/lib/core/models.py:1492 core/models.py:1492
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link trace"
|
||||
msgstr "Trace du lien document/utilisateur"
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1495 core/models.py:1495
|
||||
msgid "Document/user link traces"
|
||||
msgstr "Traces du lien document/utilisateur"
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1501 core/models.py:1501
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr "Une trace de lien existe déjà pour ce document/utilisateur."
|
||||
|
||||
#: build/lib/core/models.py:1522 core/models.py:1522
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorite"
|
||||
msgstr "Document favori"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1525 core/models.py:1525
|
||||
msgid "Document favorites"
|
||||
msgstr "Documents favoris"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1531 core/models.py:1531
|
||||
msgid "This document is already targeted by a favorite relation instance for the same user."
|
||||
msgstr "Ce document est déjà un favori de cet utilisateur."
|
||||
|
||||
#: build/lib/core/models.py:1551 core/models.py:1551
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relation"
|
||||
msgstr "Relation document/utilisateur"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1554 core/models.py:1554
|
||||
msgid "Document/user relations"
|
||||
msgstr "Relations document/utilisateur"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1560 core/models.py:1560
|
||||
msgid "This user is already in this document."
|
||||
msgstr "Cet utilisateur est déjà dans ce document."
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1566 core/models.py:1566
|
||||
msgid "This team is already in this document."
|
||||
msgstr "Cette équipe est déjà dans ce document."
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1572 core/models.py:1572
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr "L'utilisateur ou l'équipe doivent être définis, pas les deux."
|
||||
|
||||
#: build/lib/core/models.py:1721 core/models.py:1721
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for access"
|
||||
msgstr "Demande d'accès au document"
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1724 core/models.py:1724
|
||||
msgid "Document ask for accesses"
|
||||
msgstr "Demande d'accès au document"
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1730 core/models.py:1730
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr "Cet utilisateur a déjà demandé l'accès à ce document."
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#: build/lib/core/models.py:1787 core/models.py:1787
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr "{name} souhaiterait accéder au document suivant !"
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#: build/lib/core/models.py:1791 core/models.py:1791
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr "{name} souhaiterait accéder au document suivant :"
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#: build/lib/core/models.py:1797 core/models.py:1797
|
||||
#, python-brace-format
|
||||
msgid "{name} is asking for access to the document: {title}"
|
||||
msgstr "{name} demande l'accès au document : {title}"
|
||||
|
||||
#: build/lib/core/models.py:1837 core/models.py:1837
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Thread"
|
||||
msgstr "Conversation"
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1840 core/models.py:1840
|
||||
msgid "Threads"
|
||||
msgstr "Conversations"
|
||||
|
||||
#: build/lib/core/models.py:1841 build/lib/core/models.py:1893
|
||||
#: core/models.py:1841 core/models.py:1893
|
||||
#: build/lib/core/models.py:1843 build/lib/core/models.py:1895
|
||||
#: core/models.py:1843 core/models.py:1895
|
||||
msgid "Anonymous"
|
||||
msgstr "Anonyme"
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comment"
|
||||
msgstr "Commentaire"
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1891 core/models.py:1891
|
||||
msgid "Comments"
|
||||
msgstr "Commentaires"
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1940 core/models.py:1940
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr "Cet émoji a déjà été réagi à ce commentaire."
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reaction"
|
||||
msgstr "Réaction"
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1945 core/models.py:1945
|
||||
msgid "Reactions"
|
||||
msgstr "Réactions"
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1955 core/models.py:1955
|
||||
msgid "email address"
|
||||
msgstr "adresse e-mail"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitation"
|
||||
msgstr "Invitation à un document"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1975 core/models.py:1975
|
||||
msgid "Document invitations"
|
||||
msgstr "Invitations à un document"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1995 core/models.py:1995
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr "Cette adresse email est déjà associée à un utilisateur inscrit."
|
||||
|
||||
#: build/lib/impress/settings.py:808 impress/settings.py:808
|
||||
#: build/lib/impress/settings.py:837 impress/settings.py:837
|
||||
msgid "Docs AI"
|
||||
msgstr "Docs IA"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-02 09:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 13:28\n"
|
||||
"POT-Creation-Date: 2026-04-30 12:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-30 13:05\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Italian\n"
|
||||
"Language: it_IT\n"
|
||||
@@ -17,28 +17,28 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 18\n"
|
||||
|
||||
#: build/lib/core/admin.py:30 core/admin.py:30
|
||||
#: build/lib/core/admin.py:33 core/admin.py:33
|
||||
msgid "Personal info"
|
||||
msgstr "Informazioni personali"
|
||||
|
||||
#: build/lib/core/admin.py:43 build/lib/core/admin.py:161 core/admin.py:43
|
||||
#: core/admin.py:161
|
||||
#: build/lib/core/admin.py:46 build/lib/core/admin.py:166 core/admin.py:46
|
||||
#: core/admin.py:166
|
||||
msgid "Permissions"
|
||||
msgstr "Permessi"
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
#: build/lib/core/admin.py:58 core/admin.py:58
|
||||
msgid "Important dates"
|
||||
msgstr "Date importanti"
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
#: build/lib/core/admin.py:117 core/admin.py:117
|
||||
msgid "Import job created and queued."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
#: build/lib/core/admin.py:121 core/admin.py:121
|
||||
msgid "Process selected user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:171 core/admin.py:171
|
||||
#: build/lib/core/admin.py:176 core/admin.py:176
|
||||
msgid "Tree structure"
|
||||
msgstr "Struttura ad albero"
|
||||
|
||||
@@ -62,24 +62,24 @@ msgstr ""
|
||||
msgid "Favorite"
|
||||
msgstr "Preferiti"
|
||||
|
||||
#: build/lib/core/api/serializers.py:544 core/api/serializers.py:544
|
||||
#: build/lib/core/api/serializers.py:507 core/api/serializers.py:507
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Un nuovo documento è stato creato a tuo nome!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
|
||||
#: build/lib/core/api/serializers.py:511 core/api/serializers.py:511
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "Sei ora proprietario di un nuovo documento:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:584 core/api/serializers.py:584
|
||||
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
|
||||
msgid "This field is required."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:595 core/api/serializers.py:595
|
||||
#: build/lib/core/api/serializers.py:558 core/api/serializers.py:558
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1312 core/api/viewsets.py:1312
|
||||
#: build/lib/core/api/viewsets.py:1299 core/api/viewsets.py:1299
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "copia di {title}"
|
||||
@@ -375,151 +375,151 @@ msgstr "Documento"
|
||||
msgid "Documents"
|
||||
msgstr "Documenti"
|
||||
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1345
|
||||
#: core/models.py:940 core/models.py:1345
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1347
|
||||
#: core/models.py:940 core/models.py:1347
|
||||
msgid "Untitled Document"
|
||||
msgstr "Documento senza titolo"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1348 core/models.py:1348
|
||||
msgid "Open"
|
||||
msgstr "Apri"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1383 core/models.py:1383
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you!"
|
||||
msgstr "{name} ha condiviso un documento con te!"
|
||||
|
||||
#: build/lib/core/models.py:1385 core/models.py:1385
|
||||
#: build/lib/core/models.py:1387 core/models.py:1387
|
||||
#, python-brace-format
|
||||
msgid "{name} invited you with the role \"{role}\" on the following document:"
|
||||
msgstr "{name} ti ha invitato con il ruolo \"{role}\" nel seguente documento:"
|
||||
|
||||
#: build/lib/core/models.py:1391 core/models.py:1391
|
||||
#: build/lib/core/models.py:1393 core/models.py:1393
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you: {title}"
|
||||
msgstr "{name} ha condiviso un documento con te: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1492 core/models.py:1492
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link trace"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1495 core/models.py:1495
|
||||
msgid "Document/user link traces"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1501 core/models.py:1501
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1522 core/models.py:1522
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorite"
|
||||
msgstr "Documento preferito"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1525 core/models.py:1525
|
||||
msgid "Document favorites"
|
||||
msgstr "Documenti preferiti"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1531 core/models.py:1531
|
||||
msgid "This document is already targeted by a favorite relation instance for the same user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1551 core/models.py:1551
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1554 core/models.py:1554
|
||||
msgid "Document/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1560 core/models.py:1560
|
||||
msgid "This user is already in this document."
|
||||
msgstr "Questo utente è già presente in questo documento."
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1566 core/models.py:1566
|
||||
msgid "This team is already in this document."
|
||||
msgstr "Questo team è già presente in questo documento."
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1572 core/models.py:1572
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1721 core/models.py:1721
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for access"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1724 core/models.py:1724
|
||||
msgid "Document ask for accesses"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1730 core/models.py:1730
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#: build/lib/core/models.py:1787 core/models.py:1787
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#: build/lib/core/models.py:1791 core/models.py:1791
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#: build/lib/core/models.py:1797 core/models.py:1797
|
||||
#, python-brace-format
|
||||
msgid "{name} is asking for access to the document: {title}"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1837 core/models.py:1837
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1840 core/models.py:1840
|
||||
msgid "Threads"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1841 build/lib/core/models.py:1893
|
||||
#: core/models.py:1841 core/models.py:1893
|
||||
#: build/lib/core/models.py:1843 build/lib/core/models.py:1895
|
||||
#: core/models.py:1843 core/models.py:1895
|
||||
msgid "Anonymous"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1891 core/models.py:1891
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1940 core/models.py:1940
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reaction"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1945 core/models.py:1945
|
||||
msgid "Reactions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1955 core/models.py:1955
|
||||
msgid "email address"
|
||||
msgstr "indirizzo e-mail"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitation"
|
||||
msgstr "Invito al documento"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1975 core/models.py:1975
|
||||
msgid "Document invitations"
|
||||
msgstr "Inviti al documento"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1995 core/models.py:1995
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr "Questa email è già associata a un utente registrato."
|
||||
|
||||
#: build/lib/impress/settings.py:808 impress/settings.py:808
|
||||
#: build/lib/impress/settings.py:837 impress/settings.py:837
|
||||
msgid "Docs AI"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-02 09:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 13:28\n"
|
||||
"POT-Creation-Date: 2026-04-30 12:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-30 13:05\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Dutch\n"
|
||||
"Language: nl_NL\n"
|
||||
@@ -17,28 +17,28 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 18\n"
|
||||
|
||||
#: build/lib/core/admin.py:30 core/admin.py:30
|
||||
#: build/lib/core/admin.py:33 core/admin.py:33
|
||||
msgid "Personal info"
|
||||
msgstr "Persoonlijke informatie"
|
||||
|
||||
#: build/lib/core/admin.py:43 build/lib/core/admin.py:161 core/admin.py:43
|
||||
#: core/admin.py:161
|
||||
#: build/lib/core/admin.py:46 build/lib/core/admin.py:166 core/admin.py:46
|
||||
#: core/admin.py:166
|
||||
msgid "Permissions"
|
||||
msgstr "Machtigingen"
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
#: build/lib/core/admin.py:58 core/admin.py:58
|
||||
msgid "Important dates"
|
||||
msgstr "Belangrijke data"
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
#: build/lib/core/admin.py:117 core/admin.py:117
|
||||
msgid "Import job created and queued."
|
||||
msgstr "Import taak gemaakt en in de wachtrij geplaatst."
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
#: build/lib/core/admin.py:121 core/admin.py:121
|
||||
msgid "Process selected user reconciliations"
|
||||
msgstr "Verwerk geselecteerde gebruikers samenvoeging"
|
||||
|
||||
#: build/lib/core/admin.py:171 core/admin.py:171
|
||||
#: build/lib/core/admin.py:176 core/admin.py:176
|
||||
msgid "Tree structure"
|
||||
msgstr "Boomstructuur"
|
||||
|
||||
@@ -62,24 +62,24 @@ msgstr "Gemaskeerd"
|
||||
msgid "Favorite"
|
||||
msgstr "Favoriet"
|
||||
|
||||
#: build/lib/core/api/serializers.py:544 core/api/serializers.py:544
|
||||
#: build/lib/core/api/serializers.py:507 core/api/serializers.py:507
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Een nieuw document is namens u gemaakt!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
|
||||
#: build/lib/core/api/serializers.py:511 core/api/serializers.py:511
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "U heeft eigenaarschap van een nieuw document gekregen:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:584 core/api/serializers.py:584
|
||||
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
|
||||
msgid "This field is required."
|
||||
msgstr "Dit veld is verplicht."
|
||||
|
||||
#: build/lib/core/api/serializers.py:595 core/api/serializers.py:595
|
||||
#: build/lib/core/api/serializers.py:558 core/api/serializers.py:558
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr "Link bereik '%(link_reach)s' is niet toegestaan op basis van bovenliggende documentconfiguratie."
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1312 core/api/viewsets.py:1312
|
||||
#: build/lib/core/api/viewsets.py:1299 core/api/viewsets.py:1299
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "kopie van {title}"
|
||||
@@ -382,151 +382,151 @@ msgstr "Document"
|
||||
msgid "Documents"
|
||||
msgstr "Documenten"
|
||||
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1345
|
||||
#: core/models.py:940 core/models.py:1345
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1347
|
||||
#: core/models.py:940 core/models.py:1347
|
||||
msgid "Untitled Document"
|
||||
msgstr "Naamloos Document"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1348 core/models.py:1348
|
||||
msgid "Open"
|
||||
msgstr "Open"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1383 core/models.py:1383
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you!"
|
||||
msgstr "{name} heeft een document met u gedeeld!"
|
||||
|
||||
#: build/lib/core/models.py:1385 core/models.py:1385
|
||||
#: build/lib/core/models.py:1387 core/models.py:1387
|
||||
#, python-brace-format
|
||||
msgid "{name} invited you with the role \"{role}\" on the following document:"
|
||||
msgstr "{name} heeft u uitgenodigd met de rol \"{role}\" op het volgende document:"
|
||||
|
||||
#: build/lib/core/models.py:1391 core/models.py:1391
|
||||
#: build/lib/core/models.py:1393 core/models.py:1393
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you: {title}"
|
||||
msgstr "{name} heeft een document met u gedeeld: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1492 core/models.py:1492
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link trace"
|
||||
msgstr "Document/gebruiker link"
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1495 core/models.py:1495
|
||||
msgid "Document/user link traces"
|
||||
msgstr "Document/gebruiker link"
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1501 core/models.py:1501
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr "Een link bestaat al voor dit document/deze gebruiker."
|
||||
|
||||
#: build/lib/core/models.py:1522 core/models.py:1522
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorite"
|
||||
msgstr "Document favoriet"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1525 core/models.py:1525
|
||||
msgid "Document favorites"
|
||||
msgstr "Document favorieten"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1531 core/models.py:1531
|
||||
msgid "This document is already targeted by a favorite relation instance for the same user."
|
||||
msgstr "Dit document is al in gebruik als favoriet door dezelfde gebruiker."
|
||||
|
||||
#: build/lib/core/models.py:1551 core/models.py:1551
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relation"
|
||||
msgstr "Document/gebruiker relatie"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1554 core/models.py:1554
|
||||
msgid "Document/user relations"
|
||||
msgstr "Document/gebruiker relaties"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1560 core/models.py:1560
|
||||
msgid "This user is already in this document."
|
||||
msgstr "De gebruiker bestaat al in dit document."
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1566 core/models.py:1566
|
||||
msgid "This team is already in this document."
|
||||
msgstr "Dit team bestaat al in dit document."
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1572 core/models.py:1572
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr "Een gebruiker of team moet gekozen worden, maar niet beide."
|
||||
|
||||
#: build/lib/core/models.py:1721 core/models.py:1721
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for access"
|
||||
msgstr "Document verzoekt om toegang"
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1724 core/models.py:1724
|
||||
msgid "Document ask for accesses"
|
||||
msgstr "Document verzoekt om toegangen"
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1730 core/models.py:1730
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr "Deze gebruiker heeft al om toegang tot dit document gevraagd."
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#: build/lib/core/models.py:1787 core/models.py:1787
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr "{name} verzoekt toegang tot een document!"
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#: build/lib/core/models.py:1791 core/models.py:1791
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr "{name} verzoekt toegang tot het volgende document:"
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#: build/lib/core/models.py:1797 core/models.py:1797
|
||||
#, python-brace-format
|
||||
msgid "{name} is asking for access to the document: {title}"
|
||||
msgstr "{name} verzoekt toegang tot het document: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1837 core/models.py:1837
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Thread"
|
||||
msgstr "Kanaal"
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1840 core/models.py:1840
|
||||
msgid "Threads"
|
||||
msgstr "Kanalen"
|
||||
|
||||
#: build/lib/core/models.py:1841 build/lib/core/models.py:1893
|
||||
#: core/models.py:1841 core/models.py:1893
|
||||
#: build/lib/core/models.py:1843 build/lib/core/models.py:1895
|
||||
#: core/models.py:1843 core/models.py:1895
|
||||
msgid "Anonymous"
|
||||
msgstr "Anoniem"
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comment"
|
||||
msgstr "Reactie"
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1891 core/models.py:1891
|
||||
msgid "Comments"
|
||||
msgstr "Reacties"
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1940 core/models.py:1940
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr "Deze emoji is al op deze opmerking gereageerd."
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reaction"
|
||||
msgstr "Reactie"
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1945 core/models.py:1945
|
||||
msgid "Reactions"
|
||||
msgstr "Reacties"
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1955 core/models.py:1955
|
||||
msgid "email address"
|
||||
msgstr "e-mailadres"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitation"
|
||||
msgstr "Document uitnodiging"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1975 core/models.py:1975
|
||||
msgid "Document invitations"
|
||||
msgstr "Document uitnodigingen"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1995 core/models.py:1995
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr "Deze email is al geassocieerd met een geregistreerde gebruiker."
|
||||
|
||||
#: build/lib/impress/settings.py:808 impress/settings.py:808
|
||||
#: build/lib/impress/settings.py:837 impress/settings.py:837
|
||||
msgid "Docs AI"
|
||||
msgstr "Docs AI"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-02 09:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 13:28\n"
|
||||
"POT-Creation-Date: 2026-04-30 12:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-30 13:05\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Portuguese\n"
|
||||
"Language: pt_PT\n"
|
||||
@@ -17,28 +17,28 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 18\n"
|
||||
|
||||
#: build/lib/core/admin.py:30 core/admin.py:30
|
||||
#: build/lib/core/admin.py:33 core/admin.py:33
|
||||
msgid "Personal info"
|
||||
msgstr "Informações Pessoais"
|
||||
|
||||
#: build/lib/core/admin.py:43 build/lib/core/admin.py:161 core/admin.py:43
|
||||
#: core/admin.py:161
|
||||
#: build/lib/core/admin.py:46 build/lib/core/admin.py:166 core/admin.py:46
|
||||
#: core/admin.py:166
|
||||
msgid "Permissions"
|
||||
msgstr "Permissões"
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
#: build/lib/core/admin.py:58 core/admin.py:58
|
||||
msgid "Important dates"
|
||||
msgstr "Datas importantes"
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
#: build/lib/core/admin.py:117 core/admin.py:117
|
||||
msgid "Import job created and queued."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
#: build/lib/core/admin.py:121 core/admin.py:121
|
||||
msgid "Process selected user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:171 core/admin.py:171
|
||||
#: build/lib/core/admin.py:176 core/admin.py:176
|
||||
msgid "Tree structure"
|
||||
msgstr "Estrutura de árvore"
|
||||
|
||||
@@ -62,24 +62,24 @@ msgstr ""
|
||||
msgid "Favorite"
|
||||
msgstr "Favorito"
|
||||
|
||||
#: build/lib/core/api/serializers.py:544 core/api/serializers.py:544
|
||||
#: build/lib/core/api/serializers.py:507 core/api/serializers.py:507
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Um novo documento foi criado em seu nome!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
|
||||
#: build/lib/core/api/serializers.py:511 core/api/serializers.py:511
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "A propriedade de um novo documento foi concedida a você:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:584 core/api/serializers.py:584
|
||||
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
|
||||
msgid "This field is required."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:595 core/api/serializers.py:595
|
||||
#: build/lib/core/api/serializers.py:558 core/api/serializers.py:558
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1312 core/api/viewsets.py:1312
|
||||
#: build/lib/core/api/viewsets.py:1299 core/api/viewsets.py:1299
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "cópia de {title}"
|
||||
@@ -375,151 +375,151 @@ msgstr ""
|
||||
msgid "Documents"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1345
|
||||
#: core/models.py:940 core/models.py:1345
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1347
|
||||
#: core/models.py:940 core/models.py:1347
|
||||
msgid "Untitled Document"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1348 core/models.py:1348
|
||||
msgid "Open"
|
||||
msgstr "Abrir"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1383 core/models.py:1383
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1385 core/models.py:1385
|
||||
#: build/lib/core/models.py:1387 core/models.py:1387
|
||||
#, python-brace-format
|
||||
msgid "{name} invited you with the role \"{role}\" on the following document:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1391 core/models.py:1391
|
||||
#: build/lib/core/models.py:1393 core/models.py:1393
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you: {title}"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1492 core/models.py:1492
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link trace"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1495 core/models.py:1495
|
||||
msgid "Document/user link traces"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1501 core/models.py:1501
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1522 core/models.py:1522
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorite"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1525 core/models.py:1525
|
||||
msgid "Document favorites"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1531 core/models.py:1531
|
||||
msgid "This document is already targeted by a favorite relation instance for the same user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1551 core/models.py:1551
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1554 core/models.py:1554
|
||||
msgid "Document/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1560 core/models.py:1560
|
||||
msgid "This user is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1566 core/models.py:1566
|
||||
msgid "This team is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1572 core/models.py:1572
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1721 core/models.py:1721
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for access"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1724 core/models.py:1724
|
||||
msgid "Document ask for accesses"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1730 core/models.py:1730
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#: build/lib/core/models.py:1787 core/models.py:1787
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#: build/lib/core/models.py:1791 core/models.py:1791
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#: build/lib/core/models.py:1797 core/models.py:1797
|
||||
#, python-brace-format
|
||||
msgid "{name} is asking for access to the document: {title}"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1837 core/models.py:1837
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1840 core/models.py:1840
|
||||
msgid "Threads"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1841 build/lib/core/models.py:1893
|
||||
#: core/models.py:1841 core/models.py:1893
|
||||
#: build/lib/core/models.py:1843 build/lib/core/models.py:1895
|
||||
#: core/models.py:1843 core/models.py:1895
|
||||
msgid "Anonymous"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1891 core/models.py:1891
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1940 core/models.py:1940
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reaction"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1945 core/models.py:1945
|
||||
msgid "Reactions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1955 core/models.py:1955
|
||||
msgid "email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1975 core/models.py:1975
|
||||
msgid "Document invitations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1995 core/models.py:1995
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/impress/settings.py:808 impress/settings.py:808
|
||||
#: build/lib/impress/settings.py:837 impress/settings.py:837
|
||||
msgid "Docs AI"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-02 09:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 13:28\n"
|
||||
"POT-Creation-Date: 2026-04-30 12:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-30 13:05\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Russian\n"
|
||||
"Language: ru_RU\n"
|
||||
@@ -17,28 +17,28 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 18\n"
|
||||
|
||||
#: build/lib/core/admin.py:30 core/admin.py:30
|
||||
#: build/lib/core/admin.py:33 core/admin.py:33
|
||||
msgid "Personal info"
|
||||
msgstr "Личная информация"
|
||||
|
||||
#: build/lib/core/admin.py:43 build/lib/core/admin.py:161 core/admin.py:43
|
||||
#: core/admin.py:161
|
||||
#: build/lib/core/admin.py:46 build/lib/core/admin.py:166 core/admin.py:46
|
||||
#: core/admin.py:166
|
||||
msgid "Permissions"
|
||||
msgstr "Разрешения"
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
#: build/lib/core/admin.py:58 core/admin.py:58
|
||||
msgid "Important dates"
|
||||
msgstr "Важные даты"
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
#: build/lib/core/admin.py:117 core/admin.py:117
|
||||
msgid "Import job created and queued."
|
||||
msgstr "Задание по импорту создано и поставлено в очередь."
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
#: build/lib/core/admin.py:121 core/admin.py:121
|
||||
msgid "Process selected user reconciliations"
|
||||
msgstr "Обработка выбранных пользовательских сверок"
|
||||
|
||||
#: build/lib/core/admin.py:171 core/admin.py:171
|
||||
#: build/lib/core/admin.py:176 core/admin.py:176
|
||||
msgid "Tree structure"
|
||||
msgstr "Древовидная структура"
|
||||
|
||||
@@ -62,24 +62,24 @@ msgstr "Скрытый"
|
||||
msgid "Favorite"
|
||||
msgstr "Избранное"
|
||||
|
||||
#: build/lib/core/api/serializers.py:544 core/api/serializers.py:544
|
||||
#: build/lib/core/api/serializers.py:507 core/api/serializers.py:507
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Новый документ был создан от вашего имени!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
|
||||
#: build/lib/core/api/serializers.py:511 core/api/serializers.py:511
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "Вы назначены владельцем для нового документа:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:584 core/api/serializers.py:584
|
||||
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
|
||||
msgid "This field is required."
|
||||
msgstr "Это поле обязательное."
|
||||
|
||||
#: build/lib/core/api/serializers.py:595 core/api/serializers.py:595
|
||||
#: build/lib/core/api/serializers.py:558 core/api/serializers.py:558
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr "Доступ по ссылке '%(link_reach)s' запрещён в соответствии с настройками родительского документа."
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1312 core/api/viewsets.py:1312
|
||||
#: build/lib/core/api/viewsets.py:1299 core/api/viewsets.py:1299
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "копия {title}"
|
||||
@@ -382,151 +382,151 @@ msgstr "Документ"
|
||||
msgid "Documents"
|
||||
msgstr "Документы"
|
||||
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1345
|
||||
#: core/models.py:940 core/models.py:1345
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1347
|
||||
#: core/models.py:940 core/models.py:1347
|
||||
msgid "Untitled Document"
|
||||
msgstr "Безымянный документ"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1348 core/models.py:1348
|
||||
msgid "Open"
|
||||
msgstr "Открыть"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1383 core/models.py:1383
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you!"
|
||||
msgstr "{name} делится с вами документом!"
|
||||
|
||||
#: build/lib/core/models.py:1385 core/models.py:1385
|
||||
#: build/lib/core/models.py:1387 core/models.py:1387
|
||||
#, python-brace-format
|
||||
msgid "{name} invited you with the role \"{role}\" on the following document:"
|
||||
msgstr "{name} приглашает вас присоединиться к следующему документу с ролью \"{role}\":"
|
||||
|
||||
#: build/lib/core/models.py:1391 core/models.py:1391
|
||||
#: build/lib/core/models.py:1393 core/models.py:1393
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you: {title}"
|
||||
msgstr "{name} делится с вами документом: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1492 core/models.py:1492
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link trace"
|
||||
msgstr "Трассировка связи документ/пользователь"
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1495 core/models.py:1495
|
||||
msgid "Document/user link traces"
|
||||
msgstr "Трассировка связей документ/пользователь"
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1501 core/models.py:1501
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr "Для этого документа/пользователя уже существует трассировка ссылки."
|
||||
|
||||
#: build/lib/core/models.py:1522 core/models.py:1522
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorite"
|
||||
msgstr "Избранный документ"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1525 core/models.py:1525
|
||||
msgid "Document favorites"
|
||||
msgstr "Избранные документы"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1531 core/models.py:1531
|
||||
msgid "This document is already targeted by a favorite relation instance for the same user."
|
||||
msgstr "Этот документ уже помечен как избранный для этого пользователя."
|
||||
|
||||
#: build/lib/core/models.py:1551 core/models.py:1551
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relation"
|
||||
msgstr "Отношение документ/пользователь"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1554 core/models.py:1554
|
||||
msgid "Document/user relations"
|
||||
msgstr "Отношения документ/пользователь"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1560 core/models.py:1560
|
||||
msgid "This user is already in this document."
|
||||
msgstr "Этот пользователь уже имеет доступ к этому документу."
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1566 core/models.py:1566
|
||||
msgid "This team is already in this document."
|
||||
msgstr "Эта команда уже имеет доступ к этому документу."
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1572 core/models.py:1572
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr "Может быть выбран либо пользователь, либо команда, но не оба варианта сразу."
|
||||
|
||||
#: build/lib/core/models.py:1721 core/models.py:1721
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for access"
|
||||
msgstr "Документ запрашивает доступ"
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1724 core/models.py:1724
|
||||
msgid "Document ask for accesses"
|
||||
msgstr "Документ запрашивает доступы"
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1730 core/models.py:1730
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr "Этот пользователь уже запросил доступ к этому документу."
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#: build/lib/core/models.py:1787 core/models.py:1787
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr "{name} хочет получить доступ к документу!"
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#: build/lib/core/models.py:1791 core/models.py:1791
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr "{name} хочет получить доступ к следующему документу:"
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#: build/lib/core/models.py:1797 core/models.py:1797
|
||||
#, python-brace-format
|
||||
msgid "{name} is asking for access to the document: {title}"
|
||||
msgstr "{name} запрашивает доступ к документу: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1837 core/models.py:1837
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Thread"
|
||||
msgstr "Обсуждение"
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1840 core/models.py:1840
|
||||
msgid "Threads"
|
||||
msgstr "Обсуждения"
|
||||
|
||||
#: build/lib/core/models.py:1841 build/lib/core/models.py:1893
|
||||
#: core/models.py:1841 core/models.py:1893
|
||||
#: build/lib/core/models.py:1843 build/lib/core/models.py:1895
|
||||
#: core/models.py:1843 core/models.py:1895
|
||||
msgid "Anonymous"
|
||||
msgstr "Аноним"
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comment"
|
||||
msgstr "Комментарий"
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1891 core/models.py:1891
|
||||
msgid "Comments"
|
||||
msgstr "Комментарии"
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1940 core/models.py:1940
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr "Этот эмодзи уже использован в этом комментарии."
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reaction"
|
||||
msgstr "Реакция"
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1945 core/models.py:1945
|
||||
msgid "Reactions"
|
||||
msgstr "Реакции"
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1955 core/models.py:1955
|
||||
msgid "email address"
|
||||
msgstr "адрес электронной почты"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitation"
|
||||
msgstr "Приглашение для документа"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1975 core/models.py:1975
|
||||
msgid "Document invitations"
|
||||
msgstr "Приглашения для документов"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1995 core/models.py:1995
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr "Этот адрес уже связан с зарегистрированным пользователем."
|
||||
|
||||
#: build/lib/impress/settings.py:808 impress/settings.py:808
|
||||
#: build/lib/impress/settings.py:837 impress/settings.py:837
|
||||
msgid "Docs AI"
|
||||
msgstr "Docs ИИ"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-02 09:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 13:28\n"
|
||||
"POT-Creation-Date: 2026-04-30 12:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-30 13:05\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Slovenian\n"
|
||||
"Language: sl_SI\n"
|
||||
@@ -17,28 +17,28 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 18\n"
|
||||
|
||||
#: build/lib/core/admin.py:30 core/admin.py:30
|
||||
#: build/lib/core/admin.py:33 core/admin.py:33
|
||||
msgid "Personal info"
|
||||
msgstr "Osebni podatki"
|
||||
|
||||
#: build/lib/core/admin.py:43 build/lib/core/admin.py:161 core/admin.py:43
|
||||
#: core/admin.py:161
|
||||
#: build/lib/core/admin.py:46 build/lib/core/admin.py:166 core/admin.py:46
|
||||
#: core/admin.py:166
|
||||
msgid "Permissions"
|
||||
msgstr "Dovoljenja"
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
#: build/lib/core/admin.py:58 core/admin.py:58
|
||||
msgid "Important dates"
|
||||
msgstr "Pomembni datumi"
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
#: build/lib/core/admin.py:117 core/admin.py:117
|
||||
msgid "Import job created and queued."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
#: build/lib/core/admin.py:121 core/admin.py:121
|
||||
msgid "Process selected user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:171 core/admin.py:171
|
||||
#: build/lib/core/admin.py:176 core/admin.py:176
|
||||
msgid "Tree structure"
|
||||
msgstr "Drevesna struktura"
|
||||
|
||||
@@ -62,24 +62,24 @@ msgstr ""
|
||||
msgid "Favorite"
|
||||
msgstr "Priljubljena"
|
||||
|
||||
#: build/lib/core/api/serializers.py:544 core/api/serializers.py:544
|
||||
#: build/lib/core/api/serializers.py:507 core/api/serializers.py:507
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Nov dokument je bil ustvarjen v vašem imenu!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
|
||||
#: build/lib/core/api/serializers.py:511 core/api/serializers.py:511
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "Dodeljeno vam je bilo lastništvo nad novim dokumentom:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:584 core/api/serializers.py:584
|
||||
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
|
||||
msgid "This field is required."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:595 core/api/serializers.py:595
|
||||
#: build/lib/core/api/serializers.py:558 core/api/serializers.py:558
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1312 core/api/viewsets.py:1312
|
||||
#: build/lib/core/api/viewsets.py:1299 core/api/viewsets.py:1299
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr ""
|
||||
@@ -375,151 +375,151 @@ msgstr "Dokument"
|
||||
msgid "Documents"
|
||||
msgstr "Dokumenti"
|
||||
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1345
|
||||
#: core/models.py:940 core/models.py:1345
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1347
|
||||
#: core/models.py:940 core/models.py:1347
|
||||
msgid "Untitled Document"
|
||||
msgstr "Dokument brez naslova"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1348 core/models.py:1348
|
||||
msgid "Open"
|
||||
msgstr "Odpri"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1383 core/models.py:1383
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you!"
|
||||
msgstr "{name} je delil dokument z vami!"
|
||||
|
||||
#: build/lib/core/models.py:1385 core/models.py:1385
|
||||
#: build/lib/core/models.py:1387 core/models.py:1387
|
||||
#, python-brace-format
|
||||
msgid "{name} invited you with the role \"{role}\" on the following document:"
|
||||
msgstr "{name} vas je povabil z vlogo \"{role}\" na naslednjem dokumentu:"
|
||||
|
||||
#: build/lib/core/models.py:1391 core/models.py:1391
|
||||
#: build/lib/core/models.py:1393 core/models.py:1393
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you: {title}"
|
||||
msgstr "{name} je delil dokument z vami: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1492 core/models.py:1492
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link trace"
|
||||
msgstr "Dokument/sled povezave uporabnika"
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1495 core/models.py:1495
|
||||
msgid "Document/user link traces"
|
||||
msgstr "Sledi povezav dokumenta/uporabnika"
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1501 core/models.py:1501
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr "Za ta dokument/uporabnika že obstaja sled povezave."
|
||||
|
||||
#: build/lib/core/models.py:1522 core/models.py:1522
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorite"
|
||||
msgstr "Priljubljeni dokument"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1525 core/models.py:1525
|
||||
msgid "Document favorites"
|
||||
msgstr "Priljubljeni dokumenti"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1531 core/models.py:1531
|
||||
msgid "This document is already targeted by a favorite relation instance for the same user."
|
||||
msgstr "Ta dokument je že ciljno usmerjen s priljubljenim primerkom relacije za istega uporabnika."
|
||||
|
||||
#: build/lib/core/models.py:1551 core/models.py:1551
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relation"
|
||||
msgstr "Odnos dokument/uporabnik"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1554 core/models.py:1554
|
||||
msgid "Document/user relations"
|
||||
msgstr "Odnosi dokument/uporabnik"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1560 core/models.py:1560
|
||||
msgid "This user is already in this document."
|
||||
msgstr "Ta uporabnik je že v tem dokumentu."
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1566 core/models.py:1566
|
||||
msgid "This team is already in this document."
|
||||
msgstr "Ta ekipa je že v tem dokumentu."
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1572 core/models.py:1572
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr "Nastaviti je treba bodisi uporabnika ali ekipo, a ne obojega."
|
||||
|
||||
#: build/lib/core/models.py:1721 core/models.py:1721
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for access"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1724 core/models.py:1724
|
||||
msgid "Document ask for accesses"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1730 core/models.py:1730
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#: build/lib/core/models.py:1787 core/models.py:1787
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#: build/lib/core/models.py:1791 core/models.py:1791
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#: build/lib/core/models.py:1797 core/models.py:1797
|
||||
#, python-brace-format
|
||||
msgid "{name} is asking for access to the document: {title}"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1837 core/models.py:1837
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1840 core/models.py:1840
|
||||
msgid "Threads"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1841 build/lib/core/models.py:1893
|
||||
#: core/models.py:1841 core/models.py:1893
|
||||
#: build/lib/core/models.py:1843 build/lib/core/models.py:1895
|
||||
#: core/models.py:1843 core/models.py:1895
|
||||
msgid "Anonymous"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1891 core/models.py:1891
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1940 core/models.py:1940
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reaction"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1945 core/models.py:1945
|
||||
msgid "Reactions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1955 core/models.py:1955
|
||||
msgid "email address"
|
||||
msgstr "elektronski naslov"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitation"
|
||||
msgstr "Vabilo na dokument"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1975 core/models.py:1975
|
||||
msgid "Document invitations"
|
||||
msgstr "Vabila na dokument"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1995 core/models.py:1995
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr "Ta e-poštni naslov je že povezan z registriranim uporabnikom."
|
||||
|
||||
#: build/lib/impress/settings.py:808 impress/settings.py:808
|
||||
#: build/lib/impress/settings.py:837 impress/settings.py:837
|
||||
msgid "Docs AI"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-02 09:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 13:28\n"
|
||||
"POT-Creation-Date: 2026-04-30 12:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-30 13:05\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Swedish\n"
|
||||
"Language: sv_SE\n"
|
||||
@@ -17,28 +17,28 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 18\n"
|
||||
|
||||
#: build/lib/core/admin.py:30 core/admin.py:30
|
||||
#: build/lib/core/admin.py:33 core/admin.py:33
|
||||
msgid "Personal info"
|
||||
msgstr "Personuppgifter"
|
||||
|
||||
#: build/lib/core/admin.py:43 build/lib/core/admin.py:161 core/admin.py:43
|
||||
#: core/admin.py:161
|
||||
#: build/lib/core/admin.py:46 build/lib/core/admin.py:166 core/admin.py:46
|
||||
#: core/admin.py:166
|
||||
msgid "Permissions"
|
||||
msgstr "Behörigheter"
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
#: build/lib/core/admin.py:58 core/admin.py:58
|
||||
msgid "Important dates"
|
||||
msgstr "Viktiga datum"
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
#: build/lib/core/admin.py:117 core/admin.py:117
|
||||
msgid "Import job created and queued."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
#: build/lib/core/admin.py:121 core/admin.py:121
|
||||
msgid "Process selected user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:171 core/admin.py:171
|
||||
#: build/lib/core/admin.py:176 core/admin.py:176
|
||||
msgid "Tree structure"
|
||||
msgstr ""
|
||||
|
||||
@@ -62,24 +62,24 @@ msgstr ""
|
||||
msgid "Favorite"
|
||||
msgstr "Favoriter"
|
||||
|
||||
#: build/lib/core/api/serializers.py:544 core/api/serializers.py:544
|
||||
#: build/lib/core/api/serializers.py:507 core/api/serializers.py:507
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Ett nytt dokument skapades åt dig!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
|
||||
#: build/lib/core/api/serializers.py:511 core/api/serializers.py:511
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "Du har beviljats äganderätt till ett nytt dokument:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:584 core/api/serializers.py:584
|
||||
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
|
||||
msgid "This field is required."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:595 core/api/serializers.py:595
|
||||
#: build/lib/core/api/serializers.py:558 core/api/serializers.py:558
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1312 core/api/viewsets.py:1312
|
||||
#: build/lib/core/api/viewsets.py:1299 core/api/viewsets.py:1299
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr ""
|
||||
@@ -375,151 +375,151 @@ msgstr ""
|
||||
msgid "Documents"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1345
|
||||
#: core/models.py:940 core/models.py:1345
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1347
|
||||
#: core/models.py:940 core/models.py:1347
|
||||
msgid "Untitled Document"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1348 core/models.py:1348
|
||||
msgid "Open"
|
||||
msgstr "Öppna"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1383 core/models.py:1383
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1385 core/models.py:1385
|
||||
#: build/lib/core/models.py:1387 core/models.py:1387
|
||||
#, python-brace-format
|
||||
msgid "{name} invited you with the role \"{role}\" on the following document:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1391 core/models.py:1391
|
||||
#: build/lib/core/models.py:1393 core/models.py:1393
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you: {title}"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1492 core/models.py:1492
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link trace"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1495 core/models.py:1495
|
||||
msgid "Document/user link traces"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1501 core/models.py:1501
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1522 core/models.py:1522
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorite"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1525 core/models.py:1525
|
||||
msgid "Document favorites"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1531 core/models.py:1531
|
||||
msgid "This document is already targeted by a favorite relation instance for the same user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1551 core/models.py:1551
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1554 core/models.py:1554
|
||||
msgid "Document/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1560 core/models.py:1560
|
||||
msgid "This user is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1566 core/models.py:1566
|
||||
msgid "This team is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1572 core/models.py:1572
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1721 core/models.py:1721
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for access"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1724 core/models.py:1724
|
||||
msgid "Document ask for accesses"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1730 core/models.py:1730
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#: build/lib/core/models.py:1787 core/models.py:1787
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#: build/lib/core/models.py:1791 core/models.py:1791
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#: build/lib/core/models.py:1797 core/models.py:1797
|
||||
#, python-brace-format
|
||||
msgid "{name} is asking for access to the document: {title}"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1837 core/models.py:1837
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1840 core/models.py:1840
|
||||
msgid "Threads"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1841 build/lib/core/models.py:1893
|
||||
#: core/models.py:1841 core/models.py:1893
|
||||
#: build/lib/core/models.py:1843 build/lib/core/models.py:1895
|
||||
#: core/models.py:1843 core/models.py:1895
|
||||
msgid "Anonymous"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1891 core/models.py:1891
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1940 core/models.py:1940
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reaction"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1945 core/models.py:1945
|
||||
msgid "Reactions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1955 core/models.py:1955
|
||||
msgid "email address"
|
||||
msgstr "e-postadress"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitation"
|
||||
msgstr "Bjud in dokument"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1975 core/models.py:1975
|
||||
msgid "Document invitations"
|
||||
msgstr "Inbjudningar dokument"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1995 core/models.py:1995
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr "Denna e-postadress är redan associerad med en registrerad användare."
|
||||
|
||||
#: build/lib/impress/settings.py:808 impress/settings.py:808
|
||||
#: build/lib/impress/settings.py:837 impress/settings.py:837
|
||||
msgid "Docs AI"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-02 09:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 13:28\n"
|
||||
"POT-Creation-Date: 2026-04-30 12:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-30 13:05\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Turkish\n"
|
||||
"Language: tr_TR\n"
|
||||
@@ -17,28 +17,28 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 18\n"
|
||||
|
||||
#: build/lib/core/admin.py:30 core/admin.py:30
|
||||
#: build/lib/core/admin.py:33 core/admin.py:33
|
||||
msgid "Personal info"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:43 build/lib/core/admin.py:161 core/admin.py:43
|
||||
#: core/admin.py:161
|
||||
#: build/lib/core/admin.py:46 build/lib/core/admin.py:166 core/admin.py:46
|
||||
#: core/admin.py:166
|
||||
msgid "Permissions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
#: build/lib/core/admin.py:58 core/admin.py:58
|
||||
msgid "Important dates"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
#: build/lib/core/admin.py:117 core/admin.py:117
|
||||
msgid "Import job created and queued."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
#: build/lib/core/admin.py:121 core/admin.py:121
|
||||
msgid "Process selected user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:171 core/admin.py:171
|
||||
#: build/lib/core/admin.py:176 core/admin.py:176
|
||||
msgid "Tree structure"
|
||||
msgstr ""
|
||||
|
||||
@@ -62,24 +62,24 @@ msgstr ""
|
||||
msgid "Favorite"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:544 core/api/serializers.py:544
|
||||
#: build/lib/core/api/serializers.py:507 core/api/serializers.py:507
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
|
||||
#: build/lib/core/api/serializers.py:511 core/api/serializers.py:511
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:584 core/api/serializers.py:584
|
||||
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
|
||||
msgid "This field is required."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:595 core/api/serializers.py:595
|
||||
#: build/lib/core/api/serializers.py:558 core/api/serializers.py:558
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1312 core/api/viewsets.py:1312
|
||||
#: build/lib/core/api/viewsets.py:1299 core/api/viewsets.py:1299
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr ""
|
||||
@@ -375,151 +375,151 @@ msgstr ""
|
||||
msgid "Documents"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1345
|
||||
#: core/models.py:940 core/models.py:1345
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1347
|
||||
#: core/models.py:940 core/models.py:1347
|
||||
msgid "Untitled Document"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1348 core/models.py:1348
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1383 core/models.py:1383
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1385 core/models.py:1385
|
||||
#: build/lib/core/models.py:1387 core/models.py:1387
|
||||
#, python-brace-format
|
||||
msgid "{name} invited you with the role \"{role}\" on the following document:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1391 core/models.py:1391
|
||||
#: build/lib/core/models.py:1393 core/models.py:1393
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you: {title}"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1492 core/models.py:1492
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link trace"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1495 core/models.py:1495
|
||||
msgid "Document/user link traces"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1501 core/models.py:1501
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1522 core/models.py:1522
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorite"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1525 core/models.py:1525
|
||||
msgid "Document favorites"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1531 core/models.py:1531
|
||||
msgid "This document is already targeted by a favorite relation instance for the same user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1551 core/models.py:1551
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1554 core/models.py:1554
|
||||
msgid "Document/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1560 core/models.py:1560
|
||||
msgid "This user is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1566 core/models.py:1566
|
||||
msgid "This team is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1572 core/models.py:1572
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1721 core/models.py:1721
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for access"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1724 core/models.py:1724
|
||||
msgid "Document ask for accesses"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1730 core/models.py:1730
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#: build/lib/core/models.py:1787 core/models.py:1787
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#: build/lib/core/models.py:1791 core/models.py:1791
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#: build/lib/core/models.py:1797 core/models.py:1797
|
||||
#, python-brace-format
|
||||
msgid "{name} is asking for access to the document: {title}"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1837 core/models.py:1837
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1840 core/models.py:1840
|
||||
msgid "Threads"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1841 build/lib/core/models.py:1893
|
||||
#: core/models.py:1841 core/models.py:1893
|
||||
#: build/lib/core/models.py:1843 build/lib/core/models.py:1895
|
||||
#: core/models.py:1843 core/models.py:1895
|
||||
msgid "Anonymous"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1891 core/models.py:1891
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1940 core/models.py:1940
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reaction"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1945 core/models.py:1945
|
||||
msgid "Reactions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1955 core/models.py:1955
|
||||
msgid "email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1975 core/models.py:1975
|
||||
msgid "Document invitations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1995 core/models.py:1995
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/impress/settings.py:808 impress/settings.py:808
|
||||
#: build/lib/impress/settings.py:837 impress/settings.py:837
|
||||
msgid "Docs AI"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-02 09:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 13:28\n"
|
||||
"POT-Creation-Date: 2026-04-30 12:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-30 13:05\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Ukrainian\n"
|
||||
"Language: uk_UA\n"
|
||||
@@ -17,28 +17,28 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 18\n"
|
||||
|
||||
#: build/lib/core/admin.py:30 core/admin.py:30
|
||||
#: build/lib/core/admin.py:33 core/admin.py:33
|
||||
msgid "Personal info"
|
||||
msgstr "Особисті дані"
|
||||
|
||||
#: build/lib/core/admin.py:43 build/lib/core/admin.py:161 core/admin.py:43
|
||||
#: core/admin.py:161
|
||||
#: build/lib/core/admin.py:46 build/lib/core/admin.py:166 core/admin.py:46
|
||||
#: core/admin.py:166
|
||||
msgid "Permissions"
|
||||
msgstr "Дозволи"
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
#: build/lib/core/admin.py:58 core/admin.py:58
|
||||
msgid "Important dates"
|
||||
msgstr "Важливі дати"
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
#: build/lib/core/admin.py:117 core/admin.py:117
|
||||
msgid "Import job created and queued."
|
||||
msgstr "Завдання імпорту створено і поставлено в чергу."
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
#: build/lib/core/admin.py:121 core/admin.py:121
|
||||
msgid "Process selected user reconciliations"
|
||||
msgstr "Обробити обрані узгодження користувача"
|
||||
|
||||
#: build/lib/core/admin.py:171 core/admin.py:171
|
||||
#: build/lib/core/admin.py:176 core/admin.py:176
|
||||
msgid "Tree structure"
|
||||
msgstr "Ієрархічна структура"
|
||||
|
||||
@@ -62,24 +62,24 @@ msgstr "Приховано"
|
||||
msgid "Favorite"
|
||||
msgstr "Обране"
|
||||
|
||||
#: build/lib/core/api/serializers.py:544 core/api/serializers.py:544
|
||||
#: build/lib/core/api/serializers.py:507 core/api/serializers.py:507
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Новий документ був створений від вашого імені!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
|
||||
#: build/lib/core/api/serializers.py:511 core/api/serializers.py:511
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "Ви тепер є власником нового документа:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:584 core/api/serializers.py:584
|
||||
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
|
||||
msgid "This field is required."
|
||||
msgstr "Це поле є обов’язковим."
|
||||
|
||||
#: build/lib/core/api/serializers.py:595 core/api/serializers.py:595
|
||||
#: build/lib/core/api/serializers.py:558 core/api/serializers.py:558
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr "Доступ до посилання '%(link_reach)s' заборонено на основі конфігурації батьківського документа."
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1312 core/api/viewsets.py:1312
|
||||
#: build/lib/core/api/viewsets.py:1299 core/api/viewsets.py:1299
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "копія {title}"
|
||||
@@ -382,151 +382,151 @@ msgstr "Документ"
|
||||
msgid "Documents"
|
||||
msgstr "Документи"
|
||||
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1345
|
||||
#: core/models.py:940 core/models.py:1345
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1347
|
||||
#: core/models.py:940 core/models.py:1347
|
||||
msgid "Untitled Document"
|
||||
msgstr "Документ без назви"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1348 core/models.py:1348
|
||||
msgid "Open"
|
||||
msgstr "Відкрити"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1383 core/models.py:1383
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you!"
|
||||
msgstr "{name} ділиться з вами документом!"
|
||||
|
||||
#: build/lib/core/models.py:1385 core/models.py:1385
|
||||
#: build/lib/core/models.py:1387 core/models.py:1387
|
||||
#, python-brace-format
|
||||
msgid "{name} invited you with the role \"{role}\" on the following document:"
|
||||
msgstr "{name} запрошує вас для роботи з документом із роллю \"{role}\":"
|
||||
|
||||
#: build/lib/core/models.py:1391 core/models.py:1391
|
||||
#: build/lib/core/models.py:1393 core/models.py:1393
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you: {title}"
|
||||
msgstr "{name} ділиться з вами документом: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1492 core/models.py:1492
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link trace"
|
||||
msgstr "Трасування посилання Документ/користувач"
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1495 core/models.py:1495
|
||||
msgid "Document/user link traces"
|
||||
msgstr "Трасування посилань Документ/користувач"
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1501 core/models.py:1501
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr "Відстеження вже існуючих посилань для цього документа/користувача."
|
||||
|
||||
#: build/lib/core/models.py:1522 core/models.py:1522
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorite"
|
||||
msgstr "Обраний документ"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1525 core/models.py:1525
|
||||
msgid "Document favorites"
|
||||
msgstr "Обрані документи"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1531 core/models.py:1531
|
||||
msgid "This document is already targeted by a favorite relation instance for the same user."
|
||||
msgstr "Цей документ вже вказаний як обраний для одного користувача."
|
||||
|
||||
#: build/lib/core/models.py:1551 core/models.py:1551
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relation"
|
||||
msgstr "Відносини документ/користувач"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1554 core/models.py:1554
|
||||
msgid "Document/user relations"
|
||||
msgstr "Відносини документ/користувач"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1560 core/models.py:1560
|
||||
msgid "This user is already in this document."
|
||||
msgstr "Цей користувач вже має доступ до цього документу."
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1566 core/models.py:1566
|
||||
msgid "This team is already in this document."
|
||||
msgstr "Ця команда вже має доступ до цього документа."
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1572 core/models.py:1572
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr "Вкажіть користувача або команду, а не обох."
|
||||
|
||||
#: build/lib/core/models.py:1721 core/models.py:1721
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for access"
|
||||
msgstr "Запит доступу до документа"
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1724 core/models.py:1724
|
||||
msgid "Document ask for accesses"
|
||||
msgstr "Запит доступу для документа"
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1730 core/models.py:1730
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr "Цей користувач вже попросив доступ до цього документа."
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#: build/lib/core/models.py:1787 core/models.py:1787
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr "{name} хоче отримати доступ до документа!"
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#: build/lib/core/models.py:1791 core/models.py:1791
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr "{name} бажає отримати доступ до наступного документа:"
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#: build/lib/core/models.py:1797 core/models.py:1797
|
||||
#, python-brace-format
|
||||
msgid "{name} is asking for access to the document: {title}"
|
||||
msgstr "{name} запитує доступ до документа: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1837 core/models.py:1837
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Thread"
|
||||
msgstr "Обговорення"
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1840 core/models.py:1840
|
||||
msgid "Threads"
|
||||
msgstr "Обговорення"
|
||||
|
||||
#: build/lib/core/models.py:1841 build/lib/core/models.py:1893
|
||||
#: core/models.py:1841 core/models.py:1893
|
||||
#: build/lib/core/models.py:1843 build/lib/core/models.py:1895
|
||||
#: core/models.py:1843 core/models.py:1895
|
||||
msgid "Anonymous"
|
||||
msgstr "Анонім"
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comment"
|
||||
msgstr "Коментар"
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1891 core/models.py:1891
|
||||
msgid "Comments"
|
||||
msgstr "Коментарі"
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1940 core/models.py:1940
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr "Цим емодзі вже відреагували на цей коментар."
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reaction"
|
||||
msgstr "Реакція"
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1945 core/models.py:1945
|
||||
msgid "Reactions"
|
||||
msgstr "Реакції"
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1955 core/models.py:1955
|
||||
msgid "email address"
|
||||
msgstr "електронна адреса"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitation"
|
||||
msgstr "Запрошення до редагування документа"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1975 core/models.py:1975
|
||||
msgid "Document invitations"
|
||||
msgstr "Запрошення до редагування документів"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1995 core/models.py:1995
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr "Ця електронна пошта вже пов'язана з зареєстрованим користувачем."
|
||||
|
||||
#: build/lib/impress/settings.py:808 impress/settings.py:808
|
||||
#: build/lib/impress/settings.py:837 impress/settings.py:837
|
||||
msgid "Docs AI"
|
||||
msgstr "Docs ШІ"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-04-02 09:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-08 13:28\n"
|
||||
"POT-Creation-Date: 2026-04-30 12:37+0000\n"
|
||||
"PO-Revision-Date: 2026-04-30 13:05\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Chinese Simplified\n"
|
||||
"Language: zh_CN\n"
|
||||
@@ -17,28 +17,28 @@ msgstr ""
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 18\n"
|
||||
|
||||
#: build/lib/core/admin.py:30 core/admin.py:30
|
||||
#: build/lib/core/admin.py:33 core/admin.py:33
|
||||
msgid "Personal info"
|
||||
msgstr "個人資訊"
|
||||
|
||||
#: build/lib/core/admin.py:43 build/lib/core/admin.py:161 core/admin.py:43
|
||||
#: core/admin.py:161
|
||||
#: build/lib/core/admin.py:46 build/lib/core/admin.py:166 core/admin.py:46
|
||||
#: core/admin.py:166
|
||||
msgid "Permissions"
|
||||
msgstr "權限"
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
#: build/lib/core/admin.py:58 core/admin.py:58
|
||||
msgid "Important dates"
|
||||
msgstr "重要日期"
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
#: build/lib/core/admin.py:117 core/admin.py:117
|
||||
msgid "Import job created and queued."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
#: build/lib/core/admin.py:121 core/admin.py:121
|
||||
msgid "Process selected user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:171 core/admin.py:171
|
||||
#: build/lib/core/admin.py:176 core/admin.py:176
|
||||
msgid "Tree structure"
|
||||
msgstr "樹狀結構"
|
||||
|
||||
@@ -62,24 +62,24 @@ msgstr "已隱藏"
|
||||
msgid "Favorite"
|
||||
msgstr "我的最愛"
|
||||
|
||||
#: build/lib/core/api/serializers.py:544 core/api/serializers.py:544
|
||||
#: build/lib/core/api/serializers.py:507 core/api/serializers.py:507
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "已代表您建立新文件!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
|
||||
#: build/lib/core/api/serializers.py:511 core/api/serializers.py:511
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "您已獲得新文件的所有權:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:584 core/api/serializers.py:584
|
||||
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
|
||||
msgid "This field is required."
|
||||
msgstr "此欄位為必填。"
|
||||
|
||||
#: build/lib/core/api/serializers.py:595 core/api/serializers.py:595
|
||||
#: build/lib/core/api/serializers.py:558 core/api/serializers.py:558
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr "根據父文件設定,不允許連結範圍「%(link_reach)s」。"
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1312 core/api/viewsets.py:1312
|
||||
#: build/lib/core/api/viewsets.py:1299 core/api/viewsets.py:1299
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "{title} 的副本"
|
||||
@@ -375,151 +375,151 @@ msgstr "文件"
|
||||
msgid "Documents"
|
||||
msgstr "文件"
|
||||
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1345
|
||||
#: core/models.py:940 core/models.py:1345
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1347
|
||||
#: core/models.py:940 core/models.py:1347
|
||||
msgid "Untitled Document"
|
||||
msgstr "未命名文件"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1348 core/models.py:1348
|
||||
msgid "Open"
|
||||
msgstr "開啟"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1383 core/models.py:1383
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you!"
|
||||
msgstr "{name} 與您分享了一份文件!"
|
||||
|
||||
#: build/lib/core/models.py:1385 core/models.py:1385
|
||||
#: build/lib/core/models.py:1387 core/models.py:1387
|
||||
#, python-brace-format
|
||||
msgid "{name} invited you with the role \"{role}\" on the following document:"
|
||||
msgstr "{name} 邀請您以「{role}」角色參與以下文件:"
|
||||
|
||||
#: build/lib/core/models.py:1391 core/models.py:1391
|
||||
#: build/lib/core/models.py:1393 core/models.py:1393
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you: {title}"
|
||||
msgstr "{name} 與您分享了一份文件:{title}"
|
||||
|
||||
#: build/lib/core/models.py:1492 core/models.py:1492
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link trace"
|
||||
msgstr "文件/使用者連結追蹤"
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1495 core/models.py:1495
|
||||
msgid "Document/user link traces"
|
||||
msgstr "文件/使用者連結追蹤"
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1501 core/models.py:1501
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr "此文件/使用者已存在連結追蹤。"
|
||||
|
||||
#: build/lib/core/models.py:1522 core/models.py:1522
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorite"
|
||||
msgstr "文件收藏"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1525 core/models.py:1525
|
||||
msgid "Document favorites"
|
||||
msgstr "文件收藏"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1531 core/models.py:1531
|
||||
msgid "This document is already targeted by a favorite relation instance for the same user."
|
||||
msgstr "此使用者已將此文件加入收藏。"
|
||||
|
||||
#: build/lib/core/models.py:1551 core/models.py:1551
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relation"
|
||||
msgstr "文件/使用者關聯"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1554 core/models.py:1554
|
||||
msgid "Document/user relations"
|
||||
msgstr "文件/使用者關聯"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1560 core/models.py:1560
|
||||
msgid "This user is already in this document."
|
||||
msgstr "此使用者已在此文件中。"
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1566 core/models.py:1566
|
||||
msgid "This team is already in this document."
|
||||
msgstr "此團隊已在此文件中。"
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1572 core/models.py:1572
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr "必須設定使用者或團隊其中之一,不能同時設定兩者。"
|
||||
|
||||
#: build/lib/core/models.py:1721 core/models.py:1721
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for access"
|
||||
msgstr "要求文件存取權"
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1724 core/models.py:1724
|
||||
msgid "Document ask for accesses"
|
||||
msgstr "要求文件存取權"
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1730 core/models.py:1730
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr "此使用者已要求過存取此文件的權限。"
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#: build/lib/core/models.py:1787 core/models.py:1787
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr "{name} 想要存取文件!"
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#: build/lib/core/models.py:1791 core/models.py:1791
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr "{name} 想要存取以下文件:"
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#: build/lib/core/models.py:1797 core/models.py:1797
|
||||
#, python-brace-format
|
||||
msgid "{name} is asking for access to the document: {title}"
|
||||
msgstr "{name} 正要求存取文件:{title}"
|
||||
|
||||
#: build/lib/core/models.py:1837 core/models.py:1837
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Thread"
|
||||
msgstr "對話串"
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1840 core/models.py:1840
|
||||
msgid "Threads"
|
||||
msgstr "對話串"
|
||||
|
||||
#: build/lib/core/models.py:1841 build/lib/core/models.py:1893
|
||||
#: core/models.py:1841 core/models.py:1893
|
||||
#: build/lib/core/models.py:1843 build/lib/core/models.py:1895
|
||||
#: core/models.py:1843 core/models.py:1895
|
||||
msgid "Anonymous"
|
||||
msgstr "匿名"
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comment"
|
||||
msgstr "評論"
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1891 core/models.py:1891
|
||||
msgid "Comments"
|
||||
msgstr "評論"
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1940 core/models.py:1940
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr "此評論已標記過此表情符號。"
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reaction"
|
||||
msgstr "回應"
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1945 core/models.py:1945
|
||||
msgid "Reactions"
|
||||
msgstr "回應"
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1955 core/models.py:1955
|
||||
msgid "email address"
|
||||
msgstr "電子郵件地址"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitation"
|
||||
msgstr "文件邀請"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1975 core/models.py:1975
|
||||
msgid "Document invitations"
|
||||
msgstr "文件邀請"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1995 core/models.py:1995
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr "此電子郵件地址已與已註冊使用者關聯。"
|
||||
|
||||
#: build/lib/impress/settings.py:808 impress/settings.py:808
|
||||
#: build/lib/impress/settings.py:837 impress/settings.py:837
|
||||
msgid "Docs AI"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "impress"
|
||||
version = "4.8.6"
|
||||
version = "5.0.0"
|
||||
authors = [{ "name" = "DINUM", "email" = "dev@mail.numerique.gouv.fr" }]
|
||||
classifiers = [
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
|
||||
@@ -144,6 +144,36 @@ test.describe('Doc Header', () => {
|
||||
await cleanup();
|
||||
});
|
||||
|
||||
test('it pastes plain text in the title without keeping formatting', async ({
|
||||
page,
|
||||
browserName,
|
||||
}) => {
|
||||
await createDoc(page, 'doc-title-paste', browserName, 1);
|
||||
|
||||
const docTitle = page.getByRole('textbox', { name: 'Document title' });
|
||||
await docTitle.click();
|
||||
await page.keyboard.press('Control+a');
|
||||
|
||||
await page.evaluate(() => {
|
||||
const el = document.querySelector('[aria-label="Document title"]');
|
||||
if (!el) {
|
||||
return;
|
||||
}
|
||||
|
||||
const dt = new DataTransfer();
|
||||
dt.setData('text/plain', 'Pasted plain text');
|
||||
dt.setData('text/html', '<b><em>Pasted plain text</em></b>');
|
||||
el.dispatchEvent(
|
||||
new ClipboardEvent('paste', { clipboardData: dt, bubbles: true }),
|
||||
);
|
||||
});
|
||||
|
||||
await docTitle.blur();
|
||||
await expect(docTitle).toHaveText('Pasted plain text');
|
||||
// Ensure formatting tags from text/html were not inserted.
|
||||
await expect(docTitle.locator('b, em, strong, i')).toHaveCount(0);
|
||||
});
|
||||
|
||||
test('it updates the title doc adding a leading emoji', async ({
|
||||
page,
|
||||
browserName,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "app-e2e",
|
||||
"version": "4.8.6",
|
||||
"version": "5.0.0",
|
||||
"repository": "https://github.com/suitenumerique/docs",
|
||||
"author": "DINUM",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "app-impress",
|
||||
"version": "4.8.6",
|
||||
"version": "5.0.0",
|
||||
"repository": "https://github.com/suitenumerique/docs",
|
||||
"author": "DINUM",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -153,6 +153,40 @@ const DocTitleInput = ({ doc }: DocTitleProps) => {
|
||||
}
|
||||
};
|
||||
|
||||
const insertPlainText = (plainText: string, target: HTMLElement) => {
|
||||
const selection = window.getSelection();
|
||||
if (!selection || selection.rangeCount === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const range = selection.getRangeAt(0);
|
||||
if (!target.contains(range.commonAncestorContainer)) {
|
||||
target.focus();
|
||||
range.selectNodeContents(target);
|
||||
range.collapse(false);
|
||||
selection.removeAllRanges();
|
||||
selection.addRange(range);
|
||||
}
|
||||
range.deleteContents();
|
||||
range.insertNode(document.createTextNode(plainText));
|
||||
};
|
||||
|
||||
const handlePaste = (event: React.ClipboardEvent<HTMLSpanElement>) => {
|
||||
event.preventDefault();
|
||||
insertPlainText(
|
||||
event.clipboardData.getData('text/plain'),
|
||||
event.currentTarget,
|
||||
);
|
||||
};
|
||||
|
||||
const handleDrop = (event: React.DragEvent<HTMLSpanElement>) => {
|
||||
event.preventDefault();
|
||||
insertPlainText(
|
||||
event.dataTransfer.getData('text/plain'),
|
||||
event.currentTarget,
|
||||
);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
setTitleDisplay(isTopRoot ? doc.title : titleWithoutEmoji);
|
||||
}, [doc.title, isTopRoot, titleWithoutEmoji]);
|
||||
@@ -181,6 +215,8 @@ const DocTitleInput = ({ doc }: DocTitleProps) => {
|
||||
onBlurCapture={(event) =>
|
||||
handleTitleSubmit(event.target.textContent || '')
|
||||
}
|
||||
onPasteCapture={handlePaste}
|
||||
onDropCapture={handleDrop}
|
||||
$padding={{ right: 'big' }}
|
||||
$css={css`
|
||||
&[contenteditable='true']:empty:not(:focus):before {
|
||||
|
||||
@@ -629,6 +629,7 @@
|
||||
"Change role for {{name}}": "Αλλαγή ρόλου για {{name}}",
|
||||
"Checklist applied": "Εφαρμόστηκε λίστα ελέγχου",
|
||||
"Choose a user": "Επιλέξτε ένα χρήστη",
|
||||
"Choose the email": "Επιλέξτε το email",
|
||||
"Choose the new location for <strong>{{title}}</strong>.": "Επιλέξτε τη νέα θέση για το <strong>{{title}}</strong>.",
|
||||
"Close the access request modal": "Κλείσιμο παραθύρου αίτησης πρόσβασης",
|
||||
"Close the delete modal": "Κλείσιμο παραθύρου διαγραφής",
|
||||
@@ -686,12 +687,15 @@
|
||||
"Document tree": "Δομή εγγράφου",
|
||||
"Document unpinned successfully!": "Το έγγραφο ξεκαρφιτσώθηκε επιτυχώς!",
|
||||
"Document visibility": "Ορατότητα εγγράφου",
|
||||
"Document {{activeId}} is over document {{overId}}.": "Το έγγραφο {{activeId}} είναι πάνω από το έγγραφο {{overId}}.",
|
||||
"Document {{id}} was dropped.": "Το έγγραφο {{id}} απορρίφθηκε.",
|
||||
"Documents grid": "Πλέγμα εγγράφων",
|
||||
"Docx": "Docx",
|
||||
"Download": "Λήψη",
|
||||
"Download anyway": "Λήψη οπωσδήποτε",
|
||||
"Download {{format}}": "Λήψη σε {{format}}",
|
||||
"Drag and drop status": "Κατάσταση μεταφοράς και απόθεσης",
|
||||
"Dragging was cancelled. Document {{id}} was dropped.": "Ακυρώθηκε η απόσυρση. Το έγγραφο {{id}} απορρίφθηκε.",
|
||||
"Draw inspiration from the content library": "Αντλήστε έμπνευση από τη βιβλιοθήκη περιεχομένου",
|
||||
"Duplicate": "Δημιουργία αντιγράφου",
|
||||
"Edit document emoji": "Επεξεργασία emoji εγγράφου",
|
||||
@@ -786,6 +790,7 @@
|
||||
"New sub-doc": "Νέο υπο-έγγραφο",
|
||||
"No document found": "Δεν βρέθηκε έγγραφο",
|
||||
"No documents found": "Δεν βρέθηκαν έγγραφα",
|
||||
"No results. Type a full email address to invite someone.": "Δεν υπάρχουν αποτελέσματα. Πληκτρολογήστε μια πλήρη διεύθυνση email για να προσκαλέσετε κάποιον.",
|
||||
"No text selected": "Δεν επιλέχθηκε κείμενο",
|
||||
"No versions": "Δεν υπάρχουν εκδόσεις",
|
||||
"Numbered list applied": "Εφαρμόστηκε αριθμημένη λίστα",
|
||||
@@ -813,6 +818,7 @@
|
||||
"Paragraph applied": "Εφαρμόστηκε παράγραφος",
|
||||
"Pending invitations": "Εκκρεμείς προσκλήσεις",
|
||||
"People with access via the parent document": "Άτομα με πρόσβαση μέσω του γονικού εγγράφου",
|
||||
"Picked up document {{id}}.": "Επιλέχθηκε το έγγραφο {{id}}.",
|
||||
"Pin": "Καρφίτσωμα",
|
||||
"Pinned documents": "Καρφιτσωμένα έγγραφα",
|
||||
"Please download it only if it comes from a trusted source.": "Παρακαλούμε πραγματοποιήστε λήψη μόνο εάν προέρχεται από αξιόπιστη πηγή.",
|
||||
@@ -873,6 +879,7 @@
|
||||
"Summarize": "Σύνοψη",
|
||||
"Summary": "Περίληψη",
|
||||
"The antivirus has detected an anomaly in your file.": "Το λογισμικό προστασίας από ιούς εντόπισε μια ανωμαλία στο αρχείο σας.",
|
||||
"The current document will be replaced, but you'll still find it in the version history.": "Το τρέχον έγγραφο θα αντικατασταθεί, αλλά θα το βρείτε ακόμα στο ιστορικό εκδόσεων.",
|
||||
"The document \"{{documentName}}\" has been successfully imported": "Το έγγραφο \"{{documentName}}\" εισήχθη επιτυχώς",
|
||||
"The document \"{{documentName}}\" import has failed": "Η εισαγωγή του εγγράφου \"{{documentName}}\" απέτυχε",
|
||||
"The document \"{{documentName}}\" import has failed (only .docx and .md files are allowed)": "Η εισαγωγή του εγγράφου \"{{documentName}}\" απέτυχε (επιτρέπονται μόνο αρχεία .docx και .md)",
|
||||
@@ -895,6 +902,7 @@
|
||||
"Too many requests. Please wait 60 seconds.": "Πάρα πολλά αιτήματα. Παρακαλούμε περιμένετε 60 δευτερόλεπτα.",
|
||||
"Trashbin": "Κάδος απορριμμάτων",
|
||||
"Type a name or email": "Πληκτρολογήστε όνομα ή email",
|
||||
"Type at least {{minLength}} characters to display user names": "Πληκτρολογήστε τουλάχιστον {{minLength}} χαρακτήρες για την εμφάνιση ονομάτων χρηστών",
|
||||
"Type the name of a document": "Πληκτρολογήστε το όνομα ενός εγγράφου",
|
||||
"Unpin": "Ξεκαρφίτσωμα",
|
||||
"Untitled document": "Έγγραφο χωρίς τίτλο",
|
||||
@@ -1191,6 +1199,7 @@
|
||||
"An error occurred...": "Une erreur s'est produite...",
|
||||
"An uncompromising writing experience.": "Une expérience d'écriture sans compromis.",
|
||||
"An unexpected error occurred.": "Une erreur inattendue s’est produite.",
|
||||
"An unexpected error occurred. Go grab a coffee or try to refresh the page.": "Une erreur inattendue est survenue. Allez prendre un café ou essayez d'actualiser la page.",
|
||||
"Analyzing file...": "Analyse du fichier...",
|
||||
"Anonymous": "Anonyme",
|
||||
"Anyone with the link can edit the document": "N'importe qui avec le lien peut éditer le document",
|
||||
@@ -1280,6 +1289,7 @@
|
||||
"Document {{activeId}} was dropped over document {{overId}}.": "Le document {{activeId}} a été abandonné sur le document {{overId}}.",
|
||||
"Document {{id}} is no longer over a droppable area.": "Le document {{id}} n'est plus au-dessus d'une zone dépotable.",
|
||||
"Document {{id}} was dropped.": "Le document {{id}} a été abandonné.",
|
||||
"Documentation": "Documentation",
|
||||
"Documents grid": "Grille des documents",
|
||||
"Docx": "Docx",
|
||||
"Download": "Télécharger",
|
||||
@@ -1315,6 +1325,7 @@
|
||||
"Flexible export.": "Un export flexible.",
|
||||
"Format": "Format",
|
||||
"Format your content with the toolbar": "Formatez votre contenu avec la barre d'outils",
|
||||
"Get Support": "Obtenir de l'aide",
|
||||
"Go to content": "Voir le contenu",
|
||||
"Govs ❤️ Open Source.": "Gouvernements ❤️ Open Source.",
|
||||
"HTML": "HTML",
|
||||
@@ -1432,6 +1443,7 @@
|
||||
"Request access modal": "Demande d'accès",
|
||||
"Reset": "Réinitialiser",
|
||||
"Reset search filters": "Réinitialiser les filtres de recherche",
|
||||
"Resize sidebar": "Redimensionner la barre latérale",
|
||||
"Restore": "Restaurer",
|
||||
"Restore version of {{date}}": "Restaurer la version de {{date}}",
|
||||
"Restoring an older version": "Restauration d'une ancienne version en cours",
|
||||
@@ -1440,6 +1452,7 @@
|
||||
"Search docs": "Rechercher des docs",
|
||||
"Search documents": "Rechercher des documents",
|
||||
"Search for a doc": "Rechercher un document",
|
||||
"Search for a document": "Rechercher un document",
|
||||
"Search modal": "Modale de recherche",
|
||||
"Search results": "Résultats de la recherche",
|
||||
"Select a document": "Sélectionnez un document",
|
||||
@@ -1462,6 +1475,9 @@
|
||||
"Show more": "Voir plus",
|
||||
"Show the side panel for {{title}}": "Afficher le panneau latéral pour {{title}}",
|
||||
"Show the table of contents": "Afficher la table des matières",
|
||||
"Sidebar width: medium": "Largeur de la barre latérale : moyenne",
|
||||
"Sidebar width: narrow": "Largeur de la barre latérale: étroite",
|
||||
"Sidebar width: wide": "Largeur de la barre latérale: large",
|
||||
"Simple and secure collaboration.": "Une collaboration simple et sécurisée.",
|
||||
"Simple document icon": "Icône simple du document",
|
||||
"Something bad happens, please retry.": "Une erreur inattendue s'est produite, veuillez réessayer.",
|
||||
@@ -1532,6 +1548,7 @@
|
||||
"home-content-open-source-part2": "Vous pouvez facilement auto-héberger Docs (consultez notre <2>documentation</2> d'installation).<br/>Docs utilise une <7>licence</7> (MIT) adaptée à l'innovation et aux entreprises.<br/>Les contributions sont les bienvenues (consultez notre feuille de route <13>ici</13>).",
|
||||
"home-content-open-source-part3": "Docs est le résultat d'un effort conjoint mené par les gouvernements français 🇫🇷🥖 <1>(DINUM)</1> et allemand 🇩🇪🥨 <5>(ZenDiS)</5>.",
|
||||
"just now": "à l'instant",
|
||||
"mention a sub-doc...": "mentionner un sous-document...",
|
||||
"new window": "nouvelle fenêtre",
|
||||
"pdf": "pdf",
|
||||
"src_img_onboarding_step_1": "/assets/on-boarding/step_1_FR.gif",
|
||||
@@ -2054,6 +2071,7 @@
|
||||
"An error occurred...": "Произошла ошибка...",
|
||||
"An uncompromising writing experience.": "Бескомпромиссный опыт написания.",
|
||||
"An unexpected error occurred.": "Произошла непредвиденная ошибка.",
|
||||
"An unexpected error occurred. Go grab a coffee or try to refresh the page.": "Произошла непредвиденная ошибка. Сходите за чашкой кофе или попробуйте обновить страницу.",
|
||||
"Analyzing file...": "Анализ файла...",
|
||||
"Anonymous": "Аноним",
|
||||
"Anyone with the link can edit the document": "Любой, у кого есть ссылка, может редактировать документ",
|
||||
@@ -2143,6 +2161,7 @@
|
||||
"Document {{activeId}} was dropped over document {{overId}}.": "Документ {{activeId}} был сброшен поверх документа {{overId}}.",
|
||||
"Document {{id}} is no longer over a droppable area.": "Документ {{id}} больше не находится над местом, куда его можно поместить.",
|
||||
"Document {{id}} was dropped.": "Документ {{id}} сброшен.",
|
||||
"Documentation": "Документация",
|
||||
"Documents grid": "Сетка документов",
|
||||
"Docx": "Docx",
|
||||
"Download": "Загрузить",
|
||||
@@ -2178,6 +2197,7 @@
|
||||
"Flexible export.": "Полезные форматы экспорта.",
|
||||
"Format": "Формат",
|
||||
"Format your content with the toolbar": "Форматируйте содержимое с помощью панели инструментов",
|
||||
"Get Support": "Получить поддержку",
|
||||
"Go to content": "Перейти к содержимому",
|
||||
"Govs ❤️ Open Source.": "Govs ❤️ Open Source.",
|
||||
"HTML": "HTML",
|
||||
@@ -2295,6 +2315,7 @@
|
||||
"Request access modal": "Запрос доступа",
|
||||
"Reset": "Сброс",
|
||||
"Reset search filters": "Сбросить фильтры поиска",
|
||||
"Resize sidebar": "Изменить размер панели",
|
||||
"Restore": "Восстановить",
|
||||
"Restore version of {{date}}": "Восстановить версию от {{date}}",
|
||||
"Restoring an older version": "Восстановление более старой версии",
|
||||
@@ -2303,6 +2324,7 @@
|
||||
"Search docs": "Поиск документов",
|
||||
"Search documents": "Поиск документов",
|
||||
"Search for a doc": "Поиск документов",
|
||||
"Search for a document": "Поиск документа",
|
||||
"Search modal": "Поиск",
|
||||
"Search results": "Результаты поиска",
|
||||
"Select a document": "Выберите документ",
|
||||
@@ -2325,6 +2347,9 @@
|
||||
"Show more": "Показать ещё",
|
||||
"Show the side panel for {{title}}": "Показать боковую панель для {{title}}",
|
||||
"Show the table of contents": "Показать оглавление",
|
||||
"Sidebar width: medium": "Ширина боковой панели: средняя",
|
||||
"Sidebar width: narrow": "Ширина боковой панели: узкая",
|
||||
"Sidebar width: wide": "Ширина боковой панели: широкая",
|
||||
"Simple and secure collaboration.": "Простое и безопасное сотрудничество.",
|
||||
"Simple document icon": "Простой значок документа",
|
||||
"Something bad happens, please retry.": "Что-то пошло не так, повторите попытку.",
|
||||
@@ -2395,6 +2420,7 @@
|
||||
"home-content-open-source-part2": "Вы можете легко разместить Docs у себя (см. нашу <2>документацию по установке</2>).<br/>Docs использует <7>лицензию</7> (MIT), подходящую для инноваций и бизнеса.<br/>Мы приветствуем ваши вклады (см. наш план разработки <13>здесь</13>).",
|
||||
"home-content-open-source-part3": "Docs — это результат совместных усилий правительств Франции 🇫🇷🥖 <1>(DINUM)</1> и Германии 🇩🇪🥨 <5>(ZenDiS)</5>.",
|
||||
"just now": "только что",
|
||||
"mention a sub-doc...": "упоминание вложенного документа...",
|
||||
"new window": "новое окно",
|
||||
"pdf": "pdf",
|
||||
"src_img_onboarding_step_1": "src_img_onboarding_step_1",
|
||||
@@ -2543,6 +2569,7 @@
|
||||
"An error occurred...": "Виникла помилка...",
|
||||
"An uncompromising writing experience.": "Безкомпромісне задоволення від процесу письма.",
|
||||
"An unexpected error occurred.": "Сталася неочікувана помилка.",
|
||||
"An unexpected error occurred. Go grab a coffee or try to refresh the page.": "Сталася неочікувана помилка. Сходіть за кавою або спробуйте оновити сторінку.",
|
||||
"Analyzing file...": "Аналіз файлу...",
|
||||
"Anonymous": "Анонім",
|
||||
"Anyone with the link can edit the document": "Будь-хто з посиланням може редагувати документ",
|
||||
@@ -2632,6 +2659,7 @@
|
||||
"Document {{activeId}} was dropped over document {{overId}}.": "Документ {{activeId}} відпущений над документом {{overId}}.",
|
||||
"Document {{id}} is no longer over a droppable area.": "Документ {{id}} більше не в зоні для пересування.",
|
||||
"Document {{id}} was dropped.": "Документ {{id}} був відхилений.",
|
||||
"Documentation": "Документація",
|
||||
"Documents grid": "Сітка документів",
|
||||
"Docx": "Docx",
|
||||
"Download": "Завантажити",
|
||||
@@ -2667,6 +2695,7 @@
|
||||
"Flexible export.": "Гнучкий експорт.",
|
||||
"Format": "Формат",
|
||||
"Format your content with the toolbar": "Форматуйте вміст за допомогою панелі інструментів",
|
||||
"Get Support": "Отримати підтримку",
|
||||
"Go to content": "Перейти до вмісту",
|
||||
"Govs ❤️ Open Source.": "Govs ❤️ Open Source.",
|
||||
"HTML": "HTML",
|
||||
@@ -2784,6 +2813,7 @@
|
||||
"Request access modal": "Запит доступу",
|
||||
"Reset": "Скинути",
|
||||
"Reset search filters": "Скинути фільтри пошуку",
|
||||
"Resize sidebar": "Змінити розмір бічної панелі",
|
||||
"Restore": "Відновити",
|
||||
"Restore version of {{date}}": "Відновити версію від {{date}}",
|
||||
"Restoring an older version": "Відновлення старішої версії",
|
||||
@@ -2792,6 +2822,7 @@
|
||||
"Search docs": "Пошук документів",
|
||||
"Search documents": "Пошук документів",
|
||||
"Search for a doc": "Пошук документу",
|
||||
"Search for a document": "Пошук документа",
|
||||
"Search modal": "Пошук",
|
||||
"Search results": "Результати пошуку",
|
||||
"Select a document": "Оберіть документ",
|
||||
@@ -2814,6 +2845,9 @@
|
||||
"Show more": "Показати більше",
|
||||
"Show the side panel for {{title}}": "Показувати бічну панель для {{title}}",
|
||||
"Show the table of contents": "Показати зміст",
|
||||
"Sidebar width: medium": "Ширина бічної панелі: середня",
|
||||
"Sidebar width: narrow": "Ширина бічної панелі: вузька",
|
||||
"Sidebar width: wide": "Ширина бічної панелі: широка",
|
||||
"Simple and secure collaboration.": "Проста та безпечна співпраця.",
|
||||
"Simple document icon": "Проста піктограма документа",
|
||||
"Something bad happens, please retry.": "Сталася помилка, спробуйте ще раз.",
|
||||
@@ -2884,6 +2918,7 @@
|
||||
"home-content-open-source-part2": "Ви можете легко самостійно розмістити Docs (див. нашу <2>документацію з встановлення</2>).<br/>Docs використовує <7>ліцензію</7> (MIT), що підходить для інновацій та бізнесу.<br/>Внески вітаються (див. наш план розробки <13>тут</13>).",
|
||||
"home-content-open-source-part3": "Docs є результатом спільних зусиль, очолюваних урядами Франції 🇫🇷🥖 <1>(DINUM)</1> та Німеччини 🇩🇪🥨 <5>(ZenDiS)</5>.",
|
||||
"just now": "щойно",
|
||||
"mention a sub-doc...": "згадка про вкладений документ...",
|
||||
"new window": "нове вікно",
|
||||
"pdf": "pdf",
|
||||
"src_img_onboarding_step_1": "src_img_onboarding_step_1",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "impress",
|
||||
"version": "4.8.6",
|
||||
"version": "5.0.0",
|
||||
"private": true,
|
||||
"repository": "https://github.com/suitenumerique/docs",
|
||||
"author": "DINUM",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "eslint-plugin-docs",
|
||||
"version": "4.8.6",
|
||||
"version": "5.0.0",
|
||||
"repository": "https://github.com/suitenumerique/docs",
|
||||
"author": "DINUM",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "packages-i18n",
|
||||
"version": "4.8.6",
|
||||
"version": "5.0.0",
|
||||
"repository": "https://github.com/suitenumerique/docs",
|
||||
"author": "DINUM",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "server-y-provider",
|
||||
"version": "4.8.6",
|
||||
"version": "5.0.0",
|
||||
"description": "Y.js provider for docs",
|
||||
"repository": "https://github.com/suitenumerique/docs",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
environments:
|
||||
dev:
|
||||
values:
|
||||
- version: 4.8.6
|
||||
- version: 5.0.0
|
||||
feature:
|
||||
values:
|
||||
- version: 4.8.6
|
||||
- version: 5.0.0
|
||||
feature: ci
|
||||
domain: example.com
|
||||
imageTag: demo
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
apiVersion: v2
|
||||
type: application
|
||||
name: docs
|
||||
version: 4.8.6
|
||||
version: 5.0.0
|
||||
appVersion: latest
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "mail_mjml",
|
||||
"version": "4.8.6",
|
||||
"version": "5.0.0",
|
||||
"description": "An util to generate html and text django's templates from mjml templates",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
|
||||
Reference in New Issue
Block a user