Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ef1679968d | |||
| a42c35dda0 | |||
| b2192b9594 | |||
| 75c649be39 |
+2
-17
@@ -6,24 +6,10 @@ and this project adheres to
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [v4.8.4] - 2026-03-25
|
||||
|
||||
### Added
|
||||
|
||||
- 🚸(frontend) hint min char search users #2064
|
||||
|
||||
### Changed
|
||||
|
||||
- 💄(frontend) improve comments highlights #1961
|
||||
- ♿️(frontend) improve BoxButton a11y and native button semantics #2103
|
||||
- ♿️(frontend) improve language picker accessibility #2069
|
||||
- ♿️(frontend) add aria-hidden to decorative icons in dropdown menu #2093
|
||||
- 🐛(backend) move lock table closer to the insert operation targeted
|
||||
|
||||
### Fixed
|
||||
|
||||
- 🐛(y-provider) destroy Y.Doc instances after each convert request #2129
|
||||
- 🐛(backend) remove deleted sub documents in favorite_list endpoint #2083
|
||||
- ♿️(frontend) fix empty heading before section titles in HTML export #2125
|
||||
|
||||
## [v4.8.3] - 2026-03-23
|
||||
|
||||
@@ -1192,8 +1178,7 @@ 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.4...main
|
||||
[v4.8.4]: https://github.com/suitenumerique/docs/releases/v4.8.4
|
||||
[unreleased]: https://github.com/suitenumerique/docs/compare/v4.8.3...main
|
||||
[v4.8.3]: https://github.com/suitenumerique/docs/releases/v4.8.3
|
||||
[v4.8.2]: https://github.com/suitenumerique/docs/releases/v4.8.2
|
||||
[v4.8.1]: https://github.com/suitenumerique/docs/releases/v4.8.1
|
||||
|
||||
@@ -674,8 +674,17 @@ class DocumentViewSet(
|
||||
|
||||
return drf.response.Response(serializer.data)
|
||||
|
||||
@transaction.atomic
|
||||
def perform_create(self, serializer):
|
||||
"""Set the current user as creator and owner of the newly created object."""
|
||||
|
||||
# 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;"
|
||||
)
|
||||
|
||||
# Remove file from validated_data as it's not a model field
|
||||
# Process it if present
|
||||
uploaded_file = serializer.validated_data.pop("file", None)
|
||||
@@ -693,25 +702,15 @@ class DocumentViewSet(
|
||||
)
|
||||
serializer.validated_data["content"] = converted_content
|
||||
serializer.validated_data["title"] = uploaded_file.name
|
||||
logger.info("conversion ended successfully")
|
||||
except ConversionError as err:
|
||||
logger.error("could not convert file content with error: %s", err)
|
||||
raise drf.exceptions.ValidationError(
|
||||
{"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(
|
||||
creator=self.request.user,
|
||||
**serializer.validated_data,
|
||||
)
|
||||
obj = models.Document.add_root(
|
||||
creator=self.request.user,
|
||||
**serializer.validated_data,
|
||||
)
|
||||
serializer.instance = obj
|
||||
models.DocumentAccess.objects.create(
|
||||
document=obj,
|
||||
@@ -828,7 +827,6 @@ class DocumentViewSet(
|
||||
|
||||
queryset = self.queryset.filter(path_list)
|
||||
queryset = queryset.filter(id__in=favorite_documents_ids)
|
||||
queryset = queryset.filter(ancestors_deleted_at__isnull=True)
|
||||
queryset = queryset.annotate_user_roles(user)
|
||||
queryset = queryset.annotate(
|
||||
is_favorite=db.Value(True, output_field=db.BooleanField())
|
||||
|
||||
+11
-10
@@ -267,16 +267,6 @@ class User(AbstractBaseUser, BaseModel, auth_models.PermissionsMixin):
|
||||
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)
|
||||
except Document.DoesNotExist:
|
||||
logger.warning(
|
||||
"Onboarding sandbox document with id %s does not exist. Skipping.",
|
||||
sandbox_id,
|
||||
)
|
||||
return
|
||||
|
||||
with transaction.atomic():
|
||||
# locks the table to ensure safe concurrent access
|
||||
with connection.cursor() as cursor:
|
||||
@@ -284,6 +274,17 @@ class User(AbstractBaseUser, BaseModel, auth_models.PermissionsMixin):
|
||||
f'LOCK TABLE "{Document._meta.db_table}" ' # noqa: SLF001
|
||||
"IN SHARE ROW EXCLUSIVE MODE;"
|
||||
)
|
||||
|
||||
sandbox_id = settings.USER_ONBOARDING_SANDBOX_DOCUMENT
|
||||
try:
|
||||
template_document = Document.objects.get(id=sandbox_id)
|
||||
except Document.DoesNotExist:
|
||||
logger.warning(
|
||||
"Onboarding sandbox document with id %s does not exist. Skipping.",
|
||||
sandbox_id,
|
||||
)
|
||||
return
|
||||
|
||||
sandbox_document = Document.add_root(
|
||||
title=template_document.title,
|
||||
content=template_document.content,
|
||||
|
||||
@@ -45,8 +45,6 @@ class Converter:
|
||||
def convert(self, data, content_type, accept):
|
||||
"""Convert input into other formats using external microservices."""
|
||||
|
||||
logger.info("converting content from %s to %s", content_type, accept)
|
||||
|
||||
if content_type == mime_types.DOCX and accept == mime_types.YJS:
|
||||
blocknote_data = self.docspec.convert(
|
||||
data, mime_types.DOCX, mime_types.BLOCKNOTE
|
||||
|
||||
@@ -114,29 +114,3 @@ def test_api_document_favorite_list_with_favorite_children():
|
||||
assert content[0]["id"] == str(children[0].id)
|
||||
assert content[1]["id"] == str(children[1].id)
|
||||
assert content[2]["id"] == str(access.document.id)
|
||||
|
||||
|
||||
def test_api_document_favorite_list_with_deleted_child():
|
||||
"""
|
||||
Authenticated users should not see deleted documents in their favorite list.
|
||||
"""
|
||||
user = factories.UserFactory()
|
||||
client = APIClient()
|
||||
client.force_login(user)
|
||||
|
||||
root = factories.DocumentFactory(creator=user, users=[user], favorited_by=[user])
|
||||
child1, child2 = factories.DocumentFactory.create_batch(
|
||||
2, parent=root, favorited_by=[user]
|
||||
)
|
||||
|
||||
child1.delete()
|
||||
|
||||
response = client.get("/api/v1.0/documents/favorite_list/")
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.json()["count"] == 2
|
||||
|
||||
content = response.json()["results"]
|
||||
|
||||
assert content[0]["id"] == str(root.id)
|
||||
assert content[1]["id"] == str(child2.id)
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-03-25 16:42+0000\n"
|
||||
"PO-Revision-Date: 2026-03-25 16:55\n"
|
||||
"POT-Creation-Date: 2026-03-12 13:31+0000\n"
|
||||
"PO-Revision-Date: 2026-03-13 16:53\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Breton\n"
|
||||
"Language: br_FR\n"
|
||||
@@ -46,40 +46,36 @@ msgstr "Gwezennadur"
|
||||
msgid "Title"
|
||||
msgstr "Titl"
|
||||
|
||||
#: build/lib/core/api/filters.py:51 core/api/filters.py:51
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
#: build/lib/core/api/filters.py:62 core/api/filters.py:62
|
||||
msgid "Creator is me"
|
||||
msgstr "Me eo an aozer"
|
||||
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
msgid "Masked"
|
||||
msgstr "Kuzhet"
|
||||
|
||||
#: build/lib/core/api/filters.py:71 core/api/filters.py:71
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
msgid "Favorite"
|
||||
msgstr "Sinedoù"
|
||||
|
||||
#: build/lib/core/api/serializers.py:535 core/api/serializers.py:535
|
||||
#: build/lib/core/api/serializers.py:526 core/api/serializers.py:526
|
||||
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:539 core/api/serializers.py:539
|
||||
#: build/lib/core/api/serializers.py:530 core/api/serializers.py:530
|
||||
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:575 core/api/serializers.py:575
|
||||
#: build/lib/core/api/serializers.py:566 core/api/serializers.py:566
|
||||
msgid "This field is required."
|
||||
msgstr "Ar vaezienn-mañ a zo rekis."
|
||||
|
||||
#: build/lib/core/api/serializers.py:586 core/api/serializers.py:586
|
||||
#: build/lib/core/api/serializers.py:577 core/api/serializers.py:577
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1315 core/api/viewsets.py:1315
|
||||
#: build/lib/core/api/viewsets.py:1298 core/api/viewsets.py:1298
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "eilenn {title}"
|
||||
@@ -251,98 +247,98 @@ msgstr "implijer"
|
||||
msgid "users"
|
||||
msgstr "implijerien"
|
||||
|
||||
#: build/lib/core/models.py:376 core/models.py:376
|
||||
#: build/lib/core/models.py:378 core/models.py:378
|
||||
msgid "Active email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:377 core/models.py:377
|
||||
#: build/lib/core/models.py:379 core/models.py:379
|
||||
msgid "Email address to deactivate"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:404 core/models.py:404
|
||||
#: build/lib/core/models.py:406 core/models.py:406
|
||||
msgid "Unique ID in the source file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:410 build/lib/core/models.py:708 core/models.py:410
|
||||
#: core/models.py:708
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:411 core/models.py:411
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 core/models.py:413
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:414 build/lib/core/models.py:712 core/models.py:414
|
||||
#: core/models.py:712
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 build/lib/core/models.py:711 core/models.py:413
|
||||
#: core/models.py:711
|
||||
#: build/lib/core/models.py:415 build/lib/core/models.py:713 core/models.py:415
|
||||
#: core/models.py:713
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:421 core/models.py:421
|
||||
#: build/lib/core/models.py:423 core/models.py:423
|
||||
msgid "user reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:422 core/models.py:422
|
||||
#: build/lib/core/models.py:424 core/models.py:424
|
||||
msgid "user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:660 core/models.py:660
|
||||
#: build/lib/core/models.py:662 core/models.py:662
|
||||
msgid "You have requested a reconciliation of your user accounts on Docs.\n"
|
||||
" To confirm that you are the one who initiated the request\n"
|
||||
" and that this email belongs to you:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:666 core/models.py:666
|
||||
#: build/lib/core/models.py:668 core/models.py:668
|
||||
msgid "Confirm by clicking the link to start the reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:671 build/lib/core/models.py:777 core/models.py:671
|
||||
#: core/models.py:777
|
||||
#: build/lib/core/models.py:673 build/lib/core/models.py:779 core/models.py:673
|
||||
#: core/models.py:779
|
||||
msgid "Click here"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:672 core/models.py:672
|
||||
#: build/lib/core/models.py:674 core/models.py:674
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:683 core/models.py:683
|
||||
#: build/lib/core/models.py:685 core/models.py:685
|
||||
msgid "Your reconciliation request has been processed.\n"
|
||||
" New documents are likely associated with your account:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:688 core/models.py:688
|
||||
#: build/lib/core/models.py:690 core/models.py:690
|
||||
msgid "Your accounts have been merged"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:693 core/models.py:693
|
||||
#: build/lib/core/models.py:695 core/models.py:695
|
||||
msgid "Click here to see"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:694 core/models.py:694
|
||||
#: build/lib/core/models.py:696 core/models.py:696
|
||||
msgid "See my documents"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:704 core/models.py:704
|
||||
#: build/lib/core/models.py:706 core/models.py:706
|
||||
msgid "CSV file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:709 core/models.py:709
|
||||
#: build/lib/core/models.py:711 core/models.py:711
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:719 core/models.py:719
|
||||
#: build/lib/core/models.py:721 core/models.py:721
|
||||
msgid "user reconciliation CSV import"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:720 core/models.py:720
|
||||
#: build/lib/core/models.py:722 core/models.py:722
|
||||
msgid "user reconciliation CSV imports"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:764 core/models.py:764
|
||||
#: build/lib/core/models.py:766 core/models.py:766
|
||||
#, python-brace-format
|
||||
msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" Reconciliation failed for the following email addresses:\n"
|
||||
@@ -351,175 +347,175 @@ msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" You can submit another request with the valid email addresses."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:772 core/models.py:772
|
||||
#: build/lib/core/models.py:774 core/models.py:774
|
||||
msgid "Reconciliation of your Docs accounts not completed"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:778 core/models.py:778
|
||||
#: build/lib/core/models.py:780 core/models.py:780
|
||||
msgid "Make a new request"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:877 core/models.py:877
|
||||
#: build/lib/core/models.py:879 core/models.py:879
|
||||
msgid "title"
|
||||
msgstr "titl"
|
||||
|
||||
#: build/lib/core/models.py:878 core/models.py:878
|
||||
#: build/lib/core/models.py:880 core/models.py:880
|
||||
msgid "excerpt"
|
||||
msgstr "bomm"
|
||||
|
||||
#: build/lib/core/models.py:927 core/models.py:927
|
||||
#: build/lib/core/models.py:929 core/models.py:929
|
||||
msgid "Document"
|
||||
msgstr "Restr"
|
||||
|
||||
#: build/lib/core/models.py:928 core/models.py:928
|
||||
#: build/lib/core/models.py:930 core/models.py:930
|
||||
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:942 build/lib/core/models.py:1346
|
||||
#: core/models.py:942 core/models.py:1346
|
||||
msgid "Untitled Document"
|
||||
msgstr "Restr hep titl"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1347 core/models.py:1347
|
||||
msgid "Open"
|
||||
msgstr "Digeriñ"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1382 core/models.py:1382
|
||||
#, 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:1386 core/models.py:1386
|
||||
#, 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:1392 core/models.py:1392
|
||||
#, 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:1493 core/models.py:1493
|
||||
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:1494 core/models.py:1494
|
||||
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:1500 core/models.py:1500
|
||||
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:1523 core/models.py:1523
|
||||
msgid "Document favorite"
|
||||
msgstr "Restr muiañ-karet"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorites"
|
||||
msgstr "Restroù muiañ-karet"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1530 core/models.py:1530
|
||||
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:1552 core/models.py:1552
|
||||
msgid "Document/user relation"
|
||||
msgstr "Liamm restr/implijer"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relations"
|
||||
msgstr "Liammoù restr/implijer"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1559 core/models.py:1559
|
||||
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:1565 core/models.py:1565
|
||||
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:1571 core/models.py:1571
|
||||
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:1722 core/models.py:1722
|
||||
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:1723 core/models.py:1723
|
||||
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:1729 core/models.py:1729
|
||||
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:1786 core/models.py:1786
|
||||
#, 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:1790 core/models.py:1790
|
||||
#, 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:1796 core/models.py:1796
|
||||
#, 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:1838 core/models.py:1838
|
||||
msgid "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
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:1842 build/lib/core/models.py:1894
|
||||
#: core/models.py:1842 core/models.py:1894
|
||||
msgid "Anonymous"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1939 core/models.py:1939
|
||||
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:1943 core/models.py:1943
|
||||
msgid "Reaction"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reactions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1954 core/models.py:1954
|
||||
msgid "email address"
|
||||
msgstr "postel"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
msgid "Document invitation"
|
||||
msgstr "Pedadenn d'ur restr"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitations"
|
||||
msgstr "Pedadennoù d'ur restr"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1994 core/models.py:1994
|
||||
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:702 impress/settings.py:702
|
||||
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-03-25 16:42+0000\n"
|
||||
"PO-Revision-Date: 2026-03-25 16:55\n"
|
||||
"POT-Creation-Date: 2026-03-12 13:31+0000\n"
|
||||
"PO-Revision-Date: 2026-03-13 16:53\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: German\n"
|
||||
"Language: de_DE\n"
|
||||
@@ -28,11 +28,11 @@ msgstr "Berechtigungen"
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
msgid "Important dates"
|
||||
msgstr "Wichtige Termine"
|
||||
msgstr "Wichtige Daten"
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
msgid "Import job created and queued."
|
||||
msgstr "Import-Job erstellt und in der Warteschlange."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
msgid "Process selected user reconciliations"
|
||||
@@ -46,40 +46,36 @@ msgstr "Baumstruktur"
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
|
||||
#: build/lib/core/api/filters.py:51 core/api/filters.py:51
|
||||
msgid "Search"
|
||||
msgstr "Suchen"
|
||||
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
#: build/lib/core/api/filters.py:62 core/api/filters.py:62
|
||||
msgid "Creator is me"
|
||||
msgstr "Ersteller bin ich"
|
||||
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
msgid "Masked"
|
||||
msgstr "Maskiert"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:71 core/api/filters.py:71
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
msgid "Favorite"
|
||||
msgstr "Favorit"
|
||||
|
||||
#: build/lib/core/api/serializers.py:535 core/api/serializers.py:535
|
||||
#: build/lib/core/api/serializers.py:526 core/api/serializers.py:526
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Ein neues Dokument wurde in Ihrem Namen erstellt!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:539 core/api/serializers.py:539
|
||||
#: build/lib/core/api/serializers.py:530 core/api/serializers.py:530
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "Sie sind Besitzer eines neuen Dokuments:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:575 core/api/serializers.py:575
|
||||
#: build/lib/core/api/serializers.py:566 core/api/serializers.py:566
|
||||
msgid "This field is required."
|
||||
msgstr "Dies ist ein Pflichtfeld."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:586 core/api/serializers.py:586
|
||||
#: build/lib/core/api/serializers.py:577 core/api/serializers.py:577
|
||||
#, 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."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1315 core/api/viewsets.py:1315
|
||||
#: build/lib/core/api/viewsets.py:1298 core/api/viewsets.py:1298
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "Kopie von {title}"
|
||||
@@ -96,7 +92,7 @@ msgstr "Lesen"
|
||||
#: build/lib/core/choices.py:36 build/lib/core/choices.py:44 core/choices.py:36
|
||||
#: core/choices.py:44
|
||||
msgid "Commenter"
|
||||
msgstr "Kommentieren"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/choices.py:37 build/lib/core/choices.py:45 core/choices.py:37
|
||||
#: core/choices.py:45
|
||||
@@ -177,11 +173,11 @@ msgstr "Wir konnten keinen Benutzer mit diesem Abo finden, aber die E-Mail-Adres
|
||||
|
||||
#: build/lib/core/models.py:141 core/models.py:141
|
||||
msgid "sub"
|
||||
msgstr "sub"
|
||||
msgstr "unter"
|
||||
|
||||
#: build/lib/core/models.py:142 core/models.py:142
|
||||
msgid "Required. 255 characters or fewer. ASCII characters only."
|
||||
msgstr "Pflichtfeld. 255 Zeichen oder weniger. Buchstaben (nur ASCII), Ziffern und die Zeichen @/-/_/."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:150 core/models.py:150
|
||||
msgid "full name"
|
||||
@@ -237,11 +233,11 @@ msgstr "Ob dieser Benutzer als aktiviert behandelt werden soll. Deaktivieren Sie
|
||||
|
||||
#: build/lib/core/models.py:197 core/models.py:197
|
||||
msgid "first connection status"
|
||||
msgstr "Status der ersten Verbindung"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:199 core/models.py:199
|
||||
msgid "Whether the user has completed the first connection process."
|
||||
msgstr "Gibt an, ob der Benutzer die Prozedur der ersten Verbindung abgeschlossen hat."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:209 core/models.py:209
|
||||
msgid "user"
|
||||
@@ -251,98 +247,98 @@ msgstr "Benutzer"
|
||||
msgid "users"
|
||||
msgstr "Benutzer"
|
||||
|
||||
#: build/lib/core/models.py:376 core/models.py:376
|
||||
#: build/lib/core/models.py:378 core/models.py:378
|
||||
msgid "Active email address"
|
||||
msgstr "Aktive E-Mail-Adresse"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:377 core/models.py:377
|
||||
#: build/lib/core/models.py:379 core/models.py:379
|
||||
msgid "Email address to deactivate"
|
||||
msgstr "Zu deaktivierende E-Mail-Adresse"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:404 core/models.py:404
|
||||
#: build/lib/core/models.py:406 core/models.py:406
|
||||
msgid "Unique ID in the source file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:410 build/lib/core/models.py:708 core/models.py:410
|
||||
#: core/models.py:708
|
||||
msgid "Pending"
|
||||
msgstr "Ausstehend"
|
||||
|
||||
#: build/lib/core/models.py:411 core/models.py:411
|
||||
msgid "Ready"
|
||||
msgstr "Bereit"
|
||||
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 core/models.py:413
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:414 build/lib/core/models.py:712 core/models.py:414
|
||||
#: core/models.py:712
|
||||
msgid "Done"
|
||||
msgstr "Fertig"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 build/lib/core/models.py:711 core/models.py:413
|
||||
#: core/models.py:711
|
||||
#: build/lib/core/models.py:415 build/lib/core/models.py:713 core/models.py:415
|
||||
#: core/models.py:713
|
||||
msgid "Error"
|
||||
msgstr "Fehler"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:421 core/models.py:421
|
||||
#: build/lib/core/models.py:423 core/models.py:423
|
||||
msgid "user reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:422 core/models.py:422
|
||||
#: build/lib/core/models.py:424 core/models.py:424
|
||||
msgid "user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:660 core/models.py:660
|
||||
#: build/lib/core/models.py:662 core/models.py:662
|
||||
msgid "You have requested a reconciliation of your user accounts on Docs.\n"
|
||||
" To confirm that you are the one who initiated the request\n"
|
||||
" and that this email belongs to you:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:666 core/models.py:666
|
||||
#: build/lib/core/models.py:668 core/models.py:668
|
||||
msgid "Confirm by clicking the link to start the reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:671 build/lib/core/models.py:777 core/models.py:671
|
||||
#: core/models.py:777
|
||||
#: build/lib/core/models.py:673 build/lib/core/models.py:779 core/models.py:673
|
||||
#: core/models.py:779
|
||||
msgid "Click here"
|
||||
msgstr "Klicken Sie hier"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:672 core/models.py:672
|
||||
#: build/lib/core/models.py:674 core/models.py:674
|
||||
msgid "Confirm"
|
||||
msgstr "Bestätigen Sie"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:683 core/models.py:683
|
||||
#: build/lib/core/models.py:685 core/models.py:685
|
||||
msgid "Your reconciliation request has been processed.\n"
|
||||
" New documents are likely associated with your account:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:688 core/models.py:688
|
||||
#: build/lib/core/models.py:690 core/models.py:690
|
||||
msgid "Your accounts have been merged"
|
||||
msgstr "Ihre Konten wurden zusammengelegt"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:693 core/models.py:693
|
||||
#: build/lib/core/models.py:695 core/models.py:695
|
||||
msgid "Click here to see"
|
||||
msgstr "Klicken Sie hier um zu sehen"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:694 core/models.py:694
|
||||
#: build/lib/core/models.py:696 core/models.py:696
|
||||
msgid "See my documents"
|
||||
msgstr "Meine Dokumente einsehen"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:704 core/models.py:704
|
||||
#: build/lib/core/models.py:706 core/models.py:706
|
||||
msgid "CSV file"
|
||||
msgstr "CSV-Datei"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:709 core/models.py:709
|
||||
#: build/lib/core/models.py:711 core/models.py:711
|
||||
msgid "Running"
|
||||
msgstr "Wird ausgeführt"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:719 core/models.py:719
|
||||
#: build/lib/core/models.py:721 core/models.py:721
|
||||
msgid "user reconciliation CSV import"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:720 core/models.py:720
|
||||
#: build/lib/core/models.py:722 core/models.py:722
|
||||
msgid "user reconciliation CSV imports"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:764 core/models.py:764
|
||||
#: build/lib/core/models.py:766 core/models.py:766
|
||||
#, python-brace-format
|
||||
msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" Reconciliation failed for the following email addresses:\n"
|
||||
@@ -351,177 +347,177 @@ msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" You can submit another request with the valid email addresses."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:772 core/models.py:772
|
||||
#: build/lib/core/models.py:774 core/models.py:774
|
||||
msgid "Reconciliation of your Docs accounts not completed"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:778 core/models.py:778
|
||||
#: build/lib/core/models.py:780 core/models.py:780
|
||||
msgid "Make a new request"
|
||||
msgstr "Neue Anfrage erstellen"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:877 core/models.py:877
|
||||
#: build/lib/core/models.py:879 core/models.py:879
|
||||
msgid "title"
|
||||
msgstr "Titel"
|
||||
|
||||
#: build/lib/core/models.py:878 core/models.py:878
|
||||
#: build/lib/core/models.py:880 core/models.py:880
|
||||
msgid "excerpt"
|
||||
msgstr "Auszug"
|
||||
|
||||
#: build/lib/core/models.py:927 core/models.py:927
|
||||
#: build/lib/core/models.py:929 core/models.py:929
|
||||
msgid "Document"
|
||||
msgstr "Dokument"
|
||||
|
||||
#: build/lib/core/models.py:928 core/models.py:928
|
||||
#: build/lib/core/models.py:930 core/models.py:930
|
||||
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:942 build/lib/core/models.py:1346
|
||||
#: core/models.py:942 core/models.py:1346
|
||||
msgid "Untitled Document"
|
||||
msgstr "Unbenanntes Dokument"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1347 core/models.py:1347
|
||||
msgid "Open"
|
||||
msgstr "Öffnen"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1382 core/models.py:1382
|
||||
#, 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:1386 core/models.py:1386
|
||||
#, 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:1392 core/models.py:1392
|
||||
#, 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:1493 core/models.py:1493
|
||||
msgid "Document/user link trace"
|
||||
msgstr "Dokument/Benutzer Linkverfolgung"
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link traces"
|
||||
msgstr "Dokument/Benutzer Linkverfolgung"
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1500 core/models.py:1500
|
||||
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:1523 core/models.py:1523
|
||||
msgid "Document favorite"
|
||||
msgstr "Dokumentenfavorit"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorites"
|
||||
msgstr "Dokumentfavoriten"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1530 core/models.py:1530
|
||||
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:1552 core/models.py:1552
|
||||
msgid "Document/user relation"
|
||||
msgstr "Dokument/Benutzerbeziehung"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relations"
|
||||
msgstr "Dokument/Benutzerbeziehungen"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1559 core/models.py:1559
|
||||
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:1565 core/models.py:1565
|
||||
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:1571 core/models.py:1571
|
||||
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
|
||||
msgid "Document ask for access"
|
||||
msgstr "Dokument um Zugriff bitten"
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
msgid "Document ask for access"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for accesses"
|
||||
msgstr "Dokumentenabfragen"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1729 core/models.py:1729
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr "Dieser Benutzer hat bereits um Zugang zu diesem Dokument gebeten."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#: build/lib/core/models.py:1786 core/models.py:1786
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr "{name} möchte Zugriff auf ein Dokument erhalten!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#: build/lib/core/models.py:1790 core/models.py:1790
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr "{name} möchte auf das folgende Dokument zugreifen:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#: build/lib/core/models.py:1796 core/models.py:1796
|
||||
#, 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
|
||||
msgid "Thread"
|
||||
msgstr "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
msgid "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Threads"
|
||||
msgstr "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:1842 build/lib/core/models.py:1894
|
||||
#: core/models.py:1842 core/models.py:1894
|
||||
msgid "Anonymous"
|
||||
msgstr "Gast"
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
msgid "Comments"
|
||||
msgstr "Kommentare"
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1939 core/models.py:1939
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
msgid "Reaction"
|
||||
msgstr "Reaktion"
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
msgid "Reactions"
|
||||
msgstr "Reaktionen"
|
||||
msgid "Reaction"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reactions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1954 core/models.py:1954
|
||||
msgid "email address"
|
||||
msgstr "E-Mail-Adresse"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
msgid "Document invitation"
|
||||
msgstr "Einladung zum Dokument"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitations"
|
||||
msgstr "Dokumenteinladungen"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1994 core/models.py:1994
|
||||
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:702 impress/settings.py:702
|
||||
msgid "Docs AI"
|
||||
msgstr "Docs AI"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/template.html:153
|
||||
#: core/templates/mail/text/template.txt:3
|
||||
|
||||
@@ -1,548 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-03-25 16:42+0000\n"
|
||||
"PO-Revision-Date: 2026-03-25 16:55\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Greek\n"
|
||||
"Language: el_GR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: lasuite-docs\n"
|
||||
"X-Crowdin-Project-ID: 754523\n"
|
||||
"X-Crowdin-Language: el\n"
|
||||
"X-Crowdin-File: backend-impress.pot\n"
|
||||
"X-Crowdin-File-ID: 18\n"
|
||||
|
||||
#: build/lib/core/admin.py:30 core/admin.py:30
|
||||
msgid "Personal info"
|
||||
msgstr "Προσωπικές πληροφορίες"
|
||||
|
||||
#: build/lib/core/admin.py:43 build/lib/core/admin.py:161 core/admin.py:43
|
||||
#: core/admin.py:161
|
||||
msgid "Permissions"
|
||||
msgstr "Δικαιώματα"
|
||||
|
||||
#: build/lib/core/admin.py:55 core/admin.py:55
|
||||
msgid "Important dates"
|
||||
msgstr "Σημαντικές ημερομηνίες"
|
||||
|
||||
#: build/lib/core/admin.py:112 core/admin.py:112
|
||||
msgid "Import job created and queued."
|
||||
msgstr "Η εργασία εισαγωγής δημιουργήθηκε και μπήκε στην ουρά."
|
||||
|
||||
#: build/lib/core/admin.py:116 core/admin.py:116
|
||||
msgid "Process selected user reconciliations"
|
||||
msgstr "Επεξεργασία επιλεγμένων συμφωνιών χρηστών"
|
||||
|
||||
#: build/lib/core/admin.py:171 core/admin.py:171
|
||||
msgid "Tree structure"
|
||||
msgstr "Δομή δέντρου"
|
||||
|
||||
#: build/lib/core/api/filters.py:48 core/api/filters.py:48
|
||||
msgid "Title"
|
||||
msgstr "Τίτλος"
|
||||
|
||||
#: build/lib/core/api/filters.py:51 core/api/filters.py:51
|
||||
msgid "Search"
|
||||
msgstr "Αναζήτηση"
|
||||
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
msgid "Creator is me"
|
||||
msgstr "Δημιουργός είμαι εγώ"
|
||||
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
msgid "Masked"
|
||||
msgstr "Με κάλυψη"
|
||||
|
||||
#: build/lib/core/api/filters.py:71 core/api/filters.py:71
|
||||
msgid "Favorite"
|
||||
msgstr "Αγαπημένο"
|
||||
|
||||
#: build/lib/core/api/serializers.py:535 core/api/serializers.py:535
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Ένα νέο έγγραφο δημιουργήθηκε εκ μέρους σας!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:539 core/api/serializers.py:539
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "Σας παραχωρήθηκε η ιδιοκτησία ενός νέου εγγράφου:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:575 core/api/serializers.py:575
|
||||
msgid "This field is required."
|
||||
msgstr "Αυτό το πεδίο είναι υποχρεωτικό."
|
||||
|
||||
#: build/lib/core/api/serializers.py:586 core/api/serializers.py:586
|
||||
#, 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:1315 core/api/viewsets.py:1315
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "αντίγραφο του {title}"
|
||||
|
||||
#: build/lib/core/apps.py:12 core/apps.py:12
|
||||
msgid "Impress core application"
|
||||
msgstr "Κεντρική εφαρμογή Impress"
|
||||
|
||||
#: build/lib/core/choices.py:35 build/lib/core/choices.py:43 core/choices.py:35
|
||||
#: core/choices.py:43
|
||||
msgid "Reader"
|
||||
msgstr "Αναγνώστης"
|
||||
|
||||
#: build/lib/core/choices.py:36 build/lib/core/choices.py:44 core/choices.py:36
|
||||
#: core/choices.py:44
|
||||
msgid "Commenter"
|
||||
msgstr "Σχολιαστής"
|
||||
|
||||
#: build/lib/core/choices.py:37 build/lib/core/choices.py:45 core/choices.py:37
|
||||
#: core/choices.py:45
|
||||
msgid "Editor"
|
||||
msgstr "Συντάκτης"
|
||||
|
||||
#: build/lib/core/choices.py:46 core/choices.py:46
|
||||
msgid "Administrator"
|
||||
msgstr "Διαχειριστής"
|
||||
|
||||
#: build/lib/core/choices.py:47 core/choices.py:47
|
||||
msgid "Owner"
|
||||
msgstr "Ιδιοκτήτης"
|
||||
|
||||
#: build/lib/core/choices.py:58 core/choices.py:58
|
||||
msgid "Restricted"
|
||||
msgstr "Περιορισμένο"
|
||||
|
||||
#: build/lib/core/choices.py:62 core/choices.py:62
|
||||
msgid "Authenticated"
|
||||
msgstr "Πιστοποιημένο"
|
||||
|
||||
#: build/lib/core/choices.py:64 core/choices.py:64
|
||||
msgid "Public"
|
||||
msgstr "Δημόσιο"
|
||||
|
||||
#: build/lib/core/enums.py:36 core/enums.py:36
|
||||
msgid "First child"
|
||||
msgstr "Πρώτο θυγατρικό"
|
||||
|
||||
#: build/lib/core/enums.py:37 core/enums.py:37
|
||||
msgid "Last child"
|
||||
msgstr "Τελευταίο θυγατρικό"
|
||||
|
||||
#: build/lib/core/enums.py:38 core/enums.py:38
|
||||
msgid "First sibling"
|
||||
msgstr "Πρώτο αδελφό"
|
||||
|
||||
#: build/lib/core/enums.py:39 core/enums.py:39
|
||||
msgid "Last sibling"
|
||||
msgstr "Τελευταίο αδελφό"
|
||||
|
||||
#: build/lib/core/enums.py:40 core/enums.py:40
|
||||
msgid "Left"
|
||||
msgstr "Αριστερά"
|
||||
|
||||
#: build/lib/core/enums.py:41 core/enums.py:41
|
||||
msgid "Right"
|
||||
msgstr "Δεξιά"
|
||||
|
||||
#: build/lib/core/models.py:80 core/models.py:80
|
||||
msgid "id"
|
||||
msgstr "αναγνωριστικό"
|
||||
|
||||
#: build/lib/core/models.py:81 core/models.py:81
|
||||
msgid "primary key for the record as UUID"
|
||||
msgstr "πρωτεύον κλειδί για την εγγραφή ως UUID"
|
||||
|
||||
#: build/lib/core/models.py:87 core/models.py:87
|
||||
msgid "created on"
|
||||
msgstr "δημιουργήθηκε στις"
|
||||
|
||||
#: build/lib/core/models.py:88 core/models.py:88
|
||||
msgid "date and time at which a record was created"
|
||||
msgstr "ημερομηνία και ώρα δημιουργίας μιας εγγραφής"
|
||||
|
||||
#: build/lib/core/models.py:93 core/models.py:93
|
||||
msgid "updated on"
|
||||
msgstr "ενημερώθηκε στις"
|
||||
|
||||
#: build/lib/core/models.py:94 core/models.py:94
|
||||
msgid "date and time at which a record was last updated"
|
||||
msgstr "ημερομηνία και ώρα τελευταίας ενημέρωσης μιας εγγραφής"
|
||||
|
||||
#: build/lib/core/models.py:130 core/models.py:130
|
||||
msgid "We couldn't find a user with this sub but the email is already associated with a registered user."
|
||||
msgstr "Δεν μπορέσαμε να βρούμε χρήστη με αυτό το sub, αλλά το email σχετίζεται ήδη με έναν εγγεγραμμένο χρήστη."
|
||||
|
||||
#: build/lib/core/models.py:141 core/models.py:141
|
||||
msgid "sub"
|
||||
msgstr "sub (αναγνωριστικό υποκειμένου)"
|
||||
|
||||
#: build/lib/core/models.py:142 core/models.py:142
|
||||
msgid "Required. 255 characters or fewer. ASCII characters only."
|
||||
msgstr "Υποχρεωτικό. 255 χαρακτήρες ή λιγότεροι. Μόνο χαρακτήρες ASCII."
|
||||
|
||||
#: build/lib/core/models.py:150 core/models.py:150
|
||||
msgid "full name"
|
||||
msgstr "πλήρες όνομα"
|
||||
|
||||
#: build/lib/core/models.py:152 core/models.py:152
|
||||
msgid "short name"
|
||||
msgstr "σύντομο όνομα"
|
||||
|
||||
#: build/lib/core/models.py:155 core/models.py:155
|
||||
msgid "identity email address"
|
||||
msgstr "διεύθυνση email ταυτότητας"
|
||||
|
||||
#: build/lib/core/models.py:160 core/models.py:160
|
||||
msgid "admin email address"
|
||||
msgstr "διεύθυνση email διαχειριστή"
|
||||
|
||||
#: build/lib/core/models.py:167 core/models.py:167
|
||||
msgid "language"
|
||||
msgstr "γλώσσα"
|
||||
|
||||
#: build/lib/core/models.py:168 core/models.py:168
|
||||
msgid "The language in which the user wants to see the interface."
|
||||
msgstr "Η γλώσσα στην οποία ο χρήστης θέλει να δει τη διεπαφή."
|
||||
|
||||
#: build/lib/core/models.py:176 core/models.py:176
|
||||
msgid "The timezone in which the user wants to see times."
|
||||
msgstr "Η ζώνη ώρας στην οποία ο χρήστης θέλει να βλέπει την ώρα."
|
||||
|
||||
#: build/lib/core/models.py:179 core/models.py:179
|
||||
msgid "device"
|
||||
msgstr "συσκευή"
|
||||
|
||||
#: build/lib/core/models.py:181 core/models.py:181
|
||||
msgid "Whether the user is a device or a real user."
|
||||
msgstr "Εάν ο χρήστης είναι μια συσκευή ή πραγματικός χρήστης."
|
||||
|
||||
#: build/lib/core/models.py:184 core/models.py:184
|
||||
msgid "staff status"
|
||||
msgstr "κατάσταση προσωπικού"
|
||||
|
||||
#: build/lib/core/models.py:186 core/models.py:186
|
||||
msgid "Whether the user can log into this admin site."
|
||||
msgstr "Εάν ο χρήστης μπορεί να συνδεθεί σε αυτόν τον ιστότοπο διαχείρισης."
|
||||
|
||||
#: build/lib/core/models.py:189 core/models.py:189
|
||||
msgid "active"
|
||||
msgstr "ενεργός"
|
||||
|
||||
#: build/lib/core/models.py:192 core/models.py:192
|
||||
msgid "Whether this user should be treated as active. Unselect this instead of deleting accounts."
|
||||
msgstr "Εάν αυτός ο χρήστης πρέπει να θεωρείται ενεργός. Αποεπιλέξτε το αντί να διαγράψετε λογαριασμούς."
|
||||
|
||||
#: build/lib/core/models.py:197 core/models.py:197
|
||||
msgid "first connection status"
|
||||
msgstr "πρώτη κατάσταση σύνδεσης"
|
||||
|
||||
#: build/lib/core/models.py:199 core/models.py:199
|
||||
msgid "Whether the user has completed the first connection process."
|
||||
msgstr "Εάν ο χρήστης έχει ολοκληρώσει τη διαδικασία της πρώτης σύνδεσης."
|
||||
|
||||
#: build/lib/core/models.py:209 core/models.py:209
|
||||
msgid "user"
|
||||
msgstr "χρήστης"
|
||||
|
||||
#: build/lib/core/models.py:210 core/models.py:210
|
||||
msgid "users"
|
||||
msgstr "χρήστες"
|
||||
|
||||
#: build/lib/core/models.py:376 core/models.py:376
|
||||
msgid "Active email address"
|
||||
msgstr "Ενεργή διεύθυνση email"
|
||||
|
||||
#: build/lib/core/models.py:377 core/models.py:377
|
||||
msgid "Email address to deactivate"
|
||||
msgstr "Διεύθυνση email για απενεργοποίηση"
|
||||
|
||||
#: build/lib/core/models.py:404 core/models.py:404
|
||||
msgid "Unique ID in the source file"
|
||||
msgstr "Μοναδικό αναγνωριστικό στο πηγαίο αρχείο"
|
||||
|
||||
#: build/lib/core/models.py:410 build/lib/core/models.py:708 core/models.py:410
|
||||
#: core/models.py:708
|
||||
msgid "Pending"
|
||||
msgstr "Σε εκκρεμότητα"
|
||||
|
||||
#: build/lib/core/models.py:411 core/models.py:411
|
||||
msgid "Ready"
|
||||
msgstr "Έτοιμο"
|
||||
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
msgid "Done"
|
||||
msgstr "Ολοκληρώθηκε"
|
||||
|
||||
#: build/lib/core/models.py:413 build/lib/core/models.py:711 core/models.py:413
|
||||
#: core/models.py:711
|
||||
msgid "Error"
|
||||
msgstr "Σφάλμα"
|
||||
|
||||
#: build/lib/core/models.py:421 core/models.py:421
|
||||
msgid "user reconciliation"
|
||||
msgstr "συμφωνία χρήστη"
|
||||
|
||||
#: build/lib/core/models.py:422 core/models.py:422
|
||||
msgid "user reconciliations"
|
||||
msgstr "συμφωνία χρηστών"
|
||||
|
||||
#: build/lib/core/models.py:660 core/models.py:660
|
||||
msgid "You have requested a reconciliation of your user accounts on Docs.\n"
|
||||
" To confirm that you are the one who initiated the request\n"
|
||||
" and that this email belongs to you:"
|
||||
msgstr "Έχετε ζητήσει έναν συνδυασμό των λογαριασμών χρήστη σας στα Έγγραφα.\n"
|
||||
" Για να επιβεβαιώσετε ότι είστε εκείνος που ξεκίνησε το αίτημα\n"
|
||||
" και ότι αυτό το email ανήκει σε σας:"
|
||||
|
||||
#: build/lib/core/models.py:666 core/models.py:666
|
||||
msgid "Confirm by clicking the link to start the reconciliation"
|
||||
msgstr "Επιβεβαιώστε κάνοντας κλικ στο σύνδεσμο για να ξεκινήσει η συμφωνία"
|
||||
|
||||
#: build/lib/core/models.py:671 build/lib/core/models.py:777 core/models.py:671
|
||||
#: core/models.py:777
|
||||
msgid "Click here"
|
||||
msgstr "Κάντε κλικ εδώ"
|
||||
|
||||
#: build/lib/core/models.py:672 core/models.py:672
|
||||
msgid "Confirm"
|
||||
msgstr "Επιβεβαίωση"
|
||||
|
||||
#: build/lib/core/models.py:683 core/models.py:683
|
||||
msgid "Your reconciliation request has been processed.\n"
|
||||
" New documents are likely associated with your account:"
|
||||
msgstr "Το αίτημά σας για συμφωνία έχει επεξεργαστεί.\n"
|
||||
" Νέα έγγραφα είναι πιθανό να σχετίζονται με τον λογαριασμό σας:"
|
||||
|
||||
#: build/lib/core/models.py:688 core/models.py:688
|
||||
msgid "Your accounts have been merged"
|
||||
msgstr "Οι λογαριασμοί σας έχουν συγχωνευθεί"
|
||||
|
||||
#: build/lib/core/models.py:693 core/models.py:693
|
||||
msgid "Click here to see"
|
||||
msgstr "Κάντε κλικ εδώ για να δείτε"
|
||||
|
||||
#: build/lib/core/models.py:694 core/models.py:694
|
||||
msgid "See my documents"
|
||||
msgstr "Δείτε τα έγγραφά μου"
|
||||
|
||||
#: build/lib/core/models.py:704 core/models.py:704
|
||||
msgid "CSV file"
|
||||
msgstr "Αρχείο CSV"
|
||||
|
||||
#: build/lib/core/models.py:709 core/models.py:709
|
||||
msgid "Running"
|
||||
msgstr "Εκτελείται"
|
||||
|
||||
#: build/lib/core/models.py:719 core/models.py:719
|
||||
msgid "user reconciliation CSV import"
|
||||
msgstr "εισαγωγή CSV συμφωνίας χρηστών"
|
||||
|
||||
#: build/lib/core/models.py:720 core/models.py:720
|
||||
msgid "user reconciliation CSV imports"
|
||||
msgstr "εισαγωγές CSV συμφωνίας χρηστών"
|
||||
|
||||
#: build/lib/core/models.py:764 core/models.py:764
|
||||
#, python-brace-format
|
||||
msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" Reconciliation failed for the following email addresses:\n"
|
||||
" {recipient_email}, {other_email}.\n"
|
||||
" Please check for typos.\n"
|
||||
" You can submit another request with the valid email addresses."
|
||||
msgstr "Το αίτημά σας για επαλήθευση δεν ολοκληρώθηκε με επιτυχία.\n"
|
||||
" Η επαλήθευση απέτυχε για τις ακόλουθες διευθύνσεις email:\n"
|
||||
" {recipient_email}, {other_email}.\n"
|
||||
" Παρακαλούμε ελέγξτε αν υπάρχουν τυπογραφικά λάθη.\n"
|
||||
" Μπορείτε να υποβάλετε ένα νέο αίτημα με τις σωστές διευθύνσεις email."
|
||||
|
||||
#: build/lib/core/models.py:772 core/models.py:772
|
||||
msgid "Reconciliation of your Docs accounts not completed"
|
||||
msgstr "Η συμφωνία των λογαριασμών σας Docs δεν ολοκληρώθηκε"
|
||||
|
||||
#: build/lib/core/models.py:778 core/models.py:778
|
||||
msgid "Make a new request"
|
||||
msgstr "Κάντε ένα νέο αίτημα"
|
||||
|
||||
#: build/lib/core/models.py:877 core/models.py:877
|
||||
msgid "title"
|
||||
msgstr "τίτλος"
|
||||
|
||||
#: build/lib/core/models.py:878 core/models.py:878
|
||||
msgid "excerpt"
|
||||
msgstr "απόσπασμα"
|
||||
|
||||
#: build/lib/core/models.py:927 core/models.py:927
|
||||
msgid "Document"
|
||||
msgstr "Έγγραφο"
|
||||
|
||||
#: build/lib/core/models.py:928 core/models.py:928
|
||||
msgid "Documents"
|
||||
msgstr "Έγγραφα"
|
||||
|
||||
#: build/lib/core/models.py:940 build/lib/core/models.py:1345
|
||||
#: core/models.py:940 core/models.py:1345
|
||||
msgid "Untitled Document"
|
||||
msgstr "Έγγραφο χωρίς τίτλο"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
msgid "Open"
|
||||
msgstr "Άνοιγμα"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you!"
|
||||
msgstr "Ο/Η {name} μοιράστηκε ένα έγγραφο μαζί σας!"
|
||||
|
||||
#: build/lib/core/models.py:1385 core/models.py:1385
|
||||
#, 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
|
||||
#, python-brace-format
|
||||
msgid "{name} shared a document with you: {title}"
|
||||
msgstr "Ο/Η {name} μοιράστηκε ένα έγγραφο μαζί σας: {title}"
|
||||
|
||||
#: build/lib/core/models.py:1492 core/models.py:1492
|
||||
msgid "Document/user link trace"
|
||||
msgstr "Ίχνος συνδέσμου εγγράφου/χρήστη"
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
msgid "Document/user link traces"
|
||||
msgstr "Ίχνη συνδέσμου εγγράφου/χρήστη"
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
msgid "A link trace already exists for this document/user."
|
||||
msgstr "Ένα ίχνος συνδέσμου υπάρχει ήδη για αυτό το έγγραφο/χρήστη."
|
||||
|
||||
#: build/lib/core/models.py:1522 core/models.py:1522
|
||||
msgid "Document favorite"
|
||||
msgstr "Αγαπημένο έγγραφο"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
msgid "Document favorites"
|
||||
msgstr "Αγαπημένα έγγραφα"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
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
|
||||
msgid "Document/user relation"
|
||||
msgstr "Σχέση εγγράφου/χρήστη"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
msgid "Document/user relations"
|
||||
msgstr "Σχέσεις εγγράφου/χρήστη"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
msgid "This user is already in this document."
|
||||
msgstr "Αυτός ο χρήστης συμμετέχει ήδη σε αυτό το έγγραφο."
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
msgid "This team is already in this document."
|
||||
msgstr "Αυτή η ομάδα συμμετέχει ήδη σε αυτό το έγγραφο."
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
msgid "Either user or team must be set, not both."
|
||||
msgstr "Πρέπει να οριστεί είτε χρήστης είτε ομάδα, όχι και τα δύο."
|
||||
|
||||
#: build/lib/core/models.py:1721 core/models.py:1721
|
||||
msgid "Document ask for access"
|
||||
msgstr "Αίτημα πρόσβασης σε έγγραφο"
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
msgid "Document ask for accesses"
|
||||
msgstr "Αιτήματα πρόσβασης σε έγγραφα"
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
msgid "This user has already asked for access to this document."
|
||||
msgstr "Αυτός ο χρήστης έχει ήδη ζητήσει πρόσβαση σε αυτό το έγγραφο."
|
||||
|
||||
#: build/lib/core/models.py:1785 core/models.py:1785
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to a document!"
|
||||
msgstr "Ο/Η {name} θα ήθελε πρόσβαση σε ένα έγγραφο!"
|
||||
|
||||
#: build/lib/core/models.py:1789 core/models.py:1789
|
||||
#, python-brace-format
|
||||
msgid "{name} would like access to the following document:"
|
||||
msgstr "Ο/Η {name} θα ήθελε πρόσβαση στο ακόλουθο έγγραφο:"
|
||||
|
||||
#: build/lib/core/models.py:1795 core/models.py:1795
|
||||
#, 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
|
||||
msgid "Thread"
|
||||
msgstr "Νήμα"
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
msgid "Threads"
|
||||
msgstr "Νήματα"
|
||||
|
||||
#: build/lib/core/models.py:1841 build/lib/core/models.py:1893
|
||||
#: core/models.py:1841 core/models.py:1893
|
||||
msgid "Anonymous"
|
||||
msgstr "Ανώνυμος"
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
msgid "Comment"
|
||||
msgstr "Σχόλιο"
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
msgid "Comments"
|
||||
msgstr "Σχόλια"
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr "Αυτό το emoji έχει χρησιμοποιηθεί ήδη ως αντίδραση σε αυτό το σχόλιο."
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
msgid "Reaction"
|
||||
msgstr "Αντίδραση"
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
msgid "Reactions"
|
||||
msgstr "Αντιδράσεις"
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
msgid "email address"
|
||||
msgstr "διεύθυνση email"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
msgid "Document invitation"
|
||||
msgstr "Πρόσκληση σε έγγραφο"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
msgid "Document invitations"
|
||||
msgstr "Προσκλήσεις εγγράφου"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
msgid "This email is already associated to a registered user."
|
||||
msgstr "Αυτό το email σχετίζεται ήδη με έναν εγγεγραμμένο χρήστη."
|
||||
|
||||
#: build/lib/impress/settings.py:808 impress/settings.py:808
|
||||
msgid "Docs AI"
|
||||
msgstr "Τεχνητή Νοημοσύνη (AI) Docs"
|
||||
|
||||
#: core/templates/mail/html/template.html:153
|
||||
#: core/templates/mail/text/template.txt:3
|
||||
msgid "Logo email"
|
||||
msgstr "Λογότυπο email"
|
||||
|
||||
#: core/templates/mail/html/template.html:219
|
||||
#: core/templates/mail/text/template.txt:14
|
||||
msgid " Docs, your new essential tool for organizing, sharing and collaborating on your documents as a team. "
|
||||
msgstr " Docs, το νέο απαραίτητο εργαλείο σας για την οργάνωση, τον διαμοιρασμό και τη συνεργασία στα έγγραφά σας ως ομάδα. "
|
||||
|
||||
#: core/templates/mail/html/template.html:226
|
||||
#: core/templates/mail/text/template.txt:16
|
||||
#, python-format
|
||||
msgid " Brought to you by %(brandname)s "
|
||||
msgstr " Σας προσφέρεται από την %(brandname)s "
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-03-25 16:42+0000\n"
|
||||
"PO-Revision-Date: 2026-03-25 16:55\n"
|
||||
"POT-Creation-Date: 2026-03-12 13:31+0000\n"
|
||||
"PO-Revision-Date: 2026-03-13 16:53\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: English\n"
|
||||
"Language: en_US\n"
|
||||
@@ -46,40 +46,36 @@ msgstr ""
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:51 core/api/filters.py:51
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
#: build/lib/core/api/filters.py:62 core/api/filters.py:62
|
||||
msgid "Creator is me"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
msgid "Masked"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:71 core/api/filters.py:71
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
msgid "Favorite"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:535 core/api/serializers.py:535
|
||||
#: build/lib/core/api/serializers.py:526 core/api/serializers.py:526
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:539 core/api/serializers.py:539
|
||||
#: build/lib/core/api/serializers.py:530 core/api/serializers.py:530
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:575 core/api/serializers.py:575
|
||||
#: build/lib/core/api/serializers.py:566 core/api/serializers.py:566
|
||||
msgid "This field is required."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:586 core/api/serializers.py:586
|
||||
#: build/lib/core/api/serializers.py:577 core/api/serializers.py:577
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1315 core/api/viewsets.py:1315
|
||||
#: build/lib/core/api/viewsets.py:1298 core/api/viewsets.py:1298
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr ""
|
||||
@@ -251,98 +247,98 @@ msgstr ""
|
||||
msgid "users"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:376 core/models.py:376
|
||||
#: build/lib/core/models.py:378 core/models.py:378
|
||||
msgid "Active email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:377 core/models.py:377
|
||||
#: build/lib/core/models.py:379 core/models.py:379
|
||||
msgid "Email address to deactivate"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:404 core/models.py:404
|
||||
#: build/lib/core/models.py:406 core/models.py:406
|
||||
msgid "Unique ID in the source file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:410 build/lib/core/models.py:708 core/models.py:410
|
||||
#: core/models.py:708
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:411 core/models.py:411
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 core/models.py:413
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:414 build/lib/core/models.py:712 core/models.py:414
|
||||
#: core/models.py:712
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 build/lib/core/models.py:711 core/models.py:413
|
||||
#: core/models.py:711
|
||||
#: build/lib/core/models.py:415 build/lib/core/models.py:713 core/models.py:415
|
||||
#: core/models.py:713
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:421 core/models.py:421
|
||||
#: build/lib/core/models.py:423 core/models.py:423
|
||||
msgid "user reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:422 core/models.py:422
|
||||
#: build/lib/core/models.py:424 core/models.py:424
|
||||
msgid "user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:660 core/models.py:660
|
||||
#: build/lib/core/models.py:662 core/models.py:662
|
||||
msgid "You have requested a reconciliation of your user accounts on Docs.\n"
|
||||
" To confirm that you are the one who initiated the request\n"
|
||||
" and that this email belongs to you:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:666 core/models.py:666
|
||||
#: build/lib/core/models.py:668 core/models.py:668
|
||||
msgid "Confirm by clicking the link to start the reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:671 build/lib/core/models.py:777 core/models.py:671
|
||||
#: core/models.py:777
|
||||
#: build/lib/core/models.py:673 build/lib/core/models.py:779 core/models.py:673
|
||||
#: core/models.py:779
|
||||
msgid "Click here"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:672 core/models.py:672
|
||||
#: build/lib/core/models.py:674 core/models.py:674
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:683 core/models.py:683
|
||||
#: build/lib/core/models.py:685 core/models.py:685
|
||||
msgid "Your reconciliation request has been processed.\n"
|
||||
" New documents are likely associated with your account:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:688 core/models.py:688
|
||||
#: build/lib/core/models.py:690 core/models.py:690
|
||||
msgid "Your accounts have been merged"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:693 core/models.py:693
|
||||
#: build/lib/core/models.py:695 core/models.py:695
|
||||
msgid "Click here to see"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:694 core/models.py:694
|
||||
#: build/lib/core/models.py:696 core/models.py:696
|
||||
msgid "See my documents"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:704 core/models.py:704
|
||||
#: build/lib/core/models.py:706 core/models.py:706
|
||||
msgid "CSV file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:709 core/models.py:709
|
||||
#: build/lib/core/models.py:711 core/models.py:711
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:719 core/models.py:719
|
||||
#: build/lib/core/models.py:721 core/models.py:721
|
||||
msgid "user reconciliation CSV import"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:720 core/models.py:720
|
||||
#: build/lib/core/models.py:722 core/models.py:722
|
||||
msgid "user reconciliation CSV imports"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:764 core/models.py:764
|
||||
#: build/lib/core/models.py:766 core/models.py:766
|
||||
#, python-brace-format
|
||||
msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" Reconciliation failed for the following email addresses:\n"
|
||||
@@ -351,175 +347,175 @@ msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" You can submit another request with the valid email addresses."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:772 core/models.py:772
|
||||
#: build/lib/core/models.py:774 core/models.py:774
|
||||
msgid "Reconciliation of your Docs accounts not completed"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:778 core/models.py:778
|
||||
#: build/lib/core/models.py:780 core/models.py:780
|
||||
msgid "Make a new request"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:877 core/models.py:877
|
||||
#: build/lib/core/models.py:879 core/models.py:879
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:878 core/models.py:878
|
||||
#: build/lib/core/models.py:880 core/models.py:880
|
||||
msgid "excerpt"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:927 core/models.py:927
|
||||
#: build/lib/core/models.py:929 core/models.py:929
|
||||
msgid "Document"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:928 core/models.py:928
|
||||
#: build/lib/core/models.py:930 core/models.py:930
|
||||
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:942 build/lib/core/models.py:1346
|
||||
#: core/models.py:942 core/models.py:1346
|
||||
msgid "Untitled Document"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1347 core/models.py:1347
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1382 core/models.py:1382
|
||||
#, 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:1386 core/models.py:1386
|
||||
#, 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:1392 core/models.py:1392
|
||||
#, 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:1493 core/models.py:1493
|
||||
msgid "Document/user link trace"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link traces"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1500 core/models.py:1500
|
||||
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:1523 core/models.py:1523
|
||||
msgid "Document favorite"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorites"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1530 core/models.py:1530
|
||||
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:1552 core/models.py:1552
|
||||
msgid "Document/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1559 core/models.py:1559
|
||||
msgid "This user is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1565 core/models.py:1565
|
||||
msgid "This team is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1571 core/models.py:1571
|
||||
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:1722 core/models.py:1722
|
||||
msgid "Document ask for access"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for accesses"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1729 core/models.py:1729
|
||||
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:1786 core/models.py:1786
|
||||
#, 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:1790 core/models.py:1790
|
||||
#, 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:1796 core/models.py:1796
|
||||
#, 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:1838 core/models.py:1838
|
||||
msgid "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
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:1842 build/lib/core/models.py:1894
|
||||
#: core/models.py:1842 core/models.py:1894
|
||||
msgid "Anonymous"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1939 core/models.py:1939
|
||||
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:1943 core/models.py:1943
|
||||
msgid "Reaction"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reactions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1954 core/models.py:1954
|
||||
msgid "email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
msgid "Document invitation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1994 core/models.py:1994
|
||||
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:702 impress/settings.py:702
|
||||
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-03-25 16:42+0000\n"
|
||||
"PO-Revision-Date: 2026-03-25 16:55\n"
|
||||
"POT-Creation-Date: 2026-03-12 13:31+0000\n"
|
||||
"PO-Revision-Date: 2026-03-13 16:53\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Spanish\n"
|
||||
"Language: es_ES\n"
|
||||
@@ -46,40 +46,36 @@ msgstr "Estructura en árbol"
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
#: build/lib/core/api/filters.py:51 core/api/filters.py:51
|
||||
msgid "Search"
|
||||
msgstr "Buscar"
|
||||
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
#: build/lib/core/api/filters.py:62 core/api/filters.py:62
|
||||
msgid "Creator is me"
|
||||
msgstr "Yo soy el creador"
|
||||
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
msgid "Masked"
|
||||
msgstr "Enmascarado"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:71 core/api/filters.py:71
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
msgid "Favorite"
|
||||
msgstr "Favorito"
|
||||
|
||||
#: build/lib/core/api/serializers.py:535 core/api/serializers.py:535
|
||||
#: build/lib/core/api/serializers.py:526 core/api/serializers.py:526
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "¡Un nuevo documento se ha creado por ti!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:539 core/api/serializers.py:539
|
||||
#: build/lib/core/api/serializers.py:530 core/api/serializers.py:530
|
||||
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:575 core/api/serializers.py:575
|
||||
#: build/lib/core/api/serializers.py:566 core/api/serializers.py:566
|
||||
msgid "This field is required."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:586 core/api/serializers.py:586
|
||||
#: build/lib/core/api/serializers.py:577 core/api/serializers.py:577
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1315 core/api/viewsets.py:1315
|
||||
#: build/lib/core/api/viewsets.py:1298 core/api/viewsets.py:1298
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "copia de {title}"
|
||||
@@ -251,98 +247,98 @@ msgstr "usuario"
|
||||
msgid "users"
|
||||
msgstr "usuarios"
|
||||
|
||||
#: build/lib/core/models.py:376 core/models.py:376
|
||||
#: build/lib/core/models.py:378 core/models.py:378
|
||||
msgid "Active email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:377 core/models.py:377
|
||||
#: build/lib/core/models.py:379 core/models.py:379
|
||||
msgid "Email address to deactivate"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:404 core/models.py:404
|
||||
#: build/lib/core/models.py:406 core/models.py:406
|
||||
msgid "Unique ID in the source file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:410 build/lib/core/models.py:708 core/models.py:410
|
||||
#: core/models.py:708
|
||||
msgid "Pending"
|
||||
msgstr "Pending"
|
||||
|
||||
#: build/lib/core/models.py:411 core/models.py:411
|
||||
msgid "Ready"
|
||||
msgstr "Listo"
|
||||
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 core/models.py:413
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:414 build/lib/core/models.py:712 core/models.py:414
|
||||
#: core/models.py:712
|
||||
msgid "Done"
|
||||
msgstr "Terminado"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 build/lib/core/models.py:711 core/models.py:413
|
||||
#: core/models.py:711
|
||||
#: build/lib/core/models.py:415 build/lib/core/models.py:713 core/models.py:415
|
||||
#: core/models.py:713
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:421 core/models.py:421
|
||||
#: build/lib/core/models.py:423 core/models.py:423
|
||||
msgid "user reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:422 core/models.py:422
|
||||
#: build/lib/core/models.py:424 core/models.py:424
|
||||
msgid "user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:660 core/models.py:660
|
||||
#: build/lib/core/models.py:662 core/models.py:662
|
||||
msgid "You have requested a reconciliation of your user accounts on Docs.\n"
|
||||
" To confirm that you are the one who initiated the request\n"
|
||||
" and that this email belongs to you:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:666 core/models.py:666
|
||||
#: build/lib/core/models.py:668 core/models.py:668
|
||||
msgid "Confirm by clicking the link to start the reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:671 build/lib/core/models.py:777 core/models.py:671
|
||||
#: core/models.py:777
|
||||
#: build/lib/core/models.py:673 build/lib/core/models.py:779 core/models.py:673
|
||||
#: core/models.py:779
|
||||
msgid "Click here"
|
||||
msgstr "Haga click aquí"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:672 core/models.py:672
|
||||
#: build/lib/core/models.py:674 core/models.py:674
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmar"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:683 core/models.py:683
|
||||
#: build/lib/core/models.py:685 core/models.py:685
|
||||
msgid "Your reconciliation request has been processed.\n"
|
||||
" New documents are likely associated with your account:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:688 core/models.py:688
|
||||
#: build/lib/core/models.py:690 core/models.py:690
|
||||
msgid "Your accounts have been merged"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:693 core/models.py:693
|
||||
#: build/lib/core/models.py:695 core/models.py:695
|
||||
msgid "Click here to see"
|
||||
msgstr "Haz clic aquí para ver"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:694 core/models.py:694
|
||||
#: build/lib/core/models.py:696 core/models.py:696
|
||||
msgid "See my documents"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:704 core/models.py:704
|
||||
#: build/lib/core/models.py:706 core/models.py:706
|
||||
msgid "CSV file"
|
||||
msgstr "Archivo CSV"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:709 core/models.py:709
|
||||
#: build/lib/core/models.py:711 core/models.py:711
|
||||
msgid "Running"
|
||||
msgstr "En ejecución"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:719 core/models.py:719
|
||||
#: build/lib/core/models.py:721 core/models.py:721
|
||||
msgid "user reconciliation CSV import"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:720 core/models.py:720
|
||||
#: build/lib/core/models.py:722 core/models.py:722
|
||||
msgid "user reconciliation CSV imports"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:764 core/models.py:764
|
||||
#: build/lib/core/models.py:766 core/models.py:766
|
||||
#, python-brace-format
|
||||
msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" Reconciliation failed for the following email addresses:\n"
|
||||
@@ -351,177 +347,177 @@ msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" You can submit another request with the valid email addresses."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:772 core/models.py:772
|
||||
#: build/lib/core/models.py:774 core/models.py:774
|
||||
msgid "Reconciliation of your Docs accounts not completed"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:778 core/models.py:778
|
||||
#: build/lib/core/models.py:780 core/models.py:780
|
||||
msgid "Make a new request"
|
||||
msgstr "Hacer un nuevo pedido"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:877 core/models.py:877
|
||||
#: build/lib/core/models.py:879 core/models.py:879
|
||||
msgid "title"
|
||||
msgstr "título"
|
||||
|
||||
#: build/lib/core/models.py:878 core/models.py:878
|
||||
#: build/lib/core/models.py:880 core/models.py:880
|
||||
msgid "excerpt"
|
||||
msgstr "resumen"
|
||||
|
||||
#: build/lib/core/models.py:927 core/models.py:927
|
||||
#: build/lib/core/models.py:929 core/models.py:929
|
||||
msgid "Document"
|
||||
msgstr "Documento"
|
||||
|
||||
#: build/lib/core/models.py:928 core/models.py:928
|
||||
#: build/lib/core/models.py:930 core/models.py:930
|
||||
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:942 build/lib/core/models.py:1346
|
||||
#: core/models.py:942 core/models.py:1346
|
||||
msgid "Untitled Document"
|
||||
msgstr "Documento sin título"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1347 core/models.py:1347
|
||||
msgid "Open"
|
||||
msgstr "Abrir"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1382 core/models.py:1382
|
||||
#, 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:1386 core/models.py:1386
|
||||
#, 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:1392 core/models.py:1392
|
||||
#, 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:1493 core/models.py:1493
|
||||
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:1494 core/models.py:1494
|
||||
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:1500 core/models.py:1500
|
||||
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:1523 core/models.py:1523
|
||||
msgid "Document favorite"
|
||||
msgstr "Documento favorito"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorites"
|
||||
msgstr "Documentos favoritos"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1530 core/models.py:1530
|
||||
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:1552 core/models.py:1552
|
||||
msgid "Document/user relation"
|
||||
msgstr "Relación documento/usuario"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relations"
|
||||
msgstr "Relaciones documento/usuario"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1559 core/models.py:1559
|
||||
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:1565 core/models.py:1565
|
||||
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:1571 core/models.py:1571
|
||||
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:1722 core/models.py:1722
|
||||
msgid "Document ask for access"
|
||||
msgstr "Solicitud de acceso"
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for accesses"
|
||||
msgstr "Solicitud de accesos"
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1729 core/models.py:1729
|
||||
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:1786 core/models.py:1786
|
||||
#, 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:1790 core/models.py:1790
|
||||
#, 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:1796 core/models.py:1796
|
||||
#, 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
|
||||
msgid "Thread"
|
||||
msgstr "Thread"
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
msgid "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
msgid "Threads"
|
||||
msgstr "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:1842 build/lib/core/models.py:1894
|
||||
#: core/models.py:1842 core/models.py:1894
|
||||
msgid "Anonymous"
|
||||
msgstr "Anónimo"
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
msgid "Comment"
|
||||
msgstr "Comentario"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
msgid "Comments"
|
||||
msgstr "Comentarios"
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1939 core/models.py:1939
|
||||
msgid "This emoji has already been reacted to this comment."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1942 core/models.py:1942
|
||||
msgid "Reaction"
|
||||
msgstr "Reacción"
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
msgid "Reactions"
|
||||
msgstr "Reacciones"
|
||||
msgid "Reaction"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reactions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1954 core/models.py:1954
|
||||
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:1973 core/models.py:1973
|
||||
msgid "Document invitation"
|
||||
msgstr "Invitación al documento"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitations"
|
||||
msgstr "Invitaciones a documentos"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1994 core/models.py:1994
|
||||
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:702 impress/settings.py:702
|
||||
msgid "Docs AI"
|
||||
msgstr "Docs AI"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/mail/html/template.html:153
|
||||
#: core/templates/mail/text/template.txt:3
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: lasuite-docs\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-03-25 16:42+0000\n"
|
||||
"PO-Revision-Date: 2026-03-25 16:55\n"
|
||||
"POT-Creation-Date: 2026-03-12 13:31+0000\n"
|
||||
"PO-Revision-Date: 2026-03-13 16:53\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: French\n"
|
||||
"Language: fr_FR\n"
|
||||
@@ -46,40 +46,36 @@ msgstr "Arborescence"
|
||||
msgid "Title"
|
||||
msgstr "Titre"
|
||||
|
||||
#: build/lib/core/api/filters.py:51 core/api/filters.py:51
|
||||
msgid "Search"
|
||||
msgstr "Recherche"
|
||||
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
#: build/lib/core/api/filters.py:62 core/api/filters.py:62
|
||||
msgid "Creator is me"
|
||||
msgstr "Je suis l'auteur"
|
||||
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
msgid "Masked"
|
||||
msgstr "Masqué"
|
||||
|
||||
#: build/lib/core/api/filters.py:71 core/api/filters.py:71
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
msgid "Favorite"
|
||||
msgstr "Favoris"
|
||||
|
||||
#: build/lib/core/api/serializers.py:535 core/api/serializers.py:535
|
||||
#: build/lib/core/api/serializers.py:526 core/api/serializers.py:526
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Un nouveau document a été créé pour vous !"
|
||||
|
||||
#: build/lib/core/api/serializers.py:539 core/api/serializers.py:539
|
||||
#: build/lib/core/api/serializers.py:530 core/api/serializers.py:530
|
||||
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:575 core/api/serializers.py:575
|
||||
#: build/lib/core/api/serializers.py:566 core/api/serializers.py:566
|
||||
msgid "This field is required."
|
||||
msgstr "Ce champ est obligatoire."
|
||||
|
||||
#: build/lib/core/api/serializers.py:586 core/api/serializers.py:586
|
||||
#: build/lib/core/api/serializers.py:577 core/api/serializers.py:577
|
||||
#, 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:1315 core/api/viewsets.py:1315
|
||||
#: build/lib/core/api/viewsets.py:1298 core/api/viewsets.py:1298
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "copie de {title}"
|
||||
@@ -251,46 +247,46 @@ msgstr "utilisateur"
|
||||
msgid "users"
|
||||
msgstr "utilisateurs"
|
||||
|
||||
#: build/lib/core/models.py:376 core/models.py:376
|
||||
#: build/lib/core/models.py:378 core/models.py:378
|
||||
msgid "Active email address"
|
||||
msgstr "Adresse email active"
|
||||
|
||||
#: build/lib/core/models.py:377 core/models.py:377
|
||||
#: build/lib/core/models.py:379 core/models.py:379
|
||||
msgid "Email address to deactivate"
|
||||
msgstr "Adresse email à désactiver"
|
||||
|
||||
#: build/lib/core/models.py:404 core/models.py:404
|
||||
#: build/lib/core/models.py:406 core/models.py:406
|
||||
msgid "Unique ID in the source file"
|
||||
msgstr "Identifiant unique dans le fichier source"
|
||||
|
||||
#: build/lib/core/models.py:410 build/lib/core/models.py:708 core/models.py:410
|
||||
#: core/models.py:708
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
msgid "Pending"
|
||||
msgstr "En attente"
|
||||
|
||||
#: build/lib/core/models.py:411 core/models.py:411
|
||||
#: build/lib/core/models.py:413 core/models.py:413
|
||||
msgid "Ready"
|
||||
msgstr "Prêt"
|
||||
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
#: build/lib/core/models.py:414 build/lib/core/models.py:712 core/models.py:414
|
||||
#: core/models.py:712
|
||||
msgid "Done"
|
||||
msgstr "Terminé"
|
||||
|
||||
#: build/lib/core/models.py:413 build/lib/core/models.py:711 core/models.py:413
|
||||
#: core/models.py:711
|
||||
#: build/lib/core/models.py:415 build/lib/core/models.py:713 core/models.py:415
|
||||
#: core/models.py:713
|
||||
msgid "Error"
|
||||
msgstr "Erreur"
|
||||
|
||||
#: build/lib/core/models.py:421 core/models.py:421
|
||||
#: build/lib/core/models.py:423 core/models.py:423
|
||||
msgid "user reconciliation"
|
||||
msgstr "rapprochement de l'utilisateur"
|
||||
|
||||
#: build/lib/core/models.py:422 core/models.py:422
|
||||
#: build/lib/core/models.py:424 core/models.py:424
|
||||
msgid "user reconciliations"
|
||||
msgstr "rapprochements de l'utilisateur"
|
||||
|
||||
#: build/lib/core/models.py:660 core/models.py:660
|
||||
#: build/lib/core/models.py:662 core/models.py:662
|
||||
msgid "You have requested a reconciliation of your user accounts on Docs.\n"
|
||||
" To confirm that you are the one who initiated the request\n"
|
||||
" and that this email belongs to you:"
|
||||
@@ -298,54 +294,54 @@ msgstr "Vous avez demandé un rapprochement de vos comptes utilisateur sur Docs.
|
||||
" Pour confirmer que vous êtes bien à l'origine de cette demande\n"
|
||||
" et que cet e-mail vous appartient :"
|
||||
|
||||
#: build/lib/core/models.py:666 core/models.py:666
|
||||
#: build/lib/core/models.py:668 core/models.py:668
|
||||
msgid "Confirm by clicking the link to start the reconciliation"
|
||||
msgstr "Confirmez en cliquant sur le lien pour commencer le rapprochement"
|
||||
|
||||
#: build/lib/core/models.py:671 build/lib/core/models.py:777 core/models.py:671
|
||||
#: core/models.py:777
|
||||
#: build/lib/core/models.py:673 build/lib/core/models.py:779 core/models.py:673
|
||||
#: core/models.py:779
|
||||
msgid "Click here"
|
||||
msgstr "Cliquez ici"
|
||||
|
||||
#: build/lib/core/models.py:672 core/models.py:672
|
||||
#: build/lib/core/models.py:674 core/models.py:674
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmer"
|
||||
|
||||
#: build/lib/core/models.py:683 core/models.py:683
|
||||
#: build/lib/core/models.py:685 core/models.py:685
|
||||
msgid "Your reconciliation request has been processed.\n"
|
||||
" New documents are likely associated with your account:"
|
||||
msgstr "Votre demande de rapprochement a été traitée.\n"
|
||||
" De nouveaux documents sont probablement associés à votre compte :"
|
||||
|
||||
#: build/lib/core/models.py:688 core/models.py:688
|
||||
#: build/lib/core/models.py:690 core/models.py:690
|
||||
msgid "Your accounts have been merged"
|
||||
msgstr "Vos comptes ont été fusionnés"
|
||||
|
||||
#: build/lib/core/models.py:693 core/models.py:693
|
||||
#: build/lib/core/models.py:695 core/models.py:695
|
||||
msgid "Click here to see"
|
||||
msgstr "Cliquez ici pour voir"
|
||||
|
||||
#: build/lib/core/models.py:694 core/models.py:694
|
||||
#: build/lib/core/models.py:696 core/models.py:696
|
||||
msgid "See my documents"
|
||||
msgstr "Voir mes documents"
|
||||
|
||||
#: build/lib/core/models.py:704 core/models.py:704
|
||||
#: build/lib/core/models.py:706 core/models.py:706
|
||||
msgid "CSV file"
|
||||
msgstr "Fichier CSV"
|
||||
|
||||
#: build/lib/core/models.py:709 core/models.py:709
|
||||
#: build/lib/core/models.py:711 core/models.py:711
|
||||
msgid "Running"
|
||||
msgstr "En cours"
|
||||
|
||||
#: build/lib/core/models.py:719 core/models.py:719
|
||||
#: build/lib/core/models.py:721 core/models.py:721
|
||||
msgid "user reconciliation CSV import"
|
||||
msgstr "importation CSV de rapprochement utilisateur"
|
||||
|
||||
#: build/lib/core/models.py:720 core/models.py:720
|
||||
#: build/lib/core/models.py:722 core/models.py:722
|
||||
msgid "user reconciliation CSV imports"
|
||||
msgstr "importations CSV de rapprochement utilisateur"
|
||||
|
||||
#: build/lib/core/models.py:764 core/models.py:764
|
||||
#: build/lib/core/models.py:766 core/models.py:766
|
||||
#, python-brace-format
|
||||
msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" Reconciliation failed for the following email addresses:\n"
|
||||
@@ -358,175 +354,175 @@ msgstr "Votre demande de rapprochement n'a pas abouti.\n"
|
||||
" Veuillez vérifier qu'il n'y a pas de fautes de frappe.\n"
|
||||
" Vous pouvez envoyer une nouvelle demande avec des adresses e-mail valides."
|
||||
|
||||
#: build/lib/core/models.py:772 core/models.py:772
|
||||
#: build/lib/core/models.py:774 core/models.py:774
|
||||
msgid "Reconciliation of your Docs accounts not completed"
|
||||
msgstr "Le rapprochement de vos comptes Docs n'est pas terminé"
|
||||
|
||||
#: build/lib/core/models.py:778 core/models.py:778
|
||||
#: build/lib/core/models.py:780 core/models.py:780
|
||||
msgid "Make a new request"
|
||||
msgstr "Faire une nouvelle demande"
|
||||
|
||||
#: build/lib/core/models.py:877 core/models.py:877
|
||||
#: build/lib/core/models.py:879 core/models.py:879
|
||||
msgid "title"
|
||||
msgstr "titre"
|
||||
|
||||
#: build/lib/core/models.py:878 core/models.py:878
|
||||
#: build/lib/core/models.py:880 core/models.py:880
|
||||
msgid "excerpt"
|
||||
msgstr "extrait"
|
||||
|
||||
#: build/lib/core/models.py:927 core/models.py:927
|
||||
#: build/lib/core/models.py:929 core/models.py:929
|
||||
msgid "Document"
|
||||
msgstr "Document"
|
||||
|
||||
#: build/lib/core/models.py:928 core/models.py:928
|
||||
#: build/lib/core/models.py:930 core/models.py:930
|
||||
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:942 build/lib/core/models.py:1346
|
||||
#: core/models.py:942 core/models.py:1346
|
||||
msgid "Untitled Document"
|
||||
msgstr "Document sans titre"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1347 core/models.py:1347
|
||||
msgid "Open"
|
||||
msgstr "Ouvrir"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1382 core/models.py:1382
|
||||
#, 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:1386 core/models.py:1386
|
||||
#, 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:1392 core/models.py:1392
|
||||
#, 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:1493 core/models.py:1493
|
||||
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:1494 core/models.py:1494
|
||||
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:1500 core/models.py:1500
|
||||
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:1523 core/models.py:1523
|
||||
msgid "Document favorite"
|
||||
msgstr "Document favori"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorites"
|
||||
msgstr "Documents favoris"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1530 core/models.py:1530
|
||||
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:1552 core/models.py:1552
|
||||
msgid "Document/user relation"
|
||||
msgstr "Relation document/utilisateur"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relations"
|
||||
msgstr "Relations document/utilisateur"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1559 core/models.py:1559
|
||||
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:1565 core/models.py:1565
|
||||
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:1571 core/models.py:1571
|
||||
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:1722 core/models.py:1722
|
||||
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:1723 core/models.py:1723
|
||||
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:1729 core/models.py:1729
|
||||
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:1786 core/models.py:1786
|
||||
#, 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:1790 core/models.py:1790
|
||||
#, 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:1796 core/models.py:1796
|
||||
#, 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:1838 core/models.py:1838
|
||||
msgid "Thread"
|
||||
msgstr "Conversation"
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
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:1842 build/lib/core/models.py:1894
|
||||
#: core/models.py:1842 core/models.py:1894
|
||||
msgid "Anonymous"
|
||||
msgstr "Anonyme"
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
msgid "Comment"
|
||||
msgstr "Commentaire"
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comments"
|
||||
msgstr "Commentaires"
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1939 core/models.py:1939
|
||||
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:1943 core/models.py:1943
|
||||
msgid "Reaction"
|
||||
msgstr "Réaction"
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reactions"
|
||||
msgstr "Réactions"
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1954 core/models.py:1954
|
||||
msgid "email address"
|
||||
msgstr "adresse e-mail"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
msgid "Document invitation"
|
||||
msgstr "Invitation à un document"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitations"
|
||||
msgstr "Invitations à un document"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1994 core/models.py:1994
|
||||
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:702 impress/settings.py:702
|
||||
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-03-25 16:42+0000\n"
|
||||
"PO-Revision-Date: 2026-03-25 16:55\n"
|
||||
"POT-Creation-Date: 2026-03-12 13:31+0000\n"
|
||||
"PO-Revision-Date: 2026-03-13 16:53\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Italian\n"
|
||||
"Language: it_IT\n"
|
||||
@@ -46,40 +46,36 @@ msgstr "Struttura ad albero"
|
||||
msgid "Title"
|
||||
msgstr "Titolo"
|
||||
|
||||
#: build/lib/core/api/filters.py:51 core/api/filters.py:51
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
#: build/lib/core/api/filters.py:62 core/api/filters.py:62
|
||||
msgid "Creator is me"
|
||||
msgstr "Il creatore sono io"
|
||||
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
msgid "Masked"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:71 core/api/filters.py:71
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
msgid "Favorite"
|
||||
msgstr "Preferiti"
|
||||
|
||||
#: build/lib/core/api/serializers.py:535 core/api/serializers.py:535
|
||||
#: build/lib/core/api/serializers.py:526 core/api/serializers.py:526
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Un nuovo documento è stato creato a tuo nome!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:539 core/api/serializers.py:539
|
||||
#: build/lib/core/api/serializers.py:530 core/api/serializers.py:530
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "Sei ora proprietario di un nuovo documento:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:575 core/api/serializers.py:575
|
||||
#: build/lib/core/api/serializers.py:566 core/api/serializers.py:566
|
||||
msgid "This field is required."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:586 core/api/serializers.py:586
|
||||
#: build/lib/core/api/serializers.py:577 core/api/serializers.py:577
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1315 core/api/viewsets.py:1315
|
||||
#: build/lib/core/api/viewsets.py:1298 core/api/viewsets.py:1298
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "copia di {title}"
|
||||
@@ -251,98 +247,98 @@ msgstr "utente"
|
||||
msgid "users"
|
||||
msgstr "utenti"
|
||||
|
||||
#: build/lib/core/models.py:376 core/models.py:376
|
||||
#: build/lib/core/models.py:378 core/models.py:378
|
||||
msgid "Active email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:377 core/models.py:377
|
||||
#: build/lib/core/models.py:379 core/models.py:379
|
||||
msgid "Email address to deactivate"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:404 core/models.py:404
|
||||
#: build/lib/core/models.py:406 core/models.py:406
|
||||
msgid "Unique ID in the source file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:410 build/lib/core/models.py:708 core/models.py:410
|
||||
#: core/models.py:708
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:411 core/models.py:411
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 core/models.py:413
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:414 build/lib/core/models.py:712 core/models.py:414
|
||||
#: core/models.py:712
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 build/lib/core/models.py:711 core/models.py:413
|
||||
#: core/models.py:711
|
||||
#: build/lib/core/models.py:415 build/lib/core/models.py:713 core/models.py:415
|
||||
#: core/models.py:713
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:421 core/models.py:421
|
||||
#: build/lib/core/models.py:423 core/models.py:423
|
||||
msgid "user reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:422 core/models.py:422
|
||||
#: build/lib/core/models.py:424 core/models.py:424
|
||||
msgid "user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:660 core/models.py:660
|
||||
#: build/lib/core/models.py:662 core/models.py:662
|
||||
msgid "You have requested a reconciliation of your user accounts on Docs.\n"
|
||||
" To confirm that you are the one who initiated the request\n"
|
||||
" and that this email belongs to you:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:666 core/models.py:666
|
||||
#: build/lib/core/models.py:668 core/models.py:668
|
||||
msgid "Confirm by clicking the link to start the reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:671 build/lib/core/models.py:777 core/models.py:671
|
||||
#: core/models.py:777
|
||||
#: build/lib/core/models.py:673 build/lib/core/models.py:779 core/models.py:673
|
||||
#: core/models.py:779
|
||||
msgid "Click here"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:672 core/models.py:672
|
||||
#: build/lib/core/models.py:674 core/models.py:674
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:683 core/models.py:683
|
||||
#: build/lib/core/models.py:685 core/models.py:685
|
||||
msgid "Your reconciliation request has been processed.\n"
|
||||
" New documents are likely associated with your account:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:688 core/models.py:688
|
||||
#: build/lib/core/models.py:690 core/models.py:690
|
||||
msgid "Your accounts have been merged"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:693 core/models.py:693
|
||||
#: build/lib/core/models.py:695 core/models.py:695
|
||||
msgid "Click here to see"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:694 core/models.py:694
|
||||
#: build/lib/core/models.py:696 core/models.py:696
|
||||
msgid "See my documents"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:704 core/models.py:704
|
||||
#: build/lib/core/models.py:706 core/models.py:706
|
||||
msgid "CSV file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:709 core/models.py:709
|
||||
#: build/lib/core/models.py:711 core/models.py:711
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:719 core/models.py:719
|
||||
#: build/lib/core/models.py:721 core/models.py:721
|
||||
msgid "user reconciliation CSV import"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:720 core/models.py:720
|
||||
#: build/lib/core/models.py:722 core/models.py:722
|
||||
msgid "user reconciliation CSV imports"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:764 core/models.py:764
|
||||
#: build/lib/core/models.py:766 core/models.py:766
|
||||
#, python-brace-format
|
||||
msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" Reconciliation failed for the following email addresses:\n"
|
||||
@@ -351,175 +347,175 @@ msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" You can submit another request with the valid email addresses."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:772 core/models.py:772
|
||||
#: build/lib/core/models.py:774 core/models.py:774
|
||||
msgid "Reconciliation of your Docs accounts not completed"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:778 core/models.py:778
|
||||
#: build/lib/core/models.py:780 core/models.py:780
|
||||
msgid "Make a new request"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:877 core/models.py:877
|
||||
#: build/lib/core/models.py:879 core/models.py:879
|
||||
msgid "title"
|
||||
msgstr "titolo"
|
||||
|
||||
#: build/lib/core/models.py:878 core/models.py:878
|
||||
#: build/lib/core/models.py:880 core/models.py:880
|
||||
msgid "excerpt"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:927 core/models.py:927
|
||||
#: build/lib/core/models.py:929 core/models.py:929
|
||||
msgid "Document"
|
||||
msgstr "Documento"
|
||||
|
||||
#: build/lib/core/models.py:928 core/models.py:928
|
||||
#: build/lib/core/models.py:930 core/models.py:930
|
||||
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:942 build/lib/core/models.py:1346
|
||||
#: core/models.py:942 core/models.py:1346
|
||||
msgid "Untitled Document"
|
||||
msgstr "Documento senza titolo"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1347 core/models.py:1347
|
||||
msgid "Open"
|
||||
msgstr "Apri"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1382 core/models.py:1382
|
||||
#, 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:1386 core/models.py:1386
|
||||
#, 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:1392 core/models.py:1392
|
||||
#, 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:1493 core/models.py:1493
|
||||
msgid "Document/user link trace"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link traces"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1500 core/models.py:1500
|
||||
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:1523 core/models.py:1523
|
||||
msgid "Document favorite"
|
||||
msgstr "Documento preferito"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorites"
|
||||
msgstr "Documenti preferiti"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1530 core/models.py:1530
|
||||
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:1552 core/models.py:1552
|
||||
msgid "Document/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1559 core/models.py:1559
|
||||
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:1565 core/models.py:1565
|
||||
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:1571 core/models.py:1571
|
||||
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:1722 core/models.py:1722
|
||||
msgid "Document ask for access"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for accesses"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1729 core/models.py:1729
|
||||
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:1786 core/models.py:1786
|
||||
#, 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:1790 core/models.py:1790
|
||||
#, 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:1796 core/models.py:1796
|
||||
#, 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:1838 core/models.py:1838
|
||||
msgid "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
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:1842 build/lib/core/models.py:1894
|
||||
#: core/models.py:1842 core/models.py:1894
|
||||
msgid "Anonymous"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1939 core/models.py:1939
|
||||
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:1943 core/models.py:1943
|
||||
msgid "Reaction"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reactions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1954 core/models.py:1954
|
||||
msgid "email address"
|
||||
msgstr "indirizzo e-mail"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
msgid "Document invitation"
|
||||
msgstr "Invito al documento"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitations"
|
||||
msgstr "Inviti al documento"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1994 core/models.py:1994
|
||||
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:702 impress/settings.py:702
|
||||
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-03-25 16:42+0000\n"
|
||||
"PO-Revision-Date: 2026-03-25 16:55\n"
|
||||
"POT-Creation-Date: 2026-03-12 13:31+0000\n"
|
||||
"PO-Revision-Date: 2026-03-13 16:53\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Dutch\n"
|
||||
"Language: nl_NL\n"
|
||||
@@ -46,40 +46,36 @@ msgstr "Boomstructuur"
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
|
||||
#: build/lib/core/api/filters.py:51 core/api/filters.py:51
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
#: build/lib/core/api/filters.py:62 core/api/filters.py:62
|
||||
msgid "Creator is me"
|
||||
msgstr "Ik ben eigenaar"
|
||||
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
msgid "Masked"
|
||||
msgstr "Gemaskeerd"
|
||||
|
||||
#: build/lib/core/api/filters.py:71 core/api/filters.py:71
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
msgid "Favorite"
|
||||
msgstr "Favoriet"
|
||||
|
||||
#: build/lib/core/api/serializers.py:535 core/api/serializers.py:535
|
||||
#: build/lib/core/api/serializers.py:526 core/api/serializers.py:526
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Een nieuw document is namens u gemaakt!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:539 core/api/serializers.py:539
|
||||
#: build/lib/core/api/serializers.py:530 core/api/serializers.py:530
|
||||
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:575 core/api/serializers.py:575
|
||||
#: build/lib/core/api/serializers.py:566 core/api/serializers.py:566
|
||||
msgid "This field is required."
|
||||
msgstr "Dit veld is verplicht."
|
||||
|
||||
#: build/lib/core/api/serializers.py:586 core/api/serializers.py:586
|
||||
#: build/lib/core/api/serializers.py:577 core/api/serializers.py:577
|
||||
#, 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:1315 core/api/viewsets.py:1315
|
||||
#: build/lib/core/api/viewsets.py:1298 core/api/viewsets.py:1298
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "kopie van {title}"
|
||||
@@ -251,46 +247,46 @@ msgstr "gebruiker"
|
||||
msgid "users"
|
||||
msgstr "gebruikers"
|
||||
|
||||
#: build/lib/core/models.py:376 core/models.py:376
|
||||
#: build/lib/core/models.py:378 core/models.py:378
|
||||
msgid "Active email address"
|
||||
msgstr "Actieve e-mail adres"
|
||||
|
||||
#: build/lib/core/models.py:377 core/models.py:377
|
||||
#: build/lib/core/models.py:379 core/models.py:379
|
||||
msgid "Email address to deactivate"
|
||||
msgstr "E-mailadres om te deactiveren"
|
||||
|
||||
#: build/lib/core/models.py:404 core/models.py:404
|
||||
#: build/lib/core/models.py:406 core/models.py:406
|
||||
msgid "Unique ID in the source file"
|
||||
msgstr "Unieke ID in het bronbestand"
|
||||
|
||||
#: build/lib/core/models.py:410 build/lib/core/models.py:708 core/models.py:410
|
||||
#: core/models.py:708
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
msgid "Pending"
|
||||
msgstr "In behandeling"
|
||||
|
||||
#: build/lib/core/models.py:411 core/models.py:411
|
||||
#: build/lib/core/models.py:413 core/models.py:413
|
||||
msgid "Ready"
|
||||
msgstr "Klaar"
|
||||
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
#: build/lib/core/models.py:414 build/lib/core/models.py:712 core/models.py:414
|
||||
#: core/models.py:712
|
||||
msgid "Done"
|
||||
msgstr "Klaar"
|
||||
|
||||
#: build/lib/core/models.py:413 build/lib/core/models.py:711 core/models.py:413
|
||||
#: core/models.py:711
|
||||
#: build/lib/core/models.py:415 build/lib/core/models.py:713 core/models.py:415
|
||||
#: core/models.py:713
|
||||
msgid "Error"
|
||||
msgstr "Fout"
|
||||
|
||||
#: build/lib/core/models.py:421 core/models.py:421
|
||||
#: build/lib/core/models.py:423 core/models.py:423
|
||||
msgid "user reconciliation"
|
||||
msgstr "gebruiker samenvoegen"
|
||||
|
||||
#: build/lib/core/models.py:422 core/models.py:422
|
||||
#: build/lib/core/models.py:424 core/models.py:424
|
||||
msgid "user reconciliations"
|
||||
msgstr "gebruikers samenvoegen"
|
||||
|
||||
#: build/lib/core/models.py:660 core/models.py:660
|
||||
#: build/lib/core/models.py:662 core/models.py:662
|
||||
msgid "You have requested a reconciliation of your user accounts on Docs.\n"
|
||||
" To confirm that you are the one who initiated the request\n"
|
||||
" and that this email belongs to you:"
|
||||
@@ -298,54 +294,54 @@ msgstr "Je hebt gevraagd om een samenvoeging van je gebruikersaccounts op Docs.\
|
||||
" Om te bevestigen dat u degene bent die het verzoek\n"
|
||||
" heeft geïnitieerd en dat deze e-mail van u is:"
|
||||
|
||||
#: build/lib/core/models.py:666 core/models.py:666
|
||||
#: build/lib/core/models.py:668 core/models.py:668
|
||||
msgid "Confirm by clicking the link to start the reconciliation"
|
||||
msgstr "Bevestig door te klikken op de link om de samenvoeging te starten"
|
||||
|
||||
#: build/lib/core/models.py:671 build/lib/core/models.py:777 core/models.py:671
|
||||
#: core/models.py:777
|
||||
#: build/lib/core/models.py:673 build/lib/core/models.py:779 core/models.py:673
|
||||
#: core/models.py:779
|
||||
msgid "Click here"
|
||||
msgstr "Klik hier"
|
||||
|
||||
#: build/lib/core/models.py:672 core/models.py:672
|
||||
#: build/lib/core/models.py:674 core/models.py:674
|
||||
msgid "Confirm"
|
||||
msgstr "Bevestig"
|
||||
|
||||
#: build/lib/core/models.py:683 core/models.py:683
|
||||
#: build/lib/core/models.py:685 core/models.py:685
|
||||
msgid "Your reconciliation request has been processed.\n"
|
||||
" New documents are likely associated with your account:"
|
||||
msgstr "Uw samenvoegingsverzoek is verwerkt.\n"
|
||||
" Nieuwe documenten worden waarschijnlijk geassocieerd met uw account:"
|
||||
|
||||
#: build/lib/core/models.py:688 core/models.py:688
|
||||
#: build/lib/core/models.py:690 core/models.py:690
|
||||
msgid "Your accounts have been merged"
|
||||
msgstr "Je accounts zijn samengevoegd"
|
||||
|
||||
#: build/lib/core/models.py:693 core/models.py:693
|
||||
#: build/lib/core/models.py:695 core/models.py:695
|
||||
msgid "Click here to see"
|
||||
msgstr "Klik hier om te bekijken"
|
||||
|
||||
#: build/lib/core/models.py:694 core/models.py:694
|
||||
#: build/lib/core/models.py:696 core/models.py:696
|
||||
msgid "See my documents"
|
||||
msgstr "Mijn documenten bekijken"
|
||||
|
||||
#: build/lib/core/models.py:704 core/models.py:704
|
||||
#: build/lib/core/models.py:706 core/models.py:706
|
||||
msgid "CSV file"
|
||||
msgstr "CSV bestand"
|
||||
|
||||
#: build/lib/core/models.py:709 core/models.py:709
|
||||
#: build/lib/core/models.py:711 core/models.py:711
|
||||
msgid "Running"
|
||||
msgstr "Bezig"
|
||||
|
||||
#: build/lib/core/models.py:719 core/models.py:719
|
||||
#: build/lib/core/models.py:721 core/models.py:721
|
||||
msgid "user reconciliation CSV import"
|
||||
msgstr "gebruiker samenvoeging CSV import"
|
||||
|
||||
#: build/lib/core/models.py:720 core/models.py:720
|
||||
#: build/lib/core/models.py:722 core/models.py:722
|
||||
msgid "user reconciliation CSV imports"
|
||||
msgstr "gebruiker reconciliation CSV imports"
|
||||
|
||||
#: build/lib/core/models.py:764 core/models.py:764
|
||||
#: build/lib/core/models.py:766 core/models.py:766
|
||||
#, python-brace-format
|
||||
msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" Reconciliation failed for the following email addresses:\n"
|
||||
@@ -358,175 +354,175 @@ msgstr "Uw verzoek tot verzoening is mislukt.\n"
|
||||
" Controleer op typefouten.\n"
|
||||
" U kunt een ander verzoek indienen met de geldige e-mailadressen."
|
||||
|
||||
#: build/lib/core/models.py:772 core/models.py:772
|
||||
#: build/lib/core/models.py:774 core/models.py:774
|
||||
msgid "Reconciliation of your Docs accounts not completed"
|
||||
msgstr "Samenvoeging van je Docs accounts is niet voltooid"
|
||||
|
||||
#: build/lib/core/models.py:778 core/models.py:778
|
||||
#: build/lib/core/models.py:780 core/models.py:780
|
||||
msgid "Make a new request"
|
||||
msgstr "Maak een nieuw verzoek"
|
||||
|
||||
#: build/lib/core/models.py:877 core/models.py:877
|
||||
#: build/lib/core/models.py:879 core/models.py:879
|
||||
msgid "title"
|
||||
msgstr "titel"
|
||||
|
||||
#: build/lib/core/models.py:878 core/models.py:878
|
||||
#: build/lib/core/models.py:880 core/models.py:880
|
||||
msgid "excerpt"
|
||||
msgstr "uittreksel"
|
||||
|
||||
#: build/lib/core/models.py:927 core/models.py:927
|
||||
#: build/lib/core/models.py:929 core/models.py:929
|
||||
msgid "Document"
|
||||
msgstr "Document"
|
||||
|
||||
#: build/lib/core/models.py:928 core/models.py:928
|
||||
#: build/lib/core/models.py:930 core/models.py:930
|
||||
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:942 build/lib/core/models.py:1346
|
||||
#: core/models.py:942 core/models.py:1346
|
||||
msgid "Untitled Document"
|
||||
msgstr "Naamloos Document"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1347 core/models.py:1347
|
||||
msgid "Open"
|
||||
msgstr "Open"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1382 core/models.py:1382
|
||||
#, 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:1386 core/models.py:1386
|
||||
#, 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:1392 core/models.py:1392
|
||||
#, 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:1493 core/models.py:1493
|
||||
msgid "Document/user link trace"
|
||||
msgstr "Document/gebruiker link"
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link traces"
|
||||
msgstr "Document/gebruiker link"
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1500 core/models.py:1500
|
||||
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:1523 core/models.py:1523
|
||||
msgid "Document favorite"
|
||||
msgstr "Document favoriet"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorites"
|
||||
msgstr "Document favorieten"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1530 core/models.py:1530
|
||||
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:1552 core/models.py:1552
|
||||
msgid "Document/user relation"
|
||||
msgstr "Document/gebruiker relatie"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relations"
|
||||
msgstr "Document/gebruiker relaties"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1559 core/models.py:1559
|
||||
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:1565 core/models.py:1565
|
||||
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:1571 core/models.py:1571
|
||||
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:1722 core/models.py:1722
|
||||
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:1723 core/models.py:1723
|
||||
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:1729 core/models.py:1729
|
||||
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:1786 core/models.py:1786
|
||||
#, 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:1790 core/models.py:1790
|
||||
#, 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:1796 core/models.py:1796
|
||||
#, 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:1838 core/models.py:1838
|
||||
msgid "Thread"
|
||||
msgstr "Kanaal"
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
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:1842 build/lib/core/models.py:1894
|
||||
#: core/models.py:1842 core/models.py:1894
|
||||
msgid "Anonymous"
|
||||
msgstr "Anoniem"
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
msgid "Comment"
|
||||
msgstr "Reactie"
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comments"
|
||||
msgstr "Reacties"
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1939 core/models.py:1939
|
||||
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:1943 core/models.py:1943
|
||||
msgid "Reaction"
|
||||
msgstr "Reactie"
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reactions"
|
||||
msgstr "Reacties"
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1954 core/models.py:1954
|
||||
msgid "email address"
|
||||
msgstr "e-mailadres"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
msgid "Document invitation"
|
||||
msgstr "Document uitnodiging"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitations"
|
||||
msgstr "Document uitnodigingen"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1994 core/models.py:1994
|
||||
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:702 impress/settings.py:702
|
||||
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-03-25 16:42+0000\n"
|
||||
"PO-Revision-Date: 2026-03-25 16:55\n"
|
||||
"POT-Creation-Date: 2026-03-12 13:31+0000\n"
|
||||
"PO-Revision-Date: 2026-03-13 16:53\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Portuguese\n"
|
||||
"Language: pt_PT\n"
|
||||
@@ -46,40 +46,36 @@ msgstr "Estrutura de árvore"
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
#: build/lib/core/api/filters.py:51 core/api/filters.py:51
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
#: build/lib/core/api/filters.py:62 core/api/filters.py:62
|
||||
msgid "Creator is me"
|
||||
msgstr "Eu sou o criador"
|
||||
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
msgid "Masked"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:71 core/api/filters.py:71
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
msgid "Favorite"
|
||||
msgstr "Favorito"
|
||||
|
||||
#: build/lib/core/api/serializers.py:535 core/api/serializers.py:535
|
||||
#: build/lib/core/api/serializers.py:526 core/api/serializers.py:526
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Um novo documento foi criado em seu nome!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:539 core/api/serializers.py:539
|
||||
#: build/lib/core/api/serializers.py:530 core/api/serializers.py:530
|
||||
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:575 core/api/serializers.py:575
|
||||
#: build/lib/core/api/serializers.py:566 core/api/serializers.py:566
|
||||
msgid "This field is required."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:586 core/api/serializers.py:586
|
||||
#: build/lib/core/api/serializers.py:577 core/api/serializers.py:577
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1315 core/api/viewsets.py:1315
|
||||
#: build/lib/core/api/viewsets.py:1298 core/api/viewsets.py:1298
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "cópia de {title}"
|
||||
@@ -141,7 +137,7 @@ msgstr ""
|
||||
|
||||
#: build/lib/core/enums.py:40 core/enums.py:40
|
||||
msgid "Left"
|
||||
msgstr "Esquerda"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/enums.py:41 core/enums.py:41
|
||||
msgid "Right"
|
||||
@@ -149,7 +145,7 @@ msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:80 core/models.py:80
|
||||
msgid "id"
|
||||
msgstr "id"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:81 core/models.py:81
|
||||
msgid "primary key for the record as UUID"
|
||||
@@ -177,7 +173,7 @@ msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:141 core/models.py:141
|
||||
msgid "sub"
|
||||
msgstr "sub"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:142 core/models.py:142
|
||||
msgid "Required. 255 characters or fewer. ASCII characters only."
|
||||
@@ -245,104 +241,104 @@ msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:209 core/models.py:209
|
||||
msgid "user"
|
||||
msgstr "utilizador"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:210 core/models.py:210
|
||||
msgid "users"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:376 core/models.py:376
|
||||
#: build/lib/core/models.py:378 core/models.py:378
|
||||
msgid "Active email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:377 core/models.py:377
|
||||
#: build/lib/core/models.py:379 core/models.py:379
|
||||
msgid "Email address to deactivate"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:404 core/models.py:404
|
||||
#: build/lib/core/models.py:406 core/models.py:406
|
||||
msgid "Unique ID in the source file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:410 build/lib/core/models.py:708 core/models.py:410
|
||||
#: core/models.py:708
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:411 core/models.py:411
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
msgid "Done"
|
||||
msgstr "Concluído"
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 build/lib/core/models.py:711 core/models.py:413
|
||||
#: core/models.py:711
|
||||
#: build/lib/core/models.py:413 core/models.py:413
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:414 build/lib/core/models.py:712 core/models.py:414
|
||||
#: core/models.py:712
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:415 build/lib/core/models.py:713 core/models.py:415
|
||||
#: core/models.py:713
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:421 core/models.py:421
|
||||
#: build/lib/core/models.py:423 core/models.py:423
|
||||
msgid "user reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:422 core/models.py:422
|
||||
#: build/lib/core/models.py:424 core/models.py:424
|
||||
msgid "user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:660 core/models.py:660
|
||||
#: build/lib/core/models.py:662 core/models.py:662
|
||||
msgid "You have requested a reconciliation of your user accounts on Docs.\n"
|
||||
" To confirm that you are the one who initiated the request\n"
|
||||
" and that this email belongs to you:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:666 core/models.py:666
|
||||
#: build/lib/core/models.py:668 core/models.py:668
|
||||
msgid "Confirm by clicking the link to start the reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:671 build/lib/core/models.py:777 core/models.py:671
|
||||
#: core/models.py:777
|
||||
#: build/lib/core/models.py:673 build/lib/core/models.py:779 core/models.py:673
|
||||
#: core/models.py:779
|
||||
msgid "Click here"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:672 core/models.py:672
|
||||
#: build/lib/core/models.py:674 core/models.py:674
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:683 core/models.py:683
|
||||
#: build/lib/core/models.py:685 core/models.py:685
|
||||
msgid "Your reconciliation request has been processed.\n"
|
||||
" New documents are likely associated with your account:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:688 core/models.py:688
|
||||
#: build/lib/core/models.py:690 core/models.py:690
|
||||
msgid "Your accounts have been merged"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:693 core/models.py:693
|
||||
#: build/lib/core/models.py:695 core/models.py:695
|
||||
msgid "Click here to see"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:694 core/models.py:694
|
||||
#: build/lib/core/models.py:696 core/models.py:696
|
||||
msgid "See my documents"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:704 core/models.py:704
|
||||
#: build/lib/core/models.py:706 core/models.py:706
|
||||
msgid "CSV file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:709 core/models.py:709
|
||||
#: build/lib/core/models.py:711 core/models.py:711
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:719 core/models.py:719
|
||||
#: build/lib/core/models.py:721 core/models.py:721
|
||||
msgid "user reconciliation CSV import"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:720 core/models.py:720
|
||||
#: build/lib/core/models.py:722 core/models.py:722
|
||||
msgid "user reconciliation CSV imports"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:764 core/models.py:764
|
||||
#: build/lib/core/models.py:766 core/models.py:766
|
||||
#, python-brace-format
|
||||
msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" Reconciliation failed for the following email addresses:\n"
|
||||
@@ -351,175 +347,175 @@ msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" You can submit another request with the valid email addresses."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:772 core/models.py:772
|
||||
#: build/lib/core/models.py:774 core/models.py:774
|
||||
msgid "Reconciliation of your Docs accounts not completed"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:778 core/models.py:778
|
||||
#: build/lib/core/models.py:780 core/models.py:780
|
||||
msgid "Make a new request"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:877 core/models.py:877
|
||||
#: build/lib/core/models.py:879 core/models.py:879
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:878 core/models.py:878
|
||||
#: build/lib/core/models.py:880 core/models.py:880
|
||||
msgid "excerpt"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:927 core/models.py:927
|
||||
#: build/lib/core/models.py:929 core/models.py:929
|
||||
msgid "Document"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:928 core/models.py:928
|
||||
#: build/lib/core/models.py:930 core/models.py:930
|
||||
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:942 build/lib/core/models.py:1346
|
||||
#: core/models.py:942 core/models.py:1346
|
||||
msgid "Untitled Document"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1347 core/models.py:1347
|
||||
msgid "Open"
|
||||
msgstr "Abrir"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1382 core/models.py:1382
|
||||
#, 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:1386 core/models.py:1386
|
||||
#, 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:1392 core/models.py:1392
|
||||
#, 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:1493 core/models.py:1493
|
||||
msgid "Document/user link trace"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link traces"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1500 core/models.py:1500
|
||||
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:1523 core/models.py:1523
|
||||
msgid "Document favorite"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorites"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1530 core/models.py:1530
|
||||
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:1552 core/models.py:1552
|
||||
msgid "Document/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1559 core/models.py:1559
|
||||
msgid "This user is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1565 core/models.py:1565
|
||||
msgid "This team is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1571 core/models.py:1571
|
||||
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:1722 core/models.py:1722
|
||||
msgid "Document ask for access"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for accesses"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1729 core/models.py:1729
|
||||
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:1786 core/models.py:1786
|
||||
#, 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:1790 core/models.py:1790
|
||||
#, 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:1796 core/models.py:1796
|
||||
#, 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:1838 core/models.py:1838
|
||||
msgid "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
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:1842 build/lib/core/models.py:1894
|
||||
#: core/models.py:1842 core/models.py:1894
|
||||
msgid "Anonymous"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1939 core/models.py:1939
|
||||
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:1943 core/models.py:1943
|
||||
msgid "Reaction"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reactions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1954 core/models.py:1954
|
||||
msgid "email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
msgid "Document invitation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1994 core/models.py:1994
|
||||
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:702 impress/settings.py:702
|
||||
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-03-25 16:42+0000\n"
|
||||
"PO-Revision-Date: 2026-03-25 16:55\n"
|
||||
"POT-Creation-Date: 2026-03-12 13:31+0000\n"
|
||||
"PO-Revision-Date: 2026-03-13 16:53\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Russian\n"
|
||||
"Language: ru_RU\n"
|
||||
@@ -46,40 +46,36 @@ msgstr "Древовидная структура"
|
||||
msgid "Title"
|
||||
msgstr "Заголовок"
|
||||
|
||||
#: build/lib/core/api/filters.py:51 core/api/filters.py:51
|
||||
msgid "Search"
|
||||
msgstr "Поиск"
|
||||
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
#: build/lib/core/api/filters.py:62 core/api/filters.py:62
|
||||
msgid "Creator is me"
|
||||
msgstr "Создатель - я"
|
||||
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
msgid "Masked"
|
||||
msgstr "Скрытый"
|
||||
|
||||
#: build/lib/core/api/filters.py:71 core/api/filters.py:71
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
msgid "Favorite"
|
||||
msgstr "Избранное"
|
||||
|
||||
#: build/lib/core/api/serializers.py:535 core/api/serializers.py:535
|
||||
#: build/lib/core/api/serializers.py:526 core/api/serializers.py:526
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Новый документ был создан от вашего имени!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:539 core/api/serializers.py:539
|
||||
#: build/lib/core/api/serializers.py:530 core/api/serializers.py:530
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "Вы назначены владельцем для нового документа:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:575 core/api/serializers.py:575
|
||||
#: build/lib/core/api/serializers.py:566 core/api/serializers.py:566
|
||||
msgid "This field is required."
|
||||
msgstr "Это поле обязательное."
|
||||
|
||||
#: build/lib/core/api/serializers.py:586 core/api/serializers.py:586
|
||||
#: build/lib/core/api/serializers.py:577 core/api/serializers.py:577
|
||||
#, 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:1315 core/api/viewsets.py:1315
|
||||
#: build/lib/core/api/viewsets.py:1298 core/api/viewsets.py:1298
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "копия {title}"
|
||||
@@ -251,46 +247,46 @@ msgstr "пользователь"
|
||||
msgid "users"
|
||||
msgstr "пользователи"
|
||||
|
||||
#: build/lib/core/models.py:376 core/models.py:376
|
||||
#: build/lib/core/models.py:378 core/models.py:378
|
||||
msgid "Active email address"
|
||||
msgstr "Активный адрес электронной почты"
|
||||
|
||||
#: build/lib/core/models.py:377 core/models.py:377
|
||||
#: build/lib/core/models.py:379 core/models.py:379
|
||||
msgid "Email address to deactivate"
|
||||
msgstr "Адрес электронной почты для деактивации"
|
||||
|
||||
#: build/lib/core/models.py:404 core/models.py:404
|
||||
#: build/lib/core/models.py:406 core/models.py:406
|
||||
msgid "Unique ID in the source file"
|
||||
msgstr "Уникальный идентификатор в исходном файле"
|
||||
|
||||
#: build/lib/core/models.py:410 build/lib/core/models.py:708 core/models.py:410
|
||||
#: core/models.py:708
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
msgid "Pending"
|
||||
msgstr "В обработке"
|
||||
|
||||
#: build/lib/core/models.py:411 core/models.py:411
|
||||
#: build/lib/core/models.py:413 core/models.py:413
|
||||
msgid "Ready"
|
||||
msgstr "Готово"
|
||||
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
#: build/lib/core/models.py:414 build/lib/core/models.py:712 core/models.py:414
|
||||
#: core/models.py:712
|
||||
msgid "Done"
|
||||
msgstr "Выполнено"
|
||||
|
||||
#: build/lib/core/models.py:413 build/lib/core/models.py:711 core/models.py:413
|
||||
#: core/models.py:711
|
||||
#: build/lib/core/models.py:415 build/lib/core/models.py:713 core/models.py:415
|
||||
#: core/models.py:713
|
||||
msgid "Error"
|
||||
msgstr "Ошибка"
|
||||
|
||||
#: build/lib/core/models.py:421 core/models.py:421
|
||||
#: build/lib/core/models.py:423 core/models.py:423
|
||||
msgid "user reconciliation"
|
||||
msgstr "сверка данных пользователя"
|
||||
|
||||
#: build/lib/core/models.py:422 core/models.py:422
|
||||
#: build/lib/core/models.py:424 core/models.py:424
|
||||
msgid "user reconciliations"
|
||||
msgstr "сверки данных пользователя"
|
||||
|
||||
#: build/lib/core/models.py:660 core/models.py:660
|
||||
#: build/lib/core/models.py:662 core/models.py:662
|
||||
msgid "You have requested a reconciliation of your user accounts on Docs.\n"
|
||||
" To confirm that you are the one who initiated the request\n"
|
||||
" and that this email belongs to you:"
|
||||
@@ -298,54 +294,54 @@ msgstr "Вы запросили сверку учётных записей по
|
||||
" Чтобы подтвердить факт того, что вы являетесь инициатором запроса\n"
|
||||
" и что этот адрес принадлежит вам:"
|
||||
|
||||
#: build/lib/core/models.py:666 core/models.py:666
|
||||
#: build/lib/core/models.py:668 core/models.py:668
|
||||
msgid "Confirm by clicking the link to start the reconciliation"
|
||||
msgstr "Чтобы начать сверку, подтвердите это, нажав на ссылку"
|
||||
|
||||
#: build/lib/core/models.py:671 build/lib/core/models.py:777 core/models.py:671
|
||||
#: core/models.py:777
|
||||
#: build/lib/core/models.py:673 build/lib/core/models.py:779 core/models.py:673
|
||||
#: core/models.py:779
|
||||
msgid "Click here"
|
||||
msgstr "Нажмите здесь"
|
||||
|
||||
#: build/lib/core/models.py:672 core/models.py:672
|
||||
#: build/lib/core/models.py:674 core/models.py:674
|
||||
msgid "Confirm"
|
||||
msgstr "Подтверждение"
|
||||
|
||||
#: build/lib/core/models.py:683 core/models.py:683
|
||||
#: build/lib/core/models.py:685 core/models.py:685
|
||||
msgid "Your reconciliation request has been processed.\n"
|
||||
" New documents are likely associated with your account:"
|
||||
msgstr "Ваш запрос на сверку был обработан.\n"
|
||||
" Новые документы, вероятно, связаны с вашей учётной записью:"
|
||||
|
||||
#: build/lib/core/models.py:688 core/models.py:688
|
||||
#: build/lib/core/models.py:690 core/models.py:690
|
||||
msgid "Your accounts have been merged"
|
||||
msgstr "Ваши учётные записи были объединены"
|
||||
|
||||
#: build/lib/core/models.py:693 core/models.py:693
|
||||
#: build/lib/core/models.py:695 core/models.py:695
|
||||
msgid "Click here to see"
|
||||
msgstr "Нажмите здесь, чтобы просмотреть"
|
||||
|
||||
#: build/lib/core/models.py:694 core/models.py:694
|
||||
#: build/lib/core/models.py:696 core/models.py:696
|
||||
msgid "See my documents"
|
||||
msgstr "Просмотреть мои документы"
|
||||
|
||||
#: build/lib/core/models.py:704 core/models.py:704
|
||||
#: build/lib/core/models.py:706 core/models.py:706
|
||||
msgid "CSV file"
|
||||
msgstr "CSV-файл"
|
||||
|
||||
#: build/lib/core/models.py:709 core/models.py:709
|
||||
#: build/lib/core/models.py:711 core/models.py:711
|
||||
msgid "Running"
|
||||
msgstr "Выполнение"
|
||||
|
||||
#: build/lib/core/models.py:719 core/models.py:719
|
||||
#: build/lib/core/models.py:721 core/models.py:721
|
||||
msgid "user reconciliation CSV import"
|
||||
msgstr "импорт из CSV сверки пользователей"
|
||||
|
||||
#: build/lib/core/models.py:720 core/models.py:720
|
||||
#: build/lib/core/models.py:722 core/models.py:722
|
||||
msgid "user reconciliation CSV imports"
|
||||
msgstr "импорты из CSV сверки пользователями"
|
||||
|
||||
#: build/lib/core/models.py:764 core/models.py:764
|
||||
#: build/lib/core/models.py:766 core/models.py:766
|
||||
#, python-brace-format
|
||||
msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" Reconciliation failed for the following email addresses:\n"
|
||||
@@ -358,175 +354,175 @@ msgstr "Ваш запрос на сверку не удался.\n"
|
||||
" Пожалуйста, проверьте, нет ли в них опечаток.\n"
|
||||
" Вы можете отправить ещё один запрос с действительными адресами электронной почты."
|
||||
|
||||
#: build/lib/core/models.py:772 core/models.py:772
|
||||
#: build/lib/core/models.py:774 core/models.py:774
|
||||
msgid "Reconciliation of your Docs accounts not completed"
|
||||
msgstr "Сверка ваших учётных записей Docs не завершена"
|
||||
|
||||
#: build/lib/core/models.py:778 core/models.py:778
|
||||
#: build/lib/core/models.py:780 core/models.py:780
|
||||
msgid "Make a new request"
|
||||
msgstr "Создать новый запрос"
|
||||
|
||||
#: build/lib/core/models.py:877 core/models.py:877
|
||||
#: build/lib/core/models.py:879 core/models.py:879
|
||||
msgid "title"
|
||||
msgstr "заголовок"
|
||||
|
||||
#: build/lib/core/models.py:878 core/models.py:878
|
||||
#: build/lib/core/models.py:880 core/models.py:880
|
||||
msgid "excerpt"
|
||||
msgstr "отрывок"
|
||||
|
||||
#: build/lib/core/models.py:927 core/models.py:927
|
||||
#: build/lib/core/models.py:929 core/models.py:929
|
||||
msgid "Document"
|
||||
msgstr "Документ"
|
||||
|
||||
#: build/lib/core/models.py:928 core/models.py:928
|
||||
#: build/lib/core/models.py:930 core/models.py:930
|
||||
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:942 build/lib/core/models.py:1346
|
||||
#: core/models.py:942 core/models.py:1346
|
||||
msgid "Untitled Document"
|
||||
msgstr "Безымянный документ"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1347 core/models.py:1347
|
||||
msgid "Open"
|
||||
msgstr "Открыть"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1382 core/models.py:1382
|
||||
#, 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:1386 core/models.py:1386
|
||||
#, 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:1392 core/models.py:1392
|
||||
#, 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:1493 core/models.py:1493
|
||||
msgid "Document/user link trace"
|
||||
msgstr "Трассировка связи документ/пользователь"
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link traces"
|
||||
msgstr "Трассировка связей документ/пользователь"
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1500 core/models.py:1500
|
||||
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:1523 core/models.py:1523
|
||||
msgid "Document favorite"
|
||||
msgstr "Избранный документ"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorites"
|
||||
msgstr "Избранные документы"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1530 core/models.py:1530
|
||||
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:1552 core/models.py:1552
|
||||
msgid "Document/user relation"
|
||||
msgstr "Отношение документ/пользователь"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relations"
|
||||
msgstr "Отношения документ/пользователь"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1559 core/models.py:1559
|
||||
msgid "This user is already in this document."
|
||||
msgstr "Этот пользователь уже имеет доступ к этому документу."
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1565 core/models.py:1565
|
||||
msgid "This team is already in this document."
|
||||
msgstr "Эта команда уже имеет доступ к этому документу."
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1571 core/models.py:1571
|
||||
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:1722 core/models.py:1722
|
||||
msgid "Document ask for access"
|
||||
msgstr "Документ запрашивает доступ"
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for accesses"
|
||||
msgstr "Документ запрашивает доступы"
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1729 core/models.py:1729
|
||||
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:1786 core/models.py:1786
|
||||
#, 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:1790 core/models.py:1790
|
||||
#, 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:1796 core/models.py:1796
|
||||
#, 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:1838 core/models.py:1838
|
||||
msgid "Thread"
|
||||
msgstr "Обсуждение"
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
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:1842 build/lib/core/models.py:1894
|
||||
#: core/models.py:1842 core/models.py:1894
|
||||
msgid "Anonymous"
|
||||
msgstr "Аноним"
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
msgid "Comment"
|
||||
msgstr "Комментарий"
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comments"
|
||||
msgstr "Комментарии"
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1939 core/models.py:1939
|
||||
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:1943 core/models.py:1943
|
||||
msgid "Reaction"
|
||||
msgstr "Реакция"
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reactions"
|
||||
msgstr "Реакции"
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1954 core/models.py:1954
|
||||
msgid "email address"
|
||||
msgstr "адрес электронной почты"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
msgid "Document invitation"
|
||||
msgstr "Приглашение для документа"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitations"
|
||||
msgstr "Приглашения для документов"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1994 core/models.py:1994
|
||||
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:702 impress/settings.py:702
|
||||
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-03-25 16:42+0000\n"
|
||||
"PO-Revision-Date: 2026-03-25 16:55\n"
|
||||
"POT-Creation-Date: 2026-03-12 13:31+0000\n"
|
||||
"PO-Revision-Date: 2026-03-13 16:53\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Slovenian\n"
|
||||
"Language: sl_SI\n"
|
||||
@@ -46,40 +46,36 @@ msgstr "Drevesna struktura"
|
||||
msgid "Title"
|
||||
msgstr "Naslov"
|
||||
|
||||
#: build/lib/core/api/filters.py:51 core/api/filters.py:51
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
#: build/lib/core/api/filters.py:62 core/api/filters.py:62
|
||||
msgid "Creator is me"
|
||||
msgstr "Ustvaril sem jaz"
|
||||
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
msgid "Masked"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:71 core/api/filters.py:71
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
msgid "Favorite"
|
||||
msgstr "Priljubljena"
|
||||
|
||||
#: build/lib/core/api/serializers.py:535 core/api/serializers.py:535
|
||||
#: build/lib/core/api/serializers.py:526 core/api/serializers.py:526
|
||||
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:539 core/api/serializers.py:539
|
||||
#: build/lib/core/api/serializers.py:530 core/api/serializers.py:530
|
||||
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:575 core/api/serializers.py:575
|
||||
#: build/lib/core/api/serializers.py:566 core/api/serializers.py:566
|
||||
msgid "This field is required."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:586 core/api/serializers.py:586
|
||||
#: build/lib/core/api/serializers.py:577 core/api/serializers.py:577
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1315 core/api/viewsets.py:1315
|
||||
#: build/lib/core/api/viewsets.py:1298 core/api/viewsets.py:1298
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr ""
|
||||
@@ -251,98 +247,98 @@ msgstr "uporabnik"
|
||||
msgid "users"
|
||||
msgstr "uporabniki"
|
||||
|
||||
#: build/lib/core/models.py:376 core/models.py:376
|
||||
#: build/lib/core/models.py:378 core/models.py:378
|
||||
msgid "Active email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:377 core/models.py:377
|
||||
#: build/lib/core/models.py:379 core/models.py:379
|
||||
msgid "Email address to deactivate"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:404 core/models.py:404
|
||||
#: build/lib/core/models.py:406 core/models.py:406
|
||||
msgid "Unique ID in the source file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:410 build/lib/core/models.py:708 core/models.py:410
|
||||
#: core/models.py:708
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:411 core/models.py:411
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 core/models.py:413
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:414 build/lib/core/models.py:712 core/models.py:414
|
||||
#: core/models.py:712
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 build/lib/core/models.py:711 core/models.py:413
|
||||
#: core/models.py:711
|
||||
#: build/lib/core/models.py:415 build/lib/core/models.py:713 core/models.py:415
|
||||
#: core/models.py:713
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:421 core/models.py:421
|
||||
#: build/lib/core/models.py:423 core/models.py:423
|
||||
msgid "user reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:422 core/models.py:422
|
||||
#: build/lib/core/models.py:424 core/models.py:424
|
||||
msgid "user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:660 core/models.py:660
|
||||
#: build/lib/core/models.py:662 core/models.py:662
|
||||
msgid "You have requested a reconciliation of your user accounts on Docs.\n"
|
||||
" To confirm that you are the one who initiated the request\n"
|
||||
" and that this email belongs to you:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:666 core/models.py:666
|
||||
#: build/lib/core/models.py:668 core/models.py:668
|
||||
msgid "Confirm by clicking the link to start the reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:671 build/lib/core/models.py:777 core/models.py:671
|
||||
#: core/models.py:777
|
||||
#: build/lib/core/models.py:673 build/lib/core/models.py:779 core/models.py:673
|
||||
#: core/models.py:779
|
||||
msgid "Click here"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:672 core/models.py:672
|
||||
#: build/lib/core/models.py:674 core/models.py:674
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:683 core/models.py:683
|
||||
#: build/lib/core/models.py:685 core/models.py:685
|
||||
msgid "Your reconciliation request has been processed.\n"
|
||||
" New documents are likely associated with your account:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:688 core/models.py:688
|
||||
#: build/lib/core/models.py:690 core/models.py:690
|
||||
msgid "Your accounts have been merged"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:693 core/models.py:693
|
||||
#: build/lib/core/models.py:695 core/models.py:695
|
||||
msgid "Click here to see"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:694 core/models.py:694
|
||||
#: build/lib/core/models.py:696 core/models.py:696
|
||||
msgid "See my documents"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:704 core/models.py:704
|
||||
#: build/lib/core/models.py:706 core/models.py:706
|
||||
msgid "CSV file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:709 core/models.py:709
|
||||
#: build/lib/core/models.py:711 core/models.py:711
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:719 core/models.py:719
|
||||
#: build/lib/core/models.py:721 core/models.py:721
|
||||
msgid "user reconciliation CSV import"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:720 core/models.py:720
|
||||
#: build/lib/core/models.py:722 core/models.py:722
|
||||
msgid "user reconciliation CSV imports"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:764 core/models.py:764
|
||||
#: build/lib/core/models.py:766 core/models.py:766
|
||||
#, python-brace-format
|
||||
msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" Reconciliation failed for the following email addresses:\n"
|
||||
@@ -351,175 +347,175 @@ msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" You can submit another request with the valid email addresses."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:772 core/models.py:772
|
||||
#: build/lib/core/models.py:774 core/models.py:774
|
||||
msgid "Reconciliation of your Docs accounts not completed"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:778 core/models.py:778
|
||||
#: build/lib/core/models.py:780 core/models.py:780
|
||||
msgid "Make a new request"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:877 core/models.py:877
|
||||
#: build/lib/core/models.py:879 core/models.py:879
|
||||
msgid "title"
|
||||
msgstr "naslov"
|
||||
|
||||
#: build/lib/core/models.py:878 core/models.py:878
|
||||
#: build/lib/core/models.py:880 core/models.py:880
|
||||
msgid "excerpt"
|
||||
msgstr "odlomek"
|
||||
|
||||
#: build/lib/core/models.py:927 core/models.py:927
|
||||
#: build/lib/core/models.py:929 core/models.py:929
|
||||
msgid "Document"
|
||||
msgstr "Dokument"
|
||||
|
||||
#: build/lib/core/models.py:928 core/models.py:928
|
||||
#: build/lib/core/models.py:930 core/models.py:930
|
||||
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:942 build/lib/core/models.py:1346
|
||||
#: core/models.py:942 core/models.py:1346
|
||||
msgid "Untitled Document"
|
||||
msgstr "Dokument brez naslova"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1347 core/models.py:1347
|
||||
msgid "Open"
|
||||
msgstr "Odpri"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1382 core/models.py:1382
|
||||
#, 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:1386 core/models.py:1386
|
||||
#, 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:1392 core/models.py:1392
|
||||
#, 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:1493 core/models.py:1493
|
||||
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:1494 core/models.py:1494
|
||||
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:1500 core/models.py:1500
|
||||
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:1523 core/models.py:1523
|
||||
msgid "Document favorite"
|
||||
msgstr "Priljubljeni dokument"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorites"
|
||||
msgstr "Priljubljeni dokumenti"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1530 core/models.py:1530
|
||||
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:1552 core/models.py:1552
|
||||
msgid "Document/user relation"
|
||||
msgstr "Odnos dokument/uporabnik"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relations"
|
||||
msgstr "Odnosi dokument/uporabnik"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1559 core/models.py:1559
|
||||
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:1565 core/models.py:1565
|
||||
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:1571 core/models.py:1571
|
||||
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:1722 core/models.py:1722
|
||||
msgid "Document ask for access"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for accesses"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1729 core/models.py:1729
|
||||
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:1786 core/models.py:1786
|
||||
#, 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:1790 core/models.py:1790
|
||||
#, 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:1796 core/models.py:1796
|
||||
#, 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:1838 core/models.py:1838
|
||||
msgid "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
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:1842 build/lib/core/models.py:1894
|
||||
#: core/models.py:1842 core/models.py:1894
|
||||
msgid "Anonymous"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1939 core/models.py:1939
|
||||
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:1943 core/models.py:1943
|
||||
msgid "Reaction"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reactions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1954 core/models.py:1954
|
||||
msgid "email address"
|
||||
msgstr "elektronski naslov"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
msgid "Document invitation"
|
||||
msgstr "Vabilo na dokument"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitations"
|
||||
msgstr "Vabila na dokument"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1994 core/models.py:1994
|
||||
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:702 impress/settings.py:702
|
||||
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-03-25 16:42+0000\n"
|
||||
"PO-Revision-Date: 2026-03-25 16:55\n"
|
||||
"POT-Creation-Date: 2026-03-12 13:31+0000\n"
|
||||
"PO-Revision-Date: 2026-03-13 16:53\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Swedish\n"
|
||||
"Language: sv_SE\n"
|
||||
@@ -46,40 +46,36 @@ msgstr ""
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
|
||||
#: build/lib/core/api/filters.py:51 core/api/filters.py:51
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
#: build/lib/core/api/filters.py:62 core/api/filters.py:62
|
||||
msgid "Creator is me"
|
||||
msgstr "Skaparen är jag"
|
||||
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
msgid "Masked"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:71 core/api/filters.py:71
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
msgid "Favorite"
|
||||
msgstr "Favoriter"
|
||||
|
||||
#: build/lib/core/api/serializers.py:535 core/api/serializers.py:535
|
||||
#: build/lib/core/api/serializers.py:526 core/api/serializers.py:526
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Ett nytt dokument skapades åt dig!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:539 core/api/serializers.py:539
|
||||
#: build/lib/core/api/serializers.py:530 core/api/serializers.py:530
|
||||
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:575 core/api/serializers.py:575
|
||||
#: build/lib/core/api/serializers.py:566 core/api/serializers.py:566
|
||||
msgid "This field is required."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:586 core/api/serializers.py:586
|
||||
#: build/lib/core/api/serializers.py:577 core/api/serializers.py:577
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1315 core/api/viewsets.py:1315
|
||||
#: build/lib/core/api/viewsets.py:1298 core/api/viewsets.py:1298
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr ""
|
||||
@@ -251,98 +247,98 @@ msgstr ""
|
||||
msgid "users"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:376 core/models.py:376
|
||||
#: build/lib/core/models.py:378 core/models.py:378
|
||||
msgid "Active email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:377 core/models.py:377
|
||||
#: build/lib/core/models.py:379 core/models.py:379
|
||||
msgid "Email address to deactivate"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:404 core/models.py:404
|
||||
#: build/lib/core/models.py:406 core/models.py:406
|
||||
msgid "Unique ID in the source file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:410 build/lib/core/models.py:708 core/models.py:410
|
||||
#: core/models.py:708
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:411 core/models.py:411
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 core/models.py:413
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:414 build/lib/core/models.py:712 core/models.py:414
|
||||
#: core/models.py:712
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 build/lib/core/models.py:711 core/models.py:413
|
||||
#: core/models.py:711
|
||||
#: build/lib/core/models.py:415 build/lib/core/models.py:713 core/models.py:415
|
||||
#: core/models.py:713
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:421 core/models.py:421
|
||||
#: build/lib/core/models.py:423 core/models.py:423
|
||||
msgid "user reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:422 core/models.py:422
|
||||
#: build/lib/core/models.py:424 core/models.py:424
|
||||
msgid "user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:660 core/models.py:660
|
||||
#: build/lib/core/models.py:662 core/models.py:662
|
||||
msgid "You have requested a reconciliation of your user accounts on Docs.\n"
|
||||
" To confirm that you are the one who initiated the request\n"
|
||||
" and that this email belongs to you:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:666 core/models.py:666
|
||||
#: build/lib/core/models.py:668 core/models.py:668
|
||||
msgid "Confirm by clicking the link to start the reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:671 build/lib/core/models.py:777 core/models.py:671
|
||||
#: core/models.py:777
|
||||
#: build/lib/core/models.py:673 build/lib/core/models.py:779 core/models.py:673
|
||||
#: core/models.py:779
|
||||
msgid "Click here"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:672 core/models.py:672
|
||||
#: build/lib/core/models.py:674 core/models.py:674
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:683 core/models.py:683
|
||||
#: build/lib/core/models.py:685 core/models.py:685
|
||||
msgid "Your reconciliation request has been processed.\n"
|
||||
" New documents are likely associated with your account:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:688 core/models.py:688
|
||||
#: build/lib/core/models.py:690 core/models.py:690
|
||||
msgid "Your accounts have been merged"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:693 core/models.py:693
|
||||
#: build/lib/core/models.py:695 core/models.py:695
|
||||
msgid "Click here to see"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:694 core/models.py:694
|
||||
#: build/lib/core/models.py:696 core/models.py:696
|
||||
msgid "See my documents"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:704 core/models.py:704
|
||||
#: build/lib/core/models.py:706 core/models.py:706
|
||||
msgid "CSV file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:709 core/models.py:709
|
||||
#: build/lib/core/models.py:711 core/models.py:711
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:719 core/models.py:719
|
||||
#: build/lib/core/models.py:721 core/models.py:721
|
||||
msgid "user reconciliation CSV import"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:720 core/models.py:720
|
||||
#: build/lib/core/models.py:722 core/models.py:722
|
||||
msgid "user reconciliation CSV imports"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:764 core/models.py:764
|
||||
#: build/lib/core/models.py:766 core/models.py:766
|
||||
#, python-brace-format
|
||||
msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" Reconciliation failed for the following email addresses:\n"
|
||||
@@ -351,175 +347,175 @@ msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" You can submit another request with the valid email addresses."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:772 core/models.py:772
|
||||
#: build/lib/core/models.py:774 core/models.py:774
|
||||
msgid "Reconciliation of your Docs accounts not completed"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:778 core/models.py:778
|
||||
#: build/lib/core/models.py:780 core/models.py:780
|
||||
msgid "Make a new request"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:877 core/models.py:877
|
||||
#: build/lib/core/models.py:879 core/models.py:879
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:878 core/models.py:878
|
||||
#: build/lib/core/models.py:880 core/models.py:880
|
||||
msgid "excerpt"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:927 core/models.py:927
|
||||
#: build/lib/core/models.py:929 core/models.py:929
|
||||
msgid "Document"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:928 core/models.py:928
|
||||
#: build/lib/core/models.py:930 core/models.py:930
|
||||
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:942 build/lib/core/models.py:1346
|
||||
#: core/models.py:942 core/models.py:1346
|
||||
msgid "Untitled Document"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1347 core/models.py:1347
|
||||
msgid "Open"
|
||||
msgstr "Öppna"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1382 core/models.py:1382
|
||||
#, 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:1386 core/models.py:1386
|
||||
#, 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:1392 core/models.py:1392
|
||||
#, 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:1493 core/models.py:1493
|
||||
msgid "Document/user link trace"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link traces"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1500 core/models.py:1500
|
||||
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:1523 core/models.py:1523
|
||||
msgid "Document favorite"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorites"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1530 core/models.py:1530
|
||||
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:1552 core/models.py:1552
|
||||
msgid "Document/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1559 core/models.py:1559
|
||||
msgid "This user is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1565 core/models.py:1565
|
||||
msgid "This team is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1571 core/models.py:1571
|
||||
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:1722 core/models.py:1722
|
||||
msgid "Document ask for access"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for accesses"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1729 core/models.py:1729
|
||||
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:1786 core/models.py:1786
|
||||
#, 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:1790 core/models.py:1790
|
||||
#, 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:1796 core/models.py:1796
|
||||
#, 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:1838 core/models.py:1838
|
||||
msgid "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
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:1842 build/lib/core/models.py:1894
|
||||
#: core/models.py:1842 core/models.py:1894
|
||||
msgid "Anonymous"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1939 core/models.py:1939
|
||||
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:1943 core/models.py:1943
|
||||
msgid "Reaction"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reactions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1954 core/models.py:1954
|
||||
msgid "email address"
|
||||
msgstr "e-postadress"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
msgid "Document invitation"
|
||||
msgstr "Bjud in dokument"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitations"
|
||||
msgstr "Inbjudningar dokument"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1994 core/models.py:1994
|
||||
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:702 impress/settings.py:702
|
||||
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-03-25 16:42+0000\n"
|
||||
"PO-Revision-Date: 2026-03-25 16:55\n"
|
||||
"POT-Creation-Date: 2026-03-12 13:31+0000\n"
|
||||
"PO-Revision-Date: 2026-03-13 16:53\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Turkish\n"
|
||||
"Language: tr_TR\n"
|
||||
@@ -46,40 +46,36 @@ msgstr ""
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:51 core/api/filters.py:51
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
#: build/lib/core/api/filters.py:62 core/api/filters.py:62
|
||||
msgid "Creator is me"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
msgid "Masked"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:71 core/api/filters.py:71
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
msgid "Favorite"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:535 core/api/serializers.py:535
|
||||
#: build/lib/core/api/serializers.py:526 core/api/serializers.py:526
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:539 core/api/serializers.py:539
|
||||
#: build/lib/core/api/serializers.py:530 core/api/serializers.py:530
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:575 core/api/serializers.py:575
|
||||
#: build/lib/core/api/serializers.py:566 core/api/serializers.py:566
|
||||
msgid "This field is required."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/serializers.py:586 core/api/serializers.py:586
|
||||
#: build/lib/core/api/serializers.py:577 core/api/serializers.py:577
|
||||
#, python-format
|
||||
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/viewsets.py:1315 core/api/viewsets.py:1315
|
||||
#: build/lib/core/api/viewsets.py:1298 core/api/viewsets.py:1298
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr ""
|
||||
@@ -251,98 +247,98 @@ msgstr ""
|
||||
msgid "users"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:376 core/models.py:376
|
||||
#: build/lib/core/models.py:378 core/models.py:378
|
||||
msgid "Active email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:377 core/models.py:377
|
||||
#: build/lib/core/models.py:379 core/models.py:379
|
||||
msgid "Email address to deactivate"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:404 core/models.py:404
|
||||
#: build/lib/core/models.py:406 core/models.py:406
|
||||
msgid "Unique ID in the source file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:410 build/lib/core/models.py:708 core/models.py:410
|
||||
#: core/models.py:708
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:411 core/models.py:411
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 core/models.py:413
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:414 build/lib/core/models.py:712 core/models.py:414
|
||||
#: core/models.py:712
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 build/lib/core/models.py:711 core/models.py:413
|
||||
#: core/models.py:711
|
||||
#: build/lib/core/models.py:415 build/lib/core/models.py:713 core/models.py:415
|
||||
#: core/models.py:713
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:421 core/models.py:421
|
||||
#: build/lib/core/models.py:423 core/models.py:423
|
||||
msgid "user reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:422 core/models.py:422
|
||||
#: build/lib/core/models.py:424 core/models.py:424
|
||||
msgid "user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:660 core/models.py:660
|
||||
#: build/lib/core/models.py:662 core/models.py:662
|
||||
msgid "You have requested a reconciliation of your user accounts on Docs.\n"
|
||||
" To confirm that you are the one who initiated the request\n"
|
||||
" and that this email belongs to you:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:666 core/models.py:666
|
||||
#: build/lib/core/models.py:668 core/models.py:668
|
||||
msgid "Confirm by clicking the link to start the reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:671 build/lib/core/models.py:777 core/models.py:671
|
||||
#: core/models.py:777
|
||||
#: build/lib/core/models.py:673 build/lib/core/models.py:779 core/models.py:673
|
||||
#: core/models.py:779
|
||||
msgid "Click here"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:672 core/models.py:672
|
||||
#: build/lib/core/models.py:674 core/models.py:674
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:683 core/models.py:683
|
||||
#: build/lib/core/models.py:685 core/models.py:685
|
||||
msgid "Your reconciliation request has been processed.\n"
|
||||
" New documents are likely associated with your account:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:688 core/models.py:688
|
||||
#: build/lib/core/models.py:690 core/models.py:690
|
||||
msgid "Your accounts have been merged"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:693 core/models.py:693
|
||||
#: build/lib/core/models.py:695 core/models.py:695
|
||||
msgid "Click here to see"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:694 core/models.py:694
|
||||
#: build/lib/core/models.py:696 core/models.py:696
|
||||
msgid "See my documents"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:704 core/models.py:704
|
||||
#: build/lib/core/models.py:706 core/models.py:706
|
||||
msgid "CSV file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:709 core/models.py:709
|
||||
#: build/lib/core/models.py:711 core/models.py:711
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:719 core/models.py:719
|
||||
#: build/lib/core/models.py:721 core/models.py:721
|
||||
msgid "user reconciliation CSV import"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:720 core/models.py:720
|
||||
#: build/lib/core/models.py:722 core/models.py:722
|
||||
msgid "user reconciliation CSV imports"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:764 core/models.py:764
|
||||
#: build/lib/core/models.py:766 core/models.py:766
|
||||
#, python-brace-format
|
||||
msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" Reconciliation failed for the following email addresses:\n"
|
||||
@@ -351,175 +347,175 @@ msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" You can submit another request with the valid email addresses."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:772 core/models.py:772
|
||||
#: build/lib/core/models.py:774 core/models.py:774
|
||||
msgid "Reconciliation of your Docs accounts not completed"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:778 core/models.py:778
|
||||
#: build/lib/core/models.py:780 core/models.py:780
|
||||
msgid "Make a new request"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:877 core/models.py:877
|
||||
#: build/lib/core/models.py:879 core/models.py:879
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:878 core/models.py:878
|
||||
#: build/lib/core/models.py:880 core/models.py:880
|
||||
msgid "excerpt"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:927 core/models.py:927
|
||||
#: build/lib/core/models.py:929 core/models.py:929
|
||||
msgid "Document"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:928 core/models.py:928
|
||||
#: build/lib/core/models.py:930 core/models.py:930
|
||||
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:942 build/lib/core/models.py:1346
|
||||
#: core/models.py:942 core/models.py:1346
|
||||
msgid "Untitled Document"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1347 core/models.py:1347
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1382 core/models.py:1382
|
||||
#, 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:1386 core/models.py:1386
|
||||
#, 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:1392 core/models.py:1392
|
||||
#, 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:1493 core/models.py:1493
|
||||
msgid "Document/user link trace"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link traces"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1500 core/models.py:1500
|
||||
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:1523 core/models.py:1523
|
||||
msgid "Document favorite"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorites"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1530 core/models.py:1530
|
||||
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:1552 core/models.py:1552
|
||||
msgid "Document/user relation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1559 core/models.py:1559
|
||||
msgid "This user is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1565 core/models.py:1565
|
||||
msgid "This team is already in this document."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1571 core/models.py:1571
|
||||
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:1722 core/models.py:1722
|
||||
msgid "Document ask for access"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for accesses"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1729 core/models.py:1729
|
||||
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:1786 core/models.py:1786
|
||||
#, 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:1790 core/models.py:1790
|
||||
#, 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:1796 core/models.py:1796
|
||||
#, 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:1838 core/models.py:1838
|
||||
msgid "Thread"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
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:1842 build/lib/core/models.py:1894
|
||||
#: core/models.py:1842 core/models.py:1894
|
||||
msgid "Anonymous"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1939 core/models.py:1939
|
||||
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:1943 core/models.py:1943
|
||||
msgid "Reaction"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reactions"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1954 core/models.py:1954
|
||||
msgid "email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
msgid "Document invitation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1994 core/models.py:1994
|
||||
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:702 impress/settings.py:702
|
||||
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-03-25 16:42+0000\n"
|
||||
"PO-Revision-Date: 2026-03-25 16:55\n"
|
||||
"POT-Creation-Date: 2026-03-12 13:31+0000\n"
|
||||
"PO-Revision-Date: 2026-03-13 16:53\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Ukrainian\n"
|
||||
"Language: uk_UA\n"
|
||||
@@ -46,40 +46,36 @@ msgstr "Ієрархічна структура"
|
||||
msgid "Title"
|
||||
msgstr "Заголовок"
|
||||
|
||||
#: build/lib/core/api/filters.py:51 core/api/filters.py:51
|
||||
msgid "Search"
|
||||
msgstr "Пошук"
|
||||
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
#: build/lib/core/api/filters.py:62 core/api/filters.py:62
|
||||
msgid "Creator is me"
|
||||
msgstr "Творець — я"
|
||||
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
msgid "Masked"
|
||||
msgstr "Приховано"
|
||||
|
||||
#: build/lib/core/api/filters.py:71 core/api/filters.py:71
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
msgid "Favorite"
|
||||
msgstr "Обране"
|
||||
|
||||
#: build/lib/core/api/serializers.py:535 core/api/serializers.py:535
|
||||
#: build/lib/core/api/serializers.py:526 core/api/serializers.py:526
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "Новий документ був створений від вашого імені!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:539 core/api/serializers.py:539
|
||||
#: build/lib/core/api/serializers.py:530 core/api/serializers.py:530
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "Ви тепер є власником нового документа:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:575 core/api/serializers.py:575
|
||||
#: build/lib/core/api/serializers.py:566 core/api/serializers.py:566
|
||||
msgid "This field is required."
|
||||
msgstr "Це поле є обов’язковим."
|
||||
|
||||
#: build/lib/core/api/serializers.py:586 core/api/serializers.py:586
|
||||
#: build/lib/core/api/serializers.py:577 core/api/serializers.py:577
|
||||
#, 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:1315 core/api/viewsets.py:1315
|
||||
#: build/lib/core/api/viewsets.py:1298 core/api/viewsets.py:1298
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "копія {title}"
|
||||
@@ -251,46 +247,46 @@ msgstr "користувач"
|
||||
msgid "users"
|
||||
msgstr "користувачі"
|
||||
|
||||
#: build/lib/core/models.py:376 core/models.py:376
|
||||
#: build/lib/core/models.py:378 core/models.py:378
|
||||
msgid "Active email address"
|
||||
msgstr "Активна електронна адреса"
|
||||
|
||||
#: build/lib/core/models.py:377 core/models.py:377
|
||||
#: build/lib/core/models.py:379 core/models.py:379
|
||||
msgid "Email address to deactivate"
|
||||
msgstr "Електронна адреса, що буде деактивована"
|
||||
|
||||
#: build/lib/core/models.py:404 core/models.py:404
|
||||
#: build/lib/core/models.py:406 core/models.py:406
|
||||
msgid "Unique ID in the source file"
|
||||
msgstr "Унікальний ідентифікатор у вихідному файлі"
|
||||
|
||||
#: build/lib/core/models.py:410 build/lib/core/models.py:708 core/models.py:410
|
||||
#: core/models.py:708
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
msgid "Pending"
|
||||
msgstr "В очікуванні"
|
||||
|
||||
#: build/lib/core/models.py:411 core/models.py:411
|
||||
#: build/lib/core/models.py:413 core/models.py:413
|
||||
msgid "Ready"
|
||||
msgstr "Готово"
|
||||
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
#: build/lib/core/models.py:414 build/lib/core/models.py:712 core/models.py:414
|
||||
#: core/models.py:712
|
||||
msgid "Done"
|
||||
msgstr "Виконано"
|
||||
|
||||
#: build/lib/core/models.py:413 build/lib/core/models.py:711 core/models.py:413
|
||||
#: core/models.py:711
|
||||
#: build/lib/core/models.py:415 build/lib/core/models.py:713 core/models.py:415
|
||||
#: core/models.py:713
|
||||
msgid "Error"
|
||||
msgstr "Помилка"
|
||||
|
||||
#: build/lib/core/models.py:421 core/models.py:421
|
||||
#: build/lib/core/models.py:423 core/models.py:423
|
||||
msgid "user reconciliation"
|
||||
msgstr "узгодження користувачів"
|
||||
|
||||
#: build/lib/core/models.py:422 core/models.py:422
|
||||
#: build/lib/core/models.py:424 core/models.py:424
|
||||
msgid "user reconciliations"
|
||||
msgstr "узгодження користувачів"
|
||||
|
||||
#: build/lib/core/models.py:660 core/models.py:660
|
||||
#: build/lib/core/models.py:662 core/models.py:662
|
||||
msgid "You have requested a reconciliation of your user accounts on Docs.\n"
|
||||
" To confirm that you are the one who initiated the request\n"
|
||||
" and that this email belongs to you:"
|
||||
@@ -298,54 +294,54 @@ msgstr "Ви запросили узгодження своїх облікови
|
||||
" Щоб підтвердити, що саме ви ініціювали запит\n"
|
||||
" і що ця електронна адреса належить вам:"
|
||||
|
||||
#: build/lib/core/models.py:666 core/models.py:666
|
||||
#: build/lib/core/models.py:668 core/models.py:668
|
||||
msgid "Confirm by clicking the link to start the reconciliation"
|
||||
msgstr "Підтвердіть, натиснувши на посилання, щоб почати узгодження"
|
||||
|
||||
#: build/lib/core/models.py:671 build/lib/core/models.py:777 core/models.py:671
|
||||
#: core/models.py:777
|
||||
#: build/lib/core/models.py:673 build/lib/core/models.py:779 core/models.py:673
|
||||
#: core/models.py:779
|
||||
msgid "Click here"
|
||||
msgstr "Натисніть тут"
|
||||
|
||||
#: build/lib/core/models.py:672 core/models.py:672
|
||||
#: build/lib/core/models.py:674 core/models.py:674
|
||||
msgid "Confirm"
|
||||
msgstr "Підтвердження"
|
||||
|
||||
#: build/lib/core/models.py:683 core/models.py:683
|
||||
#: build/lib/core/models.py:685 core/models.py:685
|
||||
msgid "Your reconciliation request has been processed.\n"
|
||||
" New documents are likely associated with your account:"
|
||||
msgstr "Ваш запит на узгодження оброблено.\n"
|
||||
" Нові документи, ймовірно, пов'язані з вашим обліковим записом:"
|
||||
|
||||
#: build/lib/core/models.py:688 core/models.py:688
|
||||
#: build/lib/core/models.py:690 core/models.py:690
|
||||
msgid "Your accounts have been merged"
|
||||
msgstr "Ваші облікові записи були об'єднані"
|
||||
|
||||
#: build/lib/core/models.py:693 core/models.py:693
|
||||
#: build/lib/core/models.py:695 core/models.py:695
|
||||
msgid "Click here to see"
|
||||
msgstr "Натисніть тут, щоб переглянути"
|
||||
|
||||
#: build/lib/core/models.py:694 core/models.py:694
|
||||
#: build/lib/core/models.py:696 core/models.py:696
|
||||
msgid "See my documents"
|
||||
msgstr "Переглянути мої документи"
|
||||
|
||||
#: build/lib/core/models.py:704 core/models.py:704
|
||||
#: build/lib/core/models.py:706 core/models.py:706
|
||||
msgid "CSV file"
|
||||
msgstr "CSV-файл"
|
||||
|
||||
#: build/lib/core/models.py:709 core/models.py:709
|
||||
#: build/lib/core/models.py:711 core/models.py:711
|
||||
msgid "Running"
|
||||
msgstr "Виконується"
|
||||
|
||||
#: build/lib/core/models.py:719 core/models.py:719
|
||||
#: build/lib/core/models.py:721 core/models.py:721
|
||||
msgid "user reconciliation CSV import"
|
||||
msgstr "імпорт CSV для узгодження користувачів"
|
||||
|
||||
#: build/lib/core/models.py:720 core/models.py:720
|
||||
#: build/lib/core/models.py:722 core/models.py:722
|
||||
msgid "user reconciliation CSV imports"
|
||||
msgstr "імпорт CSV для узгодження користувачів"
|
||||
|
||||
#: build/lib/core/models.py:764 core/models.py:764
|
||||
#: build/lib/core/models.py:766 core/models.py:766
|
||||
#, python-brace-format
|
||||
msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" Reconciliation failed for the following email addresses:\n"
|
||||
@@ -358,175 +354,175 @@ msgstr "Ваш запит на узгодження не був виконани
|
||||
" Перевірте, чи немає помилок.\n"
|
||||
" Ви можете надіслати інший запит із дійсними адресами електронної пошти."
|
||||
|
||||
#: build/lib/core/models.py:772 core/models.py:772
|
||||
#: build/lib/core/models.py:774 core/models.py:774
|
||||
msgid "Reconciliation of your Docs accounts not completed"
|
||||
msgstr "Узгодження ваших облікових записів не завершено"
|
||||
|
||||
#: build/lib/core/models.py:778 core/models.py:778
|
||||
#: build/lib/core/models.py:780 core/models.py:780
|
||||
msgid "Make a new request"
|
||||
msgstr "Зробити новий запит"
|
||||
|
||||
#: build/lib/core/models.py:877 core/models.py:877
|
||||
#: build/lib/core/models.py:879 core/models.py:879
|
||||
msgid "title"
|
||||
msgstr "заголовок"
|
||||
|
||||
#: build/lib/core/models.py:878 core/models.py:878
|
||||
#: build/lib/core/models.py:880 core/models.py:880
|
||||
msgid "excerpt"
|
||||
msgstr "уривок"
|
||||
|
||||
#: build/lib/core/models.py:927 core/models.py:927
|
||||
#: build/lib/core/models.py:929 core/models.py:929
|
||||
msgid "Document"
|
||||
msgstr "Документ"
|
||||
|
||||
#: build/lib/core/models.py:928 core/models.py:928
|
||||
#: build/lib/core/models.py:930 core/models.py:930
|
||||
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:942 build/lib/core/models.py:1346
|
||||
#: core/models.py:942 core/models.py:1346
|
||||
msgid "Untitled Document"
|
||||
msgstr "Документ без назви"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1347 core/models.py:1347
|
||||
msgid "Open"
|
||||
msgstr "Відкрити"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1382 core/models.py:1382
|
||||
#, 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:1386 core/models.py:1386
|
||||
#, 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:1392 core/models.py:1392
|
||||
#, 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:1493 core/models.py:1493
|
||||
msgid "Document/user link trace"
|
||||
msgstr "Трасування посилання Документ/користувач"
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link traces"
|
||||
msgstr "Трасування посилань Документ/користувач"
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1500 core/models.py:1500
|
||||
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:1523 core/models.py:1523
|
||||
msgid "Document favorite"
|
||||
msgstr "Обраний документ"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorites"
|
||||
msgstr "Обрані документи"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1530 core/models.py:1530
|
||||
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:1552 core/models.py:1552
|
||||
msgid "Document/user relation"
|
||||
msgstr "Відносини документ/користувач"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relations"
|
||||
msgstr "Відносини документ/користувач"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1559 core/models.py:1559
|
||||
msgid "This user is already in this document."
|
||||
msgstr "Цей користувач вже має доступ до цього документу."
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1565 core/models.py:1565
|
||||
msgid "This team is already in this document."
|
||||
msgstr "Ця команда вже має доступ до цього документа."
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1571 core/models.py:1571
|
||||
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:1722 core/models.py:1722
|
||||
msgid "Document ask for access"
|
||||
msgstr "Запит доступу до документа"
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for accesses"
|
||||
msgstr "Запит доступу для документа"
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1729 core/models.py:1729
|
||||
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:1786 core/models.py:1786
|
||||
#, 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:1790 core/models.py:1790
|
||||
#, 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:1796 core/models.py:1796
|
||||
#, 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:1838 core/models.py:1838
|
||||
msgid "Thread"
|
||||
msgstr "Обговорення"
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
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:1842 build/lib/core/models.py:1894
|
||||
#: core/models.py:1842 core/models.py:1894
|
||||
msgid "Anonymous"
|
||||
msgstr "Анонім"
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
msgid "Comment"
|
||||
msgstr "Коментар"
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comments"
|
||||
msgstr "Коментарі"
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1939 core/models.py:1939
|
||||
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:1943 core/models.py:1943
|
||||
msgid "Reaction"
|
||||
msgstr "Реакція"
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reactions"
|
||||
msgstr "Реакції"
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1954 core/models.py:1954
|
||||
msgid "email address"
|
||||
msgstr "електронна адреса"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
msgid "Document invitation"
|
||||
msgstr "Запрошення до редагування документа"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitations"
|
||||
msgstr "Запрошення до редагування документів"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1994 core/models.py:1994
|
||||
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:702 impress/settings.py:702
|
||||
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-03-25 16:42+0000\n"
|
||||
"PO-Revision-Date: 2026-03-25 16:55\n"
|
||||
"POT-Creation-Date: 2026-03-12 13:31+0000\n"
|
||||
"PO-Revision-Date: 2026-03-13 16:53\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Chinese Simplified\n"
|
||||
"Language: zh_CN\n"
|
||||
@@ -46,40 +46,36 @@ msgstr "樹狀結構"
|
||||
msgid "Title"
|
||||
msgstr "標題"
|
||||
|
||||
#: build/lib/core/api/filters.py:51 core/api/filters.py:51
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
#: build/lib/core/api/filters.py:62 core/api/filters.py:62
|
||||
msgid "Creator is me"
|
||||
msgstr "建立者是我"
|
||||
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
#: build/lib/core/api/filters.py:65 core/api/filters.py:65
|
||||
msgid "Masked"
|
||||
msgstr "已隱藏"
|
||||
|
||||
#: build/lib/core/api/filters.py:71 core/api/filters.py:71
|
||||
#: build/lib/core/api/filters.py:68 core/api/filters.py:68
|
||||
msgid "Favorite"
|
||||
msgstr "我的最愛"
|
||||
|
||||
#: build/lib/core/api/serializers.py:535 core/api/serializers.py:535
|
||||
#: build/lib/core/api/serializers.py:526 core/api/serializers.py:526
|
||||
msgid "A new document was created on your behalf!"
|
||||
msgstr "已代表您建立新文件!"
|
||||
|
||||
#: build/lib/core/api/serializers.py:539 core/api/serializers.py:539
|
||||
#: build/lib/core/api/serializers.py:530 core/api/serializers.py:530
|
||||
msgid "You have been granted ownership of a new document:"
|
||||
msgstr "您已獲得新文件的所有權:"
|
||||
|
||||
#: build/lib/core/api/serializers.py:575 core/api/serializers.py:575
|
||||
#: build/lib/core/api/serializers.py:566 core/api/serializers.py:566
|
||||
msgid "This field is required."
|
||||
msgstr "此欄位為必填。"
|
||||
|
||||
#: build/lib/core/api/serializers.py:586 core/api/serializers.py:586
|
||||
#: build/lib/core/api/serializers.py:577 core/api/serializers.py:577
|
||||
#, 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:1315 core/api/viewsets.py:1315
|
||||
#: build/lib/core/api/viewsets.py:1298 core/api/viewsets.py:1298
|
||||
#, python-brace-format
|
||||
msgid "copy of {title}"
|
||||
msgstr "{title} 的副本"
|
||||
@@ -251,98 +247,98 @@ msgstr "使用者"
|
||||
msgid "users"
|
||||
msgstr "使用者"
|
||||
|
||||
#: build/lib/core/models.py:376 core/models.py:376
|
||||
#: build/lib/core/models.py:378 core/models.py:378
|
||||
msgid "Active email address"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:377 core/models.py:377
|
||||
#: build/lib/core/models.py:379 core/models.py:379
|
||||
msgid "Email address to deactivate"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:404 core/models.py:404
|
||||
#: build/lib/core/models.py:406 core/models.py:406
|
||||
msgid "Unique ID in the source file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:410 build/lib/core/models.py:708 core/models.py:410
|
||||
#: core/models.py:708
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:411 core/models.py:411
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:412 build/lib/core/models.py:710 core/models.py:412
|
||||
#: core/models.py:710
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 core/models.py:413
|
||||
msgid "Ready"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:414 build/lib/core/models.py:712 core/models.py:414
|
||||
#: core/models.py:712
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:413 build/lib/core/models.py:711 core/models.py:413
|
||||
#: core/models.py:711
|
||||
#: build/lib/core/models.py:415 build/lib/core/models.py:713 core/models.py:415
|
||||
#: core/models.py:713
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:421 core/models.py:421
|
||||
#: build/lib/core/models.py:423 core/models.py:423
|
||||
msgid "user reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:422 core/models.py:422
|
||||
#: build/lib/core/models.py:424 core/models.py:424
|
||||
msgid "user reconciliations"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:660 core/models.py:660
|
||||
#: build/lib/core/models.py:662 core/models.py:662
|
||||
msgid "You have requested a reconciliation of your user accounts on Docs.\n"
|
||||
" To confirm that you are the one who initiated the request\n"
|
||||
" and that this email belongs to you:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:666 core/models.py:666
|
||||
#: build/lib/core/models.py:668 core/models.py:668
|
||||
msgid "Confirm by clicking the link to start the reconciliation"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:671 build/lib/core/models.py:777 core/models.py:671
|
||||
#: core/models.py:777
|
||||
#: build/lib/core/models.py:673 build/lib/core/models.py:779 core/models.py:673
|
||||
#: core/models.py:779
|
||||
msgid "Click here"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:672 core/models.py:672
|
||||
#: build/lib/core/models.py:674 core/models.py:674
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:683 core/models.py:683
|
||||
#: build/lib/core/models.py:685 core/models.py:685
|
||||
msgid "Your reconciliation request has been processed.\n"
|
||||
" New documents are likely associated with your account:"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:688 core/models.py:688
|
||||
#: build/lib/core/models.py:690 core/models.py:690
|
||||
msgid "Your accounts have been merged"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:693 core/models.py:693
|
||||
#: build/lib/core/models.py:695 core/models.py:695
|
||||
msgid "Click here to see"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:694 core/models.py:694
|
||||
#: build/lib/core/models.py:696 core/models.py:696
|
||||
msgid "See my documents"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:704 core/models.py:704
|
||||
#: build/lib/core/models.py:706 core/models.py:706
|
||||
msgid "CSV file"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:709 core/models.py:709
|
||||
#: build/lib/core/models.py:711 core/models.py:711
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:719 core/models.py:719
|
||||
#: build/lib/core/models.py:721 core/models.py:721
|
||||
msgid "user reconciliation CSV import"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:720 core/models.py:720
|
||||
#: build/lib/core/models.py:722 core/models.py:722
|
||||
msgid "user reconciliation CSV imports"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:764 core/models.py:764
|
||||
#: build/lib/core/models.py:766 core/models.py:766
|
||||
#, python-brace-format
|
||||
msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" Reconciliation failed for the following email addresses:\n"
|
||||
@@ -351,175 +347,175 @@ msgid "Your request for reconciliation was unsuccessful.\n"
|
||||
" You can submit another request with the valid email addresses."
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:772 core/models.py:772
|
||||
#: build/lib/core/models.py:774 core/models.py:774
|
||||
msgid "Reconciliation of your Docs accounts not completed"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:778 core/models.py:778
|
||||
#: build/lib/core/models.py:780 core/models.py:780
|
||||
msgid "Make a new request"
|
||||
msgstr ""
|
||||
|
||||
#: build/lib/core/models.py:877 core/models.py:877
|
||||
#: build/lib/core/models.py:879 core/models.py:879
|
||||
msgid "title"
|
||||
msgstr "標題"
|
||||
|
||||
#: build/lib/core/models.py:878 core/models.py:878
|
||||
#: build/lib/core/models.py:880 core/models.py:880
|
||||
msgid "excerpt"
|
||||
msgstr "摘要"
|
||||
|
||||
#: build/lib/core/models.py:927 core/models.py:927
|
||||
#: build/lib/core/models.py:929 core/models.py:929
|
||||
msgid "Document"
|
||||
msgstr "文件"
|
||||
|
||||
#: build/lib/core/models.py:928 core/models.py:928
|
||||
#: build/lib/core/models.py:930 core/models.py:930
|
||||
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:942 build/lib/core/models.py:1346
|
||||
#: core/models.py:942 core/models.py:1346
|
||||
msgid "Untitled Document"
|
||||
msgstr "未命名文件"
|
||||
|
||||
#: build/lib/core/models.py:1346 core/models.py:1346
|
||||
#: build/lib/core/models.py:1347 core/models.py:1347
|
||||
msgid "Open"
|
||||
msgstr "開啟"
|
||||
|
||||
#: build/lib/core/models.py:1381 core/models.py:1381
|
||||
#: build/lib/core/models.py:1382 core/models.py:1382
|
||||
#, 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:1386 core/models.py:1386
|
||||
#, 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:1392 core/models.py:1392
|
||||
#, 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:1493 core/models.py:1493
|
||||
msgid "Document/user link trace"
|
||||
msgstr "文件/使用者連結追蹤"
|
||||
|
||||
#: build/lib/core/models.py:1493 core/models.py:1493
|
||||
#: build/lib/core/models.py:1494 core/models.py:1494
|
||||
msgid "Document/user link traces"
|
||||
msgstr "文件/使用者連結追蹤"
|
||||
|
||||
#: build/lib/core/models.py:1499 core/models.py:1499
|
||||
#: build/lib/core/models.py:1500 core/models.py:1500
|
||||
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:1523 core/models.py:1523
|
||||
msgid "Document favorite"
|
||||
msgstr "文件收藏"
|
||||
|
||||
#: build/lib/core/models.py:1523 core/models.py:1523
|
||||
#: build/lib/core/models.py:1524 core/models.py:1524
|
||||
msgid "Document favorites"
|
||||
msgstr "文件收藏"
|
||||
|
||||
#: build/lib/core/models.py:1529 core/models.py:1529
|
||||
#: build/lib/core/models.py:1530 core/models.py:1530
|
||||
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:1552 core/models.py:1552
|
||||
msgid "Document/user relation"
|
||||
msgstr "文件/使用者關聯"
|
||||
|
||||
#: build/lib/core/models.py:1552 core/models.py:1552
|
||||
#: build/lib/core/models.py:1553 core/models.py:1553
|
||||
msgid "Document/user relations"
|
||||
msgstr "文件/使用者關聯"
|
||||
|
||||
#: build/lib/core/models.py:1558 core/models.py:1558
|
||||
#: build/lib/core/models.py:1559 core/models.py:1559
|
||||
msgid "This user is already in this document."
|
||||
msgstr "此使用者已在此文件中。"
|
||||
|
||||
#: build/lib/core/models.py:1564 core/models.py:1564
|
||||
#: build/lib/core/models.py:1565 core/models.py:1565
|
||||
msgid "This team is already in this document."
|
||||
msgstr "此團隊已在此文件中。"
|
||||
|
||||
#: build/lib/core/models.py:1570 core/models.py:1570
|
||||
#: build/lib/core/models.py:1571 core/models.py:1571
|
||||
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:1722 core/models.py:1722
|
||||
msgid "Document ask for access"
|
||||
msgstr "要求文件存取權"
|
||||
|
||||
#: build/lib/core/models.py:1722 core/models.py:1722
|
||||
#: build/lib/core/models.py:1723 core/models.py:1723
|
||||
msgid "Document ask for accesses"
|
||||
msgstr "要求文件存取權"
|
||||
|
||||
#: build/lib/core/models.py:1728 core/models.py:1728
|
||||
#: build/lib/core/models.py:1729 core/models.py:1729
|
||||
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:1786 core/models.py:1786
|
||||
#, 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:1790 core/models.py:1790
|
||||
#, 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:1796 core/models.py:1796
|
||||
#, 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:1838 core/models.py:1838
|
||||
msgid "Thread"
|
||||
msgstr "對話串"
|
||||
|
||||
#: build/lib/core/models.py:1838 core/models.py:1838
|
||||
#: build/lib/core/models.py:1839 core/models.py:1839
|
||||
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:1842 build/lib/core/models.py:1894
|
||||
#: core/models.py:1842 core/models.py:1894
|
||||
msgid "Anonymous"
|
||||
msgstr "匿名"
|
||||
|
||||
#: build/lib/core/models.py:1888 core/models.py:1888
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
msgid "Comment"
|
||||
msgstr "評論"
|
||||
|
||||
#: build/lib/core/models.py:1889 core/models.py:1889
|
||||
#: build/lib/core/models.py:1890 core/models.py:1890
|
||||
msgid "Comments"
|
||||
msgstr "評論"
|
||||
|
||||
#: build/lib/core/models.py:1938 core/models.py:1938
|
||||
#: build/lib/core/models.py:1939 core/models.py:1939
|
||||
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:1943 core/models.py:1943
|
||||
msgid "Reaction"
|
||||
msgstr "回應"
|
||||
|
||||
#: build/lib/core/models.py:1943 core/models.py:1943
|
||||
#: build/lib/core/models.py:1944 core/models.py:1944
|
||||
msgid "Reactions"
|
||||
msgstr "回應"
|
||||
|
||||
#: build/lib/core/models.py:1953 core/models.py:1953
|
||||
#: build/lib/core/models.py:1954 core/models.py:1954
|
||||
msgid "email address"
|
||||
msgstr "電子郵件地址"
|
||||
|
||||
#: build/lib/core/models.py:1972 core/models.py:1972
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
msgid "Document invitation"
|
||||
msgstr "文件邀請"
|
||||
|
||||
#: build/lib/core/models.py:1973 core/models.py:1973
|
||||
#: build/lib/core/models.py:1974 core/models.py:1974
|
||||
msgid "Document invitations"
|
||||
msgstr "文件邀請"
|
||||
|
||||
#: build/lib/core/models.py:1993 core/models.py:1993
|
||||
#: build/lib/core/models.py:1994 core/models.py:1994
|
||||
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:702 impress/settings.py:702
|
||||
msgid "Docs AI"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "impress"
|
||||
version = "4.8.4"
|
||||
version = "4.8.3"
|
||||
authors = [{ "name" = "DINUM", "email" = "dev@mail.numerique.gouv.fr" }]
|
||||
classifiers = [
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
|
||||
@@ -3,6 +3,7 @@ import { expect, test } from '@playwright/test';
|
||||
|
||||
import {
|
||||
createDoc,
|
||||
getMenuItem,
|
||||
mockedDocument,
|
||||
overrideConfig,
|
||||
verifyDocName,
|
||||
@@ -178,32 +179,18 @@ test.describe('Doc AI feature', () => {
|
||||
|
||||
await page.getByRole('button', { name: 'AI', exact: true }).click();
|
||||
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'Use as prompt' }),
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'Rephrase' }),
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'Summarize' }),
|
||||
).toBeVisible();
|
||||
await expect(page.getByRole('menuitem', { name: 'Correct' })).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'Language' }),
|
||||
).toBeVisible();
|
||||
await expect(getMenuItem(page, 'Use as prompt')).toBeVisible();
|
||||
await expect(getMenuItem(page, 'Rephrase')).toBeVisible();
|
||||
await expect(getMenuItem(page, 'Summarize')).toBeVisible();
|
||||
await expect(getMenuItem(page, 'Correct')).toBeVisible();
|
||||
await expect(getMenuItem(page, 'Language')).toBeVisible();
|
||||
|
||||
await page.getByRole('menuitem', { name: 'Language' }).hover();
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'English', exact: true }),
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'French', exact: true }),
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'German', exact: true }),
|
||||
).toBeVisible();
|
||||
await getMenuItem(page, 'Language').hover();
|
||||
await expect(getMenuItem(page, 'English', { exact: true })).toBeVisible();
|
||||
await expect(getMenuItem(page, 'French', { exact: true })).toBeVisible();
|
||||
await expect(getMenuItem(page, 'German', { exact: true })).toBeVisible();
|
||||
|
||||
await page.getByRole('menuitem', { name: 'German', exact: true }).click();
|
||||
await getMenuItem(page, 'German', { exact: true }).click();
|
||||
|
||||
await expect(editor.getByText('Hallo Welt')).toBeVisible();
|
||||
});
|
||||
@@ -269,23 +256,15 @@ test.describe('Doc AI feature', () => {
|
||||
await page.getByRole('button', { name: 'AI', exact: true }).click();
|
||||
|
||||
if (ai_transform) {
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'Use as prompt' }),
|
||||
).toBeVisible();
|
||||
await expect(getMenuItem(page, 'Use as prompt')).toBeVisible();
|
||||
} else {
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'Use as prompt' }),
|
||||
).toBeHidden();
|
||||
await expect(getMenuItem(page, 'Use as prompt')).toBeHidden();
|
||||
}
|
||||
|
||||
if (ai_translate) {
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'Language' }),
|
||||
).toBeVisible();
|
||||
await expect(getMenuItem(page, 'Language')).toBeVisible();
|
||||
} else {
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'Language' }),
|
||||
).toBeHidden();
|
||||
await expect(getMenuItem(page, 'Language')).toBeHidden();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -3,6 +3,7 @@ import { expect, test } from '@playwright/test';
|
||||
import {
|
||||
closeHeaderMenu,
|
||||
createDoc,
|
||||
getMenuItem,
|
||||
getOtherBrowserName,
|
||||
verifyDocName,
|
||||
} from './utils-common';
|
||||
@@ -151,7 +152,7 @@ test.describe('Doc Comments', () => {
|
||||
// Edit Comment
|
||||
await thread.getByText('This is a comment').first().hover();
|
||||
await thread.locator('[data-test="moreactions"]').first().click();
|
||||
await thread.getByRole('menuitem', { name: 'Edit comment' }).click();
|
||||
await getMenuItem(thread, 'Edit comment').click();
|
||||
const commentEditor = thread.getByText('This is a comment').first();
|
||||
await commentEditor.fill('This is an edited comment');
|
||||
const saveBtn = thread.locator('button[data-test="save"]').first();
|
||||
@@ -176,7 +177,7 @@ test.describe('Doc Comments', () => {
|
||||
// Delete second comment
|
||||
await thread.getByText('This is a second comment').first().hover();
|
||||
await thread.locator('[data-test="moreactions"]').first().click();
|
||||
await thread.getByRole('menuitem', { name: 'Delete comment' }).click();
|
||||
await getMenuItem(thread, 'Delete comment').click();
|
||||
await expect(
|
||||
thread.getByText('This is a second comment').first(),
|
||||
).toBeHidden();
|
||||
@@ -209,7 +210,7 @@ test.describe('Doc Comments', () => {
|
||||
|
||||
await thread.getByText('This is a new comment').first().hover();
|
||||
await thread.locator('[data-test="moreactions"]').first().click();
|
||||
await thread.getByRole('menuitem', { name: 'Delete comment' }).click();
|
||||
await getMenuItem(thread, 'Delete comment').click();
|
||||
|
||||
await expect(editor.getByText('Hello')).not.toHaveClass('bn-thread-mark');
|
||||
await expect(editor.getByText('Hello')).toHaveCSS(
|
||||
|
||||
@@ -5,6 +5,7 @@ import cs from 'convert-stream';
|
||||
|
||||
import {
|
||||
createDoc,
|
||||
getMenuItem,
|
||||
goToGridDoc,
|
||||
overrideConfig,
|
||||
verifyDocName,
|
||||
@@ -147,7 +148,7 @@ test.describe('Doc Editor', () => {
|
||||
const wsClosePromise = webSocket.waitForEvent('close');
|
||||
|
||||
await selectVisibility.click();
|
||||
await page.getByRole('menuitemradio', { name: 'Connected' }).click();
|
||||
await getMenuItem(page, 'Connected').click();
|
||||
|
||||
// Assert that the doc reconnects to the ws
|
||||
const wsClose = await wsClosePromise;
|
||||
@@ -604,7 +605,7 @@ test.describe('Doc Editor', () => {
|
||||
await page.getByRole('button', { name: 'Share' }).click();
|
||||
|
||||
await page.getByTestId('doc-access-mode').click();
|
||||
await page.getByRole('menuitemradio', { name: 'Reading' }).click();
|
||||
await getMenuItem(page, 'Reading').click();
|
||||
|
||||
// Close the modal
|
||||
await page.getByRole('button', { name: 'close' }).first().click();
|
||||
|
||||
@@ -3,6 +3,7 @@ import { expect, test } from '@playwright/test';
|
||||
import {
|
||||
createDoc,
|
||||
getGridRow,
|
||||
getMenuItem,
|
||||
getOtherBrowserName,
|
||||
mockedListDocs,
|
||||
toggleHeaderMenu,
|
||||
@@ -206,7 +207,7 @@ test.describe('Doc grid move', () => {
|
||||
const row = await getGridRow(page, titleDoc1);
|
||||
await row.getByText(`more_horiz`).click();
|
||||
|
||||
await page.getByRole('menuitem', { name: 'Move into a doc' }).click();
|
||||
await getMenuItem(page, 'Move into a doc').click();
|
||||
|
||||
await expect(
|
||||
page.getByRole('dialog').getByRole('heading', { name: 'Move' }),
|
||||
@@ -294,7 +295,7 @@ test.describe('Doc grid move', () => {
|
||||
const row = await getGridRow(page, titleDoc1);
|
||||
await row.getByText(`more_horiz`).click();
|
||||
|
||||
await page.getByRole('menuitem', { name: 'Move into a doc' }).click();
|
||||
await getMenuItem(page, 'Move into a doc').click();
|
||||
|
||||
await expect(
|
||||
page.getByRole('dialog').getByRole('heading', { name: 'Move' }),
|
||||
@@ -341,9 +342,7 @@ test.describe('Doc grid move', () => {
|
||||
`doc-share-access-request-row-${emailRequest}`,
|
||||
);
|
||||
await container.getByTestId('doc-role-dropdown').click();
|
||||
await otherPage
|
||||
.getByRole('menuitemradio', { name: 'Administrator' })
|
||||
.click();
|
||||
await getMenuItem(otherPage, 'Administrator').click();
|
||||
await container.getByRole('button', { name: 'Approve' }).click();
|
||||
|
||||
await expect(otherPage.getByText('Access Requests')).toBeHidden();
|
||||
@@ -354,7 +353,7 @@ test.describe('Doc grid move', () => {
|
||||
await page.reload();
|
||||
await row.getByText(`more_horiz`).click();
|
||||
|
||||
await page.getByRole('menuitem', { name: 'Move into a doc' }).click();
|
||||
await getMenuItem(page, 'Move into a doc').click();
|
||||
|
||||
await expect(
|
||||
page.getByRole('dialog').getByRole('heading', { name: 'Move' }),
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
import { expect, test } from '@playwright/test';
|
||||
|
||||
import { createDoc, getGridRow, verifyDocName } from './utils-common';
|
||||
import {
|
||||
createDoc,
|
||||
getGridRow,
|
||||
getMenuItem,
|
||||
verifyDocName,
|
||||
} from './utils-common';
|
||||
import { addNewMember, connectOtherUserToDoc } from './utils-share';
|
||||
|
||||
type SmallDoc = {
|
||||
@@ -99,7 +104,7 @@ test.describe('Document grid item options', () => {
|
||||
const row = await getGridRow(page, docTitle);
|
||||
await row.getByText(`more_horiz`).click();
|
||||
|
||||
await page.getByRole('menuitem', { name: 'Share' }).click();
|
||||
await getMenuItem(page, 'Share').click();
|
||||
|
||||
await expect(
|
||||
page.getByRole('dialog').getByText('Share the document'),
|
||||
@@ -115,7 +120,7 @@ test.describe('Document grid item options', () => {
|
||||
|
||||
// Pin
|
||||
await row.getByText(`more_horiz`).click();
|
||||
await page.getByRole('menuitem', { name: 'Pin' }).click();
|
||||
await getMenuItem(page, 'Pin').click();
|
||||
|
||||
// Check is pinned
|
||||
await expect(row.getByTestId('doc-pinned-icon')).toBeVisible();
|
||||
@@ -142,7 +147,7 @@ test.describe('Document grid item options', () => {
|
||||
const row = await getGridRow(page, docTitle);
|
||||
await row.getByText(`more_horiz`).click();
|
||||
|
||||
await page.getByRole('menuitem', { name: 'Delete' }).click();
|
||||
await getMenuItem(page, 'Delete').click();
|
||||
|
||||
await expect(
|
||||
page.getByRole('heading', { name: 'Delete a doc' }),
|
||||
|
||||
@@ -3,6 +3,7 @@ import { expect, test } from '@playwright/test';
|
||||
import {
|
||||
createDoc,
|
||||
getGridRow,
|
||||
getMenuItem,
|
||||
goToGridDoc,
|
||||
mockedDocument,
|
||||
verifyDocName,
|
||||
@@ -78,7 +79,7 @@ test.describe('Doc Header', () => {
|
||||
|
||||
await page.getByTestId('doc-visibility').click();
|
||||
|
||||
await page.getByRole('menuitemradio', { name: 'Public' }).click();
|
||||
await getMenuItem(page, 'Public').click();
|
||||
|
||||
await page.getByRole('button', { name: 'close' }).first().click();
|
||||
|
||||
@@ -152,10 +153,8 @@ test.describe('Doc Header', () => {
|
||||
|
||||
const emojiPicker = page.locator('.--docs--doc-title').getByRole('button');
|
||||
const optionMenu = page.getByLabel('Open the document options');
|
||||
const addEmojiMenuItem = page.getByRole('menuitem', { name: 'Add emoji' });
|
||||
const removeEmojiMenuItem = page.getByRole('menuitem', {
|
||||
name: 'Remove emoji',
|
||||
});
|
||||
const addEmojiMenuItem = getMenuItem(page, 'Add emoji');
|
||||
const removeEmojiMenuItem = getMenuItem(page, 'Remove emoji');
|
||||
|
||||
// Top parent should not have emoji picker
|
||||
await expect(emojiPicker).toBeHidden();
|
||||
@@ -209,7 +208,7 @@ test.describe('Doc Header', () => {
|
||||
const [randomDoc] = await createDoc(page, 'doc-delete', browserName, 1);
|
||||
|
||||
await page.getByLabel('Open the document options').click();
|
||||
await page.getByRole('menuitem', { name: 'Delete document' }).click();
|
||||
await getMenuItem(page, 'Delete document').click();
|
||||
|
||||
await expect(
|
||||
page.getByRole('heading', { name: 'Delete a doc' }),
|
||||
@@ -271,9 +270,7 @@ test.describe('Doc Header', () => {
|
||||
|
||||
await page.getByLabel('Open the document options').click();
|
||||
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'Delete document' }),
|
||||
).toBeDisabled();
|
||||
await expect(getMenuItem(page, 'Delete document')).toBeDisabled();
|
||||
|
||||
// Click somewhere else to close the options
|
||||
await page.locator('body').click({ position: { x: 0, y: 0 } });
|
||||
@@ -296,7 +293,7 @@ test.describe('Doc Header', () => {
|
||||
|
||||
await invitationRole.click();
|
||||
|
||||
await page.getByRole('menuitemradio', { name: 'Remove access' }).click();
|
||||
await getMenuItem(page, 'Remove access').click();
|
||||
await expect(invitationCard).toBeHidden();
|
||||
|
||||
const memberCard = shareModal.getByLabel('List members card');
|
||||
@@ -308,9 +305,7 @@ test.describe('Doc Header', () => {
|
||||
await expect(roles).toBeVisible();
|
||||
|
||||
await roles.click();
|
||||
await expect(
|
||||
page.getByRole('menuitemradio', { name: 'Remove access' }),
|
||||
).toBeEnabled();
|
||||
await expect(getMenuItem(page, 'Remove access')).toBeEnabled();
|
||||
});
|
||||
|
||||
test('it checks the options available if editor', async ({ page }) => {
|
||||
@@ -350,9 +345,7 @@ test.describe('Doc Header', () => {
|
||||
).toBeVisible();
|
||||
await page.getByLabel('Open the document options').click();
|
||||
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'Delete document' }),
|
||||
).toBeDisabled();
|
||||
await expect(getMenuItem(page, 'Delete document')).toBeDisabled();
|
||||
|
||||
// Click somewhere else to close the options
|
||||
await page.locator('body').click({ position: { x: 0, y: 0 } });
|
||||
@@ -422,9 +415,7 @@ test.describe('Doc Header', () => {
|
||||
).toBeVisible();
|
||||
await page.getByLabel('Open the document options').click();
|
||||
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'Delete document' }),
|
||||
).toBeDisabled();
|
||||
await expect(getMenuItem(page, 'Delete document')).toBeDisabled();
|
||||
|
||||
// Click somewhere else to close the options
|
||||
await page.locator('body').click({ position: { x: 0, y: 0 } });
|
||||
@@ -482,7 +473,7 @@ test.describe('Doc Header', () => {
|
||||
|
||||
// Copy content to clipboard
|
||||
await page.getByLabel('Open the document options').click();
|
||||
await page.getByRole('menuitem', { name: 'Copy as Markdown' }).click();
|
||||
await getMenuItem(page, 'Copy as Markdown').click();
|
||||
await expect(
|
||||
page.getByText('Copied as Markdown to clipboard'),
|
||||
).toBeVisible();
|
||||
@@ -546,7 +537,7 @@ test.describe('Doc Header', () => {
|
||||
.click();
|
||||
|
||||
// Pin
|
||||
await page.getByRole('menuitem', { name: 'Pin' }).click();
|
||||
await getMenuItem(page, 'Pin').click();
|
||||
await page
|
||||
.getByRole('button', { name: 'Open the document options' })
|
||||
.click();
|
||||
@@ -567,11 +558,11 @@ test.describe('Doc Header', () => {
|
||||
.click();
|
||||
|
||||
// Unpin
|
||||
await page.getByRole('menuitem', { name: 'Unpin' }).click();
|
||||
await getMenuItem(page, 'Unpin').click();
|
||||
await page
|
||||
.getByRole('button', { name: 'Open the document options' })
|
||||
.click();
|
||||
await expect(page.getByRole('menuitem', { name: 'Pin' })).toBeVisible();
|
||||
await expect(getMenuItem(page, 'Pin')).toBeVisible();
|
||||
|
||||
await page.goto('/');
|
||||
|
||||
@@ -589,7 +580,7 @@ test.describe('Doc Header', () => {
|
||||
|
||||
await page.getByLabel('Open the document options').click();
|
||||
|
||||
await page.getByRole('menuitem', { name: 'Duplicate' }).click();
|
||||
await getMenuItem(page, 'Duplicate').click();
|
||||
await expect(
|
||||
page.getByText('Document duplicated successfully!'),
|
||||
).toBeVisible();
|
||||
@@ -604,7 +595,7 @@ test.describe('Doc Header', () => {
|
||||
await expect(row.getByText(duplicateTitle)).toBeVisible();
|
||||
|
||||
await row.getByText(`more_horiz`).click();
|
||||
await page.getByRole('menuitem', { name: 'Duplicate' }).click();
|
||||
await getMenuItem(page, 'Duplicate').click();
|
||||
const duplicateDuplicateTitle = 'Copy of ' + duplicateTitle;
|
||||
await page.getByText(duplicateDuplicateTitle).click();
|
||||
await expect(page.getByText('Hello Duplicated World')).toBeVisible();
|
||||
@@ -637,7 +628,7 @@ test.describe('Doc Header', () => {
|
||||
|
||||
const currentUrl = page.url();
|
||||
|
||||
await page.getByRole('menuitem', { name: 'Duplicate' }).click();
|
||||
await getMenuItem(page, 'Duplicate').click();
|
||||
|
||||
await expect(page).not.toHaveURL(new RegExp(currentUrl));
|
||||
|
||||
@@ -676,10 +667,8 @@ test.describe('Documents Header mobile', () => {
|
||||
|
||||
await expect(page.getByRole('button', { name: 'Copy link' })).toBeHidden();
|
||||
await page.getByLabel('Open the document options').click();
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'Copy link' }),
|
||||
).toBeVisible();
|
||||
await page.getByRole('menuitem', { name: 'Share' }).click();
|
||||
await expect(getMenuItem(page, 'Copy link')).toBeVisible();
|
||||
await getMenuItem(page, 'Share').click();
|
||||
await expect(page.getByRole('button', { name: 'Copy link' })).toBeVisible();
|
||||
});
|
||||
|
||||
@@ -702,7 +691,7 @@ test.describe('Documents Header mobile', () => {
|
||||
await goToGridDoc(page);
|
||||
|
||||
await page.getByLabel('Open the document options').click();
|
||||
await page.getByRole('menuitem', { name: 'Share' }).click();
|
||||
await getMenuItem(page, 'Share').click();
|
||||
|
||||
const shareModal = page.getByRole('dialog', {
|
||||
name: 'Share the document',
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { expect, test } from '@playwright/test';
|
||||
|
||||
import { createDoc, verifyDocName } from './utils-common';
|
||||
import { createDoc, getMenuItem, verifyDocName } from './utils-common';
|
||||
import { updateShareLink } from './utils-share';
|
||||
import { createRootSubPage } from './utils-sub-pages';
|
||||
|
||||
@@ -53,19 +53,17 @@ test.describe('Inherited share accesses', () => {
|
||||
await expect(docVisibilityCard.getByText('Reading')).toBeVisible();
|
||||
|
||||
await docVisibilityCard.getByText('Reading').click();
|
||||
await page.getByRole('menuitemradio', { name: 'Editing' }).click();
|
||||
await getMenuItem(page, 'Editing').click();
|
||||
|
||||
await expect(docVisibilityCard.getByText('Reading')).toBeHidden();
|
||||
await expect(docVisibilityCard.getByText('Editing')).toBeVisible();
|
||||
|
||||
// Verify inherited link
|
||||
await docVisibilityCard.getByText('Connected').click();
|
||||
await expect(
|
||||
page.getByRole('menuitemradio', { name: 'Private' }),
|
||||
).toBeDisabled();
|
||||
await expect(getMenuItem(page, 'Private')).toBeDisabled();
|
||||
|
||||
// Update child link
|
||||
await page.getByRole('menuitemradio', { name: 'Public' }).click();
|
||||
await getMenuItem(page, 'Public').click();
|
||||
|
||||
await expect(docVisibilityCard.getByText('Connected')).toBeHidden();
|
||||
await expect(
|
||||
|
||||
@@ -3,6 +3,7 @@ import { expect, test } from '@playwright/test';
|
||||
import {
|
||||
BROWSERS,
|
||||
createDoc,
|
||||
getMenuItem,
|
||||
keyCloakSignIn,
|
||||
randomName,
|
||||
verifyDocName,
|
||||
@@ -16,41 +17,6 @@ test.describe('Document create member', () => {
|
||||
await page.goto('/');
|
||||
});
|
||||
|
||||
test('it checks search hints', async ({ page, browserName }) => {
|
||||
await createDoc(page, 'select-multi-users', browserName, 1);
|
||||
|
||||
await page.getByRole('button', { name: 'Share' }).click();
|
||||
|
||||
const shareModal = page.getByLabel('Share the document');
|
||||
await expect(shareModal.getByText('Document owner')).toBeVisible();
|
||||
|
||||
const inputSearch = page.getByTestId('quick-search-input');
|
||||
await inputSearch.fill('u');
|
||||
await expect(shareModal.getByText('Document owner')).toBeHidden();
|
||||
await expect(
|
||||
shareModal.getByText('Type at least 3 characters to display user names'),
|
||||
).toBeVisible();
|
||||
await inputSearch.fill('user');
|
||||
await expect(
|
||||
shareModal.getByText('Type at least 3 characters to display user names'),
|
||||
).toBeHidden();
|
||||
await expect(shareModal.getByText('Choose a user')).toBeVisible();
|
||||
await inputSearch.fill('anything');
|
||||
await expect(shareModal.getByText('Choose a user')).toBeHidden();
|
||||
await expect(
|
||||
shareModal.getByText(
|
||||
'No results. Type a full email address to invite someone.',
|
||||
),
|
||||
).toBeVisible();
|
||||
await inputSearch.fill('anything@test.com');
|
||||
await expect(
|
||||
shareModal.getByText(
|
||||
'No results. Type a full email address to invite someone.',
|
||||
),
|
||||
).toBeHidden();
|
||||
await expect(shareModal.getByText('Choose the email')).toBeVisible();
|
||||
});
|
||||
|
||||
test('it selects 2 users and 1 invitation', async ({ page, browserName }) => {
|
||||
const inputFill = 'user.test';
|
||||
const responsePromise = page.waitForResponse(
|
||||
@@ -110,21 +76,13 @@ test.describe('Document create member', () => {
|
||||
|
||||
// Check roles are displayed
|
||||
await list.getByTestId('doc-role-dropdown').click();
|
||||
await expect(
|
||||
page.getByRole('menuitemradio', { name: 'Reader' }),
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole('menuitemradio', { name: 'Editor' }),
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole('menuitemradio', { name: 'Owner' }),
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole('menuitemradio', { name: 'Administrator' }),
|
||||
).toBeVisible();
|
||||
await expect(getMenuItem(page, 'Reader')).toBeVisible();
|
||||
await expect(getMenuItem(page, 'Editor')).toBeVisible();
|
||||
await expect(getMenuItem(page, 'Owner')).toBeVisible();
|
||||
await expect(getMenuItem(page, 'Administrator')).toBeVisible();
|
||||
|
||||
// Validate
|
||||
await page.getByRole('menuitemradio', { name: 'Administrator' }).click();
|
||||
await getMenuItem(page, 'Administrator').click();
|
||||
await page.getByTestId('doc-share-invite-button').click();
|
||||
|
||||
// Check invitation added
|
||||
@@ -170,7 +128,7 @@ test.describe('Document create member', () => {
|
||||
// Choose a role
|
||||
const container = page.getByTestId('doc-share-add-member-list');
|
||||
await container.getByTestId('doc-role-dropdown').click();
|
||||
await page.getByRole('menuitemradio', { name: 'Owner' }).click();
|
||||
await getMenuItem(page, 'Owner').click();
|
||||
|
||||
const responsePromiseCreateInvitation = page.waitForResponse(
|
||||
(response) =>
|
||||
@@ -188,7 +146,7 @@ test.describe('Document create member', () => {
|
||||
|
||||
// Choose a role
|
||||
await container.getByTestId('doc-role-dropdown').click();
|
||||
await page.getByRole('menuitemradio', { name: 'Owner' }).click();
|
||||
await getMenuItem(page, 'Owner').click();
|
||||
|
||||
const responsePromiseCreateInvitationFail = page.waitForResponse(
|
||||
(response) =>
|
||||
@@ -225,7 +183,7 @@ test.describe('Document create member', () => {
|
||||
// Choose a role
|
||||
const container = page.getByTestId('doc-share-add-member-list');
|
||||
await container.getByTestId('doc-role-dropdown').click();
|
||||
await page.getByRole('menuitemradio', { name: 'Administrator' }).click();
|
||||
await getMenuItem(page, 'Administrator').click();
|
||||
|
||||
const responsePromiseCreateInvitation = page.waitForResponse(
|
||||
(response) =>
|
||||
@@ -252,13 +210,13 @@ test.describe('Document create member', () => {
|
||||
);
|
||||
|
||||
await userInvitation.getByTestId('doc-role-dropdown').click();
|
||||
await page.getByRole('menuitemradio', { name: 'Reader' }).click();
|
||||
await getMenuItem(page, 'Reader').click();
|
||||
|
||||
const responsePatchInvitation = await responsePromisePatchInvitation;
|
||||
expect(responsePatchInvitation.ok()).toBeTruthy();
|
||||
|
||||
await userInvitation.getByTestId('doc-role-dropdown').click();
|
||||
await page.getByRole('menuitemradio', { name: 'Remove access' }).click();
|
||||
await getMenuItem(page, 'Remove access').click();
|
||||
|
||||
await expect(userInvitation).toBeHidden();
|
||||
});
|
||||
@@ -310,7 +268,7 @@ test.describe('Document create member', () => {
|
||||
`doc-share-access-request-row-${emailRequest}`,
|
||||
);
|
||||
await container.getByTestId('doc-role-dropdown').click();
|
||||
await page.getByRole('menuitemradio', { name: 'Administrator' }).click();
|
||||
await getMenuItem(page, 'Administrator').click();
|
||||
await container.getByRole('button', { name: 'Approve' }).click();
|
||||
|
||||
await expect(page.getByText('Access Requests')).toBeHidden();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { expect, test } from '@playwright/test';
|
||||
|
||||
import { createDoc, verifyDocName } from './utils-common';
|
||||
import { createDoc, getMenuItem, verifyDocName } from './utils-common';
|
||||
import { addNewMember } from './utils-share';
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
@@ -160,9 +160,7 @@ test.describe('Document list members', () => {
|
||||
`You are the sole owner of this group, make another member the group owner before you can change your own role or be removed from your document.`,
|
||||
);
|
||||
await expect(soloOwner).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole('menuitemradio', { name: 'Administrator' }),
|
||||
).toBeDisabled();
|
||||
await expect(getMenuItem(page, 'Administrator')).toBeDisabled();
|
||||
|
||||
await list.click({
|
||||
force: true, // Force click to close the dropdown
|
||||
@@ -185,20 +183,18 @@ test.describe('Document list members', () => {
|
||||
});
|
||||
|
||||
await currentUserRole.click();
|
||||
await page.getByRole('menuitemradio', { name: 'Administrator' }).click();
|
||||
await getMenuItem(page, 'Administrator').click();
|
||||
await list.click();
|
||||
await expect(currentUserRole).toBeVisible();
|
||||
|
||||
await newUserRoles.click();
|
||||
await expect(
|
||||
page.getByRole('menuitemradio', { name: 'Owner' }),
|
||||
).toBeDisabled();
|
||||
await expect(getMenuItem(page, 'Owner')).toBeDisabled();
|
||||
await list.click({
|
||||
force: true, // Force click to close the dropdown
|
||||
});
|
||||
|
||||
await currentUserRole.click();
|
||||
await page.getByRole('menuitemradio', { name: 'Reader' }).click();
|
||||
await getMenuItem(page, 'Reader').click();
|
||||
await list.click({
|
||||
force: true, // Force click to close the dropdown
|
||||
});
|
||||
@@ -238,11 +234,11 @@ test.describe('Document list members', () => {
|
||||
await expect(userReader).toBeVisible();
|
||||
|
||||
await userReaderRole.click();
|
||||
await page.getByRole('menuitemradio', { name: 'Remove access' }).click();
|
||||
await getMenuItem(page, 'Remove access').click();
|
||||
await expect(userReader).toBeHidden();
|
||||
|
||||
await mySelfRole.click();
|
||||
await page.getByRole('menuitemradio', { name: 'Remove access' }).click();
|
||||
await getMenuItem(page, 'Remove access').click();
|
||||
await expect(
|
||||
page.getByText('Insufficient access rights to view the document.'),
|
||||
).toBeVisible();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { expect, test } from '@playwright/test';
|
||||
|
||||
import { createDoc, verifyDocName } from './utils-common';
|
||||
import { createDoc, getMenuItem, verifyDocName } from './utils-common';
|
||||
import { createRootSubPage } from './utils-sub-pages';
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
@@ -136,13 +136,9 @@ test.describe('Document search', () => {
|
||||
|
||||
await filters.click();
|
||||
await filters.getByRole('button', { name: 'Current doc' }).click();
|
||||
await expect(
|
||||
page.getByRole('menuitemcheckbox', { name: 'All docs' }),
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole('menuitemcheckbox', { name: 'Current doc' }),
|
||||
).toBeVisible();
|
||||
await page.getByRole('menuitemcheckbox', { name: 'All docs' }).click();
|
||||
await expect(getMenuItem(page, 'All docs')).toBeVisible();
|
||||
await expect(getMenuItem(page, 'Current doc')).toBeVisible();
|
||||
await getMenuItem(page, 'All docs').click();
|
||||
|
||||
await expect(page.getByRole('button', { name: 'Reset' })).toBeVisible();
|
||||
});
|
||||
|
||||
@@ -3,6 +3,7 @@ import { expect, test } from '@playwright/test';
|
||||
import {
|
||||
createDoc,
|
||||
expectLoginPage,
|
||||
getMenuItem,
|
||||
keyCloakSignIn,
|
||||
updateDocTitle,
|
||||
verifyDocName,
|
||||
@@ -157,7 +158,7 @@ test.describe('Doc Tree', () => {
|
||||
);
|
||||
const currentUserRole = currentUser.getByTestId('doc-role-dropdown');
|
||||
await currentUserRole.click();
|
||||
await page.getByRole('menuitemradio', { name: 'Administrator' }).click();
|
||||
await getMenuItem(page, 'Administrator').click();
|
||||
await list.click();
|
||||
|
||||
await page.getByRole('button', { name: 'Ok' }).click();
|
||||
@@ -187,9 +188,10 @@ test.describe('Doc Tree', () => {
|
||||
const menu = child.getByText(`more_horiz`);
|
||||
await menu.click();
|
||||
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'Move to my docs' }),
|
||||
).toHaveAttribute('aria-disabled', 'true');
|
||||
await expect(getMenuItem(page, 'Move to my docs')).toHaveAttribute(
|
||||
'aria-disabled',
|
||||
'true',
|
||||
);
|
||||
});
|
||||
|
||||
test('keyboard navigation with Enter key opens documents', async ({
|
||||
@@ -333,9 +335,7 @@ test.describe('Doc Tree', () => {
|
||||
await row.hover();
|
||||
const menu = row.getByText(`more_horiz`);
|
||||
await menu.click();
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'Remove emoji' }),
|
||||
).toBeHidden();
|
||||
await expect(getMenuItem(page, 'Remove emoji')).toBeHidden();
|
||||
|
||||
// Close the menu
|
||||
await page.keyboard.press('Escape');
|
||||
@@ -355,7 +355,7 @@ test.describe('Doc Tree', () => {
|
||||
// Now remove the emoji using the new action
|
||||
await row.hover();
|
||||
await menu.click();
|
||||
await page.getByRole('menuitem', { name: 'Remove emoji' }).click();
|
||||
await getMenuItem(page, 'Remove emoji').click();
|
||||
|
||||
await expect(row.getByText('😀')).toBeHidden();
|
||||
await expect(titleEmojiPicker).toBeHidden();
|
||||
@@ -385,7 +385,7 @@ test.describe('Doc Tree: Inheritance', () => {
|
||||
const selectVisibility = page.getByTestId('doc-visibility');
|
||||
await selectVisibility.click();
|
||||
|
||||
await page.getByRole('menuitemradio', { name: 'Public' }).click();
|
||||
await getMenuItem(page, 'Public').click();
|
||||
|
||||
await expect(
|
||||
page.getByText('The document visibility has been updated.'),
|
||||
|
||||
@@ -2,6 +2,7 @@ import { expect, test } from '@playwright/test';
|
||||
|
||||
import {
|
||||
createDoc,
|
||||
getMenuItem,
|
||||
goToGridDoc,
|
||||
mockedDocument,
|
||||
verifyDocName,
|
||||
@@ -20,7 +21,7 @@ test.describe('Doc Version', () => {
|
||||
|
||||
// Initially, there is no version
|
||||
await page.getByLabel('Open the document options').click();
|
||||
await page.getByRole('menuitem', { name: 'Version history' }).click();
|
||||
await getMenuItem(page, 'Version history').click();
|
||||
await expect(page.getByText('History', { exact: true })).toBeVisible();
|
||||
|
||||
const modal = page.getByRole('dialog', { name: 'Version history' });
|
||||
@@ -74,7 +75,7 @@ test.describe('Doc Version', () => {
|
||||
).toBeVisible();
|
||||
|
||||
await page.getByLabel('Open the document options').click();
|
||||
await page.getByRole('menuitem', { name: 'Version history' }).click();
|
||||
await getMenuItem(page, 'Version history').click();
|
||||
|
||||
await expect(panel).toBeVisible();
|
||||
await expect(page.getByText('History', { exact: true })).toBeVisible();
|
||||
@@ -124,9 +125,7 @@ test.describe('Doc Version', () => {
|
||||
await verifyDocName(page, 'Mocked document');
|
||||
|
||||
await page.getByLabel('Open the document options').click();
|
||||
await expect(
|
||||
page.getByRole('menuitem', { name: 'Version history' }),
|
||||
).toBeDisabled();
|
||||
await expect(getMenuItem(page, 'Version history')).toBeDisabled();
|
||||
});
|
||||
|
||||
test('it restores the doc version', async ({ page, browserName }) => {
|
||||
@@ -153,7 +152,7 @@ test.describe('Doc Version', () => {
|
||||
await expect(page.getByText('World')).toBeVisible();
|
||||
|
||||
await page.getByLabel('Open the document options').click();
|
||||
await page.getByRole('menuitem', { name: 'Version history' }).click();
|
||||
await getMenuItem(page, 'Version history').click();
|
||||
|
||||
const modal = page.getByRole('dialog', { name: 'Version history' });
|
||||
const panel = modal.getByLabel('Version list');
|
||||
|
||||
@@ -4,6 +4,7 @@ import {
|
||||
BROWSERS,
|
||||
createDoc,
|
||||
expectLoginPage,
|
||||
getMenuItem,
|
||||
keyCloakSignIn,
|
||||
verifyDocName,
|
||||
} from './utils-common';
|
||||
@@ -46,21 +47,17 @@ test.describe('Doc Visibility', () => {
|
||||
|
||||
await expect(selectVisibility.getByText('Private')).toBeVisible();
|
||||
|
||||
await expect(
|
||||
page.getByRole('menuitemradio', { name: 'Read only' }),
|
||||
).toBeHidden();
|
||||
await expect(
|
||||
page.getByRole('menuitemradio', { name: 'Can read and edit' }),
|
||||
).toBeHidden();
|
||||
await expect(getMenuItem(page, 'Read only')).toBeHidden();
|
||||
await expect(getMenuItem(page, 'Can read and edit')).toBeHidden();
|
||||
|
||||
await selectVisibility.click();
|
||||
await page.getByRole('menuitemradio', { name: 'Connected' }).click();
|
||||
await getMenuItem(page, 'Connected').click();
|
||||
|
||||
await expect(page.getByTestId('doc-access-mode')).toBeVisible();
|
||||
|
||||
await selectVisibility.click();
|
||||
|
||||
await page.getByRole('menuitemradio', { name: 'Public' }).click();
|
||||
await getMenuItem(page, 'Public').click();
|
||||
|
||||
await expect(page.getByTestId('doc-access-mode')).toBeVisible();
|
||||
});
|
||||
@@ -205,7 +202,7 @@ test.describe('Doc Visibility: Public', () => {
|
||||
const selectVisibility = page.getByTestId('doc-visibility');
|
||||
await selectVisibility.click();
|
||||
|
||||
await page.getByRole('menuitemradio', { name: 'Public' }).click();
|
||||
await getMenuItem(page, 'Public').click();
|
||||
|
||||
await expect(
|
||||
page.getByText('The document visibility has been updated.'),
|
||||
@@ -213,7 +210,7 @@ test.describe('Doc Visibility: Public', () => {
|
||||
|
||||
await expect(page.getByTestId('doc-access-mode')).toBeVisible();
|
||||
await page.getByTestId('doc-access-mode').click();
|
||||
await page.getByRole('menuitemradio', { name: 'Reading' }).click();
|
||||
await getMenuItem(page, 'Reading').click();
|
||||
|
||||
await expect(
|
||||
page.getByText('The document visibility has been updated.').first(),
|
||||
@@ -299,14 +296,14 @@ test.describe('Doc Visibility: Public', () => {
|
||||
const selectVisibility = page.getByTestId('doc-visibility');
|
||||
await selectVisibility.click();
|
||||
|
||||
await page.getByRole('menuitemradio', { name: 'Public' }).click();
|
||||
await getMenuItem(page, 'Public').click();
|
||||
|
||||
await expect(
|
||||
page.getByText('The document visibility has been updated.'),
|
||||
).toBeVisible();
|
||||
|
||||
await page.getByTestId('doc-access-mode').click();
|
||||
await page.getByRole('menuitemradio', { name: 'Editing' }).click();
|
||||
await getMenuItem(page, 'Editing').click();
|
||||
|
||||
await expect(
|
||||
page.getByText('The document visibility has been updated.').first(),
|
||||
@@ -390,7 +387,7 @@ test.describe('Doc Visibility: Authenticated', () => {
|
||||
await page.getByRole('button', { name: 'Share' }).click();
|
||||
const selectVisibility = page.getByTestId('doc-visibility');
|
||||
await selectVisibility.click();
|
||||
await page.getByRole('menuitemradio', { name: 'Connected' }).click();
|
||||
await getMenuItem(page, 'Connected').click();
|
||||
|
||||
await expect(
|
||||
page.getByText('The document visibility has been updated.'),
|
||||
@@ -438,7 +435,7 @@ test.describe('Doc Visibility: Authenticated', () => {
|
||||
await page.getByRole('button', { name: 'Share' }).click();
|
||||
const selectVisibility = page.getByTestId('doc-visibility');
|
||||
await selectVisibility.click();
|
||||
await page.getByRole('menuitemradio', { name: 'Connected' }).click();
|
||||
await getMenuItem(page, 'Connected').click();
|
||||
|
||||
await expect(
|
||||
page.getByText('The document visibility has been updated.'),
|
||||
@@ -536,7 +533,7 @@ test.describe('Doc Visibility: Authenticated', () => {
|
||||
await page.getByRole('button', { name: 'Share' }).click();
|
||||
const selectVisibility = page.getByTestId('doc-visibility');
|
||||
await selectVisibility.click();
|
||||
await page.getByRole('menuitemradio', { name: 'Connected' }).click();
|
||||
await getMenuItem(page, 'Connected').click();
|
||||
|
||||
await expect(
|
||||
page.getByText('The document visibility has been updated.'),
|
||||
@@ -544,7 +541,7 @@ test.describe('Doc Visibility: Authenticated', () => {
|
||||
|
||||
const urlDoc = page.url();
|
||||
await page.getByTestId('doc-access-mode').click();
|
||||
await page.getByRole('menuitemradio', { name: 'Editing' }).click();
|
||||
await getMenuItem(page, 'Editing').click();
|
||||
|
||||
await expect(
|
||||
page.getByText('The document visibility has been updated.').first(),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { expect, test } from '@playwright/test';
|
||||
|
||||
import { overrideConfig } from './utils-common';
|
||||
import { getMenuItem, overrideConfig } from './utils-common';
|
||||
|
||||
test.describe('Footer', () => {
|
||||
test.use({ storageState: { cookies: [], origins: [] } });
|
||||
@@ -47,7 +47,7 @@ test.describe('Footer', () => {
|
||||
// Check the translation
|
||||
const header = page.locator('header').first();
|
||||
await header.getByRole('button').getByText('English').click();
|
||||
await page.getByRole('menuitemradio', { name: 'Français' }).click();
|
||||
await getMenuItem(page, 'Français').click();
|
||||
|
||||
await expect(
|
||||
page.locator('footer').getByText('Mentions légales'),
|
||||
@@ -131,7 +131,7 @@ test.describe('Footer', () => {
|
||||
// Check the translation
|
||||
const header = page.locator('header').first();
|
||||
await header.getByRole('button').getByText('English').click();
|
||||
await page.getByRole('menuitemradio', { name: 'Français' }).click();
|
||||
await getMenuItem(page, 'Français').click();
|
||||
|
||||
await expect(
|
||||
page
|
||||
|
||||
@@ -2,6 +2,7 @@ import { expect, test } from '@playwright/test';
|
||||
|
||||
import {
|
||||
TestLanguage,
|
||||
getMenuItem,
|
||||
overrideConfig,
|
||||
waitForLanguageSwitch,
|
||||
} from './utils-common';
|
||||
@@ -44,7 +45,7 @@ test.describe('Help feature', () => {
|
||||
|
||||
await page.getByRole('button', { name: 'Open help menu' }).click();
|
||||
|
||||
await page.getByRole('menuitem', { name: 'Onboarding' }).click();
|
||||
await getMenuItem(page, 'Onboarding').click();
|
||||
|
||||
const modal = page.getByTestId('onboarding-modal');
|
||||
await expect(modal).toBeVisible();
|
||||
@@ -87,7 +88,7 @@ test.describe('Help feature', () => {
|
||||
|
||||
test('closes modal with Skip button', async ({ page }) => {
|
||||
await page.getByRole('button', { name: 'Open help menu' }).click();
|
||||
await page.getByRole('menuitem', { name: 'Onboarding' }).click();
|
||||
await getMenuItem(page, 'Onboarding').click();
|
||||
|
||||
const modal = page.getByTestId('onboarding-modal');
|
||||
await expect(modal).toBeVisible();
|
||||
@@ -108,7 +109,7 @@ test.describe('Help feature', () => {
|
||||
|
||||
await page.getByRole('button', { name: "Ouvrir le menu d'aide" }).click();
|
||||
|
||||
await page.getByRole('menuitem', { name: 'Premiers pas' }).click();
|
||||
await getMenuItem(page, 'Premiers pas').click();
|
||||
|
||||
const modal = page.getByLabel('Apprenez les principes fondamentaux');
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ test.describe('Language', () => {
|
||||
|
||||
await expect(page.locator('[role="menu"]')).toBeVisible();
|
||||
|
||||
const menuItems = page.locator('[role="menuitemradio"]');
|
||||
const menuItems = page.locator('[role="menuitem"], [role="menuitemradio"]');
|
||||
await expect(menuItems.first()).toBeVisible();
|
||||
|
||||
await menuItems.first().click();
|
||||
|
||||
@@ -8,6 +8,16 @@ import theme_customization from '../../../../../backend/impress/configuration/th
|
||||
export type BrowserName = 'chromium' | 'firefox' | 'webkit';
|
||||
export const BROWSERS: BrowserName[] = ['chromium', 'webkit', 'firefox'];
|
||||
|
||||
/** Returns a locator for a menu item (handles both menuitem and menuitemradio roles) */
|
||||
export const getMenuItem = (
|
||||
context: Page | Locator,
|
||||
name: string,
|
||||
options?: { exact?: boolean },
|
||||
): Locator =>
|
||||
context
|
||||
.getByRole('menuitem', { name, exact: options?.exact })
|
||||
.or(context.getByRole('menuitemradio', { name, exact: options?.exact }));
|
||||
|
||||
export const CONFIG = {
|
||||
AI_BOT: {
|
||||
name: 'Docs AI',
|
||||
@@ -382,12 +392,12 @@ export async function waitForLanguageSwitch(
|
||||
|
||||
await languagePicker.click();
|
||||
|
||||
await page.getByRole('menuitemradio', { name: lang.label }).click();
|
||||
await getMenuItem(page, lang.label).click();
|
||||
}
|
||||
|
||||
export const clickInEditorMenu = async (page: Page, textButton: string) => {
|
||||
await page.getByRole('button', { name: 'Open the document options' }).click();
|
||||
await page.getByRole('menuitem', { name: textButton }).click();
|
||||
await getMenuItem(page, textButton).click();
|
||||
};
|
||||
|
||||
export const clickInGridMenu = async (
|
||||
@@ -398,7 +408,7 @@ export const clickInGridMenu = async (
|
||||
await row
|
||||
.getByRole('button', { name: /Open the menu of actions for the document/ })
|
||||
.click();
|
||||
await page.getByRole('menuitem', { name: textButton }).click();
|
||||
await getMenuItem(page, textButton).click();
|
||||
};
|
||||
|
||||
export const writeReport = async (
|
||||
|
||||
@@ -2,6 +2,7 @@ import { Page, chromium, expect } from '@playwright/test';
|
||||
|
||||
import {
|
||||
BrowserName,
|
||||
getMenuItem,
|
||||
getOtherBrowserName,
|
||||
keyCloakSignIn,
|
||||
verifyDocName,
|
||||
@@ -39,7 +40,7 @@ export const addNewMember = async (
|
||||
|
||||
// Choose a role
|
||||
await page.getByTestId('doc-role-dropdown').click();
|
||||
await page.getByRole('menuitemradio', { name: role }).click();
|
||||
await getMenuItem(page, role).click();
|
||||
await page.getByTestId('doc-share-invite-button').click();
|
||||
|
||||
return users[index].email;
|
||||
@@ -51,7 +52,7 @@ export const updateShareLink = async (
|
||||
linkRole?: LinkRole | null,
|
||||
) => {
|
||||
await page.getByTestId('doc-visibility').click();
|
||||
await page.getByRole('menuitemradio', { name: linkReach }).click();
|
||||
await getMenuItem(page, linkReach).click();
|
||||
|
||||
const visibilityUpdatedText = page
|
||||
.getByText('The document visibility has been updated')
|
||||
@@ -61,7 +62,7 @@ export const updateShareLink = async (
|
||||
|
||||
if (linkRole) {
|
||||
await page.getByTestId('doc-access-mode').click();
|
||||
await page.getByRole('menuitemradio', { name: linkRole }).click();
|
||||
await getMenuItem(page, linkRole).click();
|
||||
await expect(visibilityUpdatedText).toBeVisible();
|
||||
}
|
||||
};
|
||||
@@ -76,7 +77,7 @@ export const updateRoleUser = async (
|
||||
const currentUser = list.getByTestId(`doc-share-member-row-${email}`);
|
||||
const currentUserRole = currentUser.getByTestId('doc-role-dropdown');
|
||||
await currentUserRole.click();
|
||||
await page.getByRole('menuitemradio', { name: role }).click();
|
||||
await getMenuItem(page, role).click();
|
||||
await list.click();
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "app-e2e",
|
||||
"version": "4.8.4",
|
||||
"version": "4.8.3",
|
||||
"repository": "https://github.com/suitenumerique/docs",
|
||||
"author": "DINUM",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "app-impress",
|
||||
"version": "4.8.4",
|
||||
"version": "4.8.3",
|
||||
"repository": "https://github.com/suitenumerique/docs",
|
||||
"author": "DINUM",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
import { Ref, forwardRef } from 'react';
|
||||
import { forwardRef } from 'react';
|
||||
import { css } from 'styled-components';
|
||||
|
||||
import { Box, BoxType } from './Box';
|
||||
|
||||
export type BoxButtonType = Omit<BoxType, 'ref'> & {
|
||||
export type BoxButtonType = BoxType & {
|
||||
disabled?: boolean;
|
||||
ref?: Ref<HTMLButtonElement>;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
/**
|
||||
* Styleless button that extends the Box component.
|
||||
* Good to wrap around SVGs or other elements that need to be clickable.
|
||||
* Uses aria-disabled instead of native disabled to preserve keyboard focusability.
|
||||
* @param props - @see BoxType props
|
||||
* @param ref
|
||||
* @see Box
|
||||
@@ -22,8 +22,8 @@ export type BoxButtonType = Omit<BoxType, 'ref'> & {
|
||||
* </BoxButton>
|
||||
* ```
|
||||
*/
|
||||
const BoxButton = forwardRef<HTMLButtonElement, BoxButtonType>(
|
||||
({ $css, disabled, ...props }, ref) => {
|
||||
const BoxButton = forwardRef<HTMLDivElement, BoxButtonType>(
|
||||
({ $css, ...props }, ref) => {
|
||||
const theme = props.$theme || 'gray';
|
||||
const variation = props.$variation || 'primary';
|
||||
|
||||
@@ -31,18 +31,16 @@ const BoxButton = forwardRef<HTMLButtonElement, BoxButtonType>(
|
||||
<Box
|
||||
ref={ref}
|
||||
as="button"
|
||||
type="button"
|
||||
$background="none"
|
||||
$margin="none"
|
||||
$padding="none"
|
||||
$hasTransition
|
||||
aria-disabled={disabled || undefined}
|
||||
$css={css`
|
||||
cursor: ${disabled ? 'not-allowed' : 'pointer'};
|
||||
cursor: ${props.disabled ? 'not-allowed' : 'pointer'};
|
||||
border: none;
|
||||
outline: none;
|
||||
font-family: inherit;
|
||||
color: ${disabled &&
|
||||
color: ${props.disabled &&
|
||||
`var(--c--contextuals--content--semantic--disabled--primary)`};
|
||||
&:focus-visible {
|
||||
transition: none;
|
||||
@@ -55,11 +53,11 @@ const BoxButton = forwardRef<HTMLButtonElement, BoxButtonType>(
|
||||
`}
|
||||
{...props}
|
||||
className={`--docs--box-button ${props.className || ''}`}
|
||||
onClick={(event: React.MouseEvent<HTMLButtonElement>) => {
|
||||
if (disabled) {
|
||||
onClick={(event: React.MouseEvent<HTMLDivElement>) => {
|
||||
if (props.disabled) {
|
||||
return;
|
||||
}
|
||||
props.onClick?.(event as unknown as React.MouseEvent<HTMLDivElement>);
|
||||
props.onClick?.(event);
|
||||
}}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -26,7 +26,6 @@ import { useDropdownKeyboardNav } from './hook/useDropdownKeyboardNav';
|
||||
export type DropdownMenuOption = {
|
||||
icon?: ReactNode;
|
||||
label: string;
|
||||
lang?: string;
|
||||
testId?: string;
|
||||
value?: string;
|
||||
callback?: () => void | Promise<unknown>;
|
||||
@@ -70,10 +69,7 @@ export const DropdownMenu = ({
|
||||
const [isOpen, setIsOpen] = useState(opened ?? false);
|
||||
const [focusedIndex, setFocusedIndex] = useState(-1);
|
||||
const blockButtonRef = useRef<HTMLDivElement>(null);
|
||||
const menuItemRefs = useRef<(HTMLButtonElement | null)[]>([]);
|
||||
const isSingleSelectable = options.some(
|
||||
(option) => option.isSelected !== undefined,
|
||||
);
|
||||
const menuItemRefs = useRef<(HTMLDivElement | null)[]>([]);
|
||||
|
||||
const onOpenChange = useCallback(
|
||||
(isOpen: boolean) => {
|
||||
@@ -114,6 +110,10 @@ export const DropdownMenu = ({
|
||||
[onOpenChange],
|
||||
);
|
||||
|
||||
const hasSelectable =
|
||||
selectedValues !== undefined ||
|
||||
options.some((option) => option.isSelected !== undefined);
|
||||
|
||||
if (disabled) {
|
||||
return children;
|
||||
}
|
||||
@@ -176,25 +176,20 @@ export const DropdownMenu = ({
|
||||
}
|
||||
const isDisabled = option.disabled !== undefined && option.disabled;
|
||||
const isFocused = index === focusedIndex;
|
||||
const isSelected =
|
||||
option.isSelected === true ||
|
||||
(selectedValues?.includes(option.value ?? '') ?? false);
|
||||
const itemRole =
|
||||
selectedValues !== undefined
|
||||
? 'menuitemcheckbox'
|
||||
: isSingleSelectable
|
||||
? 'menuitemradio'
|
||||
: 'menuitem';
|
||||
const optionKey = option.value ?? option.testId ?? `option-${index}`;
|
||||
const ariaChecked = hasSelectable
|
||||
? option.isSelected ||
|
||||
selectedValues?.includes(option.value ?? '') ||
|
||||
false
|
||||
: undefined;
|
||||
|
||||
return (
|
||||
<Fragment key={optionKey}>
|
||||
<Fragment key={option.label}>
|
||||
<BoxButton
|
||||
ref={(el) => {
|
||||
menuItemRefs.current[index] = el;
|
||||
}}
|
||||
role={itemRole}
|
||||
aria-checked={itemRole === 'menuitem' ? undefined : isSelected}
|
||||
role={hasSelectable ? 'menuitemradio' : 'menuitem'}
|
||||
aria-checked={ariaChecked}
|
||||
data-testid={option.testId}
|
||||
$direction="row"
|
||||
disabled={isDisabled}
|
||||
@@ -205,6 +200,7 @@ export const DropdownMenu = ({
|
||||
triggerOption(option);
|
||||
}}
|
||||
onKeyDown={keyboardAction(() => triggerOption(option))}
|
||||
key={option.label}
|
||||
$align="center"
|
||||
$justify="space-between"
|
||||
$background="var(--c--contextuals--background--surface--primary)"
|
||||
@@ -280,10 +276,11 @@ export const DropdownMenu = ({
|
||||
</Box>
|
||||
)}
|
||||
<Text $variation={isDisabled ? 'tertiary' : 'primary'}>
|
||||
<span lang={option.lang}>{option.label}</span>
|
||||
{option.label}
|
||||
</Text>
|
||||
</Box>
|
||||
{isSelected && (
|
||||
{(option.isSelected ||
|
||||
selectedValues?.includes(option.value ?? '')) && (
|
||||
<Icon
|
||||
iconName="check"
|
||||
$size="20px"
|
||||
|
||||
+6
-6
@@ -58,7 +58,7 @@ describe('<DropdownMenu />', () => {
|
||||
expect(radios[2]).toHaveAttribute('aria-checked', 'false');
|
||||
});
|
||||
|
||||
test('renders menuitemcheckbox role with aria-checked when selectedValues is provided', async () => {
|
||||
test('renders menuitemradio role with aria-checked when selectedValues is provided', async () => {
|
||||
const optionsWithValues: DropdownMenuOption[] = [
|
||||
{ label: 'English', value: 'en', callback: vi.fn() },
|
||||
{ label: 'Français', value: 'fr', callback: vi.fn() },
|
||||
@@ -77,12 +77,12 @@ describe('<DropdownMenu />', () => {
|
||||
{ wrapper: AppWrapper },
|
||||
);
|
||||
|
||||
const checkboxes = screen.getAllByRole('menuitemcheckbox');
|
||||
expect(checkboxes).toHaveLength(3);
|
||||
const radios = screen.getAllByRole('menuitemradio');
|
||||
expect(radios).toHaveLength(3);
|
||||
|
||||
expect(checkboxes[0]).toHaveAttribute('aria-checked', 'false');
|
||||
expect(checkboxes[1]).toHaveAttribute('aria-checked', 'true');
|
||||
expect(checkboxes[2]).toHaveAttribute('aria-checked', 'false');
|
||||
expect(radios[0]).toHaveAttribute('aria-checked', 'false');
|
||||
expect(radios[1]).toHaveAttribute('aria-checked', 'true');
|
||||
expect(radios[2]).toHaveAttribute('aria-checked', 'false');
|
||||
});
|
||||
|
||||
test('trigger button has aria-haspopup and aria-expanded', async () => {
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ type UseDropdownKeyboardNavProps = {
|
||||
isOpen: boolean;
|
||||
focusedIndex: number;
|
||||
options: DropdownMenuOption[];
|
||||
menuItemRefs: RefObject<(HTMLButtonElement | null)[]>;
|
||||
menuItemRefs: RefObject<(HTMLDivElement | null)[]>;
|
||||
setFocusedIndex: (index: number) => void;
|
||||
onOpenChange: (isOpen: boolean) => void;
|
||||
};
|
||||
|
||||
@@ -48,7 +48,7 @@ export const QuickSearchInput = ({
|
||||
$direction="row"
|
||||
$align="center"
|
||||
className="quick-search-input"
|
||||
$gap={spacingsTokens['xxs']}
|
||||
$gap={spacingsTokens['2xs']}
|
||||
$padding={{ horizontal: 'base', vertical: 'xxs' }}
|
||||
>
|
||||
<Icon iconName="search" $variation="secondary" aria-hidden="true" />
|
||||
@@ -62,7 +62,6 @@ export const QuickSearchInput = ({
|
||||
placeholder={placeholder ?? t('Search')}
|
||||
onValueChange={onFilter}
|
||||
maxLength={254}
|
||||
minLength={6}
|
||||
data-testid="quick-search-input"
|
||||
/>
|
||||
</Box>
|
||||
|
||||
@@ -18,15 +18,14 @@ export const QuickSearchStyle = createGlobalStyle`
|
||||
[cmdk-input] {
|
||||
border: none;
|
||||
width: 100%;
|
||||
font-size: 16px;
|
||||
font-size: 17px;
|
||||
background: white;
|
||||
outline: none;
|
||||
color: var(--c--contextuals--content--semantic--neutral--primary);
|
||||
border-radius: var(--c--globals--spacings--0);
|
||||
font-family: var(--c--globals--font--families--base);
|
||||
|
||||
&::placeholder {
|
||||
color: var(--c--contextuals--content--semantic--neutral--tertiary);
|
||||
color: var(--c--globals--colors--gray-500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+267
@@ -0,0 +1,267 @@
|
||||
import { improveHtmlAccessibility } from '../utils_html';
|
||||
|
||||
const parse = (html: string): Document => {
|
||||
const parser = new DOMParser();
|
||||
return parser.parseFromString(html, 'text/html');
|
||||
};
|
||||
|
||||
const bodyHtml = (doc: Document) =>
|
||||
doc.body.innerHTML.replace(/\s+/g, ' ').trim();
|
||||
|
||||
describe('improveHtmlAccessibility', () => {
|
||||
// Headings
|
||||
|
||||
describe('headings', () => {
|
||||
it('converts heading blocks without inner h tag to semantic h1–h6', () => {
|
||||
const doc = parse(`
|
||||
<div data-content-type="heading" data-level="3"><span>Title</span></div>
|
||||
`);
|
||||
|
||||
improveHtmlAccessibility(doc, 'Doc');
|
||||
|
||||
const h3 = doc.querySelector('h3');
|
||||
expect(h3).not.toBeNull();
|
||||
expect(h3!.textContent.trim()).toBe('Title');
|
||||
});
|
||||
|
||||
it('does not nest a second heading when BlockNote already outputs h1–h6', () => {
|
||||
const doc = parse(`
|
||||
<div data-content-type="heading" data-level="2">
|
||||
<h2 class="bn-inline-content">Section</h2>
|
||||
</div>
|
||||
`);
|
||||
|
||||
improveHtmlAccessibility(doc, 'Doc');
|
||||
|
||||
const h2 = doc.querySelectorAll('h2');
|
||||
expect(h2).toHaveLength(1);
|
||||
expect(h2[0].textContent).toBe('Section');
|
||||
expect(h2[0].className).toBe('bn-inline-content');
|
||||
});
|
||||
|
||||
it('uses data-level when inner heading tag has a different level', () => {
|
||||
const doc = parse(`
|
||||
<div data-content-type="heading" data-level="3">
|
||||
<h2 class="bn-inline-content">Mismatch</h2>
|
||||
</div>
|
||||
`);
|
||||
|
||||
improveHtmlAccessibility(doc, 'Doc');
|
||||
|
||||
expect(doc.querySelector('h3')).not.toBeNull();
|
||||
expect(doc.querySelector('h2')).toBeNull();
|
||||
});
|
||||
|
||||
it('inserts an h1 with the document title when none exists', () => {
|
||||
const doc = parse(`<p>Content</p>`);
|
||||
|
||||
improveHtmlAccessibility(doc, 'My Doc');
|
||||
|
||||
const h1 = doc.querySelector('h1');
|
||||
expect(h1).not.toBeNull();
|
||||
expect(h1!.id).toBe('doc-title');
|
||||
expect(h1!.textContent).toBe('My Doc');
|
||||
});
|
||||
|
||||
it('does not insert h1 when the document already has one', () => {
|
||||
const doc = parse(`
|
||||
<div data-content-type="heading" data-level="1"><span>Existing</span></div>
|
||||
`);
|
||||
|
||||
improveHtmlAccessibility(doc, 'Ignored');
|
||||
|
||||
expect(doc.querySelectorAll('h1')).toHaveLength(1);
|
||||
});
|
||||
});
|
||||
|
||||
// Lists
|
||||
|
||||
describe('lists', () => {
|
||||
it('converts bullet list items to ul > li', () => {
|
||||
const doc = parse(`
|
||||
<div class="bn-block-group">
|
||||
<div class="bn-block-outer">
|
||||
<div data-content-type="bulletListItem"><span>A</span></div>
|
||||
</div>
|
||||
<div class="bn-block-outer">
|
||||
<div data-content-type="bulletListItem"><span>B</span></div>
|
||||
</div>
|
||||
</div>
|
||||
`);
|
||||
|
||||
improveHtmlAccessibility(doc, 'Doc');
|
||||
|
||||
const items = doc.querySelectorAll('ul > li');
|
||||
expect(items).toHaveLength(2);
|
||||
expect(items[0].textContent).toBe('A');
|
||||
expect(items[1].textContent).toBe('B');
|
||||
});
|
||||
|
||||
it('converts numbered list items to ol > li', () => {
|
||||
const doc = parse(`
|
||||
<div class="bn-block-group">
|
||||
<div class="bn-block-outer">
|
||||
<div data-content-type="numberedListItem"><span>1st</span></div>
|
||||
</div>
|
||||
<div class="bn-block-outer">
|
||||
<div data-content-type="numberedListItem"><span>2nd</span></div>
|
||||
</div>
|
||||
</div>
|
||||
`);
|
||||
|
||||
improveHtmlAccessibility(doc, 'Doc');
|
||||
|
||||
expect(doc.querySelectorAll('ol > li')).toHaveLength(2);
|
||||
});
|
||||
|
||||
it('splits lists when a heading sits between them', () => {
|
||||
const doc = parse(`
|
||||
<div class="bn-block-group">
|
||||
<div class="bn-block-outer">
|
||||
<div data-content-type="bulletListItem"><span>A</span></div>
|
||||
</div>
|
||||
<div class="bn-block-outer">
|
||||
<div data-content-type="bulletListItem"><span>B</span></div>
|
||||
</div>
|
||||
<div class="bn-block-outer">
|
||||
<div data-content-type="heading" data-level="2"><span>Next</span></div>
|
||||
</div>
|
||||
<div class="bn-block-outer">
|
||||
<div data-content-type="bulletListItem"><span>C</span></div>
|
||||
</div>
|
||||
</div>
|
||||
`);
|
||||
|
||||
improveHtmlAccessibility(doc, 'Doc');
|
||||
|
||||
const uls = doc.querySelectorAll('ul');
|
||||
expect(uls).toHaveLength(2);
|
||||
expect(uls[0].querySelectorAll('li')).toHaveLength(2);
|
||||
expect(uls[1].querySelectorAll('li')).toHaveLength(1);
|
||||
|
||||
const html = bodyHtml(doc);
|
||||
expect(html.indexOf('<ul')).toBeLessThan(html.indexOf('<h2'));
|
||||
expect(html.indexOf('<h2')).toBeLessThan(
|
||||
html.indexOf('<ul', html.indexOf('<ul') + 1),
|
||||
);
|
||||
});
|
||||
|
||||
it('keeps consecutive same-type items in a single list', () => {
|
||||
const doc = parse(`
|
||||
<div class="bn-block-group">
|
||||
<div class="bn-block-outer">
|
||||
<div data-content-type="bulletListItem"><span>A</span></div>
|
||||
</div>
|
||||
<div class="bn-block-outer">
|
||||
<div data-content-type="bulletListItem"><span>B</span></div>
|
||||
</div>
|
||||
<div class="bn-block-outer">
|
||||
<div data-content-type="bulletListItem"><span>C</span></div>
|
||||
</div>
|
||||
</div>
|
||||
`);
|
||||
|
||||
improveHtmlAccessibility(doc, 'Doc');
|
||||
|
||||
expect(doc.querySelectorAll('ul')).toHaveLength(1);
|
||||
expect(doc.querySelectorAll('ul > li')).toHaveLength(3);
|
||||
});
|
||||
});
|
||||
|
||||
// Quotes
|
||||
|
||||
it('converts quote blocks to blockquote', () => {
|
||||
const doc = parse(`
|
||||
<div data-content-type="quote"><span>Wise words</span></div>
|
||||
`);
|
||||
|
||||
improveHtmlAccessibility(doc, 'Doc');
|
||||
|
||||
const bq = doc.querySelector('blockquote');
|
||||
expect(bq).not.toBeNull();
|
||||
expect(bq!.textContent).toBe('Wise words');
|
||||
});
|
||||
|
||||
// Callouts
|
||||
|
||||
it('converts callout blocks to aside with role="note"', () => {
|
||||
const doc = parse(`
|
||||
<div data-content-type="callout"><span>Note</span></div>
|
||||
`);
|
||||
|
||||
improveHtmlAccessibility(doc, 'Doc');
|
||||
|
||||
const aside = doc.querySelector('aside');
|
||||
expect(aside).not.toBeNull();
|
||||
expect(aside!.getAttribute('role')).toBe('note');
|
||||
});
|
||||
|
||||
// Checklists
|
||||
|
||||
it('wraps check list items in a ul with role="list" and adds aria-checked', () => {
|
||||
const doc = parse(`
|
||||
<div>
|
||||
<div data-content-type="checkListItem">
|
||||
<input type="checkbox" />
|
||||
<span>Todo</span>
|
||||
</div>
|
||||
</div>
|
||||
`);
|
||||
|
||||
improveHtmlAccessibility(doc, 'Doc');
|
||||
|
||||
const ul = doc.querySelector('ul.checklist');
|
||||
expect(ul).not.toBeNull();
|
||||
expect(ul!.getAttribute('role')).toBe('list');
|
||||
expect(doc.querySelector('input')!.getAttribute('aria-checked')).toBe(
|
||||
'false',
|
||||
);
|
||||
});
|
||||
|
||||
// Code blocks
|
||||
|
||||
it('converts code blocks to pre > code and preserves data attributes', () => {
|
||||
const doc = parse(`
|
||||
<div data-content-type="codeBlock" class="hl-theme" data-language="js"><span>const x = 1;</span></div>
|
||||
`);
|
||||
|
||||
improveHtmlAccessibility(doc, 'Doc');
|
||||
|
||||
const pre = doc.querySelector('pre');
|
||||
expect(pre).not.toBeNull();
|
||||
expect(pre!.className).toBe('hl-theme');
|
||||
expect(pre!.getAttribute('data-language')).toBe('js');
|
||||
expect(pre!.querySelector('code')!.textContent.trim()).toBe('const x = 1;');
|
||||
});
|
||||
|
||||
// Images
|
||||
|
||||
it('adds empty alt to images without one', () => {
|
||||
const doc = parse(`<img src="photo.png" />`);
|
||||
|
||||
improveHtmlAccessibility(doc, 'Doc');
|
||||
|
||||
expect(doc.querySelector('img')!.getAttribute('alt')).toBe('');
|
||||
});
|
||||
|
||||
it('does not overwrite an existing alt', () => {
|
||||
const doc = parse(`<img src="photo.png" alt="A photo" />`);
|
||||
|
||||
improveHtmlAccessibility(doc, 'Doc');
|
||||
|
||||
expect(doc.querySelector('img')!.getAttribute('alt')).toBe('A photo');
|
||||
});
|
||||
|
||||
// Article wrapper
|
||||
|
||||
it('wraps body in article with role="document"', () => {
|
||||
const doc = parse(`<p>Hello</p>`);
|
||||
|
||||
improveHtmlAccessibility(doc, 'Doc');
|
||||
|
||||
const article = doc.querySelector('article');
|
||||
expect(article).not.toBeNull();
|
||||
expect(article!.getAttribute('role')).toBe('document');
|
||||
expect(article!.getAttribute('aria-labelledby')).toBe('doc-title');
|
||||
});
|
||||
});
|
||||
@@ -145,8 +145,20 @@ export const improveHtmlAccessibility = (
|
||||
headingBlocks.forEach((block) => {
|
||||
const rawLevel = Number(block.getAttribute('data-level')) || 1;
|
||||
const level = Math.min(Math.max(rawLevel, 1), 6);
|
||||
const heading = parsedDocument.createElement(`h${level}`);
|
||||
moveChildNodes(block, heading);
|
||||
const tag = `h${level}`;
|
||||
|
||||
const existingHeading = block.querySelector('h1, h2, h3, h4, h5, h6');
|
||||
const heading = parsedDocument.createElement(tag);
|
||||
|
||||
if (existingHeading) {
|
||||
if (existingHeading.className) {
|
||||
heading.className = existingHeading.className;
|
||||
}
|
||||
moveChildNodes(existingHeading, heading);
|
||||
} else {
|
||||
moveChildNodes(block, heading);
|
||||
}
|
||||
|
||||
block.replaceWith(heading);
|
||||
});
|
||||
|
||||
@@ -178,10 +190,11 @@ export const improveHtmlAccessibility = (
|
||||
listItem: HTMLElement;
|
||||
contentType: string;
|
||||
level: number;
|
||||
blockOuterIndex: number;
|
||||
}
|
||||
|
||||
const listItemsInfo: ListItemInfo[] = [];
|
||||
allBlockOuters.forEach((blockOuter) => {
|
||||
allBlockOuters.forEach((blockOuter, index) => {
|
||||
const listItem = blockOuter.querySelector<HTMLElement>(listItemSelector);
|
||||
if (listItem) {
|
||||
const contentType = listItem.getAttribute('data-content-type');
|
||||
@@ -192,6 +205,7 @@ export const improveHtmlAccessibility = (
|
||||
listItem,
|
||||
contentType,
|
||||
level,
|
||||
blockOuterIndex: index,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -206,13 +220,19 @@ export const improveHtmlAccessibility = (
|
||||
const isBullet = contentType === 'bulletListItem';
|
||||
const listTag = isBullet ? 'ul' : 'ol';
|
||||
|
||||
// Check if previous item continues the same list (same type and level)
|
||||
// Check if previous item continues the same list (same type, level, and
|
||||
// no non-list block between them in the DOM : e.g. a heading separates lists).
|
||||
const previousInfo = idx > 0 ? listItemsInfo[idx - 1] : null;
|
||||
const isAdjacentBlock = previousInfo && info.blockOuterIndex === previousInfo.blockOuterIndex + 1;
|
||||
const continuesPreviousList =
|
||||
previousInfo &&
|
||||
isAdjacentBlock &&
|
||||
previousInfo.contentType === contentType &&
|
||||
previousInfo.level === level;
|
||||
|
||||
if (previousInfo && !isAdjacentBlock) {
|
||||
listStack.length = 0;
|
||||
}
|
||||
|
||||
// Find or create the appropriate list
|
||||
let targetList: HTMLElement | null = null;
|
||||
|
||||
|
||||
@@ -118,13 +118,13 @@ export const DocToolBox = ({ doc }: DocToolBoxProps) => {
|
||||
const options: DropdownMenuOption[] = [
|
||||
{
|
||||
label: t('Share'),
|
||||
icon: <GroupSVG width={24} height={24} aria-hidden="true" />,
|
||||
icon: <GroupSVG width={24} height={24} />,
|
||||
callback: modalShare.open,
|
||||
show: isSmallMobile,
|
||||
},
|
||||
{
|
||||
label: t('Export'),
|
||||
icon: <DownloadSVG width={24} height={24} aria-hidden="true" />,
|
||||
icon: <DownloadSVG width={24} height={24} />,
|
||||
callback: () => {
|
||||
setIsModalExportOpen(true);
|
||||
},
|
||||
@@ -133,9 +133,9 @@ export const DocToolBox = ({ doc }: DocToolBoxProps) => {
|
||||
{
|
||||
label: doc.is_favorite ? t('Unpin') : t('Pin'),
|
||||
icon: doc.is_favorite ? (
|
||||
<KeepOffSVG width={24} height={24} aria-hidden="true" />
|
||||
<KeepOffSVG width={24} height={24} />
|
||||
) : (
|
||||
<KeepSVG width={24} height={24} aria-hidden="true" />
|
||||
<KeepSVG width={24} height={24} />
|
||||
),
|
||||
callback: () => {
|
||||
if (doc.is_favorite) {
|
||||
@@ -148,7 +148,7 @@ export const DocToolBox = ({ doc }: DocToolBoxProps) => {
|
||||
},
|
||||
{
|
||||
label: t('Version history'),
|
||||
icon: <HistorySVG width={24} height={24} aria-hidden="true" />,
|
||||
icon: <HistorySVG width={24} height={24} />,
|
||||
disabled: !doc.abilities.versions_list,
|
||||
callback: () => {
|
||||
selectHistoryModal.open();
|
||||
@@ -158,7 +158,7 @@ export const DocToolBox = ({ doc }: DocToolBoxProps) => {
|
||||
},
|
||||
{
|
||||
label: t('Remove emoji'),
|
||||
icon: <RemoveEmojiSVG width={24} height={24} aria-hidden="true" />,
|
||||
icon: <RemoveEmojiSVG width={24} height={24} />,
|
||||
callback: () => {
|
||||
updateDocEmoji(doc.id, doc.title ?? '', '');
|
||||
},
|
||||
@@ -167,7 +167,7 @@ export const DocToolBox = ({ doc }: DocToolBoxProps) => {
|
||||
},
|
||||
{
|
||||
label: t('Add emoji'),
|
||||
icon: <AddEmojiSVG width={24} height={24} aria-hidden="true" />,
|
||||
icon: <AddEmojiSVG width={24} height={24} />,
|
||||
callback: () => {
|
||||
updateDocEmoji(doc.id, doc.title ?? '', '📄');
|
||||
},
|
||||
@@ -176,12 +176,12 @@ export const DocToolBox = ({ doc }: DocToolBoxProps) => {
|
||||
},
|
||||
{
|
||||
label: t('Copy link'),
|
||||
icon: <AddLinkSVG width={24} height={24} aria-hidden="true" />,
|
||||
icon: <AddLinkSVG width={24} height={24} />,
|
||||
callback: copyDocLink,
|
||||
},
|
||||
{
|
||||
label: t('Copy as {{format}}', { format: 'Markdown' }),
|
||||
icon: <MarkdownCopySVG width={24} height={24} aria-hidden="true" />,
|
||||
icon: <MarkdownCopySVG width={24} height={24} />,
|
||||
callback: () => {
|
||||
void copyCurrentEditorToClipboard('markdown');
|
||||
},
|
||||
@@ -189,7 +189,7 @@ export const DocToolBox = ({ doc }: DocToolBoxProps) => {
|
||||
},
|
||||
{
|
||||
label: t('Duplicate'),
|
||||
icon: <ContentCopySVG width={24} height={24} aria-hidden="true" />,
|
||||
icon: <ContentCopySVG width={24} height={24} />,
|
||||
disabled: !doc.abilities.duplicate,
|
||||
callback: () => {
|
||||
duplicateDoc({
|
||||
@@ -202,7 +202,7 @@ export const DocToolBox = ({ doc }: DocToolBoxProps) => {
|
||||
},
|
||||
{
|
||||
label: isChild ? t('Delete sub-document') : t('Delete document'),
|
||||
icon: <DeleteSVG width={24} height={24} aria-hidden="true" />,
|
||||
icon: <DeleteSVG width={24} height={24} />,
|
||||
disabled: !doc.abilities.destroy,
|
||||
callback: () => {
|
||||
setIsModalRemoveOpen(true);
|
||||
|
||||
@@ -44,7 +44,7 @@ export const DocIcon = ({
|
||||
const { t } = useTranslation();
|
||||
const { addLastFocus, restoreFocus } = useFocusStore();
|
||||
|
||||
const iconRef = useRef<HTMLButtonElement>(null);
|
||||
const iconRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
const [openEmojiPicker, setOpenEmojiPicker] = useState<boolean>(false);
|
||||
const [pickerPosition, setPickerPosition] = useState<{
|
||||
|
||||
+1
-2
@@ -124,8 +124,7 @@ export const DocShareAddMemberList = ({
|
||||
$scope="surface"
|
||||
$theme="tertiary"
|
||||
$variation=""
|
||||
$border="1px solid var(--c--contextuals--border--surface--primary)"
|
||||
$margin={{ bottom: 'sm' }}
|
||||
$border="1px solid var(--c--contextuals--border--semantic--contextual--primary)"
|
||||
>
|
||||
<Box
|
||||
$direction="row"
|
||||
|
||||
@@ -289,7 +289,7 @@ export const DocShareModal = ({ doc, onClose, isRootDoc = true }: Props) => {
|
||||
/>
|
||||
)}
|
||||
{showMemberSection && isRootDoc && (
|
||||
<Box $padding={{ horizontal: 'base', top: 'base' }}>
|
||||
<Box $padding={{ horizontal: 'base' }}>
|
||||
<QuickSearchGroupAccessRequest doc={doc} />
|
||||
<QuickSearchGroupInvitation doc={doc} />
|
||||
<QuickSearchGroupMember doc={doc} />
|
||||
@@ -301,7 +301,6 @@ export const DocShareModal = ({ doc, onClose, isRootDoc = true }: Props) => {
|
||||
searchUsersRawData={searchUsersQuery.data}
|
||||
onSelect={onSelect}
|
||||
userQuery={userQuery}
|
||||
minLength={API_USERS_SEARCH_QUERY_MIN_LENGTH}
|
||||
/>
|
||||
)}
|
||||
</QuickSearch>
|
||||
@@ -322,35 +321,14 @@ interface QuickSearchInviteInputSectionProps {
|
||||
onSelect: (usr: User) => void;
|
||||
searchUsersRawData: User[] | undefined;
|
||||
userQuery: string;
|
||||
minLength: number;
|
||||
}
|
||||
|
||||
const QuickSearchInviteInputSection = ({
|
||||
onSelect,
|
||||
searchUsersRawData,
|
||||
userQuery,
|
||||
minLength,
|
||||
}: QuickSearchInviteInputSectionProps) => {
|
||||
const { t } = useTranslation();
|
||||
const hint = useMemo(() => {
|
||||
if (userQuery.length < minLength) {
|
||||
return t('Type at least {{minLength}} characters to display user names', {
|
||||
minLength,
|
||||
});
|
||||
}
|
||||
if (isValidEmail(userQuery)) {
|
||||
return t('Choose the email');
|
||||
}
|
||||
if (!searchUsersRawData?.length) {
|
||||
return t('No results. Type a full email address to invite someone.');
|
||||
}
|
||||
|
||||
return t('Choose a user');
|
||||
}, [minLength, searchUsersRawData?.length, t, userQuery]);
|
||||
|
||||
useEffect(() => {
|
||||
announce(hint, 'polite');
|
||||
}, [hint]);
|
||||
|
||||
const searchUserData: QuickSearchData<User> = useMemo(() => {
|
||||
const users = searchUsersRawData || [];
|
||||
@@ -369,7 +347,7 @@ const QuickSearchInviteInputSection = ({
|
||||
);
|
||||
|
||||
return {
|
||||
groupName: hint,
|
||||
groupName: t('Search user result'),
|
||||
elements: users,
|
||||
endActions:
|
||||
isEmail && !hasEmailInUsers
|
||||
@@ -381,12 +359,12 @@ const QuickSearchInviteInputSection = ({
|
||||
]
|
||||
: undefined,
|
||||
};
|
||||
}, [searchUsersRawData, userQuery, hint, onSelect]);
|
||||
}, [onSelect, searchUsersRawData, t, userQuery]);
|
||||
|
||||
return (
|
||||
<Box
|
||||
aria-label={t('List search user result card')}
|
||||
$padding={{ horizontal: 'base', bottom: '3xs', top: 'base' }}
|
||||
$padding={{ horizontal: 'base', bottom: '3xs' }}
|
||||
>
|
||||
<QuickSearchGroup
|
||||
group={searchUserData}
|
||||
|
||||
@@ -96,7 +96,7 @@ export const DocSubPageItem = (props: TreeViewNodeProps<Doc>) => {
|
||||
const ariaLabel = docTitle;
|
||||
const isDisabled = !!doc.deleted_at;
|
||||
const actionsRef = useRef<HTMLDivElement>(null);
|
||||
const buttonOptionRef = useRef<HTMLButtonElement | null>(null);
|
||||
const buttonOptionRef = useRef<HTMLDivElement | null>(null);
|
||||
|
||||
const handleKeyDown = (e: React.KeyboardEvent) => {
|
||||
const target = e.target as HTMLElement | null;
|
||||
|
||||
@@ -44,7 +44,7 @@ export const DocTree = ({ currentDoc }: DocTreeProps) => {
|
||||
treeContext?.treeData.selectedNode?.id === treeContext.root.id;
|
||||
const rootItemRef = useRef<HTMLDivElement>(null);
|
||||
const rootActionsRef = useRef<HTMLDivElement>(null);
|
||||
const rootButtonOptionRef = useRef<HTMLButtonElement | null>(null);
|
||||
const rootButtonOptionRef = useRef<HTMLDivElement | null>(null);
|
||||
|
||||
const { t } = useTranslation();
|
||||
|
||||
|
||||
+2
-2
@@ -33,7 +33,7 @@ type DocTreeItemActionsProps = {
|
||||
onOpenChange?: (isOpen: boolean) => void;
|
||||
parentId?: string | null;
|
||||
actionsRef?: React.RefObject<HTMLDivElement | null>;
|
||||
buttonOptionRef?: React.RefObject<HTMLButtonElement | null>;
|
||||
buttonOptionRef?: React.RefObject<HTMLDivElement | null>;
|
||||
};
|
||||
|
||||
export const DocTreeItemActions = ({
|
||||
@@ -48,7 +48,7 @@ export const DocTreeItemActions = ({
|
||||
}: DocTreeItemActionsProps) => {
|
||||
const internalActionsRef = useRef<HTMLDivElement | null>(null);
|
||||
const targetActionsRef = actionsRef ?? internalActionsRef;
|
||||
const internalButtonRef = useRef<HTMLButtonElement | null>(null);
|
||||
const internalButtonRef = useRef<HTMLDivElement | null>(null);
|
||||
const targetButtonRef = buttonOptionRef ?? internalButtonRef;
|
||||
const router = useRouter();
|
||||
const { t } = useTranslation();
|
||||
|
||||
+6
-6
@@ -72,9 +72,9 @@ export const DocsGridActions = ({ doc }: DocsGridActionsProps) => {
|
||||
{
|
||||
label: doc.is_favorite ? t('Unpin') : t('Pin'),
|
||||
icon: doc.is_favorite ? (
|
||||
<KeepOffSVG width={24} height={24} aria-hidden="true" />
|
||||
<KeepOffSVG width={24} height={24} />
|
||||
) : (
|
||||
<KeepSVG width={24} height={24} aria-hidden="true" />
|
||||
<KeepSVG width={24} height={24} />
|
||||
),
|
||||
callback: () => {
|
||||
if (doc.is_favorite) {
|
||||
@@ -88,7 +88,7 @@ export const DocsGridActions = ({ doc }: DocsGridActionsProps) => {
|
||||
},
|
||||
{
|
||||
label: t('Share'),
|
||||
icon: <GroupSVG width={24} height={24} aria-hidden="true" />,
|
||||
icon: <GroupSVG width={24} height={24} />,
|
||||
callback: () => {
|
||||
shareModal.open();
|
||||
},
|
||||
@@ -97,7 +97,7 @@ export const DocsGridActions = ({ doc }: DocsGridActionsProps) => {
|
||||
},
|
||||
{
|
||||
label: t('Move into a doc'),
|
||||
icon: <DocMoveInSVG width={24} height={24} aria-hidden="true" />,
|
||||
icon: <DocMoveInSVG width={24} height={24} />,
|
||||
callback: () => {
|
||||
importModal.open();
|
||||
},
|
||||
@@ -106,7 +106,7 @@ export const DocsGridActions = ({ doc }: DocsGridActionsProps) => {
|
||||
},
|
||||
{
|
||||
label: t('Duplicate'),
|
||||
icon: <ContentCopySVG width={24} height={24} aria-hidden="true" />,
|
||||
icon: <ContentCopySVG width={24} height={24} />,
|
||||
disabled: !doc.abilities.duplicate,
|
||||
callback: () => {
|
||||
duplicateDoc({
|
||||
@@ -119,7 +119,7 @@ export const DocsGridActions = ({ doc }: DocsGridActionsProps) => {
|
||||
},
|
||||
{
|
||||
label: t('Delete'),
|
||||
icon: <DeleteSVG width={24} height={24} aria-hidden="true" />,
|
||||
icon: <DeleteSVG width={24} height={24} />,
|
||||
callback: () => deleteModal.open(),
|
||||
disabled: !doc.abilities.destroy,
|
||||
testId: `docs-grid-actions-remove-${doc.id}`,
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { announce } from '@react-aria/live-announcer';
|
||||
import { useMemo } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { css } from 'styled-components';
|
||||
@@ -18,35 +17,23 @@ export const LanguagePicker = () => {
|
||||
const { changeLanguageSynchronized } = useSynchronizedLanguage();
|
||||
const language = i18n.language;
|
||||
|
||||
const toLangTag = (locale: string) => locale.replace('_', '-');
|
||||
|
||||
// Compute options for dropdown
|
||||
const optionsPicker = useMemo(() => {
|
||||
const backendOptions = conf?.LANGUAGES ?? [[language, language]];
|
||||
return backendOptions.map(([backendLocale, backendLabel]) => {
|
||||
return {
|
||||
label: backendLabel,
|
||||
lang: toLangTag(backendLocale),
|
||||
value: backendLocale,
|
||||
isSelected: getMatchingLocales([backendLocale], [language]).length > 0,
|
||||
callback: async () => {
|
||||
await changeLanguageSynchronized(backendLocale, user);
|
||||
announce(
|
||||
t('Language changed to {{language}}', {
|
||||
language: backendLabel,
|
||||
defaultValue: `Language changed to ${backendLabel}`,
|
||||
}),
|
||||
'polite',
|
||||
);
|
||||
},
|
||||
callback: () => changeLanguageSynchronized(backendLocale, user),
|
||||
};
|
||||
});
|
||||
}, [changeLanguageSynchronized, conf?.LANGUAGES, language, t, user]);
|
||||
}, [changeLanguageSynchronized, conf?.LANGUAGES, language, user]);
|
||||
|
||||
// Extract current language label for display
|
||||
const [currentLanguageCode, currentLanguageLabel] = conf?.LANGUAGES.find(
|
||||
([code]) => getMatchingLocales([code], [language]).length > 0,
|
||||
) ?? [language, language];
|
||||
const currentLanguageLabel =
|
||||
conf?.LANGUAGES.find(
|
||||
([code]) => getMatchingLocales([code], [language]).length > 0,
|
||||
)?.[1] || language;
|
||||
|
||||
return (
|
||||
<DropdownMenu
|
||||
@@ -78,9 +65,7 @@ export const LanguagePicker = () => {
|
||||
$align="center"
|
||||
>
|
||||
<Icon iconName="translate" $color="inherit" $size="xl" />
|
||||
<span lang={toLangTag(currentLanguageCode)}>
|
||||
{currentLanguageLabel}
|
||||
</span>
|
||||
{currentLanguageLabel}
|
||||
</Box>
|
||||
</DropdownMenu>
|
||||
);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "impress",
|
||||
"version": "4.8.4",
|
||||
"version": "4.8.3",
|
||||
"private": true,
|
||||
"repository": "https://github.com/suitenumerique/docs",
|
||||
"author": "DINUM",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "eslint-plugin-docs",
|
||||
"version": "4.8.4",
|
||||
"version": "4.8.3",
|
||||
"repository": "https://github.com/suitenumerique/docs",
|
||||
"author": "DINUM",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "packages-i18n",
|
||||
"version": "4.8.4",
|
||||
"version": "4.8.3",
|
||||
"repository": "https://github.com/suitenumerique/docs",
|
||||
"author": "DINUM",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -51,8 +51,6 @@ RUN NODE_ENV=production yarn install --frozen-lockfile
|
||||
# Remove npm, contains CVE related to cross-spawn and we don't use it.
|
||||
RUN rm -rf /usr/local/bin/npm /usr/local/lib/node_modules/npm
|
||||
|
||||
ENV NODE_OPTIONS="--max-old-space-size=2048"
|
||||
|
||||
# Un-privileged user running the application
|
||||
ARG DOCKER_USER
|
||||
USER ${DOCKER_USER}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { ServerBlockNoteEditor } from '@blocknote/server-util';
|
||||
import request from 'supertest';
|
||||
import { afterEach, describe, expect, test, vi } from 'vitest';
|
||||
import { describe, expect, test, vi } from 'vitest';
|
||||
import * as Y from 'yjs';
|
||||
|
||||
vi.mock('../src/env', async (importOriginal) => {
|
||||
@@ -62,11 +62,7 @@ const expectedBlocks = [
|
||||
|
||||
console.error = vi.fn();
|
||||
|
||||
describe('Conversion Testing', () => {
|
||||
afterEach(() => {
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
describe('Server Tests', () => {
|
||||
test('POST /api/convert with incorrect API key responds with 401', async () => {
|
||||
const app = initApp();
|
||||
|
||||
@@ -174,7 +170,6 @@ describe('Conversion Testing', () => {
|
||||
});
|
||||
|
||||
test('POST /api/convert BlockNote to Yjs', async () => {
|
||||
const destroySpy = vi.spyOn(Y.Doc.prototype, 'destroy');
|
||||
const app = initApp();
|
||||
const editor = ServerBlockNoteEditor.create();
|
||||
const blocks = await editor.tryParseMarkdownToBlocks(expectedMarkdown);
|
||||
@@ -197,7 +192,6 @@ describe('Conversion Testing', () => {
|
||||
const decodedBlocks = editor.yDocToBlocks(ydoc, 'document-store');
|
||||
|
||||
expect(decodedBlocks).toStrictEqual(expectedBlocks);
|
||||
expect(destroySpy).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
test('POST /api/convert BlockNote to HTML', async () => {
|
||||
@@ -259,7 +253,6 @@ describe('Conversion Testing', () => {
|
||||
});
|
||||
|
||||
test('POST /api/convert Yjs to JSON', async () => {
|
||||
const destroySpy = vi.spyOn(Y.Doc.prototype, 'destroy');
|
||||
const app = initApp();
|
||||
const editor = ServerBlockNoteEditor.create();
|
||||
const blocks = await editor.tryParseMarkdownToBlocks(expectedMarkdown);
|
||||
@@ -279,7 +272,6 @@ describe('Conversion Testing', () => {
|
||||
);
|
||||
expect(response.body).toBeInstanceOf(Array);
|
||||
expect(response.body).toStrictEqual(expectedBlocks);
|
||||
expect(destroySpy).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
test('POST /api/convert Markdown to JSON', async () => {
|
||||
@@ -301,7 +293,6 @@ describe('Conversion Testing', () => {
|
||||
});
|
||||
|
||||
test('POST /api/convert with invalid Yjs content returns 400', async () => {
|
||||
const destroySpy = vi.spyOn(Y.Doc.prototype, 'destroy');
|
||||
const app = initApp();
|
||||
const response = await request(app)
|
||||
.post('/api/convert')
|
||||
@@ -313,6 +304,5 @@ describe('Conversion Testing', () => {
|
||||
|
||||
expect(response.status).toBe(400);
|
||||
expect(response.body).toStrictEqual({ error: 'Invalid content' });
|
||||
expect(destroySpy).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "server-y-provider",
|
||||
"version": "4.8.4",
|
||||
"version": "4.8.2",
|
||||
"description": "Y.js provider for docs",
|
||||
"repository": "https://github.com/suitenumerique/docs",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -60,12 +60,8 @@ const readers: InputReader[] = [
|
||||
supportedContentTypes: [ContentTypes.YJS, ContentTypes.OctetStream],
|
||||
read: async (data) => {
|
||||
const ydoc = new Y.Doc();
|
||||
try {
|
||||
Y.applyUpdate(ydoc, data);
|
||||
return editor.yDocToBlocks(ydoc, 'document-store') as PartialBlock[];
|
||||
} finally {
|
||||
ydoc.destroy();
|
||||
}
|
||||
Y.applyUpdate(ydoc, data);
|
||||
return editor.yDocToBlocks(ydoc, 'document-store') as PartialBlock[];
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -81,14 +77,7 @@ const writers: OutputWriter[] = [
|
||||
},
|
||||
{
|
||||
supportedContentTypes: [ContentTypes.YJS, ContentTypes.OctetStream],
|
||||
write: async (blocks) => {
|
||||
const ydoc = createYDocument(blocks);
|
||||
try {
|
||||
return Y.encodeStateAsUpdate(ydoc);
|
||||
} finally {
|
||||
ydoc.destroy();
|
||||
}
|
||||
},
|
||||
write: async (blocks) => Y.encodeStateAsUpdate(createYDocument(blocks)),
|
||||
},
|
||||
{
|
||||
supportedContentTypes: [ContentTypes.Markdown, ContentTypes.XMarkdown],
|
||||
|
||||
@@ -145,7 +145,6 @@ yProvider:
|
||||
COLLABORATION_SERVER_ORIGIN: https://{{ .Values.feature }}-docs.{{ .Values.domain }}
|
||||
COLLABORATION_SERVER_SECRET: my-secret
|
||||
Y_PROVIDER_API_KEY: my-secret
|
||||
NODE_OPTIONS: "--max-old-space-size=1024"
|
||||
|
||||
docSpec:
|
||||
enabled: true
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
environments:
|
||||
dev:
|
||||
values:
|
||||
- version: 4.8.4
|
||||
- version: 4.8.3
|
||||
feature:
|
||||
values:
|
||||
- version: 4.8.4
|
||||
- version: 4.8.3
|
||||
feature: ci
|
||||
domain: example.com
|
||||
imageTag: demo
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
apiVersion: v2
|
||||
type: application
|
||||
name: docs
|
||||
version: 4.8.4
|
||||
version: 4.8.3
|
||||
appVersion: latest
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "mail_mjml",
|
||||
"version": "4.8.4",
|
||||
"version": "4.8.3",
|
||||
"description": "An util to generate html and text django's templates from mjml templates",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
|
||||
Reference in New Issue
Block a user