Compare commits

...

31 commits
v8.17 ... main

Author SHA1 Message Date
Lauri Ojansivu
614cb44b55 Updated translations.
Some checks are pending
Docker / build (push) Waiting to run
Docker Image CI / build (push) Waiting to run
Release Charts / release (push) Waiting to run
Test suite / Meteor tests (push) Waiting to run
Test suite / Coverage report (push) Blocked by required conditions
2025-12-16 21:56:51 +02:00
Lauri Ojansivu
0ce8e8b74d
Merge pull request #6043 from wekan/dependabot/github_actions/actions/cache-5
Some checks are pending
Docker / build (push) Waiting to run
Docker Image CI / build (push) Waiting to run
Release Charts / release (push) Waiting to run
Test suite / Meteor tests (push) Waiting to run
Test suite / Coverage report (push) Blocked by required conditions
Bump actions/cache from 4 to 5
2025-12-16 05:47:09 +02:00
Lauri Ojansivu
4ea53af76e
Merge pull request #6042 from wekan/dependabot/github_actions/actions/download-artifact-7
Bump actions/download-artifact from 6 to 7
2025-12-16 05:46:50 +02:00
Lauri Ojansivu
016f17d663
Merge pull request #6041 from wekan/dependabot/github_actions/actions/upload-artifact-6
Bump actions/upload-artifact from 5 to 6
2025-12-16 05:46:26 +02:00
dependabot[bot]
07f69950a7
Bump actions/cache from 4 to 5
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 20:13:04 +00:00
dependabot[bot]
cec625607d
Bump actions/download-artifact from 6 to 7
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 20:13:00 +00:00
dependabot[bot]
a290c7b34b
Bump actions/upload-artifact from 5 to 6
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 20:12:55 +00:00
Lauri Ojansivu
5b77ac1b44 Updated translations
Some checks failed
Docker / build (push) Has been cancelled
Docker Image CI / build (push) Has been cancelled
Release Charts / release (push) Has been cancelled
Test suite / Meteor tests (push) Has been cancelled
Test suite / Coverage report (push) Has been cancelled
2025-12-11 03:33:17 +02:00
Lauri Ojansivu
41c635afb5
Merge pull request #6029 from MialLewis/add_archive_card_to_api
Some checks failed
Docker / build (push) Has been cancelled
Docker Image CI / build (push) Has been cancelled
Release Charts / release (push) Has been cancelled
Test suite / Meteor tests (push) Has been cancelled
Test suite / Coverage report (push) Has been cancelled
Add archive card to api
2025-12-04 11:58:44 +02:00
Lauri Ojansivu
adbf729cb2
Merge pull request #6032 from wekan/dependabot/github_actions/docker/metadata-action-5.10.0
Bump docker/metadata-action from 5.9.0 to 5.10.0
2025-12-04 11:58:02 +02:00
dependabot[bot]
88ea716d63
Bump docker/metadata-action from 5.9.0 to 5.10.0
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.9.0 to 5.10.0.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](318604b99e...c299e40c65)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-version: 5.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 23:35:03 +00:00
Mial Lewis
003a07ebce change restore to unarchive 2025-11-27 22:00:43 +00:00
Mial Lewis
d3c237bc66 fix more indenting 2025-11-27 08:29:36 +00:00
Mial Lewis
bac0fa81fc correce indent 2025-11-27 08:27:38 +00:00
Mial Lewis
a42915614a add restore to wekan.yml 2025-11-27 08:25:59 +00:00
Mial Lewis
5ff9bf331f add restore to api 2025-11-27 08:23:56 +00:00
Mial Lewis
36d7b0f8a7 correct return values 2025-11-27 00:52:28 +00:00
Mial Lewis
67c8a98f20 add route to wekan.yml 2025-11-27 00:05:53 +00:00
Mial Lewis
a81a603031 update bool to boolean 2025-11-26 23:59:00 +00:00
Mial Lewis
e30ce78053 add archive card to api 2025-11-26 23:57:49 +00:00
Lauri Ojansivu
3d70de94c6
Merge pull request #6028 from wekan/dependabot/github_actions/actions/checkout-6
Some checks failed
Docker / build (push) Has been cancelled
Docker Image CI / build (push) Has been cancelled
Release Charts / release (push) Has been cancelled
Test suite / Meteor tests (push) Has been cancelled
Test suite / Coverage report (push) Has been cancelled
Bump actions/checkout from 5 to 6
2025-11-26 18:04:09 +02:00
dependabot[bot]
70975c2944
Bump actions/checkout from 5 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 20:03:19 +00:00
Lauri Ojansivu
960e2126b4 Updated ChangeLog.
Some checks failed
Docker / build (push) Has been cancelled
Docker Image CI / build (push) Has been cancelled
Release Charts / release (push) Has been cancelled
Test suite / Meteor tests (push) Has been cancelled
Test suite / Coverage report (push) Has been cancelled
2025-11-21 03:02:41 +02:00
Lauri Ojansivu
3db1305e58 Updated build script for Linux arm64 bundle.
Thanks to xet7 !
2025-11-21 02:44:50 +02:00
Lauri Ojansivu
f16780b5e3 Updated translations.
Some checks failed
Docker / build (push) Has been cancelled
Docker Image CI / build (push) Has been cancelled
Release Charts / release (push) Has been cancelled
Test suite / Meteor tests (push) Has been cancelled
Test suite / Coverage report (push) Has been cancelled
2025-11-19 09:34:57 +02:00
Lauri Ojansivu
37a3065f3c Updated translations.
Some checks failed
Docker / build (push) Has been cancelled
Docker Image CI / build (push) Has been cancelled
Release Charts / release (push) Has been cancelled
Test suite / Meteor tests (push) Has been cancelled
Test suite / Coverage report (push) Has been cancelled
2025-11-15 16:35:31 +02:00
Lauri Ojansivu
7ff1649d89 Updated security.md
Some checks failed
Docker / build (push) Has been cancelled
Docker Image CI / build (push) Has been cancelled
Release Charts / release (push) Has been cancelled
Test suite / Meteor tests (push) Has been cancelled
Test suite / Coverage report (push) Has been cancelled
2025-11-14 07:47:31 +02:00
Lauri Ojansivu
a39ae31b45
Merge pull request #6012 from wekan/dependabot/github_actions/docker/metadata-action-5.9.0
Some checks are pending
Docker / build (push) Waiting to run
Docker Image CI / build (push) Waiting to run
Release Charts / release (push) Waiting to run
Test suite / Meteor tests (push) Waiting to run
Test suite / Coverage report (push) Blocked by required conditions
2025-11-13 17:19:00 +02:00
dependabot[bot]
6302a48221
Bump docker/metadata-action from 5.8.0 to 5.9.0
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.8.0 to 5.9.0.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](c1e51972af...318604b99e)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-version: 5.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-10 20:02:19 +00:00
Lauri Ojansivu
c277bee9d2
Merge pull request #6009 from brlin-tw/patch-issue-6008
Some checks failed
Docker / build (push) Has been cancelled
Docker Image CI / build (push) Has been cancelled
Release Charts / release (push) Has been cancelled
Test suite / Meteor tests (push) Has been cancelled
Test suite / Coverage report (push) Has been cancelled
Fix Broken Strikethroughs in Markdown to HTML conversion.
2025-11-10 04:58:29 +02:00
Buo-ren Lin (OSSII)
c5f5ce126d
Fix Broken Strikethroughs in Markdown to HTML conversion.
Allow the s tag to be rendered.

Fixes #6008.

Signed-off-by: Buo-ren Lin (OSSII) <buoren.lin@ossii.com.tw>
2025-11-10 10:49:26 +08:00
21 changed files with 2492 additions and 2290 deletions

View file

@ -9,6 +9,6 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: 'Checkout Repository' - name: 'Checkout Repository'
uses: actions/checkout@v5 uses: actions/checkout@v6
- name: 'Dependency Review' - name: 'Dependency Review'
uses: actions/dependency-review-action@v4 uses: actions/dependency-review-action@v4

View file

@ -32,7 +32,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v5 uses: actions/checkout@v6
# Login against a Docker registry except on PR # Login against a Docker registry except on PR
# https://github.com/docker/login-action # https://github.com/docker/login-action
@ -48,7 +48,7 @@ jobs:
# https://github.com/docker/metadata-action # https://github.com/docker/metadata-action
- name: Extract Docker metadata - name: Extract Docker metadata
id: meta id: meta
uses: docker/metadata-action@c1e51972afc2121e065aed6d45c65596fe445f3f uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051
with: with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}

View file

@ -15,6 +15,6 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v6
- name: Build the Docker image - name: Build the Docker image
run: docker build . --file Dockerfile --tag wekan:$(date +%s) run: docker build . --file Dockerfile --tag wekan:$(date +%s)

View file

@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v6
with: with:
fetch-depth: 0 fetch-depth: 0

View file

@ -18,7 +18,7 @@ jobs:
# runs-on: ubuntu-latest # runs-on: ubuntu-latest
# steps: # steps:
# - name: checkout # - name: checkout
# uses: actions/checkout@v5 # uses: actions/checkout@v6
# #
# - name: setup node # - name: setup node
# uses: actions/setup-node@v1 # uses: actions/setup-node@v1
@ -42,7 +42,7 @@ jobs:
# needs: [lintcode] # needs: [lintcode]
# steps: # steps:
# - name: checkout # - name: checkout
# uses: actions/checkout@v5 # uses: actions/checkout@v6
# #
# - name: setup node # - name: setup node
# uses: actions/setup-node@v1 # uses: actions/setup-node@v1
@ -65,7 +65,7 @@ jobs:
# needs: [lintcode,lintstyle] # needs: [lintcode,lintstyle]
# steps: # steps:
# - name: checkout # - name: checkout
# uses: actions/checkout@v5 # uses: actions/checkout@v6
# #
# - name: setup node # - name: setup node
# uses: actions/setup-node@v1 # uses: actions/setup-node@v1
@ -90,12 +90,12 @@ jobs:
# CHECKOUTS # CHECKOUTS
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v6
# CACHING # CACHING
- name: Install Meteor - name: Install Meteor
id: cache-meteor-install id: cache-meteor-install
uses: actions/cache@v4 uses: actions/cache@v5
with: with:
path: ~/.meteor path: ~/.meteor
key: v1-meteor-${{ hashFiles('.meteor/versions') }} key: v1-meteor-${{ hashFiles('.meteor/versions') }}
@ -104,7 +104,7 @@ jobs:
- name: Cache NPM dependencies - name: Cache NPM dependencies
id: cache-meteor-npm id: cache-meteor-npm
uses: actions/cache@v4 uses: actions/cache@v5
with: with:
path: ~/.npm path: ~/.npm
key: v1-npm-${{ hashFiles('package-lock.json') }} key: v1-npm-${{ hashFiles('package-lock.json') }}
@ -113,7 +113,7 @@ jobs:
- name: Cache Meteor build - name: Cache Meteor build
id: cache-meteor-build id: cache-meteor-build
uses: actions/cache@v4 uses: actions/cache@v5
with: with:
path: | path: |
.meteor/local/resolver-result-cache.json .meteor/local/resolver-result-cache.json
@ -136,7 +136,7 @@ jobs:
run: sh ./test-wekan.sh -cv run: sh ./test-wekan.sh -cv
- name: Upload coverage - name: Upload coverage
uses: actions/upload-artifact@v5 uses: actions/upload-artifact@v6
with: with:
name: coverage-folder name: coverage-folder
path: .coverage/ path: .coverage/
@ -147,10 +147,10 @@ jobs:
needs: [tests] needs: [tests]
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v5 uses: actions/checkout@v6
- name: Download coverage - name: Download coverage
uses: actions/download-artifact@v6 uses: actions/download-artifact@v7
with: with:
name: coverage-folder name: coverage-folder
path: .coverage/ path: .coverage/

View file

