Compare commits

..

17 Commits

Author SHA1 Message Date
Anthony LC
77df9783b7 🔖(major) release 4.0.0
Added:
-  Add comments feature to the editor
- (backend) Comments on text editor
- (frontend) link to create new doc

Changed:
- ️(sw) stop to cache external resources likes videos
- 💥(frontend) upgrade to ui-kit v2
- ️(frontend) improve perf on upload and table of contents
- (frontend) improve accessibility:
  - (frontend) improve share modal button accessibility
  - (frontend) improve screen reader support in DocShare modal

Fixed:
- 🐛(frontend) fix toolbar not activated when reader
- 🐛(frontend) preserve left panel width on window resize
- 🐛(frontend) prevent duplicate as first character in title
2025-12-02 10:01:48 +01:00
Anthony LC
350fe17918 🐛(sw) keep incremental versioning for IndexedDB
IndexDB need a integer versioning when upgrading
the database, it has to be incremental.
Before the fix, version 4.0.0 would give 400, when
3.10.0 would give 3100. That would cause an error
and the database would be destroyed then recreated.
We improve the way we compute the version number
to ensure it is always incremental, avoiding such
issues.
2025-12-02 10:01:48 +01:00
Anthony LC
a0ddc6ba0c 🗑️(CI) free up space in the GitHub Actions runners
On the release pull request workflows, we sometimes
face issues with disk space. We clean up some space
before starting Docker services or after finishing
to build images to avoid these issues.
2025-12-02 10:01:48 +01:00
Anthony LC
92d3f634cb 💄(frontend) fix some minor color and style issues
When migrating to the new design system, some
colors and style issues were identified.
This commit addresses these issues by updating
the styles to align with the new design guidelines,
ensuring a consistent and visually appealing
user experience.
2025-12-01 22:48:55 +01:00
Anthony LC
c06bc6fd21 🐛(frontend) fix TOC display without headings
The table of contents was displayed even when there
were no headings in the document. It was
not the expected behavior.
We now ensure that the TOC is only shown
when there are headings present, we added a test
to verify this behavior.
2025-12-01 22:48:55 +01:00
AntoLC
80ee409da4 🌐(i18n) update translated strings
Update translated files with new translations
2025-12-01 22:48:55 +01:00
Anthony LC
7475b7c3bc (frontend) link to create new doc
We create a special URL to create a new doc,
we can set the doc with the URL param to set
the visibility, the permission and the title.
2025-12-01 15:08:25 +01:00
Anthony LC
c13f0e97bb (frontend) fix flaky e2e on duplicate test
Fix a flaky issue in the e2e test for
duplicating a document.
2025-12-01 14:23:41 +01:00
Anthony LC
f11543094a 💄(frontend) fix background action on panel pages
Background actions were transparent,
making them hard to see.
2025-12-01 14:22:26 +01:00
Anthony LC
b1fb400d70 📌(dependencies) clean resolutions dependencies
Some compatibility issues were causing yarn to add
resolutions, they are no longer necessary, we can
remove them.
We pin as well to Next 15, passing to Next 16 will
require significant code changes, let's do that
in a dedicated PR.
2025-12-01 11:08:01 +01:00
renovate[bot]
50848b3410 ⬆️(dependencies) update js dependencies 2025-12-01 11:08:01 +01:00
Anthony LC
9aeedd1d03 ️(frontend) improve UploadFile process
We notices that `context.getChanges` was very
greedy, on a large document with multiple
users collaborating, it caused performance issues.
We change the way that we track a upload by
listening onUploadEnd event instead of tracking
all changes in the document.
When a doc opens, we check if there are any ongoing
uploads and resume them.
We fix as well a race condition that could happen
when multiple collaborators were on a document
during an upload.
2025-12-01 10:31:46 +01:00
Anthony LC
f7d4e6810b ️(frontend) enhance Table of Contents
- the Table of Contents stickiness now covers the
full height of the viewport, before it was limited to
100vh
- we listen the scroll to highlight the heading
in the Table of Contents only when the Table of Contents
is open
- We debounce the editor change to avoid excessive updates
to the Table of Contents
2025-12-01 10:31:45 +01:00
Anthony LC
b740ffa52c 📌(frontend) Bump body-parser from 2.2.0 to 2.2.1
Bumps [body-parser](https://github.com/expressjs/body-parser)
from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/v2.2.0...v2.2.1)

---
updated-dependencies:
- dependency-name: body-parser
  dependency-version: 2.2.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 09:52:23 +01:00