@ -22,6 +22,24 @@ Fixing other platforms In Progress.
WeKan 8.00-8.06 had wrong raw database directory setting /var/snap/wekan/common/wekan and some cards were not visible. WeKan 8.00-8.06 had wrong raw database directory setting /var/snap/wekan/common/wekan and some cards were not visible.
Those are fixed at WeKan 8.07 where database directory is back to /var/snap/wekan/common and all cards are visible. Those are fixed at WeKan 8.07 where database directory is back to /var/snap/wekan/common and all cards are visible.
# Upcoming WeKan ® release
This release adds the following updates:
- [Update GitHub docker/metadata-action from 5.8.0 to 5.9.0](https://github.com/wekan/wekan/pull/6012).
Thanks to dependabot.
- [Updated security.md](https://github.com/wekan/wekan/commit/7ff1649d8909917cae590c68def6eecac0442f91).
Thanks to xet7.
- [Updated build script for Linux arm64 bundle](https://github.com/wekan/wekan/commit/3db1305e58168f7417023ccd8d54995026844b18).
Thanks to xet7.
and fixes the following bugs:
- [Fix Broken Strikethroughs in Markdown to HTML conversion](https://github.com/wekan/wekan/pull/6009).
Thanks to brlin-tw.
Thanks to above GitHub users for their contributions and translators for their translations.
# v8.17 2025-11-06 WeKan ® release # v8.17 2025-11-06 WeKan ® release
This release adds the following new feature: This release adds the following new feature:

View file

@ -1,12 +1,20 @@
About money, see [CONTRIBUTING.md](CONTRIBUTING.md)
Security is very important to us. If you discover any issue regarding security, please disclose ## Responsible Security Disclosure
the information responsibly by sending an email from Protonmail to security@wekan.fi
that is Protomail email address, or by using this PGP key
[security-at-wekan.fi.asc](security-at-wekan.fi.asc) to security@wekan.fi
and not by creating a GitHub issue. We will respond swiftly to fix verifiable security issues.
We thank you with a place at our hall of fame page, that is at https://wekan.fi/hall-of-fame - To send email, use [ProtonMail](https://proton.me) email address or use PGP key [security-at-wekan.fi.asc](security-at-wekan.fi.asc)
- Send info about security issue ONLY to security@wekan.fi (that is Protomail email address). NOT TO ANYWHERE ELSE. NO CC, NO BCC.
- Wait for new WeKan release that fixes security issue
- If you approve, we thank you by adding you to Hall of Fame: https://wekan.fi/hall-of-fame/
## Bonus Points
- If you include code for fixing security issue
## Losing Points
- If you ask about [bounty](CONTRIBUTING.md). There is no bounty. WeKan is NOT Big Tech. WeKan is FLOSS.
- If you forget to include vulnerability details.
- If you send info about security issue to somewhere else than security@wekan.fi
## How should reports be formatted? ## How should reports be formatted?
@ -26,7 +34,7 @@ CWSS (optional): %cwss
Anyone who reports a unique security issue in scope and does not disclose it to Anyone who reports a unique security issue in scope and does not disclose it to
a third party before we have patched and updated may be upon their approval a third party before we have patched and updated may be upon their approval
added to the Wekan Hall of Fame. added to the WeKan Hall of Fame https://wekan.fi/hall-of-fame/
## Which domains are in scope? ## Which domains are in scope?
@ -63,11 +71,6 @@ and by by companies that have 30k users.
- If you are thinking about TLS MITM, look at https://github.com/caddyserver/caddy/issues/2530 - If you are thinking about TLS MITM, look at https://github.com/caddyserver/caddy/issues/2530
- Let's Encrypt TLS requires publicly accessible webserver, that Let's Encrypt TLS validation servers check. - Let's Encrypt TLS requires publicly accessible webserver, that Let's Encrypt TLS validation servers check.
- If firewall limits to only allowed IP addresses, you may need non-Let's Encrypt TLS cert. - If firewall limits to only allowed IP addresses, you may need non-Let's Encrypt TLS cert.
- For On Premise:
- https://caddyserver.com/docs/automatic-https#local-https
- https://github.com/wekan/wekan/wiki/Caddy-Webserver-Config
- https://github.com/wekan/wekan/wiki/Azure
- https://github.com/wekan/wekan/wiki/Traefik-and-self-signed-SSL-certs
## XSS ## XSS
@ -269,9 +272,4 @@ Typical already known or "no impact" bugs such as:
- Email spoofing, SPF, DMARC & DKIM. Wekan does not include email server. - Email spoofing, SPF, DMARC & DKIM. Wekan does not include email server.
Wekan is Open Source with MIT license, and free to use also for commercial use. Wekan is Open Source with MIT license, and free to use also for commercial use.
We welcome all fixes to improve security by email to security@wekan.team We welcome all fixes to improve security by email to security@wekan.fi
## Bonus Points
If your Responsible Security Disclosure includes code for fixing security issue,
you get bonus points, as seen on [Hall of Fame](https://wekan.github.io/hall-of-fame).

View file

@ -4,7 +4,7 @@ import DOMPurify from 'dompurify';
export function getSecureDOMPurifyConfig() { export function getSecureDOMPurifyConfig() {
return { return {
// Allow common markdown elements including anchor tags // Allow common markdown elements including anchor tags
ALLOWED_TAGS: ['a', 'p', 'br', 'strong', 'em', 'u', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'li', 'blockquote', 'pre', 'code', 'img', 'table', 'thead', 'tbody', 'tr', 'th', 'td', 'hr', 'div', 'span'], ALLOWED_TAGS: ['a', 'p', 'br', 'strong', 'em', 'u', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'li', 'blockquote', 'pre', 'code', 'img', 'table', 'thead', 'tbody', 'tr', 'th', 'td', 'hr', 'div', 'span', 's'],
// Allow safe attributes including href for anchor tags // Allow safe attributes including href for anchor tags
ALLOWED_ATTR: ['href', 'title', 'alt', 'src', 'width', 'height', 'target', 'rel'], ALLOWED_ATTR: ['href', 'title', 'alt', 'src', 'width', 'height', 'target', 'rel'],
// Allow safe protocols for links // Allow safe protocols for links
@ -44,7 +44,7 @@ export function getSecureDOMPurifyConfig() {
} }
return false; return false;
} }
// Additional check for base64 encoded SVG with script tags // Additional check for base64 encoded SVG with script tags
if (src.startsWith('data:image/svg+xml;base64,')) { if (src.startsWith('data:image/svg+xml;base64,')) {
try { try {

View file

@ -78,18 +78,18 @@
"activity-deleteComment": "commentaire supprimé %s", "activity-deleteComment": "commentaire supprimé %s",
"activity-receivedDate": "date de réception éditée de %s à %s", "activity-receivedDate": "date de réception éditée de %s à %s",
"activity-startDate": "date de début éditée de %s à %s", "activity-startDate": "date de début éditée de %s à %s",
"allboards.starred": "Starred", "allboards.starred": "Favoris",
"allboards.templates": "Modèles", "allboards.templates": "Modèles",
"allboards.remaining": "Remaining", "allboards.remaining": "Restant",
"allboards.workspaces": "Workspaces", "allboards.workspaces": "Espaces de travail",
"allboards.add-workspace": "Add Workspace", "allboards.add-workspace": "Ajouter un espace de travail",
"allboards.add-workspace-prompt": "Workspace name", "allboards.add-workspace-prompt": "Nom de l'espace de travail",
"allboards.add-subworkspace": "Add Subworkspace", "allboards.add-subworkspace": "Ajouter un sous-espace de travail",
"allboards.add-subworkspace-prompt": "Subworkspace name", "allboards.add-subworkspace-prompt": "Nom du sous-espace de travail",
"allboards.edit-workspace": "Edit workspace", "allboards.edit-workspace": "Modifier l'espace de travail",
"allboards.edit-workspace-name": "Workspace name", "allboards.edit-workspace-name": "Nom de l'espace de travail",
"allboards.edit-workspace-icon": "Workspace icon (markdown)", "allboards.edit-workspace-icon": "Workspace icon (markdown)",
"multi-selection-active": "Click checkboxes to select boards", "multi-selection-active": "Cliquez sur les cases à cocher pour sélectionner les tableaux",
"activity-dueDate": "date d'échéance éditée de %s à %s", "activity-dueDate": "date d'échéance éditée de %s à %s",
"activity-endDate": "date de fin éditée de %s à %s", "activity-endDate": "date de fin éditée de %s à %s",
"add-attachment": "Ajouter une pièce jointe", "add-attachment": "Ajouter une pièce jointe",
@ -1416,35 +1416,35 @@
"automatic-migration": "Migration automatique", "automatic-migration": "Migration automatique",
"back-to-settings": "Retour aux paramètres", "back-to-settings": "Retour aux paramètres",
"board-id": "ID du tableau", "board-id": "ID du tableau",
"board-migration": "Board Migration", "board-migration": "Migration du tableau",
"board-migrations": "Board Migrations", "board-migrations": "Migrations de tableau",
"card-show-lists-on-minicard": "Afficher les listes sur la mini-carte", "card-show-lists-on-minicard": "Afficher les listes sur la mini-carte",
"comprehensive-board-migration": "Comprehensive Board Migration", "comprehensive-board-migration": "Migration complète de tableau",
"comprehensive-board-migration-description": "Performs comprehensive checks and fixes for board data integrity, including list ordering, card positions, and swimlane structure.", "comprehensive-board-migration-description": "Performs comprehensive checks and fixes for board data integrity, including list ordering, card positions, and swimlane structure.",
"delete-duplicate-empty-lists-migration": "Delete Duplicate Empty Lists", "delete-duplicate-empty-lists-migration": "Supprimer les listes vides en doublon ? ",
"delete-duplicate-empty-lists-migration-description": "Safely deletes empty duplicate lists. Only removes lists that have no cards AND have another list with the same title that contains cards.", "delete-duplicate-empty-lists-migration-description": "Safely deletes empty duplicate lists. Only removes lists that have no cards AND have another list with the same title that contains cards.",
"lost-cards": "Lost Cards", "lost-cards": "Cartes perdues",
"lost-cards-list": "Restored Items", "lost-cards-list": "Éléments restaurés",
"restore-lost-cards-migration": "Restore Lost Cards", "restore-lost-cards-migration": "Restaurer les cartes perdues",
"restore-lost-cards-migration-description": "Finds and restores cards and lists with missing swimlaneId or listId. Creates a 'Lost Cards' swimlane to make all lost items visible again.", "restore-lost-cards-migration-description": "Finds and restores cards and lists with missing swimlaneId or listId. Creates a 'Lost Cards' swimlane to make all lost items visible again.",
"restore-all-archived-migration": "Restore All Archived", "restore-all-archived-migration": "Restore All Archived",
"restore-all-archived-migration-description": "Restores all archived swimlanes, lists, and cards. Automatically fixes any missing swimlaneId or listId to make items visible.", "restore-all-archived-migration-description": "Restores all archived swimlanes, lists, and cards. Automatically fixes any missing swimlaneId or listId to make items visible.",
"fix-missing-lists-migration": "Fix Missing Lists", "fix-missing-lists-migration": "Fix Missing Lists",
"fix-missing-lists-migration-description": "Detects and repairs missing or corrupted lists in the board structure.", "fix-missing-lists-migration-description": "Detects and repairs missing or corrupted lists in the board structure.",
"fix-avatar-urls-migration": "Fix Avatar URLs", "fix-avatar-urls-migration": "Corriger les URLs d'avatar",
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.", "fix-avatar-urls-migration-description": "Mets à jour les URLs d'avatar des participants du tableau pour utiliser le bon gestionnaire de stockage et corriger les références défaillantes d'avatar ",
"fix-all-file-urls-migration": "Fix All File URLs", "fix-all-file-urls-migration": "Fix All File URLs",
"fix-all-file-urls-migration-description": "Updates all file attachment URLs on this board to use the correct storage backend and fixes broken file references.", "fix-all-file-urls-migration-description": "Updates all file attachment URLs on this board to use the correct storage backend and fixes broken file references.",
"migration-needed": "Migration Needed", "migration-needed": "Migration requise",
"migration-complete": "Terminé", "migration-complete": "Terminé",
"migration-running": "Running...", "migration-running": "En cours ...",
"migration-successful": "Migration completed successfully", "migration-successful": "Migration terminée avec succès",
"migration-failed": "Migration failed", "migration-failed": "Migration en échec",
"migrations": "Migrations", "migrations": "Migrations",
"migrations-admin-only": "Only board administrators can run migrations", "migrations-admin-only": "Only board administrators can run migrations",
"migrations-description": "Run data integrity checks and repairs for this board. Each migration can be executed individually.", "migrations-description": "Run data integrity checks and repairs for this board. Each migration can be executed individually.",
"no-issues-found": "No issues found", "no-issues-found": "Aucun problème détecté",
"run-migration": "Run Migration", "run-migration": "Lancer la migration",
"run-comprehensive-migration-confirm": "This will perform a comprehensive migration to check and fix board data integrity. This may take a few moments. Continue?", "run-comprehensive-migration-confirm": "This will perform a comprehensive migration to check and fix board data integrity. This may take a few moments. Continue?",
"run-delete-duplicate-empty-lists-migration-confirm": "This will first convert any shared lists to per-swimlane lists, then delete empty lists that have a duplicate list with the same title containing cards. Only truly redundant empty lists will be removed. Continue?", "run-delete-duplicate-empty-lists-migration-confirm": "This will first convert any shared lists to per-swimlane lists, then delete empty lists that have a duplicate list with the same title containing cards. Only truly redundant empty lists will be removed. Continue?",
"run-restore-lost-cards-migration-confirm": "This will create a 'Lost Cards' swimlane and restore all cards and lists with missing swimlaneId or listId. This only affects non-archived items. Continue?", "run-restore-lost-cards-migration-confirm": "This will create a 'Lost Cards' swimlane and restore all cards and lists with missing swimlaneId or listId. This only affects non-archived items. Continue?",
@ -1454,28 +1454,28 @@
"run-fix-all-file-urls-migration-confirm": "This will update all file attachment URLs on this board to use the correct storage backend. Continue?", "run-fix-all-file-urls-migration-confirm": "This will update all file attachment URLs on this board to use the correct storage backend. Continue?",
"restore-lost-cards-nothing-to-restore": "No lost swimlanes, lists, or cards to restore", "restore-lost-cards-nothing-to-restore": "No lost swimlanes, lists, or cards to restore",
"migration-progress-title": "Board Migration in Progress", "migration-progress-title": "Migration du tableau en cours",
"migration-progress-overall": "Overall Progress", "migration-progress-overall": "Overall Progress",
"migration-progress-current-step": "Current Step", "migration-progress-current-step": "Étape courante",
"migration-progress-status": "Statut", "migration-progress-status": "Statut",
"migration-progress-details": "Détails", "migration-progress-details": "Détails",
"migration-progress-note": "Please wait while we migrate your board to the latest structure...", "migration-progress-note": "Please wait while we migrate your board to the latest structure...",
"step-analyze-board-structure": "Analyze Board Structure", "step-analyze-board-structure": "Analyze Board Structure",
"step-fix-orphaned-cards": "Fix Orphaned Cards", "step-fix-orphaned-cards": "Corriger les cartes orphelines",
"step-convert-shared-lists": "Convert Shared Lists", "step-convert-shared-lists": "Convert Shared Lists",
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists", "step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
"step-validate-migration": "Validate Migration", "step-validate-migration": "Valider la migration",
"step-fix-avatar-urls": "Fix Avatar URLs", "step-fix-avatar-urls": "Corriger les URLs d'avatar",
"step-fix-attachment-urls": "Fix Attachment URLs", "step-fix-attachment-urls": "Fix Attachment URLs",
"step-analyze-lists": "Analyze Lists", "step-analyze-lists": "Analyze Lists",
"step-create-missing-lists": "Create Missing Lists", "step-create-missing-lists": "Create Missing Lists",
"step-update-cards": "Update Cards", "step-update-cards": "Update Cards",
"step-finalize": "Finalize", "step-finalize": "Finalize",
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists", "step-delete-duplicate-empty-lists": "Supprimer les listes vides en doublon ? ",
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane", "step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
"step-restore-lists": "Restore Lists", "step-restore-lists": "Restore Lists",
"step-restore-cards": "Restore Cards", "step-restore-cards": "Restaurer les cartes",
"step-restore-swimlanes": "Restore Swimlanes", "step-restore-swimlanes": "Restore Swimlanes",
"step-fix-missing-ids": "Fix Missing IDs", "step-fix-missing-ids": "Fix Missing IDs",
"step-scan-users": "Checking board member avatars", "step-scan-users": "Checking board member avatars",

View file

@ -78,18 +78,18 @@
"activity-deleteComment": "התגובה %s נמחקה", "activity-deleteComment": "התגובה %s נמחקה",
"activity-receivedDate": "תאריך הקבלה השתנה מ־%s ל־%s", "activity-receivedDate": "תאריך הקבלה השתנה מ־%s ל־%s",
"activity-startDate": "תאריך ההתחלה השתנה מ־%s ל־%s", "activity-startDate": "תאריך ההתחלה השתנה מ־%s ל־%s",
"allboards.starred": "Starred", "allboards.starred": "סומן בכוכב",
"allboards.templates": "תבניות", "allboards.templates": "תבניות",
"allboards.remaining": "Remaining", "allboards.remaining": "נותרו",
"allboards.workspaces": "Workspaces", "allboards.workspaces": "מרחבי עבודה",
"allboards.add-workspace": "Add Workspace", "allboards.add-workspace": "הוספת מרחב עבודה",
"allboards.add-workspace-prompt": "Workspace name", "allboards.add-workspace-prompt": "שם מרחב עבודה",
"allboards.add-subworkspace": "Add Subworkspace", "allboards.add-subworkspace": "הוספת תת־מרחב עבודה",
"allboards.add-subworkspace-prompt": "Subworkspace name", "allboards.add-subworkspace-prompt": "שם תת־מרחב עבודה",
"allboards.edit-workspace": "Edit workspace", "allboards.edit-workspace": "עריכת מרחב עבודה",
"allboards.edit-workspace-name": "Workspace name", "allboards.edit-workspace-name": "שם מרחב עבודה",
"allboards.edit-workspace-icon": "Workspace icon (markdown)", "allboards.edit-workspace-icon": "סמל מרחב עבודה (markdown)",
"multi-selection-active": "Click checkboxes to select boards", "multi-selection-active": "יש לסמן את התיבות כדי לבחור לוחות",
"activity-dueDate": "תאריך היעד השתנה מ־%s ל־%s", "activity-dueDate": "תאריך היעד השתנה מ־%s ל־%s",
"activity-endDate": "תאריך הסיום השתנה מ־%s ל־%s", "activity-endDate": "תאריך הסיום השתנה מ־%s ל־%s",
"add-attachment": "הוספת קובץ מצורף", "add-attachment": "הוספת קובץ מצורף",
@ -398,7 +398,7 @@
"editNotificationPopup-title": "שינוי דיווח", "editNotificationPopup-title": "שינוי דיווח",
"editProfilePopup-title": "עריכת פרופיל", "editProfilePopup-title": "עריכת פרופיל",
"email": "דוא״ל", "email": "דוא״ל",
"email-address": "Email Address", "email-address": "כתובת דוא״ל",
"email-enrollAccount-subject": "נוצר עבורך חשבון באתר __siteName__", "email-enrollAccount-subject": "נוצר עבורך חשבון באתר __siteName__",
"email-enrollAccount-text": "__user__ שלום,\n\nכדי להתחיל להשתמש בשירות, יש ללחוץ על הקישור המופיע להלן.\n\n__url__\n\nתודה.", "email-enrollAccount-text": "__user__ שלום,\n\nכדי להתחיל להשתמש בשירות, יש ללחוץ על הקישור המופיע להלן.\n\n__url__\n\nתודה.",
"email-fail": "שליחת ההודעה בדוא״ל נכשלה", "email-fail": "שליחת ההודעה בדוא״ל נכשלה",
@ -768,8 +768,8 @@
"delete-board-confirm-popup": "כל הרשימות, הכרטיסים, התווית והפעולות יימחקו ולא תהיה לך דרך לשחזר את תכני הלוח. אין אפשרות לבטל.", "delete-board-confirm-popup": "כל הרשימות, הכרטיסים, התווית והפעולות יימחקו ולא תהיה לך דרך לשחזר את תכני הלוח. אין אפשרות לבטל.",
"boardDeletePopup-title": "למחוק את הלוח?", "boardDeletePopup-title": "למחוק את הלוח?",
"delete-board": "מחיקת לוח", "delete-board": "מחיקת לוח",
"delete-duplicate-lists": "Delete Duplicate Lists", "delete-duplicate-lists": "מחיקת רשימות כפולות",
"delete-duplicate-lists-confirm": "Are you sure? This will delete all duplicate lists that have the same name and contain no cards.", "delete-duplicate-lists-confirm": "להמשיך? הפעולה הזאת תמחק את כל הרשימות הכפולות שיש להן את אותו השם ואינן מכילות כרטיסים.",
"default-subtasks-board": "תת־משימות עבור הלוח __board__", "default-subtasks-board": "תת־משימות עבור הלוח __board__",
"default": "בררת מחדל", "default": "בררת מחדל",
"defaultdefault": "בררת מחדל", "defaultdefault": "בררת מחדל",
@ -1417,15 +1417,15 @@
"back-to-settings": "חזרה להגדרות", "back-to-settings": "חזרה להגדרות",
"board-id": "מזהה לוח", "board-id": "מזהה לוח",
"board-migration": "הסבת לוחות", "board-migration": "הסבת לוחות",
"board-migrations": "Board Migrations", "board-migrations": "הסבות לוחות",
"card-show-lists-on-minicard": "הצגת רשימות בכרטיסון", "card-show-lists-on-minicard": "הצגת רשימות בכרטיסון",
"comprehensive-board-migration": "Comprehensive Board Migration", "comprehensive-board-migration": "הסבת לוחות נרחבת",
"comprehensive-board-migration-description": "Performs comprehensive checks and fixes for board data integrity, including list ordering, card positions, and swimlane structure.", "comprehensive-board-migration-description": "Performs comprehensive checks and fixes for board data integrity, including list ordering, card positions, and swimlane structure.",
"delete-duplicate-empty-lists-migration": "Delete Duplicate Empty Lists", "delete-duplicate-empty-lists-migration": "Delete Duplicate Empty Lists",
"delete-duplicate-empty-lists-migration-description": "Safely deletes empty duplicate lists. Only removes lists that have no cards AND have another list with the same title that contains cards.", "delete-duplicate-empty-lists-migration-description": "Safely deletes empty duplicate lists. Only removes lists that have no cards AND have another list with the same title that contains cards.",
"lost-cards": "Lost Cards", "lost-cards": "כרטיסים אבודים",
"lost-cards-list": "Restored Items", "lost-cards-list": "פריטים משוחזרים",
"restore-lost-cards-migration": "Restore Lost Cards", "restore-lost-cards-migration": "שחזור כרטיסים אבודים",
"restore-lost-cards-migration-description": "Finds and restores cards and lists with missing swimlaneId or listId. Creates a 'Lost Cards' swimlane to make all lost items visible again.", "restore-lost-cards-migration-description": "Finds and restores cards and lists with missing swimlaneId or listId. Creates a 'Lost Cards' swimlane to make all lost items visible again.",
"restore-all-archived-migration": "Restore All Archived", "restore-all-archived-migration": "Restore All Archived",
"restore-all-archived-migration-description": "Restores all archived swimlanes, lists, and cards. Automatically fixes any missing swimlaneId or listId to make items visible.", "restore-all-archived-migration-description": "Restores all archived swimlanes, lists, and cards. Automatically fixes any missing swimlaneId or listId to make items visible.",
@ -1439,8 +1439,8 @@
"migration-complete": "הושלם", "migration-complete": "הושלם",
"migration-running": "Running...", "migration-running": "Running...",
"migration-successful": "Migration completed successfully", "migration-successful": "Migration completed successfully",
"migration-failed": "Migration failed", "migration-failed": "ההסבה נכשלה",
"migrations": "Migrations", "migrations": "הסבות",
"migrations-admin-only": "Only board administrators can run migrations", "migrations-admin-only": "Only board administrators can run migrations",
"migrations-description": "Run data integrity checks and repairs for this board. Each migration can be executed individually.", "migrations-description": "Run data integrity checks and repairs for this board. Each migration can be executed individually.",
"no-issues-found": "No issues found", "no-issues-found": "No issues found",

View file

@ -1474,9 +1474,9 @@
"step-finalize": "Finalize", "step-finalize": "Finalize",
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists", "step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane", "step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
"step-restore-lists": "Restore Lists", "step-restore-lists": "リストをリストア",
"step-restore-cards": "Restore Cards", "step-restore-cards": "カードをリストア",
"step-restore-swimlanes": "Restore Swimlanes", "step-restore-swimlanes": "スイムレーンをリストア",
"step-fix-missing-ids": "Fix Missing IDs", "step-fix-missing-ids": "Fix Missing IDs",
"step-scan-users": "Checking board member avatars", "step-scan-users": "Checking board member avatars",
"step-scan-files": "Checking board file attachments", "step-scan-files": "Checking board file attachments",

View file

@ -1474,9 +1474,9 @@
"step-finalize": "Finalize", "step-finalize": "Finalize",
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists", "step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane", "step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
"step-restore-lists": "Restore Lists", "step-restore-lists": "リストをリストア",
"step-restore-cards": "Restore Cards", "step-restore-cards": "カードをリストア",
"step-restore-swimlanes": "Restore Swimlanes", "step-restore-swimlanes": "スイムレーンをリストア",
"step-fix-missing-ids": "Fix Missing IDs", "step-fix-missing-ids": "Fix Missing IDs",
"step-scan-users": "Checking board member avatars", "step-scan-users": "Checking board member avatars",
"step-scan-files": "Checking board file attachments", "step-scan-files": "Checking board file attachments",

View file

@ -78,18 +78,18 @@
"activity-deleteComment": "aantekening verwijderd %s", "activity-deleteComment": "aantekening verwijderd %s",
"activity-receivedDate": "ontvangst datum gewijzigd naar %s van %s", "activity-receivedDate": "ontvangst datum gewijzigd naar %s van %s",
"activity-startDate": "start datum gewijzigd naar %s van %s", "activity-startDate": "start datum gewijzigd naar %s van %s",
"allboards.starred": "Starred", "allboards.starred": "Favorieten",
"allboards.templates": "Templates", "allboards.templates": "Templates",
"allboards.remaining": "Remaining", "allboards.remaining": "Resterend",
"allboards.workspaces": "Workspaces", "allboards.workspaces": "Werkruimte",
"allboards.add-workspace": "Add Workspace", "allboards.add-workspace": "Werkruimte toevoegen",
"allboards.add-workspace-prompt": "Workspace name", "allboards.add-workspace-prompt": "Werkruimtenaam",
"allboards.add-subworkspace": "Add Subworkspace", "allboards.add-subworkspace": "Sub-werkruimte toevoegen",
"allboards.add-subworkspace-prompt": "Subworkspace name", "allboards.add-subworkspace-prompt": "Sub-werkruimtenaam",
"allboards.edit-workspace": "Edit workspace", "allboards.edit-workspace": "Wijzig werkruimte",
"allboards.edit-workspace-name": "Workspace name", "allboards.edit-workspace-name": "Werkruimtenaam",
"allboards.edit-workspace-icon": "Workspace icon (markdown)", "allboards.edit-workspace-icon": "Werkruimteicoon (markdown)",
"multi-selection-active": "Click checkboxes to select boards", "multi-selection-active": "Vink de checkboxen om borden te selecteren",
"activity-dueDate": "vervaldatum gewijzigd naar %s van %s", "activity-dueDate": "vervaldatum gewijzigd naar %s van %s",
"activity-endDate": "einddatum gewijzigd naar %s van %s", "activity-endDate": "einddatum gewijzigd naar %s van %s",
"add-attachment": "Bijlage Toevoegen", "add-attachment": "Bijlage Toevoegen",
@ -936,7 +936,7 @@
"people-number": "Het aantal gebruikers is:", "people-number": "Het aantal gebruikers is:",
"swimlaneDeletePopup-title": "Swimlane verwijderen?", "swimlaneDeletePopup-title": "Swimlane verwijderen?",
"swimlane-delete-pop": "Alle acties zullen verwijderd worden van de activiteiten feed en je kunt de swimlane niet terughalen. Er is geen herstelmogelijkheid.", "swimlane-delete-pop": "Alle acties zullen verwijderd worden van de activiteiten feed en je kunt de swimlane niet terughalen. Er is geen herstelmogelijkheid.",
"restore-all": "Haal alles terug", "restore-all": "Herstel alles",
"delete-all": "Verwijder alles", "delete-all": "Verwijder alles",
"loading": "Laden, even geduld.", "loading": "Laden, even geduld.",
"previous_as": "laatste keer was", "previous_as": "laatste keer was",
@ -1417,70 +1417,70 @@
"back-to-settings": "Terug naar Instellingen", "back-to-settings": "Terug naar Instellingen",
"board-id": "Bord ID", "board-id": "Bord ID",
"board-migration": "Bord Migratie", "board-migration": "Bord Migratie",
"board-migrations": "Board Migrations", "board-migrations": "Bord Migraties",
"card-show-lists-on-minicard": "Toon Lijsten op Minikaart", "card-show-lists-on-minicard": "Toon Lijsten op Minikaart",
"comprehensive-board-migration": "Comprehensive Board Migration", "comprehensive-board-migration": "Uitgebreide Bord Migratie",
"comprehensive-board-migration-description": "Performs comprehensive checks and fixes for board data integrity, including list ordering, card positions, and swimlane structure.", "comprehensive-board-migration-description": "Voert uitgebreide controles en reparaties uit voor bord data-integriteit, inclusief lijst sortering, kaart posities en swimlane-structuur.",
"delete-duplicate-empty-lists-migration": "Delete Duplicate Empty Lists", "delete-duplicate-empty-lists-migration": "Verwijder Dubbele Lege Lijsten",
"delete-duplicate-empty-lists-migration-description": "Safely deletes empty duplicate lists. Only removes lists that have no cards AND have another list with the same title that contains cards.", "delete-duplicate-empty-lists-migration-description": "Verwijderd veilig lege dubbele lijsten. Verwijderd alleen lijsten die geen kaarten bevatten EN waar een andere lijst bestaat met dezelfde titel die wel kaarten bevat.",
"lost-cards": "Lost Cards", "lost-cards": "Verloren Kaarten",
"lost-cards-list": "Restored Items", "lost-cards-list": "Herstelde Items",
"restore-lost-cards-migration": "Restore Lost Cards", "restore-lost-cards-migration": "Herstel Verloren Kaarten",
"restore-lost-cards-migration-description": "Finds and restores cards and lists with missing swimlaneId or listId. Creates a 'Lost Cards' swimlane to make all lost items visible again.", "restore-lost-cards-migration-description": "Vind en herstel kaarten en lijsten met missende swimlane-ID of list-ID. Hier wordt een 'Verloren Kaarten'-swimlane gemaakt om alles verloren items weer zichtbaar te maken.",
"restore-all-archived-migration": "Restore All Archived", "restore-all-archived-migration": "Herstel Alles ui Archief",
"restore-all-archived-migration-description": "Restores all archived swimlanes, lists, and cards. Automatically fixes any missing swimlaneId or listId to make items visible.", "restore-all-archived-migration-description": "Herstel alle ge-archiveerde swimlanes, lijsten en kaarten. Hierbij worden automatisch de missende swimlane-ID of lijs-ID gerapareerd om de items weer zichtbaar te maken.",
"fix-missing-lists-migration": "Fix Missing Lists", "fix-missing-lists-migration": "Repareer Missende Lijsten",
"fix-missing-lists-migration-description": "Detects and repairs missing or corrupted lists in the board structure.", "fix-missing-lists-migration-description": "Detecteer en repareer missende of corrupte lijsten in de bordstructuur.",
"fix-avatar-urls-migration": "Fix Avatar URLs", "fix-avatar-urls-migration": "Repareer Avatar URL's",
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.", "fix-avatar-urls-migration-description": "Werkt de avatar URL's van de bord-leden bij zodat de juiste opslagmethode gebruikt wordt en het repareert defecte avatar verwijzingen.",
"fix-all-file-urls-migration": "Fix All File URLs", "fix-all-file-urls-migration": "Repareer alle bestand URL's",
"fix-all-file-urls-migration-description": "Updates all file attachment URLs on this board to use the correct storage backend and fixes broken file references.", "fix-all-file-urls-migration-description": "Werkt alle bestandsbijlagen URL's op dit bord bij naar de juiste opslagmethode en repareert defecte bestandsverwijzingen.",
"migration-needed": "Migration Needed", "migration-needed": "Migratie Nodig",
"migration-complete": "Voltooid", "migration-complete": "Voltooid",
"migration-running": "Running...", "migration-running": "In Uitvoering...",
"migration-successful": "Migration completed successfully", "migration-successful": "Migratie succesvol uitgevoerd",
"migration-failed": "Migration failed", "migration-failed": "Migratie mislukt",
"migrations": "Migrations", "migrations": "Migraties",
"migrations-admin-only": "Only board administrators can run migrations", "migrations-admin-only": "Alleen bord-beherders kunnen migraties uitvoeren",
"migrations-description": "Run data integrity checks and repairs for this board. Each migration can be executed individually.", "migrations-description": "Voer data-integriteits controles en reparaties uit op dit bord. Elke migratie kan afzonderlijk uitgevoerd worden.",
"no-issues-found": "No issues found", "no-issues-found": "Geen problemen gevonden",
"run-migration": "Run Migration", "run-migration": "Voer Migratie Uit",
"run-comprehensive-migration-confirm": "This will perform a comprehensive migration to check and fix board data integrity. This may take a few moments. Continue?", "run-comprehensive-migration-confirm": "Dit voert een uitgebreide migratie uit en controleert en repareert de data-integriteit op dit bord. Dit kan even duren. Doorgaan?",
"run-delete-duplicate-empty-lists-migration-confirm": "This will first convert any shared lists to per-swimlane lists, then delete empty lists that have a duplicate list with the same title containing cards. Only truly redundant empty lists will be removed. Continue?", "run-delete-duplicate-empty-lists-migration-confirm": "Dit converteert eventuele gedeelde lijsten naar lijsten per swimlane waarna lege lijsten verwijderd worden die dubbel zijn met een lijst met dezelfde titel en wel kaarten bevatten. Alleen echt dubbele lege lijsten worden verwijderd. Doorgaan?",
"run-restore-lost-cards-migration-confirm": "This will create a 'Lost Cards' swimlane and restore all cards and lists with missing swimlaneId or listId. This only affects non-archived items. Continue?", "run-restore-lost-cards-migration-confirm": "Dit creëert een 'Verloren Kaarten' swimlane en hierin worden kaarten en lijsten hersteld met een missende swimlane-ID of lijst-ID. Dit heeft alleen gevolgen voor niet gearchiveerde items. Doorgaan?",
"run-restore-all-archived-migration-confirm": "This will restore ALL archived swimlanes, lists, and cards, making them visible again. Any items with missing IDs will be automatically fixed. This cannot be easily undone. Continue?", "run-restore-all-archived-migration-confirm": "Dit herstelt alle gearchiveerde swimlanes, lijsten en kaarten waardoor ze weer zichtbaar worden. Items met een missende ID zulle automatisch gerepareerd worden. Doorgaan?",
"run-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?", "run-fix-missing-lists-migration-confirm": "Dit detecteert en repareert missende of corrupte lijsten in de bord-structuur. Doorgaan?",
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members to use the correct storage backend. Continue?", "run-fix-avatar-urls-migration-confirm": "Dit werkt alle avatar URL's van de bord-leden bij naar de juiste opslagmethode. Doorgaan?",
"run-fix-all-file-urls-migration-confirm": "This will update all file attachment URLs on this board to use the correct storage backend. Continue?", "run-fix-all-file-urls-migration-confirm": "dit werkt alle bestandsbijlagen URL's bij naar de juiste opslagmethode. Doorgaan?",
"restore-lost-cards-nothing-to-restore": "No lost swimlanes, lists, or cards to restore", "restore-lost-cards-nothing-to-restore": "Geen verloren swinmlanes, lijsten of kaarten om te herstellen",
"migration-progress-title": "Board Migration in Progress", "migration-progress-title": "Bord Migratie in Uitvoering",
"migration-progress-overall": "Algehele Voortgang", "migration-progress-overall": "Algehele Voortgang",
"migration-progress-current-step": "Current Step", "migration-progress-current-step": "Huidige Stap",
"migration-progress-status": "Status", "migration-progress-status": "Status",
"migration-progress-details": "Details", "migration-progress-details": "Details",
"migration-progress-note": "Please wait while we migrate your board to the latest structure...", "migration-progress-note": "Wacht tot we jouw bord gemigreerd hebben naar de actuele structuur...",
"step-analyze-board-structure": "Analyze Board Structure", "step-analyze-board-structure": "Bordstructuur Analyseren",
"step-fix-orphaned-cards": "Fix Orphaned Cards", "step-fix-orphaned-cards": "Repareer Verweesde Kaarten",
"step-convert-shared-lists": "Convert Shared Lists", "step-convert-shared-lists": "Converteer Gedeelde Lijsten",
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists", "step-ensure-per-swimlane-lists": "Maak Per-Swimlane Lijsten",
"step-validate-migration": "Validate Migration", "step-validate-migration": "Valideer Migratie",
"step-fix-avatar-urls": "Fix Avatar URLs", "step-fix-avatar-urls": "Repareer Avatar URL's",
"step-fix-attachment-urls": "Fix Attachment URLs", "step-fix-attachment-urls": "Repareer Bijlage URL's",
"step-analyze-lists": "Analyze Lists", "step-analyze-lists": "Analyseer Lijsten",
"step-create-missing-lists": "Create Missing Lists", "step-create-missing-lists": "Maak Missende Lijsten",
"step-update-cards": "Update Cards", "step-update-cards": "Werk Kaarten Bij",
"step-finalize": "Finalize", "step-finalize": "Beëindig",
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists", "step-delete-duplicate-empty-lists": "Verwijder Dubbele Lege Lijsten",
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane", "step-ensure-lost-cards-swimlane": "Maak Verloren Kaarten Swimlane",
"step-restore-lists": "Restore Lists", "step-restore-lists": "Herstel Lijsten",
"step-restore-cards": "Restore Cards", "step-restore-cards": "Herstel Kaarten",
"step-restore-swimlanes": "Restore Swimlanes", "step-restore-swimlanes": "Herstel Swimlanes",
"step-fix-missing-ids": "Fix Missing IDs", "step-fix-missing-ids": "Herstel Missende ID's",
"step-scan-users": "Checking board member avatars", "step-scan-users": "Bord-leden avatars controleren",
"step-scan-files": "Checking board file attachments", "step-scan-files": "Bord bestandsbijlagen controleren",
"step-fix-file-urls": "Fixing file URLs", "step-fix-file-urls": "Herstel bestand URL's",
"cleanup": "Opschonen", "cleanup": "Opschonen",
"cleanup-old-jobs": "Schoon Oude Taken Op", "cleanup-old-jobs": "Schoon Oude Taken Op",
"completed": "Afgewerkt", "completed": "Afgewerkt",

View file

@ -78,18 +78,18 @@
"activity-deleteComment": "comentário excluído %s", "activity-deleteComment": "comentário excluído %s",
"activity-receivedDate": "editou recebido para %s de %s", "activity-receivedDate": "editou recebido para %s de %s",
"activity-startDate": "editou data início para %s de %s", "activity-startDate": "editou data início para %s de %s",
"allboards.starred": "Starred", "allboards.starred": "Favoritado",
"allboards.templates": "Modelos", "allboards.templates": "Modelos",
"allboards.remaining": "Remaining", "allboards.remaining": "Restante",
"allboards.workspaces": "Workspaces", "allboards.workspaces": "Áreas de trabalho",
"allboards.add-workspace": "Add Workspace", "allboards.add-workspace": "Adicionar Área de trabalho",
"allboards.add-workspace-prompt": "Workspace name", "allboards.add-workspace-prompt": "Nome da Área de trabalho",
"allboards.add-subworkspace": "Add Subworkspace", "allboards.add-subworkspace": "Adicionar Subárea de trabalho",
"allboards.add-subworkspace-prompt": "Subworkspace name", "allboards.add-subworkspace-prompt": "Nome da Subárea de trabalho",
"allboards.edit-workspace": "Edit workspace", "allboards.edit-workspace": "Editar Área de trabalho",
"allboards.edit-workspace-name": "Workspace name", "allboards.edit-workspace-name": "Nome da Área de trabalho",
"allboards.edit-workspace-icon": "Workspace icon (markdown)", "allboards.edit-workspace-icon": "Ícone da Área de trabalho (markdown)",
"multi-selection-active": "Click checkboxes to select boards", "multi-selection-active": "Clique nas caixas de seleção para selecionar os quadros",
"activity-dueDate": "editou prazo final para %s de %s", "activity-dueDate": "editou prazo final para %s de %s",
"activity-endDate": "editou concluído para %s de %s", "activity-endDate": "editou concluído para %s de %s",
"add-attachment": "Adicionar Anexos", "add-attachment": "Adicionar Anexos",
@ -1419,68 +1419,68 @@
"board-migration": "Migração de Quadro", "board-migration": "Migração de Quadro",
"board-migrations": "Migração de Quadros", "board-migrations": "Migração de Quadros",
"card-show-lists-on-minicard": "Mostrar Listas no Mini cartão", "card-show-lists-on-minicard": "Mostrar Listas no Mini cartão",
"comprehensive-board-migration": "Comprehensive Board Migration", "comprehensive-board-migration": "Migração de Quadros abrangente",
"comprehensive-board-migration-description": "Performs comprehensive checks and fixes for board data integrity, including list ordering, card positions, and swimlane structure.", "comprehensive-board-migration-description": "Realiza verificações e correções abrangentes para a integridade dos dados do quadro, incluindo a ordem da lista, as posições dos cartões e a estrutura das raias.",
"delete-duplicate-empty-lists-migration": "Delete Duplicate Empty Lists", "delete-duplicate-empty-lists-migration": "Apagar Listas Vazias Duplicadas",
"delete-duplicate-empty-lists-migration-description": "Safely deletes empty duplicate lists. Only removes lists that have no cards AND have another list with the same title that contains cards.", "delete-duplicate-empty-lists-migration-description": "Exclui com segurança listas duplicadas vazias. Remove apenas listas que não contêm cartões E que possuem outra lista com o mesmo título que contém cartões.",
"lost-cards": "Lost Cards", "lost-cards": "Cartões Perdidos",
"lost-cards-list": "Restored Items", "lost-cards-list": "Itens Recuperados",
"restore-lost-cards-migration": "Restore Lost Cards", "restore-lost-cards-migration": "Recuperar Cartões Perdidos",
"restore-lost-cards-migration-description": "Finds and restores cards and lists with missing swimlaneId or listId. Creates a 'Lost Cards' swimlane to make all lost items visible again.", "restore-lost-cards-migration-description": "Encontra e restaura cartões e listas com ID de raia ou ID de lista ausentes. Cria uma raia \"Cartões Perdidos\" para tornar todos os itens perdidos visíveis novamente.",
"restore-all-archived-migration": "Restore All Archived", "restore-all-archived-migration": "Recuperar Todos Arquivados",
"restore-all-archived-migration-description": "Restores all archived swimlanes, lists, and cards. Automatically fixes any missing swimlaneId or listId to make items visible.", "restore-all-archived-migration-description": "Restaura todas as raias, listas e cartões arquivados. Corrige automaticamente qualquer ID de raia ou ID de lista ausente para tornar os itens visíveis.",
"fix-missing-lists-migration": "Fix Missing Lists", "fix-missing-lists-migration": "Corrigir Listas Ausentes",
"fix-missing-lists-migration-description": "Detects and repairs missing or corrupted lists in the board structure.", "fix-missing-lists-migration-description": "Detecta e repara listas ausentes ou corrompidas na estrutura do quadro.",
"fix-avatar-urls-migration": "Fix Avatar URLs", "fix-avatar-urls-migration": "Corrigir URLs de Avatar",
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.", "fix-avatar-urls-migration-description": "Atualiza os URLs dos avatares dos membros do quadro para que utilizem o backend de armazenamento correto e corrige referências de avatar quebradas.",
"fix-all-file-urls-migration": "Fix All File URLs", "fix-all-file-urls-migration": "Corrigir todas URLs de arquivos",
"fix-all-file-urls-migration-description": "Updates all file attachment URLs on this board to use the correct storage backend and fixes broken file references.", "fix-all-file-urls-migration-description": "Atualiza todas URLs de arquivos de anexo neste quadro para usar o backend de armazenamento correto e corrige referências de arquivos quebradas.",
"migration-needed": "Migration Needed", "migration-needed": "Migração necessária",
"migration-complete": "Concluído", "migration-complete": "Concluído",
"migration-running": "Running...", "migration-running": "Executando...",
"migration-successful": "Migration completed successfully", "migration-successful": "Migração concluída com sucesso.",
"migration-failed": "Migration failed", "migration-failed": "A migração falhou",
"migrations": "Migrations", "migrations": "Migrações",
"migrations-admin-only": "Only board administrators can run migrations", "migrations-admin-only": "Somente os administradores do quadro podem executar migrações.",
"migrations-description": "Run data integrity checks and repairs for this board. Each migration can be executed individually.", "migrations-description": "Execute verificações de integridade de dados e reparos para este quadro. Cada migração pode ser executada individualmente.",
"no-issues-found": "No issues found", "no-issues-found": "Nenhum problema encontrado",
"run-migration": "Run Migration", "run-migration": "Executar Migração",
"run-comprehensive-migration-confirm": "This will perform a comprehensive migration to check and fix board data integrity. This may take a few moments. Continue?", "run-comprehensive-migration-confirm": "Isso realizará uma migração completa para verificar e corrigir a integridade dos dados do quadro. Isso pode levar alguns instantes. Continuar?",
"run-delete-duplicate-empty-lists-migration-confirm": "This will first convert any shared lists to per-swimlane lists, then delete empty lists that have a duplicate list with the same title containing cards. Only truly redundant empty lists will be removed. Continue?", "run-delete-duplicate-empty-lists-migration-confirm": "Primeiro, isso converterá todas as listas compartilhadas em listas por raia e, em seguida, excluirá as listas vazias que contêm listas duplicadas com o mesmo título e que possuem cartões. Somente as listas vazias realmente redundantes serão removidas. Continuar?",
"run-restore-lost-cards-migration-confirm": "This will create a 'Lost Cards' swimlane and restore all cards and lists with missing swimlaneId or listId. This only affects non-archived items. Continue?", "run-restore-lost-cards-migration-confirm": "Isso criará uma raia \"Cartões Perdidos\" e restaurará todos os cartões e listas com ID de raia ou ID de lista ausentes. Isso afeta apenas itens não arquivados. Continuar?",
"run-restore-all-archived-migration-confirm": "This will restore ALL archived swimlanes, lists, and cards, making them visible again. Any items with missing IDs will be automatically fixed. This cannot be easily undone. Continue?", "run-restore-all-archived-migration-confirm": "Isso restaurará TODAS as raias, listas e cartões arquivados, tornando-os visíveis novamente. Quaisquer itens com IDs ausentes serão corrigidos automaticamente. Esta ação não pode ser desfeita facilmente. Continuar?",
"run-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?", "run-fix-missing-lists-migration-confirm": "Isso detectará e corrigirá listas ausentes ou corrompidas na estrutura do quadro. Continuar?",
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members to use the correct storage backend. Continue?", "run-fix-avatar-urls-migration-confirm": "Isso atualizará as URLs dos avatares dos membros do quadro para usar o backend de armazenamento correto. Continuar?",
"run-fix-all-file-urls-migration-confirm": "This will update all file attachment URLs on this board to use the correct storage backend. Continue?", "run-fix-all-file-urls-migration-confirm": "Isso atualizará todas URLs de arquivos de anexos neste quadro para usar o servidor de armazenamento correto. Continuar?",
"restore-lost-cards-nothing-to-restore": "No lost swimlanes, lists, or cards to restore", "restore-lost-cards-nothing-to-restore": "Sem raias, listas ou cartões perdidos para restaurar.",
"migration-progress-title": "Board Migration in Progress", "migration-progress-title": "Migração do Quadro em Andamento",
"migration-progress-overall": "Progresso Geral", "migration-progress-overall": "Progresso Geral",
"migration-progress-current-step": "Current Step", "migration-progress-current-step": "Etapa Atual",
"migration-progress-status": "Status", "migration-progress-status": "Status",
"migration-progress-details": "Detalhes", "migration-progress-details": "Detalhes",
"migration-progress-note": "Please wait while we migrate your board to the latest structure...", "migration-progress-note": "Aguarde enquanto migramos seu quadro para a estrutura mais recente...",
"step-analyze-board-structure": "Analyze Board Structure", "step-analyze-board-structure": "Analisar a Estrutura do Quadro",
"step-fix-orphaned-cards": "Fix Orphaned Cards", "step-fix-orphaned-cards": "Corrigir Cartões Órfãos",
"step-convert-shared-lists": "Convert Shared Lists", "step-convert-shared-lists": "Converter Listas Compartilhadas",
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists", "step-ensure-per-swimlane-lists": "Garantir listas por raia",
"step-validate-migration": "Validate Migration", "step-validate-migration": "Validar Migração",
"step-fix-avatar-urls": "Fix Avatar URLs", "step-fix-avatar-urls": "Corrigir URLs de Avatar",
"step-fix-attachment-urls": "Fix Attachment URLs", "step-fix-attachment-urls": "Corrigir URLs de anexos",
"step-analyze-lists": "Analyze Lists", "step-analyze-lists": "Analisar Listas",
"step-create-missing-lists": "Create Missing Lists", "step-create-missing-lists": "Criar Listas Faltantes",
"step-update-cards": "Update Cards", "step-update-cards": "Atualizar Cartões",
"step-finalize": "Finalize", "step-finalize": "Finalizar",
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists", "step-delete-duplicate-empty-lists": "Apagar Listas Vazias Duplicadas",
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane", "step-ensure-lost-cards-swimlane": "Garantir a Raia dos Cartões Perdidos",
"step-restore-lists": "Restore Lists", "step-restore-lists": "Restaurar Listas",
"step-restore-cards": "Restore Cards", "step-restore-cards": "Restaurar Cartões",
"step-restore-swimlanes": "Restore Swimlanes", "step-restore-swimlanes": "Restaurar Raias",
"step-fix-missing-ids": "Fix Missing IDs", "step-fix-missing-ids": "Corrigir IDs ausentes",
"step-scan-users": "Checking board member avatars", "step-scan-users": "Verificando os avatares dos membros do quadro",
"step-scan-files": "Checking board file attachments", "step-scan-files": "Verificando arquivos de anexos do quadro",
"step-fix-file-urls": "Fixing file URLs", "step-fix-file-urls": "Corrigindo URLs de arquivos",
"cleanup": "Limpeza", "cleanup": "Limpeza",
"cleanup-old-jobs": "Limpar Trabalhos Antigos", "cleanup-old-jobs": "Limpar Trabalhos Antigos",
"completed": "Completado", "completed": "Completado",

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -78,18 +78,18 @@
"activity-deleteComment": "raderade kommentar %s", "activity-deleteComment": "raderade kommentar %s",
"activity-receivedDate": "redigerade mottaget datum till %s av %s", "activity-receivedDate": "redigerade mottaget datum till %s av %s",
"activity-startDate": "redigerade startdatum till %s av %s", "activity-startDate": "redigerade startdatum till %s av %s",
"allboards.starred": "Starred", "allboards.starred": " Stjärnmärkt",
"allboards.templates": "Mallar", "allboards.templates": "Mallar",
"allboards.remaining": "Remaining", "allboards.remaining": "Återstående",
"allboards.workspaces": "Workspaces", "allboards.workspaces": "Arbetsytor",
"allboards.add-workspace": "Add Workspace", "allboards.add-workspace": "Lägg till arbetsyta",
"allboards.add-workspace-prompt": "Workspace name", "allboards.add-workspace-prompt": "Arbetsytans namn",
"allboards.add-subworkspace": "Add Subworkspace", "allboards.add-subworkspace": "Lägg till underarbetsyta",
"allboards.add-subworkspace-prompt": "Subworkspace name", "allboards.add-subworkspace-prompt": "Underarbetsytans namn",
"allboards.edit-workspace": "Edit workspace", "allboards.edit-workspace": "Redigera arbetsyta",
"allboards.edit-workspace-name": "Workspace name", "allboards.edit-workspace-name": "Arbetsytans namn",
"allboards.edit-workspace-icon": "Workspace icon (markdown)", "allboards.edit-workspace-icon": "Arbetsytans ikon (markdown)",
"multi-selection-active": "Click checkboxes to select boards", "multi-selection-active": "Klicka i kryssrutor för att välja tavlor",
"activity-dueDate": "redigerade förfallodag till %s av %s", "activity-dueDate": "redigerade förfallodag till %s av %s",
"activity-endDate": "redigerade slutdatum till %s av %s", "activity-endDate": "redigerade slutdatum till %s av %s",
"add-attachment": "Lägg till bilaga", "add-attachment": "Lägg till bilaga",
@ -1411,91 +1411,91 @@
"add-job": "Lägg till jobb", "add-job": "Lägg till jobb",
"attachment-migration": "Migrering av bilagor", "attachment-migration": "Migrering av bilagor",
"attachment-monitoring": "Övervakning av bilagor", "attachment-monitoring": "Övervakning av bilagor",
"attachment-settings": "Attachment Settings", "attachment-settings": "Bilageinställningar",
"attachment-storage-settings": "Storage Settings", "attachment-storage-settings": " Lagringsinställningar",
"automatic-migration": "Automatic Migration", "automatic-migration": "Automatisk migrering",
"back-to-settings": "Back to Settings", "back-to-settings": "Tillbaka till inställningar",
"board-id": "Board ID", "board-id": "Tavlans ID",
"board-migration": "Board Migration", "board-migration": "Tavelmigration",
"board-migrations": "Board Migrations", "board-migrations": "Migrering av tavlor",
"card-show-lists-on-minicard": "Show Lists on Minicard", "card-show-lists-on-minicard": "Visa listor på minikort",
"comprehensive-board-migration": "Comprehensive Board Migration", "comprehensive-board-migration": "Fullständig migration av alla tavlor ",
"comprehensive-board-migration-description": "Performs comprehensive checks and fixes for board data integrity, including list ordering, card positions, and swimlane structure.", "comprehensive-board-migration-description": "Utför omfattande kontroller och korrigeringar för tavlans dataintegritet, inklusive listordning, kortpositioner och swimlane-struktur.",
"delete-duplicate-empty-lists-migration": "Delete Duplicate Empty Lists", "delete-duplicate-empty-lists-migration": "Ta bort duplicerade tomma listor",
"delete-duplicate-empty-lists-migration-description": "Safely deletes empty duplicate lists. Only removes lists that have no cards AND have another list with the same title that contains cards.", "delete-duplicate-empty-lists-migration-description": "Tar säkert bort tomma duplicerade listor. Tar endast bort listor som inte har några kort OCH där det finns en annan lista med samma titel som innehåller kort.",
"lost-cards": "Lost Cards", "lost-cards": "Förlorade kort ",
"lost-cards-list": "Restored Items", "lost-cards-list": "Återställda objekt",
"restore-lost-cards-migration": "Restore Lost Cards", "restore-lost-cards-migration": "Återställ förlorade kort",
"restore-lost-cards-migration-description": "Finds and restores cards and lists with missing swimlaneId or listId. Creates a 'Lost Cards' swimlane to make all lost items visible again.", "restore-lost-cards-migration-description": "Hittar och återställer kort och listor som saknar simbaneid eller listId. Skapar en 'Förlorade kort'-simbana för att göra alla förlorade objekt synliga igen.",
"restore-all-archived-migration": "Restore All Archived", "restore-all-archived-migration": "Återställ från Arkiv",
"restore-all-archived-migration-description": "Restores all archived swimlanes, lists, and cards. Automatically fixes any missing swimlaneId or listId to make items visible.", "restore-all-archived-migration-description": "Återställer alla arkiverade swimlanes, listor och kort. Korrigerar automatiskt alla saknade simbaneId eller listId för att göra objekt synliga.",
"fix-missing-lists-migration": "Fix Missing Lists", "fix-missing-lists-migration": "Fixa saknade listor",
"fix-missing-lists-migration-description": "Detects and repairs missing or corrupted lists in the board structure.", "fix-missing-lists-migration-description": "Upptäcker och reparerar saknade eller korrupta listor i tavlans struktur.",
"fix-avatar-urls-migration": "Fix Avatar URLs", "fix-avatar-urls-migration": "Fixa avatar-URL:er",
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.", "fix-avatar-urls-migration-description": "Uppdaterar avatar-URL:er för tavlans medlemmar till att använda rätt lagrings-backend och fixar trasiga avatar-referenser.",
"fix-all-file-urls-migration": "Fix All File URLs", "fix-all-file-urls-migration": "Fixa alla fil-URL:er",
"fix-all-file-urls-migration-description": "Updates all file attachment URLs on this board to use the correct storage backend and fixes broken file references.", "fix-all-file-urls-migration-description": "Uppdaterar alla URL:er för filbilagor på denna tavla till att använda rätt lagrings-backend och fixar trasiga filreferenser.",
"migration-needed": "Migration Needed", "migration-needed": "Migrering krävs",
"migration-complete": "Complete", "migration-complete": "Avslutad",
"migration-running": "Running...", "migration-running": "Körs...",
"migration-successful": "Migration completed successfully", "migration-successful": "Migrering slutförd",
"migration-failed": "Migration failed", "migration-failed": "Migrering misslyckades",
"migrations": "Migrations", "migrations": "Migreringar",
"migrations-admin-only": "Only board administrators can run migrations", "migrations-admin-only": "Endast tavlans administratörer kan köra migreringar",
"migrations-description": "Run data integrity checks and repairs for this board. Each migration can be executed individually.", "migrations-description": "Kör dataintegritetskontroller och reparationer för denna tavla. Varje migrering kan utföras individuellt.",
"no-issues-found": "No issues found", "no-issues-found": "Inga problem hittades",
"run-migration": "Run Migration", "run-migration": "Kör migrering",
"run-comprehensive-migration-confirm": "This will perform a comprehensive migration to check and fix board data integrity. This may take a few moments. Continue?", "run-comprehensive-migration-confirm": "Detta kommer att utföra en omfattande migrering för att kontrollera och fixa tavlans dataintegritet. Detta kan ta en liten stund. Fortsätt?",
"run-delete-duplicate-empty-lists-migration-confirm": "This will first convert any shared lists to per-swimlane lists, then delete empty lists that have a duplicate list with the same title containing cards. Only truly redundant empty lists will be removed. Continue?", "run-delete-duplicate-empty-lists-migration-confirm": "Detta kommer först att konvertera alla delade listor till listor per simbana, och sedan ta bort tomma listor som har en dubblettlista med samma titel som innehåller kort. Endast överflödiga tomma listor kommer att tas bort. Fortsätt?",
"run-restore-lost-cards-migration-confirm": "This will create a 'Lost Cards' swimlane and restore all cards and lists with missing swimlaneId or listId. This only affects non-archived items. Continue?", "run-restore-lost-cards-migration-confirm": "Detta kommer att skapa en 'Förlorade kort'-simbana och återställa alla kort och listor som saknar simbaneId eller listId. Detta påverkar endast icke-arkiverade objekt. Fortsätt?",
"run-restore-all-archived-migration-confirm": "This will restore ALL archived swimlanes, lists, and cards, making them visible again. Any items with missing IDs will be automatically fixed. This cannot be easily undone. Continue?", "run-restore-all-archived-migration-confirm": "Detta kommer att återställa ALLA arkiverade simbanor, listor och kort, vilket gör dem synliga igen. Alla objekt med saknade ID:n kommer att fixas automatiskt. Detta kan inte enkelt ångras. Fortsätt?",
"run-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?", "run-fix-missing-lists-migration-confirm": "Detta kommer att upptäcka och reparera saknade eller korrupta listor i tavlans struktur. Fortsätt?",
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members to use the correct storage backend. Continue?", "run-fix-avatar-urls-migration-confirm": "Detta kommer att uppdatera avatar-URL:er för tavlans medlemmar till att använda rätt lagrings-backend. Fortsätt?",
"run-fix-all-file-urls-migration-confirm": "This will update all file attachment URLs on this board to use the correct storage backend. Continue?", "run-fix-all-file-urls-migration-confirm": "Detta kommer att uppdatera alla URL:er för filbilagor på denna tavla till att använda rätt lagrings-backend. Fortsätt?",
"restore-lost-cards-nothing-to-restore": "No lost swimlanes, lists, or cards to restore", "restore-lost-cards-nothing-to-restore": "Inga förlorade simbanor, listor eller kort att återställa",
"migration-progress-title": "Board Migration in Progress", "migration-progress-title": "Tavlans migrering pågår",
"migration-progress-overall": "Overall Progress", "migration-progress-overall": "Övergripande förlopp",
"migration-progress-current-step": "Current Step", "migration-progress-current-step": "Nuvarande steg",
"migration-progress-status": "Status", "migration-progress-status": "Status",
"migration-progress-details": "Detaljer", "migration-progress-details": "Detaljer",
"migration-progress-note": "Please wait while we migrate your board to the latest structure...", "migration-progress-note": "Vänta medan vi migrerar din tavla till den senaste strukturen...",
"step-analyze-board-structure": "Analyze Board Structure", "step-analyze-board-structure": "Analysera tavlans struktur",
"step-fix-orphaned-cards": "Fix Orphaned Cards", "step-fix-orphaned-cards": "Fixa övergivna kort",
"step-convert-shared-lists": "Convert Shared Lists", "step-convert-shared-lists": "Konvertera delade listor",
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists", "step-ensure-per-swimlane-lists": "Säkerställ listor per simbana",
"step-validate-migration": "Validate Migration", "step-validate-migration": "Validera migrering",
"step-fix-avatar-urls": "Fix Avatar URLs", "step-fix-avatar-urls": "Fixa avatar-URL:er",
"step-fix-attachment-urls": "Fix Attachment URLs", "step-fix-attachment-urls": "Fixa bilage-URL:er",
"step-analyze-lists": "Analyze Lists", "step-analyze-lists": "Analysera listor",
"step-create-missing-lists": "Create Missing Lists", "step-create-missing-lists": "Create Missing Lists",
"step-update-cards": "Update Cards", "step-update-cards": "Uppdatera kort",
"step-finalize": "Finalize", "step-finalize": "Slutför",
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists", "step-delete-duplicate-empty-lists": "Ta bort duplicerade tomma listor",
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane", "step-ensure-lost-cards-swimlane": "Säkerställ simbana för förlorade kort",
"step-restore-lists": "Restore Lists", "step-restore-lists": "Återställ listor",
"step-restore-cards": "Restore Cards", "step-restore-cards": "Återställ kort",
"step-restore-swimlanes": "Restore Swimlanes", "step-restore-swimlanes": "Återställ simbanor",
"step-fix-missing-ids": "Fix Missing IDs", "step-fix-missing-ids": "Fixa saknade ID:n",
"step-scan-users": "Checking board member avatars", "step-scan-users": "Kontrollerar tavlans medlemsavatarer",
"step-scan-files": "Checking board file attachments", "step-scan-files": "Kontrollerar tavlans filbilagor",
"step-fix-file-urls": "Fixing file URLs", "step-fix-file-urls": "Fixar fil-URL:er",
"cleanup": "Cleanup", "cleanup": "Rensning",
"cleanup-old-jobs": "Cleanup Old Jobs", "cleanup-old-jobs": "Rensa gamla jobb",
"completed": "Avslutad", "completed": "Avslutad",
"conversion-info-text": "This conversion is performed once per board and improves performance. You can continue using the board normally.", "conversion-info-text": "Denna konvertering utförs en gång per tavla och förbättrar prestandan. Ni kan fortsätta använda tavlan som vanligt.",
"converting-board": "Converting Board", "converting-board": "Konverterar tavla",
"converting-board-description": "Converting board structure for improved functionality. This may take a few moments.", "converting-board-description": "Konverterar tavlans struktur för förbättrad funktionalitet. Detta kan ta en liten stund.",
"cpu-cores": "CPU Cores", "cpu-cores": "CPU-kärnor",
"cpu-usage": "CPU Usage", "cpu-usage": "CPU-användning",
"current-action": "Current Action", "current-action": "Nuvarande åtgärd",
"database-migration": "Database Migration", "database-migration": "Databas­migrering",
"database-migration-description": "Updating database structure for improved functionality and performance. This process may take several minutes.", "database-migration-description": "Uppdaterar databasstrukturen för förbättrad funktionalitet och prestanda. Denna process kan ta flera minuter.",
"database-migrations": "Database Migrations", "database-migrations": "Databas­migreringar",
"days-old": "Days Old", "days-old": "Dagar gammal",
"duration": "Duration", "duration": "Varaktighet",
"errors": "Errors", "errors": "Fel",
"estimated-time-remaining": "Beräknad återstående tid", "estimated-time-remaining": "Beräknad återstående tid",
"every-1-day": "Var 1 dag", "every-1-day": "Var 1 dag",
"every-1-hour": "Var 1 timme", "every-1-hour": "Var 1 timme",
@ -1504,76 +1504,76 @@
"every-30-minutes": "Var 30 minuter", "every-30-minutes": "Var 30 minuter",
"every-5-minutes": "Var 5 minuter", "every-5-minutes": "Var 5 minuter",
"every-6-hours": "Var 6 timmar", "every-6-hours": "Var 6 timmar",
"export-monitoring": "Export Monitoring", "export-monitoring": "Exportövervakning",
"filesystem-attachments": "Filesystem Attachments", "filesystem-attachments": "Filssystem-bilagor",
"filesystem-size": "Filesystem Size", "filesystem-size": "Filssystemstorlek",
"filesystem-storage": "Filesystem Storage", "filesystem-storage": "Filssystemlagring",
"force-board-scan": "Force Board Scan", "force-board-scan": "Tvinga tavelskanning",
"gridfs-attachments": "GridFS Attachments", "gridfs-attachments": "GridFS-bilagor",
"gridfs-size": "GridFS Size", "gridfs-size": "GridFS-storlek",
"gridfs-storage": "GridFS", "gridfs-storage": "GridFS",
"hide-list-on-minicard": "Hide List on Minicard", "hide-list-on-minicard": "Göm lista på minikort",
"idle-migration": "Idle Migration", "idle-migration": "Inaktiv migrering",
"job-description": "Job Description", "job-description": "Jobbeskrivning",
"job-details": "Job Details", "job-details": "Jobbdetaljer",
"job-name": "Job Name", "job-name": "Jobbnamn",
"job-queue": "Job Queue", "job-queue": "Jobbkö",
"last-run": "Last Run", "last-run": "Senaste körning",
"max-concurrent": "Max Concurrent", "max-concurrent": "Max samtidigt",
"memory-usage": "Memory Usage", "memory-usage": "Minnesanvändning",
"migrate-all-to-filesystem": "Migrate All to Filesystem", "migrate-all-to-filesystem": "Migrera allt till filsystem",
"migrate-all-to-gridfs": "Migrate All to GridFS", "migrate-all-to-gridfs": "Migrera allt till GridFS",
"migrate-all-to-s3": "Migrate All to S3", "migrate-all-to-s3": "Migrera allt till S3",
"migrated-attachments": "Migrated Attachments", "migrated-attachments": "Migrerade bilagor",
"migration-batch-size": "Batch Size", "migration-batch-size": "Batchstorlek",
"migration-batch-size-description": "Number of attachments to process in each batch (1-100)", "migration-batch-size-description": "Antal bilagor att bearbeta i varje batch (1-100)",
"migration-cpu-threshold": "CPU Threshold (%)", "migration-cpu-threshold": "CPU-tröskel (%)",
"migration-cpu-threshold-description": "Pause migration when CPU usage exceeds this percentage (10-90)", "migration-cpu-threshold-description": "Pausa migreringen när CPU-användningen överstiger denna procentsats (10-90)",
"migration-delay-ms": "Delay (ms)", "migration-delay-ms": "Fördröjning (ms)",
"migration-delay-ms-description": "Delay between batches in milliseconds (100-10000)", "migration-delay-ms-description": "Fördröjning mellan batchar i millisekunder (100-10000)",
"migration-detector": "Migration Detector", "migration-detector": "Migreringsdetektor",
"migration-info-text": "Database migrations are performed once and improve system performance. The process continues in the background even if you close your browser.", "migration-info-text": "Databas­migreringar utförs en gång och förbättrar systemets prestanda. Processen fortsätter i bakgrunden även om du stänger din webbläsare.",
"migration-log": "Migration Log", "migration-log": "Migreringslogg",
"migration-markers": "Migration Markers", "migration-markers": "Migreringsmarkörer",
"migration-resume-failed": "Failed to resume migration", "migration-resume-failed": "Misslyckades med att återuppta migrering",
"migration-resumed": "Migration resumed", "migration-resumed": "Migrering återupptogs",
"migration-steps": "Migration Steps", "migration-steps": "Migreringssteg",
"migration-warning-text": "Please do not close your browser during migration. The process will continue in the background but may take longer to complete.", "migration-warning-text": "Vänligen stäng inte din webbläsare under migreringen. Processen fortsätter i bakgrunden men kan ta längre tid att slutföra.",
"monitoring-export-failed": "Failed to export monitoring data", "monitoring-export-failed": "Misslyckades med att exportera övervakningsdata",
"monitoring-refresh-failed": "Failed to refresh monitoring data", "monitoring-refresh-failed": "Misslyckades med att uppdatera övervakningsdata",
"next": "Next", "next": "Nästa",
"next-run": "Next Run", "next-run": "Nästa körning",
"of": "av", "of": "av",
"operation-type": "Operation Type", "operation-type": "Operationstyp",
"overall-progress": "Overall Progress", "overall-progress": "Övergripande förlopp",
"page": "Page", "page": "Sida",
"pause-migration": "Pause Migration", "pause-migration": "Pausa migrering",
"previous": "Previous", "previous": "Föregående",
"refresh": "Refresh", "refresh": "Uppdatera",
"refresh-monitoring": "Refresh Monitoring", "refresh-monitoring": "Uppdatera övervakning",
"remaining-attachments": "Remaining Attachments", "remaining-attachments": "Återstående bilagor",
"resume-migration": "Resume Migration", "resume-migration": "Återuppta migrering",
"run-once": "Run once", "run-once": "Kör en gång",
"s3-attachments": "S3 Attachments", "s3-attachments": "S3-bilagor",
"s3-size": "S3 Size", "s3-size": "S3-storlek",
"s3-storage": "S3", "s3-storage": "S3",
"scanning-status": "Scanning Status", "scanning-status": "Skanningsstatus",
"schedule": "Schedule", "schedule": "Schema",
"search-boards-or-operations": "Search boards or operations...", "search-boards-or-operations": "Sök tavlor eller operationer...",
"show-list-on-minicard": "Show List on Minicard", "show-list-on-minicard": "Visa lista på minikort",
"showing": "Showing", "showing": "Visar",
"start-test-operation": "Start Test Operation", "start-test-operation": "Starta testoperation",
"start-time": "Start Time", "start-time": "Starttid",
"step-progress": "Step Progress", "step-progress": "Stegförlopp",
"stop-migration": "Stop Migration", "stop-migration": "Stoppa migrering",
"storage-distribution": "Storage Distribution", "storage-distribution": "Lagringsdistribution",
"system-resources": "System Resources", "system-resources": "Systemresurser",
"total-attachments": "Total Attachments", "total-attachments": "Totala bilagor",
"total-operations": "Total Operations", "total-operations": "Totala operationer",
"total-size": "Total Size", "total-size": "Total storlek",
"unmigrated-boards": "Unmigrated Boards", "unmigrated-boards": "Okonverterade tavlor",
"weight": "Weight", "weight": "Vikt",
"idle": "Idle", "idle": "Inaktiv",
"complete": "Complete", "complete": "Avslutad",
"cron": "Cron" "cron": "Cron"
} }

View file

@ -78,18 +78,18 @@
"activity-deleteComment": "評論已刪除", "activity-deleteComment": "評論已刪除",
"activity-receivedDate": "已編輯收到日期為 %s %s", "activity-receivedDate": "已編輯收到日期為 %s %s",
"activity-startDate": "已編輯起始日期為 %s %s", "activity-startDate": "已編輯起始日期為 %s %s",
"allboards.starred": "Starred", "allboards.starred": "已加星號",
"allboards.templates": "範本", "allboards.templates": "範本",
"allboards.remaining": "Remaining", "allboards.remaining": "剩餘",
"allboards.workspaces": "Workspaces", "allboards.workspaces": "工作空間",
"allboards.add-workspace": "Add Workspace", "allboards.add-workspace": "新增工作空間",
"allboards.add-workspace-prompt": "Workspace name", "allboards.add-workspace-prompt": "工作空間名稱",
"allboards.add-subworkspace": "Add Subworkspace", "allboards.add-subworkspace": "新增子工作空間",
"allboards.add-subworkspace-prompt": "Subworkspace name", "allboards.add-subworkspace-prompt": "子工作空間名稱",
"allboards.edit-workspace": "Edit workspace", "allboards.edit-workspace": "編輯工作空間",
"allboards.edit-workspace-name": "Workspace name", "allboards.edit-workspace-name": "工作空間名稱",
"allboards.edit-workspace-icon": "Workspace icon (markdown)", "allboards.edit-workspace-icon": "工作空間圖示 (markdown)",
"multi-selection-active": "Click checkboxes to select boards", "multi-selection-active": "點選核取方塊以選取看板",
"activity-dueDate": "已編輯截止日期為 %s %s", "activity-dueDate": "已編輯截止日期為 %s %s",
"activity-endDate": "已編輯結束日期為 %s %s", "activity-endDate": "已編輯結束日期為 %s %s",
"add-attachment": "新增附件", "add-attachment": "新增附件",
@ -466,8 +466,8 @@
"filter-no-label": "沒有標籤", "filter-no-label": "沒有標籤",
"filter-member-label": "按成員篩選", "filter-member-label": "按成員篩選",
"filter-no-member": "沒有成員", "filter-no-member": "沒有成員",
"filter-assignee-label": "按代理人篩選", "filter-assignee-label": "按承辦人篩選",
"filter-no-assignee": "沒有代理人", "filter-no-assignee": "沒有承辦人",
"filter-custom-fields-label": "按自訂欄位篩選", "filter-custom-fields-label": "按自訂欄位篩選",
"filter-no-custom-fields": "沒有自訂欄位", "filter-no-custom-fields": "沒有自訂欄位",
"filter-show-archive": "顯示封存的清單", "filter-show-archive": "顯示封存的清單",
@ -639,7 +639,7 @@
"has-spenttime-cards": "耗時卡", "has-spenttime-cards": "耗時卡",
"time": "時間", "time": "時間",
"title": "標題", "title": "標題",
"toggle-assignees": "切換卡片的代理人 1-9按加入看板的順序。", "toggle-assignees": "切換卡片的承辦人 1-9按加入看板的順序。",
"toggle-labels": "切換卡片的標籤 1-9。多重選擇新增標籤 1-9", "toggle-labels": "切換卡片的標籤 1-9。多重選擇新增標籤 1-9",
"remove-labels-multiselect": "多重選擇移除標籤 1-9", "remove-labels-multiselect": "多重選擇移除標籤 1-9",
"tracking": "訂閱相關通知", "tracking": "訂閱相關通知",
@ -963,8 +963,8 @@
"accounts-allowUserDelete": "允許用戶自行刪除其帳戶", "accounts-allowUserDelete": "允許用戶自行刪除其帳戶",
"hide-minicard-label-text": "隱藏迷你卡片標籤內文", "hide-minicard-label-text": "隱藏迷你卡片標籤內文",
"show-desktop-drag-handles": "顯示桌面拖曳工具", "show-desktop-drag-handles": "顯示桌面拖曳工具",
"assignee": "代理人", "assignee": "承辦人",
"cardAssigneesPopup-title": "代理人", "cardAssigneesPopup-title": "承辦人",
"addmore-detail": "新增更多詳細描述", "addmore-detail": "新增更多詳細描述",
"show-on-card": "在卡片上顯示", "show-on-card": "在卡片上顯示",
"show-on-minicard": "在小卡片顯示", "show-on-minicard": "在小卡片顯示",
@ -1060,7 +1060,7 @@
"operator-user-abbrev": "", "operator-user-abbrev": "",
"operator-member": "成員", "operator-member": "成員",
"operator-member-abbrev": "m", "operator-member-abbrev": "m",
"operator-assignee": "代理人", "operator-assignee": "承辦人",
"operator-assignee-abbrev": "a", "operator-assignee-abbrev": "a",
"operator-creator": "建立者", "operator-creator": "建立者",
"operator-status": "狀態", "operator-status": "狀態",
@ -1091,7 +1091,7 @@
"predicate-checklist": "待辦清單", "predicate-checklist": "待辦清單",
"predicate-start": "開始", "predicate-start": "開始",
"predicate-end": "完成", "predicate-end": "完成",
"predicate-assignee": "代理人", "predicate-assignee": "承辦人",
"predicate-member": "成員", "predicate-member": "成員",
"predicate-public": "公開", "predicate-public": "公開",
"predicate-private": "私有", "predicate-private": "私有",
@ -1116,10 +1116,10 @@
"globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - 卡片評論包含 *<text>*.", "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - 卡片評論包含 *<text>*.",
"globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - 卡片標籤要符合 *<color>* 或 *<name>", "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - 卡片標籤要符合 *<color>* 或 *<name>",
"globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name|color>` - 的簡寫 `__operator_label__:<color>` 或 `__operator_label__:<name>`", "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name|color>` - 的簡寫 `__operator_label__:<color>` 或 `__operator_label__:<name>`",
"globalSearch-instructions-operator-user": "`__operator_user__:<username>` - 卡片,其中 *<username>* 是 *成員* 或 *代理人*", "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - 卡片,其中 *<username>* 是 *成員* 或 *承辦人*",
"globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - `user:<username>` 的簡寫", "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - `user:<username>` 的簡寫",
"globalSearch-instructions-operator-member": "`__operator_member__:<username>` - 卡片,其中 *<username>* 是i *成員*", "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - 卡片,其中 *<username>* 是i *成員*",
"globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - 卡片,其中 *<username>* 是 *代理人*", "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - 卡片,其中 *<username>* 是 *承辦人*",
"globalSearch-instructions-operator-creator": "`__operator_creator__:<username>` - 卡片,其中 *<username>* 是卡片的建立者", "globalSearch-instructions-operator-creator": "`__operator_creator__:<username>` - 卡片,其中 *<username>* 是卡片的建立者",
"globalSearch-instructions-operator-org": "`__operator_org__:<display name|short name>` - 屬於分配給組織 *<name>* 看板的卡片", "globalSearch-instructions-operator-org": "`__operator_org__:<display name|short name>` - 屬於分配給組織 *<name>* 看板的卡片",
"globalSearch-instructions-operator-team": "`__operator_team__:<display name|short name>` - 屬於分配給團隊 *<name>* 看板的卡片", "globalSearch-instructions-operator-team": "`__operator_team__:<display name|short name>` - 屬於分配給團隊 *<name>* 看板的卡片",
@ -1417,70 +1417,70 @@
"back-to-settings": "回到設定", "back-to-settings": "回到設定",
"board-id": "看板 ID", "board-id": "看板 ID",
"board-migration": "看板遷移", "board-migration": "看板遷移",
"board-migrations": "Board Migrations", "board-migrations": "看板遷移",
"card-show-lists-on-minicard": "在迷你卡片上顯示清單", "card-show-lists-on-minicard": "在迷你卡片上顯示清單",
"comprehensive-board-migration": "Comprehensive Board Migration", "comprehensive-board-migration": "全面看板遷移",
"comprehensive-board-migration-description": "Performs comprehensive checks and fixes for board data integrity, including list ordering, card positions, and swimlane structure.", "comprehensive-board-migration-description": "執行全面檢查與修復,確保看板資料完整性,包括清單排序、卡片位置及泳道結構。",
"delete-duplicate-empty-lists-migration": "Delete Duplicate Empty Lists", "delete-duplicate-empty-lists-migration": "刪除重複的空清單",
"delete-duplicate-empty-lists-migration-description": "Safely deletes empty duplicate lists. Only removes lists that have no cards AND have another list with the same title that contains cards.", "delete-duplicate-empty-lists-migration-description": "安全地刪除空的重複清單。僅移除既無卡片、又存在標題相同且含卡片的另一份清單的清單。",
"lost-cards": "Lost Cards", "lost-cards": "遺失的卡片",
"lost-cards-list": "Restored Items", "lost-cards-list": "已還原的項目",
"restore-lost-cards-migration": "Restore Lost Cards", "restore-lost-cards-migration": "還原遺失的卡片",
"restore-lost-cards-migration-description": "Finds and restores cards and lists with missing swimlaneId or listId. Creates a 'Lost Cards' swimlane to make all lost items visible again.", "restore-lost-cards-migration-description": "尋找並還原缺少泳道 ID 或清單 ID 的卡片與清單。建立「遺失的卡片」泳道,使所有遺失項目重新可見。",
"restore-all-archived-migration": "Restore All Archived", "restore-all-archived-migration": "還原所有封存",
"restore-all-archived-migration-description": "Restores all archived swimlanes, lists, and cards. Automatically fixes any missing swimlaneId or listId to make items visible.", "restore-all-archived-migration-description": "還原所有已封存的泳道、清單與卡片。自動修復任何缺少泳道 ID 或清單 ID 的項目以使它們重新可見。",
"fix-missing-lists-migration": "Fix Missing Lists", "fix-missing-lists-migration": "修復遺失的清單",
"fix-missing-lists-migration-description": "Detects and repairs missing or corrupted lists in the board structure.", "fix-missing-lists-migration-description": "偵測並修復在看板結構中遺失或損毀的清單。",
"fix-avatar-urls-migration": "Fix Avatar URLs", "fix-avatar-urls-migration": "修復大頭照 URL",
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.", "fix-avatar-urls-migration-description": "更新看板成員的大頭照 URL 以使用正確的儲存空間後端並修復損壞的大頭照參照。",
"fix-all-file-urls-migration": "Fix All File URLs", "fix-all-file-urls-migration": "修復所有檔案 URL",
"fix-all-file-urls-migration-description": "Updates all file attachment URLs on this board to use the correct storage backend and fixes broken file references.", "fix-all-file-urls-migration-description": "更新所有此看板的檔案附件 URL 以使用正確的儲存空間後端並修復損壞的檔案參照。",
"migration-needed": "Migration Needed", "migration-needed": "需要遷移",
"migration-complete": "完成", "migration-complete": "完成",
"migration-running": "Running...", "migration-running": "正在執行……",
"migration-successful": "Migration completed successfully", "migration-successful": "遷移成功完成",
"migration-failed": "Migration failed", "migration-failed": "遷移失敗",
"migrations": "Migrations", "migrations": "遷移",
"migrations-admin-only": "Only board administrators can run migrations", "migrations-admin-only": "僅看板管理員可執行遷移",
"migrations-description": "Run data integrity checks and repairs for this board. Each migration can be executed individually.", "migrations-description": "為此看板執行資料完整性檢查並修復。每個遷移皆可單獨執行。",
"no-issues-found": "No issues found", "no-issues-found": "未找到問題",
"run-migration": "Run Migration", "run-migration": "執行遷移",
"run-comprehensive-migration-confirm": "This will perform a comprehensive migration to check and fix board data integrity. This may take a few moments. Continue?", "run-comprehensive-migration-confirm": "這將會執行全面的遷移以檢查並修復看板資料完整性。這可能需要數分鐘。要繼續嗎?",
"run-delete-duplicate-empty-lists-migration-confirm": "This will first convert any shared lists to per-swimlane lists, then delete empty lists that have a duplicate list with the same title containing cards. Only truly redundant empty lists will be removed. Continue?", "run-delete-duplicate-empty-lists-migration-confirm": "此操作將先將所有共享清單轉換為每個泳道專屬的清單,接著刪除那些存在標題相同且含卡片之重複清單的空清單。僅會移除真正冗餘的空清單。要繼續嗎?",
"run-restore-lost-cards-migration-confirm": "This will create a 'Lost Cards' swimlane and restore all cards and lists with missing swimlaneId or listId. This only affects non-archived items. Continue?", "run-restore-lost-cards-migration-confirm": "這將建立一個「遺失的卡片」泳道,並還原所有缺少泳道 ID 或清單 ID 的卡片與清單。此操作僅影響未封存項目。繼續?",
"run-restore-all-archived-migration-confirm": "This will restore ALL archived swimlanes, lists, and cards, making them visible again. Any items with missing IDs will be automatically fixed. This cannot be easily undone. Continue?", "run-restore-all-archived-migration-confirm": "此操作將還原所有已封存的泳道、清單及卡片,使其重新顯示。任何缺少 ID 的項目將自動修復。此操作無法輕易撤銷。要繼續嗎?",
"run-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?", "run-fix-missing-lists-migration-confirm": "這將會偵測並修復在看板結構中遺失或損毀的清單。要繼續嗎?",
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members to use the correct storage backend. Continue?", "run-fix-avatar-urls-migration-confirm": "這將會更新看板成員的大頭照 URL 以使用正確的儲存空間後端。要繼續嗎?",
"run-fix-all-file-urls-migration-confirm": "This will update all file attachment URLs on this board to use the correct storage backend. Continue?", "run-fix-all-file-urls-migration-confirm": "這將會更新此看板上的所有檔案附件 URL 以使用正確的儲存空間後端。要繼續嗎?",
"restore-lost-cards-nothing-to-restore": "No lost swimlanes, lists, or cards to restore", "restore-lost-cards-nothing-to-restore": "沒有需要還原的遺失泳道、清單或卡片",
"migration-progress-title": "Board Migration in Progress", "migration-progress-title": "正在進行看板遷移",
"migration-progress-overall": "整體進度", "migration-progress-overall": "整體進度",
"migration-progress-current-step": "Current Step", "migration-progress-current-step": "目前步驟",
"migration-progress-status": "狀態", "migration-progress-status": "狀態",
"migration-progress-details": "內容", "migration-progress-details": "內容",
"migration-progress-note": "Please wait while we migrate your board to the latest structure...", "migration-progress-note": "請稍候,我們正在將您的看板遷移至最新結構……",
"step-analyze-board-structure": "Analyze Board Structure", "step-analyze-board-structure": "分析看板結構",
"step-fix-orphaned-cards": "Fix Orphaned Cards", "step-fix-orphaned-cards": "修復孤立卡片",
"step-convert-shared-lists": "Convert Shared Lists", "step-convert-shared-lists": "轉換共享清單",
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists", "step-ensure-per-swimlane-lists": "確保每個泳道專屬的清單",
"step-validate-migration": "Validate Migration", "step-validate-migration": "驗證遷移",
"step-fix-avatar-urls": "Fix Avatar URLs", "step-fix-avatar-urls": "修復大頭照 URL",
"step-fix-attachment-urls": "Fix Attachment URLs", "step-fix-attachment-urls": "修復附件 URL",
"step-analyze-lists": "Analyze Lists", "step-analyze-lists": "分析清單",
"step-create-missing-lists": "Create Missing Lists", "step-create-missing-lists": "建立遺失的清單",
"step-update-cards": "Update Cards", "step-update-cards": "更新卡片",
"step-finalize": "Finalize", "step-finalize": "完成",
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists", "step-delete-duplicate-empty-lists": "刪除重複的空清單",
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane", "step-ensure-lost-cards-swimlane": "確保遺失的卡片泳道",
"step-restore-lists": "Restore Lists", "step-restore-lists": "還原清單",
"step-restore-cards": "Restore Cards", "step-restore-cards": "還原卡片",
"step-restore-swimlanes": "Restore Swimlanes", "step-restore-swimlanes": "還原泳道",
"step-fix-missing-ids": "Fix Missing IDs", "step-fix-missing-ids": "修復遺失的 ID",
"step-scan-users": "Checking board member avatars", "step-scan-users": "正在檢查看板成員大頭照",
"step-scan-files": "Checking board file attachments", "step-scan-files": "正在檢查看板檔案附件",
"step-fix-file-urls": "Fixing file URLs", "step-fix-file-urls": "正在修復檔案 URL",
"cleanup": "清理", "cleanup": "清理",
"cleanup-old-jobs": "清理舊工作", "cleanup-old-jobs": "清理舊工作",
"completed": "已完成", "completed": "已完成",

View file

@ -4440,6 +4440,83 @@ JsonRoutes.add('GET', '/api/boards/:boardId/cards_count', function(
}); });
}, },
); );
/**
* @operation archive_card
* @summary Archive a card
*
* @description Archive a card
* @param {string} boardId the board ID of the card
* @param {string} listId the list ID of the card
* @param {string} cardId the ID of the card
* @return_type {_id: string, archived: boolean, archivedAt: Date}
*/
JsonRoutes.add(
'POST',
'/api/boards/:boardId/lists/:listId/cards/:cardId/archive',
function(req, res) {
const paramBoardId = req.params.boardId;
const paramCardId = req.params.cardId;
const paramListId = req.params.listId;
Authentication.checkBoardAccess(req.userId, paramBoardId);
const card = ReactiveCache.getCard({
_id: paramCardId,
listId: paramListId,
boardId: paramBoardId,
archived: false,
});
if (!card) {
throw new Meteor.Error(404, 'Card not found');
}
card.archive();
JsonRoutes.sendResult(res, {
code: 200,
data: {
_id: paramCardId,
archived: true,
archivedAt: new Date(),
},
});
},
);
/**
* @operation unarchive_card
* @summary Unarchive card
*
* @description Unarchive card
* @param {string} boardId the board ID of the card
* @param {string} listId the list ID of the card
* @param {string} cardId the ID of the card
* @return_type {_id: string, archived: boolean}
*/
JsonRoutes.add(
'POST',
'/api/boards/:boardId/lists/:listId/cards/:cardId/unarchive',
function(req, res) {
const paramBoardId = req.params.boardId;
const paramCardId = req.params.cardId;
const paramListId = req.params.listId;
Authentication.checkBoardAccess(req.userId, paramBoardId);
const card = ReactiveCache.getCard({
_id: paramCardId,
listId: paramListId,
boardId: paramBoardId,
archived: true,
});
if (!card) {
throw new Meteor.Error(404, 'Card not found');
}
card.restore();
JsonRoutes.sendResult(res, {
code: 200,
data: {
_id: paramCardId,
archived: false,
},
});
},
);
} }
// Position history tracking methods // Position history tracking methods

View file

@ -2594,6 +2594,53 @@ paths:
properties: properties:
_id: _id:
type: string type: string
/api/boards/{board}/lists/{list}/cards/{card}/archive:
post:
operationId: archive_card
summary: Archive a card
description: |
Archive a card
tags:
- Cards
consumes:
- multipart/form-data
- application/json
parameters:
- name: board
in: path
description: |
the board ID of the card
type: string
required: true
- name: list
in: path
description: |
the list ID of the card
type: string
required: true
- name: card
in: path
description: |
the ID of the card
type: string
required: true
produces:
- application/json
security:
- UserSecurity: []
responses:
'200':
description: |-
200 response
schema:
type: object
properties:
_id:
type: string
archived:
type: boolean
archivedAt:
type: string
/api/boards/{board}/lists/{list}/cards/{card}/customFields/{customField}: /api/boards/{board}/lists/{list}/cards/{card}/customFields/{customField}:
post: post:
operationId: edit_card_custom_field operationId: edit_card_custom_field
@ -2658,6 +2705,51 @@ paths:
type: string type: string
value: value:
type: object type: object
/api/boards/{board}/lists/{list}/cards/{card}/unarchive:
post:
operationId: unarchive_card
summary: Unarchive card
description: |
Unarchive card
tags:
- Cards
consumes:
- multipart/form-data
- application/json
parameters:
- name: board
in: path
description: |
the board ID of the card
type: string
required: true
- name: list
in: path
description: |
the list ID of the card
type: string
required: true
- name: card
in: path
description: |
the ID of the card
type: string
required: true
produces:
- application/json
security:
- UserSecurity: []
responses:
'200':
description: |-
200 response
schema:
type: object
properties:
_id:
type: string
archived:
type: boolean
/api/boards/{board}/lists/{list}/cards_count: /api/boards/{board}/lists/{list}/cards_count:
get: get:
operationId: get_list_cards_count operationId: get_list_cards_count