Anthony LC
f555e36e98 ⬆️(dependencies) Jump js-yaml from 3.14.1 to 3.14.2
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to 3.14.2.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.14.1...3.14.2)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 3.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 09:51:11 +01:00
Anthony LC
de11ab508f ⬆️(dependencies) Bump glob from 10.4.5 to 10.5.0 in /src/mail
Bumps [glob](https://github.com/isaacs/node-glob) from 10.4.5 to 10.5.0.
- [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/node-glob/compare/v10.4.5...v10.5.0)

---
updated-dependencies:
- dependency-name: glob
  dependency-version: 10.5.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 09:11:53 +01:00
Anthony LC
dc2fe4905b ⬆️(frontend) upgrade some gitHub actions
Some github actions were using outdated versions.
This commit upgrades them to use a common versions
for all our workflows.
2025-11-28 17:36:16 +01:00
56 changed files with 2279 additions and 1259 deletions

View File

@@ -0,0 +1,24 @@
name: 'Free Disk Space'
description: 'Free up disk space by removing large preinstalled items and cleaning up Docker'
runs:
using: "composite"
steps:
- name: Free disk space (Linux only)
if: runner.os == 'Linux'
shell: bash
run: |
echo "Disk usage before cleanup:"
df -h
# Remove large preinstalled items that are not used on GitHub-hosted runners
sudo rm -rf /usr/share/dotnet || true
sudo rm -rf /opt/ghc || true
sudo rm -rf /usr/local/lib/android || true
# Clean up Docker
docker system prune -af || true
docker volume prune -f || true
echo "Disk usage after cleanup:"
df -h

View File

@@ -52,6 +52,12 @@ jobs:
push: ${{ github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'preview') }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
-
name: Cleanup Docker after build
if: always()
run: |
docker system prune -af
docker volume prune -f
build-and-push-frontend:
runs-on: ubuntu-latest
@@ -91,6 +97,12 @@ jobs:
push: ${{ github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'preview') }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
-
name: Cleanup Docker after build
if: always()
run: |
docker system prune -af
docker volume prune -f
build-and-push-y-provider:
runs-on: ubuntu-latest
@@ -125,6 +137,12 @@ jobs:
push: ${{ github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'preview') }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
-
name: Cleanup Docker after build
if: always()
run: |
docker system prune -af
docker volume prune -f
notify-argocd:
needs:

View File

@@ -85,6 +85,9 @@ jobs:
- name: Install Playwright Browsers
run: cd src/frontend/apps/e2e && yarn install --frozen-lockfile && yarn install-playwright chromium
- name: Free disk space before Docker
uses: ./.github/actions/free-disk-space
- name: Start Docker services
run: make bootstrap-e2e FLUSH_ARGS='--no-input'
@@ -124,6 +127,9 @@ jobs:
- name: Install Playwright Browsers
run: cd src/frontend/apps/e2e && yarn install --frozen-lockfile && yarn install-playwright firefox webkit chromium
- name: Free disk space before Docker
uses: ./.github/actions/free-disk-space
- name: Start Docker services
run: make bootstrap-e2e FLUSH_ARGS='--no-input'

View File

@@ -19,7 +19,7 @@ jobs:
if: github.event_name == 'pull_request' # Makes sense only for pull requests
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: show
@@ -46,7 +46,7 @@ jobs:
github.event_name == 'pull_request'
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 50
- name: Check that the CHANGELOG has been modified in the current branch
@@ -56,7 +56,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Check CHANGELOG max line length
run: |
max_line_length=$(cat CHANGELOG.md | grep -Ev "^\[.*\]: https://github.com" | wc -L)
@@ -70,7 +70,7 @@ jobs:
if: github.event_name == 'pull_request'
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Install codespell
run: pip install --user codespell
- name: Check for typos
@@ -92,7 +92,7 @@ jobs:
working-directory: src/backend
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Install Python
uses: actions/setup-python@v5
with:

View File

@@ -6,21 +6,25 @@ and this project adheres to
## [Unreleased]
## [4.0.0] - 2025-12-01
### Added
- ✨ Add comments feature to the editor #1330
- ✨(backend) Comments on text editor #1330
- ✨(frontend) link to create new doc #1574
### Changed
- ⚡️(sw) stop to cache external resources likes videos #1655
- 💥(frontend) upgrade to ui-kit v2
### Fixed
- 💥(frontend) upgrade to ui-kit v2 #1605
- ⚡️(frontend) improve perf on upload and table of contents #1662
- ♿(frontend) improve accessibility:
- ♿(frontend) improve share modal button accessibility #1626
- ♿(frontend) improve screen reader support in DocShare modal #1628
### Fixed
- 🐛(frontend) fix toolbar not activated when reader #1640
- 🐛(frontend) preserve left panel width on window resize #1588
- 🐛(frontend) prevent duplicate as first character in title #1595
@@ -896,7 +900,8 @@ and this project adheres to
- ✨(frontend) Coming Soon page (#67)
- 🚀 Impress, project to manage your documents easily and collaboratively.
[unreleased]: https://github.com/suitenumerique/docs/compare/v3.10.0...main
[unreleased]: https://github.com/suitenumerique/docs/compare/v4.0.0...main
[v4.0.0]: https://github.com/suitenumerique/docs/releases/v4.0.0
[v3.10.0]: https://github.com/suitenumerique/docs/releases/v3.10.0
[v3.9.0]: https://github.com/suitenumerique/docs/releases/v3.9.0
[v3.8.2]: https://github.com/suitenumerique/docs/releases/v3.8.2

View File

@@ -16,6 +16,29 @@ the following command inside your docker container:
## [Unreleased]
## [4.0.0] - 2025-11-26
- ⚠️ We updated `@gouvfr-lasuite/ui-kit` to `0.18.0`, so if you are customizing Docs with a css layer or with a custom template, you need to update your customization to follow the new design system structure.
More information about the changes in the design system can be found here:
- https://suitenumerique.github.io/cunningham/storybook/?path=/docs/migrating-from-v3-to-v4--docs
- https://github.com/suitenumerique/docs/pull/1605
- https://github.com/suitenumerique/docs/blob/main/docs/theming.md
- If you were using the `THEME_CUSTOMIZATION_FILE_PATH` and have overridden the header logo, you need to update your customization file to follow the new structure of the header, it is now:
```json
{
...,
"header": {
"icon": {
"src": "your_logo_src",
"width": "your_logo_width",
"height": "your_logo_height"
}
}
}
```
## [3.3.0] - 2025-05-22
⚠️ For some advanced features (ex: Export as PDF) Docs relies on XL packages from BlockNote. These are licenced under AGPL-3.0 and are not MIT compatible. You can perfectly use Docs without these packages by setting the environment variable `PUBLISH_AS_MIT` to true. That way you'll build an image of the application without the features that are not MIT compatible. Read the [environment variables documentation](/docs/env.md) for more information.

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lasuite-docs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-17 08:04+0000\n"
"PO-Revision-Date: 2025-11-19 10:13\n"
"POT-Creation-Date: 2025-11-20 14:08+0000\n"
"PO-Revision-Date: 2025-11-26 13:33\n"
"Last-Translator: \n"
"Language-Team: Breton\n"
"Language: br_FR\n"
@@ -50,67 +50,72 @@ msgstr "Kuzhet"
msgid "Favorite"
msgstr "Sinedoù"
#: build/lib/core/api/serializers.py:496 core/api/serializers.py:496
#: build/lib/core/api/serializers.py:497 core/api/serializers.py:497
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:500 core/api/serializers.py:500
#: build/lib/core/api/serializers.py:501 core/api/serializers.py:501
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:536 core/api/serializers.py:536
#: build/lib/core/api/serializers.py:537 core/api/serializers.py:537
msgid "This field is required."
msgstr "Ar vaezienn-mañ a zo rekis."
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
#, python-format
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
msgstr ""
#: build/lib/core/api/serializers.py:693 core/api/serializers.py:693
#: build/lib/core/api/serializers.py:694 core/api/serializers.py:694
msgid "Body"
msgstr "Korf"
#: build/lib/core/api/serializers.py:696 core/api/serializers.py:696
#: build/lib/core/api/serializers.py:697 core/api/serializers.py:697
msgid "Body type"
msgstr "Doare korf"
#: build/lib/core/api/serializers.py:702 core/api/serializers.py:702
#: build/lib/core/api/serializers.py:703 core/api/serializers.py:703
msgid "Format"
msgstr "Stumm"
#: build/lib/core/api/viewsets.py:1003 core/api/viewsets.py:1003
#: build/lib/core/api/viewsets.py:1004 core/api/viewsets.py:1004
#, python-brace-format
msgid "copy of {title}"
msgstr "eilenn {title}"
#: build/lib/core/choices.py:35 build/lib/core/choices.py:42 core/choices.py:35
#: core/choices.py:42
#: build/lib/core/choices.py:35 build/lib/core/choices.py:43 core/choices.py:35
#: core/choices.py:43
msgid "Reader"
msgstr "Lenner"
#: build/lib/core/choices.py:36 build/lib/core/choices.py:43 core/choices.py:36
#: core/choices.py:43
#: 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 "Embanner"
#: build/lib/core/choices.py:44 core/choices.py:44
#: build/lib/core/choices.py:46 core/choices.py:46
msgid "Administrator"
msgstr "Merour"
#: build/lib/core/choices.py:45 core/choices.py:45
#: build/lib/core/choices.py:47 core/choices.py:47
msgid "Owner"
msgstr "Perc'henn"
#: build/lib/core/choices.py:56 core/choices.py:56
#: build/lib/core/choices.py:58 core/choices.py:58
msgid "Restricted"
msgstr "Strishaet"
#: build/lib/core/choices.py:60 core/choices.py:60
#: build/lib/core/choices.py:62 core/choices.py:62
msgid "Authenticated"
msgstr "Anavezet"
#: build/lib/core/choices.py:62 core/choices.py:62
#: build/lib/core/choices.py:64 core/choices.py:64
msgid "Public"
msgstr "Publik"
@@ -234,8 +239,8 @@ msgstr "implijer"
msgid "users"
msgstr "implijerien"
#: build/lib/core/models.py:361 build/lib/core/models.py:1276
#: core/models.py:361 core/models.py:1276
#: build/lib/core/models.py:361 build/lib/core/models.py:1430
#: core/models.py:361 core/models.py:1430
msgid "title"
msgstr "titl"
@@ -251,155 +256,188 @@ msgstr "Restr"
msgid "Documents"
msgstr "Restroù"
#: build/lib/core/models.py:424 build/lib/core/models.py:822 core/models.py:424
#: core/models.py:822
#: build/lib/core/models.py:424 build/lib/core/models.py:824 core/models.py:424
#: core/models.py:824
msgid "Untitled Document"
msgstr "Restr hep titl"
#: build/lib/core/models.py:857 core/models.py:857
#: build/lib/core/models.py:859 core/models.py:859
#, python-brace-format
msgid "{name} shared a document with you!"
msgstr "{name} en deus rannet ur restr ganeoc'h!"
#: build/lib/core/models.py:861 core/models.py:861
#: build/lib/core/models.py:863 core/models.py:863
#, 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:867 core/models.py:867
#: build/lib/core/models.py:869 core/models.py:869
#, 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:967 core/models.py:967
#: build/lib/core/models.py:969 core/models.py:969
msgid "Document/user link trace"
msgstr "Roud liamm ar restr/an implijer"
#: build/lib/core/models.py:968 core/models.py:968
#: build/lib/core/models.py:970 core/models.py:970
msgid "Document/user link traces"
msgstr "Roudoù liamm ar restr/an implijer"
#: build/lib/core/models.py:974 core/models.py:974
#: build/lib/core/models.py:976 core/models.py:976
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:997 core/models.py:997
#: build/lib/core/models.py:999 core/models.py:999
msgid "Document favorite"
msgstr "Restr muiañ-karet"
#: build/lib/core/models.py:998 core/models.py:998
#: build/lib/core/models.py:1000 core/models.py:1000
msgid "Document favorites"
msgstr "Restroù muiañ-karet"
#: build/lib/core/models.py:1004 core/models.py:1004
#: build/lib/core/models.py:1006 core/models.py:1006
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:1026 core/models.py:1026
#: build/lib/core/models.py:1028 core/models.py:1028
msgid "Document/user relation"
msgstr "Liamm restr/implijer"
#: build/lib/core/models.py:1027 core/models.py:1027
#: build/lib/core/models.py:1029 core/models.py:1029
msgid "Document/user relations"
msgstr "Liammoù restr/implijer"
#: build/lib/core/models.py:1033 core/models.py:1033
#: build/lib/core/models.py:1035 core/models.py:1035
msgid "This user is already in this document."
msgstr "An implijer-mañ a zo dija er restr-mañ."
#: build/lib/core/models.py:1039 core/models.py:1039
#: build/lib/core/models.py:1041 core/models.py:1041
msgid "This team is already in this document."
msgstr "Ar skipailh-mañ a zo dija en restr-mañ."
#: build/lib/core/models.py:1045 build/lib/core/models.py:1362
#: core/models.py:1045 core/models.py:1362
#: build/lib/core/models.py:1047 build/lib/core/models.py:1516
#: core/models.py:1047 core/models.py:1516
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:1191 core/models.py:1191
#: build/lib/core/models.py:1198 core/models.py:1198
msgid "Document ask for access"
msgstr "Goulenn tizhout ar restr"
#: build/lib/core/models.py:1192 core/models.py:1192
#: build/lib/core/models.py:1199 core/models.py:1199
msgid "Document ask for accesses"
msgstr "Goulennoù tizhout ar restr"
#: build/lib/core/models.py:1198 core/models.py:1198
#: build/lib/core/models.py:1205 core/models.py:1205
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:1255 core/models.py:1255
#: build/lib/core/models.py:1262 core/models.py:1262
#, 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:1259 core/models.py:1259
#: build/lib/core/models.py:1266 core/models.py:1266
#, 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:1265 core/models.py:1265
#: build/lib/core/models.py:1272 core/models.py:1272
#, 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:1277 core/models.py:1277
#: build/lib/core/models.py:1314 core/models.py:1314
msgid "Thread"
msgstr ""
#: build/lib/core/models.py:1315 core/models.py:1315
msgid "Threads"
msgstr ""
#: build/lib/core/models.py:1318 build/lib/core/models.py:1370
#: core/models.py:1318 core/models.py:1370
msgid "Anonymous"
msgstr ""
#: build/lib/core/models.py:1365 core/models.py:1365
msgid "Comment"
msgstr ""
#: build/lib/core/models.py:1366 core/models.py:1366
msgid "Comments"
msgstr ""
#: build/lib/core/models.py:1415 core/models.py:1415
msgid "This emoji has already been reacted to this comment."
msgstr ""
#: build/lib/core/models.py:1419 core/models.py:1419
msgid "Reaction"
msgstr ""
#: build/lib/core/models.py:1420 core/models.py:1420
msgid "Reactions"
msgstr ""
#: build/lib/core/models.py:1431 core/models.py:1431
msgid "description"
msgstr "deskrivadur"
#: build/lib/core/models.py:1278 core/models.py:1278
#: build/lib/core/models.py:1432 core/models.py:1432
msgid "code"
msgstr "kod"
#: build/lib/core/models.py:1279 core/models.py:1279
#: build/lib/core/models.py:1433 core/models.py:1433
msgid "css"
msgstr "css"
#: build/lib/core/models.py:1281 core/models.py:1281
#: build/lib/core/models.py:1435 core/models.py:1435
msgid "public"
msgstr "publik"
#: build/lib/core/models.py:1283 core/models.py:1283
#: build/lib/core/models.py:1437 core/models.py:1437
msgid "Whether this template is public for anyone to use."
msgstr "M'eo foran ar patrom-mañ hag implijus gant n'eus forzh piv."
#: build/lib/core/models.py:1289 core/models.py:1289
#: build/lib/core/models.py:1443 core/models.py:1443
msgid "Template"
msgstr "Patrom"
#: build/lib/core/models.py:1290 core/models.py:1290
#: build/lib/core/models.py:1444 core/models.py:1444
msgid "Templates"
msgstr "Patromoù"
#: build/lib/core/models.py:1343 core/models.py:1343
#: build/lib/core/models.py:1497 core/models.py:1497
msgid "Template/user relation"
msgstr "Liamm patrom/implijer"
#: build/lib/core/models.py:1344 core/models.py:1344
#: build/lib/core/models.py:1498 core/models.py:1498
msgid "Template/user relations"
msgstr "Liammoù patrom/implijer"
#: build/lib/core/models.py:1350 core/models.py:1350
#: build/lib/core/models.py:1504 core/models.py:1504
msgid "This user is already in this template."
msgstr "An implijer-mañ a zo dija er patrom-mañ."
#: build/lib/core/models.py:1356 core/models.py:1356
#: build/lib/core/models.py:1510 core/models.py:1510
msgid "This team is already in this template."
msgstr "Ar skipailh-mañ a zo dija er patrom-mañ."
#: build/lib/core/models.py:1433 core/models.py:1433
#: build/lib/core/models.py:1587 core/models.py:1587
msgid "email address"
msgstr "postel"
#: build/lib/core/models.py:1452 core/models.py:1452
#: build/lib/core/models.py:1606 core/models.py:1606
msgid "Document invitation"
msgstr "Pedadenn d'ur restr"
#: build/lib/core/models.py:1453 core/models.py:1453
#: build/lib/core/models.py:1607 core/models.py:1607
msgid "Document invitations"
msgstr "Pedadennoù d'ur restr"
#: build/lib/core/models.py:1473 core/models.py:1473
#: build/lib/core/models.py:1627 core/models.py:1627
msgid "This email is already associated to a registered user."
msgstr "Ar postel-mañ a zo liammet ouzh un implijer enskrivet."

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lasuite-docs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-17 08:04+0000\n"
"PO-Revision-Date: 2025-11-19 10:13\n"
"POT-Creation-Date: 2025-11-20 14:08+0000\n"
"PO-Revision-Date: 2025-11-26 13:33\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -50,67 +50,72 @@ msgstr ""
msgid "Favorite"
msgstr "Favorit"
#: build/lib/core/api/serializers.py:496 core/api/serializers.py:496
#: build/lib/core/api/serializers.py:497 core/api/serializers.py:497
msgid "A new document was created on your behalf!"
msgstr "Ein neues Dokument wurde in Ihrem Namen erstellt!"
#: build/lib/core/api/serializers.py:500 core/api/serializers.py:500
#: build/lib/core/api/serializers.py:501 core/api/serializers.py:501
msgid "You have been granted ownership of a new document:"
msgstr "Sie sind Besitzer eines neuen Dokuments:"
#: build/lib/core/api/serializers.py:536 core/api/serializers.py:536
#: build/lib/core/api/serializers.py:537 core/api/serializers.py:537
msgid "This field is required."
msgstr ""
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
#, python-format
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
msgstr ""
#: build/lib/core/api/serializers.py:693 core/api/serializers.py:693
#: build/lib/core/api/serializers.py:694 core/api/serializers.py:694
msgid "Body"
msgstr "Inhalt"
#: build/lib/core/api/serializers.py:696 core/api/serializers.py:696
#: build/lib/core/api/serializers.py:697 core/api/serializers.py:697
msgid "Body type"
msgstr "Typ"
#: build/lib/core/api/serializers.py:702 core/api/serializers.py:702
#: build/lib/core/api/serializers.py:703 core/api/serializers.py:703
msgid "Format"
msgstr "Format"
#: build/lib/core/api/viewsets.py:1003 core/api/viewsets.py:1003
#: build/lib/core/api/viewsets.py:1004 core/api/viewsets.py:1004
#, python-brace-format
msgid "copy of {title}"
msgstr "Kopie von {title}"
#: build/lib/core/choices.py:35 build/lib/core/choices.py:42 core/choices.py:35
#: core/choices.py:42
#: build/lib/core/choices.py:35 build/lib/core/choices.py:43 core/choices.py:35
#: core/choices.py:43
msgid "Reader"
msgstr "Lesen"
#: build/lib/core/choices.py:36 build/lib/core/choices.py:43 core/choices.py:36
#: core/choices.py:43
#: 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 "Bearbeiten"
#: build/lib/core/choices.py:44 core/choices.py:44
#: build/lib/core/choices.py:46 core/choices.py:46
msgid "Administrator"
msgstr "Administrator"
#: build/lib/core/choices.py:45 core/choices.py:45
#: build/lib/core/choices.py:47 core/choices.py:47
msgid "Owner"
msgstr "Besitzer"
#: build/lib/core/choices.py:56 core/choices.py:56
#: build/lib/core/choices.py:58 core/choices.py:58
msgid "Restricted"
msgstr "Beschränkt"
#: build/lib/core/choices.py:60 core/choices.py:60
#: build/lib/core/choices.py:62 core/choices.py:62
msgid "Authenticated"
msgstr "Authentifiziert"
#: build/lib/core/choices.py:62 core/choices.py:62
#: build/lib/core/choices.py:64 core/choices.py:64
msgid "Public"
msgstr "Öffentlich"
@@ -234,8 +239,8 @@ msgstr "Benutzer"
msgid "users"
msgstr "Benutzer"
#: build/lib/core/models.py:361 build/lib/core/models.py:1276
#: core/models.py:361 core/models.py:1276
#: build/lib/core/models.py:361 build/lib/core/models.py:1430
#: core/models.py:361 core/models.py:1430
msgid "title"
msgstr "Titel"
@@ -251,155 +256,188 @@ msgstr "Dokument"
msgid "Documents"
msgstr "Dokumente"
#: build/lib/core/models.py:424 build/lib/core/models.py:822 core/models.py:424
#: core/models.py:822
#: build/lib/core/models.py:424 build/lib/core/models.py:824 core/models.py:424
#: core/models.py:824
msgid "Untitled Document"
msgstr "Unbenanntes Dokument"
#: build/lib/core/models.py:857 core/models.py:857
#: build/lib/core/models.py:859 core/models.py:859
#, python-brace-format
msgid "{name} shared a document with you!"
msgstr "{name} hat ein Dokument mit Ihnen geteilt!"
#: build/lib/core/models.py:861 core/models.py:861
#: build/lib/core/models.py:863 core/models.py:863
#, 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:867 core/models.py:867
#: build/lib/core/models.py:869 core/models.py:869
#, 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:967 core/models.py:967
#: build/lib/core/models.py:969 core/models.py:969
msgid "Document/user link trace"
msgstr "Dokument/Benutzer Linkverfolgung"
#: build/lib/core/models.py:968 core/models.py:968
#: build/lib/core/models.py:970 core/models.py:970
msgid "Document/user link traces"
msgstr "Dokument/Benutzer Linkverfolgung"
#: build/lib/core/models.py:974 core/models.py:974
#: build/lib/core/models.py:976 core/models.py:976
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:997 core/models.py:997
#: build/lib/core/models.py:999 core/models.py:999
msgid "Document favorite"
msgstr "Dokumentenfavorit"
#: build/lib/core/models.py:998 core/models.py:998
#: build/lib/core/models.py:1000 core/models.py:1000
msgid "Document favorites"
msgstr "Dokumentfavoriten"
#: build/lib/core/models.py:1004 core/models.py:1004
#: build/lib/core/models.py:1006 core/models.py:1006
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:1026 core/models.py:1026
#: build/lib/core/models.py:1028 core/models.py:1028
msgid "Document/user relation"
msgstr "Dokument/Benutzerbeziehung"
#: build/lib/core/models.py:1027 core/models.py:1027
#: build/lib/core/models.py:1029 core/models.py:1029
msgid "Document/user relations"
msgstr "Dokument/Benutzerbeziehungen"
#: build/lib/core/models.py:1033 core/models.py:1033
#: build/lib/core/models.py:1035 core/models.py:1035
msgid "This user is already in this document."
msgstr "Dieser Benutzer befindet sich bereits in diesem Dokument."
#: build/lib/core/models.py:1039 core/models.py:1039
#: build/lib/core/models.py:1041 core/models.py:1041
msgid "This team is already in this document."
msgstr "Dieses Team befindet sich bereits in diesem Dokument."
#: build/lib/core/models.py:1045 build/lib/core/models.py:1362
#: core/models.py:1045 core/models.py:1362
#: build/lib/core/models.py:1047 build/lib/core/models.py:1516
#: core/models.py:1047 core/models.py:1516
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:1191 core/models.py:1191
#: build/lib/core/models.py:1198 core/models.py:1198
msgid "Document ask for access"
msgstr ""
#: build/lib/core/models.py:1192 core/models.py:1192
#: build/lib/core/models.py:1199 core/models.py:1199
msgid "Document ask for accesses"
msgstr ""
#: build/lib/core/models.py:1198 core/models.py:1198
#: build/lib/core/models.py:1205 core/models.py:1205
msgid "This user has already asked for access to this document."
msgstr ""
#: build/lib/core/models.py:1255 core/models.py:1255
#: build/lib/core/models.py:1262 core/models.py:1262
#, python-brace-format
msgid "{name} would like access to a document!"
msgstr ""
#: build/lib/core/models.py:1259 core/models.py:1259
#: build/lib/core/models.py:1266 core/models.py:1266
#, python-brace-format
msgid "{name} would like access to the following document:"
msgstr ""
#: build/lib/core/models.py:1265 core/models.py:1265
#: build/lib/core/models.py:1272 core/models.py:1272
#, python-brace-format
msgid "{name} is asking for access to the document: {title}"
msgstr ""
#: build/lib/core/models.py:1277 core/models.py:1277
#: build/lib/core/models.py:1314 core/models.py:1314
msgid "Thread"
msgstr ""
#: build/lib/core/models.py:1315 core/models.py:1315
msgid "Threads"
msgstr ""
#: build/lib/core/models.py:1318 build/lib/core/models.py:1370
#: core/models.py:1318 core/models.py:1370
msgid "Anonymous"
msgstr ""
#: build/lib/core/models.py:1365 core/models.py:1365
msgid "Comment"
msgstr ""
#: build/lib/core/models.py:1366 core/models.py:1366
msgid "Comments"
msgstr ""
#: build/lib/core/models.py:1415 core/models.py:1415
msgid "This emoji has already been reacted to this comment."
msgstr ""
#: build/lib/core/models.py:1419 core/models.py:1419
msgid "Reaction"
msgstr ""
#: build/lib/core/models.py:1420 core/models.py:1420
msgid "Reactions"
msgstr ""
#: build/lib/core/models.py:1431 core/models.py:1431
msgid "description"
msgstr "Beschreibung"
#: build/lib/core/models.py:1278 core/models.py:1278
#: build/lib/core/models.py:1432 core/models.py:1432
msgid "code"
msgstr "Code"
#: build/lib/core/models.py:1279 core/models.py:1279
#: build/lib/core/models.py:1433 core/models.py:1433
msgid "css"
msgstr "CSS"
#: build/lib/core/models.py:1281 core/models.py:1281
#: build/lib/core/models.py:1435 core/models.py:1435
msgid "public"
msgstr "öffentlich"
#: build/lib/core/models.py:1283 core/models.py:1283
#: build/lib/core/models.py:1437 core/models.py:1437
msgid "Whether this template is public for anyone to use."
msgstr "Ob diese Vorlage für jedermann öffentlich ist."
#: build/lib/core/models.py:1289 core/models.py:1289
#: build/lib/core/models.py:1443 core/models.py:1443
msgid "Template"
msgstr "Vorlage"
#: build/lib/core/models.py:1290 core/models.py:1290
#: build/lib/core/models.py:1444 core/models.py:1444
msgid "Templates"
msgstr "Vorlagen"
#: build/lib/core/models.py:1343 core/models.py:1343
#: build/lib/core/models.py:1497 core/models.py:1497
msgid "Template/user relation"
msgstr "Vorlage/Benutzer-Beziehung"
#: build/lib/core/models.py:1344 core/models.py:1344
#: build/lib/core/models.py:1498 core/models.py:1498
msgid "Template/user relations"
msgstr "Vorlage/Benutzerbeziehungen"
#: build/lib/core/models.py:1350 core/models.py:1350
#: build/lib/core/models.py:1504 core/models.py:1504
msgid "This user is already in this template."
msgstr "Dieser Benutzer ist bereits in dieser Vorlage."
#: build/lib/core/models.py:1356 core/models.py:1356
#: build/lib/core/models.py:1510 core/models.py:1510
msgid "This team is already in this template."
msgstr "Dieses Team ist bereits in diesem Template."
#: build/lib/core/models.py:1433 core/models.py:1433
#: build/lib/core/models.py:1587 core/models.py:1587
msgid "email address"
msgstr "E-Mail-Adresse"
#: build/lib/core/models.py:1452 core/models.py:1452
#: build/lib/core/models.py:1606 core/models.py:1606
msgid "Document invitation"
msgstr "Einladung zum Dokument"
#: build/lib/core/models.py:1453 core/models.py:1453
#: build/lib/core/models.py:1607 core/models.py:1607
msgid "Document invitations"
msgstr "Dokumenteinladungen"
#: build/lib/core/models.py:1473 core/models.py:1473
#: build/lib/core/models.py:1627 core/models.py:1627
msgid "This email is already associated to a registered user."
msgstr "Diese E-Mail ist bereits einem registrierten Benutzer zugeordnet."

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lasuite-docs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-17 08:04+0000\n"
"PO-Revision-Date: 2025-11-19 10:13\n"
"POT-Creation-Date: 2025-11-20 14:08+0000\n"
"PO-Revision-Date: 2025-11-26 13:33\n"
"Last-Translator: \n"
"Language-Team: English\n"
"Language: en_US\n"
@@ -50,67 +50,72 @@ msgstr ""
msgid "Favorite"
msgstr ""
#: build/lib/core/api/serializers.py:496 core/api/serializers.py:496
#: build/lib/core/api/serializers.py:497 core/api/serializers.py:497
msgid "A new document was created on your behalf!"
msgstr ""
#: build/lib/core/api/serializers.py:500 core/api/serializers.py:500
#: build/lib/core/api/serializers.py:501 core/api/serializers.py:501
msgid "You have been granted ownership of a new document:"
msgstr ""
#: build/lib/core/api/serializers.py:536 core/api/serializers.py:536
#: build/lib/core/api/serializers.py:537 core/api/serializers.py:537
msgid "This field is required."
msgstr ""
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
#, python-format
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
msgstr ""
#: build/lib/core/api/serializers.py:693 core/api/serializers.py:693
#: build/lib/core/api/serializers.py:694 core/api/serializers.py:694
msgid "Body"
msgstr ""
#: build/lib/core/api/serializers.py:696 core/api/serializers.py:696
#: build/lib/core/api/serializers.py:697 core/api/serializers.py:697
msgid "Body type"
msgstr ""
#: build/lib/core/api/serializers.py:702 core/api/serializers.py:702
#: build/lib/core/api/serializers.py:703 core/api/serializers.py:703
msgid "Format"
msgstr ""
#: build/lib/core/api/viewsets.py:1003 core/api/viewsets.py:1003
#: build/lib/core/api/viewsets.py:1004 core/api/viewsets.py:1004
#, python-brace-format
msgid "copy of {title}"
msgstr ""
#: build/lib/core/choices.py:35 build/lib/core/choices.py:42 core/choices.py:35
#: core/choices.py:42
#: 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:43 core/choices.py:36
#: core/choices.py:43
#: 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:44 core/choices.py:44
#: build/lib/core/choices.py:46 core/choices.py:46
msgid "Administrator"
msgstr ""
#: build/lib/core/choices.py:45 core/choices.py:45
#: build/lib/core/choices.py:47 core/choices.py:47
msgid "Owner"
msgstr ""
#: build/lib/core/choices.py:56 core/choices.py:56
#: build/lib/core/choices.py:58 core/choices.py:58
msgid "Restricted"
msgstr ""
#: build/lib/core/choices.py:60 core/choices.py:60
#: build/lib/core/choices.py:62 core/choices.py:62
msgid "Authenticated"
msgstr ""
#: build/lib/core/choices.py:62 core/choices.py:62
#: build/lib/core/choices.py:64 core/choices.py:64
msgid "Public"
msgstr ""
@@ -234,8 +239,8 @@ msgstr ""
msgid "users"
msgstr ""
#: build/lib/core/models.py:361 build/lib/core/models.py:1276
#: core/models.py:361 core/models.py:1276
#: build/lib/core/models.py:361 build/lib/core/models.py:1430
#: core/models.py:361 core/models.py:1430
msgid "title"
msgstr ""
@@ -251,155 +256,188 @@ msgstr ""
msgid "Documents"
msgstr ""
#: build/lib/core/models.py:424 build/lib/core/models.py:822 core/models.py:424
#: core/models.py:822
#: build/lib/core/models.py:424 build/lib/core/models.py:824 core/models.py:424
#: core/models.py:824
msgid "Untitled Document"
msgstr ""
#: build/lib/core/models.py:857 core/models.py:857
#: build/lib/core/models.py:859 core/models.py:859
#, python-brace-format
msgid "{name} shared a document with you!"
msgstr ""
#: build/lib/core/models.py:861 core/models.py:861
#: build/lib/core/models.py:863 core/models.py:863
#, python-brace-format
msgid "{name} invited you with the role \"{role}\" on the following document:"
msgstr ""
#: build/lib/core/models.py:867 core/models.py:867
#: build/lib/core/models.py:869 core/models.py:869
#, python-brace-format
msgid "{name} shared a document with you: {title}"
msgstr ""
#: build/lib/core/models.py:967 core/models.py:967
#: build/lib/core/models.py:969 core/models.py:969
msgid "Document/user link trace"
msgstr ""
#: build/lib/core/models.py:968 core/models.py:968
#: build/lib/core/models.py:970 core/models.py:970
msgid "Document/user link traces"
msgstr ""
#: build/lib/core/models.py:974 core/models.py:974
#: build/lib/core/models.py:976 core/models.py:976
msgid "A link trace already exists for this document/user."
msgstr ""
#: build/lib/core/models.py:997 core/models.py:997
#: build/lib/core/models.py:999 core/models.py:999
msgid "Document favorite"
msgstr ""
#: build/lib/core/models.py:998 core/models.py:998
#: build/lib/core/models.py:1000 core/models.py:1000
msgid "Document favorites"
msgstr ""
#: build/lib/core/models.py:1004 core/models.py:1004
#: build/lib/core/models.py:1006 core/models.py:1006
msgid "This document is already targeted by a favorite relation instance for the same user."
msgstr ""
#: build/lib/core/models.py:1026 core/models.py:1026
#: build/lib/core/models.py:1028 core/models.py:1028
msgid "Document/user relation"
msgstr ""
#: build/lib/core/models.py:1027 core/models.py:1027
#: build/lib/core/models.py:1029 core/models.py:1029
msgid "Document/user relations"
msgstr ""
#: build/lib/core/models.py:1033 core/models.py:1033
#: build/lib/core/models.py:1035 core/models.py:1035
msgid "This user is already in this document."
msgstr ""
#: build/lib/core/models.py:1039 core/models.py:1039
#: build/lib/core/models.py:1041 core/models.py:1041
msgid "This team is already in this document."
msgstr ""
#: build/lib/core/models.py:1045 build/lib/core/models.py:1362
#: core/models.py:1045 core/models.py:1362
#: build/lib/core/models.py:1047 build/lib/core/models.py:1516
#: core/models.py:1047 core/models.py:1516
msgid "Either user or team must be set, not both."
msgstr ""
#: build/lib/core/models.py:1191 core/models.py:1191
#: build/lib/core/models.py:1198 core/models.py:1198
msgid "Document ask for access"
msgstr ""
#: build/lib/core/models.py:1192 core/models.py:1192
#: build/lib/core/models.py:1199 core/models.py:1199
msgid "Document ask for accesses"
msgstr ""
#: build/lib/core/models.py:1198 core/models.py:1198
#: build/lib/core/models.py:1205 core/models.py:1205
msgid "This user has already asked for access to this document."
msgstr ""
#: build/lib/core/models.py:1255 core/models.py:1255
#: build/lib/core/models.py:1262 core/models.py:1262
#, python-brace-format
msgid "{name} would like access to a document!"
msgstr ""
#: build/lib/core/models.py:1259 core/models.py:1259
#: build/lib/core/models.py:1266 core/models.py:1266
#, python-brace-format
msgid "{name} would like access to the following document:"
msgstr ""
#: build/lib/core/models.py:1265 core/models.py:1265
#: build/lib/core/models.py:1272 core/models.py:1272
#, python-brace-format
msgid "{name} is asking for access to the document: {title}"
msgstr ""
#: build/lib/core/models.py:1277 core/models.py:1277
#: build/lib/core/models.py:1314 core/models.py:1314
msgid "Thread"
msgstr ""
#: build/lib/core/models.py:1315 core/models.py:1315
msgid "Threads"
msgstr ""
#: build/lib/core/models.py:1318 build/lib/core/models.py:1370
#: core/models.py:1318 core/models.py:1370
msgid "Anonymous"
msgstr ""
#: build/lib/core/models.py:1365 core/models.py:1365
msgid "Comment"
msgstr ""
#: build/lib/core/models.py:1366 core/models.py:1366
msgid "Comments"
msgstr ""
#: build/lib/core/models.py:1415 core/models.py:1415
msgid "This emoji has already been reacted to this comment."
msgstr ""
#: build/lib/core/models.py:1419 core/models.py:1419
msgid "Reaction"
msgstr ""
#: build/lib/core/models.py:1420 core/models.py:1420
msgid "Reactions"
msgstr ""
#: build/lib/core/models.py:1431 core/models.py:1431
msgid "description"
msgstr ""
#: build/lib/core/models.py:1278 core/models.py:1278
#: build/lib/core/models.py:1432 core/models.py:1432
msgid "code"
msgstr ""
#: build/lib/core/models.py:1279 core/models.py:1279
#: build/lib/core/models.py:1433 core/models.py:1433
msgid "css"
msgstr ""
#: build/lib/core/models.py:1281 core/models.py:1281
#: build/lib/core/models.py:1435 core/models.py:1435
msgid "public"
msgstr ""
#: build/lib/core/models.py:1283 core/models.py:1283
#: build/lib/core/models.py:1437 core/models.py:1437
msgid "Whether this template is public for anyone to use."
msgstr ""
#: build/lib/core/models.py:1289 core/models.py:1289
#: build/lib/core/models.py:1443 core/models.py:1443
msgid "Template"
msgstr ""
#: build/lib/core/models.py:1290 core/models.py:1290
#: build/lib/core/models.py:1444 core/models.py:1444
msgid "Templates"
msgstr ""
#: build/lib/core/models.py:1343 core/models.py:1343
#: build/lib/core/models.py:1497 core/models.py:1497
msgid "Template/user relation"
msgstr ""
#: build/lib/core/models.py:1344 core/models.py:1344
#: build/lib/core/models.py:1498 core/models.py:1498
msgid "Template/user relations"
msgstr ""
#: build/lib/core/models.py:1350 core/models.py:1350
#: build/lib/core/models.py:1504 core/models.py:1504
msgid "This user is already in this template."
msgstr ""
#: build/lib/core/models.py:1356 core/models.py:1356
#: build/lib/core/models.py:1510 core/models.py:1510
msgid "This team is already in this template."
msgstr ""
#: build/lib/core/models.py:1433 core/models.py:1433
#: build/lib/core/models.py:1587 core/models.py:1587
msgid "email address"
msgstr ""
#: build/lib/core/models.py:1452 core/models.py:1452
#: build/lib/core/models.py:1606 core/models.py:1606
msgid "Document invitation"
msgstr ""
#: build/lib/core/models.py:1453 core/models.py:1453
#: build/lib/core/models.py:1607 core/models.py:1607
msgid "Document invitations"
msgstr ""
#: build/lib/core/models.py:1473 core/models.py:1473
#: build/lib/core/models.py:1627 core/models.py:1627
msgid "This email is already associated to a registered user."
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lasuite-docs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-17 08:04+0000\n"
"PO-Revision-Date: 2025-11-19 10:13\n"
"POT-Creation-Date: 2025-11-20 14:08+0000\n"
"PO-Revision-Date: 2025-11-26 13:33\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@@ -50,67 +50,72 @@ msgstr ""
msgid "Favorite"
msgstr "Favorito"
#: build/lib/core/api/serializers.py:496 core/api/serializers.py:496
#: build/lib/core/api/serializers.py:497 core/api/serializers.py:497
msgid "A new document was created on your behalf!"
msgstr "¡Un nuevo documento se ha creado por ti!"
#: build/lib/core/api/serializers.py:500 core/api/serializers.py:500
#: build/lib/core/api/serializers.py:501 core/api/serializers.py:501
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:536 core/api/serializers.py:536
#: build/lib/core/api/serializers.py:537 core/api/serializers.py:537
msgid "This field is required."
msgstr ""
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
#, python-format
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
msgstr ""
#: build/lib/core/api/serializers.py:693 core/api/serializers.py:693
#: build/lib/core/api/serializers.py:694 core/api/serializers.py:694
msgid "Body"
msgstr "Cuerpo"
#: build/lib/core/api/serializers.py:696 core/api/serializers.py:696
#: build/lib/core/api/serializers.py:697 core/api/serializers.py:697
msgid "Body type"
msgstr "Tipo de Cuerpo"
#: build/lib/core/api/serializers.py:702 core/api/serializers.py:702
#: build/lib/core/api/serializers.py:703 core/api/serializers.py:703
msgid "Format"
msgstr "Formato"
#: build/lib/core/api/viewsets.py:1003 core/api/viewsets.py:1003
#: build/lib/core/api/viewsets.py:1004 core/api/viewsets.py:1004
#, python-brace-format
msgid "copy of {title}"
msgstr "copia de {title}"
#: build/lib/core/choices.py:35 build/lib/core/choices.py:42 core/choices.py:35
#: core/choices.py:42
#: build/lib/core/choices.py:35 build/lib/core/choices.py:43 core/choices.py:35
#: core/choices.py:43
msgid "Reader"
msgstr "Lector"
#: build/lib/core/choices.py:36 build/lib/core/choices.py:43 core/choices.py:36
#: core/choices.py:43
#: 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 "Editor"
#: build/lib/core/choices.py:44 core/choices.py:44
#: build/lib/core/choices.py:46 core/choices.py:46
msgid "Administrator"
msgstr "Administrador"
#: build/lib/core/choices.py:45 core/choices.py:45
#: build/lib/core/choices.py:47 core/choices.py:47
msgid "Owner"
msgstr "Propietario"
#: build/lib/core/choices.py:56 core/choices.py:56
#: build/lib/core/choices.py:58 core/choices.py:58
msgid "Restricted"
msgstr "Restringido"
#: build/lib/core/choices.py:60 core/choices.py:60
#: build/lib/core/choices.py:62 core/choices.py:62
msgid "Authenticated"
msgstr "Autentificado"
#: build/lib/core/choices.py:62 core/choices.py:62
#: build/lib/core/choices.py:64 core/choices.py:64
msgid "Public"
msgstr "Público"
@@ -234,8 +239,8 @@ msgstr "usuario"
msgid "users"
msgstr "usuarios"
#: build/lib/core/models.py:361 build/lib/core/models.py:1276
#: core/models.py:361 core/models.py:1276
#: build/lib/core/models.py:361 build/lib/core/models.py:1430
#: core/models.py:361 core/models.py:1430
msgid "title"
msgstr "título"
@@ -251,155 +256,188 @@ msgstr "Documento"
msgid "Documents"
msgstr "Documentos"
#: build/lib/core/models.py:424 build/lib/core/models.py:822 core/models.py:424
#: core/models.py:822
#: build/lib/core/models.py:424 build/lib/core/models.py:824 core/models.py:424
#: core/models.py:824
msgid "Untitled Document"
msgstr "Documento sin título"
#: build/lib/core/models.py:857 core/models.py:857
#: build/lib/core/models.py:859 core/models.py:859
#, python-brace-format
msgid "{name} shared a document with you!"
msgstr "¡{name} ha compartido un documento contigo!"
#: build/lib/core/models.py:861 core/models.py:861
#: build/lib/core/models.py:863 core/models.py:863
#, 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:867 core/models.py:867
#: build/lib/core/models.py:869 core/models.py:869
#, python-brace-format
msgid "{name} shared a document with you: {title}"
msgstr "{name} ha compartido un documento contigo: {title}"
#: build/lib/core/models.py:967 core/models.py:967
#: build/lib/core/models.py:969 core/models.py:969
msgid "Document/user link trace"
msgstr "Traza del enlace de documento/usuario"
#: build/lib/core/models.py:968 core/models.py:968
#: build/lib/core/models.py:970 core/models.py:970
msgid "Document/user link traces"
msgstr "Trazas del enlace de documento/usuario"
#: build/lib/core/models.py:974 core/models.py:974
#: build/lib/core/models.py:976 core/models.py:976
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:997 core/models.py:997
#: build/lib/core/models.py:999 core/models.py:999
msgid "Document favorite"
msgstr "Documento favorito"
#: build/lib/core/models.py:998 core/models.py:998
#: build/lib/core/models.py:1000 core/models.py:1000
msgid "Document favorites"
msgstr "Documentos favoritos"
#: build/lib/core/models.py:1004 core/models.py:1004
#: build/lib/core/models.py:1006 core/models.py:1006
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:1026 core/models.py:1026
#: build/lib/core/models.py:1028 core/models.py:1028
msgid "Document/user relation"
msgstr "Relación documento/usuario"
#: build/lib/core/models.py:1027 core/models.py:1027
#: build/lib/core/models.py:1029 core/models.py:1029
msgid "Document/user relations"
msgstr "Relaciones documento/usuario"
#: build/lib/core/models.py:1033 core/models.py:1033
#: build/lib/core/models.py:1035 core/models.py:1035
msgid "This user is already in this document."
msgstr "Este usuario ya forma parte del documento."
#: build/lib/core/models.py:1039 core/models.py:1039
#: build/lib/core/models.py:1041 core/models.py:1041
msgid "This team is already in this document."
msgstr "Este equipo ya forma parte del documento."
#: build/lib/core/models.py:1045 build/lib/core/models.py:1362
#: core/models.py:1045 core/models.py:1362
#: build/lib/core/models.py:1047 build/lib/core/models.py:1516
#: core/models.py:1047 core/models.py:1516
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:1191 core/models.py:1191
#: build/lib/core/models.py:1198 core/models.py:1198
msgid "Document ask for access"
msgstr "Solicitud de acceso"
#: build/lib/core/models.py:1192 core/models.py:1192
#: build/lib/core/models.py:1199 core/models.py:1199
msgid "Document ask for accesses"
msgstr "Solicitud de accesos"
#: build/lib/core/models.py:1198 core/models.py:1198
#: build/lib/core/models.py:1205 core/models.py:1205
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:1255 core/models.py:1255
#: build/lib/core/models.py:1262 core/models.py:1262
#, python-brace-format
msgid "{name} would like access to a document!"
msgstr "¡{name} desea acceder a un documento!"
#: build/lib/core/models.py:1259 core/models.py:1259
#: build/lib/core/models.py:1266 core/models.py:1266
#, python-brace-format
msgid "{name} would like access to the following document:"
msgstr "{name} desea acceso al siguiente documento:"
#: build/lib/core/models.py:1265 core/models.py:1265
#: build/lib/core/models.py:1272 core/models.py:1272
#, 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:1277 core/models.py:1277
#: build/lib/core/models.py:1314 core/models.py:1314
msgid "Thread"
msgstr ""
#: build/lib/core/models.py:1315 core/models.py:1315
msgid "Threads"
msgstr ""
#: build/lib/core/models.py:1318 build/lib/core/models.py:1370
#: core/models.py:1318 core/models.py:1370
msgid "Anonymous"
msgstr ""
#: build/lib/core/models.py:1365 core/models.py:1365
msgid "Comment"
msgstr ""
#: build/lib/core/models.py:1366 core/models.py:1366
msgid "Comments"
msgstr ""
#: build/lib/core/models.py:1415 core/models.py:1415
msgid "This emoji has already been reacted to this comment."
msgstr ""
#: build/lib/core/models.py:1419 core/models.py:1419
msgid "Reaction"
msgstr ""
#: build/lib/core/models.py:1420 core/models.py:1420
msgid "Reactions"
msgstr ""
#: build/lib/core/models.py:1431 core/models.py:1431
msgid "description"
msgstr "descripción"
#: build/lib/core/models.py:1278 core/models.py:1278
#: build/lib/core/models.py:1432 core/models.py:1432
msgid "code"
msgstr "código"
#: build/lib/core/models.py:1279 core/models.py:1279
#: build/lib/core/models.py:1433 core/models.py:1433
msgid "css"
msgstr "css"
#: build/lib/core/models.py:1281 core/models.py:1281
#: build/lib/core/models.py:1435 core/models.py:1435
msgid "public"
msgstr "público"
#: build/lib/core/models.py:1283 core/models.py:1283
#: build/lib/core/models.py:1437 core/models.py:1437
msgid "Whether this template is public for anyone to use."
msgstr "Si esta plantilla es pública para que cualquiera la utilice."
#: build/lib/core/models.py:1289 core/models.py:1289
#: build/lib/core/models.py:1443 core/models.py:1443
msgid "Template"
msgstr "Plantilla"
#: build/lib/core/models.py:1290 core/models.py:1290
#: build/lib/core/models.py:1444 core/models.py:1444
msgid "Templates"
msgstr "Plantillas"
#: build/lib/core/models.py:1343 core/models.py:1343
#: build/lib/core/models.py:1497 core/models.py:1497
msgid "Template/user relation"
msgstr "Relación plantilla/usuario"
#: build/lib/core/models.py:1344 core/models.py:1344
#: build/lib/core/models.py:1498 core/models.py:1498
msgid "Template/user relations"
msgstr "Relaciones plantilla/usuario"
#: build/lib/core/models.py:1350 core/models.py:1350
#: build/lib/core/models.py:1504 core/models.py:1504
msgid "This user is already in this template."
msgstr "Este usuario ya forma parte de la plantilla."
#: build/lib/core/models.py:1356 core/models.py:1356
#: build/lib/core/models.py:1510 core/models.py:1510
msgid "This team is already in this template."
msgstr "Este equipo ya se encuentra en esta plantilla."
#: build/lib/core/models.py:1433 core/models.py:1433
#: build/lib/core/models.py:1587 core/models.py:1587
msgid "email address"
msgstr "dirección de correo electrónico"
#: build/lib/core/models.py:1452 core/models.py:1452
#: build/lib/core/models.py:1606 core/models.py:1606
msgid "Document invitation"
msgstr "Invitación al documento"
#: build/lib/core/models.py:1453 core/models.py:1453
#: build/lib/core/models.py:1607 core/models.py:1607
msgid "Document invitations"
msgstr "Invitaciones a documentos"
#: build/lib/core/models.py:1473 core/models.py:1473
#: build/lib/core/models.py:1627 core/models.py:1627
msgid "This email is already associated to a registered user."
msgstr "Este correo electrónico está asociado a un usuario registrado."

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lasuite-docs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-17 08:04+0000\n"
"PO-Revision-Date: 2025-11-19 10:13\n"
"POT-Creation-Date: 2025-11-20 14:08+0000\n"
"PO-Revision-Date: 2025-11-26 13:33\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -50,67 +50,72 @@ msgstr "Masqué"
msgid "Favorite"
msgstr "Favoris"
#: build/lib/core/api/serializers.py:496 core/api/serializers.py:496
#: build/lib/core/api/serializers.py:497 core/api/serializers.py:497
msgid "A new document was created on your behalf!"
msgstr "Un nouveau document a été créé pour vous !"
#: build/lib/core/api/serializers.py:500 core/api/serializers.py:500
#: build/lib/core/api/serializers.py:501 core/api/serializers.py:501
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:536 core/api/serializers.py:536
#: build/lib/core/api/serializers.py:537 core/api/serializers.py:537
msgid "This field is required."
msgstr "Ce champ est obligatoire."
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
#, 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/serializers.py:693 core/api/serializers.py:693
#: build/lib/core/api/serializers.py:694 core/api/serializers.py:694
msgid "Body"
msgstr "Corps"
#: build/lib/core/api/serializers.py:696 core/api/serializers.py:696
#: build/lib/core/api/serializers.py:697 core/api/serializers.py:697
msgid "Body type"
msgstr "Type de corps"
#: build/lib/core/api/serializers.py:702 core/api/serializers.py:702
#: build/lib/core/api/serializers.py:703 core/api/serializers.py:703
msgid "Format"
msgstr "Format"
#: build/lib/core/api/viewsets.py:1003 core/api/viewsets.py:1003
#: build/lib/core/api/viewsets.py:1004 core/api/viewsets.py:1004
#, python-brace-format
msgid "copy of {title}"
msgstr "copie de {title}"
#: build/lib/core/choices.py:35 build/lib/core/choices.py:42 core/choices.py:35
#: core/choices.py:42
#: build/lib/core/choices.py:35 build/lib/core/choices.py:43 core/choices.py:35
#: core/choices.py:43
msgid "Reader"
msgstr "Lecteur"
#: build/lib/core/choices.py:36 build/lib/core/choices.py:43 core/choices.py:36
#: core/choices.py:43
#: build/lib/core/choices.py:36 build/lib/core/choices.py:44 core/choices.py:36
#: core/choices.py:44
msgid "Commenter"
msgstr "Commentateur"
#: build/lib/core/choices.py:37 build/lib/core/choices.py:45 core/choices.py:37
#: core/choices.py:45
msgid "Editor"
msgstr "Éditeur"
#: build/lib/core/choices.py:44 core/choices.py:44
#: build/lib/core/choices.py:46 core/choices.py:46
msgid "Administrator"
msgstr "Administrateur"
#: build/lib/core/choices.py:45 core/choices.py:45
#: build/lib/core/choices.py:47 core/choices.py:47
msgid "Owner"
msgstr "Propriétaire"
#: build/lib/core/choices.py:56 core/choices.py:56
#: build/lib/core/choices.py:58 core/choices.py:58
msgid "Restricted"
msgstr "Restreint"
#: build/lib/core/choices.py:60 core/choices.py:60
#: build/lib/core/choices.py:62 core/choices.py:62
msgid "Authenticated"
msgstr "Authentifié"
#: build/lib/core/choices.py:62 core/choices.py:62
#: build/lib/core/choices.py:64 core/choices.py:64
msgid "Public"
msgstr "Public"
@@ -234,8 +239,8 @@ msgstr "utilisateur"
msgid "users"
msgstr "utilisateurs"
#: build/lib/core/models.py:361 build/lib/core/models.py:1276
#: core/models.py:361 core/models.py:1276
#: build/lib/core/models.py:361 build/lib/core/models.py:1430
#: core/models.py:361 core/models.py:1430
msgid "title"
msgstr "titre"
@@ -251,155 +256,188 @@ msgstr "Document"
msgid "Documents"
msgstr "Documents"
#: build/lib/core/models.py:424 build/lib/core/models.py:822 core/models.py:424
#: core/models.py:822
#: build/lib/core/models.py:424 build/lib/core/models.py:824 core/models.py:424
#: core/models.py:824
msgid "Untitled Document"
msgstr "Document sans titre"
#: build/lib/core/models.py:857 core/models.py:857
#: build/lib/core/models.py:859 core/models.py:859
#, python-brace-format
msgid "{name} shared a document with you!"
msgstr "{name} a partagé un document avec vous!"
#: build/lib/core/models.py:861 core/models.py:861
#: build/lib/core/models.py:863 core/models.py:863
#, 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:867 core/models.py:867
#: build/lib/core/models.py:869 core/models.py:869
#, 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:967 core/models.py:967
#: build/lib/core/models.py:969 core/models.py:969
msgid "Document/user link trace"
msgstr "Trace du lien document/utilisateur"
#: build/lib/core/models.py:968 core/models.py:968
#: build/lib/core/models.py:970 core/models.py:970
msgid "Document/user link traces"
msgstr "Traces du lien document/utilisateur"
#: build/lib/core/models.py:974 core/models.py:974
#: build/lib/core/models.py:976 core/models.py:976
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:997 core/models.py:997
#: build/lib/core/models.py:999 core/models.py:999
msgid "Document favorite"
msgstr "Document favori"
#: build/lib/core/models.py:998 core/models.py:998
#: build/lib/core/models.py:1000 core/models.py:1000
msgid "Document favorites"
msgstr "Documents favoris"
#: build/lib/core/models.py:1004 core/models.py:1004
#: build/lib/core/models.py:1006 core/models.py:1006
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:1026 core/models.py:1026
#: build/lib/core/models.py:1028 core/models.py:1028
msgid "Document/user relation"
msgstr "Relation document/utilisateur"
#: build/lib/core/models.py:1027 core/models.py:1027
#: build/lib/core/models.py:1029 core/models.py:1029
msgid "Document/user relations"
msgstr "Relations document/utilisateur"
#: build/lib/core/models.py:1033 core/models.py:1033
#: build/lib/core/models.py:1035 core/models.py:1035
msgid "This user is already in this document."
msgstr "Cet utilisateur est déjà dans ce document."
#: build/lib/core/models.py:1039 core/models.py:1039
#: build/lib/core/models.py:1041 core/models.py:1041
msgid "This team is already in this document."
msgstr "Cette équipe est déjà dans ce document."
#: build/lib/core/models.py:1045 build/lib/core/models.py:1362
#: core/models.py:1045 core/models.py:1362
#: build/lib/core/models.py:1047 build/lib/core/models.py:1516
#: core/models.py:1047 core/models.py:1516
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:1191 core/models.py:1191
#: build/lib/core/models.py:1198 core/models.py:1198
msgid "Document ask for access"
msgstr "Demande d'accès au document"
#: build/lib/core/models.py:1192 core/models.py:1192
#: build/lib/core/models.py:1199 core/models.py:1199
msgid "Document ask for accesses"
msgstr "Demande d'accès au document"
#: build/lib/core/models.py:1198 core/models.py:1198
#: build/lib/core/models.py:1205 core/models.py:1205
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:1255 core/models.py:1255
#: build/lib/core/models.py:1262 core/models.py:1262
#, python-brace-format
msgid "{name} would like access to a document!"
msgstr "{name} souhaiterait accéder au document suivant !"
#: build/lib/core/models.py:1259 core/models.py:1259
#: build/lib/core/models.py:1266 core/models.py:1266
#, 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:1265 core/models.py:1265
#: build/lib/core/models.py:1272 core/models.py:1272
#, 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:1277 core/models.py:1277
#: build/lib/core/models.py:1314 core/models.py:1314
msgid "Thread"
msgstr "Conversation"
#: build/lib/core/models.py:1315 core/models.py:1315
msgid "Threads"
msgstr "Conversations"
#: build/lib/core/models.py:1318 build/lib/core/models.py:1370
#: core/models.py:1318 core/models.py:1370
msgid "Anonymous"
msgstr "Anonyme"
#: build/lib/core/models.py:1365 core/models.py:1365
msgid "Comment"
msgstr "Commentaire"
#: build/lib/core/models.py:1366 core/models.py:1366
msgid "Comments"
msgstr "Commentaires"
#: build/lib/core/models.py:1415 core/models.py:1415
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:1419 core/models.py:1419
msgid "Reaction"
msgstr "Réaction"
#: build/lib/core/models.py:1420 core/models.py:1420
msgid "Reactions"
msgstr "Réactions"
#: build/lib/core/models.py:1431 core/models.py:1431
msgid "description"
msgstr "description"
#: build/lib/core/models.py:1278 core/models.py:1278
#: build/lib/core/models.py:1432 core/models.py:1432
msgid "code"
msgstr "code"
#: build/lib/core/models.py:1279 core/models.py:1279
#: build/lib/core/models.py:1433 core/models.py:1433
msgid "css"
msgstr "CSS"
#: build/lib/core/models.py:1281 core/models.py:1281
#: build/lib/core/models.py:1435 core/models.py:1435
msgid "public"
msgstr "public"
#: build/lib/core/models.py:1283 core/models.py:1283
#: build/lib/core/models.py:1437 core/models.py:1437
msgid "Whether this template is public for anyone to use."
msgstr "Si ce modèle est public, utilisable par n'importe qui."
#: build/lib/core/models.py:1289 core/models.py:1289
#: build/lib/core/models.py:1443 core/models.py:1443
msgid "Template"
msgstr "Modèle"
#: build/lib/core/models.py:1290 core/models.py:1290
#: build/lib/core/models.py:1444 core/models.py:1444
msgid "Templates"
msgstr "Modèles"
#: build/lib/core/models.py:1343 core/models.py:1343
#: build/lib/core/models.py:1497 core/models.py:1497
msgid "Template/user relation"
msgstr "Relation modèle/utilisateur"
#: build/lib/core/models.py:1344 core/models.py:1344
#: build/lib/core/models.py:1498 core/models.py:1498
msgid "Template/user relations"
msgstr "Relations modèle/utilisateur"
#: build/lib/core/models.py:1350 core/models.py:1350
#: build/lib/core/models.py:1504 core/models.py:1504
msgid "This user is already in this template."
msgstr "Cet utilisateur est déjà dans ce modèle."
#: build/lib/core/models.py:1356 core/models.py:1356
#: build/lib/core/models.py:1510 core/models.py:1510
msgid "This team is already in this template."
msgstr "Cette équipe est déjà modèle."
#: build/lib/core/models.py:1433 core/models.py:1433
#: build/lib/core/models.py:1587 core/models.py:1587
msgid "email address"
msgstr "adresse e-mail"
#: build/lib/core/models.py:1452 core/models.py:1452
#: build/lib/core/models.py:1606 core/models.py:1606
msgid "Document invitation"
msgstr "Invitation à un document"
#: build/lib/core/models.py:1453 core/models.py:1453
#: build/lib/core/models.py:1607 core/models.py:1607
msgid "Document invitations"
msgstr "Invitations à un document"
#: build/lib/core/models.py:1473 core/models.py:1473
#: build/lib/core/models.py:1627 core/models.py:1627
msgid "This email is already associated to a registered user."
msgstr "Cette adresse email est déjà associée à un utilisateur inscrit."

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lasuite-docs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-17 08:04+0000\n"
"PO-Revision-Date: 2025-11-19 10:13\n"
"POT-Creation-Date: 2025-11-20 14:08+0000\n"
"PO-Revision-Date: 2025-11-26 13:33\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -50,67 +50,72 @@ msgstr ""
msgid "Favorite"
msgstr "Preferiti"
#: build/lib/core/api/serializers.py:496 core/api/serializers.py:496
#: build/lib/core/api/serializers.py:497 core/api/serializers.py:497
msgid "A new document was created on your behalf!"
msgstr "Un nuovo documento è stato creato a tuo nome!"
#: build/lib/core/api/serializers.py:500 core/api/serializers.py:500
#: build/lib/core/api/serializers.py:501 core/api/serializers.py:501
msgid "You have been granted ownership of a new document:"
msgstr "Sei ora proprietario di un nuovo documento:"
#: build/lib/core/api/serializers.py:536 core/api/serializers.py:536
#: build/lib/core/api/serializers.py:537 core/api/serializers.py:537
msgid "This field is required."
msgstr ""
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
#, python-format
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
msgstr ""
#: build/lib/core/api/serializers.py:693 core/api/serializers.py:693
#: build/lib/core/api/serializers.py:694 core/api/serializers.py:694
msgid "Body"
msgstr "Corpo"
#: build/lib/core/api/serializers.py:696 core/api/serializers.py:696
#: build/lib/core/api/serializers.py:697 core/api/serializers.py:697
msgid "Body type"
msgstr ""
#: build/lib/core/api/serializers.py:702 core/api/serializers.py:702
#: build/lib/core/api/serializers.py:703 core/api/serializers.py:703
msgid "Format"
msgstr "Formato"
#: build/lib/core/api/viewsets.py:1003 core/api/viewsets.py:1003
#: build/lib/core/api/viewsets.py:1004 core/api/viewsets.py:1004
#, python-brace-format
msgid "copy of {title}"
msgstr "copia di {title}"
#: build/lib/core/choices.py:35 build/lib/core/choices.py:42 core/choices.py:35
#: core/choices.py:42
#: build/lib/core/choices.py:35 build/lib/core/choices.py:43 core/choices.py:35
#: core/choices.py:43
msgid "Reader"
msgstr "Lettore"
#: build/lib/core/choices.py:36 build/lib/core/choices.py:43 core/choices.py:36
#: core/choices.py:43
#: 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 "Editor"
#: build/lib/core/choices.py:44 core/choices.py:44
#: build/lib/core/choices.py:46 core/choices.py:46
msgid "Administrator"
msgstr "Amministratore"
#: build/lib/core/choices.py:45 core/choices.py:45
#: build/lib/core/choices.py:47 core/choices.py:47
msgid "Owner"
msgstr "Proprietario"
#: build/lib/core/choices.py:56 core/choices.py:56
#: build/lib/core/choices.py:58 core/choices.py:58
msgid "Restricted"
msgstr "Limitato"
#: build/lib/core/choices.py:60 core/choices.py:60
#: build/lib/core/choices.py:62 core/choices.py:62
msgid "Authenticated"
msgstr "Autenticato"
#: build/lib/core/choices.py:62 core/choices.py:62
#: build/lib/core/choices.py:64 core/choices.py:64
msgid "Public"
msgstr "Pubblico"
@@ -234,8 +239,8 @@ msgstr "utente"
msgid "users"
msgstr "utenti"
#: build/lib/core/models.py:361 build/lib/core/models.py:1276
#: core/models.py:361 core/models.py:1276
#: build/lib/core/models.py:361 build/lib/core/models.py:1430
#: core/models.py:361 core/models.py:1430
msgid "title"
msgstr "titolo"
@@ -251,155 +256,188 @@ msgstr "Documento"
msgid "Documents"
msgstr "Documenti"
#: build/lib/core/models.py:424 build/lib/core/models.py:822 core/models.py:424
#: core/models.py:822
#: build/lib/core/models.py:424 build/lib/core/models.py:824 core/models.py:424
#: core/models.py:824
msgid "Untitled Document"
msgstr "Documento senza titolo"
#: build/lib/core/models.py:857 core/models.py:857
#: build/lib/core/models.py:859 core/models.py:859
#, python-brace-format
msgid "{name} shared a document with you!"
msgstr "{name} ha condiviso un documento con te!"
#: build/lib/core/models.py:861 core/models.py:861
#: build/lib/core/models.py:863 core/models.py:863
#, 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:867 core/models.py:867
#: build/lib/core/models.py:869 core/models.py:869
#, 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:967 core/models.py:967
#: build/lib/core/models.py:969 core/models.py:969
msgid "Document/user link trace"
msgstr ""
#: build/lib/core/models.py:968 core/models.py:968
#: build/lib/core/models.py:970 core/models.py:970
msgid "Document/user link traces"
msgstr ""
#: build/lib/core/models.py:974 core/models.py:974
#: build/lib/core/models.py:976 core/models.py:976
msgid "A link trace already exists for this document/user."
msgstr ""
#: build/lib/core/models.py:997 core/models.py:997
#: build/lib/core/models.py:999 core/models.py:999
msgid "Document favorite"
msgstr "Documento preferito"
#: build/lib/core/models.py:998 core/models.py:998
#: build/lib/core/models.py:1000 core/models.py:1000
msgid "Document favorites"
msgstr "Documenti preferiti"
#: build/lib/core/models.py:1004 core/models.py:1004
#: build/lib/core/models.py:1006 core/models.py:1006
msgid "This document is already targeted by a favorite relation instance for the same user."
msgstr ""
#: build/lib/core/models.py:1026 core/models.py:1026
#: build/lib/core/models.py:1028 core/models.py:1028
msgid "Document/user relation"
msgstr ""
#: build/lib/core/models.py:1027 core/models.py:1027
#: build/lib/core/models.py:1029 core/models.py:1029
msgid "Document/user relations"
msgstr ""
#: build/lib/core/models.py:1033 core/models.py:1033
#: build/lib/core/models.py:1035 core/models.py:1035
msgid "This user is already in this document."
msgstr "Questo utente è già presente in questo documento."
#: build/lib/core/models.py:1039 core/models.py:1039
#: build/lib/core/models.py:1041 core/models.py:1041
msgid "This team is already in this document."
msgstr "Questo team è già presente in questo documento."
#: build/lib/core/models.py:1045 build/lib/core/models.py:1362
#: core/models.py:1045 core/models.py:1362
#: build/lib/core/models.py:1047 build/lib/core/models.py:1516
#: core/models.py:1047 core/models.py:1516
msgid "Either user or team must be set, not both."
msgstr ""
#: build/lib/core/models.py:1191 core/models.py:1191
#: build/lib/core/models.py:1198 core/models.py:1198
msgid "Document ask for access"
msgstr ""
#: build/lib/core/models.py:1192 core/models.py:1192
#: build/lib/core/models.py:1199 core/models.py:1199
msgid "Document ask for accesses"
msgstr ""
#: build/lib/core/models.py:1198 core/models.py:1198
#: build/lib/core/models.py:1205 core/models.py:1205
msgid "This user has already asked for access to this document."
msgstr ""
#: build/lib/core/models.py:1255 core/models.py:1255
#: build/lib/core/models.py:1262 core/models.py:1262
#, python-brace-format
msgid "{name} would like access to a document!"
msgstr ""
#: build/lib/core/models.py:1259 core/models.py:1259
#: build/lib/core/models.py:1266 core/models.py:1266
#, python-brace-format
msgid "{name} would like access to the following document:"
msgstr ""
#: build/lib/core/models.py:1265 core/models.py:1265
#: build/lib/core/models.py:1272 core/models.py:1272
#, python-brace-format
msgid "{name} is asking for access to the document: {title}"
msgstr ""
#: build/lib/core/models.py:1277 core/models.py:1277
#: build/lib/core/models.py:1314 core/models.py:1314
msgid "Thread"
msgstr ""
#: build/lib/core/models.py:1315 core/models.py:1315
msgid "Threads"
msgstr ""
#: build/lib/core/models.py:1318 build/lib/core/models.py:1370
#: core/models.py:1318 core/models.py:1370
msgid "Anonymous"
msgstr ""
#: build/lib/core/models.py:1365 core/models.py:1365
msgid "Comment"
msgstr ""
#: build/lib/core/models.py:1366 core/models.py:1366
msgid "Comments"
msgstr ""
#: build/lib/core/models.py:1415 core/models.py:1415
msgid "This emoji has already been reacted to this comment."
msgstr ""
#: build/lib/core/models.py:1419 core/models.py:1419
msgid "Reaction"
msgstr ""
#: build/lib/core/models.py:1420 core/models.py:1420
msgid "Reactions"
msgstr ""
#: build/lib/core/models.py:1431 core/models.py:1431
msgid "description"
msgstr "descrizione"
#: build/lib/core/models.py:1278 core/models.py:1278
#: build/lib/core/models.py:1432 core/models.py:1432
msgid "code"
msgstr "code"
#: build/lib/core/models.py:1279 core/models.py:1279
#: build/lib/core/models.py:1433 core/models.py:1433
msgid "css"
msgstr "css"
#: build/lib/core/models.py:1281 core/models.py:1281
#: build/lib/core/models.py:1435 core/models.py:1435
msgid "public"
msgstr "pubblico"
#: build/lib/core/models.py:1283 core/models.py:1283
#: build/lib/core/models.py:1437 core/models.py:1437
msgid "Whether this template is public for anyone to use."
msgstr "Indica se questo modello è pubblico per chiunque."
#: build/lib/core/models.py:1289 core/models.py:1289
#: build/lib/core/models.py:1443 core/models.py:1443
msgid "Template"
msgstr "Modello"
#: build/lib/core/models.py:1290 core/models.py:1290
#: build/lib/core/models.py:1444 core/models.py:1444
msgid "Templates"
msgstr "Modelli"
#: build/lib/core/models.py:1343 core/models.py:1343
#: build/lib/core/models.py:1497 core/models.py:1497
msgid "Template/user relation"
msgstr ""
#: build/lib/core/models.py:1344 core/models.py:1344
#: build/lib/core/models.py:1498 core/models.py:1498
msgid "Template/user relations"
msgstr ""
#: build/lib/core/models.py:1350 core/models.py:1350
#: build/lib/core/models.py:1504 core/models.py:1504
msgid "This user is already in this template."
msgstr "Questo utente è già in questo modello."
#: build/lib/core/models.py:1356 core/models.py:1356
#: build/lib/core/models.py:1510 core/models.py:1510
msgid "This team is already in this template."
msgstr "Questo team è già in questo modello."
#: build/lib/core/models.py:1433 core/models.py:1433
#: build/lib/core/models.py:1587 core/models.py:1587
msgid "email address"
msgstr "indirizzo e-mail"
#: build/lib/core/models.py:1452 core/models.py:1452
#: build/lib/core/models.py:1606 core/models.py:1606
msgid "Document invitation"
msgstr "Invito al documento"
#: build/lib/core/models.py:1453 core/models.py:1453
#: build/lib/core/models.py:1607 core/models.py:1607
msgid "Document invitations"
msgstr "Inviti al documento"
#: build/lib/core/models.py:1473 core/models.py:1473
#: build/lib/core/models.py:1627 core/models.py:1627
msgid "This email is already associated to a registered user."
msgstr "Questa email è già associata a un utente registrato."

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lasuite-docs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-17 08:04+0000\n"
"PO-Revision-Date: 2025-11-19 10:13\n"
"POT-Creation-Date: 2025-11-20 14:08+0000\n"
"PO-Revision-Date: 2025-11-26 13:33\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@@ -50,67 +50,72 @@ msgstr "Gemaskeerd"
msgid "Favorite"
msgstr "Favoriet"
#: build/lib/core/api/serializers.py:496 core/api/serializers.py:496
#: build/lib/core/api/serializers.py:497 core/api/serializers.py:497
msgid "A new document was created on your behalf!"
msgstr "Een nieuw document is namens u gemaakt!"
#: build/lib/core/api/serializers.py:500 core/api/serializers.py:500
#: build/lib/core/api/serializers.py:501 core/api/serializers.py:501
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:536 core/api/serializers.py:536
#: build/lib/core/api/serializers.py:537 core/api/serializers.py:537
msgid "This field is required."
msgstr "Dit veld is verplicht."
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
#, 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/serializers.py:693 core/api/serializers.py:693
#: build/lib/core/api/serializers.py:694 core/api/serializers.py:694
msgid "Body"
msgstr "Text"
#: build/lib/core/api/serializers.py:696 core/api/serializers.py:696
#: build/lib/core/api/serializers.py:697 core/api/serializers.py:697
msgid "Body type"
msgstr "Text type"
#: build/lib/core/api/serializers.py:702 core/api/serializers.py:702
#: build/lib/core/api/serializers.py:703 core/api/serializers.py:703
msgid "Format"
msgstr "Formaat"
#: build/lib/core/api/viewsets.py:1003 core/api/viewsets.py:1003
#: build/lib/core/api/viewsets.py:1004 core/api/viewsets.py:1004
#, python-brace-format
msgid "copy of {title}"
msgstr "kopie van {title}"
#: build/lib/core/choices.py:35 build/lib/core/choices.py:42 core/choices.py:35
#: core/choices.py:42
#: build/lib/core/choices.py:35 build/lib/core/choices.py:43 core/choices.py:35
#: core/choices.py:43
msgid "Reader"
msgstr "Lezer"
#: build/lib/core/choices.py:36 build/lib/core/choices.py:43 core/choices.py:36
#: core/choices.py:43
#: build/lib/core/choices.py:36 build/lib/core/choices.py:44 core/choices.py:36
#: core/choices.py:44
msgid "Commenter"
msgstr "Commentator"
#: build/lib/core/choices.py:37 build/lib/core/choices.py:45 core/choices.py:37
#: core/choices.py:45
msgid "Editor"
msgstr "Redacteur"
#: build/lib/core/choices.py:44 core/choices.py:44
#: build/lib/core/choices.py:46 core/choices.py:46
msgid "Administrator"
msgstr "Beheerder"
#: build/lib/core/choices.py:45 core/choices.py:45
#: build/lib/core/choices.py:47 core/choices.py:47
msgid "Owner"
msgstr "Eigenaar"
#: build/lib/core/choices.py:56 core/choices.py:56
#: build/lib/core/choices.py:58 core/choices.py:58
msgid "Restricted"
msgstr "Beperkt"
#: build/lib/core/choices.py:60 core/choices.py:60
#: build/lib/core/choices.py:62 core/choices.py:62
msgid "Authenticated"
msgstr "Geauthenticeerd"
#: build/lib/core/choices.py:62 core/choices.py:62
#: build/lib/core/choices.py:64 core/choices.py:64
msgid "Public"
msgstr "Publiek"
@@ -234,8 +239,8 @@ msgstr "gebruiker"
msgid "users"
msgstr "gebruikers"
#: build/lib/core/models.py:361 build/lib/core/models.py:1276
#: core/models.py:361 core/models.py:1276
#: build/lib/core/models.py:361 build/lib/core/models.py:1430
#: core/models.py:361 core/models.py:1430
msgid "title"
msgstr "titel"
@@ -251,155 +256,188 @@ msgstr "Document"
msgid "Documents"
msgstr "Documenten"
#: build/lib/core/models.py:424 build/lib/core/models.py:822 core/models.py:424
#: core/models.py:822
#: build/lib/core/models.py:424 build/lib/core/models.py:824 core/models.py:424
#: core/models.py:824
msgid "Untitled Document"
msgstr "Naamloos Document"
#: build/lib/core/models.py:857 core/models.py:857
#: build/lib/core/models.py:859 core/models.py:859
#, python-brace-format
msgid "{name} shared a document with you!"
msgstr "{name} heeft een document met u gedeeld!"
#: build/lib/core/models.py:861 core/models.py:861
#: build/lib/core/models.py:863 core/models.py:863
#, 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:867 core/models.py:867
#: build/lib/core/models.py:869 core/models.py:869
#, 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:967 core/models.py:967
#: build/lib/core/models.py:969 core/models.py:969
msgid "Document/user link trace"
msgstr "Document/gebruiker link"
#: build/lib/core/models.py:968 core/models.py:968
#: build/lib/core/models.py:970 core/models.py:970
msgid "Document/user link traces"
msgstr "Document/gebruiker link"
#: build/lib/core/models.py:974 core/models.py:974
#: build/lib/core/models.py:976 core/models.py:976
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:997 core/models.py:997
#: build/lib/core/models.py:999 core/models.py:999
msgid "Document favorite"
msgstr "Document favoriet"
#: build/lib/core/models.py:998 core/models.py:998
#: build/lib/core/models.py:1000 core/models.py:1000
msgid "Document favorites"
msgstr "Document favorieten"
#: build/lib/core/models.py:1004 core/models.py:1004
#: build/lib/core/models.py:1006 core/models.py:1006
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:1026 core/models.py:1026
#: build/lib/core/models.py:1028 core/models.py:1028
msgid "Document/user relation"
msgstr "Document/gebruiker relatie"
#: build/lib/core/models.py:1027 core/models.py:1027
#: build/lib/core/models.py:1029 core/models.py:1029
msgid "Document/user relations"
msgstr "Document/gebruiker relaties"
#: build/lib/core/models.py:1033 core/models.py:1033
#: build/lib/core/models.py:1035 core/models.py:1035
msgid "This user is already in this document."
msgstr "De gebruiker bestaat al in dit document."
#: build/lib/core/models.py:1039 core/models.py:1039
#: build/lib/core/models.py:1041 core/models.py:1041
msgid "This team is already in this document."
msgstr "Dit team bestaat al in dit document."
#: build/lib/core/models.py:1045 build/lib/core/models.py:1362
#: core/models.py:1045 core/models.py:1362
#: build/lib/core/models.py:1047 build/lib/core/models.py:1516
#: core/models.py:1047 core/models.py:1516
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:1191 core/models.py:1191
#: build/lib/core/models.py:1198 core/models.py:1198
msgid "Document ask for access"
msgstr "Document verzoekt om toegang"
#: build/lib/core/models.py:1192 core/models.py:1192
#: build/lib/core/models.py:1199 core/models.py:1199
msgid "Document ask for accesses"
msgstr "Document verzoekt om toegangen"
#: build/lib/core/models.py:1198 core/models.py:1198
#: build/lib/core/models.py:1205 core/models.py:1205
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:1255 core/models.py:1255
#: build/lib/core/models.py:1262 core/models.py:1262
#, python-brace-format
msgid "{name} would like access to a document!"
msgstr "{name} verzoekt toegang tot een document!"
#: build/lib/core/models.py:1259 core/models.py:1259
#: build/lib/core/models.py:1266 core/models.py:1266
#, 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:1265 core/models.py:1265
#: build/lib/core/models.py:1272 core/models.py:1272
#, 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:1277 core/models.py:1277
#: build/lib/core/models.py:1314 core/models.py:1314
msgid "Thread"
msgstr "Kanaal"
#: build/lib/core/models.py:1315 core/models.py:1315
msgid "Threads"
msgstr "Kanalen"
#: build/lib/core/models.py:1318 build/lib/core/models.py:1370
#: core/models.py:1318 core/models.py:1370
msgid "Anonymous"
msgstr "Anoniem"
#: build/lib/core/models.py:1365 core/models.py:1365
msgid "Comment"
msgstr "Reactie"
#: build/lib/core/models.py:1366 core/models.py:1366
msgid "Comments"
msgstr "Reacties"
#: build/lib/core/models.py:1415 core/models.py:1415
msgid "This emoji has already been reacted to this comment."
msgstr "Deze emoji is al op deze opmerking gereageerd."
#: build/lib/core/models.py:1419 core/models.py:1419
msgid "Reaction"
msgstr "Reactie"
#: build/lib/core/models.py:1420 core/models.py:1420
msgid "Reactions"
msgstr "Reacties"
#: build/lib/core/models.py:1431 core/models.py:1431
msgid "description"
msgstr "omschrijving"
#: build/lib/core/models.py:1278 core/models.py:1278
#: build/lib/core/models.py:1432 core/models.py:1432
msgid "code"
msgstr "code"
#: build/lib/core/models.py:1279 core/models.py:1279
#: build/lib/core/models.py:1433 core/models.py:1433
msgid "css"
msgstr "css"
#: build/lib/core/models.py:1281 core/models.py:1281
#: build/lib/core/models.py:1435 core/models.py:1435
msgid "public"
msgstr "publiek"
#: build/lib/core/models.py:1283 core/models.py:1283
#: build/lib/core/models.py:1437 core/models.py:1437
msgid "Whether this template is public for anyone to use."
msgstr "Of dit sjabloon door iedereen publiekelijk te gebruiken is."
#: build/lib/core/models.py:1289 core/models.py:1289
#: build/lib/core/models.py:1443 core/models.py:1443
msgid "Template"
msgstr "Sjabloon"
#: build/lib/core/models.py:1290 core/models.py:1290
#: build/lib/core/models.py:1444 core/models.py:1444
msgid "Templates"
msgstr "Sjabloon"
#: build/lib/core/models.py:1343 core/models.py:1343
#: build/lib/core/models.py:1497 core/models.py:1497
msgid "Template/user relation"
msgstr "Sjabloon/gebruiker relatie"
#: build/lib/core/models.py:1344 core/models.py:1344
#: build/lib/core/models.py:1498 core/models.py:1498
msgid "Template/user relations"
msgstr "Sjabloon/gebruiker relaties"
#: build/lib/core/models.py:1350 core/models.py:1350
#: build/lib/core/models.py:1504 core/models.py:1504
msgid "This user is already in this template."
msgstr "De gebruiker bestaat al in dit sjabloon."
#: build/lib/core/models.py:1356 core/models.py:1356
#: build/lib/core/models.py:1510 core/models.py:1510
msgid "This team is already in this template."
msgstr "Het team bestaat al in dit sjabloon."
#: build/lib/core/models.py:1433 core/models.py:1433
#: build/lib/core/models.py:1587 core/models.py:1587
msgid "email address"
msgstr "e-mailadres"
#: build/lib/core/models.py:1452 core/models.py:1452
#: build/lib/core/models.py:1606 core/models.py:1606
msgid "Document invitation"
msgstr "Document uitnodiging"
#: build/lib/core/models.py:1453 core/models.py:1453
#: build/lib/core/models.py:1607 core/models.py:1607
msgid "Document invitations"
msgstr "Document uitnodigingen"
#: build/lib/core/models.py:1473 core/models.py:1473
#: build/lib/core/models.py:1627 core/models.py:1627
msgid "This email is already associated to a registered user."
msgstr "Deze email is al geassocieerd met een geregistreerde gebruiker."

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lasuite-docs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-17 08:04+0000\n"
"PO-Revision-Date: 2025-11-19 10:13\n"
"POT-Creation-Date: 2025-11-20 14:08+0000\n"
"PO-Revision-Date: 2025-11-26 13:33\n"
"Last-Translator: \n"
"Language-Team: Portuguese\n"
"Language: pt_PT\n"
@@ -50,67 +50,72 @@ msgstr ""
msgid "Favorite"
msgstr "Favorito"
#: build/lib/core/api/serializers.py:496 core/api/serializers.py:496
#: build/lib/core/api/serializers.py:497 core/api/serializers.py:497
msgid "A new document was created on your behalf!"
msgstr "Um novo documento foi criado em seu nome!"
#: build/lib/core/api/serializers.py:500 core/api/serializers.py:500
#: build/lib/core/api/serializers.py:501 core/api/serializers.py:501
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:536 core/api/serializers.py:536
#: build/lib/core/api/serializers.py:537 core/api/serializers.py:537
msgid "This field is required."
msgstr ""
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
#, python-format
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
msgstr ""
#: build/lib/core/api/serializers.py:693 core/api/serializers.py:693
#: build/lib/core/api/serializers.py:694 core/api/serializers.py:694
msgid "Body"
msgstr "Corpo"
#: build/lib/core/api/serializers.py:696 core/api/serializers.py:696
#: build/lib/core/api/serializers.py:697 core/api/serializers.py:697
msgid "Body type"
msgstr "Tipo de corpo"
#: build/lib/core/api/serializers.py:702 core/api/serializers.py:702
#: build/lib/core/api/serializers.py:703 core/api/serializers.py:703
msgid "Format"
msgstr "Formato"
#: build/lib/core/api/viewsets.py:1003 core/api/viewsets.py:1003
#: build/lib/core/api/viewsets.py:1004 core/api/viewsets.py:1004
#, python-brace-format
msgid "copy of {title}"
msgstr "cópia de {title}"
#: build/lib/core/choices.py:35 build/lib/core/choices.py:42 core/choices.py:35
#: core/choices.py:42
#: build/lib/core/choices.py:35 build/lib/core/choices.py:43 core/choices.py:35
#: core/choices.py:43
msgid "Reader"
msgstr "Leitor"
#: build/lib/core/choices.py:36 build/lib/core/choices.py:43 core/choices.py:36
#: core/choices.py:43
#: 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 "Editor"
#: build/lib/core/choices.py:44 core/choices.py:44
#: build/lib/core/choices.py:46 core/choices.py:46
msgid "Administrator"
msgstr "Administrador"
#: build/lib/core/choices.py:45 core/choices.py:45
#: build/lib/core/choices.py:47 core/choices.py:47
msgid "Owner"
msgstr "Dono"
#: build/lib/core/choices.py:56 core/choices.py:56
#: build/lib/core/choices.py:58 core/choices.py:58
msgid "Restricted"
msgstr "Restrito"
#: build/lib/core/choices.py:60 core/choices.py:60
#: build/lib/core/choices.py:62 core/choices.py:62
msgid "Authenticated"
msgstr "Autenticado"
#: build/lib/core/choices.py:62 core/choices.py:62
#: build/lib/core/choices.py:64 core/choices.py:64
msgid "Public"
msgstr "Público"
@@ -234,8 +239,8 @@ msgstr ""
msgid "users"
msgstr ""
#: build/lib/core/models.py:361 build/lib/core/models.py:1276
#: core/models.py:361 core/models.py:1276
#: build/lib/core/models.py:361 build/lib/core/models.py:1430
#: core/models.py:361 core/models.py:1430
msgid "title"
msgstr ""
@@ -251,155 +256,188 @@ msgstr ""
msgid "Documents"
msgstr ""
#: build/lib/core/models.py:424 build/lib/core/models.py:822 core/models.py:424
#: core/models.py:822
#: build/lib/core/models.py:424 build/lib/core/models.py:824 core/models.py:424
#: core/models.py:824
msgid "Untitled Document"
msgstr ""
#: build/lib/core/models.py:857 core/models.py:857
#: build/lib/core/models.py:859 core/models.py:859
#, python-brace-format
msgid "{name} shared a document with you!"
msgstr ""
#: build/lib/core/models.py:861 core/models.py:861
#: build/lib/core/models.py:863 core/models.py:863
#, python-brace-format
msgid "{name} invited you with the role \"{role}\" on the following document:"
msgstr ""
#: build/lib/core/models.py:867 core/models.py:867
#: build/lib/core/models.py:869 core/models.py:869
#, python-brace-format
msgid "{name} shared a document with you: {title}"
msgstr ""
#: build/lib/core/models.py:967 core/models.py:967
#: build/lib/core/models.py:969 core/models.py:969
msgid "Document/user link trace"
msgstr ""
#: build/lib/core/models.py:968 core/models.py:968
#: build/lib/core/models.py:970 core/models.py:970
msgid "Document/user link traces"
msgstr ""
#: build/lib/core/models.py:974 core/models.py:974
#: build/lib/core/models.py:976 core/models.py:976
msgid "A link trace already exists for this document/user."
msgstr ""
#: build/lib/core/models.py:997 core/models.py:997
#: build/lib/core/models.py:999 core/models.py:999
msgid "Document favorite"
msgstr ""
#: build/lib/core/models.py:998 core/models.py:998
#: build/lib/core/models.py:1000 core/models.py:1000
msgid "Document favorites"
msgstr ""
#: build/lib/core/models.py:1004 core/models.py:1004
#: build/lib/core/models.py:1006 core/models.py:1006
msgid "This document is already targeted by a favorite relation instance for the same user."
msgstr ""
#: build/lib/core/models.py:1026 core/models.py:1026
#: build/lib/core/models.py:1028 core/models.py:1028
msgid "Document/user relation"
msgstr ""
#: build/lib/core/models.py:1027 core/models.py:1027
#: build/lib/core/models.py:1029 core/models.py:1029
msgid "Document/user relations"
msgstr ""
#: build/lib/core/models.py:1033 core/models.py:1033
#: build/lib/core/models.py:1035 core/models.py:1035
msgid "This user is already in this document."
msgstr ""
#: build/lib/core/models.py:1039 core/models.py:1039
#: build/lib/core/models.py:1041 core/models.py:1041
msgid "This team is already in this document."
msgstr ""
#: build/lib/core/models.py:1045 build/lib/core/models.py:1362
#: core/models.py:1045 core/models.py:1362
#: build/lib/core/models.py:1047 build/lib/core/models.py:1516
#: core/models.py:1047 core/models.py:1516
msgid "Either user or team must be set, not both."
msgstr ""
#: build/lib/core/models.py:1191 core/models.py:1191
#: build/lib/core/models.py:1198 core/models.py:1198
msgid "Document ask for access"
msgstr ""
#: build/lib/core/models.py:1192 core/models.py:1192
#: build/lib/core/models.py:1199 core/models.py:1199
msgid "Document ask for accesses"
msgstr ""
#: build/lib/core/models.py:1198 core/models.py:1198
#: build/lib/core/models.py:1205 core/models.py:1205
msgid "This user has already asked for access to this document."
msgstr ""
#: build/lib/core/models.py:1255 core/models.py:1255
#: build/lib/core/models.py:1262 core/models.py:1262
#, python-brace-format
msgid "{name} would like access to a document!"
msgstr ""
#: build/lib/core/models.py:1259 core/models.py:1259
#: build/lib/core/models.py:1266 core/models.py:1266
#, python-brace-format
msgid "{name} would like access to the following document:"
msgstr ""
#: build/lib/core/models.py:1265 core/models.py:1265
#: build/lib/core/models.py:1272 core/models.py:1272
#, python-brace-format
msgid "{name} is asking for access to the document: {title}"
msgstr ""
#: build/lib/core/models.py:1277 core/models.py:1277
#: build/lib/core/models.py:1314 core/models.py:1314
msgid "Thread"
msgstr ""
#: build/lib/core/models.py:1315 core/models.py:1315
msgid "Threads"
msgstr ""
#: build/lib/core/models.py:1318 build/lib/core/models.py:1370
#: core/models.py:1318 core/models.py:1370
msgid "Anonymous"
msgstr ""
#: build/lib/core/models.py:1365 core/models.py:1365
msgid "Comment"
msgstr ""
#: build/lib/core/models.py:1366 core/models.py:1366
msgid "Comments"
msgstr ""
#: build/lib/core/models.py:1415 core/models.py:1415
msgid "This emoji has already been reacted to this comment."
msgstr ""
#: build/lib/core/models.py:1419 core/models.py:1419
msgid "Reaction"
msgstr ""
#: build/lib/core/models.py:1420 core/models.py:1420
msgid "Reactions"
msgstr ""
#: build/lib/core/models.py:1431 core/models.py:1431
msgid "description"
msgstr ""
#: build/lib/core/models.py:1278 core/models.py:1278
#: build/lib/core/models.py:1432 core/models.py:1432
msgid "code"
msgstr ""
#: build/lib/core/models.py:1279 core/models.py:1279
#: build/lib/core/models.py:1433 core/models.py:1433
msgid "css"
msgstr ""
#: build/lib/core/models.py:1281 core/models.py:1281
#: build/lib/core/models.py:1435 core/models.py:1435
msgid "public"
msgstr ""
#: build/lib/core/models.py:1283 core/models.py:1283
#: build/lib/core/models.py:1437 core/models.py:1437
msgid "Whether this template is public for anyone to use."
msgstr ""
#: build/lib/core/models.py:1289 core/models.py:1289
#: build/lib/core/models.py:1443 core/models.py:1443
msgid "Template"
msgstr ""
#: build/lib/core/models.py:1290 core/models.py:1290
#: build/lib/core/models.py:1444 core/models.py:1444
msgid "Templates"
msgstr ""
#: build/lib/core/models.py:1343 core/models.py:1343
#: build/lib/core/models.py:1497 core/models.py:1497
msgid "Template/user relation"
msgstr ""
#: build/lib/core/models.py:1344 core/models.py:1344
#: build/lib/core/models.py:1498 core/models.py:1498
msgid "Template/user relations"
msgstr ""
#: build/lib/core/models.py:1350 core/models.py:1350
#: build/lib/core/models.py:1504 core/models.py:1504
msgid "This user is already in this template."
msgstr ""
#: build/lib/core/models.py:1356 core/models.py:1356
#: build/lib/core/models.py:1510 core/models.py:1510
msgid "This team is already in this template."
msgstr ""
#: build/lib/core/models.py:1433 core/models.py:1433
#: build/lib/core/models.py:1587 core/models.py:1587
msgid "email address"
msgstr ""
#: build/lib/core/models.py:1452 core/models.py:1452
#: build/lib/core/models.py:1606 core/models.py:1606
msgid "Document invitation"
msgstr ""
#: build/lib/core/models.py:1453 core/models.py:1453
#: build/lib/core/models.py:1607 core/models.py:1607
msgid "Document invitations"
msgstr ""
#: build/lib/core/models.py:1473 core/models.py:1473
#: build/lib/core/models.py:1627 core/models.py:1627
msgid "This email is already associated to a registered user."
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lasuite-docs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-17 08:04+0000\n"
"PO-Revision-Date: 2025-11-19 10:13\n"
"POT-Creation-Date: 2025-11-20 14:08+0000\n"
"PO-Revision-Date: 2025-11-26 13:33\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@@ -50,67 +50,72 @@ msgstr "Скрытый"
msgid "Favorite"
msgstr "Избранное"
#: build/lib/core/api/serializers.py:496 core/api/serializers.py:496
#: build/lib/core/api/serializers.py:497 core/api/serializers.py:497
msgid "A new document was created on your behalf!"
msgstr "Новый документ был создан от вашего имени!"
#: build/lib/core/api/serializers.py:500 core/api/serializers.py:500
#: build/lib/core/api/serializers.py:501 core/api/serializers.py:501
msgid "You have been granted ownership of a new document:"
msgstr "Вы назначены владельцем для нового документа:"
#: build/lib/core/api/serializers.py:536 core/api/serializers.py:536
#: build/lib/core/api/serializers.py:537 core/api/serializers.py:537
msgid "This field is required."
msgstr "Это поле обязательное."
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
#, python-format
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
msgstr "Доступ по ссылке '%(link_reach)s' запрещён в соответствии с настройками родительского документа."
#: build/lib/core/api/serializers.py:693 core/api/serializers.py:693
#: build/lib/core/api/serializers.py:694 core/api/serializers.py:694
msgid "Body"
msgstr "Текст сообщения"
#: build/lib/core/api/serializers.py:696 core/api/serializers.py:696
#: build/lib/core/api/serializers.py:697 core/api/serializers.py:697
msgid "Body type"
msgstr "Тип сообщения"
#: build/lib/core/api/serializers.py:702 core/api/serializers.py:702
#: build/lib/core/api/serializers.py:703 core/api/serializers.py:703
msgid "Format"
msgstr "Формат"
#: build/lib/core/api/viewsets.py:1003 core/api/viewsets.py:1003
#: build/lib/core/api/viewsets.py:1004 core/api/viewsets.py:1004
#, python-brace-format
msgid "copy of {title}"
msgstr "копия {title}"
#: build/lib/core/choices.py:35 build/lib/core/choices.py:42 core/choices.py:35
#: core/choices.py:42
#: 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:43 core/choices.py:36
#: core/choices.py:43
#: 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:44 core/choices.py:44
#: build/lib/core/choices.py:46 core/choices.py:46
msgid "Administrator"
msgstr "Администратор"
#: build/lib/core/choices.py:45 core/choices.py:45
#: build/lib/core/choices.py:47 core/choices.py:47
msgid "Owner"
msgstr "Владелец"
#: build/lib/core/choices.py:56 core/choices.py:56
#: build/lib/core/choices.py:58 core/choices.py:58
msgid "Restricted"
msgstr "Доступ ограничен"
#: build/lib/core/choices.py:60 core/choices.py:60
#: build/lib/core/choices.py:62 core/choices.py:62
msgid "Authenticated"
msgstr "Аутентификация выполнена"
#: build/lib/core/choices.py:62 core/choices.py:62
#: build/lib/core/choices.py:64 core/choices.py:64
msgid "Public"
msgstr "Доступно всем"
@@ -234,8 +239,8 @@ msgstr "пользователь"
msgid "users"
msgstr "пользователи"
#: build/lib/core/models.py:361 build/lib/core/models.py:1276
#: core/models.py:361 core/models.py:1276
#: build/lib/core/models.py:361 build/lib/core/models.py:1430
#: core/models.py:361 core/models.py:1430
msgid "title"
msgstr "заголовок"
@@ -251,155 +256,188 @@ msgstr "Документ"
msgid "Documents"
msgstr "Документы"
#: build/lib/core/models.py:424 build/lib/core/models.py:822 core/models.py:424
#: core/models.py:822
#: build/lib/core/models.py:424 build/lib/core/models.py:824 core/models.py:424
#: core/models.py:824
msgid "Untitled Document"
msgstr "Безымянный документ"
#: build/lib/core/models.py:857 core/models.py:857
#: build/lib/core/models.py:859 core/models.py:859
#, python-brace-format
msgid "{name} shared a document with you!"
msgstr "{name} делится с вами документом!"
#: build/lib/core/models.py:861 core/models.py:861
#: build/lib/core/models.py:863 core/models.py:863
#, python-brace-format
msgid "{name} invited you with the role \"{role}\" on the following document:"
msgstr "{name} приглашает вас присоединиться к следующему документу с ролью \"{role}\":"
#: build/lib/core/models.py:867 core/models.py:867
#: build/lib/core/models.py:869 core/models.py:869
#, python-brace-format
msgid "{name} shared a document with you: {title}"
msgstr "{name} делится с вами документом: {title}"
#: build/lib/core/models.py:967 core/models.py:967
#: build/lib/core/models.py:969 core/models.py:969
msgid "Document/user link trace"
msgstr "Трассировка связи документ/пользователь"
#: build/lib/core/models.py:968 core/models.py:968
#: build/lib/core/models.py:970 core/models.py:970
msgid "Document/user link traces"
msgstr "Трассировка связей документ/пользователь"
#: build/lib/core/models.py:974 core/models.py:974
#: build/lib/core/models.py:976 core/models.py:976
msgid "A link trace already exists for this document/user."
msgstr "Для этого документа/пользователя уже существует трассировка ссылки."
#: build/lib/core/models.py:997 core/models.py:997
#: build/lib/core/models.py:999 core/models.py:999
msgid "Document favorite"
msgstr "Избранный документ"
#: build/lib/core/models.py:998 core/models.py:998
#: build/lib/core/models.py:1000 core/models.py:1000
msgid "Document favorites"
msgstr "Избранные документы"
#: build/lib/core/models.py:1004 core/models.py:1004
#: build/lib/core/models.py:1006 core/models.py:1006
msgid "This document is already targeted by a favorite relation instance for the same user."
msgstr "Этот документ уже помечен как избранный для этого пользователя."
#: build/lib/core/models.py:1026 core/models.py:1026
#: build/lib/core/models.py:1028 core/models.py:1028
msgid "Document/user relation"
msgstr "Отношение документ/пользователь"
#: build/lib/core/models.py:1027 core/models.py:1027
#: build/lib/core/models.py:1029 core/models.py:1029
msgid "Document/user relations"
msgstr "Отношения документ/пользователь"
#: build/lib/core/models.py:1033 core/models.py:1033
#: build/lib/core/models.py:1035 core/models.py:1035
msgid "This user is already in this document."
msgstr "Этот пользователь уже имеет доступ к этому документу."
#: build/lib/core/models.py:1039 core/models.py:1039
#: build/lib/core/models.py:1041 core/models.py:1041
msgid "This team is already in this document."
msgstr "Эта команда уже имеет доступ к этому документу."
#: build/lib/core/models.py:1045 build/lib/core/models.py:1362
#: core/models.py:1045 core/models.py:1362
#: build/lib/core/models.py:1047 build/lib/core/models.py:1516
#: core/models.py:1047 core/models.py:1516
msgid "Either user or team must be set, not both."
msgstr "Может быть выбран либо пользователь, либо команда, но не оба варианта сразу."
#: build/lib/core/models.py:1191 core/models.py:1191
#: build/lib/core/models.py:1198 core/models.py:1198
msgid "Document ask for access"
msgstr "Документ запрашивает доступ"
#: build/lib/core/models.py:1192 core/models.py:1192
#: build/lib/core/models.py:1199 core/models.py:1199
msgid "Document ask for accesses"
msgstr "Документ запрашивает доступы"
#: build/lib/core/models.py:1198 core/models.py:1198
#: build/lib/core/models.py:1205 core/models.py:1205
msgid "This user has already asked for access to this document."
msgstr "Этот пользователь уже запросил доступ к этому документу."
#: build/lib/core/models.py:1255 core/models.py:1255
#: build/lib/core/models.py:1262 core/models.py:1262
#, python-brace-format
msgid "{name} would like access to a document!"
msgstr "{name} хочет получить доступ к документу!"
#: build/lib/core/models.py:1259 core/models.py:1259
#: build/lib/core/models.py:1266 core/models.py:1266
#, python-brace-format
msgid "{name} would like access to the following document:"
msgstr "{name} хочет получить доступ к следующему документу:"
#: build/lib/core/models.py:1265 core/models.py:1265
#: build/lib/core/models.py:1272 core/models.py:1272
#, python-brace-format
msgid "{name} is asking for access to the document: {title}"
msgstr "{name} запрашивает доступ к документу: {title}"
#: build/lib/core/models.py:1277 core/models.py:1277
#: build/lib/core/models.py:1314 core/models.py:1314
msgid "Thread"
msgstr "Обсуждение"
#: build/lib/core/models.py:1315 core/models.py:1315
msgid "Threads"
msgstr "Обсуждения"
#: build/lib/core/models.py:1318 build/lib/core/models.py:1370
#: core/models.py:1318 core/models.py:1370
msgid "Anonymous"
msgstr "Аноним"
#: build/lib/core/models.py:1365 core/models.py:1365
msgid "Comment"
msgstr "Комментарий"
#: build/lib/core/models.py:1366 core/models.py:1366
msgid "Comments"
msgstr "Комментарии"
#: build/lib/core/models.py:1415 core/models.py:1415
msgid "This emoji has already been reacted to this comment."
msgstr "Этот эмодзи уже использован в этом комментарии."
#: build/lib/core/models.py:1419 core/models.py:1419
msgid "Reaction"
msgstr "Реакция"
#: build/lib/core/models.py:1420 core/models.py:1420
msgid "Reactions"
msgstr "Реакции"
#: build/lib/core/models.py:1431 core/models.py:1431
msgid "description"
msgstr "описание"
#: build/lib/core/models.py:1278 core/models.py:1278
#: build/lib/core/models.py:1432 core/models.py:1432
msgid "code"
msgstr "код"
#: build/lib/core/models.py:1279 core/models.py:1279
#: build/lib/core/models.py:1433 core/models.py:1433
msgid "css"
msgstr "css"
#: build/lib/core/models.py:1281 core/models.py:1281
#: build/lib/core/models.py:1435 core/models.py:1435
msgid "public"
msgstr "доступно всем"
#: build/lib/core/models.py:1283 core/models.py:1283
#: build/lib/core/models.py:1437 core/models.py:1437
msgid "Whether this template is public for anyone to use."
msgstr "Этот шаблон доступен всем пользователям."
#: build/lib/core/models.py:1289 core/models.py:1289
#: build/lib/core/models.py:1443 core/models.py:1443
msgid "Template"
msgstr "Шаблон"
#: build/lib/core/models.py:1290 core/models.py:1290
#: build/lib/core/models.py:1444 core/models.py:1444
msgid "Templates"
msgstr "Шаблоны"
#: build/lib/core/models.py:1343 core/models.py:1343
#: build/lib/core/models.py:1497 core/models.py:1497
msgid "Template/user relation"
msgstr "Отношение шаблон/пользователь"
#: build/lib/core/models.py:1344 core/models.py:1344
#: build/lib/core/models.py:1498 core/models.py:1498
msgid "Template/user relations"
msgstr "Отношения шаблон/пользователь"
#: build/lib/core/models.py:1350 core/models.py:1350
#: build/lib/core/models.py:1504 core/models.py:1504
msgid "This user is already in this template."
msgstr "Этот пользователь уже указан в этом шаблоне."
#: build/lib/core/models.py:1356 core/models.py:1356
#: build/lib/core/models.py:1510 core/models.py:1510
msgid "This team is already in this template."
msgstr "Эта команда уже указана в этом шаблоне."
#: build/lib/core/models.py:1433 core/models.py:1433
#: build/lib/core/models.py:1587 core/models.py:1587
msgid "email address"
msgstr "адрес электронной почты"
#: build/lib/core/models.py:1452 core/models.py:1452
#: build/lib/core/models.py:1606 core/models.py:1606
msgid "Document invitation"
msgstr "Приглашение для документа"
#: build/lib/core/models.py:1453 core/models.py:1453
#: build/lib/core/models.py:1607 core/models.py:1607
msgid "Document invitations"
msgstr "Приглашения для документов"
#: build/lib/core/models.py:1473 core/models.py:1473
#: build/lib/core/models.py:1627 core/models.py:1627
msgid "This email is already associated to a registered user."
msgstr "Этот адрес уже связан с зарегистрированным пользователем."

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lasuite-docs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-17 08:04+0000\n"
"PO-Revision-Date: 2025-11-19 10:13\n"
"POT-Creation-Date: 2025-11-20 14:08+0000\n"
"PO-Revision-Date: 2025-11-26 13:33\n"
"Last-Translator: \n"
"Language-Team: Slovenian\n"
"Language: sl_SI\n"
@@ -50,67 +50,72 @@ msgstr ""
msgid "Favorite"
msgstr "Priljubljena"
#: build/lib/core/api/serializers.py:496 core/api/serializers.py:496
#: build/lib/core/api/serializers.py:497 core/api/serializers.py:497
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:500 core/api/serializers.py:500
#: build/lib/core/api/serializers.py:501 core/api/serializers.py:501
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:536 core/api/serializers.py:536
#: build/lib/core/api/serializers.py:537 core/api/serializers.py:537
msgid "This field is required."
msgstr ""
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
#, python-format
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
msgstr ""
#: build/lib/core/api/serializers.py:693 core/api/serializers.py:693
#: build/lib/core/api/serializers.py:694 core/api/serializers.py:694
msgid "Body"
msgstr "Telo"
#: build/lib/core/api/serializers.py:696 core/api/serializers.py:696
#: build/lib/core/api/serializers.py:697 core/api/serializers.py:697
msgid "Body type"
msgstr "Vrsta telesa"
#: build/lib/core/api/serializers.py:702 core/api/serializers.py:702
#: build/lib/core/api/serializers.py:703 core/api/serializers.py:703
msgid "Format"
msgstr "Oblika"
#: build/lib/core/api/viewsets.py:1003 core/api/viewsets.py:1003
#: build/lib/core/api/viewsets.py:1004 core/api/viewsets.py:1004
#, python-brace-format
msgid "copy of {title}"
msgstr ""
#: build/lib/core/choices.py:35 build/lib/core/choices.py:42 core/choices.py:35
#: core/choices.py:42
#: build/lib/core/choices.py:35 build/lib/core/choices.py:43 core/choices.py:35
#: core/choices.py:43
msgid "Reader"
msgstr "Bralec"
#: build/lib/core/choices.py:36 build/lib/core/choices.py:43 core/choices.py:36
#: core/choices.py:43
#: 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 "Urednik"
#: build/lib/core/choices.py:44 core/choices.py:44
#: build/lib/core/choices.py:46 core/choices.py:46
msgid "Administrator"
msgstr "Skrbnik"
#: build/lib/core/choices.py:45 core/choices.py:45
#: build/lib/core/choices.py:47 core/choices.py:47
msgid "Owner"
msgstr "Lastnik"
#: build/lib/core/choices.py:56 core/choices.py:56
#: build/lib/core/choices.py:58 core/choices.py:58
msgid "Restricted"
msgstr "Omejeno"
#: build/lib/core/choices.py:60 core/choices.py:60
#: build/lib/core/choices.py:62 core/choices.py:62
msgid "Authenticated"
msgstr "Preverjeno"
#: build/lib/core/choices.py:62 core/choices.py:62
#: build/lib/core/choices.py:64 core/choices.py:64
msgid "Public"
msgstr "Javno"
@@ -234,8 +239,8 @@ msgstr "uporabnik"
msgid "users"
msgstr "uporabniki"
#: build/lib/core/models.py:361 build/lib/core/models.py:1276
#: core/models.py:361 core/models.py:1276
#: build/lib/core/models.py:361 build/lib/core/models.py:1430
#: core/models.py:361 core/models.py:1430
msgid "title"
msgstr "naslov"
@@ -251,155 +256,188 @@ msgstr "Dokument"
msgid "Documents"
msgstr "Dokumenti"
#: build/lib/core/models.py:424 build/lib/core/models.py:822 core/models.py:424
#: core/models.py:822
#: build/lib/core/models.py:424 build/lib/core/models.py:824 core/models.py:424
#: core/models.py:824
msgid "Untitled Document"
msgstr "Dokument brez naslova"
#: build/lib/core/models.py:857 core/models.py:857
#: build/lib/core/models.py:859 core/models.py:859
#, python-brace-format
msgid "{name} shared a document with you!"
msgstr "{name} je delil dokument z vami!"
#: build/lib/core/models.py:861 core/models.py:861
#: build/lib/core/models.py:863 core/models.py:863
#, 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:867 core/models.py:867
#: build/lib/core/models.py:869 core/models.py:869
#, python-brace-format
msgid "{name} shared a document with you: {title}"
msgstr "{name} je delil dokument z vami: {title}"
#: build/lib/core/models.py:967 core/models.py:967
#: build/lib/core/models.py:969 core/models.py:969
msgid "Document/user link trace"
msgstr "Dokument/sled povezave uporabnika"
#: build/lib/core/models.py:968 core/models.py:968
#: build/lib/core/models.py:970 core/models.py:970
msgid "Document/user link traces"
msgstr "Sledi povezav dokumenta/uporabnika"
#: build/lib/core/models.py:974 core/models.py:974
#: build/lib/core/models.py:976 core/models.py:976
msgid "A link trace already exists for this document/user."
msgstr "Za ta dokument/uporabnika že obstaja sled povezave."
#: build/lib/core/models.py:997 core/models.py:997
#: build/lib/core/models.py:999 core/models.py:999
msgid "Document favorite"
msgstr "Priljubljeni dokument"
#: build/lib/core/models.py:998 core/models.py:998
#: build/lib/core/models.py:1000 core/models.py:1000
msgid "Document favorites"
msgstr "Priljubljeni dokumenti"
#: build/lib/core/models.py:1004 core/models.py:1004
#: build/lib/core/models.py:1006 core/models.py:1006
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:1026 core/models.py:1026
#: build/lib/core/models.py:1028 core/models.py:1028
msgid "Document/user relation"
msgstr "Odnos dokument/uporabnik"
#: build/lib/core/models.py:1027 core/models.py:1027
#: build/lib/core/models.py:1029 core/models.py:1029
msgid "Document/user relations"
msgstr "Odnosi dokument/uporabnik"
#: build/lib/core/models.py:1033 core/models.py:1033
#: build/lib/core/models.py:1035 core/models.py:1035
msgid "This user is already in this document."
msgstr "Ta uporabnik je že v tem dokumentu."
#: build/lib/core/models.py:1039 core/models.py:1039
#: build/lib/core/models.py:1041 core/models.py:1041
msgid "This team is already in this document."
msgstr "Ta ekipa je že v tem dokumentu."
#: build/lib/core/models.py:1045 build/lib/core/models.py:1362
#: core/models.py:1045 core/models.py:1362
#: build/lib/core/models.py:1047 build/lib/core/models.py:1516
#: core/models.py:1047 core/models.py:1516
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:1191 core/models.py:1191
#: build/lib/core/models.py:1198 core/models.py:1198
msgid "Document ask for access"
msgstr ""
#: build/lib/core/models.py:1192 core/models.py:1192
#: build/lib/core/models.py:1199 core/models.py:1199
msgid "Document ask for accesses"
msgstr ""
#: build/lib/core/models.py:1198 core/models.py:1198
#: build/lib/core/models.py:1205 core/models.py:1205
msgid "This user has already asked for access to this document."
msgstr ""
#: build/lib/core/models.py:1255 core/models.py:1255
#: build/lib/core/models.py:1262 core/models.py:1262
#, python-brace-format
msgid "{name} would like access to a document!"
msgstr ""
#: build/lib/core/models.py:1259 core/models.py:1259
#: build/lib/core/models.py:1266 core/models.py:1266
#, python-brace-format
msgid "{name} would like access to the following document:"
msgstr ""
#: build/lib/core/models.py:1265 core/models.py:1265
#: build/lib/core/models.py:1272 core/models.py:1272
#, python-brace-format
msgid "{name} is asking for access to the document: {title}"
msgstr ""
#: build/lib/core/models.py:1277 core/models.py:1277
#: build/lib/core/models.py:1314 core/models.py:1314
msgid "Thread"
msgstr ""
#: build/lib/core/models.py:1315 core/models.py:1315
msgid "Threads"
msgstr ""
#: build/lib/core/models.py:1318 build/lib/core/models.py:1370
#: core/models.py:1318 core/models.py:1370
msgid "Anonymous"
msgstr ""
#: build/lib/core/models.py:1365 core/models.py:1365
msgid "Comment"
msgstr ""
#: build/lib/core/models.py:1366 core/models.py:1366
msgid "Comments"
msgstr ""
#: build/lib/core/models.py:1415 core/models.py:1415
msgid "This emoji has already been reacted to this comment."
msgstr ""
#: build/lib/core/models.py:1419 core/models.py:1419
msgid "Reaction"
msgstr ""
#: build/lib/core/models.py:1420 core/models.py:1420
msgid "Reactions"
msgstr ""
#: build/lib/core/models.py:1431 core/models.py:1431
msgid "description"
msgstr "opis"
#: build/lib/core/models.py:1278 core/models.py:1278
#: build/lib/core/models.py:1432 core/models.py:1432
msgid "code"
msgstr "koda"
#: build/lib/core/models.py:1279 core/models.py:1279
#: build/lib/core/models.py:1433 core/models.py:1433
msgid "css"
msgstr "css"
#: build/lib/core/models.py:1281 core/models.py:1281
#: build/lib/core/models.py:1435 core/models.py:1435
msgid "public"
msgstr "javno"
#: build/lib/core/models.py:1283 core/models.py:1283
#: build/lib/core/models.py:1437 core/models.py:1437
msgid "Whether this template is public for anyone to use."
msgstr "Ali je ta predloga javna za uporabo."
#: build/lib/core/models.py:1289 core/models.py:1289
#: build/lib/core/models.py:1443 core/models.py:1443
msgid "Template"
msgstr "Predloga"
#: build/lib/core/models.py:1290 core/models.py:1290
#: build/lib/core/models.py:1444 core/models.py:1444
msgid "Templates"
msgstr "Predloge"
#: build/lib/core/models.py:1343 core/models.py:1343
#: build/lib/core/models.py:1497 core/models.py:1497
msgid "Template/user relation"
msgstr "Odnos predloga/uporabnik"
#: build/lib/core/models.py:1344 core/models.py:1344
#: build/lib/core/models.py:1498 core/models.py:1498
msgid "Template/user relations"
msgstr "Odnosi med predlogo in uporabnikom"
#: build/lib/core/models.py:1350 core/models.py:1350
#: build/lib/core/models.py:1504 core/models.py:1504
msgid "This user is already in this template."
msgstr "Ta uporabnik je že v tej predlogi."
#: build/lib/core/models.py:1356 core/models.py:1356
#: build/lib/core/models.py:1510 core/models.py:1510
msgid "This team is already in this template."
msgstr "Ta ekipa je že v tej predlogi."
#: build/lib/core/models.py:1433 core/models.py:1433
#: build/lib/core/models.py:1587 core/models.py:1587
msgid "email address"
msgstr "elektronski naslov"
#: build/lib/core/models.py:1452 core/models.py:1452
#: build/lib/core/models.py:1606 core/models.py:1606
msgid "Document invitation"
msgstr "Vabilo na dokument"
#: build/lib/core/models.py:1453 core/models.py:1453
#: build/lib/core/models.py:1607 core/models.py:1607
msgid "Document invitations"
msgstr "Vabila na dokument"
#: build/lib/core/models.py:1473 core/models.py:1473
#: build/lib/core/models.py:1627 core/models.py:1627
msgid "This email is already associated to a registered user."
msgstr "Ta e-poštni naslov je že povezan z registriranim uporabnikom."

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lasuite-docs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-17 08:04+0000\n"
"PO-Revision-Date: 2025-11-19 10:13\n"
"POT-Creation-Date: 2025-11-20 14:08+0000\n"
"PO-Revision-Date: 2025-11-26 13:33\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@@ -50,67 +50,72 @@ msgstr ""
msgid "Favorite"
msgstr "Favoriter"
#: build/lib/core/api/serializers.py:496 core/api/serializers.py:496
#: build/lib/core/api/serializers.py:497 core/api/serializers.py:497
msgid "A new document was created on your behalf!"
msgstr "Ett nytt dokument skapades åt dig!"
#: build/lib/core/api/serializers.py:500 core/api/serializers.py:500
#: build/lib/core/api/serializers.py:501 core/api/serializers.py:501
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:536 core/api/serializers.py:536
#: build/lib/core/api/serializers.py:537 core/api/serializers.py:537
msgid "This field is required."
msgstr ""
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
#, python-format
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
msgstr ""
#: build/lib/core/api/serializers.py:693 core/api/serializers.py:693
#: build/lib/core/api/serializers.py:694 core/api/serializers.py:694
msgid "Body"
msgstr ""
#: build/lib/core/api/serializers.py:696 core/api/serializers.py:696
#: build/lib/core/api/serializers.py:697 core/api/serializers.py:697
msgid "Body type"
msgstr ""
#: build/lib/core/api/serializers.py:702 core/api/serializers.py:702
#: build/lib/core/api/serializers.py:703 core/api/serializers.py:703
msgid "Format"
msgstr "Format"
#: build/lib/core/api/viewsets.py:1003 core/api/viewsets.py:1003
#: build/lib/core/api/viewsets.py:1004 core/api/viewsets.py:1004
#, python-brace-format
msgid "copy of {title}"
msgstr ""
#: build/lib/core/choices.py:35 build/lib/core/choices.py:42 core/choices.py:35
#: core/choices.py:42
#: 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:43 core/choices.py:36
#: core/choices.py:43
#: 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:44 core/choices.py:44
#: build/lib/core/choices.py:46 core/choices.py:46
msgid "Administrator"
msgstr "Administratör"
#: build/lib/core/choices.py:45 core/choices.py:45
#: build/lib/core/choices.py:47 core/choices.py:47
msgid "Owner"
msgstr ""
#: build/lib/core/choices.py:56 core/choices.py:56
#: build/lib/core/choices.py:58 core/choices.py:58
msgid "Restricted"
msgstr ""
#: build/lib/core/choices.py:60 core/choices.py:60
#: build/lib/core/choices.py:62 core/choices.py:62
msgid "Authenticated"
msgstr ""
#: build/lib/core/choices.py:62 core/choices.py:62
#: build/lib/core/choices.py:64 core/choices.py:64
msgid "Public"
msgstr "Publik"
@@ -234,8 +239,8 @@ msgstr ""
msgid "users"
msgstr ""
#: build/lib/core/models.py:361 build/lib/core/models.py:1276
#: core/models.py:361 core/models.py:1276
#: build/lib/core/models.py:361 build/lib/core/models.py:1430
#: core/models.py:361 core/models.py:1430
msgid "title"
msgstr ""
@@ -251,155 +256,188 @@ msgstr ""
msgid "Documents"
msgstr ""
#: build/lib/core/models.py:424 build/lib/core/models.py:822 core/models.py:424
#: core/models.py:822
#: build/lib/core/models.py:424 build/lib/core/models.py:824 core/models.py:424
#: core/models.py:824
msgid "Untitled Document"
msgstr ""
#: build/lib/core/models.py:857 core/models.py:857
#: build/lib/core/models.py:859 core/models.py:859
#, python-brace-format
msgid "{name} shared a document with you!"
msgstr ""
#: build/lib/core/models.py:861 core/models.py:861
#: build/lib/core/models.py:863 core/models.py:863
#, python-brace-format
msgid "{name} invited you with the role \"{role}\" on the following document:"
msgstr ""
#: build/lib/core/models.py:867 core/models.py:867
#: build/lib/core/models.py:869 core/models.py:869
#, python-brace-format
msgid "{name} shared a document with you: {title}"
msgstr ""
#: build/lib/core/models.py:967 core/models.py:967
#: build/lib/core/models.py:969 core/models.py:969
msgid "Document/user link trace"
msgstr ""
#: build/lib/core/models.py:968 core/models.py:968
#: build/lib/core/models.py:970 core/models.py:970
msgid "Document/user link traces"
msgstr ""
#: build/lib/core/models.py:974 core/models.py:974
#: build/lib/core/models.py:976 core/models.py:976
msgid "A link trace already exists for this document/user."
msgstr ""
#: build/lib/core/models.py:997 core/models.py:997
#: build/lib/core/models.py:999 core/models.py:999
msgid "Document favorite"
msgstr ""
#: build/lib/core/models.py:998 core/models.py:998
#: build/lib/core/models.py:1000 core/models.py:1000
msgid "Document favorites"
msgstr ""
#: build/lib/core/models.py:1004 core/models.py:1004
#: build/lib/core/models.py:1006 core/models.py:1006
msgid "This document is already targeted by a favorite relation instance for the same user."
msgstr ""
#: build/lib/core/models.py:1026 core/models.py:1026
#: build/lib/core/models.py:1028 core/models.py:1028
msgid "Document/user relation"
msgstr ""
#: build/lib/core/models.py:1027 core/models.py:1027
#: build/lib/core/models.py:1029 core/models.py:1029
msgid "Document/user relations"
msgstr ""
#: build/lib/core/models.py:1033 core/models.py:1033
#: build/lib/core/models.py:1035 core/models.py:1035
msgid "This user is already in this document."
msgstr ""
#: build/lib/core/models.py:1039 core/models.py:1039
#: build/lib/core/models.py:1041 core/models.py:1041
msgid "This team is already in this document."
msgstr ""
#: build/lib/core/models.py:1045 build/lib/core/models.py:1362
#: core/models.py:1045 core/models.py:1362
#: build/lib/core/models.py:1047 build/lib/core/models.py:1516
#: core/models.py:1047 core/models.py:1516
msgid "Either user or team must be set, not both."
msgstr ""
#: build/lib/core/models.py:1191 core/models.py:1191
#: build/lib/core/models.py:1198 core/models.py:1198
msgid "Document ask for access"
msgstr ""
#: build/lib/core/models.py:1192 core/models.py:1192
#: build/lib/core/models.py:1199 core/models.py:1199
msgid "Document ask for accesses"
msgstr ""
#: build/lib/core/models.py:1198 core/models.py:1198
#: build/lib/core/models.py:1205 core/models.py:1205
msgid "This user has already asked for access to this document."
msgstr ""
#: build/lib/core/models.py:1255 core/models.py:1255
#: build/lib/core/models.py:1262 core/models.py:1262
#, python-brace-format
msgid "{name} would like access to a document!"
msgstr ""
#: build/lib/core/models.py:1259 core/models.py:1259
#: build/lib/core/models.py:1266 core/models.py:1266
#, python-brace-format
msgid "{name} would like access to the following document:"
msgstr ""
#: build/lib/core/models.py:1265 core/models.py:1265
#: build/lib/core/models.py:1272 core/models.py:1272
#, python-brace-format
msgid "{name} is asking for access to the document: {title}"
msgstr ""
#: build/lib/core/models.py:1277 core/models.py:1277
#: build/lib/core/models.py:1314 core/models.py:1314
msgid "Thread"
msgstr ""
#: build/lib/core/models.py:1315 core/models.py:1315
msgid "Threads"
msgstr ""
#: build/lib/core/models.py:1318 build/lib/core/models.py:1370
#: core/models.py:1318 core/models.py:1370
msgid "Anonymous"
msgstr ""
#: build/lib/core/models.py:1365 core/models.py:1365
msgid "Comment"
msgstr ""
#: build/lib/core/models.py:1366 core/models.py:1366
msgid "Comments"
msgstr ""
#: build/lib/core/models.py:1415 core/models.py:1415
msgid "This emoji has already been reacted to this comment."
msgstr ""
#: build/lib/core/models.py:1419 core/models.py:1419
msgid "Reaction"
msgstr ""
#: build/lib/core/models.py:1420 core/models.py:1420
msgid "Reactions"
msgstr ""
#: build/lib/core/models.py:1431 core/models.py:1431
msgid "description"
msgstr ""
#: build/lib/core/models.py:1278 core/models.py:1278
#: build/lib/core/models.py:1432 core/models.py:1432
msgid "code"
msgstr ""
#: build/lib/core/models.py:1279 core/models.py:1279
#: build/lib/core/models.py:1433 core/models.py:1433
msgid "css"
msgstr ""
#: build/lib/core/models.py:1281 core/models.py:1281
#: build/lib/core/models.py:1435 core/models.py:1435
msgid "public"
msgstr ""
#: build/lib/core/models.py:1283 core/models.py:1283
#: build/lib/core/models.py:1437 core/models.py:1437
msgid "Whether this template is public for anyone to use."
msgstr ""
#: build/lib/core/models.py:1289 core/models.py:1289
#: build/lib/core/models.py:1443 core/models.py:1443
msgid "Template"
msgstr ""
#: build/lib/core/models.py:1290 core/models.py:1290
#: build/lib/core/models.py:1444 core/models.py:1444
msgid "Templates"
msgstr ""
#: build/lib/core/models.py:1343 core/models.py:1343
#: build/lib/core/models.py:1497 core/models.py:1497
msgid "Template/user relation"
msgstr ""
#: build/lib/core/models.py:1344 core/models.py:1344
#: build/lib/core/models.py:1498 core/models.py:1498
msgid "Template/user relations"
msgstr ""
#: build/lib/core/models.py:1350 core/models.py:1350
#: build/lib/core/models.py:1504 core/models.py:1504
msgid "This user is already in this template."
msgstr ""
#: build/lib/core/models.py:1356 core/models.py:1356
#: build/lib/core/models.py:1510 core/models.py:1510
msgid "This team is already in this template."
msgstr ""
#: build/lib/core/models.py:1433 core/models.py:1433
#: build/lib/core/models.py:1587 core/models.py:1587
msgid "email address"
msgstr "e-postadress"
#: build/lib/core/models.py:1452 core/models.py:1452
#: build/lib/core/models.py:1606 core/models.py:1606
msgid "Document invitation"
msgstr "Bjud in dokument"
#: build/lib/core/models.py:1453 core/models.py:1453
#: build/lib/core/models.py:1607 core/models.py:1607
msgid "Document invitations"
msgstr "Inbjudningar dokument"
#: build/lib/core/models.py:1473 core/models.py:1473
#: build/lib/core/models.py:1627 core/models.py:1627
msgid "This email is already associated to a registered user."
msgstr "Denna e-postadress är redan associerad med en registrerad användare."

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lasuite-docs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-17 08:04+0000\n"
"PO-Revision-Date: 2025-11-19 10:13\n"
"POT-Creation-Date: 2025-11-20 14:08+0000\n"
"PO-Revision-Date: 2025-11-26 13:33\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Language: tr_TR\n"
@@ -50,67 +50,72 @@ msgstr ""
msgid "Favorite"
msgstr ""
#: build/lib/core/api/serializers.py:496 core/api/serializers.py:496
#: build/lib/core/api/serializers.py:497 core/api/serializers.py:497
msgid "A new document was created on your behalf!"
msgstr ""
#: build/lib/core/api/serializers.py:500 core/api/serializers.py:500
#: build/lib/core/api/serializers.py:501 core/api/serializers.py:501
msgid "You have been granted ownership of a new document:"
msgstr ""
#: build/lib/core/api/serializers.py:536 core/api/serializers.py:536
#: build/lib/core/api/serializers.py:537 core/api/serializers.py:537
msgid "This field is required."
msgstr ""
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
#, python-format
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
msgstr ""
#: build/lib/core/api/serializers.py:693 core/api/serializers.py:693
#: build/lib/core/api/serializers.py:694 core/api/serializers.py:694
msgid "Body"
msgstr ""
#: build/lib/core/api/serializers.py:696 core/api/serializers.py:696
#: build/lib/core/api/serializers.py:697 core/api/serializers.py:697
msgid "Body type"
msgstr ""
#: build/lib/core/api/serializers.py:702 core/api/serializers.py:702
#: build/lib/core/api/serializers.py:703 core/api/serializers.py:703
msgid "Format"
msgstr ""
#: build/lib/core/api/viewsets.py:1003 core/api/viewsets.py:1003
#: build/lib/core/api/viewsets.py:1004 core/api/viewsets.py:1004
#, python-brace-format
msgid "copy of {title}"
msgstr ""
#: build/lib/core/choices.py:35 build/lib/core/choices.py:42 core/choices.py:35
#: core/choices.py:42
#: 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:43 core/choices.py:36
#: core/choices.py:43
#: 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:44 core/choices.py:44
#: build/lib/core/choices.py:46 core/choices.py:46
msgid "Administrator"
msgstr ""
#: build/lib/core/choices.py:45 core/choices.py:45
#: build/lib/core/choices.py:47 core/choices.py:47
msgid "Owner"
msgstr ""
#: build/lib/core/choices.py:56 core/choices.py:56
#: build/lib/core/choices.py:58 core/choices.py:58
msgid "Restricted"
msgstr ""
#: build/lib/core/choices.py:60 core/choices.py:60
#: build/lib/core/choices.py:62 core/choices.py:62
msgid "Authenticated"
msgstr ""
#: build/lib/core/choices.py:62 core/choices.py:62
#: build/lib/core/choices.py:64 core/choices.py:64
msgid "Public"
msgstr ""
@@ -234,8 +239,8 @@ msgstr ""
msgid "users"
msgstr ""
#: build/lib/core/models.py:361 build/lib/core/models.py:1276
#: core/models.py:361 core/models.py:1276
#: build/lib/core/models.py:361 build/lib/core/models.py:1430
#: core/models.py:361 core/models.py:1430
msgid "title"
msgstr ""
@@ -251,155 +256,188 @@ msgstr ""
msgid "Documents"
msgstr ""
#: build/lib/core/models.py:424 build/lib/core/models.py:822 core/models.py:424
#: core/models.py:822
#: build/lib/core/models.py:424 build/lib/core/models.py:824 core/models.py:424
#: core/models.py:824
msgid "Untitled Document"
msgstr ""
#: build/lib/core/models.py:857 core/models.py:857
#: build/lib/core/models.py:859 core/models.py:859
#, python-brace-format
msgid "{name} shared a document with you!"
msgstr ""
#: build/lib/core/models.py:861 core/models.py:861
#: build/lib/core/models.py:863 core/models.py:863
#, python-brace-format
msgid "{name} invited you with the role \"{role}\" on the following document:"
msgstr ""
#: build/lib/core/models.py:867 core/models.py:867
#: build/lib/core/models.py:869 core/models.py:869
#, python-brace-format
msgid "{name} shared a document with you: {title}"
msgstr ""
#: build/lib/core/models.py:967 core/models.py:967
#: build/lib/core/models.py:969 core/models.py:969
msgid "Document/user link trace"
msgstr ""
#: build/lib/core/models.py:968 core/models.py:968
#: build/lib/core/models.py:970 core/models.py:970
msgid "Document/user link traces"
msgstr ""
#: build/lib/core/models.py:974 core/models.py:974
#: build/lib/core/models.py:976 core/models.py:976
msgid "A link trace already exists for this document/user."
msgstr ""
#: build/lib/core/models.py:997 core/models.py:997
#: build/lib/core/models.py:999 core/models.py:999
msgid "Document favorite"
msgstr ""
#: build/lib/core/models.py:998 core/models.py:998
#: build/lib/core/models.py:1000 core/models.py:1000
msgid "Document favorites"
msgstr ""
#: build/lib/core/models.py:1004 core/models.py:1004
#: build/lib/core/models.py:1006 core/models.py:1006
msgid "This document is already targeted by a favorite relation instance for the same user."
msgstr ""
#: build/lib/core/models.py:1026 core/models.py:1026
#: build/lib/core/models.py:1028 core/models.py:1028
msgid "Document/user relation"
msgstr ""
#: build/lib/core/models.py:1027 core/models.py:1027
#: build/lib/core/models.py:1029 core/models.py:1029
msgid "Document/user relations"
msgstr ""
#: build/lib/core/models.py:1033 core/models.py:1033
#: build/lib/core/models.py:1035 core/models.py:1035
msgid "This user is already in this document."
msgstr ""
#: build/lib/core/models.py:1039 core/models.py:1039
#: build/lib/core/models.py:1041 core/models.py:1041
msgid "This team is already in this document."
msgstr ""
#: build/lib/core/models.py:1045 build/lib/core/models.py:1362
#: core/models.py:1045 core/models.py:1362
#: build/lib/core/models.py:1047 build/lib/core/models.py:1516
#: core/models.py:1047 core/models.py:1516
msgid "Either user or team must be set, not both."
msgstr ""
#: build/lib/core/models.py:1191 core/models.py:1191
#: build/lib/core/models.py:1198 core/models.py:1198
msgid "Document ask for access"
msgstr ""
#: build/lib/core/models.py:1192 core/models.py:1192
#: build/lib/core/models.py:1199 core/models.py:1199
msgid "Document ask for accesses"
msgstr ""
#: build/lib/core/models.py:1198 core/models.py:1198
#: build/lib/core/models.py:1205 core/models.py:1205
msgid "This user has already asked for access to this document."
msgstr ""
#: build/lib/core/models.py:1255 core/models.py:1255
#: build/lib/core/models.py:1262 core/models.py:1262
#, python-brace-format
msgid "{name} would like access to a document!"
msgstr ""
#: build/lib/core/models.py:1259 core/models.py:1259
#: build/lib/core/models.py:1266 core/models.py:1266
#, python-brace-format
msgid "{name} would like access to the following document:"
msgstr ""
#: build/lib/core/models.py:1265 core/models.py:1265
#: build/lib/core/models.py:1272 core/models.py:1272
#, python-brace-format
msgid "{name} is asking for access to the document: {title}"
msgstr ""
#: build/lib/core/models.py:1277 core/models.py:1277
#: build/lib/core/models.py:1314 core/models.py:1314
msgid "Thread"
msgstr ""
#: build/lib/core/models.py:1315 core/models.py:1315
msgid "Threads"
msgstr ""
#: build/lib/core/models.py:1318 build/lib/core/models.py:1370
#: core/models.py:1318 core/models.py:1370
msgid "Anonymous"
msgstr ""
#: build/lib/core/models.py:1365 core/models.py:1365
msgid "Comment"
msgstr ""
#: build/lib/core/models.py:1366 core/models.py:1366
msgid "Comments"
msgstr ""
#: build/lib/core/models.py:1415 core/models.py:1415
msgid "This emoji has already been reacted to this comment."
msgstr ""
#: build/lib/core/models.py:1419 core/models.py:1419
msgid "Reaction"
msgstr ""
#: build/lib/core/models.py:1420 core/models.py:1420
msgid "Reactions"
msgstr ""
#: build/lib/core/models.py:1431 core/models.py:1431
msgid "description"
msgstr ""
#: build/lib/core/models.py:1278 core/models.py:1278
#: build/lib/core/models.py:1432 core/models.py:1432
msgid "code"
msgstr ""
#: build/lib/core/models.py:1279 core/models.py:1279
#: build/lib/core/models.py:1433 core/models.py:1433
msgid "css"
msgstr ""
#: build/lib/core/models.py:1281 core/models.py:1281
#: build/lib/core/models.py:1435 core/models.py:1435
msgid "public"
msgstr ""
#: build/lib/core/models.py:1283 core/models.py:1283
#: build/lib/core/models.py:1437 core/models.py:1437
msgid "Whether this template is public for anyone to use."
msgstr ""
#: build/lib/core/models.py:1289 core/models.py:1289
#: build/lib/core/models.py:1443 core/models.py:1443
msgid "Template"
msgstr ""
#: build/lib/core/models.py:1290 core/models.py:1290
#: build/lib/core/models.py:1444 core/models.py:1444
msgid "Templates"
msgstr ""
#: build/lib/core/models.py:1343 core/models.py:1343
#: build/lib/core/models.py:1497 core/models.py:1497
msgid "Template/user relation"
msgstr ""
#: build/lib/core/models.py:1344 core/models.py:1344
#: build/lib/core/models.py:1498 core/models.py:1498
msgid "Template/user relations"
msgstr ""
#: build/lib/core/models.py:1350 core/models.py:1350
#: build/lib/core/models.py:1504 core/models.py:1504
msgid "This user is already in this template."
msgstr ""
#: build/lib/core/models.py:1356 core/models.py:1356
#: build/lib/core/models.py:1510 core/models.py:1510
msgid "This team is already in this template."
msgstr ""
#: build/lib/core/models.py:1433 core/models.py:1433
#: build/lib/core/models.py:1587 core/models.py:1587
msgid "email address"
msgstr ""
#: build/lib/core/models.py:1452 core/models.py:1452
#: build/lib/core/models.py:1606 core/models.py:1606
msgid "Document invitation"
msgstr ""
#: build/lib/core/models.py:1453 core/models.py:1453
#: build/lib/core/models.py:1607 core/models.py:1607
msgid "Document invitations"
msgstr ""
#: build/lib/core/models.py:1473 core/models.py:1473
#: build/lib/core/models.py:1627 core/models.py:1627
msgid "This email is already associated to a registered user."
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lasuite-docs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-17 08:04+0000\n"
"PO-Revision-Date: 2025-11-19 10:13\n"
"POT-Creation-Date: 2025-11-20 14:08+0000\n"
"PO-Revision-Date: 2025-11-26 13:33\n"
"Last-Translator: \n"
"Language-Team: Ukrainian\n"
"Language: uk_UA\n"
@@ -50,67 +50,72 @@ msgstr "Приховано"
msgid "Favorite"
msgstr "Обране"
#: build/lib/core/api/serializers.py:496 core/api/serializers.py:496
#: build/lib/core/api/serializers.py:497 core/api/serializers.py:497
msgid "A new document was created on your behalf!"
msgstr "Новий документ був створений від вашого імені!"
#: build/lib/core/api/serializers.py:500 core/api/serializers.py:500
#: build/lib/core/api/serializers.py:501 core/api/serializers.py:501
msgid "You have been granted ownership of a new document:"
msgstr "Ви тепер є власником нового документа:"
#: build/lib/core/api/serializers.py:536 core/api/serializers.py:536
#: build/lib/core/api/serializers.py:537 core/api/serializers.py:537
msgid "This field is required."
msgstr "Це поле є обов’язковим."
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
#, python-format
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
msgstr "Доступ до посилання '%(link_reach)s' заборонено на основі конфігурації батьківського документа."
#: build/lib/core/api/serializers.py:693 core/api/serializers.py:693
#: build/lib/core/api/serializers.py:694 core/api/serializers.py:694
msgid "Body"
msgstr "Вміст"
#: build/lib/core/api/serializers.py:696 core/api/serializers.py:696
#: build/lib/core/api/serializers.py:697 core/api/serializers.py:697
msgid "Body type"
msgstr "Тип вмісту"
#: build/lib/core/api/serializers.py:702 core/api/serializers.py:702
#: build/lib/core/api/serializers.py:703 core/api/serializers.py:703
msgid "Format"
msgstr "Формат"
#: build/lib/core/api/viewsets.py:1003 core/api/viewsets.py:1003
#: build/lib/core/api/viewsets.py:1004 core/api/viewsets.py:1004
#, python-brace-format
msgid "copy of {title}"
msgstr "копія {title}"
#: build/lib/core/choices.py:35 build/lib/core/choices.py:42 core/choices.py:35
#: core/choices.py:42
#: 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:43 core/choices.py:36
#: core/choices.py:43
#: 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:44 core/choices.py:44
#: build/lib/core/choices.py:46 core/choices.py:46
msgid "Administrator"
msgstr "Адміністратор"
#: build/lib/core/choices.py:45 core/choices.py:45
#: build/lib/core/choices.py:47 core/choices.py:47
msgid "Owner"
msgstr "Власник"
#: build/lib/core/choices.py:56 core/choices.py:56
#: build/lib/core/choices.py:58 core/choices.py:58
msgid "Restricted"
msgstr "Обмежено"
#: build/lib/core/choices.py:60 core/choices.py:60
#: build/lib/core/choices.py:62 core/choices.py:62
msgid "Authenticated"
msgstr "Підтверджено"
#: build/lib/core/choices.py:62 core/choices.py:62
#: build/lib/core/choices.py:64 core/choices.py:64
msgid "Public"
msgstr "Публічне"
@@ -234,8 +239,8 @@ msgstr "користувач"
msgid "users"
msgstr "користувачі"
#: build/lib/core/models.py:361 build/lib/core/models.py:1276
#: core/models.py:361 core/models.py:1276
#: build/lib/core/models.py:361 build/lib/core/models.py:1430
#: core/models.py:361 core/models.py:1430
msgid "title"
msgstr "заголовок"
@@ -251,155 +256,188 @@ msgstr "Документ"
msgid "Documents"
msgstr "Документи"
#: build/lib/core/models.py:424 build/lib/core/models.py:822 core/models.py:424
#: core/models.py:822
#: build/lib/core/models.py:424 build/lib/core/models.py:824 core/models.py:424
#: core/models.py:824
msgid "Untitled Document"
msgstr "Документ без назви"
#: build/lib/core/models.py:857 core/models.py:857
#: build/lib/core/models.py:859 core/models.py:859
#, python-brace-format
msgid "{name} shared a document with you!"
msgstr "{name} ділиться з вами документом!"
#: build/lib/core/models.py:861 core/models.py:861
#: build/lib/core/models.py:863 core/models.py:863
#, python-brace-format
msgid "{name} invited you with the role \"{role}\" on the following document:"
msgstr "{name} запрошує вас для роботи з документом із роллю \"{role}\":"
#: build/lib/core/models.py:867 core/models.py:867
#: build/lib/core/models.py:869 core/models.py:869
#, python-brace-format
msgid "{name} shared a document with you: {title}"
msgstr "{name} ділиться з вами документом: {title}"
#: build/lib/core/models.py:967 core/models.py:967
#: build/lib/core/models.py:969 core/models.py:969
msgid "Document/user link trace"
msgstr "Трасування посилання Документ/користувач"
#: build/lib/core/models.py:968 core/models.py:968
#: build/lib/core/models.py:970 core/models.py:970
msgid "Document/user link traces"
msgstr "Трасування посилань Документ/користувач"
#: build/lib/core/models.py:974 core/models.py:974
#: build/lib/core/models.py:976 core/models.py:976
msgid "A link trace already exists for this document/user."
msgstr "Відстеження вже існуючих посилань для цього документа/користувача."
#: build/lib/core/models.py:997 core/models.py:997
#: build/lib/core/models.py:999 core/models.py:999
msgid "Document favorite"
msgstr "Обраний документ"
#: build/lib/core/models.py:998 core/models.py:998
#: build/lib/core/models.py:1000 core/models.py:1000
msgid "Document favorites"
msgstr "Обрані документи"
#: build/lib/core/models.py:1004 core/models.py:1004
#: build/lib/core/models.py:1006 core/models.py:1006
msgid "This document is already targeted by a favorite relation instance for the same user."
msgstr "Цей документ вже вказаний як обраний для одного користувача."
#: build/lib/core/models.py:1026 core/models.py:1026
#: build/lib/core/models.py:1028 core/models.py:1028
msgid "Document/user relation"
msgstr "Відносини документ/користувач"
#: build/lib/core/models.py:1027 core/models.py:1027
#: build/lib/core/models.py:1029 core/models.py:1029
msgid "Document/user relations"
msgstr "Відносини документ/користувач"
#: build/lib/core/models.py:1033 core/models.py:1033
#: build/lib/core/models.py:1035 core/models.py:1035
msgid "This user is already in this document."
msgstr "Цей користувач вже має доступ до цього документу."
#: build/lib/core/models.py:1039 core/models.py:1039
#: build/lib/core/models.py:1041 core/models.py:1041
msgid "This team is already in this document."
msgstr "Ця команда вже має доступ до цього документа."
#: build/lib/core/models.py:1045 build/lib/core/models.py:1362
#: core/models.py:1045 core/models.py:1362
#: build/lib/core/models.py:1047 build/lib/core/models.py:1516
#: core/models.py:1047 core/models.py:1516
msgid "Either user or team must be set, not both."
msgstr "Вкажіть користувача або команду, а не обох."
#: build/lib/core/models.py:1191 core/models.py:1191
#: build/lib/core/models.py:1198 core/models.py:1198
msgid "Document ask for access"
msgstr "Запит доступу до документа"
#: build/lib/core/models.py:1192 core/models.py:1192
#: build/lib/core/models.py:1199 core/models.py:1199
msgid "Document ask for accesses"
msgstr "Запит доступу для документа"
#: build/lib/core/models.py:1198 core/models.py:1198
#: build/lib/core/models.py:1205 core/models.py:1205
msgid "This user has already asked for access to this document."
msgstr "Цей користувач вже попросив доступ до цього документа."
#: build/lib/core/models.py:1255 core/models.py:1255
#: build/lib/core/models.py:1262 core/models.py:1262
#, python-brace-format
msgid "{name} would like access to a document!"
msgstr "{name} хоче отримати доступ до документа!"
#: build/lib/core/models.py:1259 core/models.py:1259
#: build/lib/core/models.py:1266 core/models.py:1266
#, python-brace-format
msgid "{name} would like access to the following document:"
msgstr "{name} бажає отримати доступ до наступного документа:"
#: build/lib/core/models.py:1265 core/models.py:1265
#: build/lib/core/models.py:1272 core/models.py:1272
#, python-brace-format
msgid "{name} is asking for access to the document: {title}"
msgstr "{name} запитує доступ до документа: {title}"
#: build/lib/core/models.py:1277 core/models.py:1277
#: build/lib/core/models.py:1314 core/models.py:1314
msgid "Thread"
msgstr "Обговорення"
#: build/lib/core/models.py:1315 core/models.py:1315
msgid "Threads"
msgstr "Обговорення"
#: build/lib/core/models.py:1318 build/lib/core/models.py:1370
#: core/models.py:1318 core/models.py:1370
msgid "Anonymous"
msgstr "Анонім"
#: build/lib/core/models.py:1365 core/models.py:1365
msgid "Comment"
msgstr "Коментар"
#: build/lib/core/models.py:1366 core/models.py:1366
msgid "Comments"
msgstr "Коментарі"
#: build/lib/core/models.py:1415 core/models.py:1415
msgid "This emoji has already been reacted to this comment."
msgstr "Цим емодзі вже відреагували на цей коментар."
#: build/lib/core/models.py:1419 core/models.py:1419
msgid "Reaction"
msgstr "Реакція"
#: build/lib/core/models.py:1420 core/models.py:1420
msgid "Reactions"
msgstr "Реакції"
#: build/lib/core/models.py:1431 core/models.py:1431
msgid "description"
msgstr "опис"
#: build/lib/core/models.py:1278 core/models.py:1278
#: build/lib/core/models.py:1432 core/models.py:1432
msgid "code"
msgstr "код"
#: build/lib/core/models.py:1279 core/models.py:1279
#: build/lib/core/models.py:1433 core/models.py:1433
msgid "css"
msgstr "css"
#: build/lib/core/models.py:1281 core/models.py:1281
#: build/lib/core/models.py:1435 core/models.py:1435
msgid "public"
msgstr "публічне"
#: build/lib/core/models.py:1283 core/models.py:1283
#: build/lib/core/models.py:1437 core/models.py:1437
msgid "Whether this template is public for anyone to use."
msgstr "Чи є цей шаблон публічним для будь-кого користувача."
#: build/lib/core/models.py:1289 core/models.py:1289
#: build/lib/core/models.py:1443 core/models.py:1443
msgid "Template"
msgstr "Шаблон"
#: build/lib/core/models.py:1290 core/models.py:1290
#: build/lib/core/models.py:1444 core/models.py:1444
msgid "Templates"
msgstr "Шаблони"
#: build/lib/core/models.py:1343 core/models.py:1343
#: build/lib/core/models.py:1497 core/models.py:1497
msgid "Template/user relation"
msgstr "Відношення шаблон/користувач"
#: build/lib/core/models.py:1344 core/models.py:1344
#: build/lib/core/models.py:1498 core/models.py:1498
msgid "Template/user relations"
msgstr "Відношення шаблон/користувач"
#: build/lib/core/models.py:1350 core/models.py:1350
#: build/lib/core/models.py:1504 core/models.py:1504
msgid "This user is already in this template."
msgstr "Цей користувач вже має доступ до цього шаблону."
#: build/lib/core/models.py:1356 core/models.py:1356
#: build/lib/core/models.py:1510 core/models.py:1510
msgid "This team is already in this template."
msgstr "Ця команда вже має доступ до цього шаблону."
#: build/lib/core/models.py:1433 core/models.py:1433
#: build/lib/core/models.py:1587 core/models.py:1587
msgid "email address"
msgstr "електронна адреса"
#: build/lib/core/models.py:1452 core/models.py:1452
#: build/lib/core/models.py:1606 core/models.py:1606
msgid "Document invitation"
msgstr "Запрошення до редагування документа"
#: build/lib/core/models.py:1453 core/models.py:1453
#: build/lib/core/models.py:1607 core/models.py:1607
msgid "Document invitations"
msgstr "Запрошення до редагування документів"
#: build/lib/core/models.py:1473 core/models.py:1473
#: build/lib/core/models.py:1627 core/models.py:1627
msgid "This email is already associated to a registered user."
msgstr "Ця електронна пошта вже пов'язана з зареєстрованим користувачем."

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lasuite-docs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-17 08:04+0000\n"
"PO-Revision-Date: 2025-11-19 10:13\n"
"POT-Creation-Date: 2025-11-20 14:08+0000\n"
"PO-Revision-Date: 2025-11-26 13:33\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -50,67 +50,72 @@ msgstr "已屏蔽"
msgid "Favorite"
msgstr "收藏"
#: build/lib/core/api/serializers.py:496 core/api/serializers.py:496
#: build/lib/core/api/serializers.py:497 core/api/serializers.py:497
msgid "A new document was created on your behalf!"
msgstr "已为您创建了一份新文档!"
#: build/lib/core/api/serializers.py:500 core/api/serializers.py:500
#: build/lib/core/api/serializers.py:501 core/api/serializers.py:501
msgid "You have been granted ownership of a new document:"
msgstr "您已被授予新文档的所有权:"
#: build/lib/core/api/serializers.py:536 core/api/serializers.py:536
#: build/lib/core/api/serializers.py:537 core/api/serializers.py:537
msgid "This field is required."
msgstr "必填字段。"
#: build/lib/core/api/serializers.py:547 core/api/serializers.py:547
#: build/lib/core/api/serializers.py:548 core/api/serializers.py:548
#, python-format
msgid "Link reach '%(link_reach)s' is not allowed based on parent document configuration."
msgstr ""
#: build/lib/core/api/serializers.py:693 core/api/serializers.py:693
#: build/lib/core/api/serializers.py:694 core/api/serializers.py:694
msgid "Body"
msgstr "正文"
#: build/lib/core/api/serializers.py:696 core/api/serializers.py:696
#: build/lib/core/api/serializers.py:697 core/api/serializers.py:697
msgid "Body type"
msgstr "正文类型"
#: build/lib/core/api/serializers.py:702 core/api/serializers.py:702
#: build/lib/core/api/serializers.py:703 core/api/serializers.py:703
msgid "Format"
msgstr "格式"
#: build/lib/core/api/viewsets.py:1003 core/api/viewsets.py:1003
#: build/lib/core/api/viewsets.py:1004 core/api/viewsets.py:1004
#, python-brace-format
msgid "copy of {title}"
msgstr "{title} 的副本"
#: build/lib/core/choices.py:35 build/lib/core/choices.py:42 core/choices.py:35
#: core/choices.py:42
#: 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:43 core/choices.py:36
#: core/choices.py:43
#: 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:44 core/choices.py:44
#: build/lib/core/choices.py:46 core/choices.py:46
msgid "Administrator"
msgstr "超级管理员"
#: build/lib/core/choices.py:45 core/choices.py:45
#: build/lib/core/choices.py:47 core/choices.py:47
msgid "Owner"
msgstr "所有者"
#: build/lib/core/choices.py:56 core/choices.py:56
#: build/lib/core/choices.py:58 core/choices.py:58
msgid "Restricted"
msgstr "受限的"
#: build/lib/core/choices.py:60 core/choices.py:60
#: build/lib/core/choices.py:62 core/choices.py:62
msgid "Authenticated"
msgstr "已验证"
#: build/lib/core/choices.py:62 core/choices.py:62
#: build/lib/core/choices.py:64 core/choices.py:64
msgid "Public"
msgstr "公开"
@@ -234,8 +239,8 @@ msgstr "用户"
msgid "users"
msgstr "个用户"
#: build/lib/core/models.py:361 build/lib/core/models.py:1276
#: core/models.py:361 core/models.py:1276
#: build/lib/core/models.py:361 build/lib/core/models.py:1430
#: core/models.py:361 core/models.py:1430
msgid "title"
msgstr "标题"
@@ -251,155 +256,188 @@ msgstr "文档"
msgid "Documents"
msgstr "个文档"
#: build/lib/core/models.py:424 build/lib/core/models.py:822 core/models.py:424
#: core/models.py:822
#: build/lib/core/models.py:424 build/lib/core/models.py:824 core/models.py:424
#: core/models.py:824
msgid "Untitled Document"
msgstr "未命名文档"
#: build/lib/core/models.py:857 core/models.py:857
#: build/lib/core/models.py:859 core/models.py:859
#, python-brace-format
msgid "{name} shared a document with you!"
msgstr "{name} 与您共享了一个文档!"
#: build/lib/core/models.py:861 core/models.py:861
#: build/lib/core/models.py:863 core/models.py:863
#, python-brace-format
msgid "{name} invited you with the role \"{role}\" on the following document:"
msgstr "{name} 邀请您以“{role}”角色访问以下文档:"
#: build/lib/core/models.py:867 core/models.py:867
#: build/lib/core/models.py:869 core/models.py:869
#, python-brace-format
msgid "{name} shared a document with you: {title}"
msgstr "{name} 与您共享了一个文档:{title}"
#: build/lib/core/models.py:967 core/models.py:967
#: build/lib/core/models.py:969 core/models.py:969
msgid "Document/user link trace"
msgstr "文档/用户链接跟踪"
#: build/lib/core/models.py:968 core/models.py:968
#: build/lib/core/models.py:970 core/models.py:970
msgid "Document/user link traces"
msgstr "个文档/用户链接跟踪"
#: build/lib/core/models.py:974 core/models.py:974
#: build/lib/core/models.py:976 core/models.py:976
msgid "A link trace already exists for this document/user."
msgstr "此文档/用户的链接跟踪已存在。"
#: build/lib/core/models.py:997 core/models.py:997
#: build/lib/core/models.py:999 core/models.py:999
msgid "Document favorite"
msgstr "文档收藏"
#: build/lib/core/models.py:998 core/models.py:998
#: build/lib/core/models.py:1000 core/models.py:1000
msgid "Document favorites"
msgstr "文档收藏夹"
#: build/lib/core/models.py:1004 core/models.py:1004
#: build/lib/core/models.py:1006 core/models.py:1006
msgid "This document is already targeted by a favorite relation instance for the same user."
msgstr "该文档已被同一用户的收藏关系实例关联。"
#: build/lib/core/models.py:1026 core/models.py:1026
#: build/lib/core/models.py:1028 core/models.py:1028
msgid "Document/user relation"
msgstr "文档/用户关系"
#: build/lib/core/models.py:1027 core/models.py:1027
#: build/lib/core/models.py:1029 core/models.py:1029
msgid "Document/user relations"
msgstr "文档/用户关系集"
#: build/lib/core/models.py:1033 core/models.py:1033
#: build/lib/core/models.py:1035 core/models.py:1035
msgid "This user is already in this document."
msgstr "该用户已在此文档中。"
#: build/lib/core/models.py:1039 core/models.py:1039
#: build/lib/core/models.py:1041 core/models.py:1041
msgid "This team is already in this document."
msgstr "该团队已在此文档中。"
#: build/lib/core/models.py:1045 build/lib/core/models.py:1362
#: core/models.py:1045 core/models.py:1362
#: build/lib/core/models.py:1047 build/lib/core/models.py:1516
#: core/models.py:1047 core/models.py:1516
msgid "Either user or team must be set, not both."
msgstr "必须设置用户或团队之一,不能同时设置两者。"
#: build/lib/core/models.py:1191 core/models.py:1191
#: build/lib/core/models.py:1198 core/models.py:1198
msgid "Document ask for access"
msgstr "文档需要访问权限"
#: build/lib/core/models.py:1192 core/models.py:1192
#: build/lib/core/models.py:1199 core/models.py:1199
msgid "Document ask for accesses"
msgstr "文档需要访问权限"
#: build/lib/core/models.py:1198 core/models.py:1198
#: build/lib/core/models.py:1205 core/models.py:1205
msgid "This user has already asked for access to this document."
msgstr "用户已申请该文档的访问权限。"
#: build/lib/core/models.py:1255 core/models.py:1255
#: build/lib/core/models.py:1262 core/models.py:1262
#, python-brace-format
msgid "{name} would like access to a document!"
msgstr "{name} 申请访问文档!"
#: build/lib/core/models.py:1259 core/models.py:1259
#: build/lib/core/models.py:1266 core/models.py:1266
#, python-brace-format
msgid "{name} would like access to the following document:"
msgstr "{name} 申请访问以下文档:"
#: build/lib/core/models.py:1265 core/models.py:1265
#: build/lib/core/models.py:1272 core/models.py:1272
#, python-brace-format
msgid "{name} is asking for access to the document: {title}"
msgstr "{name}申请文档:{title}的访问权限"
#: build/lib/core/models.py:1277 core/models.py:1277
#: build/lib/core/models.py:1314 core/models.py:1314
msgid "Thread"
msgstr ""
#: build/lib/core/models.py:1315 core/models.py:1315
msgid "Threads"
msgstr ""
#: build/lib/core/models.py:1318 build/lib/core/models.py:1370
#: core/models.py:1318 core/models.py:1370
msgid "Anonymous"
msgstr ""
#: build/lib/core/models.py:1365 core/models.py:1365
msgid "Comment"
msgstr ""
#: build/lib/core/models.py:1366 core/models.py:1366
msgid "Comments"
msgstr ""
#: build/lib/core/models.py:1415 core/models.py:1415
msgid "This emoji has already been reacted to this comment."
msgstr ""
#: build/lib/core/models.py:1419 core/models.py:1419
msgid "Reaction"
msgstr ""
#: build/lib/core/models.py:1420 core/models.py:1420
msgid "Reactions"
msgstr ""
#: build/lib/core/models.py:1431 core/models.py:1431
msgid "description"
msgstr "说明"
#: build/lib/core/models.py:1278 core/models.py:1278
#: build/lib/core/models.py:1432 core/models.py:1432
msgid "code"
msgstr "代码"
#: build/lib/core/models.py:1279 core/models.py:1279
#: build/lib/core/models.py:1433 core/models.py:1433
msgid "css"
msgstr "css"
#: build/lib/core/models.py:1281 core/models.py:1281
#: build/lib/core/models.py:1435 core/models.py:1435
msgid "public"
msgstr "公开"
#: build/lib/core/models.py:1283 core/models.py:1283
#: build/lib/core/models.py:1437 core/models.py:1437
msgid "Whether this template is public for anyone to use."
msgstr "该模板是否公开供任何人使用。"
#: build/lib/core/models.py:1289 core/models.py:1289
#: build/lib/core/models.py:1443 core/models.py:1443
msgid "Template"
msgstr "模板"
#: build/lib/core/models.py:1290 core/models.py:1290
#: build/lib/core/models.py:1444 core/models.py:1444
msgid "Templates"
msgstr "模板"
#: build/lib/core/models.py:1343 core/models.py:1343
#: build/lib/core/models.py:1497 core/models.py:1497
msgid "Template/user relation"
msgstr "模板/用户关系"
#: build/lib/core/models.py:1344 core/models.py:1344
#: build/lib/core/models.py:1498 core/models.py:1498
msgid "Template/user relations"
msgstr "模板/用户关系集"
#: build/lib/core/models.py:1350 core/models.py:1350
#: build/lib/core/models.py:1504 core/models.py:1504
msgid "This user is already in this template."
msgstr "该用户已在此模板中。"
#: build/lib/core/models.py:1356 core/models.py:1356
#: build/lib/core/models.py:1510 core/models.py:1510
msgid "This team is already in this template."
msgstr "该团队已在此模板中。"
#: build/lib/core/models.py:1433 core/models.py:1433
#: build/lib/core/models.py:1587 core/models.py:1587
msgid "email address"
msgstr "电子邮件地址"
#: build/lib/core/models.py:1452 core/models.py:1452
#: build/lib/core/models.py:1606 core/models.py:1606
msgid "Document invitation"
msgstr "文档邀请"
#: build/lib/core/models.py:1453 core/models.py:1453
#: build/lib/core/models.py:1607 core/models.py:1607
msgid "Document invitations"
msgstr "文档邀请"
#: build/lib/core/models.py:1473 core/models.py:1473
#: build/lib/core/models.py:1627 core/models.py:1627
msgid "This email is already associated to a registered user."
msgstr "此电子邮件已经与现有注册用户关联。"

View File

@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "impress"
version = "3.10.0"
version = "4.0.0"
authors = [{ "name" = "DINUM", "email" = "dev@mail.numerique.gouv.fr" }]
classifiers = [
"Development Status :: 5 - Production/Stable",

View File

@@ -7,6 +7,7 @@ import {
randomName,
verifyDocName,
} from './utils-common';
import { connectOtherUserToDoc } from './utils-share';
test.beforeEach(async ({ page }) => {
await page.goto('/');
@@ -73,6 +74,82 @@ test.describe('Doc Create', () => {
page.locator('.c__tree-view--row-content').getByText('Untitled document'),
).toBeVisible();
});
test('it creates a doc with link "/doc/new/', async ({
page,
browserName,
}) => {
test.slow();
// Private doc creation
await page.goto('/docs/new/?title=My+private+doc+from+url');
await verifyDocName(page, 'My private doc from url');
await page.getByRole('button', { name: 'Share' }).click();
await expect(
page.getByTestId('doc-visibility').getByText('Private').first(),
).toBeVisible();
// Public editing doc creation
await page.goto(
'/docs/new/?title=My+public+doc+from+url&link-reach=public&link-role=editor',
);
await verifyDocName(page, 'My public doc from url');
await page.getByRole('button', { name: 'Share' }).click();
await expect(
page.getByTestId('doc-visibility').getByText('Public').first(),
).toBeVisible();
await expect(
page.getByTestId('doc-access-mode').getByText('Editing').first(),
).toBeVisible();
// Authenticated reading doc creation
await page.goto(
'/docs/new/?title=My+authenticated+doc+from+url&link-reach=authenticated&link-role=reader',
);
await verifyDocName(page, 'My authenticated doc from url');
await page.getByRole('button', { name: 'Share' }).click();
await expect(
page.getByTestId('doc-visibility').getByText('Connected').first(),
).toBeVisible();
await expect(
page.getByTestId('doc-access-mode').getByText('Reading').first(),
).toBeVisible();
const { cleanup, otherPage, otherBrowserName } =
await connectOtherUserToDoc({
docUrl:
'/docs/new/?title=From+unlogged+doc+from+url&link-reach=authenticated&link-role=reader',
browserName,
withoutSignIn: true,
});
await keyCloakSignIn(otherPage, otherBrowserName, false);
await verifyDocName(otherPage, 'From unlogged doc from url');
await otherPage.getByRole('button', { name: 'Share' }).click();
await expect(
otherPage.getByTestId('doc-visibility').getByText('Connected').first(),
).toBeVisible();
await expect(
otherPage.getByTestId('doc-access-mode').getByText('Reading').first(),
).toBeVisible();
await cleanup();
});
});
test.describe('Doc Create: Not logged', () => {

View File

@@ -582,8 +582,12 @@ test.describe('Doc Header', () => {
await child.hover();
await child.getByText(`more_horiz`).click();
const currentUrl = page.url();
await page.getByRole('menuitem', { name: 'Duplicate' }).click();
await expect(page).not.toHaveURL(new RegExp(currentUrl));
await verifyDocName(page, duplicateTitle);
await expect(

View File

@@ -19,6 +19,8 @@ test.describe('Doc Table Content', () => {
await page.locator('.ProseMirror').click();
await expect(page.getByRole('button', { name: 'Summary' })).toBeHidden();
await page.keyboard.type('# Level 1\n## Level 2\n### Level 3');
const summaryContainer = page.locator('#summaryContainer');

View File

@@ -1,6 +1,6 @@
{
"name": "app-e2e",
"version": "3.10.0",
"version": "4.0.0",
"repository": "https://github.com/suitenumerique/docs",
"author": "DINUM",
"license": "MIT",

View File

@@ -1,6 +1,6 @@
{
"name": "app-impress",
"version": "3.10.0",
"version": "4.0.0",
"repository": "https://github.com/suitenumerique/docs",
"author": "DINUM",
"license": "MIT",
@@ -57,7 +57,7 @@
"idb": "8.0.3",
"lodash": "4.17.21",
"luxon": "3.7.2",
"next": "16.0.3",
"next": "15.5.4",
"posthog-js": "1.298.0",
"react": "*",
"react-aria-components": "1.13.0",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 992 B

After

Width:  |  Height:  |  Size: 932 B

View File

@@ -27,7 +27,7 @@ export const setAuthUrl = () => {
window.location.pathname !== '/' &&
window.location.pathname !== `${HOME_URL}/`
) {
localStorage.setItem(PATH_AUTH_LOCAL_STORAGE, window.location.pathname);
localStorage.setItem(PATH_AUTH_LOCAL_STORAGE, window.location.href);
}
};

View File

@@ -108,7 +108,7 @@ export function AIGroupButton() {
data-test="ai-actions"
label="AI"
mainTooltip={t('AI Actions')}
icon={<Icon iconName="auto_awesome" $size="l" />}
icon={<Icon iconName="auto_awesome" $size="md" />}
/>
</Components.Generic.Menu.Trigger>
<Components.Generic.Menu.Dropdown

View File

@@ -94,6 +94,7 @@ export function MarkdownButton() {
font-family: var(--c--globals--font--families--base);
`}
$weight="bold"
$size="sm"
>
M
</Text>

View File

@@ -1,6 +1,5 @@
import clsx from 'clsx';
import { useEffect } from 'react';
import { css } from 'styled-components';
import { Box, Loading } from '@/components';
import { DocHeader } from '@/docs/doc-header/';
@@ -97,18 +96,7 @@ export const DocEditor = ({ doc }: DocEditorProps) => {
return (
<>
{isDesktop && (
<Box
$height="100vh"
$position="absolute"
$css={css`
top: 72px;
right: 20px;
`}
>
<TableContent />
</Box>
)}
{isDesktop && <TableContent />}
<DocEditorContainer
docHeader={<DocHeader doc={doc} />}
docEditor={

View File

@@ -11,7 +11,7 @@ export const cssComments = (
.bn-thread-mark:not([data-orphan='true']),
.bn-thread-mark-selected:not([data-orphan='true']) {
background: ${canSeeComment ? '#EDB40066' : 'transparent'};
color: var(--c--globals--colors--greyscale-700);
color: var(--c--globals--colors--gray-700);
}
}
@@ -54,7 +54,7 @@ export const cssComments = (
& .bn-editor {
padding-left: var(--c--globals--spacings--lg);
.bn-inline-content {
color: var(--c--globals--colors--greyscale-700);
color: var(--c--globals--colors--gray-700);
}
}
@@ -65,7 +65,7 @@ export const cssComments = (
padding: var(--c--globals--spacings--0)
var(--c--globals--spacings--st);
background: none;
border: 1px solid var(--c--globals--colors--greyscale-300);
border: 1px solid var(--c--globals--colors--gray-300);
border-radius: var(--c--globals--spacings--st);
height: var(--c--globals--spacings--md);
}
@@ -103,12 +103,12 @@ export const cssComments = (
background-color: transparent;
&:hover {
background-color: var(--c--globals--colors--greyscale-100);
background-color: var(--c--globals--colors--gray-100);
}
}
button[role='menuitem'] svg {
color: var(--c--globals--colors--greyscale-600);
color: var(--c--globals--colors--gray-600);
}
}
@@ -137,7 +137,7 @@ export const cssComments = (
&[data-test='cancel'] {
background: white;
border: 1px solid var(--c--globals--colors--greyscale-300);
border: 1px solid var(--c--globals--colors--gray-300);
color: var(--c--globals--colors--info-600);
}
}
@@ -186,13 +186,14 @@ export const cssComments = (
padding: var(--c--globals--spacings--0);
&:disabled {
background: var(--c--globals--colors--greyscale-300);
background: var(--c--globals--colors--gray-300);
}
& .mantine-Button-label::before {
content: '🡡';
font-size: 13px;
color: var(--c--globals--colors--greyscale-100);
content: 'arrow_upward_alt';
font-family: 'Material Symbols Outlined Variable', sans-serif;
font-size: 18px;
color: var(--c--globals--colors--gray-100);
}
}
}

View File

@@ -75,27 +75,31 @@ const UploadLoaderBlockComponent = ({
loopCheckDocMediaStatus(url)
.then((response) => {
// Replace the loading block with the resource block (image, audio, video, pdf ...)
try {
editor.replaceBlocks(
[block.id],
[
{
type: block.props.blockUploadType,
props: {
url: `${mediaUrl}${response.file}`,
showPreview: block.props.blockUploadShowPreview,
name: block.props.blockUploadName,
caption: '',
backgroundColor: 'default',
textAlignment: 'left',
},
} as never,
],
);
} catch {
/* During collaboration, another user might have updated the block */
}
// Add random delay to reduce collision probability during collaboration
const randomDelay = Math.random() * 800;
setTimeout(() => {
// Replace the loading block with the resource block (image, audio, video, pdf ...)
try {
editor.replaceBlocks(
[block.id],
[
{
type: block.props.blockUploadType,
props: {
url: `${mediaUrl}${response.file}`,
showPreview: block.props.blockUploadShowPreview,
name: block.props.blockUploadName,
caption: '',
backgroundColor: 'default',
textAlignment: 'left',
},
} as never,
],
);
} catch {
/* During collaboration, another user might have updated the block */
}
}, randomDelay);
})
.catch((error) => {
console.error('Error analyzing file:', error);

View File

@@ -9,11 +9,33 @@ export const useHeadings = (editor: DocsBlockNoteEditor) => {
useEffect(() => {
setHeadings(editor);
const unsubscribe = editor?.onChange(() => {
setHeadings(editor);
let timeoutId: NodeJS.Timeout;
const DEBOUNCE_DELAY = 500;
const unsubscribe = editor?.onChange((_, context) => {
clearTimeout(timeoutId);
timeoutId = setTimeout(() => {
const blocksChanges = context.getChanges();
if (!blocksChanges.length) {
return;
}
const blockChanges = blocksChanges[0];
if (
blockChanges.type !== 'update' ||
blockChanges.block.type !== 'heading'
) {
return;
}
setHeadings(editor);
}, DEBOUNCE_DELAY);
});
return () => {
clearTimeout(timeoutId);
resetHeadings();
unsubscribe();
};

View File

@@ -1,3 +1,4 @@
import { Block } from '@blocknote/core';
import { captureException } from '@sentry/nextjs';
import { useCallback, useEffect } from 'react';
import { useTranslation } from 'react-i18next';
@@ -36,73 +37,93 @@ export const useUploadFile = (docId: string) => {
};
};
/**
* When we upload a file it can takes some time to analyze it (e.g. virus scan).
* This hook listen to upload end and replace the uploaded block by a uploadLoader
* block to show analyzing status.
* The uploadLoader block will then handle the status display until the analysis is done
* then replaced by the final block (e.g. image, pdf, etc.).
* @param editor
*/
export const useUploadStatus = (editor: DocsBlockNoteEditor) => {
const ANALYZE_URL = 'media-check';
const { t } = useTranslation();
useEffect(() => {
const unsubscribe = editor.onChange((_, context) => {
const blocksChanges = context.getChanges();
if (!blocksChanges.length) {
return;
}
const blockChanges = blocksChanges[0];
/**
* Replace the resource block by a uploadLoader block to show analyzing status
*/
const replaceBlockWithUploadLoader = useCallback(
(block: Block) => {
if (
blockChanges.source.type !== 'local' ||
blockChanges.type !== 'update' ||
!('url' in blockChanges.block.props) ||
('url' in blockChanges.block.props &&
!blockChanges.block.props.url.includes(ANALYZE_URL))
!block ||
!('url' in block.props) ||
('url' in block.props && !block.props.url.includes(ANALYZE_URL))
) {
return;
}
const blockUploadUrl = blockChanges.block.props.url;
const blockUploadType = blockChanges.block.type;
const blockUploadName = blockChanges.block.props.name;
const blockUploadUrl = block.props.url;
const blockUploadType = block.type;
const blockUploadName = block.props.name;
const blockUploadShowPreview =
('showPreview' in blockChanges.block.props &&
blockChanges.block.props.showPreview) ||
false;
('showPreview' in block.props && block.props.showPreview) || false;
const timeoutId = setTimeout(() => {
// Replace the resource block by a uploadLoader block
// to show analyzing status
try {
editor.replaceBlocks(
[blockChanges.block.id],
[
{
type: 'uploadLoader',
props: {
information: t('Analyzing file...'),
type: 'loading',
blockUploadName,
blockUploadType,
blockUploadUrl,
blockUploadShowPreview,
},
try {
editor.replaceBlocks(
[block.id],
[
{
type: 'uploadLoader',
props: {
information: t('Analyzing file...'),
type: 'loading',
blockUploadName,
blockUploadType,
blockUploadUrl,
blockUploadShowPreview,
},
],
);
} catch (error) {
captureException(error, {
extra: { info: 'Error replacing block for upload loader' },
});
}
}, 250);
},
],
);
} catch (error) {
captureException(error, {
extra: { info: 'Error replacing block for upload loader' },
});
}
},
[editor, t],
);
useEffect(() => {
const imagesBlocks = editor?.document.filter(
(block) =>
block.type === 'image' && block.props.url.includes(ANALYZE_URL),
);
imagesBlocks.forEach((block) => {
replaceBlockWithUploadLoader(block as Block);
});
}, [editor, replaceBlockWithUploadLoader]);
/**
* Handle upload end to replace the upload block by a uploadLoader
* block to show analyzing status
*/
useEffect(() => {
editor.onUploadEnd((blockId) => {
if (!blockId) {
return;
}
const innerTimeoutId = setTimeout(() => {
const block = editor.getBlock({ id: blockId });
replaceBlockWithUploadLoader(block as Block);
}, 300);
return () => {
clearTimeout(timeoutId);
unsubscribe();
clearTimeout(innerTimeoutId);
};
});
return () => {
unsubscribe();
};
}, [editor, t]);
}, [editor, replaceBlockWithUploadLoader]);
};

View File

@@ -8,7 +8,7 @@ export const cssEditor = css`
}
& .bn-editor {
color: var(--c--globals--colors--greyscale-700);
color: var(--c--globals--colors--gray-700);
}
/**
@@ -127,7 +127,7 @@ export const cssEditor = css`
font-size: 1.25rem;
}
a {
color: var(--c--globals--colors--greyscale-600);
color: var(--c--globals--colors--gray-600);
cursor: pointer;
}
.bn-block-group

View File

@@ -1,4 +1,8 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import {
UseMutationOptions,
useMutation,
useQueryClient,
} from '@tanstack/react-query';
import { APIError, errorCauses, fetchAPI } from '@/api';
@@ -6,9 +10,14 @@ import { Doc } from '../types';
import { KEY_LIST_DOC } from './useDocs';
export const createDoc = async (): Promise<Doc> => {
type CreateDocParams = {
title?: string;
} | void;
export const createDoc = async (params: CreateDocParams): Promise<Doc> => {
const response = await fetchAPI(`documents/`, {
method: 'POST',
body: JSON.stringify({ title: params?.title }),
});
if (!response.ok) {
@@ -18,23 +27,17 @@ export const createDoc = async (): Promise<Doc> => {
return response.json() as Promise<Doc>;
};
interface CreateDocProps {
onSuccess: (data: Doc) => void;
onError?: (error: APIError) => void;
}
type UseCreateDocOptions = UseMutationOptions<Doc, APIError, CreateDocParams>;
export function useCreateDoc({ onSuccess, onError }: CreateDocProps) {
export function useCreateDoc(options?: UseCreateDocOptions) {
const queryClient = useQueryClient();
return useMutation<Doc, APIError>({
return useMutation<Doc, APIError, CreateDocParams>({
mutationFn: createDoc,
onSuccess: (data) => {
onSuccess: (data, variables, onMutateResult, context) => {
void queryClient.resetQueries({
queryKey: [KEY_LIST_DOC],
});
onSuccess(data);
},
onError: (error) => {
onError?.(error);
options?.onSuccess?.(data, variables, onMutateResult, context);
},
});
}

View File

@@ -1,17 +1,21 @@
import { VariantType, useToastProvider } from '@openfun/cunningham-react';
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { useTranslation } from 'react-i18next';
import {
UseMutationOptions,
useMutation,
useQueryClient,
} from '@tanstack/react-query';
import { APIError, errorCauses, fetchAPI } from '@/api';
import { Doc } from '@/docs/doc-management';
import { Doc, LinkReach, LinkRole } from '@/docs/doc-management';
export type UpdateDocLinkParams = Pick<Doc, 'id' | 'link_reach'> &
Partial<Pick<Doc, 'link_role'>>;
type UpdateDocLinkResponse = { link_role: LinkRole; link_reach: LinkReach };
export const updateDocLink = async ({
id,
...params
}: UpdateDocLinkParams): Promise<Doc> => {
}: UpdateDocLinkParams): Promise<UpdateDocLinkResponse> => {
const response = await fetchAPI(`documents/${id}/link-configuration/`, {
method: 'PUT',
body: JSON.stringify({
@@ -26,40 +30,31 @@ export const updateDocLink = async ({
);
}
return response.json() as Promise<Doc>;
return response.json() as Promise<UpdateDocLinkResponse>;
};
interface UpdateDocLinkProps {
onSuccess?: (data: Doc) => void;
type UseUpdateDocLinkOptions = UseMutationOptions<
UpdateDocLinkResponse,
APIError,
UpdateDocLinkParams
> & {
listInvalidQueries?: string[];
}
};
export function useUpdateDocLink({
onSuccess,
listInvalidQueries,
}: UpdateDocLinkProps = {}) {
export function useUpdateDocLink(options?: UseUpdateDocLinkOptions) {
const queryClient = useQueryClient();
const { toast } = useToastProvider();
const { t } = useTranslation();
return useMutation<Doc, APIError, UpdateDocLinkParams>({
return useMutation<UpdateDocLinkResponse, APIError, UpdateDocLinkParams>({
mutationFn: updateDocLink,
onSuccess: (data) => {
listInvalidQueries?.forEach((queryKey) => {
...options,
onSuccess: (data, variables, onMutateResult, context) => {
options?.listInvalidQueries?.forEach((queryKey) => {
void queryClient.invalidateQueries({
queryKey: [queryKey],
});
});
toast(
t('The document visibility has been updated.'),
VariantType.SUCCESS,
{
duration: 2000,
},
);
onSuccess?.(data);
options?.onSuccess?.(data, variables, onMutateResult, context);
},
});
}

View File

@@ -1,4 +1,8 @@
import { Button } from '@openfun/cunningham-react';
import {
Button,
VariantType,
useToastProvider,
} from '@openfun/cunningham-react';
import { useTranslation } from 'react-i18next';
import { Box, Card, Text } from '@/components';
@@ -17,9 +21,15 @@ interface DocDesynchronizedProps {
export const DocDesynchronized = ({ doc }: DocDesynchronizedProps) => {
const { t } = useTranslation();
const { spacingsTokens } = useCunninghamTheme();
const { toast } = useToastProvider();
const { mutate: updateDocLink } = useUpdateDocLink({
listInvalidQueries: [KEY_LIST_DOC, KEY_DOC],
onSuccess: () => {
toast(t('The document visibility restored.'), VariantType.SUCCESS, {
duration: 2000,
});
},
});
return (

View File

@@ -1,3 +1,4 @@
import { VariantType, useToastProvider } from '@openfun/cunningham-react';
import { useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import { css } from 'styled-components';
@@ -41,6 +42,7 @@ export const DocVisibility = ({ doc }: DocVisibilityProps) => {
const { isDesynchronized } = useDocUtils(doc);
const { linkModeTranslations, linkReachChoices, linkReachTranslations } =
useTranslatedShareSettings();
const { toast } = useToastProvider();
const description =
docLinkRole === LinkRole.READER
@@ -49,6 +51,15 @@ export const DocVisibility = ({ doc }: DocVisibilityProps) => {
const { mutate: updateDocLink } = useUpdateDocLink({
listInvalidQueries: [KEY_LIST_DOC, KEY_DOC],
onSuccess: () => {
toast(
t('The document visibility has been updated.'),
VariantType.SUCCESS,
{
duration: 2000,
},
);
},
});
const linkReachOptions: DropdownMenuOption[] = useMemo(() => {

View File

@@ -4,21 +4,142 @@ import { css } from 'styled-components';
import { Box, BoxButton, Icon, Text } from '@/components';
import { useCunninghamTheme } from '@/cunningham';
import { useEditorStore, useHeadingStore } from '@/docs/doc-editor';
import {
DocsBlockNoteEditor,
HeadingBlock,
useEditorStore,
useHeadingStore,
} from '@/docs/doc-editor';
import { MAIN_LAYOUT_ID } from '@/layouts/conf';
import { Heading } from './Heading';
export const TableContent = () => {
const { spacingsTokens, colorsTokens } = useCunninghamTheme();
const [containerHeight, setContainerHeight] = useState('100vh');
const { headings } = useHeadingStore();
const { editor } = useEditorStore();
const { spacingsTokens, colorsTokens } = useCunninghamTheme();
const [headingIdHighlight, setHeadingIdHighlight] = useState<string>();
const { t } = useTranslation();
const [isHover, setIsHover] = useState(false);
const [isOpen, setIsOpen] = useState(false);
/**
* Calculate container height based on the scrollable content
*/
useEffect(() => {
const mainLayout = document.getElementById(MAIN_LAYOUT_ID);
if (mainLayout) {
setContainerHeight(`${mainLayout.scrollHeight}px`);
}
}, []);
const onOpen = () => {
setIsOpen(true);
};
if (
!editor ||
!headings ||
headings.length === 0 ||
(headings.length === 1 && !headings[0].contentText)
) {
return null;
}
return (
<Box
$height={containerHeight}
$position="absolute"
$css={css`
top: 72px;
right: 20px;
`}
>
<Box
as="nav"
id="summaryContainer"
$width={!isOpen ? '40px' : '200px'}
$height={!isOpen ? '40px' : 'auto'}
$maxHeight="calc(50vh - 60px)"
$zIndex={1000}
$align="center"
$padding={isOpen ? 'xs' : '0'}
$justify="center"
$position="sticky"
aria-label={t('Summary')}
$css={css`
top: var(--c--globals--spacings--0);
border: 1px solid ${colorsTokens['brand-100']};
overflow: hidden;
border-radius: ${spacingsTokens['3xs']};
background: ${colorsTokens['gray-000']};
${isOpen &&
css`
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: flex-start;
gap: ${spacingsTokens['2xs']};
`}
`}
className="--docs--table-content"
>
{!isOpen && (
<BoxButton
onClick={onOpen}
$width="100%"
$height="100%"
$justify="center"
$align="center"
aria-label={t('Summary')}
aria-expanded={isOpen}
aria-controls="toc-list"
$css={css`
&:focus-visible {
outline: none;
box-shadow: 0 0 0 4px ${colorsTokens['brand-400']};
background: ${colorsTokens['brand-100']};
width: 90%;
height: 90%;
}
`}
>
<Icon
$theme="brand"
$variation="tertiary"
iconName="list"
variant="symbols-outlined"
/>
</BoxButton>
)}
{isOpen && (
<TableContentOpened
setIsOpen={setIsOpen}
headings={headings}
editor={editor}
/>
)}
</Box>
</Box>
);
};
const TableContentOpened = ({
setIsOpen,
headings,
editor,
}: {
setIsOpen: (isOpen: boolean) => void;
headings: HeadingBlock[];
editor: DocsBlockNoteEditor;
}) => {
const { spacingsTokens, colorsTokens } = useCunninghamTheme();
const [headingIdHighlight, setHeadingIdHighlight] = useState<string>();
const { t } = useTranslation();
/**
* Handle scroll to highlight the current heading in the table of content
*/
useEffect(() => {
const handleScroll = () => {
if (!headings) {
@@ -69,159 +190,77 @@ export const TableContent = () => {
.getElementById(MAIN_LAYOUT_ID)
?.removeEventListener('scroll', scrollFn);
};
}, [headings, setHeadingIdHighlight]);
const onOpen = () => {
setIsHover(true);
setTimeout(() => {
const element = document.getElementById(`heading-${headingIdHighlight}`);
element?.scrollIntoView({
behavior: 'instant',
inline: 'center',
block: 'center',
});
}, 0); // 300ms is the transition time of the box
};
}, [headings]);
const onClose = () => {
setIsHover(false);
setIsOpen(false);
};
if (
!editor ||
!headings ||
headings.length === 0 ||
(headings.length === 1 && !headings[0].contentText)
) {
return null;
}
return (
<Box
as="nav"
id="summaryContainer"
$width={!isHover ? '40px' : '200px'}
$height={!isHover ? '40px' : 'auto'}
$maxHeight="calc(50vh - 60px)"
$zIndex={1000}
$align="center"
$padding={isHover ? 'xs' : '0'}
$justify="center"
$position="sticky"
aria-label={t('Summary')}
$width="100%"
$overflow="hidden"
$css={css`
top: var(--c--globals--spacings--0);
border: 1px solid ${colorsTokens['brand-100']};
overflow: hidden;
border-radius: ${spacingsTokens['3xs']};
background: ${colorsTokens['gray-000']};
${isHover &&
css`
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: flex-start;
gap: ${spacingsTokens['2xs']};
`}
user-select: none;
padding: ${spacingsTokens['4xs']};
`}
className="--docs--table-content"
>
{!isHover && (
<Box
$margin={{ bottom: spacingsTokens.xs }}
$direction="row"
$justify="space-between"
$align="center"
>
<Text $weight="500" $size="sm">
{t('Summary')}
</Text>
<BoxButton
onClick={onOpen}
$width="100%"
$height="100%"
onClick={onClose}
$justify="center"
$align="center"
aria-label={t('Summary')}
aria-expanded={isHover}
aria-expanded="true"
aria-controls="toc-list"
$css={css`
transition: none !important;
transform: rotate(180deg);
&:focus-visible {
outline: none;
box-shadow: 0 0 0 4px ${colorsTokens['brand-400']};
background: ${colorsTokens['brand-100']};
width: 90%;
height: 90%;
box-shadow: 0 0 0 2px ${colorsTokens['brand-400']};
border-radius: var(--c--globals--spacings--st);
}
`}
>
<Icon
$theme="brand"
$variation="tertiary"
iconName="list"
variant="symbols-outlined"
/>
<Icon iconName="menu_open" $theme="brand" $variation="tertiary" />
</BoxButton>
)}
{isHover && (
<Box
$width="100%"
$overflow="hidden"
$css={css`
user-select: none;
padding: ${spacingsTokens['4xs']};
`}
>
<Box
$margin={{ bottom: spacingsTokens.xs }}
$direction="row"
$justify="space-between"
$align="center"
>
<Text $weight="500" $size="sm">
{t('Summary')}
</Text>
<BoxButton
onClick={onClose}
$justify="center"
$align="center"
aria-label={t('Summary')}
aria-expanded={isHover}
aria-controls="toc-list"
$css={css`
transition: none !important;
transform: rotate(180deg);
&:focus-visible {
outline: none;
box-shadow: 0 0 0 2px ${colorsTokens['brand-400']};
border-radius: var(--c--globals--spacings--st);
}
`}
>
<Icon iconName="menu_open" $theme="brand" $variation="tertiary" />
</BoxButton>
</Box>
<Box
as="ul"
id="toc-list"
role="list"
$gap={spacingsTokens['3xs']}
$css={css`
overflow-y: auto;
list-style: none;
padding: ${spacingsTokens['3xs']};
margin: 0;
`}
>
{headings?.map(
(heading) =>
heading.contentText && (
<Box as="li" role="listitem" key={heading.id}>
<Heading
editor={editor}
headingId={heading.id}
level={heading.props.level}
text={heading.contentText}
isHighlight={headingIdHighlight === heading.id}
/>
</Box>
),
)}
</Box>
</Box>
)}
</Box>
<Box
as="ul"
id="toc-list"
role="list"
$gap={spacingsTokens['3xs']}
$css={css`
overflow-y: auto;
list-style: none;
padding: ${spacingsTokens['3xs']};
margin: 0;
`}
>
{headings?.map(
(heading) =>
heading.contentText && (
<Box as="li" role="listitem" key={heading.id}>
<Heading
editor={editor}
headingId={heading.id}
level={heading.props.level}
text={heading.contentText}
isHighlight={headingIdHighlight === heading.id}
/>
</Box>
),
)}
</Box>
</Box>
);
};

View File

@@ -121,7 +121,6 @@ export const DocSubPageItem = (props: TreeViewNodeProps<Doc>) => {
background-color: var(--c--globals--colors--gray-000);
.light-doc-item-actions {
display: ${menuOpen || !isDesktop ? 'flex' : 'none'};
position: absolute;
right: var(--c--globals--spacings--0);
}
.c__tree-view--node.isFocused {

View File

@@ -234,7 +234,7 @@ export const DocTree = ({ currentDoc }: DocTreeProps) => {
}
.doc-tree-root-item-actions {
display: flex;
display: ${rootActionsOpen ? 'flex' : 'none'};
opacity: ${rootActionsOpen ? '1' : '0'};
&:has(.isOpen) {
@@ -244,6 +244,7 @@ export const DocTree = ({ currentDoc }: DocTreeProps) => {
&:hover,
&:focus-visible {
.doc-tree-root-item-actions {
display: flex;
opacity: 1;
}
}

View File

@@ -33,12 +33,21 @@ interface IDocsDB extends DBSchema {
type TableName = 'doc-list' | 'doc-item' | 'doc-mutation';
/**
* IndexDB version must be a integer
* @returns
* IndexDB prefers incremental versioning when upgrading the database,
* otherwise it may throw an error, and we need to destroy the database
* and recreate it.
* To calculate the version number, we use the following formula,
* assuring incremental versioning:
* version = major * 1000000 + minor * 1000 + patch
* ex:
* - version 1.2.3 => 1002003
* - version 0.10.15 => 10015
* - version 2.0.0 => 2000000
* @returns number
*/
const getCurrentVersion = () => {
const [major, minor, patch] = pkg.version.split('.');
return parseFloat(`${major}${minor}${patch}`);
export const getCurrentVersion = () => {
const [major, minor, patch] = pkg.version.split('.').map(Number);
return major * 1000000 + minor * 1000 + patch;
};
/**

View File

@@ -0,0 +1,36 @@
import { afterEach, describe, expect, it, vi } from 'vitest';
vi.mock('@/../package.json', () => ({
default: { version: '0.0.0' },
}));
describe('DocsDB', () => {
afterEach(() => {
vi.clearAllMocks();
vi.resetModules();
});
let previousExpected = 0;
[
{ version: '0.0.1', expected: 1 },
{ version: '0.10.15', expected: 10015 },
{ version: '1.0.0', expected: 1000000 },
{ version: '2.105.3', expected: 2105003 },
{ version: '3.0.0', expected: 3000000 },
{ version: '10.20.30', expected: 10020030 },
].forEach(({ version, expected }) => {
it(`correctly computes version for ${version}`, () => {
vi.doMock('@/../package.json', () => ({
default: { version },
}));
return vi.importActual('../DocsDB').then((module: any) => {
const result = module.getCurrentVersion();
expect(result).toBe(expected);
expect(result).toBeGreaterThan(previousExpected);
previousExpected = result;
});
});
});
});

View File

@@ -328,14 +328,12 @@
"Document sections": "Linke Seitenleiste",
"Document title": "Titel des Dokuments",
"Document tree": "Dokumentenbaum",
"Document version viewer": "Dokumentenversion-Betrachter",
"Document visibility": "Sichtbarkeit",
"Documents grid": "Dokumentenübersicht",
"Docx": "Docx",
"Download": "Herunterladen",
"Download anyway": "Trotzdem herunterladen",
"Download your document in a .docx, .odt or .pdf format.": "Dokument als DOCX-, ODT- oder PDF-Datei exportieren.",
"Drag and drop status": "Drag and Drop Status",
"Duplicate": "Duplizieren",
"Edit document emoji": "Dokumenten-Symbol bearbeiten",
"Editing": "Bearbeiten",
@@ -412,7 +410,6 @@
"Open Source": "Open Source",
"Open document {{title}}": "Öffne Dokument: {{title}}",
"Open document: {{title}}": "Öffne Dokument: {{title}}",
"Open invitation actions menu": "Öffne Freigabemenü",
"Open root document": "Öffne Wurzel-Dokument",
"Open the document options": "Öffnen Sie die Dokumentoptionen",
"Open the header menu": "Öffne das Kopfzeilen-Menü",
@@ -742,6 +739,8 @@
"Cancel": "Annuler",
"Cancel the deletion": "Annuler la suppression",
"Cancel the download": "Annuler le téléchargement",
"Change role for {{email}}": "Changer le rôle pour {{email}}",
"Change role for {{name}}": "Changer le rôle pour {{name}}",
"Close the access request modal": "Fermer la fenêtre modale de demande d'accès",
"Close the delete modal": "Fermer la fenêtre modale de suppression",
"Close the download modal": "Fermer la fenêtre modale de téléchargement",
@@ -751,6 +750,7 @@
"Collaborate": "Collaborer",
"Collaborate and write in real time, without layout constraints.": "Collaborez et rédigez en temps réel, sans contrainte de mise en page.",
"Collaborative writing, Simplified.": "L'écriture collaborative simplifiée.",
"Comment": "Commentaire",
"Confirm": "Confirmez",
"Connected": "Connecté",
"Contains {{count}} sub-documents_many": "Contient {{count}} sous-documents",
@@ -789,14 +789,14 @@
"Document sections": "Sections du document",
"Document title": "Titre du document",
"Document tree": "Arborescence du document",
"Document version viewer": "Visionneuse de version du document",
"Document viewer": "Visualiseur de document",
"Document visibility": "Visibilité du document",
"Documents grid": "Grille des documents",
"Docx": "Docx",
"Download": "Télécharger",
"Download anyway": "Télécharger malgré tout",
"Download your document in a .docx, .odt or .pdf format.": "Téléchargez votre document au format .docx, .odt ou .pdf.",
"Drag and drop status": "État du glisser-déposer",
"Drag and drop status": "État du glisser-déposer",
"Duplicate": "Dupliquer",
"Edit document emoji": "Modifier l'émoticône du document",
"Editing": "Édition",
@@ -830,6 +830,11 @@
"Image: {{title}}": "Image : {{title}}",
"Insufficient access rights to view the document.": "Droits d'accès insuffisants pour voir le document.",
"Invite": "Inviter",
"Invite new members": "Inviter de nouveaux membres",
"Invite {{count}} members_many": "Inviter {{count}} membres",
"Invite {{count}} members_one": "Inviter {{count}} membres",
"Invite {{count}} members_other": "Inviter {{count}} membres",
"Invite {{name}}": "Inviter {{name}}",
"It is the card information about the document.": "Il s'agit de la carte d'information du document.",
"It is the document title": "Il s'agit du titre du document",
"It seems that the page you are looking for does not exist or cannot be displayed correctly.": "Il semble que la page que vous cherchez n'existe pas ou ne puisse pas être affichée correctement.",
@@ -873,7 +878,6 @@
"Open Source": "Open Source",
"Open document {{title}}": "Ouvrir le document {{title}}",
"Open document: {{title}}": "Ouvrir le document : {{title}}",
"Open invitation actions menu": "Menu des actions d'ouverture d'une invitation",
"Open root document": "Ouvrir le document racine",
"Open the document options": "Ouvrir les options du document",
"Open the header menu": "Ouvrir le menu d'en-tête",
@@ -899,6 +903,7 @@
"Reading": "Lecture seule",
"Remove access": "Supprimer l'accès",
"Remove emoji": "Supprimer les emojis",
"Remove {{name}} from the invite list": "Retirer {{name}} de la liste d'invitation",
"Rename": "Renommer",
"Rephrase": "Reformuler",
"Request access": "Demander l'accès",
@@ -980,7 +985,10 @@
"home-content-open-source-part1": "Docs est construit sur <2>Django Rest Framework</2> et <6>Next.js</6>. Nous utilisons également <9>Yjs</9> et <13>BlockNote.js</13>, deux projets que nous sommes fiers de sponsoriser.",
"home-content-open-source-part2": "Vous pouvez facilement auto-héberger Docs (consultez notre <2>documentation</2> d'installation).<br/>Docs utilise une <7>licence</7> (MIT) adaptée à l'innovation et aux entreprises.<br/>Les contributions sont les bienvenues (consultez notre feuille de route <13>ici</13>).",
"home-content-open-source-part3": "Docs est le résultat d'un effort conjoint mené par les gouvernements français 🇫🇷🥖 <1>(DINUM)</1> et allemand 🇩🇪🥨 <5>(ZenDiS)</5>.",
"pdf": "pdf"
"pdf": "pdf",
"{{action}}, current role: {{role}}": "{{action}}, rôle actuel : {{role}}",
"{{name}} added to invite list. Add more members or press Tab to select role and invite.": "{{name}} a été ajouté à la liste d'invitation. Ajoutez plus de membres ou appuyez sur Tab pour sélectionner le rôle et inviter.",
"{{name}} removed from invite list": "{{name}} a été retiré de la liste d'invitation"
}
},
"it": {
@@ -1175,6 +1183,7 @@
"Collaborate": "Samenwerken",
"Collaborate and write in real time, without layout constraints.": "Samenwerken en schrijven in realtime, zonder lay-outbeperkingen.",
"Collaborative writing, Simplified.": "Gezamenlijk schrijven, Vereenvoudigd.",
"Comment": "Reactie",
"Confirm": "Bevestigen",
"Connected": "Ingelogd",
"Contains {{count}} sub-documents_many": "Bevat {{count}} subdocumenten",
@@ -1213,14 +1222,12 @@
"Document sections": "Document secties",
"Document title": "Documenttitel",
"Document tree": "Boomstructuur document",
"Document version viewer": "Document versie viewer",
"Document visibility": "Document toegankelijkheid",
"Documents grid": "Documenten overzicht",
"Docx": "Docx",
"Download": "Download",
"Download anyway": "Download alsnog",
"Download your document in a .docx, .odt or .pdf format.": "Download uw document in een .docx, .odt of .pdf formaat.",
"Drag and drop status": "Drag & drop status",
"Duplicate": "Dupliceer",
"Edit document emoji": "Bewerk document emoji",
"Editing": "Bewerken",
@@ -1254,6 +1261,10 @@
"Image: {{title}}": "Afbeelding: {{title}}",
"Insufficient access rights to view the document.": "Onvoldoende toegangsrechten om het document te bekijken.",
"Invite": "Uitnodigen",
"Invite {{count}} members_many": "Nodig {{count}} leden uit",
"Invite {{count}} members_one": "Nodig {{count}} leden uit",
"Invite {{count}} members_other": "Nodig {{count}} leden uit",
"Invite {{name}}": "Nodig {{name}} uit",
"It is the card information about the document.": "Het is een informatie kaart over het document.",
"It is the document title": "Het is de titel van het document",
"It seems that the page you are looking for does not exist or cannot be displayed correctly.": "Het lijkt erop dat de pagina die u zoekt niet bestaat of niet correct kan worden weergegeven.",
@@ -1297,7 +1308,6 @@
"Open Source": "Open Source",
"Open document {{title}}": "Open document {{title}}",
"Open document: {{title}}": "Open document: {{title}}",
"Open invitation actions menu": "Open uitnodigingsactiemenu",
"Open root document": "Open hoofddocument",
"Open the document options": "Open document opties",
"Open the header menu": "Open het hoofdmenu",
@@ -1323,6 +1333,7 @@
"Reading": "Lezen",
"Remove access": "Toegang verwijderen",
"Remove emoji": "Emoji verwijderen",
"Remove {{name}} from the invite list": "Verwijder {{name}} uit de uitnodigingslijst",
"Rename": "Hernoem",
"Rephrase": "Herschrijf",
"Request access": "Toegang aanvragen",
@@ -1450,6 +1461,8 @@
"Cancel": "Отмена",
"Cancel the deletion": "Отменить удаление",
"Cancel the download": "Отменить загрузку",
"Change role for {{email}}": "Изменить роль для {{email}}",
"Change role for {{name}}": "Изменить роль для {{name}}",
"Close the access request modal": "Закрыть окно запроса доступа",
"Close the delete modal": "Закрыть окно удаления",
"Close the download modal": "Закрыть окно загрузки",
@@ -1459,6 +1472,7 @@
"Collaborate": "Совместный доступ",
"Collaborate and write in real time, without layout constraints.": "Совместная работа и сохранение в реальном времени, без ограничений.",
"Collaborative writing, Simplified.": "Простой совместный доступ к документам.",
"Comment": "Комментарий",
"Confirm": "Подтвердить",
"Connected": "Подключённая",
"Contains {{count}} sub-documents_many": "Содержит {{count}} вложенных документов",
@@ -1497,14 +1511,14 @@
"Document sections": "Разделы документа",
"Document title": "Заголовок документа",
"Document tree": "Иерархия документа",
"Document version viewer": "Просмотрщик версий документа",
"Document viewer": "Просмотрщик документа",
"Document visibility": "Видимость документа",
"Documents grid": "Сетка документов",
"Docx": "Docx",
"Download": "Загрузить",
"Download anyway": "Всё равно загрузить",
"Download your document in a .docx, .odt or .pdf format.": "Загрузить документ в формате .docx, .odt или .pdf.",
"Drag and drop status": "Состояние перетаскивания",
"Drag and drop status": "Состояние перетаскивания",
"Duplicate": "Дублировать",
"Edit document emoji": "Изменить документ emoji",
"Editing": "Редактирование",
@@ -1538,6 +1552,11 @@
"Image: {{title}}": "Изображение: {{title}}",
"Insufficient access rights to view the document.": "Недостаточно прав доступа для просмотра документа.",
"Invite": "Приглашение",
"Invite new members": "Пригласить новых участников",
"Invite {{count}} members_many": "Пригласить {{count}} участников",
"Invite {{count}} members_one": "Пригласить {{count}} участников",
"Invite {{count}} members_other": "Пригласить {{count}} участников",
"Invite {{name}}": "Пригласить {{name}}",
"It is the card information about the document.": "Это информационная карта документа.",
"It is the document title": "Это заголовок документа",
"It seems that the page you are looking for does not exist or cannot be displayed correctly.": "Похоже, страница, которую вы ищете, не существует или не может быть правильно отображена.",
@@ -1581,7 +1600,6 @@
"Open Source": "Open Source",
"Open document {{title}}": "Открыть документ {{title}}",
"Open document: {{title}}": "Открыть документ: {{title}}",
"Open invitation actions menu": "Меню действий открытия приглашения",
"Open root document": "Открыть корневой документ",
"Open the document options": "Открыть параметры документа",
"Open the header menu": "Открыть меню заголовка",
@@ -1607,6 +1625,7 @@
"Reading": "Чтение",
"Remove access": "Отменить доступ",
"Remove emoji": "Убрать эмодзи",
"Remove {{name}} from the invite list": "Удалить {{name}} из списка приглашений",
"Rename": "Переименовать",
"Rephrase": "Переформулировать",
"Request access": "Запрос доступа",
@@ -1685,10 +1704,13 @@
"document": "документ",
"embed": "вложение",
"file": "файл",
"home-content-open-source-part1": "текст ещё не готов",
"home-content-open-source-part2": "текст ещё не готов",
"home-content-open-source-part3": "текст ещё не готов",
"pdf": "pdf"
"home-content-open-source-part1": "Docs создаётся на основе <2>Django Rest Framework</2> и <6>Next.js</6>. Мы также используем <9>Yjs</9> и <13>BlockNote.js</13> — два проекта, которые мы с гордостью спонсируем.",
"home-content-open-source-part2": "Вы можете легко разместить Docs у себя (см. нашу <2>документацию по установке</2>).<br/>Docs использует <7>лицензию</7> (MIT), подходящую для инноваций и бизнеса.<br/>Мы приветствуем ваши вклады (см. наш план разработки <13>здесь</13>).",
"home-content-open-source-part3": "Docs — это результат совместных усилий правительств Франции 🇫🇷🥖 <1>(DINUM)</1> и Германии 🇩🇪🥨 <5>(ZenDiS)</5>.",
"pdf": "pdf",
"{{action}}, current role: {{role}}": "{{action}}, текущая роль: {{role}}",
"{{name}} added to invite list. Add more members or press Tab to select role and invite.": "{{name}} добавлен(а) в список приглашённых. Добавьте других участников или нажмите Tab, чтобы выбрать роль и пригласить.",
"{{name}} removed from invite list": "{{name}} удален(а) из списка приглашений"
}
},
"sl": {
@@ -1837,6 +1859,8 @@
"Cancel": "Скасувати",
"Cancel the deletion": "Скасувати видалення",
"Cancel the download": "Скасувати завантаження",
"Change role for {{email}}": "Змінити роль для {{email}}",
"Change role for {{name}}": "Змінити роль для {{name}}",
"Close the access request modal": "Закрити вікно запиту доступу",
"Close the delete modal": "Закрити вікно видалення",
"Close the download modal": "Закрити вікно завантаження",
@@ -1846,6 +1870,7 @@
"Collaborate": "Спільна робота",
"Collaborate and write in real time, without layout constraints.": "Сумісна робота і збереження результатів у реальному часі, без обмеження макета.",
"Collaborative writing, Simplified.": "Простий спільний доступ до документів.",
"Comment": "Коментар",
"Confirm": "Підтвердити",
"Connected": "Під'єднане",
"Contains {{count}} sub-documents_many": "Містить {{count}} вкладених документів",
@@ -1884,14 +1909,14 @@
"Document sections": "Розділи документу",
"Document title": "Назва документа",
"Document tree": "Дерево документа",
"Document version viewer": "Переглядач версії документа",
"Document viewer": "Переглядач документа",
"Document visibility": "Видимість документа",
"Documents grid": "Сітка документів",
"Docx": "Docx",
"Download": "Завантажити",
"Download anyway": "Все одно завантажити",
"Download your document in a .docx, .odt or .pdf format.": "Завантажити документ у форматі .docx, .odt або .pdf.",
"Drag and drop status": "Стан перетягування",
"Drag and drop status": "Стан перетягування",
"Duplicate": "Дублювати",
"Edit document emoji": "Редагувати документ емодзі",
"Editing": "Редагування",
@@ -1925,6 +1950,11 @@
"Image: {{title}}": "Зображення: {{title}}",
"Insufficient access rights to view the document.": "Недостатньо прав для перегляду документа.",
"Invite": "Запрошення",
"Invite new members": "Запросити нових учасників",
"Invite {{count}} members_many": "Запросити {{count}} учасників",
"Invite {{count}} members_one": "Запросити {{count}} учасників",
"Invite {{count}} members_other": "Запросити {{count}} учасників",
"Invite {{name}}": "Запросити {{name}}",
"It is the card information about the document.": "Це інформаційна картка документу.",
"It is the document title": "Це заголовок документа",
"It seems that the page you are looking for does not exist or cannot be displayed correctly.": "Схоже, що сторінка, яку ви шукаєте, не існує або не може бути показаною правильно.",
@@ -1968,7 +1998,6 @@
"Open Source": "Open Source",
"Open document {{title}}": "Відкрити документ {{title}}",
"Open document: {{title}}": "Відкрити документ: {{title}}",
"Open invitation actions menu": "Меню дій відкриття запрошення",
"Open root document": "Відкрити кореневий документ",
"Open the document options": "Відкрити параметри документа",
"Open the header menu": "Відкрити меню заголовка",
@@ -1994,6 +2023,7 @@
"Reading": "Читання",
"Remove access": "Вилучити доступ",
"Remove emoji": "Прибрати емодзі",
"Remove {{name}} from the invite list": "Видалити {{name}} зі списку запрошень",
"Rename": "Перейменувати",
"Rephrase": "Перефразувати",
"Request access": "Запит доступу",
@@ -2072,10 +2102,13 @@
"document": "документ",
"embed": "вкладення",
"file": "файл",
"home-content-open-source-part1": "текст ще не готовий",
"home-content-open-source-part2": "текст ще не готовий",
"home-content-open-source-part3": "текст ще не готовий",
"pdf": "pdf"
"home-content-open-source-part1": "Docs створюється на основі <2>Django Rest Framework</2> і <6>Next.js</6>. Ми також використовуємо <9>Yjs</9> і <13>BlockNote.js</13>, два проекти, які ми з гордістю спонсоруємо.",
"home-content-open-source-part2": "Ви можете легко самостійно розмістити Docs (див. нашу <2>документацію з встановлення</2>).<br/>Docs використовує <7>ліцензію</7> (MIT), що підходить для інновацій та бізнесу.<br/>Внески вітаються (див. наш план розробки <13>тут</13>).",
"home-content-open-source-part3": "Docs є результатом спільних зусиль, очолюваних урядами Франції 🇫🇷🥖 <1>(DINUM)</1> та Німеччини 🇩🇪🥨 <5>(ZenDiS)</5>.",
"pdf": "pdf",
"{{action}}, current role: {{role}}": "{{action}}, поточна роль: {{role}}",
"{{name}} added to invite list. Add more members or press Tab to select role and invite.": "{{name}} додано до списку запрошень. Додайте більше учасників або натисніть Tab, щоб вибрати роль та надіслати запрошення.",
"{{name}} removed from invite list": "{{name}} видалено зі списку запрошень"
}
},
"zh": {

View File

@@ -0,0 +1,114 @@
import { captureException } from '@sentry/nextjs';
import Head from 'next/head';
import { useSearchParams } from 'next/navigation';
import { useRouter } from 'next/router';
import { ReactElement, useCallback, useEffect } from 'react';
import { Loading } from '@/components';
import { LOGIN_URL, setAuthUrl, useAuth } from '@/features/auth';
import {
LinkReach,
LinkRole,
useCreateDoc,
} from '@/features/docs/doc-management';
import { useUpdateDocLink } from '@/features/docs/doc-share/api/useUpdateDocLink';
import { useSkeletonStore } from '@/features/skeletons';
import { MainLayout } from '@/layouts';
import { NextPageWithLayout } from '@/types/next';
const Page: NextPageWithLayout = () => {
const { setIsSkeletonVisible } = useSkeletonStore();
const router = useRouter();
const searchParams = useSearchParams();
const linkReach = searchParams.get('link-reach');
const linkRole = searchParams.get('link-role');
const title = searchParams.get('title');
const { authenticated } = useAuth();
const { mutateAsync: createDocAsync, data: doc } = useCreateDoc();
const { mutateAsync: updateDocLinkAsync } = useUpdateDocLink();
const redirectToDoc = useCallback(
(docId: string) => {
void router.push(`/docs/${docId}`);
},
[router],
);
useEffect(() => {
setIsSkeletonVisible(true);
}, [setIsSkeletonVisible]);
useEffect(() => {
if (doc) {
return;
}
if (!authenticated) {
setAuthUrl();
window.location.replace(LOGIN_URL);
return;
}
createDocAsync({
title: title || undefined,
})
.then((createdDoc) => {
if ((linkReach && linkRole) || linkReach) {
updateDocLinkAsync({
id: createdDoc.id,
link_reach: linkReach as LinkReach,
link_role: (linkRole as LinkRole | undefined) || undefined,
})
.catch((error) => {
captureException(error, {
extra: {
docId: createdDoc.id,
linkReach,
linkRole,
},
});
})
.finally(() => {
redirectToDoc(createdDoc.id);
});
return;
}
redirectToDoc(createdDoc.id);
})
.catch((error) => {
captureException(error, {
extra: {
title,
},
});
});
}, [
authenticated,
createDocAsync,
doc,
linkReach,
linkRole,
redirectToDoc,
title,
updateDocLinkAsync,
]);
return <Loading />;
};
Page.getLayout = function getLayout(page: ReactElement) {
return (
<>
<Head>
<meta name="robots" content="noindex" />
</Head>
<MainLayout enableResizablePanel={false}>{page}</MainLayout>
</>
);
};
export default Page;

View File

@@ -1,6 +1,6 @@
{
"name": "impress",
"version": "3.10.0",
"version": "4.0.0",
"private": true,
"repository": "https://github.com/suitenumerique/docs",
"author": "DINUM",
@@ -35,14 +35,8 @@
"@types/node": "24.10.1",
"@types/react": "19.2.6",
"@types/react-dom": "19.2.3",
"@typescript-eslint/eslint-plugin": "8.47.0",
"@typescript-eslint/parser": "8.47.0",
"docx": "9.5.0",
"eslint": "9.39.1",
"prosemirror-state": "1.4.4",
"prosemirror-view": "1.41.3",
"prosemirror-model": "1.25.4",
"prosemirror-transform": "1.10.5",
"react": "19.2.0",
"react-dom": "19.2.0",
"typescript": "5.9.3",

View File

@@ -1,6 +1,6 @@
{
"name": "eslint-plugin-docs",
"version": "3.10.0",
"version": "4.0.0",
"repository": "https://github.com/suitenumerique/docs",
"author": "DINUM",
"license": "MIT",
@@ -19,8 +19,8 @@
"dependencies": {
"@next/eslint-plugin-next": "16.0.3",
"@tanstack/eslint-plugin-query": "5.91.2",
"@typescript-eslint/eslint-plugin": "*",
"@typescript-eslint/parser": "*",
"@typescript-eslint/eslint-plugin": "8.47.0",
"@typescript-eslint/parser": "8.47.0",
"@vitest/eslint-plugin": "1.4.3",
"eslint-config-next": "16.0.3",
"eslint-config-prettier": "10.1.8",

View File

@@ -1,6 +1,6 @@
{
"name": "packages-i18n",
"version": "3.10.0",
"version": "4.0.0",
"repository": "https://github.com/suitenumerique/docs",
"author": "DINUM",
"license": "MIT",

View File

@@ -1,6 +1,6 @@
{
"name": "server-y-provider",
"version": "3.10.0",
"version": "4.0.0",
"description": "Y.js provider for docs",
"repository": "https://github.com/suitenumerique/docs",
"license": "MIT",

View File

@@ -2530,10 +2530,10 @@
"@emnapi/runtime" "^1.4.3"
"@tybys/wasm-util" "^0.10.0"
"@next/env@16.0.3":
version "16.0.3"
resolved "https://registry.yarnpkg.com/@next/env/-/env-16.0.3.tgz#bda60d79929d4b8f554928854eadd7467e77ca4d"
integrity sha512-IqgtY5Vwsm14mm/nmQaRMmywCU+yyMIYfk3/MHZ2ZTJvwVbBn3usZnjMi1GacrMVzVcAxJShTCpZlPs26EdEjQ==
"@next/env@15.5.4":
version "15.5.4"
resolved "https://registry.yarnpkg.com/@next/env/-/env-15.5.4.tgz#1d4aa6b238662d9cd95aea356b149b6f73061f95"
integrity sha512-27SQhYp5QryzIT5uO8hq99C69eLQ7qkzkDPsk3N+GuS2XgOgoYEeOav7Pf8Tn4drECOVDsDg8oj+/DVy8qQL2A==
"@next/eslint-plugin-next@16.0.3":
version "16.0.3"
@@ -2542,45 +2542,45 @@
dependencies:
fast-glob "3.3.1"
"@next/swc-darwin-arm64@16.0.3":
version "16.0.3"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.0.3.tgz#262b2d091d7bef43f1fbdb636d23e23628a76727"
integrity sha512-MOnbd92+OByu0p6QBAzq1ahVWzF6nyfiH07dQDez4/Nku7G249NjxDVyEfVhz8WkLiOEU+KFVnqtgcsfP2nLXg==
"@next/swc-darwin-arm64@15.5.4":
version "15.5.4"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.4.tgz#80cba1bec831d4b01fd03cbc48dfb7050775e5ee"
integrity sha512-nopqz+Ov6uvorej8ndRX6HlxCYWCO3AHLfKK2TYvxoSB2scETOcfm/HSS3piPqc3A+MUgyHoqE6je4wnkjfrOA==
"@next/swc-darwin-x64@16.0.3":
version "16.0.3"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-16.0.3.tgz#3fe4fce190c99c0e11cf6306ed2951466abcbd7d"
integrity sha512-i70C4O1VmbTivYdRlk+5lj9xRc2BlK3oUikt3yJeHT1unL4LsNtN7UiOhVanFdc7vDAgZn1tV/9mQwMkWOJvHg==
"@next/swc-darwin-x64@15.5.4":
version "15.5.4"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.4.tgz#d5408b19298f40da2b3dc9c2f9d1063ad98bd626"
integrity sha512-QOTCFq8b09ghfjRJKfb68kU9k2K+2wsC4A67psOiMn849K9ZXgCSRQr0oVHfmKnoqCbEmQWG1f2h1T2vtJJ9mA==
"@next/swc-linux-arm64-gnu@16.0.3":
version "16.0.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.0.3.tgz#d58d8db100ae4210ac88a431d85926f00523a490"
integrity sha512-O88gCZ95sScwD00mn/AtalyCoykhhlokxH/wi1huFK+rmiP5LAYVs/i2ruk7xST6SuXN4NI5y4Xf5vepb2jf6A==
"@next/swc-linux-arm64-gnu@15.5.4":
version "15.5.4"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.4.tgz#3b6b389bb4a1c9728a14afbbd59d2366ccd80b55"
integrity sha512-eRD5zkts6jS3VfE/J0Kt1VxdFqTnMc3QgO5lFE5GKN3KDI/uUpSyK3CjQHmfEkYR4wCOl0R0XrsjpxfWEA++XA==
"@next/swc-linux-arm64-musl@16.0.3":
version "16.0.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.0.3.tgz#9654ee5da32f0d29f1f9f9ad56924f30d3225449"
integrity sha512-CEErFt78S/zYXzFIiv18iQCbRbLgBluS8z1TNDQoyPi8/Jr5qhR3e8XHAIxVxPBjDbEMITprqELVc5KTfFj0gg==
"@next/swc-linux-arm64-musl@15.5.4":
version "15.5.4"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.4.tgz#956127ecdfd56cda535af4651eed72a3b7270971"
integrity sha512-TOK7iTxmXFc45UrtKqWdZ1shfxuL4tnVAOuuJK4S88rX3oyVV4ZkLjtMT85wQkfBrOOvU55aLty+MV8xmcJR8A==
"@next/swc-linux-x64-gnu@16.0.3":
version "16.0.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.0.3.tgz#3cea2178b1c5d859701628b595622c117807f201"
integrity sha512-Tc3i+nwt6mQ+Dwzcri/WNDj56iWdycGVh5YwwklleClzPzz7UpfaMw1ci7bLl6GRYMXhWDBfe707EXNjKtiswQ==
"@next/swc-linux-x64-gnu@15.5.4":
version "15.5.4"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.4.tgz#9386de65e86c0b34ef19e14f0ffbd4328a08d5e6"
integrity sha512-7HKolaj+481FSW/5lL0BcTkA4Ueam9SPYWyN/ib/WGAFZf0DGAN8frNpNZYFHtM4ZstrHZS3LY3vrwlIQfsiMA==
"@next/swc-linux-x64-musl@16.0.3":
version "16.0.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.0.3.tgz#0e688deb07e25f2bf85ad4e712c2829f32ea1556"
integrity sha512-zTh03Z/5PBBPdTurgEtr6nY0vI9KR9Ifp/jZCcHlODzwVOEKcKRBtQIGrkc7izFgOMuXDEJBmirwpGqdM/ZixA==
"@next/swc-linux-x64-musl@15.5.4":
version "15.5.4"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.4.tgz#c9094e5479b58c89d35b465f165b69be68de5a75"
integrity sha512-nlQQ6nfgN0nCO/KuyEUwwOdwQIGjOs4WNMjEUtpIQJPR2NUfmGpW2wkJln1d4nJ7oUzd1g4GivH5GoEPBgfsdw==
"@next/swc-win32-arm64-msvc@16.0.3":
version "16.0.3"
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.0.3.tgz#805e4f7dff4169e756c585c98924e7d73a325818"
integrity sha512-Jc1EHxtZovcJcg5zU43X3tuqzl/sS+CmLgjRP28ZT4vk869Ncm2NoF8qSTaL99gh6uOzgM99Shct06pSO6kA6g==
"@next/swc-win32-arm64-msvc@15.5.4":
version "15.5.4"
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.4.tgz#e83ca6b5ce9499bde5a4f3351cf74dc9e92cc83e"
integrity sha512-PcR2bN7FlM32XM6eumklmyWLLbu2vs+D7nJX8OAIoWy69Kef8mfiN4e8TUv2KohprwifdpFKPzIP1njuCjD0YA==
"@next/swc-win32-x64-msvc@16.0.3":
version "16.0.3"
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.0.3.tgz#e77575eef8e243b31ae12303086aeab16abccbc0"
integrity sha512-N7EJ6zbxgIYpI/sWNzpVKRMbfEGgsWuOIvzkML7wxAAZhPk1Msxuo/JDu1PKjWGrAoOLaZcIX5s+/pF5LIbBBg==
"@next/swc-win32-x64-msvc@15.5.4":
version "15.5.4"
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.4.tgz#5b5baf1bcb0ecba70d1768a0c8be59dfdcb2f111"
integrity sha512-1ur2tSHZj8Px/KMAthmuI9FMp/YFusMMGoRNJaRZMOlSkgvLjzosSdQI0cJAKogdHl3qXUQKL9MGaYvKwA7DXg==
"@noble/hashes@^2.0.1":
version "2.0.1"
@@ -6297,7 +6297,7 @@
dependencies:
"@types/yargs-parser" "*"
"@typescript-eslint/eslint-plugin@*", "@typescript-eslint/eslint-plugin@8.47.0", "@typescript-eslint/eslint-plugin@8.48.0":
"@typescript-eslint/eslint-plugin@8.47.0":
version "8.47.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.47.0.tgz#c53edeec13a79483f4ca79c298d5231b02e9dc17"
integrity sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==
@@ -6312,7 +6312,22 @@
natural-compare "^1.4.0"
ts-api-utils "^2.1.0"
"@typescript-eslint/parser@*", "@typescript-eslint/parser@8.47.0", "@typescript-eslint/parser@8.48.0":
"@typescript-eslint/eslint-plugin@8.48.0":
version "8.48.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.48.0.tgz#cdc9bdbe947713f658eb6109eeeea5d746824cf4"
integrity sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==
dependencies:
"@eslint-community/regexpp" "^4.10.0"
"@typescript-eslint/scope-manager" "8.48.0"
"@typescript-eslint/type-utils" "8.48.0"
"@typescript-eslint/utils" "8.48.0"
"@typescript-eslint/visitor-keys" "8.48.0"
graphemer "^1.4.0"
ignore "^7.0.0"
natural-compare "^1.4.0"
ts-api-utils "^2.1.0"
"@typescript-eslint/parser@8.47.0":
version "8.47.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.47.0.tgz#51b14ab2be2057ec0f57073b9ff3a9c078b0a964"
integrity sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==
@@ -6323,6 +6338,17 @@
"@typescript-eslint/visitor-keys" "8.47.0"
debug "^4.3.4"
"@typescript-eslint/parser@8.48.0":
version "8.48.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.48.0.tgz#fc39ea9b1c8b2414c1f4b625277629e12a940e6b"
integrity sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==
dependencies:
"@typescript-eslint/scope-manager" "8.48.0"
"@typescript-eslint/types" "8.48.0"
"@typescript-eslint/typescript-estree" "8.48.0"
"@typescript-eslint/visitor-keys" "8.48.0"
debug "^4.3.4"
"@typescript-eslint/project-service@8.46.2":
version "8.46.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.46.2.tgz#ab2f02a0de4da6a7eeb885af5e059be57819d608"
@@ -6400,6 +6426,17 @@
debug "^4.3.4"
ts-api-utils "^2.1.0"
"@typescript-eslint/type-utils@8.48.0":
version "8.48.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.48.0.tgz#eb4e0e60e545b448112f291b6652eeddb16db83f"
integrity sha512-zbeVaVqeXhhab6QNEKfK96Xyc7UQuoFWERhEnj3mLVnUWrQnv15cJNseUni7f3g557gm0e46LZ6IJ4NJVOgOpw==
dependencies:
"@typescript-eslint/types" "8.48.0"
"@typescript-eslint/typescript-estree" "8.48.0"
"@typescript-eslint/utils" "8.48.0"
debug "^4.3.4"
ts-api-utils "^2.1.0"
"@typescript-eslint/types@8.46.2", "@typescript-eslint/types@^8.46.2":
version "8.46.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.46.2.tgz#2bad7348511b31e6e42579820e62b73145635763"
@@ -7330,19 +7367,19 @@ bluebird@^3.4.1:
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
body-parser@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-2.2.0.tgz#f7a9656de305249a715b549b7b8fd1ab9dfddcfa"
integrity sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==
version "2.2.1"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-2.2.1.tgz#6df606b0eb0a6e3f783dde91dde182c24c82438c"
integrity sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==
dependencies:
bytes "^3.1.2"
content-type "^1.0.5"
debug "^4.4.0"
debug "^4.4.3"
http-errors "^2.0.0"
iconv-lite "^0.6.3"
iconv-lite "^0.7.0"
on-finished "^2.4.1"
qs "^6.14.0"
raw-body "^3.0.0"
type-is "^2.0.0"
raw-body "^3.0.1"
type-is "^2.0.1"
boolbase@^1.0.0:
version "1.0.0"
@@ -7455,7 +7492,7 @@ buffer@^6.0.3:
base64-js "^1.3.1"
ieee754 "^1.2.1"
bytes@3.1.2, bytes@^3.1.2:
bytes@^3.1.2, bytes@~3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
@@ -8175,7 +8212,7 @@ delayed-stream@~1.0.0:
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
depd@2.0.0, depd@^2.0.0:
depd@2.0.0, depd@^2.0.0, depd@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
@@ -9981,7 +10018,7 @@ htmlparser2@^10.0.0:
domutils "^3.2.1"
entities "^6.0.0"
http-errors@2.0.0, http-errors@^2.0.0:
http-errors@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
@@ -9992,6 +10029,17 @@ http-errors@2.0.0, http-errors@^2.0.0:
statuses "2.0.1"
toidentifier "1.0.1"
http-errors@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b"
integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==
dependencies:
depd "~2.0.0"
inherits "~2.0.4"
setprototypeof "~1.2.0"
statuses "~2.0.2"
toidentifier "~1.0.1"
http-proxy-agent@^7.0.2:
version "7.0.2"
resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e"
@@ -10077,7 +10125,7 @@ iconv-lite@0.6.3, iconv-lite@^0.6.3:
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
iconv-lite@0.7.0:
iconv-lite@^0.7.0, iconv-lite@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.7.0.tgz#c50cd80e6746ca8115eb98743afa81aa0e147a3e"
integrity sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==
@@ -10178,7 +10226,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -10966,17 +11014,17 @@ jest@30.2.0:
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
js-yaml@^3.13.1:
version "3.14.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
version "3.14.2"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.2.tgz#77485ce1dd7f33c061fd1b16ecea23b55fcb04b0"
integrity sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
js-yaml@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
version "4.1.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b"
integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==
dependencies:
argparse "^2.0.1"
@@ -12032,26 +12080,26 @@ neo-async@^2.6.2:
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
next@16.0.3:
version "16.0.3"
resolved "https://registry.yarnpkg.com/next/-/next-16.0.3.tgz#f05d651805524320b9d6a644de87230779fa56bb"
integrity sha512-Ka0/iNBblPFcIubTA1Jjh6gvwqfjrGq1Y2MTI5lbjeLIAfmC+p5bQmojpRZqgHHVu5cG4+qdIiwXiBSm/8lZ3w==
next@15.5.4:
version "15.5.4"
resolved "https://registry.yarnpkg.com/next/-/next-15.5.4.tgz#e7412c805c0b686ceaf294de703b7c9be59a4081"
integrity sha512-xH4Yjhb82sFYQfY3vbkJfgSDgXvBB6a8xPs9i35k6oZJRoQRihZH+4s9Yo2qsWpzBmZ3lPXaJ2KPXLfkvW4LnA==
dependencies:
"@next/env" "16.0.3"
"@next/env" "15.5.4"
"@swc/helpers" "0.5.15"
caniuse-lite "^1.0.30001579"
postcss "8.4.31"
styled-jsx "5.1.6"
optionalDependencies:
"@next/swc-darwin-arm64" "16.0.3"
"@next/swc-darwin-x64" "16.0.3"
"@next/swc-linux-arm64-gnu" "16.0.3"
"@next/swc-linux-arm64-musl" "16.0.3"
"@next/swc-linux-x64-gnu" "16.0.3"
"@next/swc-linux-x64-musl" "16.0.3"
"@next/swc-win32-arm64-msvc" "16.0.3"
"@next/swc-win32-x64-msvc" "16.0.3"
sharp "^0.34.4"
"@next/swc-darwin-arm64" "15.5.4"
"@next/swc-darwin-x64" "15.5.4"
"@next/swc-linux-arm64-gnu" "15.5.4"
"@next/swc-linux-arm64-musl" "15.5.4"
"@next/swc-linux-x64-gnu" "15.5.4"
"@next/swc-linux-x64-musl" "15.5.4"
"@next/swc-win32-arm64-msvc" "15.5.4"
"@next/swc-win32-x64-msvc" "15.5.4"
sharp "^0.34.3"
no-case@^3.0.4:
version "3.0.4"
@@ -12766,7 +12814,7 @@ prosemirror-menu@^1.2.4:
prosemirror-history "^1.0.0"
prosemirror-state "^1.0.0"
prosemirror-model@1.25.4, prosemirror-model@^1.0.0, prosemirror-model@^1.20.0, prosemirror-model@^1.21.0, prosemirror-model@^1.24.1, prosemirror-model@^1.25.0, prosemirror-model@^1.25.4:
prosemirror-model@^1.0.0, prosemirror-model@^1.20.0, prosemirror-model@^1.21.0, prosemirror-model@^1.24.1, prosemirror-model@^1.25.0, prosemirror-model@^1.25.4:
version "1.25.4"
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.25.4.tgz#8ebfbe29ecbee9e5e2e4048c4fe8e363fcd56e7c"
integrity sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==
@@ -12789,7 +12837,7 @@ prosemirror-schema-list@^1.5.0:
prosemirror-state "^1.0.0"
prosemirror-transform "^1.7.3"
prosemirror-state@1.4.4, prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.4.3, prosemirror-state@^1.4.4:
prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.4.3, prosemirror-state@^1.4.4:
version "1.4.4"
resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.4.4.tgz#72b5e926f9e92dcee12b62a05fcc8a2de3bf5b39"
integrity sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==
@@ -12817,14 +12865,14 @@ prosemirror-trailing-node@^3.0.0:
"@remirror/core-constants" "3.0.0"
escape-string-regexp "^4.0.0"
prosemirror-transform@1.10.5, prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.10.2, prosemirror-transform@^1.10.3, prosemirror-transform@^1.10.5, prosemirror-transform@^1.7.3:
prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.10.2, prosemirror-transform@^1.10.3, prosemirror-transform@^1.10.5, prosemirror-transform@^1.7.3:
version "1.10.5"
resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.10.5.tgz#4cf9fe5dcbdbfebd62499f24386e7cec9bc9979b"
integrity sha512-RPDQCxIDhIBb1o36xxwsaeAvivO8VLJcgBtzmOwQ64bMtsVFh5SSuJ6dWSxO1UsHTiTXPCgQm3PDJt7p6IOLbw==
dependencies:
prosemirror-model "^1.21.0"
prosemirror-view@1.41.3, prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.27.0, prosemirror-view@^1.31.0, prosemirror-view@^1.38.1, prosemirror-view@^1.39.1, prosemirror-view@^1.41.3:
prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.27.0, prosemirror-view@^1.31.0, prosemirror-view@^1.38.1, prosemirror-view@^1.39.1, prosemirror-view@^1.41.3:
version "1.41.3"
resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.41.3.tgz#753a37ebe172a3e313ad2c3d85496f9ed1b2c256"
integrity sha512-SqMiYMUQNNBP9kfPhLO8WXEk/fon47vc52FQsUiJzTBuyjKgEcoAwMyF04eQ4WZ2ArMn7+ReypYL60aKngbACQ==
@@ -12930,15 +12978,15 @@ range-parser@^1.2.1:
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
raw-body@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-3.0.1.tgz#ced5cd79a77bbb0496d707f2a0f9e1ae3aecdcb1"
integrity sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==
raw-body@^3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-3.0.2.tgz#3e3ada5ae5568f9095d84376fd3a49b8fb000a51"
integrity sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==
dependencies:
bytes "3.1.2"
http-errors "2.0.0"
iconv-lite "0.7.0"
unpipe "1.0.0"
bytes "~3.1.2"
http-errors "~2.0.1"
iconv-lite "~0.7.0"
unpipe "~1.0.0"
react-arborist@3.4.3:
version "3.4.3"
@@ -13928,7 +13976,7 @@ setimmediate@^1.0.5:
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
setprototypeof@1.2.0:
setprototypeof@1.2.0, setprototypeof@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
@@ -13938,7 +13986,7 @@ shallowequal@1.1.0:
resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
sharp@^0.34.4:
sharp@^0.34.3:
version "0.34.5"
resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.34.5.tgz#b6f148e4b8c61f1797bde11a9d1cfebbae2c57b0"
integrity sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==
@@ -14189,7 +14237,7 @@ statuses@2.0.1:
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
statuses@^2.0.1:
statuses@^2.0.1, statuses@~2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382"
integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==
@@ -14780,7 +14828,7 @@ to-through@^3.0.0:
dependencies:
streamx "^2.12.5"
toidentifier@1.0.1:
toidentifier@1.0.1, toidentifier@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
@@ -14959,7 +15007,7 @@ type-fest@^4.41.0:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58"
integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==
type-is@^2.0.0, type-is@^2.0.1:
type-is@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-2.0.1.tgz#64f6cf03f92fce4015c2b224793f6bdd4b068c97"
integrity sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==
@@ -15186,7 +15234,7 @@ universalify@^2.0.0:
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
unpipe@1.0.0:
unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==

View File

@@ -1,10 +1,10 @@
environments:
dev:
values:
- version: 3.10.0
- version: 4.0.0
feature:
values:
- version: 3.10.0
- version: 4.0.0
feature: ci
domain: example.com
imageTag: demo

View File

@@ -1,5 +1,5 @@
apiVersion: v2
type: application
name: docs
version: 3.10.0
version: 4.0.0
appVersion: latest

View File

@@ -1,6 +1,6 @@
{
"name": "mail_mjml",
"version": "3.10.0",
"version": "4.0.0",
"description": "An util to generate html and text django's templates from mjml templates",
"type": "module",
"dependencies": {

View File

@@ -398,9 +398,9 @@ glob-parent@~5.1.2:
is-glob "^4.0.1"
glob@^10.3.10, glob@^10.3.3:
version "10.4.5"
resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956"
integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
version "10.5.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-10.5.0.tgz#8ec0355919cd3338c28428a23d4f24ecc5fe738c"
integrity sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==
dependencies:
foreground-child "^3.1.0"
jackspeak "^3.1.2"