View file

@ -10,21 +10,38 @@ if [ $# -ne 1 ]
exit 1 exit 1
fi fi
sudo apt -y install g++ build-essential p7zip-full sudo apt -y install g++ build-essential p7zip-full npm
sudo npm -g install n
# Building bundle works with Node.js 14.21.3 .
# Running works also with 14.21.4, many architectures at https://github.com/wekan/node-v14-esm/releases/tag/v14.21.4
sudo n 14.21.3
sudo npm -g uninstall node-pre-gyp sudo npm -g uninstall node-pre-gyp
sudo npm -g install @mapbox/node-pre-gyp sudo npm -g install @mapbox/node-pre-gyp
rm -rf bundle rm -rf bundle
rm wekan-$1-arm64.zip rm wekan-$1-arm64.zip
#rm wekan-$1.zip rm wekan-$1.zip
#wget https://releases.wekan.team/wekan-$1.zip wget https://github.com/wekan/wekan/releases/download/v$1/wekan-$1-amd64.zip
7z x wekan-$1-amd64.zip 7z x wekan-$1-arm64.zip
(cd bundle/programs/server && chmod u+w *.json && cd node_modules/fibers && node build.js) # Get working fibers and bcrypt from previous WeKan v7.93 https://github.com/wekan/wekan/releases/tag/v7.93
wget https://github.com/wekan/wekan/releases/download/v7.93/wekan-7.93-arm64.zip
mkdir 7.93
cd 7.93
7z x ../wekan-7.93-arm64.zip
cd ..
#wget https://releases.wekan.team/wekan-$1.zip
#7z x wekan-$1-amd64.zip
#(cd bundle/programs/server && chmod u+w *.json && cd node_modules/fibers && node build.js)
(cd bundle/programs/server && chmod u+w *.json)
# && cd node_modules/fibers && node build.js)
#cd ../../../.. #cd ../../../..
#(cd bundle/programs/server/npm/node_modules/meteor/accounts-password && npm remove bcrypt && npm install bcrypt) (cd bundle/programs/server/npm/node_modules/meteor/accounts-password/node_modules && rm -rf bcrypt)
(cp -pR 7.93/bundle/programs/server/npm/node_modules/meteor/accounts-password/node_modules/bcrypt bundle/programs/server/npm/node_modules/meteor/accounts-password/node_modules/)
# Requires building from source https://github.com/meteor/meteor/issues/11682 # Requires building from source https://github.com/meteor/meteor/issues/11682
(cd bundle/programs/server/npm/node_modules/meteor/accounts-password && npm rebuild --build-from-source) #(cd bundle/programs/server/npm/node_modules/meteor/accounts-password && npm rebuild --build-from-source)
cd bundle cd bundle
find . -type d -name '*-garbage*' | xargs rm -rf find . -type d -name '*-garbage*' | xargs rm -rf
@ -35,6 +52,6 @@ cd ..
7z a wekan-$1-arm64.zip bundle 7z a wekan-$1-arm64.zip bundle
sudo snap start juju-db #sudo snap start juju-db
./start-wekan.sh #./start-wekan.sh