mirror of
https://github.com/wekan/wekan.git
synced 2025-12-16 07:20:12 +01:00
Compare commits
60 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0ce8e8b74d | ||
|
|
4ea53af76e | ||
|
|
016f17d663 | ||
|
|
07f69950a7 | ||
|
|
cec625607d | ||
|
|
a290c7b34b | ||
|
|
5b77ac1b44 | ||
|
|
41c635afb5 | ||
|
|
adbf729cb2 | ||
|
|
88ea716d63 | ||
|
|
003a07ebce | ||
|
|
d3c237bc66 | ||
|
|
bac0fa81fc | ||
|
|
a42915614a | ||
|
|
5ff9bf331f | ||
|
|
36d7b0f8a7 | ||
|
|
67c8a98f20 | ||
|
|
a81a603031 | ||
|
|
e30ce78053 | ||
|
|
3d70de94c6 | ||
|
|
70975c2944 | ||
|
|
960e2126b4 | ||
|
|
3db1305e58 | ||
|
|
f16780b5e3 | ||
|
|
37a3065f3c | ||
|
|
7ff1649d89 | ||
|
|
a39ae31b45 | ||
|
|
6302a48221 | ||
|
|
c277bee9d2 | ||
|
|
c5f5ce126d | ||
|
|
0004ae716b | ||
|
|
7f53dfac3c | ||
|
|
18003900c2 | ||
|
|
fe104791b5 | ||
|
|
6244657ca5 | ||
|
|
46866dac85 | ||
|
|
c829c073cf | ||
|
|
0772ca4036 | ||
|
|
581733d605 | ||
|
|
b02af27ac3 | ||
|
|
20af0a2ef5 | ||
|
|
c58ab5b07d | ||
|
|
e5e711c938 | ||
|
|
42594abe4e | ||
|
|
0afbdc95b4 | ||
|
|
16a74bb748 | ||
|
|
8711b476be | ||
|
|
df9fba4765 | ||
|
|
7d27139aa9 | ||
|
|
e4638d5fbc | ||
|
|
bc5854dd29 | ||
|
|
ba49d4d140 | ||
|
|
71b7dcffb5 | ||
|
|
7713e613b4 | ||
|
|
91a0aa7387 | ||
|
|
fbd6b920ef | ||
|
|
1b25d1d572 | ||
|
|
e93e72234c | ||
|
|
15d9b0ae3a | ||
|
|
550d87ac6c |
191 changed files with 15134 additions and 1608 deletions
2
.github/workflows/depsreview.yaml
vendored
2
.github/workflows/depsreview.yaml
vendored
|
|
@ -9,6 +9,6 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: 'Checkout Repository'
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v6
|
||||
- name: 'Dependency Review'
|
||||
uses: actions/dependency-review-action@v4
|
||||
|
|
|
|||
4
.github/workflows/docker-publish.yml
vendored
4
.github/workflows/docker-publish.yml
vendored
|
|
@ -32,7 +32,7 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v6
|
||||
|
||||
# Login against a Docker registry except on PR
|
||||
# https://github.com/docker/login-action
|
||||
|
|
@ -48,7 +48,7 @@ jobs:
|
|||
# https://github.com/docker/metadata-action
|
||||
- name: Extract Docker metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@c1e51972afc2121e065aed6d45c65596fe445f3f
|
||||
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||
|
||||
|
|
|
|||
2
.github/workflows/dockerimage.yml
vendored
2
.github/workflows/dockerimage.yml
vendored
|
|
@ -15,6 +15,6 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- name: Build the Docker image
|
||||
run: docker build . --file Dockerfile --tag wekan:$(date +%s)
|
||||
|
|
|
|||
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
|
|
@ -15,7 +15,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
|
|
|||
20
.github/workflows/test_suite.yml
vendored
20
.github/workflows/test_suite.yml
vendored
|
|
@ -18,7 +18,7 @@ jobs:
|
|||
# runs-on: ubuntu-latest
|
||||
# steps:
|
||||
# - name: checkout
|
||||
# uses: actions/checkout@v5
|
||||
# uses: actions/checkout@v6
|
||||
#
|
||||
# - name: setup node
|
||||
# uses: actions/setup-node@v1
|
||||
|
|
@ -42,7 +42,7 @@ jobs:
|
|||
# needs: [lintcode]
|
||||
# steps:
|
||||
# - name: checkout
|
||||
# uses: actions/checkout@v5
|
||||
# uses: actions/checkout@v6
|
||||
#
|
||||
# - name: setup node
|
||||
# uses: actions/setup-node@v1
|
||||
|
|
@ -65,7 +65,7 @@ jobs:
|
|||
# needs: [lintcode,lintstyle]
|
||||
# steps:
|
||||
# - name: checkout
|
||||
# uses: actions/checkout@v5
|
||||
# uses: actions/checkout@v6
|
||||
#
|
||||
# - name: setup node
|
||||
# uses: actions/setup-node@v1
|
||||
|
|
@ -90,12 +90,12 @@ jobs:
|
|||
|
||||
# CHECKOUTS
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v6
|
||||
|
||||
# CACHING
|
||||
- name: Install Meteor
|
||||
id: cache-meteor-install
|
||||
uses: actions/cache@v4
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: ~/.meteor
|
||||
key: v1-meteor-${{ hashFiles('.meteor/versions') }}
|
||||
|
|
@ -104,7 +104,7 @@ jobs:
|
|||
|
||||
- name: Cache NPM dependencies
|
||||
id: cache-meteor-npm
|
||||
uses: actions/cache@v4
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: ~/.npm
|
||||
key: v1-npm-${{ hashFiles('package-lock.json') }}
|
||||
|
|
@ -113,7 +113,7 @@ jobs:
|
|||
|
||||
- name: Cache Meteor build
|
||||
id: cache-meteor-build
|
||||
uses: actions/cache@v4
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
.meteor/local/resolver-result-cache.json
|
||||
|
|
@ -136,7 +136,7 @@ jobs:
|
|||
run: sh ./test-wekan.sh -cv
|
||||
|
||||
- name: Upload coverage
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: coverage-folder
|
||||
path: .coverage/
|
||||
|
|
@ -147,10 +147,10 @@ jobs:
|
|||
needs: [tests]
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Download coverage
|
||||
uses: actions/download-artifact@v6
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: coverage-folder
|
||||
path: .coverage/
|
||||
|
|
|
|||
54
CHANGELOG.md
54
CHANGELOG.md
|
|
@ -22,6 +22,60 @@ 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.
|
||||
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
|
||||
|
||||
This release adds the following new feature:
|
||||
|
||||
- [Feature: Workspaces, at All Boards page](https://github.com/wekan/wekan/commit/0afbdc95b49537e06b4f9cf98f51a669ef249384).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix 8.16: Switching Board View fails with 403 error](https://github.com/wekan/wekan/commit/550d87ac6cb3ec946600616485afdbd242983ab4).
|
||||
Thanks to xet7.
|
||||
- [Moved migrations from opening board to right sidebar / Migrations](https://github.com/wekan/wekan/commit/1b25d1d5720d4f486a10d2acce37e315cf9b6057).
|
||||
Thanks to xet7.
|
||||
- [Fix 8.16 Lists with no items are deleted every time when board is opened. Moved migrations to right sidebar](https://github.com/wekan/wekan/commit/7713e613b431e44dc13cee72e7a1e5f031473fa6).
|
||||
Thanks to xet7.
|
||||
- [Remove old translations and code not in use anymore](https://github.com/wekan/wekan/commit/ba49d4d140bc0d4cfb5a96db9ab077bc85db58f1).
|
||||
Thanks to xet7.
|
||||
- [Fixed sidebar migrations to be per-board, not global. Clarified translations](https://github.com/wekan/wekan/commit/e4638d5fbcbe004ac393462331805cac3ba25097).
|
||||
Thanks to xet7.
|
||||
- [Fix star board](https://github.com/wekan/wekan/commit/8711b476be30496b96b845529b5717bb6e685c27).
|
||||
Thanks to xet7.
|
||||
- [Fix Card emoji issues](https://github.com/wekan/wekan/commit/e5e711c938edcca23c974c3eec97296898bcf24e).
|
||||
Thanks to xet7.
|
||||
- [Try to fix Edit Custom Fields button not working. Removed duplicate option from Boards Settings](https://github.com/wekan/wekan/commit/20af0a2ef55b11e7205845859ee92a929616ce91).
|
||||
Thanks to xet7.
|
||||
- [Fix Regression - calendar popup to set due date has gone](https://github.com/wekan/wekan/commit/581733d605b7e0494e72229c45947cff134f6dd6).
|
||||
Thanks to xet7.
|
||||
- [Remove not working Bookmark menu option](https://github.com/wekan/wekan/commit/c829c073cf822e48b7cd84bbfb79d42867412517).
|
||||
Thanks to xet7.
|
||||
- [Fix Workspaces at All Boards to have correct count of remaining etc, while starred also at Starred/Favorites](https://github.com/wekan/wekan/commit/6244657ca53a54646ec01e702851a51d89bd0d55).
|
||||
Thanks to xet7.
|
||||
- [Fix Worker Permissions does not allow for cards to be moved. - v8.15. Removed buttons Worker should not use](https://github.com/wekan/wekan/commit/18003900c2d497c129793d1653d4d9872a2f19da).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v8.16 2025-11-02 WeKan ® release
|
||||
|
||||
This release fixes SpaceBleed that is the following CRITICAL SECURITY ISSUES:
|
||||
|
|
|
|||
|
|
@ -249,9 +249,9 @@ cd /home/wekan/app
|
|||
# Remove legacy webbroser bundle, so that Wekan works also at Android Firefox, iOS Safari, etc.
|
||||
#rm -rf /home/wekan/app_build/bundle/programs/web.browser.legacy
|
||||
#mv /home/wekan/app_build/bundle /build
|
||||
wget "https://github.com/wekan/wekan/releases/download/v8.16/wekan-8.16-amd64.zip"
|
||||
unzip wekan-8.16-amd64.zip
|
||||
rm wekan-8.16-amd64.zip
|
||||
wget "https://github.com/wekan/wekan/releases/download/v8.17/wekan-8.17-amd64.zip"
|
||||
unzip wekan-8.17-amd64.zip
|
||||
rm wekan-8.17-amd64.zip
|
||||
mv /home/wekan/app/bundle /build
|
||||
|
||||
# Put back the original tar
|
||||
|
|
|
|||
36
SECURITY.md
36
SECURITY.md
|
|
@ -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
|
||||
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.
|
||||
## Responsible Security Disclosure
|
||||
|
||||
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?
|
||||
|
||||
|
|
@ -26,7 +34,7 @@ CWSS (optional): %cwss
|
|||
|
||||
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
|
||||
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?
|
||||
|
||||
|
|
@ -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
|
||||
- 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.
|
||||
- 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
|
||||
|
||||
|
|
@ -269,9 +272,4 @@ Typical already known or "no impact" bugs such as:
|
|||
- 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.
|
||||
We welcome all fixes to improve security by email to security@wekan.team
|
||||
|
||||
## 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).
|
||||
We welcome all fixes to improve security by email to security@wekan.fi
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v8.16.0"
|
||||
appVersion: "v8.17.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
|
|
|||
|
|
@ -99,24 +99,9 @@ BlazeComponent.extendComponent({
|
|||
return;
|
||||
}
|
||||
|
||||
// Check if board needs comprehensive migration
|
||||
const needsMigration = await this.checkComprehensiveMigration(boardId);
|
||||
|
||||
if (needsMigration) {
|
||||
// Start comprehensive migration
|
||||
this.isMigrating.set(true);
|
||||
const success = await this.executeComprehensiveMigration(boardId);
|
||||
this.isMigrating.set(false);
|
||||
|
||||
if (success) {
|
||||
this.isBoardReady.set(true);
|
||||
} else {
|
||||
console.error('Comprehensive migration failed, setting ready to true anyway');
|
||||
this.isBoardReady.set(true); // Still show board even if migration failed
|
||||
}
|
||||
} else {
|
||||
this.isBoardReady.set(true);
|
||||
}
|
||||
// Automatic migration disabled - migrations must be run manually from sidebar
|
||||
// Board admins can run migrations from the sidebar Migrations menu
|
||||
this.isBoardReady.set(true);
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error during board conversion check:', error);
|
||||
|
|
@ -161,7 +146,6 @@ BlazeComponent.extendComponent({
|
|||
{ step: 'fix_orphaned_cards', name: 'Fix Orphaned Cards', duration: 2000 },
|
||||
{ step: 'convert_shared_lists', name: 'Convert Shared Lists', duration: 3000 },
|
||||
{ step: 'ensure_per_swimlane_lists', name: 'Ensure Per-Swimlane Lists', duration: 1500 },
|
||||
{ step: 'cleanup_empty_lists', name: 'Cleanup Empty Lists', duration: 1000 },
|
||||
{ step: 'validate_migration', name: 'Validate Migration', duration: 1000 },
|
||||
{ step: 'fix_avatar_urls', name: 'Fix Avatar URLs', duration: 1000 },
|
||||
{ step: 'fix_attachment_urls', name: 'Fix Attachment URLs', duration: 1000 }
|
||||
|
|
|
|||
|
|
@ -16,13 +16,6 @@ template(name="boardHeaderBar")
|
|||
a.board-header-btn(class="{{#if currentUser.isBoardAdmin}}js-edit-board-title{{else}}is-disabled{{/if}}" title="{{_ 'edit'}}" value=title)
|
||||
| ✏️
|
||||
|
||||
a.board-header-btn.js-star-board(class="{{#if isStarred}}is-active{{/if}}"
|
||||
title="{{#if isStarred}}{{_ 'star-board-short-unstar'}}{{else}}{{_ 'star-board-short-star'}}{{/if}}" aria-label="{{#if isStarred}}{{_ 'star-board-short-unstar'}}{{else}}{{_ 'star-board-short-star'}}{{/if}}")
|
||||
| {{#if isStarred}}⭐{{else}}☆{{/if}}
|
||||
if showStarCounter
|
||||
span
|
||||
= currentBoard.stars
|
||||
|
||||
a.board-header-btn(
|
||||
class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}"
|
||||
title="{{_ currentBoard.permission}}")
|
||||
|
|
@ -38,6 +31,13 @@ template(name="boardHeaderBar")
|
|||
if $eq watchLevel "muted"
|
||||
| 🔕
|
||||
span {{_ watchLevel}}
|
||||
a.board-header-btn.js-star-board(title="{{_ 'star-board'}}")
|
||||
if isStarred
|
||||
| ⭐
|
||||
else
|
||||
| ☆
|
||||
if showStarCounter
|
||||
span.board-star-counter {{currentBoard.stars}}
|
||||
a.board-header-btn(title="{{_ 'sort-cards'}}" class="{{#if isSortActive }}emphasis{{else}} js-sort-cards {{/if}}")
|
||||
| {{sortCardsIcon}}
|
||||
span {{#if isSortActive }}{{_ 'sort-is-on'}}{{else}}{{_ 'sort-cards'}}{{/if}}
|
||||
|
|
@ -61,10 +61,6 @@ template(name="boardHeaderBar")
|
|||
a.board-header-btn(class="{{#if currentUser.isBoardAdmin}}js-edit-board-title{{else}}is-disabled{{/if}}" title="{{_ 'edit'}}" value=title)
|
||||
| ✏️
|
||||
|
||||
a.board-header-btn.js-star-board(class="{{#if isStarred}}is-active{{/if}}"
|
||||
title="{{#if isStarred}}{{_ 'click-to-unstar'}}{{else}}{{_ 'click-to-star'}}{{/if}} {{_ 'starred-boards-description'}}")
|
||||
| {{#if isStarred}}⭐{{else}}☆{{/if}}
|
||||
|
||||
a.board-header-btn(
|
||||
class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}"
|
||||
title="{{_ currentBoard.permission}}")
|
||||
|
|
@ -78,6 +74,11 @@ template(name="boardHeaderBar")
|
|||
| 🔔
|
||||
if $eq watchLevel "muted"
|
||||
| 🔕
|
||||
a.board-header-btn.js-star-board(title="{{_ 'star-board'}}")
|
||||
if isStarred
|
||||
| ⭐
|
||||
else
|
||||
| ☆
|
||||
a.board-header-btn(title="{{_ 'sort-cards'}}" class="{{#if isSortActive }}emphasis{{else}} js-sort-cards {{/if}}")
|
||||
| {{sortCardsIcon}}
|
||||
if isSortActive
|
||||
|
|
@ -266,6 +267,36 @@ template(name="createBoardPopup")
|
|||
| /
|
||||
a.js-board-template {{_ 'template'}}
|
||||
|
||||
// New popup for Template Container creation; shares the same form content
|
||||
template(name="createTemplateContainerPopup")
|
||||
form
|
||||
label
|
||||
| {{_ 'title'}}
|
||||
input.js-new-board-title(type="text" placeholder="{{_ 'bucket-example'}}" autofocus required)
|
||||
if visibilityMenuIsOpen.get
|
||||
+boardVisibilityList
|
||||
else
|
||||
p.quiet
|
||||
if $eq visibility.get 'public'
|
||||
span 🌐
|
||||
= " "
|
||||
| {{{_ 'board-public-info'}}}
|
||||
else
|
||||
span 🔒
|
||||
= " "
|
||||
| {{{_ 'board-private-info'}}}
|
||||
a.js-change-visibility {{_ 'change'}}.
|
||||
a.flex.js-toggle-add-template-container
|
||||
.materialCheckBox#add-template-container
|
||||
span {{_ 'add-template-container'}}
|
||||
input.primary.wide(type="submit" value="{{_ 'create'}}")
|
||||
span.quiet
|
||||
| {{_ 'or'}}
|
||||
a.js-import-board {{_ 'import'}}
|
||||
span.quiet
|
||||
| /
|
||||
a.js-board-template {{_ 'template'}}
|
||||
|
||||
//template(name="listsortPopup")
|
||||
// h2
|
||||
// | {{_ 'list-sort-by'}}
|
||||
|
|
|
|||
|
|
@ -72,7 +72,10 @@ BlazeComponent.extendComponent({
|
|||
{
|
||||
'click .js-edit-board-title': Popup.open('boardChangeTitle'),
|
||||
'click .js-star-board'() {
|
||||
ReactiveCache.getCurrentUser().toggleBoardStar(Session.get('currentBoard'));
|
||||
const boardId = Session.get('currentBoard');
|
||||
if (boardId) {
|
||||
Meteor.call('toggleBoardStar', boardId);
|
||||
}
|
||||
},
|
||||
'click .js-open-board-menu': Popup.open('boardMenu'),
|
||||
'click .js-change-visibility': Popup.open('boardChangeVisibility'),
|
||||
|
|
@ -291,6 +294,15 @@ const CreateBoard = BlazeComponent.extendComponent({
|
|||
},
|
||||
);
|
||||
|
||||
// Assign to space if one was selected
|
||||
const spaceId = Session.get('createBoardInWorkspace');
|
||||
if (spaceId) {
|
||||
Meteor.call('assignBoardToWorkspace', this.boardId.get(), spaceId, (err) => {
|
||||
if (err) console.error('Error assigning board to space:', err);
|
||||
});
|
||||
Session.set('createBoardInWorkspace', null); // Clear after use
|
||||
}
|
||||
|
||||
Utils.goBoardId(this.boardId.get());
|
||||
|
||||
} else {
|
||||
|
|
@ -309,6 +321,15 @@ const CreateBoard = BlazeComponent.extendComponent({
|
|||
boardId: this.boardId.get(),
|
||||
});
|
||||
|
||||
// Assign to space if one was selected
|
||||
const spaceId = Session.get('createBoardInWorkspace');
|
||||
if (spaceId) {
|
||||
Meteor.call('assignBoardToWorkspace', this.boardId.get(), spaceId, (err) => {
|
||||
if (err) console.error('Error assigning board to space:', err);
|
||||
});
|
||||
Session.set('createBoardInWorkspace', null); // Clear after use
|
||||
}
|
||||
|
||||
Utils.goBoardId(this.boardId.get());
|
||||
}
|
||||
},
|
||||
|
|
@ -330,6 +351,13 @@ const CreateBoard = BlazeComponent.extendComponent({
|
|||
},
|
||||
}).register('createBoardPopup');
|
||||
|
||||
(class CreateTemplateContainerPopup extends CreateBoard {
|
||||
onRendered() {
|
||||
// Always pre-check the template container checkbox for this popup
|
||||
$('#add-template-container').addClass('is-checked');
|
||||
}
|
||||
}).register('createTemplateContainerPopup');
|
||||
|
||||
(class HeaderBarCreateBoard extends CreateBoard {
|
||||
onSubmit(event) {
|
||||
super.onSubmit(event);
|
||||
|
|
|
|||
|
|
@ -8,6 +8,273 @@
|
|||
padding: 1vh 0;
|
||||
}
|
||||
|
||||
/* Two-column layout for All Boards */
|
||||
.boards-layout {
|
||||
display: grid;
|
||||
grid-template-columns: 260px 1fr;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.boards-left-menu {
|
||||
border-right: 1px solid #e0e0e0;
|
||||
padding-right: 12px;
|
||||
}
|
||||
|
||||
.boards-left-menu ul.menu {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0 0 12px 0;
|
||||
}
|
||||
|
||||
.boards-left-menu .menu-item {
|
||||
margin: 4px 0;
|
||||
}
|
||||
.boards-left-menu .menu-item a {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 8px 10px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.boards-left-menu .menu-item .menu-label {
|
||||
flex: 1;
|
||||
}
|
||||
.boards-left-menu .menu-item .menu-count {
|
||||
background: #ddd;
|
||||
padding: 2px 8px;
|
||||
border-radius: 12px;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
margin-left: 8px;
|
||||
}
|
||||
.boards-left-menu .menu-item.active a,
|
||||
.boards-left-menu .menu-item a:hover {
|
||||
background: #f0f0f0;
|
||||
}
|
||||
.boards-left-menu .menu-item.active .menu-count {
|
||||
background: #bbb;
|
||||
}
|
||||
|
||||
/* Drag-over state for menu items (for dropping boards on Remaining) */
|
||||
.boards-left-menu .menu-item a.drag-over {
|
||||
background: #d0e8ff;
|
||||
border: 2px dashed #2196F3;
|
||||
}
|
||||
|
||||
.workspaces-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-weight: bold;
|
||||
margin-top: 12px;
|
||||
}
|
||||
.workspaces-header .js-add-space {
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
border: 1px solid #ccc;
|
||||
padding: 2px 8px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.workspace-tree {
|
||||
list-style: none;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.workspace-node {
|
||||
margin: 2px 0;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.workspace-node-content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
padding: 4px;
|
||||
border-radius: 4px;
|
||||
transition: background-color 0.2s;
|
||||
}
|
||||
|
||||
.workspace-node.dragging > .workspace-node-content {
|
||||
opacity: 0.5;
|
||||
background: #e0e0e0;
|
||||
}
|
||||
|
||||
.workspace-node.drag-over > .workspace-node-content {
|
||||
background: #d0e8ff;
|
||||
border: 2px dashed #2196F3;
|
||||
}
|
||||
|
||||
.workspace-drag-handle {
|
||||
cursor: grab;
|
||||
color: #999;
|
||||
font-size: 14px;
|
||||
padding: 0 4px;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.workspace-drag-handle:active {
|
||||
cursor: grabbing;
|
||||
}
|
||||
|
||||
.workspace-node .js-select-space {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
padding: 4px 8px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
flex: 1;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.workspace-node .workspace-icon {
|
||||
font-size: 16px;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.workspace-node .workspace-name {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.workspace-node .workspace-count {
|
||||
background: #ddd;
|
||||
padding: 2px 6px;
|
||||
border-radius: 10px;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
min-width: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.workspace-node .js-edit-space,
|
||||
.workspace-node .js-add-subspace {
|
||||
padding: 2px 6px;
|
||||
border-radius: 3px;
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
font-size: 14px;
|
||||
opacity: 0.6;
|
||||
transition: opacity 0.2s;
|
||||
}
|
||||
|
||||
.workspace-node .js-edit-space:hover,
|
||||
.workspace-node .js-add-subspace:hover {
|
||||
opacity: 1;
|
||||
background: #e0e0e0;
|
||||
}
|
||||
|
||||
.workspace-node.active > .workspace-node-content .js-select-space,
|
||||
.workspace-node > .workspace-node-content:hover .js-select-space {
|
||||
background: #f0f0f0;
|
||||
}
|
||||
|
||||
.workspace-node.active .workspace-count {
|
||||
background: #bbb;
|
||||
}
|
||||
|
||||
.boards-right-grid {
|
||||
min-height: 200px;
|
||||
}
|
||||
|
||||
.boards-path-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 8px;
|
||||
padding: 12px 16px;
|
||||
margin-bottom: 16px;
|
||||
background: #f5f5f5;
|
||||
border-radius: 6px;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.boards-path-header .path-left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.boards-path-header .multiselection-hint {
|
||||
background: #FFF3CD;
|
||||
color: #856404;
|
||||
padding: 4px 12px;
|
||||
border-radius: 4px;
|
||||
font-size: 13px;
|
||||
font-weight: normal;
|
||||
border: 1px solid #FFE69C;
|
||||
animation: pulse 2s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes pulse {
|
||||
0%, 100% { opacity: 1; }
|
||||
50% { opacity: 0.7; }
|
||||
}
|
||||
|
||||
.boards-path-header .path-right {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.boards-path-header .path-icon {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.boards-path-header .path-text {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.boards-path-header .board-header-btn {
|
||||
padding: 6px 12px;
|
||||
background: #fff;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
font-size: 14px;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.boards-path-header .board-header-btn:hover {
|
||||
background: #f0f0f0;
|
||||
border-color: #bbb;
|
||||
}
|
||||
|
||||
.boards-path-header .board-header-btn.emphasis {
|
||||
background: #2196F3;
|
||||
color: #fff;
|
||||
border-color: #2196F3;
|
||||
font-weight: bold;
|
||||
box-shadow: 0 2px 8px rgba(33, 150, 243, 0.5);
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
.boards-path-header .board-header-btn.emphasis:hover {
|
||||
background: #1976D2;
|
||||
box-shadow: 0 3px 12px rgba(33, 150, 243, 0.7);
|
||||
}
|
||||
|
||||
.boards-path-header .board-header-btn-close {
|
||||
padding: 4px 10px;
|
||||
background: #f44336;
|
||||
color: #000;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
font-size: 16px;
|
||||
margin-left: 10px; /* Extra space between MultiSelection toggle and Remove Filter */
|
||||
}
|
||||
|
||||
.boards-path-header .board-header-btn-close:hover {
|
||||
background: #d32f2f;
|
||||
}
|
||||
|
||||
.zoom-controls {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
@ -106,23 +373,35 @@
|
|||
.board-list li.starred .is-star-active,
|
||||
.board-list li.starred .is-not-star-active {
|
||||
opacity: 1;
|
||||
color: #ffd700;
|
||||
}
|
||||
/* Show star icon on hover even for non-starred boards */
|
||||
.board-list li:hover .is-star-active,
|
||||
.board-list li:hover .is-not-star-active {
|
||||
opacity: 1;
|
||||
}
|
||||
.board-list .board-list-item {
|
||||
overflow: hidden;
|
||||
background-color: #999;
|
||||
background-color: inherit; /* Inherit board color from parent li.js-board */
|
||||
color: #f6f6f6;
|
||||
min-height: 100px;
|
||||
font-size: 16px;
|
||||
line-height: 22px;
|
||||
border-radius: 3px;
|
||||
border-radius: 0; /* No border-radius - parent .js-board has it */
|
||||
display: block;
|
||||
font-weight: 700;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
padding: 36px 8px 32px 8px; /* Top padding for drag handle, bottom for checkbox */
|
||||
margin: 0; /* No margin - moved to parent .js-board */
|
||||
position: relative;
|
||||
text-decoration: none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.board-list .board-list-item > .js-open-board {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
display: block;
|
||||
}
|
||||
.board-list .board-list-item.template-container {
|
||||
border: 4px solid #fff;
|
||||
}
|
||||
|
|
@ -150,13 +429,20 @@
|
|||
.board-list .js-add-board .label {
|
||||
font-weight: normal;
|
||||
line-height: 56px;
|
||||
min-height: 100px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background-color: #999; /* Darker background for better text contrast */
|
||||
border-radius: 3px;
|
||||
padding: 36px 8px 32px 8px;
|
||||
}
|
||||
.board-list .js-add-board :hover {
|
||||
background-color: #939393;
|
||||
.board-list .js-add-board .label:hover {
|
||||
background-color: #808080; /* Even darker on hover */
|
||||
}
|
||||
.board-list .is-star-active,
|
||||
.board-list .is-not-star-active {
|
||||
bottom: 0;
|
||||
top: 0;
|
||||
font-size: 14px;
|
||||
height: 18px;
|
||||
line-height: 18px;
|
||||
|
|
@ -164,7 +450,6 @@
|
|||
padding: 9px 9px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
transition-duration: 0.15s;
|
||||
transition-property: color, font-size, background;
|
||||
}
|
||||
|
|
@ -238,6 +523,95 @@
|
|||
.board-list li:hover a .is-not-star-active {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* Board drag handle - always visible and positioned at top */
|
||||
.board-list .board-handle {
|
||||
position: absolute;
|
||||
padding: 4px 6px;
|
||||
top: 4px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
background: rgba(0,0,0,0.4);
|
||||
border-radius: 4px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
z-index: 10;
|
||||
transition: background-color 0.2s ease;
|
||||
cursor: grab;
|
||||
opacity: 1;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.board-list .board-handle:active {
|
||||
cursor: grabbing;
|
||||
}
|
||||
|
||||
.board-list .board-handle:hover {
|
||||
background: rgba(255, 255, 0, 0.8) !important;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/* Multiselection checkbox on board items */
|
||||
.board-list .board-list-item .multi-selection-checkbox {
|
||||
position: absolute !important;
|
||||
bottom: 4px !important;
|
||||
left: 4px !important;
|
||||
top: auto !important;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
border: 3px solid #fff;
|
||||
background: rgba(0,0,0,0.5);
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
z-index: 11;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transition: all 0.2s;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.3);
|
||||
transform: none !important;
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
.board-list .board-list-item .multi-selection-checkbox:hover {
|
||||
background: rgba(0,0,0,0.7);
|
||||
transform: scale(1.15) !important;
|
||||
box-shadow: 0 3px 6px rgba(0,0,0,0.5);
|
||||
}
|
||||
|
||||
.board-list .board-list-item .multi-selection-checkbox.is-checked {
|
||||
background: #2196F3;
|
||||
border-color: #2196F3;
|
||||
box-shadow: 0 2px 8px rgba(33, 150, 243, 0.6);
|
||||
width: 24px !important;
|
||||
height: 24px !important;
|
||||
top: auto !important;
|
||||
left: 4px !important;
|
||||
transform: none !important;
|
||||
border-radius: 4px !important;
|
||||
}
|
||||
|
||||
.board-list .board-list-item .multi-selection-checkbox.is-checked::after {
|
||||
content: '✓';
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.board-list.is-multiselection-active .js-board.is-checked {
|
||||
outline: 4px solid #2196F3;
|
||||
outline-offset: -4px;
|
||||
box-shadow: 0 4px 12px rgba(33, 150, 243, 0.4);
|
||||
}
|
||||
|
||||
/* Visual hint when multiselection is active */
|
||||
.board-list.is-multiselection-active .board-list-item {
|
||||
border: 2px dashed rgba(33, 150, 243, 0.3);
|
||||
}
|
||||
|
||||
.board-backgrounds-list .board-background-select {
|
||||
box-sizing: border-box;
|
||||
display: block;
|
||||
|
|
@ -739,9 +1113,62 @@
|
|||
#resetBtn {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#resetBtn.filter-reset-btn {
|
||||
background: #f44336;
|
||||
color: #000;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
padding: 6px 12px;
|
||||
cursor: pointer;
|
||||
font-size: 14px;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
transition: background 0.2s;
|
||||
}
|
||||
|
||||
#resetBtn.filter-reset-btn:hover {
|
||||
background: #d32f2f;
|
||||
}
|
||||
|
||||
#resetBtn.filter-reset-btn .reset-icon {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.js-board {
|
||||
display: block;
|
||||
background-color: #999; /* Default gray background if no color class is applied */
|
||||
border-radius: 3px; /* Rounded corners for board items */
|
||||
overflow: hidden; /* Ensure children respect rounded corners */
|
||||
margin: 8px; /* Space between board items */
|
||||
}
|
||||
|
||||
/* Reset background for add-board button */
|
||||
.js-add-board {
|
||||
background-color: transparent !important;
|
||||
margin: 8px !important; /* Keep margin for add-board */
|
||||
}
|
||||
|
||||
/* Apply board colors to li.js-board parent instead of just the link */
|
||||
.board-list .board-color-nephritis { background-color: #27ae60; }
|
||||
.board-list .board-color-pomegranate { background-color: #c0392b; }
|
||||
.board-list .board-color-belize { background-color: #2980b9; }
|
||||
.board-list .board-color-wisteria { background-color: #8e44ad; }
|
||||
.board-list .board-color-midnight { background-color: #2c3e50; }
|
||||
.board-list .board-color-pumpkin { background-color: #e67e22; }
|
||||
.board-list .board-color-moderatepink { background-color: #cd5a91; }
|
||||
.board-list .board-color-strongcyan { background-color: #00aecc; }
|
||||
.board-list .board-color-limegreen { background-color: #4bbf6b; }
|
||||
.board-list .board-color-dark { background-color: #2c3e51; }
|
||||
.board-list .board-color-relax { background-color: #27ae61; }
|
||||
.board-list .board-color-corteza { background-color: #568ba2; }
|
||||
.board-list .board-color-clearblue { background-color: #3498db; }
|
||||
.board-list .board-color-natural { background-color: #596557; }
|
||||
.board-list .board-color-modern { background-color: #2a80b8; }
|
||||
.board-list .board-color-moderndark { background-color: #2a2a2a; }
|
||||
.board-list .board-color-exodark { background-color: #222; }
|
||||
|
||||
.minicard-members {
|
||||
padding: 6px 0 6px 8px;
|
||||
width: 100%;
|
||||
|
|
|
|||
|
|
@ -2,151 +2,160 @@ template(name="boardList")
|
|||
.wrapper
|
||||
.board-list-header
|
||||
|
||||
ul.AllBoardTeamsOrgs
|
||||
li.AllBoardTeams
|
||||
if userHasTeams
|
||||
select.js-AllBoardTeams#jsAllBoardTeams("multiple")
|
||||
option(value="-1") {{_ 'teams'}} :
|
||||
each teamsDatas
|
||||
option(value="{{teamId}}") {{_ teamDisplayName}}
|
||||
.boards-layout
|
||||
// Left menu
|
||||
.boards-left-menu
|
||||
ul.menu
|
||||
li(class="menu-item {{#if isSelectedMenu 'starred'}}active{{/if}}")
|
||||
a.js-select-menu(data-type="starred")
|
||||
span.menu-label ⭐ {{_ 'allboards.starred'}}
|
||||
span.menu-count {{menuItemCount 'starred'}}
|
||||
li(class="menu-item {{#if isSelectedMenu 'templates'}}active{{/if}}")
|
||||
a.js-select-menu(data-type="templates")
|
||||
span.menu-label 📋 {{_ 'allboards.templates'}}
|
||||
span.menu-count {{menuItemCount 'templates'}}
|
||||
li(class="menu-item {{#if isSelectedMenu 'remaining'}}active{{/if}}")
|
||||
a.js-select-menu(data-type="remaining")
|
||||
span.menu-label 📂 {{_ 'allboards.remaining'}}
|
||||
span.menu-count {{menuItemCount 'remaining'}}
|
||||
.workspaces-header
|
||||
span 🗂️ {{_ 'allboards.workspaces'}}
|
||||
a.js-add-workspace(title="{{_ 'allboards.add-workspace'}}") +
|
||||
// Workspaces tree
|
||||
+workspaceTree(nodes=workspacesTree selectedWorkspaceId=selectedWorkspaceId)
|
||||
|
||||
li.AllBoardOrgs
|
||||
if userHasOrgs
|
||||
select.js-AllBoardOrgs#jsAllBoardOrgs("multiple")
|
||||
option(value="-1") {{_ 'organizations'}} :
|
||||
each orgsDatas
|
||||
option(value="{{orgId}}") {{orgDisplayName}}
|
||||
// Existing filter by orgs/teams (kept)
|
||||
ul.AllBoardTeamsOrgs
|
||||
li.AllBoardTeams
|
||||
if userHasTeams
|
||||
select.js-AllBoardTeams#jsAllBoardTeams("multiple")
|
||||
option(value="-1") {{_ 'teams'}} :
|
||||
each teamsDatas
|
||||
option(value="{{teamId}}") {{_ teamDisplayName}}
|
||||
|
||||
//li.AllBoardTemplates
|
||||
// if userHasTemplates
|
||||
// select.js-AllBoardTemplates#jsAllBoardTemplates("multiple")
|
||||
// option(value="-1") {{_ 'templates'}} :
|
||||
// each templatesDatas
|
||||
// option(value="{{templateId}}") {{_ templateDisplayName}}
|
||||
li.AllBoardOrgs
|
||||
if userHasOrgs
|
||||
select.js-AllBoardOrgs#jsAllBoardOrgs("multiple")
|
||||
option(value="-1") {{_ 'organizations'}} :
|
||||
each orgsDatas
|
||||
option(value="{{orgId}}") {{orgDisplayName}}
|
||||
|
||||
li.AllBoardBtns
|
||||
div.AllBoardButtonsContainer
|
||||
if userHasOrgsOrTeams
|
||||
i.fa.fa-filter
|
||||
input#filterBtn(type="button" value="{{_ 'filter'}}")
|
||||
input#resetBtn(type="button" value="{{_ 'filter-clear'}}")
|
||||
li.AllBoardBtns
|
||||
div.AllBoardButtonsContainer
|
||||
if userHasOrgsOrTeams
|
||||
span 🔍
|
||||
input#filterBtn(type="button" value="{{_ 'filter'}}")
|
||||
button#resetBtn.filter-reset-btn
|
||||
span.reset-icon ❌
|
||||
span {{_ 'filter-clear'}}
|
||||
|
||||
ul.board-list.clearfix.js-boards(class="{{#if isMiniScreen}}mobile-view{{/if}}")
|
||||
li.js-add-board
|
||||
a.board-list-item.label(title="{{_ 'add-board'}}")
|
||||
| {{_ 'add-board'}}
|
||||
each boards
|
||||
li(class="{{_id}}" class="{{#if isStarred}}starred{{/if}}" class=colorClass).js-board
|
||||
if isInvited
|
||||
.board-list-item
|
||||
span.details
|
||||
span.board-list-item-name= title
|
||||
i.fa.js-star-board(
|
||||
class="fa-star{{#if isStarred}} is-star-active{{else}}-o{{/if}}"
|
||||
title="{{_ 'star-board-title'}}")
|
||||
p.board-list-item-desc {{_ 'just-invited'}}
|
||||
button.js-accept-invite.primary {{_ 'accept'}}
|
||||
button.js-decline-invite {{_ 'decline'}}
|
||||
else
|
||||
if $eq type "template-container"
|
||||
a.js-open-board.template-container.board-list-item(href="{{pathFor 'board' id=_id slug=slug}}")
|
||||
span.details
|
||||
span.board-list-item-name(title="{{_ 'template-container'}}")
|
||||
+viewer
|
||||
= title
|
||||
i.fa.js-star-board(
|
||||
class="fa-star{{#if isStarred}} is-star-active{{else}}-o{{/if}}"
|
||||
title="{{_ 'star-board-title'}}")
|
||||
p.board-list-item-desc
|
||||
+viewer
|
||||
= description
|
||||
if hasSpentTimeCards
|
||||
i.fa.js-has-spenttime-cards(
|
||||
class="fa-circle{{#if hasOvertimeCards}} has-overtime-card-active{{else}} no-overtime-card-active{{/if}}"
|
||||
title="{{#if hasOvertimeCards}}{{_ 'has-overtime-cards'}}{{else}}{{_ 'has-spenttime-cards'}}{{/if}}")
|
||||
i.fa.board-handle(
|
||||
class="fa-arrows"
|
||||
title="{{_ 'drag-board'}}")
|
||||
if isSandstorm
|
||||
i.fa.js-clone-board(
|
||||
class="fa-clone"
|
||||
title="{{_ 'duplicate-board'}}")
|
||||
i.fa.js-archive-board(
|
||||
class="fa-archive"
|
||||
title="{{_ 'archive-board'}}")
|
||||
else if isAdministrable
|
||||
i.fa.js-clone-board(
|
||||
class="fa-clone"
|
||||
title="{{_ 'duplicate-board'}}")
|
||||
i.fa.js-archive-board(
|
||||
class="fa-archive"
|
||||
title="{{_ 'archive-board'}}")
|
||||
else if currentUser.isAdmin
|
||||
i.fa.js-clone-board(
|
||||
class="fa-clone"
|
||||
title="{{_ 'duplicate-board'}}")
|
||||
i.fa.js-archive-board(
|
||||
class="fa-archive"
|
||||
title="{{_ 'archive-board'}}")
|
||||
// Right boards grid
|
||||
.boards-right-grid
|
||||
.boards-path-header
|
||||
.path-left
|
||||
span.path-icon {{currentMenuPath.icon}}
|
||||
span.path-text {{currentMenuPath.text}}
|
||||
if BoardMultiSelection.isActive
|
||||
span.multiselection-hint 📌 {{_ 'multi-selection-active'}}
|
||||
.path-right
|
||||
if canModifyBoards
|
||||
if hasBoardsSelected
|
||||
button.js-archive-selected-boards.board-header-btn
|
||||
span 📦
|
||||
span {{_ 'archive-board'}}
|
||||
button.js-duplicate-selected-boards.board-header-btn
|
||||
span 📋
|
||||
span {{_ 'duplicate-board'}}
|
||||
a.board-header-btn.js-multiselection-activate(
|
||||
title="{{#if BoardMultiSelection.isActive}}{{_ 'multi-selection-on'}}{{else}}{{_ 'multi-selection'}}{{/if}}"
|
||||
class="{{#if BoardMultiSelection.isActive}}emphasis{{/if}}")
|
||||
| ☑️
|
||||
if BoardMultiSelection.isActive
|
||||
a.board-header-btn-close.js-multiselection-reset(title="{{_ 'filter-clear'}}")
|
||||
| ✖
|
||||
ul.board-list.clearfix.js-boards(class="{{#if isMiniScreen}}mobile-view{{/if}} {{#if BoardMultiSelection.isActive}}is-multiselection-active{{/if}}")
|
||||
li.js-add-board
|
||||
if isSelectedMenu 'templates'
|
||||
a.board-list-item.label(title="{{_ 'add-template-container'}}")
|
||||
| ➕ {{_ 'add-template-container'}}
|
||||
else
|
||||
a.js-open-board.board-list-item(href="{{pathFor 'board' id=_id slug=slug}}")
|
||||
span.details
|
||||
span.board-list-item-name(title="{{_ 'board-drag-drop-reorder-or-click-open'}}")
|
||||
+viewer
|
||||
= title
|
||||
unless currentSetting.hideBoardMemberList
|
||||
if allowsBoardMemberList
|
||||
.minicard-members
|
||||
each member in boardMembers _id
|
||||
a.name
|
||||
+userAvatar(userId=member noRemove=true)
|
||||
unless currentSetting.hideCardCounterList
|
||||
if allowsCardCounterList
|
||||
.minicard-lists.flex.flex-wrap
|
||||
each list in boardLists _id
|
||||
.item
|
||||
| {{ list }}
|
||||
a.js-star-board(
|
||||
class="{{#if isStarred}}is-star-active{{else}}is-not-star-active{{/if}}"
|
||||
title="{{_ 'star-board-title'}}")
|
||||
| {{#if isStarred}}⭐{{else}}☆{{/if}}
|
||||
p.board-list-item-desc
|
||||
+viewer
|
||||
= description
|
||||
if hasSpentTimeCards
|
||||
i.fa.js-has-spenttime-cards(
|
||||
class="fa-circle{{#if hasOvertimeCards}} has-overtime-card-active{{else}} no-overtime-card-active{{/if}}"
|
||||
title="{{#if hasOvertimeCards}}{{_ 'has-overtime-cards'}}{{else}}{{_ 'has-spenttime-cards'}}{{/if}}")
|
||||
i.fa.board-handle(
|
||||
class="fa-arrows"
|
||||
title="{{_ 'drag-board'}}")
|
||||
if isSandstorm
|
||||
a.js-clone-board(
|
||||
class="fa-clone"
|
||||
title="{{_ 'duplicate-board'}}")
|
||||
| 📋
|
||||
a.js-archive-board(
|
||||
class="fa-archive"
|
||||
title="{{_ 'archive-board'}}")
|
||||
| 📦
|
||||
else if isAdministrable
|
||||
a.js-clone-board(
|
||||
class="fa-clone"
|
||||
title="{{_ 'duplicate-board'}}")
|
||||
| 📋
|
||||
a.js-archive-board(
|
||||
class="fa-archive"
|
||||
title="{{_ 'archive-board'}}")
|
||||
| 📦
|
||||
else if currentUser.isAdmin
|
||||
a.js-clone-board(
|
||||
class="fa-clone"
|
||||
title="{{_ 'duplicate-board'}}")
|
||||
| 📋
|
||||
a.js-archive-board(
|
||||
class="fa-archive"
|
||||
title="{{_ 'archive-board'}}")
|
||||
| 📦
|
||||
a.board-list-item.label(title="{{_ 'add-board'}}")
|
||||
| ➕ {{_ 'add-board'}}
|
||||
each boards
|
||||
li.js-board(class="{{_id}} {{#if isStarred}}starred{{/if}} {{colorClass}} {{#if BoardMultiSelection.isSelected _id}}is-checked{{/if}}", draggable="true")
|
||||
if isInvited
|
||||
.board-list-item
|
||||
if BoardMultiSelection.isActive
|
||||
.materialCheckBox.multi-selection-checkbox.js-toggle-board-multi-selection(
|
||||
class="{{#if BoardMultiSelection.isSelected _id}}is-checked{{/if}}")
|
||||
span.details
|
||||
span.board-list-item-name= title
|
||||
span.js-star-board(
|
||||
class="{{#if isStarred}}is-star-active{{else}}is-not-star-active{{/if}}"
|
||||
title="{{_ 'star-board-title'}}")
|
||||
| {{#if isStarred}}⭐{{else}}☆{{/if}}
|
||||
p.board-list-item-desc {{_ 'just-invited'}}
|
||||
button.js-accept-invite.primary {{_ 'accept'}}
|
||||
button.js-decline-invite {{_ 'decline'}}
|
||||
else
|
||||
if $eq type "template-container"
|
||||
.template-container.board-list-item
|
||||
if BoardMultiSelection.isActive
|
||||
.materialCheckBox.multi-selection-checkbox.js-toggle-board-multi-selection(
|
||||
class="{{#if BoardMultiSelection.isSelected _id}}is-checked{{/if}}")
|
||||
span.board-handle(title="{{_ 'drag-board'}}") ↕️
|
||||
a.js-open-board(href="{{pathFor 'board' id=_id slug=slug}}")
|
||||
span.details
|
||||
span.board-list-item-name(title="{{_ 'template-container'}}")
|
||||
+viewer
|
||||
= title
|
||||
p.board-list-item-desc
|
||||
+viewer
|
||||
= description
|
||||
if hasSpentTimeCards
|
||||
span.js-has-spenttime-cards(
|
||||
class="{{#if hasOvertimeCards}}has-overtime-card-active{{else}}no-overtime-card-active{{/if}}"
|
||||
title="{{#if hasOvertimeCards}}{{_ 'has-overtime-cards'}}{{else}}{{_ 'has-spenttime-cards'}}{{/if}}")
|
||||
| ⏱️
|
||||
span.js-star-board(
|
||||
class="{{#if isStarred}}is-star-active{{else}}is-not-star-active{{/if}}"
|
||||
title="{{_ 'star-board-title'}}")
|
||||
| {{#if isStarred}}⭐{{else}}☆{{/if}}
|
||||
else
|
||||
.board-list-item
|
||||
if BoardMultiSelection.isActive
|
||||
.materialCheckBox.multi-selection-checkbox.js-toggle-board-multi-selection(
|
||||
class="{{#if BoardMultiSelection.isSelected _id}}is-checked{{/if}}")
|
||||
span.board-handle(title="{{_ 'drag-board'}}") ↕️
|
||||
a.js-open-board(href="{{pathFor 'board' id=_id slug=slug}}")
|
||||
span.details
|
||||
span.board-list-item-name(title="{{_ 'board-drag-drop-reorder-or-click-open'}}")
|
||||
+viewer
|
||||
= title
|
||||
unless currentSetting.hideBoardMemberList
|
||||
if allowsBoardMemberList
|
||||
.minicard-members
|
||||
each member in boardMembers _id
|
||||
a.name
|
||||
+userAvatar(userId=member noRemove=true)
|
||||
unless currentSetting.hideCardCounterList
|
||||
if allowsCardCounterList
|
||||
.minicard-lists.flex.flex-wrap
|
||||
each list in boardLists _id
|
||||
.item
|
||||
| {{ list }}
|
||||
p.board-list-item-desc
|
||||
+viewer
|
||||
= description
|
||||
if hasSpentTimeCards
|
||||
span.js-has-spenttime-cards(
|
||||
class="{{#if hasOvertimeCards}}has-overtime-card-active{{else}}no-overtime-card-active{{/if}}"
|
||||
title="{{#if hasOvertimeCards}}{{_ 'has-overtime-cards'}}{{else}}{{_ 'has-spenttime-cards'}}{{/if}}")
|
||||
| ⏱️
|
||||
a.js-star-board(
|
||||
class="{{#if isStarred}}is-star-active{{else}}is-not-star-active{{/if}}"
|
||||
title="{{_ 'star-board-title'}}")
|
||||
| {{#if isStarred}}⭐{{else}}☆{{/if}}
|
||||
|
||||
template(name="boardListHeaderBar")
|
||||
h1 {{_ title }}
|
||||
|
|
@ -157,3 +166,25 @@ template(name="boardListHeaderBar")
|
|||
// a.board-header-btn(href="{{pathFor 'board' id=templatesBoardId slug=templatesBoardSlug}}")
|
||||
// i.fa.fa-clone
|
||||
// span {{_ 'templates'}}
|
||||
|
||||
// Recursive template for workspaces tree
|
||||
template(name="workspaceTree")
|
||||
if nodes
|
||||
ul.workspace-tree.js-workspace-tree
|
||||
each nodes
|
||||
li.workspace-node(class="{{#if $eq id selectedWorkspaceId}}active{{/if}}" data-workspace-id="{{id}}" draggable="true")
|
||||
.workspace-node-content
|
||||
span.workspace-drag-handle ↕️
|
||||
a.js-select-workspace(data-id="{{id}}")
|
||||
span.workspace-icon
|
||||
if icon
|
||||
+viewer
|
||||
= icon
|
||||
else
|
||||
| 📁
|
||||
span.workspace-name= name
|
||||
a.js-edit-workspace(data-id="{{id}}" title="{{_ 'allboards.edit-workspace'}}") ✏️
|
||||
span.workspace-count {{workspaceCount id}}
|
||||
a.js-add-subworkspace(data-id="{{id}}" title="{{_ 'allboards.add-subworkspace'}}") +
|
||||
if children
|
||||
+workspaceTree(nodes=children selectedWorkspaceId=selectedWorkspaceId)
|
||||
|
|
|
|||
|
|
@ -14,6 +14,9 @@ Template.boardList.helpers({
|
|||
return Utils.isMiniScreen() && Session.get('currentBoard'); */
|
||||
return true;
|
||||
},
|
||||
BoardMultiSelection() {
|
||||
return BoardMultiSelection;
|
||||
},
|
||||
})
|
||||
|
||||
Template.boardListHeaderBar.events({
|
||||
|
|
@ -45,6 +48,9 @@ BlazeComponent.extendComponent({
|
|||
onCreated() {
|
||||
Meteor.subscribe('setting');
|
||||
Meteor.subscribe('tableVisibilityModeSettings');
|
||||
this.selectedMenu = new ReactiveVar('starred');
|
||||
this.selectedWorkspaceIdVar = new ReactiveVar(null);
|
||||
this.workspacesTreeVar = new ReactiveVar([]);
|
||||
let currUser = ReactiveCache.getCurrentUser();
|
||||
let userLanguage;
|
||||
if (currUser && currUser.profile) {
|
||||
|
|
@ -53,9 +59,72 @@ BlazeComponent.extendComponent({
|
|||
if (userLanguage) {
|
||||
TAPi18n.setLanguage(userLanguage);
|
||||
}
|
||||
// Load workspaces tree reactively
|
||||
this.autorun(() => {
|
||||
const u = ReactiveCache.getCurrentUser();
|
||||
const tree = (u && u.profile && u.profile.boardWorkspacesTree) || [];
|
||||
this.workspacesTreeVar.set(tree);
|
||||
});
|
||||
},
|
||||
|
||||
reorderWorkspaces(draggedSpaceId, targetSpaceId) {
|
||||
const tree = this.workspacesTreeVar.get();
|
||||
|
||||
// Helper to remove a space from tree
|
||||
const removeSpace = (nodes, id) => {
|
||||
for (let i = 0; i < nodes.length; i++) {
|
||||
if (nodes[i].id === id) {
|
||||
const removed = nodes.splice(i, 1)[0];
|
||||
return { tree: nodes, removed };
|
||||
}
|
||||
if (nodes[i].children) {
|
||||
const result = removeSpace(nodes[i].children, id);
|
||||
if (result.removed) {
|
||||
return { tree: nodes, removed: result.removed };
|
||||
}
|
||||
}
|
||||
}
|
||||
return { tree: nodes, removed: null };
|
||||
};
|
||||
|
||||
// Helper to insert a space after target
|
||||
const insertAfter = (nodes, targetId, spaceToInsert) => {
|
||||
for (let i = 0; i < nodes.length; i++) {
|
||||
if (nodes[i].id === targetId) {
|
||||
nodes.splice(i + 1, 0, spaceToInsert);
|
||||
return true;
|
||||
}
|
||||
if (nodes[i].children) {
|
||||
if (insertAfter(nodes[i].children, targetId, spaceToInsert)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
// Clone the tree
|
||||
const newTree = EJSON.clone(tree);
|
||||
|
||||
// Remove the dragged space
|
||||
const { tree: treeAfterRemoval, removed } = removeSpace(newTree, draggedSpaceId);
|
||||
|
||||
if (removed) {
|
||||
// Insert after target
|
||||
insertAfter(treeAfterRemoval, targetSpaceId, removed);
|
||||
|
||||
// Save the new tree
|
||||
Meteor.call('setWorkspacesTree', treeAfterRemoval, (err) => {
|
||||
if (err) console.error(err);
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
onRendered() {
|
||||
// jQuery sortable is disabled in favor of HTML5 drag-and-drop for space management
|
||||
// The old sortable code has been removed to prevent conflicts
|
||||
|
||||
/* OLD SORTABLE CODE - DISABLED
|
||||
const itemsSelector = '.js-board:not(.placeholder)';
|
||||
|
||||
const $boards = this.$('.js-boards');
|
||||
|
|
@ -73,20 +142,12 @@ BlazeComponent.extendComponent({
|
|||
EscapeActions.executeUpTo('popup-close');
|
||||
},
|
||||
stop(evt, ui) {
|
||||
// To attribute the new index number, we need to get the DOM element
|
||||
const prevBoardDom = ui.item.prev('.js-board').get(0);
|
||||
const nextBoardDom = ui.item.next('.js-board').get(0);
|
||||
const sortIndex = Utils.calculateIndex(prevBoardDom, nextBoardDom, 1);
|
||||
|
||||
const boardDomElement = ui.item.get(0);
|
||||
const board = Blaze.getData(boardDomElement);
|
||||
// Normally the jquery-ui sortable library moves the dragged DOM element
|
||||
// to its new position, which disrupts Blaze reactive updates mechanism
|
||||
// (especially when we move the last card of a list, or when multiple
|
||||
// users move some cards at the same time). To prevent these UX glitches
|
||||
// we ask sortable to gracefully cancel the move, and to put back the
|
||||
// DOM in its initial state. The card move is then handled reactively by
|
||||
// Blaze with the below query.
|
||||
$boards.sortable('cancel');
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
if (currentUser && typeof currentUser.setBoardSortIndex === 'function') {
|
||||
|
|
@ -95,7 +156,6 @@ BlazeComponent.extendComponent({
|
|||
},
|
||||
});
|
||||
|
||||
// Disable drag-dropping if the current user is not a board member or is comment only
|
||||
this.autorun(() => {
|
||||
if (Utils.isTouchScreenOrShowDesktopDragHandles()) {
|
||||
$boards.sortable({
|
||||
|
|
@ -103,6 +163,7 @@ BlazeComponent.extendComponent({
|
|||
});
|
||||
}
|
||||
});
|
||||
*/
|
||||
},
|
||||
userHasTeams() {
|
||||
if (ReactiveCache.getCurrentUser()?.teams?.length > 0)
|
||||
|
|
@ -134,6 +195,41 @@ BlazeComponent.extendComponent({
|
|||
const ret = this.userHasOrgs() || this.userHasTeams();
|
||||
return ret;
|
||||
},
|
||||
currentMenuPath() {
|
||||
const sel = this.selectedMenu.get();
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
|
||||
// Helper to find space by id in tree
|
||||
const findSpaceById = (nodes, targetId, path = []) => {
|
||||
for (const node of nodes) {
|
||||
if (node.id === targetId) {
|
||||
return [...path, node];
|
||||
}
|
||||
if (node.children && node.children.length > 0) {
|
||||
const result = findSpaceById(node.children, targetId, [...path, node]);
|
||||
if (result) return result;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
if (sel === 'starred') {
|
||||
return { icon: '⭐', text: TAPi18n.__('allboards.starred') };
|
||||
} else if (sel === 'templates') {
|
||||
return { icon: '📋', text: TAPi18n.__('allboards.templates') };
|
||||
} else if (sel === 'remaining') {
|
||||
return { icon: '📂', text: TAPi18n.__('allboards.remaining') };
|
||||
} else {
|
||||
// sel is a workspaceId, build path
|
||||
const tree = this.workspacesTreeVar.get();
|
||||
const spacePath = findSpaceById(tree, sel);
|
||||
if (spacePath && spacePath.length > 0) {
|
||||
const pathText = spacePath.map(s => s.name).join(' / ');
|
||||
return { icon: '🗂️', text: `${TAPi18n.__('allboards.workspaces')} / ${pathText}` };
|
||||
}
|
||||
return { icon: '🗂️', text: TAPi18n.__('allboards.workspaces') };
|
||||
}
|
||||
},
|
||||
boards() {
|
||||
let query = {
|
||||
// { type: 'board' },
|
||||
|
|
@ -188,11 +284,31 @@ BlazeComponent.extendComponent({
|
|||
|
||||
const boards = ReactiveCache.getBoards(query, {});
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
if (currentUser && typeof currentUser.sortBoardsForUser === 'function') {
|
||||
return currentUser.sortBoardsForUser(boards);
|
||||
let list = boards;
|
||||
// Apply left menu filtering
|
||||
const sel = this.selectedMenu.get();
|
||||
const assignments = (currentUser && currentUser.profile && currentUser.profile.boardWorkspaceAssignments) || {};
|
||||
if (sel === 'starred') {
|
||||
list = list.filter(b => currentUser && currentUser.hasStarred(b._id));
|
||||
} else if (sel === 'templates') {
|
||||
list = list.filter(b => b.type === 'template-container');
|
||||
} else if (sel === 'remaining') {
|
||||
// Show boards not in any workspace AND not templates
|
||||
// Keep starred boards visible in Remaining too
|
||||
list = list.filter(b =>
|
||||
!assignments[b._id] &&
|
||||
b.type !== 'template-container'
|
||||
);
|
||||
} else {
|
||||
// assume sel is a workspaceId
|
||||
// Keep starred boards visible in their workspace too
|
||||
list = list.filter(b => assignments[b._id] === sel);
|
||||
}
|
||||
// Fallback: deterministic title sort when no user mapping is available (e.g., public page)
|
||||
return boards.slice().sort((a, b) => (a.title || '').localeCompare(b.title || ''));
|
||||
|
||||
if (currentUser && typeof currentUser.sortBoardsForUser === 'function') {
|
||||
return currentUser.sortBoardsForUser(list);
|
||||
}
|
||||
return list.slice().sort((a, b) => (a.title || '').localeCompare(b.title || ''));
|
||||
},
|
||||
boardLists(boardId) {
|
||||
/* Bug Board icons random dance https://github.com/wekan/wekan/issues/4214
|
||||
|
|
@ -240,11 +356,65 @@ BlazeComponent.extendComponent({
|
|||
events() {
|
||||
return [
|
||||
{
|
||||
'click .js-add-board': Popup.open('createBoard'),
|
||||
'click .js-star-board'(evt) {
|
||||
const boardId = this.currentData()._id;
|
||||
ReactiveCache.getCurrentUser().toggleBoardStar(boardId);
|
||||
'click .js-select-menu'(evt) {
|
||||
const type = evt.currentTarget.getAttribute('data-type');
|
||||
this.selectedWorkspaceIdVar.set(null);
|
||||
this.selectedMenu.set(type);
|
||||
},
|
||||
'click .js-select-workspace'(evt) {
|
||||
const id = evt.currentTarget.getAttribute('data-id');
|
||||
this.selectedWorkspaceIdVar.set(id);
|
||||
this.selectedMenu.set(id);
|
||||
},
|
||||
'click .js-add-workspace'(evt) {
|
||||
evt.preventDefault();
|
||||
const name = prompt(TAPi18n.__('allboards.add-workspace-prompt') || 'New Space name');
|
||||
if (name && name.trim()) {
|
||||
Meteor.call('createWorkspace', { parentId: null, name: name.trim() }, (err, res) => {
|
||||
if (err) console.error(err);
|
||||
});
|
||||
}
|
||||
},
|
||||
'click .js-add-board'(evt) {
|
||||
// Store the currently selected workspace/menu for board creation
|
||||
const selectedWorkspaceId = this.selectedWorkspaceIdVar.get();
|
||||
const selectedMenu = this.selectedMenu.get();
|
||||
|
||||
if (selectedWorkspaceId) {
|
||||
Session.set('createBoardInWorkspace', selectedWorkspaceId);
|
||||
} else {
|
||||
Session.set('createBoardInWorkspace', null);
|
||||
}
|
||||
|
||||
// Open different popup based on context
|
||||
if (selectedMenu === 'templates') {
|
||||
Popup.open('createTemplateContainer')(evt);
|
||||
} else {
|
||||
Popup.open('createBoard')(evt);
|
||||
}
|
||||
},
|
||||
'click .js-star-board'(evt) {
|
||||
evt.preventDefault();
|
||||
evt.stopPropagation();
|
||||
const boardId = this.currentData()._id;
|
||||
if (boardId) {
|
||||
Meteor.call('toggleBoardStar', boardId);
|
||||
}
|
||||
},
|
||||
// HTML5 DnD from boards to spaces
|
||||
'dragstart .js-board'(evt) {
|
||||
const boardId = this.currentData()._id;
|
||||
|
||||
// Support multi-drag
|
||||
if (BoardMultiSelection.isActive() && BoardMultiSelection.isSelected(boardId)) {
|
||||
const selectedIds = BoardMultiSelection.getSelectedBoardIds();
|
||||
try {
|
||||
evt.originalEvent.dataTransfer.setData('text/plain', JSON.stringify(selectedIds));
|
||||
evt.originalEvent.dataTransfer.setData('application/x-board-multi', 'true');
|
||||
} catch (e) {}
|
||||
} else {
|
||||
try { evt.originalEvent.dataTransfer.setData('text/plain', boardId); } catch (e) {}
|
||||
}
|
||||
},
|
||||
'click .js-clone-board'(evt) {
|
||||
if (confirm(TAPi18n.__('duplicate-board-confirm'))) {
|
||||
|
|
@ -295,6 +465,58 @@ BlazeComponent.extendComponent({
|
|||
}
|
||||
});
|
||||
},
|
||||
'click .js-multiselection-activate'(evt) {
|
||||
evt.preventDefault();
|
||||
if (BoardMultiSelection.isActive()) {
|
||||
BoardMultiSelection.disable();
|
||||
} else {
|
||||
BoardMultiSelection.activate();
|
||||
}
|
||||
},
|
||||
'click .js-multiselection-reset'(evt) {
|
||||
evt.preventDefault();
|
||||
BoardMultiSelection.disable();
|
||||
},
|
||||
'click .js-toggle-board-multi-selection'(evt) {
|
||||
evt.preventDefault();
|
||||
evt.stopPropagation();
|
||||
const boardId = this.currentData()._id;
|
||||
BoardMultiSelection.toogle(boardId);
|
||||
},
|
||||
'click .js-archive-selected-boards'(evt) {
|
||||
evt.preventDefault();
|
||||
const selectedBoards = BoardMultiSelection.getSelectedBoardIds();
|
||||
if (selectedBoards.length > 0 && confirm(TAPi18n.__('archive-board-confirm'))) {
|
||||
selectedBoards.forEach(boardId => {
|
||||
Meteor.call('archiveBoard', boardId);
|
||||
});
|
||||
BoardMultiSelection.reset();
|
||||
}
|
||||
},
|
||||
'click .js-duplicate-selected-boards'(evt) {
|
||||
evt.preventDefault();
|
||||
const selectedBoards = BoardMultiSelection.getSelectedBoardIds();
|
||||
if (selectedBoards.length > 0 && confirm(TAPi18n.__('duplicate-board-confirm'))) {
|
||||
selectedBoards.forEach(boardId => {
|
||||
const board = ReactiveCache.getBoard(boardId);
|
||||
if (board) {
|
||||
Meteor.call(
|
||||
'copyBoard',
|
||||
boardId,
|
||||
{
|
||||
sort: ReactiveCache.getBoards({ archived: false }).length,
|
||||
type: 'board',
|
||||
title: board.title,
|
||||
},
|
||||
(err, res) => {
|
||||
if (err) console.error(err);
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
BoardMultiSelection.reset();
|
||||
}
|
||||
},
|
||||
'click #resetBtn'(event) {
|
||||
let allBoards = document.getElementsByClassName("js-board");
|
||||
let currBoard;
|
||||
|
|
@ -361,7 +583,260 @@ BlazeComponent.extendComponent({
|
|||
}
|
||||
}
|
||||
},
|
||||
'click .js-edit-workspace'(evt) {
|
||||
evt.preventDefault();
|
||||
evt.stopPropagation();
|
||||
const workspaceId = evt.currentTarget.getAttribute('data-id');
|
||||
|
||||
// Find the space in the tree
|
||||
const findSpace = (nodes, id) => {
|
||||
for (const node of nodes) {
|
||||
if (node.id === id) return node;
|
||||
if (node.children) {
|
||||
const found = findSpace(node.children, id);
|
||||
if (found) return found;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
const tree = this.workspacesTreeVar.get();
|
||||
const space = findSpace(tree, workspaceId);
|
||||
|
||||
if (space) {
|
||||
const newName = prompt(TAPi18n.__('allboards.edit-workspace-name') || 'Space name:', space.name);
|
||||
const newIcon = prompt(TAPi18n.__('allboards.edit-workspace-icon') || 'Space icon (markdown):', space.icon || '📁');
|
||||
|
||||
if (newName !== null && newName.trim()) {
|
||||
// Update space in tree
|
||||
const updateSpaceInTree = (nodes, id, updates) => {
|
||||
return nodes.map(node => {
|
||||
if (node.id === id) {
|
||||
return { ...node, ...updates };
|
||||
}
|
||||
if (node.children) {
|
||||
return { ...node, children: updateSpaceInTree(node.children, id, updates) };
|
||||
}
|
||||
return node;
|
||||
});
|
||||
};
|
||||
|
||||
const updatedTree = updateSpaceInTree(tree, workspaceId, {
|
||||
name: newName.trim(),
|
||||
icon: newIcon || '📁'
|
||||
});
|
||||
|
||||
Meteor.call('setWorkspacesTree', updatedTree, (err) => {
|
||||
if (err) console.error(err);
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
'click .js-add-subworkspace'(evt) {
|
||||
evt.preventDefault();
|
||||
evt.stopPropagation();
|
||||
const parentId = evt.currentTarget.getAttribute('data-id');
|
||||
const name = prompt(TAPi18n.__('allboards.add-subworkspace-prompt') || 'Subspace name:');
|
||||
|
||||
if (name && name.trim()) {
|
||||
Meteor.call('createWorkspace', { parentId, name: name.trim() }, (err) => {
|
||||
if (err) console.error(err);
|
||||
});
|
||||
}
|
||||
},
|
||||
'dragstart .workspace-node'(evt) {
|
||||
const workspaceId = evt.currentTarget.getAttribute('data-workspace-id');
|
||||
evt.originalEvent.dataTransfer.effectAllowed = 'move';
|
||||
evt.originalEvent.dataTransfer.setData('application/x-workspace-id', workspaceId);
|
||||
|
||||
// Create a better drag image
|
||||
const dragImage = evt.currentTarget.cloneNode(true);
|
||||
dragImage.style.position = 'absolute';
|
||||
dragImage.style.top = '-9999px';
|
||||
dragImage.style.opacity = '0.8';
|
||||
document.body.appendChild(dragImage);
|
||||
evt.originalEvent.dataTransfer.setDragImage(dragImage, 0, 0);
|
||||
setTimeout(() => document.body.removeChild(dragImage), 0);
|
||||
|
||||
evt.currentTarget.classList.add('dragging');
|
||||
},
|
||||
'dragend .workspace-node'(evt) {
|
||||
evt.currentTarget.classList.remove('dragging');
|
||||
document.querySelectorAll('.workspace-node').forEach(el => {
|
||||
el.classList.remove('drag-over');
|
||||
});
|
||||
},
|
||||
'dragover .workspace-node'(evt) {
|
||||
evt.preventDefault();
|
||||
evt.stopPropagation();
|
||||
|
||||
const draggingEl = document.querySelector('.workspace-node.dragging');
|
||||
const targetEl = evt.currentTarget;
|
||||
|
||||
// Allow dropping boards on any space
|
||||
// Or allow dropping spaces on other spaces (but not on itself or descendants)
|
||||
if (!draggingEl || (targetEl !== draggingEl && !draggingEl.contains(targetEl))) {
|
||||
evt.originalEvent.dataTransfer.dropEffect = 'move';
|
||||
targetEl.classList.add('drag-over');
|
||||
}
|
||||
},
|
||||
'dragleave .workspace-node'(evt) {
|
||||
evt.currentTarget.classList.remove('drag-over');
|
||||
},
|
||||
'drop .workspace-node'(evt) {
|
||||
evt.preventDefault();
|
||||
evt.stopPropagation();
|
||||
|
||||
const targetEl = evt.currentTarget;
|
||||
targetEl.classList.remove('drag-over');
|
||||
|
||||
// Check what's being dropped - board or workspace
|
||||
const draggedWorkspaceId = evt.originalEvent.dataTransfer.getData('application/x-workspace-id');
|
||||
const isMultiBoard = evt.originalEvent.dataTransfer.getData('application/x-board-multi');
|
||||
const boardData = evt.originalEvent.dataTransfer.getData('text/plain');
|
||||
|
||||
if (draggedWorkspaceId && !boardData) {
|
||||
// This is a workspace reorder operation
|
||||
const targetWorkspaceId = targetEl.getAttribute('data-workspace-id');
|
||||
|
||||
if (draggedWorkspaceId !== targetWorkspaceId) {
|
||||
this.reorderWorkspaces(draggedWorkspaceId, targetWorkspaceId);
|
||||
}
|
||||
} else if (boardData) {
|
||||
// This is a board assignment operation
|
||||
// Get the workspace ID directly from the dropped workspace-node's data-workspace-id attribute
|
||||
const workspaceId = targetEl.getAttribute('data-workspace-id');
|
||||
|
||||
if (workspaceId) {
|
||||
if (isMultiBoard) {
|
||||
// Multi-board drag
|
||||
try {
|
||||
const boardIds = JSON.parse(boardData);
|
||||
boardIds.forEach(boardId => {
|
||||
Meteor.call('assignBoardToWorkspace', boardId, workspaceId);
|
||||
});
|
||||
} catch (e) {
|
||||
// Error parsing multi-board data
|
||||
}
|
||||
} else {
|
||||
// Single board drag
|
||||
Meteor.call('assignBoardToWorkspace', boardData, workspaceId);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'dragover .js-select-menu'(evt) {
|
||||
evt.preventDefault();
|
||||
evt.stopPropagation();
|
||||
|
||||
const menuType = evt.currentTarget.getAttribute('data-type');
|
||||
// Only allow drop on "remaining" menu to unassign boards from spaces
|
||||
if (menuType === 'remaining') {
|
||||
evt.originalEvent.dataTransfer.dropEffect = 'move';
|
||||
evt.currentTarget.classList.add('drag-over');
|
||||
}
|
||||
},
|
||||
'dragleave .js-select-menu'(evt) {
|
||||
evt.currentTarget.classList.remove('drag-over');
|
||||
},
|
||||
'drop .js-select-menu'(evt) {
|
||||
evt.preventDefault();
|
||||
evt.stopPropagation();
|
||||
|
||||
const menuType = evt.currentTarget.getAttribute('data-type');
|
||||
evt.currentTarget.classList.remove('drag-over');
|
||||
|
||||
// Only handle drops on "remaining" menu
|
||||
if (menuType !== 'remaining') return;
|
||||
|
||||
const isMultiBoard = evt.originalEvent.dataTransfer.getData('application/x-board-multi');
|
||||
const boardData = evt.originalEvent.dataTransfer.getData('text/plain');
|
||||
|
||||
if (boardData) {
|
||||
if (isMultiBoard) {
|
||||
// Multi-board drag - unassign all from workspaces
|
||||
try {
|
||||
const boardIds = JSON.parse(boardData);
|
||||
boardIds.forEach(boardId => {
|
||||
Meteor.call('unassignBoardFromWorkspace', boardId);
|
||||
});
|
||||
} catch (e) {
|
||||
// Error parsing multi-board data
|
||||
}
|
||||
} else {
|
||||
// Single board drag - unassign from workspace
|
||||
Meteor.call('unassignBoardFromWorkspace', boardData);
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
];
|
||||
},
|
||||
// Helpers for templates
|
||||
workspacesTree() {
|
||||
return this.workspacesTreeVar.get();
|
||||
},
|
||||
selectedWorkspaceId() {
|
||||
return this.selectedWorkspaceIdVar.get();
|
||||
},
|
||||
isSelectedMenu(type) {
|
||||
return this.selectedMenu.get() === type;
|
||||
},
|
||||
isSpaceSelected(id) {
|
||||
return this.selectedWorkspaceIdVar.get() === id;
|
||||
},
|
||||
menuItemCount(type) {
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
const assignments = (currentUser && currentUser.profile && currentUser.profile.boardWorkspaceAssignments) || {};
|
||||
|
||||
// Get all boards for counting
|
||||
let query = {
|
||||
$and: [
|
||||
{ archived: false },
|
||||
{ type: { $in: ['board', 'template-container'] } },
|
||||
{ $or: [{ 'members.userId': Meteor.userId() }] },
|
||||
{ title: { $not: { $regex: /^\^.*\^$/ } } }
|
||||
]
|
||||
};
|
||||
const allBoards = ReactiveCache.getBoards(query, {});
|
||||
|
||||
if (type === 'starred') {
|
||||
return allBoards.filter(b => currentUser && currentUser.hasStarred(b._id)).length;
|
||||
} else if (type === 'templates') {
|
||||
return allBoards.filter(b => b.type === 'template-container').length;
|
||||
} else if (type === 'remaining') {
|
||||
// Count boards not in any workspace AND not templates
|
||||
// Include starred boards (they appear in both Starred and Remaining)
|
||||
return allBoards.filter(b =>
|
||||
!assignments[b._id] &&
|
||||
b.type !== 'template-container'
|
||||
).length;
|
||||
}
|
||||
return 0;
|
||||
},
|
||||
workspaceCount(workspaceId) {
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
const assignments = (currentUser && currentUser.profile && currentUser.profile.boardWorkspaceAssignments) || {};
|
||||
|
||||
// Get all boards for counting
|
||||
let query = {
|
||||
$and: [
|
||||
{ archived: false },
|
||||
{ type: { $in: ['board', 'template-container'] } },
|
||||
{ $or: [{ 'members.userId': Meteor.userId() }] },
|
||||
{ title: { $not: { $regex: /^\^.*\^$/ } } }
|
||||
]
|
||||
};
|
||||
const allBoards = ReactiveCache.getBoards(query, {});
|
||||
|
||||
// Count boards directly assigned to this space (not including children)
|
||||
return allBoards.filter(b => assignments[b._id] === workspaceId).length;
|
||||
},
|
||||
canModifyBoards() {
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
return currentUser && !currentUser.isCommentOnly();
|
||||
},
|
||||
hasBoardsSelected() {
|
||||
return BoardMultiSelection.count() > 0;
|
||||
},
|
||||
}).register('boardList');
|
||||
|
|
|
|||
|
|
@ -97,6 +97,12 @@ template(name="minicardCustomFieldDate")
|
|||
template(name="editCardReceivedDatePopup")
|
||||
form.edit-card-received-date
|
||||
.datepicker
|
||||
// Date input field (existing)
|
||||
// Insert calendar selector right after date input
|
||||
.calendar-selector
|
||||
label(for="calendar-received") 🗓️
|
||||
input#calendar-received.js-calendar-date(type="date")
|
||||
// Time input field (if present)
|
||||
.clear-date
|
||||
a.js-clear-date {{_ 'clear'}}
|
||||
.datepicker-actions
|
||||
|
|
@ -106,6 +112,11 @@ template(name="editCardReceivedDatePopup")
|
|||
template(name="editCardStartDatePopup")
|
||||
form.edit-card-start-date
|
||||
.datepicker
|
||||
// Date input field (existing)
|
||||
.calendar-selector
|
||||
label(for="calendar-start") 🗓️
|
||||
input#calendar-start.js-calendar-date(type="date")
|
||||
// Time input field (if present)
|
||||
.clear-date
|
||||
a.js-clear-date {{_ 'clear'}}
|
||||
.datepicker-actions
|
||||
|
|
@ -115,6 +126,11 @@ template(name="editCardStartDatePopup")
|
|||
template(name="editCardDueDatePopup")
|
||||
form.edit-card-due-date
|
||||
.datepicker
|
||||
// Date input field (existing)
|
||||
.calendar-selector
|
||||
label(for="calendar-due") 🗓️
|
||||
input#calendar-due.js-calendar-date(type="date")
|
||||
// Time input field (if present)
|
||||
.clear-date
|
||||
a.js-clear-date {{_ 'clear'}}
|
||||
.datepicker-actions
|
||||
|
|
@ -124,6 +140,11 @@ template(name="editCardDueDatePopup")
|
|||
template(name="editCardEndDatePopup")
|
||||
form.edit-card-end-date
|
||||
.datepicker
|
||||
// Date input field (existing)
|
||||
.calendar-selector
|
||||
label(for="calendar-end") 🗓️
|
||||
input#calendar-end.js-calendar-date(type="date")
|
||||
// Time input field (if present)
|
||||
.clear-date
|
||||
a.js-clear-date {{_ 'clear'}}
|
||||
.datepicker-actions
|
||||
|
|
|
|||
|
|
@ -50,6 +50,17 @@ import {
|
|||
onRendered() {
|
||||
super.onRendered();
|
||||
// DatePicker base class handles initialization with native HTML inputs
|
||||
const self = this;
|
||||
this.$('.js-calendar-date').on('change', function(evt) {
|
||||
const currentUser = ReactiveCache.getCurrentUser && ReactiveCache.getCurrentUser();
|
||||
const dateFormat = currentUser ? currentUser.getDateFormat() : 'YYYY-MM-DD';
|
||||
const value = evt.target.value;
|
||||
if (value) {
|
||||
// Format date according to user preference
|
||||
const formatted = formatDateByUserPreference(new Date(value), dateFormat, true);
|
||||
self._storeDate(new Date(value));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
_storeDate(date) {
|
||||
|
|
|
|||
|
|
@ -191,7 +191,7 @@ template(name="cardDetails")
|
|||
if currentBoard.allowsMembers
|
||||
.card-details-item.card-details-item-members
|
||||
h3.card-details-item-title
|
||||
| 👤s
|
||||
| 👥
|
||||
| {{_ 'members'}}
|
||||
each userId in getMembers
|
||||
+userAvatar(userId=userId cardId=_id)
|
||||
|
|
@ -242,7 +242,7 @@ template(name="cardDetails")
|
|||
if currentBoard.allowsAssignedBy
|
||||
.card-details-item.card-details-item-name
|
||||
h3.card-details-item-title
|
||||
| 👤-plus
|
||||
| ✍️
|
||||
| {{_ 'assigned-by'}}
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ template(name="minicard")
|
|||
class="{{#if colorClass}}minicard-{{colorClass}}{{/if}}")
|
||||
if canModifyCard
|
||||
a.minicard-details-menu-with-handle.js-open-minicard-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}") ☰
|
||||
if canMoveCard
|
||||
.handle
|
||||
| ↕️
|
||||
.dates
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ template(name="datepicker")
|
|||
.fields
|
||||
.left
|
||||
label(for="date") {{_ 'date'}}
|
||||
input.js-date-field#date(type="text" name="date" value=showDate autofocus placeholder=dateFormat)
|
||||
input.js-date-field#date(type="date" name="date" value=showDate autofocus)
|
||||
.right
|
||||
label(for="time") {{_ 'time'}}
|
||||
input.js-time-field#time(type="time" name="time" value=showTime)
|
||||
|
|
|
|||
|
|
@ -55,7 +55,8 @@ template(name="listHeader")
|
|||
a.js-open-list-menu(title="{{_ 'listActionPopup-title'}}") ☰
|
||||
else
|
||||
a.list-header-menu-icon.js-select-list ▶️
|
||||
a.list-header-handle.handle.js-list-handle ↕️
|
||||
unless currentUser.isWorker
|
||||
a.list-header-handle.handle.js-list-handle ↕️
|
||||
else if currentUser.isBoardMember
|
||||
if isWatching
|
||||
i.list-header-watch-icon | 👁️
|
||||
|
|
@ -72,7 +73,8 @@ template(name="listHeader")
|
|||
a.js-open-list-menu(title="{{_ 'listActionPopup-title'}}") ☰
|
||||
if currentUser.isBoardMember
|
||||
unless currentUser.isCommentOnly
|
||||
a.list-header-handle.handle.js-list-handle ↕️
|
||||
unless currentUser.isWorker
|
||||
a.list-header-handle.handle.js-list-handle ↕️
|
||||
|
||||
template(name="editListTitleForm")
|
||||
.list-composer
|
||||
|
|
|
|||
|
|
@ -83,10 +83,6 @@ template(name="header")
|
|||
i.mobile-icon(class="{{#if mobileMode}}active{{/if}}") 📱
|
||||
i.desktop-icon(class="{{#unless mobileMode}}active{{/unless}}") 🖥️
|
||||
|
||||
// Bookmarks button - desktop opens popup, mobile routes to page
|
||||
a.board-header-btn.js-open-bookmarks(title="{{_ 'bookmarks'}}")
|
||||
| 🔖
|
||||
|
||||
// Notifications
|
||||
+notifications
|
||||
|
||||
|
|
|
|||
|
|
@ -293,6 +293,8 @@
|
|||
overflow-y: auto !important;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.pop-over[data-popup="editCardReceivedDatePopup"] .edit-date button,
|
||||
.pop-over[data-popup="editCardStartDatePopup"] .edit-date button,
|
||||
.pop-over[data-popup="editCardDueDatePopup"] .edit-date button,
|
||||
|
|
@ -387,9 +389,6 @@
|
|||
margin: 0;
|
||||
visibility: hidden;
|
||||
}
|
||||
.pop-over .quiet {
|
||||
/* padding: 6px 6px 4px;*/
|
||||
}
|
||||
.pop-over.search-over {
|
||||
background: #f0f0f0;
|
||||
min-height: 14vh;
|
||||
|
|
|
|||
|
|
@ -587,6 +587,10 @@ template(name="boardMenuPopup")
|
|||
| 📦
|
||||
| {{_ 'archived-items'}}
|
||||
if currentUser.isBoardAdmin
|
||||
li
|
||||
a.js-open-migrations
|
||||
| 🔧
|
||||
| {{_ 'migrations'}}
|
||||
li
|
||||
a.js-change-board-color
|
||||
| 🎨
|
||||
|
|
@ -627,10 +631,10 @@ template(name="boardMenuPopup")
|
|||
if currentUser.isBoardAdmin
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-delete-duplicate-lists
|
||||
| 🗑️
|
||||
| {{_ 'delete-duplicate-lists'}}
|
||||
// li
|
||||
// a.js-delete-duplicate-lists
|
||||
// | 🗑️
|
||||
// | {{_ 'delete-duplicate-lists'}}
|
||||
li
|
||||
a.js-archive-board
|
||||
| ➡️📦
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ const viewTitles = {
|
|||
multiselection: 'multi-selection',
|
||||
customFields: 'custom-fields',
|
||||
archives: 'archives',
|
||||
migrations: 'migrations',
|
||||
};
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
|
|
@ -271,6 +272,10 @@ Template.boardMenuPopup.events({
|
|||
Sidebar.setView('archives');
|
||||
Popup.back();
|
||||
},
|
||||
'click .js-open-migrations'() {
|
||||
Sidebar.setView('migrations');
|
||||
Popup.back();
|
||||
},
|
||||
'click .js-change-board-color': Popup.open('boardChangeColor'),
|
||||
'click .js-change-background-image': Popup.open('boardChangeBackgroundImage'),
|
||||
'click .js-board-info-on-my-boards': Popup.open('boardInfoOnMyBoards'),
|
||||
|
|
|
|||
|
|
@ -95,3 +95,7 @@ template(name="createCustomFieldPopup")
|
|||
template(name="deleteCustomFieldPopup")
|
||||
p {{_ "custom-field-delete-pop"}}
|
||||
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
|
||||
|
||||
// Reuse the create form for editing to satisfy popup template lookup
|
||||
template(name="editCustomFieldPopup")
|
||||
+Template.dynamic(template="createCustomFieldPopup")
|
||||
|
|
|
|||
109
client/components/sidebar/sidebarMigrations.jade
Normal file
109
client/components/sidebar/sidebarMigrations.jade
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
template(name='migrationsSidebar')
|
||||
if currentUser.isBoardAdmin
|
||||
.sidebar-migrations
|
||||
h3
|
||||
| 🔧
|
||||
| {{_ 'migrations'}}
|
||||
p.quiet {{_ 'migrations-description'}}
|
||||
|
||||
.migrations-list
|
||||
h4 {{_ 'board-migrations'}}
|
||||
.migration-item
|
||||
a.js-run-migration(data-migration="comprehensive")
|
||||
.migration-name
|
||||
| {{_ 'comprehensive-board-migration'}}
|
||||
.migration-status
|
||||
if comprehensiveMigrationNeeded
|
||||
span.badge.badge-warning {{_ 'migration-needed'}}
|
||||
else
|
||||
span.badge.badge-success {{_ 'migration-complete'}}
|
||||
|
||||
.migration-item
|
||||
a.js-run-migration(data-migration="fixMissingLists")
|
||||
.migration-name
|
||||
| {{_ 'fix-missing-lists-migration'}}
|
||||
.migration-status
|
||||
if fixMissingListsNeeded
|
||||
span.badge.badge-warning {{_ 'migration-needed'}}
|
||||
else
|
||||
span.badge.badge-success {{_ 'migration-complete'}}
|
||||
|
||||
.migration-item
|
||||
a.js-run-migration(data-migration="deleteDuplicateEmptyLists")
|
||||
.migration-name
|
||||
| {{_ 'delete-duplicate-empty-lists-migration'}}
|
||||
.migration-status
|
||||
if deleteDuplicateEmptyListsNeeded
|
||||
span.badge.badge-warning {{_ 'migration-needed'}}
|
||||
else
|
||||
span.badge.badge-success {{_ 'migration-complete'}}
|
||||
|
||||
.migration-item
|
||||
a.js-run-migration(data-migration="restoreLostCards")
|
||||
.migration-name
|
||||
| {{_ 'restore-lost-cards-migration'}}
|
||||
.migration-status
|
||||
if restoreLostCardsNeeded
|
||||
span.badge.badge-warning {{_ 'migration-needed'}}
|
||||
else
|
||||
span.badge.badge-success {{_ 'migration-complete'}}
|
||||
|
||||
.migration-item
|
||||
a.js-run-migration(data-migration="restoreAllArchived")
|
||||
.migration-name
|
||||
| {{_ 'restore-all-archived-migration'}}
|
||||
.migration-status
|
||||
if restoreAllArchivedNeeded
|
||||
span.badge.badge-warning {{_ 'migration-needed'}}
|
||||
else
|
||||
span.badge.badge-success {{_ 'migration-complete'}}
|
||||
|
||||
.migration-item
|
||||
a.js-run-migration(data-migration="fixAvatarUrls")
|
||||
.migration-name
|
||||
| {{_ 'fix-avatar-urls-migration'}}
|
||||
.migration-status
|
||||
if fixAvatarUrlsNeeded
|
||||
span.badge.badge-warning {{_ 'migration-needed'}}
|
||||
else
|
||||
span.badge.badge-success {{_ 'migration-complete'}}
|
||||
|
||||
.migration-item
|
||||
a.js-run-migration(data-migration="fixAllFileUrls")
|
||||
.migration-name
|
||||
| {{_ 'fix-all-file-urls-migration'}}
|
||||
.migration-status
|
||||
if fixAllFileUrlsNeeded
|
||||
span.badge.badge-warning {{_ 'migration-needed'}}
|
||||
else
|
||||
span.badge.badge-success {{_ 'migration-complete'}}
|
||||
else
|
||||
p.quiet {{_ 'migrations-admin-only'}}
|
||||
|
||||
template(name='runComprehensiveMigrationPopup')
|
||||
p {{_ 'run-comprehensive-migration-confirm'}}
|
||||
button.js-confirm.primary.full(type="submit") {{_ 'run-migration'}}
|
||||
|
||||
template(name='runFixMissingListsMigrationPopup')
|
||||
p {{_ 'run-fix-missing-lists-migration-confirm'}}
|
||||
button.js-confirm.primary.full(type="submit") {{_ 'run-migration'}}
|
||||
|
||||
template(name='runDeleteDuplicateEmptyListsMigrationPopup')
|
||||
p {{_ 'run-delete-duplicate-empty-lists-migration-confirm'}}
|
||||
button.js-confirm.primary.full(type="submit") {{_ 'run-migration'}}
|
||||
|
||||
template(name='runRestoreLostCardsMigrationPopup')
|
||||
p {{_ 'run-restore-lost-cards-migration-confirm'}}
|
||||
button.js-confirm.primary.full(type="submit") {{_ 'run-migration'}}
|
||||
|
||||
template(name='runRestoreAllArchivedMigrationPopup')
|
||||
p {{_ 'run-restore-all-archived-migration-confirm'}}
|
||||
button.js-confirm.primary.full(type="submit") {{_ 'run-migration'}}
|
||||
|
||||
template(name='runFixAvatarUrlsMigrationPopup')
|
||||
p {{_ 'run-fix-avatar-urls-migration-confirm'}}
|
||||
button.js-confirm.primary.full(type="submit") {{_ 'run-migration'}}
|
||||
|
||||
template(name='runFixAllFileUrlsMigrationPopup')
|
||||
p {{_ 'run-fix-all-file-urls-migration-confirm'}}
|
||||
button.js-confirm.primary.full(type="submit") {{_ 'run-migration'}}
|
||||
341
client/components/sidebar/sidebarMigrations.js
Normal file
341
client/components/sidebar/sidebarMigrations.js
Normal file
|
|
@ -0,0 +1,341 @@
|
|||
import { ReactiveCache } from '/imports/reactiveCache';
|
||||
import { TAPi18n } from '/imports/i18n';
|
||||
import { migrationProgressManager } from '/client/components/migrationProgress';
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.migrationStatuses = new ReactiveVar({});
|
||||
this.loadMigrationStatuses();
|
||||
},
|
||||
|
||||
loadMigrationStatuses() {
|
||||
const boardId = Session.get('currentBoard');
|
||||
if (!boardId) return;
|
||||
|
||||
// Check comprehensive migration
|
||||
Meteor.call('comprehensiveBoardMigration.needsMigration', boardId, (err, res) => {
|
||||
if (!err) {
|
||||
const statuses = this.migrationStatuses.get();
|
||||
statuses.comprehensive = res;
|
||||
this.migrationStatuses.set(statuses);
|
||||
}
|
||||
});
|
||||
|
||||
// Check fix missing lists migration
|
||||
Meteor.call('fixMissingListsMigration.needsMigration', boardId, (err, res) => {
|
||||
if (!err) {
|
||||
const statuses = this.migrationStatuses.get();
|
||||
statuses.fixMissingLists = res;
|
||||
this.migrationStatuses.set(statuses);
|
||||
}
|
||||
});
|
||||
|
||||
// Check delete duplicate empty lists migration
|
||||
Meteor.call('deleteDuplicateEmptyLists.needsMigration', boardId, (err, res) => {
|
||||
if (!err) {
|
||||
const statuses = this.migrationStatuses.get();
|
||||
statuses.deleteDuplicateEmptyLists = res;
|
||||
this.migrationStatuses.set(statuses);
|
||||
}
|
||||
});
|
||||
|
||||
// Check restore lost cards migration
|
||||
Meteor.call('restoreLostCards.needsMigration', boardId, (err, res) => {
|
||||
if (!err) {
|
||||
const statuses = this.migrationStatuses.get();
|
||||
statuses.restoreLostCards = res;
|
||||
this.migrationStatuses.set(statuses);
|
||||
}
|
||||
});
|
||||
|
||||
// Check restore all archived migration
|
||||
Meteor.call('restoreAllArchived.needsMigration', boardId, (err, res) => {
|
||||
if (!err) {
|
||||
const statuses = this.migrationStatuses.get();
|
||||
statuses.restoreAllArchived = res;
|
||||
this.migrationStatuses.set(statuses);
|
||||
}
|
||||
});
|
||||
|
||||
// Check fix avatar URLs migration (board-specific)
|
||||
Meteor.call('fixAvatarUrls.needsMigration', boardId, (err, res) => {
|
||||
if (!err) {
|
||||
const statuses = this.migrationStatuses.get();
|
||||
statuses.fixAvatarUrls = res;
|
||||
this.migrationStatuses.set(statuses);
|
||||
}
|
||||
});
|
||||
|
||||
// Check fix all file URLs migration (board-specific)
|
||||
Meteor.call('fixAllFileUrls.needsMigration', boardId, (err, res) => {
|
||||
if (!err) {
|
||||
const statuses = this.migrationStatuses.get();
|
||||
statuses.fixAllFileUrls = res;
|
||||
this.migrationStatuses.set(statuses);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
comprehensiveMigrationNeeded() {
|
||||
return this.migrationStatuses.get().comprehensive === true;
|
||||
},
|
||||
|
||||
fixMissingListsNeeded() {
|
||||
return this.migrationStatuses.get().fixMissingLists === true;
|
||||
},
|
||||
|
||||
deleteDuplicateEmptyListsNeeded() {
|
||||
return this.migrationStatuses.get().deleteDuplicateEmptyLists === true;
|
||||
},
|
||||
|
||||
restoreLostCardsNeeded() {
|
||||
return this.migrationStatuses.get().restoreLostCards === true;
|
||||
},
|
||||
|
||||
restoreAllArchivedNeeded() {
|
||||
return this.migrationStatuses.get().restoreAllArchived === true;
|
||||
},
|
||||
|
||||
fixAvatarUrlsNeeded() {
|
||||
return this.migrationStatuses.get().fixAvatarUrls === true;
|
||||
},
|
||||
|
||||
fixAllFileUrlsNeeded() {
|
||||
return this.migrationStatuses.get().fixAllFileUrls === true;
|
||||
},
|
||||
|
||||
// Simulate migration progress updates using the global progress popup
|
||||
async simulateMigrationProgress(progressSteps) {
|
||||
const totalSteps = progressSteps.length;
|
||||
for (let i = 0; i < progressSteps.length; i++) {
|
||||
const step = progressSteps[i];
|
||||
const overall = Math.round(((i + 1) / totalSteps) * 100);
|
||||
|
||||
// Start step
|
||||
migrationProgressManager.updateProgress({
|
||||
overallProgress: overall,
|
||||
currentStep: i + 1,
|
||||
totalSteps,
|
||||
stepName: step.step,
|
||||
stepProgress: 0,
|
||||
stepStatus: `Starting ${step.name}...`,
|
||||
stepDetails: null,
|
||||
boardId: Session.get('currentBoard'),
|
||||
});
|
||||
|
||||
const stepDuration = step.duration;
|
||||
const updateInterval = 100;
|
||||
const totalUpdates = Math.max(1, Math.floor(stepDuration / updateInterval));
|
||||
for (let j = 0; j < totalUpdates; j++) {
|
||||
const per = Math.round(((j + 1) / totalUpdates) * 100);
|
||||
migrationProgressManager.updateProgress({
|
||||
overallProgress: overall,
|
||||
currentStep: i + 1,
|
||||
totalSteps,
|
||||
stepName: step.step,
|
||||
stepProgress: per,
|
||||
stepStatus: `Processing ${step.name}...`,
|
||||
stepDetails: { progress: `${per}%` },
|
||||
boardId: Session.get('currentBoard'),
|
||||
});
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await new Promise((r) => setTimeout(r, updateInterval));
|
||||
}
|
||||
|
||||
// Complete step
|
||||
migrationProgressManager.updateProgress({
|
||||
overallProgress: overall,
|
||||
currentStep: i + 1,
|
||||
totalSteps,
|
||||
stepName: step.step,
|
||||
stepProgress: 100,
|
||||
stepStatus: `${step.name} completed`,
|
||||
stepDetails: { status: 'completed' },
|
||||
boardId: Session.get('currentBoard'),
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
runMigration(migrationType) {
|
||||
const boardId = Session.get('currentBoard');
|
||||
|
||||
let methodName;
|
||||
let methodArgs = [];
|
||||
|
||||
switch (migrationType) {
|
||||
case 'comprehensive':
|
||||
methodName = 'comprehensiveBoardMigration.execute';
|
||||
methodArgs = [boardId];
|
||||
break;
|
||||
|
||||
case 'fixMissingLists':
|
||||
methodName = 'fixMissingListsMigration.execute';
|
||||
methodArgs = [boardId];
|
||||
break;
|
||||
|
||||
case 'deleteDuplicateEmptyLists':
|
||||
methodName = 'deleteDuplicateEmptyLists.execute';
|
||||
methodArgs = [boardId];
|
||||
break;
|
||||
|
||||
case 'restoreLostCards':
|
||||
methodName = 'restoreLostCards.execute';
|
||||
methodArgs = [boardId];
|
||||
break;
|
||||
|
||||
case 'restoreAllArchived':
|
||||
methodName = 'restoreAllArchived.execute';
|
||||
methodArgs = [boardId];
|
||||
break;
|
||||
|
||||
case 'fixAvatarUrls':
|
||||
methodName = 'fixAvatarUrls.execute';
|
||||
methodArgs = [boardId];
|
||||
break;
|
||||
|
||||
case 'fixAllFileUrls':
|
||||
methodName = 'fixAllFileUrls.execute';
|
||||
methodArgs = [boardId];
|
||||
break;
|
||||
}
|
||||
|
||||
if (methodName) {
|
||||
// Define simulated steps per migration type
|
||||
const stepsByType = {
|
||||
comprehensive: [
|
||||
{ step: 'analyze_board_structure', name: 'Analyze Board Structure', duration: 800 },
|
||||
{ step: 'fix_orphaned_cards', name: 'Fix Orphaned Cards', duration: 1200 },
|
||||
{ step: 'convert_shared_lists', name: 'Convert Shared Lists', duration: 1000 },
|
||||
{ step: 'ensure_per_swimlane_lists', name: 'Ensure Per-Swimlane Lists', duration: 800 },
|
||||
{ step: 'validate_migration', name: 'Validate Migration', duration: 800 },
|
||||
{ step: 'fix_avatar_urls', name: 'Fix Avatar URLs', duration: 600 },
|
||||
{ step: 'fix_attachment_urls', name: 'Fix Attachment URLs', duration: 600 },
|
||||
],
|
||||
fixMissingLists: [
|
||||
{ step: 'analyze_lists', name: 'Analyze Lists', duration: 600 },
|
||||
{ step: 'create_missing_lists', name: 'Create Missing Lists', duration: 900 },
|
||||
{ step: 'update_cards', name: 'Update Cards', duration: 900 },
|
||||
{ step: 'finalize', name: 'Finalize', duration: 400 },
|
||||
],
|
||||
deleteDuplicateEmptyLists: [
|
||||
{ step: 'convert_shared_lists', name: 'Convert Shared Lists', duration: 700 },
|
||||
{ step: 'delete_duplicate_empty_lists', name: 'Delete Duplicate Empty Lists', duration: 800 },
|
||||
],
|
||||
restoreLostCards: [
|
||||
{ step: 'ensure_lost_cards_swimlane', name: 'Ensure Lost Cards Swimlane', duration: 600 },
|
||||
{ step: 'restore_lists', name: 'Restore Lists', duration: 800 },
|
||||
{ step: 'restore_cards', name: 'Restore Cards', duration: 1000 },
|
||||
],
|
||||
restoreAllArchived: [
|
||||
{ step: 'restore_swimlanes', name: 'Restore Swimlanes', duration: 800 },
|
||||
{ step: 'restore_lists', name: 'Restore Lists', duration: 900 },
|
||||
{ step: 'restore_cards', name: 'Restore Cards', duration: 1000 },
|
||||
{ step: 'fix_missing_ids', name: 'Fix Missing IDs', duration: 600 },
|
||||
],
|
||||
fixAvatarUrls: [
|
||||
{ step: 'scan_users', name: 'Checking board member avatars', duration: 500 },
|
||||
{ step: 'fix_urls', name: 'Fixing avatar URLs', duration: 900 },
|
||||
],
|
||||
fixAllFileUrls: [
|
||||
{ step: 'scan_files', name: 'Checking board file attachments', duration: 600 },
|
||||
{ step: 'fix_urls', name: 'Fixing file URLs', duration: 1000 },
|
||||
],
|
||||
};
|
||||
|
||||
const steps = stepsByType[migrationType] || [
|
||||
{ step: 'running', name: 'Running Migration', duration: 1000 },
|
||||
];
|
||||
|
||||
// Kick off popup and simulated progress
|
||||
migrationProgressManager.startMigration();
|
||||
const progressPromise = this.simulateMigrationProgress(steps);
|
||||
|
||||
// Start migration call
|
||||
const callPromise = new Promise((resolve, reject) => {
|
||||
Meteor.call(methodName, ...methodArgs, (err, result) => {
|
||||
if (err) return reject(err);
|
||||
return resolve(result);
|
||||
});
|
||||
});
|
||||
|
||||
Promise.allSettled([callPromise, progressPromise]).then(([callRes]) => {
|
||||
if (callRes.status === 'rejected') {
|
||||
migrationProgressManager.failMigration(callRes.reason);
|
||||
} else {
|
||||
const result = callRes.value;
|
||||
// Summarize result details in the popup
|
||||
let summary = {};
|
||||
if (result && result.results) {
|
||||
// Comprehensive returns {success, results}
|
||||
const r = result.results;
|
||||
summary = {
|
||||
totalCardsProcessed: r.totalCardsProcessed,
|
||||
totalListsProcessed: r.totalListsProcessed,
|
||||
totalListsCreated: r.totalListsCreated,
|
||||
};
|
||||
} else if (result && result.changes) {
|
||||
// Many migrations return a changes string array
|
||||
summary = { changes: result.changes.join(' | ') };
|
||||
} else if (result && typeof result === 'object') {
|
||||
summary = result;
|
||||
}
|
||||
|
||||
migrationProgressManager.updateProgress({
|
||||
overallProgress: 100,
|
||||
currentStep: steps.length,
|
||||
totalSteps: steps.length,
|
||||
stepName: 'completed',
|
||||
stepProgress: 100,
|
||||
stepStatus: 'Migration completed',
|
||||
stepDetails: summary,
|
||||
boardId: Session.get('currentBoard'),
|
||||
});
|
||||
|
||||
migrationProgressManager.completeMigration();
|
||||
|
||||
// Refresh status badges slightly after
|
||||
Meteor.setTimeout(() => {
|
||||
this.loadMigrationStatuses();
|
||||
}, 1000);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
events() {
|
||||
const self = this; // Capture component reference
|
||||
|
||||
return [
|
||||
{
|
||||
'click .js-run-migration[data-migration="comprehensive"]': Popup.afterConfirm('runComprehensiveMigration', function() {
|
||||
self.runMigration('comprehensive');
|
||||
Popup.back();
|
||||
}),
|
||||
'click .js-run-migration[data-migration="fixMissingLists"]': Popup.afterConfirm('runFixMissingListsMigration', function() {
|
||||
self.runMigration('fixMissingLists');
|
||||
Popup.back();
|
||||
}),
|
||||
'click .js-run-migration[data-migration="deleteDuplicateEmptyLists"]': Popup.afterConfirm('runDeleteDuplicateEmptyListsMigration', function() {
|
||||
self.runMigration('deleteDuplicateEmptyLists');
|
||||
Popup.back();
|
||||
}),
|
||||
'click .js-run-migration[data-migration="restoreLostCards"]': Popup.afterConfirm('runRestoreLostCardsMigration', function() {
|
||||
self.runMigration('restoreLostCards');
|
||||
Popup.back();
|
||||
}),
|
||||
'click .js-run-migration[data-migration="restoreAllArchived"]': Popup.afterConfirm('runRestoreAllArchivedMigration', function() {
|
||||
self.runMigration('restoreAllArchived');
|
||||
Popup.back();
|
||||
}),
|
||||
'click .js-run-migration[data-migration="fixAvatarUrls"]': Popup.afterConfirm('runFixAvatarUrlsMigration', function() {
|
||||
self.runMigration('fixAvatarUrls');
|
||||
Popup.back();
|
||||
}),
|
||||
'click .js-run-migration[data-migration="fixAllFileUrls"]': Popup.afterConfirm('runFixAllFileUrlsMigration', function() {
|
||||
self.runMigration('fixAllFileUrls');
|
||||
Popup.back();
|
||||
}),
|
||||
},
|
||||
];
|
||||
},
|
||||
}).register('migrationsSidebar');
|
||||
|
|
@ -25,25 +25,26 @@ template(name="swimlaneFixedHeader")
|
|||
.swimlane-header-menu
|
||||
if currentUser
|
||||
unless currentUser.isCommentOnly
|
||||
a.js-open-add-swimlane-menu.swimlane-header-plus-icon(title="{{_ 'add-swimlane'}}")
|
||||
| ➕
|
||||
a.js-open-swimlane-menu(title="{{_ 'swimlaneActionPopup-title'}}")
|
||||
| ☰
|
||||
//// TODO: Collapse Swimlane: make button working, etc.
|
||||
//unless collapsed
|
||||
// a.js-collapse-swimlane(title="{{_ 'collapse'}}")
|
||||
// i.fa.fa-arrow-down.swimlane-header-collapse-down
|
||||
// ⬆️.swimlane-header-collapse-up
|
||||
//if collapsed
|
||||
// a.js-collapse-swimlane(title="{{_ 'uncollapse'}}")
|
||||
// ⬆️.swimlane-header-collapse-up
|
||||
// i.fa.fa-arrow-down.swimlane-header-collapse-down
|
||||
unless isTouchScreen
|
||||
a.swimlane-header-handle.handle.js-swimlane-header-handle
|
||||
| ↕️
|
||||
if isTouchScreen
|
||||
a.swimlane-header-miniscreen-handle.handle.js-swimlane-header-handle
|
||||
| ↕️
|
||||
unless currentUser.isWorker
|
||||
a.js-open-add-swimlane-menu.swimlane-header-plus-icon(title="{{_ 'add-swimlane'}}")
|
||||
| ➕
|
||||
a.js-open-swimlane-menu(title="{{_ 'swimlaneActionPopup-title'}}")
|
||||
| ☰
|
||||
//// TODO: Collapse Swimlane: make button working, etc.
|
||||
//unless collapsed
|
||||
// a.js-collapse-swimlane(title="{{_ 'collapse'}}")
|
||||
// i.fa.fa-arrow-down.swimlane-header-collapse-down
|
||||
// ⬆️.swimlane-header-collapse-up
|
||||
//if collapsed
|
||||
// a.js-collapse-swimlane(title="{{_ 'uncollapse'}}")
|
||||
// ⬆️.swimlane-header-collapse-up
|
||||
// i.fa.fa-arrow-down.swimlane-header-collapse-down
|
||||
unless isTouchScreen
|
||||
a.swimlane-header-handle.handle.js-swimlane-header-handle
|
||||
| ↕️
|
||||
if isTouchScreen
|
||||
a.swimlane-header-miniscreen-handle.handle.js-swimlane-header-handle
|
||||
| ↕️
|
||||
|
||||
template(name="editSwimlaneTitleForm")
|
||||
.list-composer
|
||||
|
|
|
|||
|
|
@ -12,11 +12,6 @@ template(name="headerUserBar")
|
|||
|
||||
template(name="memberMenuPopup")
|
||||
ul.pop-over-list
|
||||
// Bookmarks at the very top
|
||||
li
|
||||
a.js-open-bookmarks
|
||||
| 🔖
|
||||
| {{_ 'bookmarks'}}
|
||||
with currentUser
|
||||
li
|
||||
a.js-my-cards(href="{{pathFor 'my-cards'}}")
|
||||
|
|
@ -32,6 +27,7 @@ template(name="memberMenuPopup")
|
|||
| {{_ 'globalSearch-title'}}
|
||||
li
|
||||
a(href="{{pathFor 'home'}}")
|
||||
| 🏠
|
||||
| 🏠
|
||||
| {{_ 'all-boards'}}
|
||||
li
|
||||
|
|
|
|||
|
|
@ -73,6 +73,10 @@ Blaze.registerHelper('canModifyCard', () =>
|
|||
Utils.canModifyCard(),
|
||||
);
|
||||
|
||||
Blaze.registerHelper('canMoveCard', () =>
|
||||
Utils.canMoveCard(),
|
||||
);
|
||||
|
||||
Blaze.registerHelper('canModifyBoard', () =>
|
||||
Utils.canModifyBoard(),
|
||||
);
|
||||
|
|
|
|||
73
client/lib/boardMultiSelection.js
Normal file
73
client/lib/boardMultiSelection.js
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
import { ReactiveCache } from '/imports/reactiveCache';
|
||||
|
||||
BoardMultiSelection = {
|
||||
_selectedBoards: new ReactiveVar([]),
|
||||
|
||||
_isActive: new ReactiveVar(false),
|
||||
|
||||
reset() {
|
||||
this._selectedBoards.set([]);
|
||||
},
|
||||
|
||||
isActive() {
|
||||
return this._isActive.get();
|
||||
},
|
||||
|
||||
count() {
|
||||
return this._selectedBoards.get().length;
|
||||
},
|
||||
|
||||
isEmpty() {
|
||||
return this.count() === 0;
|
||||
},
|
||||
|
||||
getSelectedBoardIds() {
|
||||
return this._selectedBoards.get();
|
||||
},
|
||||
|
||||
activate() {
|
||||
if (!this.isActive()) {
|
||||
this._isActive.set(true);
|
||||
Tracker.flush();
|
||||
}
|
||||
},
|
||||
|
||||
disable() {
|
||||
if (this.isActive()) {
|
||||
this._isActive.set(false);
|
||||
this.reset();
|
||||
}
|
||||
},
|
||||
|
||||
add(boardIds) {
|
||||
return this.toggle(boardIds, { add: true, remove: false });
|
||||
},
|
||||
|
||||
remove(boardIds) {
|
||||
return this.toggle(boardIds, { add: false, remove: true });
|
||||
},
|
||||
|
||||
toogle(boardIds) {
|
||||
return this.toggle(boardIds, { add: true, remove: true });
|
||||
},
|
||||
|
||||
toggle(boardIds, { add, remove } = {}) {
|
||||
boardIds = _.isString(boardIds) ? [boardIds] : boardIds;
|
||||
let selectedBoards = this._selectedBoards.get();
|
||||
|
||||
boardIds.forEach(boardId => {
|
||||
const index = selectedBoards.indexOf(boardId);
|
||||
if (index > -1 && remove) {
|
||||
selectedBoards = selectedBoards.filter(id => id !== boardId);
|
||||
} else if (index === -1 && add) {
|
||||
selectedBoards.push(boardId);
|
||||
}
|
||||
});
|
||||
|
||||
this._selectedBoards.set(selectedBoards);
|
||||
},
|
||||
|
||||
isSelected(boardId) {
|
||||
return this._selectedBoards.get().includes(boardId);
|
||||
},
|
||||
};
|
||||
|
|
@ -1,33 +1,27 @@
|
|||
import { ReactiveCache } from '/imports/reactiveCache';
|
||||
import { TAPi18n } from '/imports/i18n';
|
||||
import {
|
||||
formatDateTime,
|
||||
formatDate,
|
||||
formatDateByUserPreference,
|
||||
formatTime,
|
||||
getISOWeek,
|
||||
isValidDate,
|
||||
isBefore,
|
||||
isAfter,
|
||||
isSame,
|
||||
add,
|
||||
subtract,
|
||||
startOf,
|
||||
endOf,
|
||||
format,
|
||||
parseDate,
|
||||
now,
|
||||
createDate,
|
||||
fromNow,
|
||||
calendar
|
||||
} from '/imports/lib/dateUtils';
|
||||
|
||||
// Helper function to get time format for 24 hours
|
||||
function adjustedTimeFormat() {
|
||||
return 'HH:mm';
|
||||
// Helper to check if a date is valid
|
||||
function isValidDate(date) {
|
||||
return date instanceof Date && !isNaN(date);
|
||||
}
|
||||
|
||||
// .replace(/HH/i, 'H');
|
||||
// Format date as YYYY-MM-DD
|
||||
function formatDate(date) {
|
||||
if (!isValidDate(date)) return '';
|
||||
const year = date.getFullYear();
|
||||
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||
const day = String(date.getDate()).padStart(2, '0');
|
||||
return `${year}-${month}-${day}`;
|
||||
}
|
||||
|
||||
// Format time as HH:mm
|
||||
function formatTime(date) {
|
||||
if (!isValidDate(date)) return '';
|
||||
const hours = String(date.getHours()).padStart(2, '0');
|
||||
const minutes = String(date.getMinutes()).padStart(2, '0');
|
||||
return `${hours}:${minutes}`;
|
||||
}
|
||||
|
||||
export class DatePicker extends BlazeComponent {
|
||||
template() {
|
||||
|
|
@ -51,35 +45,25 @@ export class DatePicker extends BlazeComponent {
|
|||
}
|
||||
|
||||
onRendered() {
|
||||
// Set initial values for text and time inputs
|
||||
// Set initial values for native HTML inputs
|
||||
if (isValidDate(this.date.get())) {
|
||||
const dateInput = this.find('#date');
|
||||
const timeInput = this.find('#time');
|
||||
|
||||
if (dateInput) {
|
||||
// Use user's preferred format for text input
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
const userFormat = currentUser ? currentUser.getDateFormat() : 'YYYY-MM-DD';
|
||||
dateInput.value = formatDateByUserPreference(this.date.get(), userFormat, false);
|
||||
dateInput.value = formatDate(this.date.get());
|
||||
}
|
||||
if (timeInput) {
|
||||
if (!timeInput.value && this.defaultTime) {
|
||||
const defaultDate = new Date(this.defaultTime);
|
||||
timeInput.value = formatTime(defaultDate);
|
||||
} else if (isValidDate(this.date.get())) {
|
||||
timeInput.value = formatTime(this.date.get());
|
||||
}
|
||||
if (timeInput && !timeInput.value && this.defaultTime) {
|
||||
const defaultDate = new Date(this.defaultTime);
|
||||
timeInput.value = formatTime(defaultDate);
|
||||
} else if (timeInput && isValidDate(this.date.get())) {
|
||||
timeInput.value = formatTime(this.date.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
showDate() {
|
||||
if (isValidDate(this.date.get())) {
|
||||
// Use user's preferred format for display, but HTML date input needs YYYY-MM-DD
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
const userFormat = currentUser ? currentUser.getDateFormat() : 'YYYY-MM-DD';
|
||||
return formatDateByUserPreference(this.date.get(), userFormat, false);
|
||||
}
|
||||
if (isValidDate(this.date.get())) return formatDate(this.date.get());
|
||||
return '';
|
||||
}
|
||||
showTime() {
|
||||
|
|
@ -87,56 +71,22 @@ export class DatePicker extends BlazeComponent {
|
|||
return '';
|
||||
}
|
||||
dateFormat() {
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
const userFormat = currentUser ? currentUser.getDateFormat() : 'YYYY-MM-DD';
|
||||
// Convert format to localized placeholder
|
||||
switch (userFormat) {
|
||||
case 'DD-MM-YYYY':
|
||||
return TAPi18n.__('date-format-dd-mm-yyyy') || 'PP-KK-VVVV';
|
||||
case 'MM-DD-YYYY':
|
||||
return TAPi18n.__('date-format-mm-dd-yyyy') || 'KK-PP-VVVV';
|
||||
case 'YYYY-MM-DD':
|
||||
default:
|
||||
return TAPi18n.__('date-format-yyyy-mm-dd') || 'VVVV-KK-PP';
|
||||
}
|
||||
return 'YYYY-MM-DD';
|
||||
}
|
||||
timeFormat() {
|
||||
return 'LT';
|
||||
return 'HH:mm';
|
||||
}
|
||||
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'change .js-date-field'() {
|
||||
// Text input date validation
|
||||
const dateInput = this.find('#date');
|
||||
if (!dateInput) return;
|
||||
|
||||
const dateValue = dateInput.value;
|
||||
// Native HTML date input validation
|
||||
const dateValue = this.find('#date').value;
|
||||
if (dateValue) {
|
||||
// Try to parse different date formats
|
||||
const formats = [
|
||||
'YYYY-MM-DD',
|
||||
'DD-MM-YYYY',
|
||||
'MM-DD-YYYY',
|
||||
'DD/MM/YYYY',
|
||||
'MM/DD/YYYY',
|
||||
'DD.MM.YYYY',
|
||||
'MM.DD.YYYY'
|
||||
];
|
||||
|
||||
let parsedDate = null;
|
||||
for (const format of formats) {
|
||||
parsedDate = parseDate(dateValue, [format], true);
|
||||
if (parsedDate) break;
|
||||
}
|
||||
|
||||
// Fallback to native Date parsing
|
||||
if (!parsedDate) {
|
||||
parsedDate = new Date(dateValue);
|
||||
}
|
||||
|
||||
if (isValidDate(parsedDate)) {
|
||||
// HTML date input format is always YYYY-MM-DD
|
||||
const dateObj = new Date(dateValue + 'T12:00:00');
|
||||
if (isValidDate(dateObj)) {
|
||||
this.error.set('');
|
||||
} else {
|
||||
this.error.set('invalid-date');
|
||||
|
|
@ -145,12 +95,10 @@ export class DatePicker extends BlazeComponent {
|
|||
},
|
||||
'change .js-time-field'() {
|
||||
// Native HTML time input validation
|
||||
const timeInput = this.find('#time');
|
||||
if (!timeInput) return;
|
||||
|
||||
const timeValue = timeInput.value;
|
||||
const timeValue = this.find('#time').value;
|
||||
if (timeValue) {
|
||||
const timeObj = new Date(`1970-01-01T${timeValue}`);
|
||||
// HTML time input format is always HH:mm
|
||||
const timeObj = new Date(`1970-01-01T${timeValue}:00`);
|
||||
if (isValidDate(timeObj)) {
|
||||
this.error.set('');
|
||||
} else {
|
||||
|
|
@ -170,44 +118,16 @@ export class DatePicker extends BlazeComponent {
|
|||
return;
|
||||
}
|
||||
|
||||
// Try to parse different date formats
|
||||
const formats = [
|
||||
'YYYY-MM-DD',
|
||||
'DD-MM-YYYY',
|
||||
'MM-DD-YYYY',
|
||||
'DD/MM/YYYY',
|
||||
'MM/DD/YYYY',
|
||||
'DD.MM.YYYY',
|
||||
'MM.DD.YYYY'
|
||||
];
|
||||
// Combine date and time: HTML date input is YYYY-MM-DD, time input is HH:mm
|
||||
const dateTimeString = `${dateValue}T${timeValue}:00`;
|
||||
const newCompleteDate = new Date(dateTimeString);
|
||||
|
||||
let parsedDate = null;
|
||||
for (const format of formats) {
|
||||
parsedDate = parseDate(dateValue, [format], true);
|
||||
if (parsedDate) break;
|
||||
}
|
||||
|
||||
// Fallback to native Date parsing
|
||||
if (!parsedDate) {
|
||||
parsedDate = new Date(dateValue);
|
||||
}
|
||||
|
||||
if (!isValidDate(parsedDate)) {
|
||||
if (!isValidDate(newCompleteDate)) {
|
||||
this.error.set('invalid');
|
||||
return;
|
||||
}
|
||||
|
||||
// Combine with time
|
||||
const timeObj = new Date(`1970-01-01T${timeValue}`);
|
||||
if (!isValidDate(timeObj)) {
|
||||
this.error.set('invalid-time');
|
||||
return;
|
||||
}
|
||||
|
||||
// Set the time on the parsed date
|
||||
parsedDate.setHours(timeObj.getHours(), timeObj.getMinutes(), 0, 0);
|
||||
|
||||
this._storeDate(parsedDate);
|
||||
this._storeDate(newCompleteDate);
|
||||
Popup.back();
|
||||
},
|
||||
'click .js-delete-date'(evt) {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import DOMPurify from 'dompurify';
|
|||
export function getSecureDOMPurifyConfig() {
|
||||
return {
|
||||
// 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
|
||||
ALLOWED_ATTR: ['href', 'title', 'alt', 'src', 'width', 'height', 'target', 'rel'],
|
||||
// Allow safe protocols for links
|
||||
|
|
@ -44,7 +44,7 @@ export function getSecureDOMPurifyConfig() {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// Additional check for base64 encoded SVG with script tags
|
||||
if (src.startsWith('data:image/svg+xml;base64,')) {
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -214,6 +214,15 @@ Utils = {
|
|||
);
|
||||
return ret;
|
||||
},
|
||||
canMoveCard() {
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
const ret = (
|
||||
currentUser &&
|
||||
currentUser.isBoardMember() &&
|
||||
!currentUser.isCommentOnly()
|
||||
);
|
||||
return ret;
|
||||
},
|
||||
canModifyBoard() {
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
const ret = (
|
||||
|
|
@ -231,9 +240,21 @@ Utils = {
|
|||
window.location.reload();
|
||||
},
|
||||
setBoardView(view) {
|
||||
currentUser = ReactiveCache.getCurrentUser();
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
|
||||
if (currentUser) {
|
||||
ReactiveCache.getCurrentUser().setBoardView(view);
|
||||
// Update localStorage first
|
||||
window.localStorage.setItem('boardView', view);
|
||||
|
||||
// Update user profile via Meteor method
|
||||
Meteor.call('setBoardView', view, (error) => {
|
||||
if (error) {
|
||||
console.error('[setBoardView] Update failed:', error);
|
||||
} else {
|
||||
// Reload to apply the view change
|
||||
Utils.reload();
|
||||
}
|
||||
});
|
||||
} else if (view === 'board-view-swimlanes') {
|
||||
window.localStorage.setItem('boardView', 'board-view-swimlanes'); //true
|
||||
Utils.reload();
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ This is without container (without Docker or Snap).
|
|||
|
||||
Right click and download files 1-4:
|
||||
|
||||
1. [wekan-8.16-amd64-windows.zip](https://github.com/wekan/wekan/releases/download/v8.16/wekan-8.16-amd64-windows.zip)
|
||||
1. [wekan-8.17-amd64-windows.zip](https://github.com/wekan/wekan/releases/download/v8.17/wekan-8.17-amd64-windows.zip)
|
||||
|
||||
2. [node.exe](https://nodejs.org/dist/latest-v14.x/win-x64/node.exe)
|
||||
|
||||
|
|
@ -22,7 +22,7 @@ Right click and download files 1-4:
|
|||
|
||||
6. Double click `mongodb-windows-x86_64-7.0.25-signed.msi` . In installer, uncheck downloading MongoDB compass.
|
||||
|
||||
7. Unzip `wekan-8.16-amd64-windows.zip` , inside it is directory `bundle`, to it copy other files:
|
||||
7. Unzip `wekan-8.17-amd64-windows.zip` , inside it is directory `bundle`, to it copy other files:
|
||||
|
||||
```
|
||||
bundle (directory)
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "تعليق محذوف %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "نماذج",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "إضافة مرفق",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "إنشاء",
|
||||
"createBoardPopup-title": "إنشاء لوحة",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "استيراد لوحة",
|
||||
"createLabelPopup-title": "إنشاء علامة",
|
||||
"createCustomField": "انشاء حقل",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "تفاصيل",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "изтрит коментар %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Шаблони",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Добави прикачен файл",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Създай",
|
||||
"createBoardPopup-title": "Създай Табло",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Импортирай Табло",
|
||||
"createLabelPopup-title": "Създай Табло",
|
||||
"createCustomField": "Създай Поле",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Състояние",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Завършено",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Krouiñ",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "Ha esborrar el comentari %s",
|
||||
"activity-receivedDate": "editat la data de recepció a %s de %s",
|
||||
"activity-startDate": "data d'inici editada a %s de %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Plantilles",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "data de venciment editada a %s de %s",
|
||||
"activity-endDate": "data de finalització editada a %s de %s",
|
||||
"add-attachment": "Afegeix adjunt",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"Títol de la primera fitxa\", \"description\":\"Descripció de la primera fitxa\"}, {\"title\":\"Títol de la segona fitxa\",\"description\":\"Descripció de la segona fitxa \"},{\"title\":\"Títol de l'última fitxa\",\"description\":\"Descripció de l'última fitxa\"} ]",
|
||||
"create": "Crea",
|
||||
"createBoardPopup-title": "Crea tauler",
|
||||
"createTemplateContainerPopup-title": "Afegeix un Contenidor de plantilles",
|
||||
"chooseBoardSourcePopup-title": "Importa tauler",
|
||||
"createLabelPopup-title": "Crea etiqueta",
|
||||
"createCustomField": "Crear campament",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Estat",
|
||||
"migration-progress-details": "Detalls",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completat",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "smazat komentář %s",
|
||||
"activity-receivedDate": "editoval(a) datum přijetí na %s z %s",
|
||||
"activity-startDate": "editoval(a) datum zahájení na %s z %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Šablony",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "editoval(a) termín dokončení na %s z %s",
|
||||
"activity-endDate": "editoval(a) datum ukončení na %s z %s",
|
||||
"add-attachment": "Přidat přílohu",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"Nadpis první karty\", \"description\":\"Popis první karty\"}, {\"title\":\"Nadpis druhé karty\",\"description\":\"Popis druhé karty\"},{\"title\":\"Nadpis poslední kary\",\"description\":\"Popis poslední karty\"} ]",
|
||||
"create": "Vytvořit",
|
||||
"createBoardPopup-title": "Vytvořit tablo",
|
||||
"createTemplateContainerPopup-title": "Přidat kontejner šablony",
|
||||
"chooseBoardSourcePopup-title": "Importovat tablo",
|
||||
"createLabelPopup-title": "Vytvořit štítek",
|
||||
"createCustomField": "Vytvořit pole",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Stav",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Dokončeno",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "smazat komentář %s",
|
||||
"activity-receivedDate": "editoval(a) datum přijetí na %s z %s",
|
||||
"activity-startDate": "editoval(a) datum zahájení na %s z %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Šablony",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "editoval(a) termín dokončení na %s z %s",
|
||||
"activity-endDate": "editoval(a) datum ukončení na %s z %s",
|
||||
"add-attachment": "Přidat přílohu",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"Nadpis první karty\", \"description\":\"Popis první karty\"}, {\"title\":\"Nadpis druhé karty\",\"description\":\"Popis druhé karty\"},{\"title\":\"Nadpis poslední kary\",\"description\":\"Popis poslední karty\"} ]",
|
||||
"create": "Vytvořit",
|
||||
"createBoardPopup-title": "Vytvořit tablo",
|
||||
"createTemplateContainerPopup-title": "Přidat kontejner šablony",
|
||||
"chooseBoardSourcePopup-title": "Importovat tablo",
|
||||
"createLabelPopup-title": "Vytvořit štítek",
|
||||
"createCustomField": "Vytvořit pole",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Stav",
|
||||
"migration-progress-details": "Podrobnosti",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Dokončeno",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "slettede kommentar %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Skabeloner",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Tilføj vedhæftning",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Opret",
|
||||
"createBoardPopup-title": "Opret tavle",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Importér tavle",
|
||||
"createLabelPopup-title": "Opret etikette",
|
||||
"createCustomField": "Opret felt",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Fuldført",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "löschte Kommentar %s",
|
||||
"activity-receivedDate": "hat Empfangsdatum zu %s geändert auf %s",
|
||||
"activity-startDate": "hat Startdatum zu %s geändert auf %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Vorlagen",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "hat Fälligkeitsdatum zu %s geändert auf %s",
|
||||
"activity-endDate": "hat Enddatum zu %s geändert auf %s",
|
||||
"add-attachment": "Datei anhängen",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"Titel der ersten Karte\", \"description\":\"Beschreibung der ersten Karte\"}, {\"title\":\"Titel der zweiten Karte\",\"description\":\"Beschreibung der zweiten Karte\"},{\"title\":\"Titel der letzten Karte\",\"description\":\"Beschreibung der letzten Karte\"} ]",
|
||||
"create": "Erstellen",
|
||||
"createBoardPopup-title": "Board erstellen",
|
||||
"createTemplateContainerPopup-title": "Vorlagen-Container hinzufügen",
|
||||
"chooseBoardSourcePopup-title": "Board importieren",
|
||||
"createLabelPopup-title": "Label erstellen",
|
||||
"createCustomField": "Feld erstellen",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "abgeschlossen",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "löschte Kommentar %s",
|
||||
"activity-receivedDate": "hat Empfangsdatum zu %s geändert auf %s",
|
||||
"activity-startDate": "hat Startdatum zu %s geändert auf %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Vorlagen",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "hat Fälligkeitsdatum zu %s geändert auf %s",
|
||||
"activity-endDate": "hat Enddatum zu %s geändert auf %s",
|
||||
"add-attachment": "Datei anhängen",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"Titel der ersten Karte\", \"description\":\"Beschreibung der ersten Karte\"}, {\"title\":\"Titel der zweiten Karte\",\"description\":\"Beschreibung der zweiten Karte\"},{\"title\":\"Titel der letzten Karte\",\"description\":\"Beschreibung der letzten Karte\"} ]",
|
||||
"create": "Erstellen",
|
||||
"createBoardPopup-title": "Board erstellen",
|
||||
"createTemplateContainerPopup-title": "Vorlagen-Container hinzufügen",
|
||||
"chooseBoardSourcePopup-title": "Board importieren",
|
||||
"createLabelPopup-title": "Label erstellen",
|
||||
"createCustomField": "Feld erstellen",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "abgeschlossen",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "löschte Kommentar %s",
|
||||
"activity-receivedDate": "hat Empfangsdatum zu %s geändert auf %s",
|
||||
"activity-startDate": "hat Startdatum zu %s geändert auf %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Vorlagen",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "hat Fälligkeitsdatum zu %s geändert auf %s",
|
||||
"activity-endDate": "hat Enddatum zu %s geändert auf %s",
|
||||
"add-attachment": "Datei anhängen",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"Titel der ersten Karte\", \"description\":\"Beschreibung der ersten Karte\"}, {\"title\":\"Titel der zweiten Karte\",\"description\":\"Beschreibung der zweiten Karte\"},{\"title\":\"Titel der letzten Karte\",\"description\":\"Beschreibung der letzten Karte\"} ]",
|
||||
"create": "Erstellen",
|
||||
"createBoardPopup-title": "Board erstellen",
|
||||
"createTemplateContainerPopup-title": "Vorlagen-Container hinzufügen",
|
||||
"chooseBoardSourcePopup-title": "Board importieren",
|
||||
"createLabelPopup-title": "Label erstellen",
|
||||
"createCustomField": "Feld erstellen",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Abgeschlossen",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "abgeschlossen",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "löschte Kommentar %s",
|
||||
"activity-receivedDate": "hat Empfangsdatum zu %s geändert auf %s",
|
||||
"activity-startDate": "hat Startdatum zu %s geändert auf %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Vorlagen",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "hat Fälligkeitsdatum zu %s geändert auf %s",
|
||||
"activity-endDate": "hat Enddatum zu %s geändert auf %s",
|
||||
"add-attachment": "Datei anhängen",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"Titel der ersten Karte\", \"description\":\"Beschreibung der ersten Karte\"}, {\"title\":\"Titel der zweiten Karte\",\"description\":\"Beschreibung der zweiten Karte\"},{\"title\":\"Titel der letzten Karte\",\"description\":\"Beschreibung der letzten Karte\"} ]",
|
||||
"create": "Erstellen",
|
||||
"createBoardPopup-title": "Board erstellen",
|
||||
"createTemplateContainerPopup-title": "Vorlagen-Container hinzufügen",
|
||||
"chooseBoardSourcePopup-title": "Board importieren",
|
||||
"createLabelPopup-title": "Label erstellen",
|
||||
"createCustomField": "Feld erstellen",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Zurück zu den Einstellungen",
|
||||
"board-id": "Brett ID",
|
||||
"board-migration": "Brettmigration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Zeige Listen auf der Minikarte",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Vollständig",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Gesamtfortschritt",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Aufräumen",
|
||||
"cleanup-old-jobs": "Alte Aufgaben aufräumen",
|
||||
"completed": "abgeschlossen",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "διεγράφη το σχόλιο %s",
|
||||
"activity-receivedDate": "η ημερομηνία λήψης άλλαξε σε %s από %s",
|
||||
"activity-startDate": "η ημερομηνία έναρξης άλλαξε σε %s από %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Πρότυπα",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "υπέστη επεξεργασία η τιμή της προθεσμίας σε %s από %s",
|
||||
"activity-endDate": "η ημερομηνία λήξης άλλαξε σε %s από %s",
|
||||
"add-attachment": "Προσθήκη Συνημμένου",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"Τίτλος πρώτης κάρτας\", \"description\":\"Περιγραφή πρώτης κάρτας\"}, {\"title\":\"Τίτλος δεύτερης κάρτας\",\"description\":\"Περιγραφή δεύτερης κάρτας\"},{\"title\":\"Τίτλος τελευταίας κάρτας\",\"description\":\"Περιγραφή τελευταίας κάρτας\"} ]",
|
||||
"create": "Δημιουργία",
|
||||
"createBoardPopup-title": "Δημιουργία Πίνακα",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Εισαγωγή πίνακα",
|
||||
"createLabelPopup-title": "Δημιουργία Ετικέτας",
|
||||
"createCustomField": "Δημιουργία Πεδίου",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "διεγράφη το σχόλιο %s",
|
||||
"activity-receivedDate": "η ημερομηνία λήψης άλλαξε σε %s από %s",
|
||||
"activity-startDate": "η ημερομηνία έναρξης άλλαξε σε %s από %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Πρότυπα",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "υπέστη επεξεργασία η τιμή της προθεσμίας σε %s από %s",
|
||||
"activity-endDate": "η ημερομηνία λήξης άλλαξε σε %s από %s",
|
||||
"add-attachment": "Προσθήκη Συνημμένου",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"Τίτλος πρώτης κάρτας\", \"description\":\"Περιγραφή πρώτης κάρτας\"}, {\"title\":\"Τίτλος δεύτερης κάρτας\",\"description\":\"Περιγραφή δεύτερης κάρτας\"},{\"title\":\"Τίτλος τελευταίας κάρτας\",\"description\":\"Περιγραφή τελευταίας κάρτας\"} ]",
|
||||
"create": "Δημιουργία",
|
||||
"createBoardPopup-title": "Δημιουργία Πίνακα",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Εισαγωγή πίνακα",
|
||||
"createLabelPopup-title": "Δημιουργία Ετικέτας",
|
||||
"createCustomField": "Δημιουργία Πεδίου",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Krei",
|
||||
"createBoardPopup-title": "Krei tavolon",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "comentario %s eliminado",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Plantillas",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Agregar Adjunto",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"Título de primera tarjeta\", \"description\":\"Descripción de primera tarjeta\"}, {\"title\":\"Título de segunda tarjeta\",\"description\":\"Descripción de segunda tarjeta\"},{\"title\":\"Título de última tarjeta\",\"description\":\"Descripción de última tarjeta\"} ]",
|
||||
"create": "Crear",
|
||||
"createBoardPopup-title": "Crear Tablero",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Importar tablero",
|
||||
"createLabelPopup-title": "Crear Etiqueta",
|
||||
"createCustomField": "Crear Campo",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "comentario eliminado",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Plantillas",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Añadir adjunto",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"Título de la primera tarjeta\", \"description\":\"Descripción de la primera tarjeta\"}, {\"title\":\"Título de la segunda tarjeta\",\"description\":\"Descripción de la segunda tarjeta\"},{\"title\":\"Título de la última tarjeta\",\"description\":\"Descripción de la última tarjeta\"} ]",
|
||||
"create": "Crear",
|
||||
"createBoardPopup-title": "Crear tablero",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Importar un tablero",
|
||||
"createLabelPopup-title": "Crear una etiqueta",
|
||||
"createCustomField": "Crear un campo",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completada",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "comentario eliminado %s",
|
||||
"activity-receivedDate": "fecha de recepción editada para %s de %s",
|
||||
"activity-startDate": "fecha de inicio editada a %s de %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "fecha de vencimiento editada a %s de %s",
|
||||
"activity-endDate": "editada la fecha de finalización a %s de %s",
|
||||
"add-attachment": "Agregar adjunto",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "comentario eliminado",
|
||||
"activity-receivedDate": "editada la fecha de recepción a %s de %s",
|
||||
"activity-startDate": "editada la fecha de inicio a %s de %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Plantillas",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "editada la fecha de vencimiento a %s de %s",
|
||||
"activity-endDate": "editada la fecha de finalización a %s de %s",
|
||||
"add-attachment": "Agregar adjunto",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"Título de la primera tarjeta\", \"description\":\"Descripción de la primera tarjeta\"}, {\"title\":\"Título de la segunda tarjeta\",\"description\":\"Descripción de la segunda tarjeta\"},{\"title\":\"Título de la última tarjeta\",\"description\":\"Descripción de la última tarjeta\"} ]",
|
||||
"create": "Crear",
|
||||
"createBoardPopup-title": "Crear tablero",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Importar un tablero",
|
||||
"createLabelPopup-title": "Crear una etiqueta",
|
||||
"createCustomField": "Crear un campo",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Estado",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completada",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "comentario eliminado",
|
||||
"activity-receivedDate": "editada la fecha de recepción a %s de %s",
|
||||
"activity-startDate": "editada la fecha de inicio a %s de %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Plantillas",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "editada la fecha de vencimiento a %s de %s",
|
||||
"activity-endDate": "editada la fecha de finalización a %s de %s",
|
||||
"add-attachment": "Añadir adjunto",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"Título de la primera tarjeta\", \"description\":\"Descripción de la primera tarjeta\"}, {\"title\":\"Título de la segunda tarjeta\",\"description\":\"Descripción de la segunda tarjeta\"},{\"title\":\"Título de la última tarjeta\",\"description\":\"Descripción de la última tarjeta\"} ]",
|
||||
"create": "Crear",
|
||||
"createBoardPopup-title": "Crear tablero",
|
||||
"createTemplateContainerPopup-title": "añadir plantilla de contenedor",
|
||||
"chooseBoardSourcePopup-title": "Importar un tablero",
|
||||
"createLabelPopup-title": "Crear una etiqueta",
|
||||
"createCustomField": "Crear un campo",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Completado",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Estado",
|
||||
"migration-progress-details": "Detalles",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completada",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "kustutatud kommentaar %s",
|
||||
"activity-receivedDate": "redigeeritud saabunud kuupäev %s-i %s-i",
|
||||
"activity-startDate": "redigeeritud alguskuupäev %s-i %s-i alguskuupäevaks",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Mallid",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "redigeeritud tähtaeg on %s of %s",
|
||||
"activity-endDate": "redigeeritud lõpukuupäev %s-i %s-i lõpukuupäevaks",
|
||||
"add-attachment": "Lisa lisa",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": {\"title\": \"First card title\", \"description\": \"First card description\"}, {\"title\": \"Second card title\", \"description\": \"Second card description\"},{\"title\": \"Last card title\", \"description\": \"Last card description\"}, {\"title\": \"Last card title\", \"description\": \"Last card description\"} ]",
|
||||
"create": "Loo",
|
||||
"createBoardPopup-title": "Loo juhatus",
|
||||
"createTemplateContainerPopup-title": "Malli konteineri lisamine",
|
||||
"chooseBoardSourcePopup-title": "Impordilaua",
|
||||
"createLabelPopup-title": "Loo silt",
|
||||
"createCustomField": "Loo väli",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Staatus",
|
||||
"migration-progress-details": "Üksikasjad",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Lõpetatud",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "%s iruzkina ezabatu da",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Txantiloiak",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Gehitu eranskina",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Sortu",
|
||||
"createBoardPopup-title": "Sortu arbela",
|
||||
"createTemplateContainerPopup-title": "Gehitu txantiloien edukiontzia",
|
||||
"chooseBoardSourcePopup-title": "Inportatu arbela",
|
||||
"createLabelPopup-title": "Sortu etiketa",
|
||||
"createCustomField": "Sortu eremua",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "%s نظر حذف شد",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "قالبها",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "افزودن ضمیمه",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "ایجاد",
|
||||
"createBoardPopup-title": "ایجاد برد",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "وارد کردن برد",
|
||||
"createLabelPopup-title": "ایجاد لیبل",
|
||||
"createCustomField": "ایجاد فیلد",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "وضعیت",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "تمام شده",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "%s نظر حذف شد",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "قالبها",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "افزودن ضمیمه",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "ایجاد",
|
||||
"createBoardPopup-title": "ایجاد برد",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "وارد کردن برد",
|
||||
"createLabelPopup-title": "ایجاد لیبل",
|
||||
"createCustomField": "ایجاد فیلد",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "وضعیت",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "تمام شده",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "poisti kommentin %s",
|
||||
"activity-receivedDate": "muokkasi vastaanotettu päiväksi %s / %s",
|
||||
"activity-startDate": "muokkasi aloituspäiväksi %s / %s",
|
||||
"allboards.starred": "Suosikki",
|
||||
"allboards.templates": "Mallit",
|
||||
"allboards.remaining": "Jäljellä",
|
||||
"allboards.workspaces": "Työtilat",
|
||||
"allboards.add-workspace": "Lisää työtila",
|
||||
"allboards.add-workspace-prompt": "Työtilan nimi",
|
||||
"allboards.add-subworkspace": "Lisää alityötila",
|
||||
"allboards.add-subworkspace-prompt": "Alityötilan nimi",
|
||||
"allboards.edit-workspace": "Muokkaa työtilaa",
|
||||
"allboards.edit-workspace-name": "Työtilan nimi",
|
||||
"allboards.edit-workspace-icon": "Työtilan ikoni (markdown)",
|
||||
"multi-selection-active": "Valitse taulut napsauttamalla valintaruutuja",
|
||||
"activity-dueDate": "muokkasi eräpäiväksi %s / %s",
|
||||
"activity-endDate": "muokkasi loppumispäiväksi %s / %s",
|
||||
"add-attachment": "Lisää liite",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"Ensimmäisen kortin otsikko\", \"description\":\"Ensimmäisen kortin kuvaus\"}, {\"title\":\"Toisen kortin otsikko\",\"description\":\"Toisen kortin kuvaus\"},{\"title\":\"Viimeisen kortin otsikko\",\"description\":\"Viimeisen kortin kuvaus\"} ]",
|
||||
"create": "Luo",
|
||||
"createBoardPopup-title": "Luo taulu",
|
||||
"createTemplateContainerPopup-title": "Lisää mallikontti",
|
||||
"chooseBoardSourcePopup-title": "Tuo taulu",
|
||||
"createLabelPopup-title": "Luo nimilappu",
|
||||
"createCustomField": "Luo kenttä",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Takaisin asetuksiin",
|
||||
"board-id": "Taulun tunnus",
|
||||
"board-migration": "Taulun siirto",
|
||||
"board-migrations": "Taulu migraatiot",
|
||||
"card-show-lists-on-minicard": "Näytä listat minikortilla",
|
||||
"comprehensive-board-migration": "Perusteellinen taulu migraatio",
|
||||
"comprehensive-board-migration-description": "Suorittaa kattavia tarkistuksia ja korjauksia taulun tietojen eheyden varmistamiseksi, mukaan lukien listajärjestyksen, korttien sijainnit ja uimaratarakenteen.",
|
||||
"delete-duplicate-empty-lists-migration": "Poista kaksoiskappaleet tyhjistä listoista",
|
||||
"delete-duplicate-empty-lists-migration-description": "Poistaa tyhjät kaksoiskappalelistat turvallisesti. Poistaa vain listat, joissa ei ole kortteja JA joilla on toinen samanniminen lista, joka sisältää kortteja.",
|
||||
"lost-cards": "Kadonneet kortit",
|
||||
"lost-cards-list": "Palautetut kohteet",
|
||||
"restore-lost-cards-migration": "Palauta kadonneet kortit",
|
||||
"restore-lost-cards-migration-description": "Etsii ja palauttaa kortit ja listat, joista puuttuu swimlaneId tai listId. Luo 'Kadonneet kortit' -uimaradan, jotta kaikki kadonneet ovat taas näkyvissä.",
|
||||
"restore-all-archived-migration": "Palauta kaikki arkistoidut",
|
||||
"restore-all-archived-migration-description": "Palauttaa kaikki arkistoidut uimaradat, listat ja kortit. Korjaa automaattisesti puuttuvat uimaratatunnukset tai listatunnukset, jotta kohteet ovat näkyvissä.",
|
||||
"fix-missing-lists-migration": "Korjaa puuttuvat listat",
|
||||
"fix-missing-lists-migration-description": "Havaitsee ja korjaa puuttuvat tai vioittuneet listat taulun rakenteessa.",
|
||||
"fix-avatar-urls-migration": "Korjaa avatar-URL-osoitteet",
|
||||
"fix-avatar-urls-migration-description": "Päivittää taulun jäsenten avatar-osoitteiden URL-osoitteet oikean tallennustilan käyttämiseksi ja korjaa rikkinäiset avatar-viittaukset.",
|
||||
"fix-all-file-urls-migration": "Korjaa kaikki tiedostojen URL-osoitteet",
|
||||
"fix-all-file-urls-migration-description": "Päivittää kaikkien tällä taululla olevien tiedostoliitteiden URL-osoitteet käyttämään oikeaa tallennuspalvelinta ja korjaa rikkinäiset tiedostoviittaukset.",
|
||||
"migration-needed": "Migraatio tarvitaan",
|
||||
"migration-complete": "Valmis",
|
||||
"migration-running": "Suoritetaan...",
|
||||
"migration-successful": "Migraatio valmistui onnistuneesti",
|
||||
"migration-failed": "Migraatio epäonnistui",
|
||||
"migrations": "Migraatiot",
|
||||
"migrations-admin-only": "Vain taulu ylläpitäjät voivat suorittaa migraatioita",
|
||||
"migrations-description": "Suorita tietojen eheystarkistukset ja korjaukset tälle taululle. Jokainen migraatio voidaan suorittaa erikseen.",
|
||||
"no-issues-found": "Ei löytynyt ongelmia",
|
||||
"run-migration": "Suorita migraatio",
|
||||
"run-comprehensive-migration-confirm": "Tämä suorittaa kattavan migraation, jolla tarkistetaan ja korjataan taulun tietojen eheys. Tämä voi kestää hetken. Jatketaanko?",
|
||||
"run-delete-duplicate-empty-lists-migration-confirm": "Tämä muuntaa ensin kaikki jaetut listat uimaratakohtaisiksi listoiksi ja poistaa sitten tyhjät listat, joissa on samanniminen kaksoiskappale, joka sisältää kortteja. Vain todella tarpeettomat tyhjät listat poistetaan. Jatketaanko?",
|
||||
"run-restore-lost-cards-migration-confirm": "Tämä luo Kadonneet kortit -uimaradan ja palauttaa kaikki kortit ja listat, joista puuttuu uimaradan tunnus tai listan tunnus. Tämä vaikuttaa vain arkistoimattomiin kohteisiin. Jatketaanko?",
|
||||
"run-restore-all-archived-migration-confirm": "Tämä palauttaa KAIKKI arkistoidut uintikaistat, listat ja kortit, jolloin ne näkyvät taas. Puuttuvista tunnuksista puuttuvat kohteet korjataan automaattisesti. Tätä ei voi helposti perua. Jatketaanko?",
|
||||
"run-fix-missing-lists-migration-confirm": "Tämä havaitsee ja korjaa puuttuvat tai vioittuneet listat taulun rakenteessa. Jatketaanko?",
|
||||
"run-fix-avatar-urls-migration-confirm": "Tämä päivittää taulun jäsenten avatar-URL-osoitteet käyttämään oikeaa tallennustilaa. Jatketaanko?",
|
||||
"run-fix-all-file-urls-migration-confirm": "Tämä päivittää kaikkien tällä taululla olevien tiedostoliitteiden URL-osoitteet käyttämään oikeaa tallennuspalvelinta. Jatketaanko?",
|
||||
"restore-lost-cards-nothing-to-restore": "Ei kadonneita uintikaistoja, listoja tai kortteja palautettavaksi",
|
||||
|
||||
"migration-progress-title": "Taulu migraatio meneillään",
|
||||
"migration-progress-overall": "Kokonaisedistyminen",
|
||||
"migration-progress-current-step": "Nykyinen vaihe",
|
||||
"migration-progress-status": "Tilanne",
|
||||
"migration-progress-details": "Yksityiskohdat",
|
||||
"migration-progress-note": "Odota hetki, siirrämme taulusi uusimpaan rakenteeseen...",
|
||||
|
||||
"step-analyze-board-structure": "Analysoi taulun rakennetta",
|
||||
"step-fix-orphaned-cards": "Korjaa orvot kortit",
|
||||
"step-convert-shared-lists": "Muunna jaetut listat",
|
||||
"step-ensure-per-swimlane-lists": "Varmista uimaratakohtaiset listat",
|
||||
"step-validate-migration": "Varmistetaan migraatio",
|
||||
"step-fix-avatar-urls": "Korjaa avatar-URL-osoitteet",
|
||||
"step-fix-attachment-urls": "Korjaa liitetiedosto URLit",
|
||||
"step-analyze-lists": "Analysoidaan listoja",
|
||||
"step-create-missing-lists": "Luo puuttuvat listat",
|
||||
"step-update-cards": "Päivitä kortit",
|
||||
"step-finalize": "Viimeistellään",
|
||||
"step-delete-duplicate-empty-lists": "Poista kaksoiskappaleet tyhjistä listoista",
|
||||
"step-ensure-lost-cards-swimlane": "Varmistetaan hävinneiden korttien uimarata",
|
||||
"step-restore-lists": "Palauta listat",
|
||||
"step-restore-cards": "Palauta kortit",
|
||||
"step-restore-swimlanes": "Palauta uimaradat",
|
||||
"step-fix-missing-ids": "Korjaa puuttuvat ID:t",
|
||||
"step-scan-users": "Tarkistetaan taulun jäsenten avatarit",
|
||||
"step-scan-files": "Tarkistetaan taulun liitetiedostot",
|
||||
"step-fix-file-urls": "Korjataan tiedosto URLit",
|
||||
"cleanup": "Siivous",
|
||||
"cleanup-old-jobs": "Siivoa vanhat työt",
|
||||
"completed": "Valmistunut",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "commentaire supprimé %s",
|
||||
"activity-receivedDate": "date de réception éditée de %s à %s",
|
||||
"activity-startDate": "date de début éditée de %s à %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Modèles",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "date d'échéance éditée de %s à %s",
|
||||
"activity-endDate": "date de fin éditée de %s à %s",
|
||||
"add-attachment": "Ajouter une pièce jointe",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"Titre de la première carte\", \"description\":\"Description de la première carte\"}, {\"title\":\"Titre de la seconde carte\",\"description\":\"Description de la seconde carte\"},{\"title\":\"Titre de la dernière carte\",\"description\":\"Description de la dernière carte\"} ]",
|
||||
"create": "Créer",
|
||||
"createBoardPopup-title": "Créer un tableau",
|
||||
"createTemplateContainerPopup-title": "Ajouter un conteneur de modèles",
|
||||
"chooseBoardSourcePopup-title": "Importer un tableau",
|
||||
"createLabelPopup-title": "Créer une étiquette",
|
||||
"createCustomField": "Créer un champ personnalisé",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Statut",
|
||||
"migration-progress-details": "Détails",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Terminé",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "commentaire supprimé %s",
|
||||
"activity-receivedDate": "date de réception éditée de %s à %s",
|
||||
"activity-startDate": "date de début éditée de %s à %s",
|
||||
"allboards.starred": "Favoris",
|
||||
"allboards.templates": "Modèles",
|
||||
"allboards.remaining": "Restant",
|
||||
"allboards.workspaces": "Espaces de travail",
|
||||
"allboards.add-workspace": "Ajouter un espace de travail",
|
||||
"allboards.add-workspace-prompt": "Nom de l'espace de travail",
|
||||
"allboards.add-subworkspace": "Ajouter un sous-espace de travail",
|
||||
"allboards.add-subworkspace-prompt": "Nom du sous-espace de travail",
|
||||
"allboards.edit-workspace": "Modifier l'espace de travail",
|
||||
"allboards.edit-workspace-name": "Nom de l'espace de travail",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"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-endDate": "date de fin éditée de %s à %s",
|
||||
"add-attachment": "Ajouter une pièce jointe",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"Titre de la première carte\", \"description\":\"Description de la première carte\"}, {\"title\":\"Titre de la seconde carte\",\"description\":\"Description de la seconde carte\"},{\"title\":\"Titre de la dernière carte\",\"description\":\"Description de la dernière carte\"} ]",
|
||||
"create": "Créer",
|
||||
"createBoardPopup-title": "Créer un tableau",
|
||||
"createTemplateContainerPopup-title": "Ajouter un conteneur de modèles",
|
||||
"chooseBoardSourcePopup-title": "Importer un tableau",
|
||||
"createLabelPopup-title": "Créer une étiquette",
|
||||
"createCustomField": "Créer un champ personnalisé",
|
||||
|
|
@ -1403,8 +1416,71 @@
|
|||
"automatic-migration": "Migration automatique",
|
||||
"back-to-settings": "Retour aux paramètres",
|
||||
"board-id": "ID du tableau",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migration": "Migration du tableau",
|
||||
"board-migrations": "Migrations de tableau",
|
||||
"card-show-lists-on-minicard": "Afficher les listes sur la mini-carte",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Cartes perdues",
|
||||
"lost-cards-list": "Éléments restaurés",
|
||||
"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-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.",
|
||||
"fix-missing-lists-migration": "Fix Missing Lists",
|
||||
"fix-missing-lists-migration-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Corriger les URLs d'avatar",
|
||||
"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-description": "Updates all file attachment URLs on this board to use the correct storage backend and fixes broken file references.",
|
||||
"migration-needed": "Migration requise",
|
||||
"migration-complete": "Terminé",
|
||||
"migration-running": "En cours ...",
|
||||
"migration-successful": "Migration terminée avec succès",
|
||||
"migration-failed": "Migration en échec",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "Aucun problème détecté",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Migration du tableau en cours",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Étape courante",
|
||||
"migration-progress-status": "Statut",
|
||||
"migration-progress-details": "Détails",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Corriger les cartes orphelines",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Valider la migration",
|
||||
"step-fix-avatar-urls": "Corriger les URLs d'avatar",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Supprimer les listes vides en doublon ? ",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restaurer les cartes",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Terminé",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Engadir anexo",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Crear",
|
||||
"createBoardPopup-title": "Crear taboleiro",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Importar taboleiro",
|
||||
"createLabelPopup-title": "Crear etiqueta",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Engadir anexo",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Crear",
|
||||
"createBoardPopup-title": "Crear taboleiro",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Importar taboleiro",
|
||||
"createLabelPopup-title": "Crear etiqueta",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "Templates",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createCustomField": "Create Field",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "התגובה %s נמחקה",
|
||||
"activity-receivedDate": "תאריך הקבלה השתנה מ־%s ל־%s",
|
||||
"activity-startDate": "תאריך ההתחלה השתנה מ־%s ל־%s",
|
||||
"allboards.starred": "סומן בכוכב",
|
||||
"allboards.templates": "תבניות",
|
||||
"allboards.remaining": "נותרו",
|
||||
"allboards.workspaces": "מרחבי עבודה",
|
||||
"allboards.add-workspace": "הוספת מרחב עבודה",
|
||||
"allboards.add-workspace-prompt": "שם מרחב עבודה",
|
||||
"allboards.add-subworkspace": "הוספת תת־מרחב עבודה",
|
||||
"allboards.add-subworkspace-prompt": "שם תת־מרחב עבודה",
|
||||
"allboards.edit-workspace": "עריכת מרחב עבודה",
|
||||
"allboards.edit-workspace-name": "שם מרחב עבודה",
|
||||
"allboards.edit-workspace-icon": "סמל מרחב עבודה (markdown)",
|
||||
"multi-selection-active": "יש לסמן את התיבות כדי לבחור לוחות",
|
||||
"activity-dueDate": "תאריך היעד השתנה מ־%s ל־%s",
|
||||
"activity-endDate": "תאריך הסיום השתנה מ־%s ל־%s",
|
||||
"add-attachment": "הוספת קובץ מצורף",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[ {\"title\": \"כותרת כרטיס ראשון\", \"description\":\"תיאור כרטיס ראשון\"}, {\"title\":\"כותרת כרטיס שני\",\"description\":\"תיאור כרטיס שני\"},{\"title\":\"כותרת כרטיס אחרון\",\"description\":\"תיאור כרטיס אחרון\"} ]",
|
||||
"create": "יצירה",
|
||||
"createBoardPopup-title": "יצירת לוח",
|
||||
"createTemplateContainerPopup-title": "הוספת מכולה לתבנית",
|
||||
"chooseBoardSourcePopup-title": "ייבוא לוח",
|
||||
"createLabelPopup-title": "יצירת תווית",
|
||||
"createCustomField": "יצירת שדה",
|
||||
|
|
@ -385,7 +398,7 @@
|
|||
"editNotificationPopup-title": "שינוי דיווח",
|
||||
"editProfilePopup-title": "עריכת פרופיל",
|
||||
"email": "דוא״ל",
|
||||
"email-address": "Email Address",
|
||||
"email-address": "כתובת דוא״ל",
|
||||
"email-enrollAccount-subject": "נוצר עבורך חשבון באתר __siteName__",
|
||||
"email-enrollAccount-text": "__user__ שלום,\n\nכדי להתחיל להשתמש בשירות, יש ללחוץ על הקישור המופיע להלן.\n\n__url__\n\nתודה.",
|
||||
"email-fail": "שליחת ההודעה בדוא״ל נכשלה",
|
||||
|
|
@ -755,8 +768,8 @@
|
|||
"delete-board-confirm-popup": "כל הרשימות, הכרטיסים, התווית והפעולות יימחקו ולא תהיה לך דרך לשחזר את תכני הלוח. אין אפשרות לבטל.",
|
||||
"boardDeletePopup-title": "למחוק את הלוח?",
|
||||
"delete-board": "מחיקת לוח",
|
||||
"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": "מחיקת רשימות כפולות",
|
||||
"delete-duplicate-lists-confirm": "להמשיך? הפעולה הזאת תמחק את כל הרשימות הכפולות שיש להן את אותו השם ואינן מכילות כרטיסים.",
|
||||
"default-subtasks-board": "תת־משימות עבור הלוח __board__",
|
||||
"default": "בררת מחדל",
|
||||
"defaultdefault": "בררת מחדל",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "חזרה להגדרות",
|
||||
"board-id": "מזהה לוח",
|
||||
"board-migration": "הסבת לוחות",
|
||||
"board-migrations": "הסבות לוחות",
|
||||
"card-show-lists-on-minicard": "הצגת רשימות בכרטיסון",
|
||||
"comprehensive-board-migration": "הסבת לוחות נרחבת",
|
||||
"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-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-list": "פריטים משוחזרים",
|
||||
"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-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.",
|
||||
"fix-missing-lists-migration": "Fix Missing Lists",
|
||||
"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-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "הושלם",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "ההסבה נכשלה",
|
||||
"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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "סך כל ההתקדמות",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "מצב",
|
||||
"migration-progress-details": "פרטים",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "ניקיון",
|
||||
"cleanup-old-jobs": "ניקוי משימות ישנות",
|
||||
"completed": "הושלמה",
|
||||
|
|
|
|||
|
|
@ -78,6 +78,18 @@
|
|||
"activity-deleteComment": "टिप्पणी हटा दी गई",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"allboards.starred": "Starred",
|
||||
"allboards.templates": "खाका",
|
||||
"allboards.remaining": "Remaining",
|
||||
"allboards.workspaces": "Workspaces",
|
||||
"allboards.add-workspace": "Add Workspace",
|
||||
"allboards.add-workspace-prompt": "Workspace name",
|
||||
"allboards.add-subworkspace": "Add Subworkspace",
|
||||
"allboards.add-subworkspace-prompt": "Subworkspace name",
|
||||
"allboards.edit-workspace": "Edit workspace",
|
||||
"allboards.edit-workspace-name": "Workspace name",
|
||||
"allboards.edit-workspace-icon": "Workspace icon (markdown)",
|
||||
"multi-selection-active": "Click checkboxes to select boards",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "संलग्न करें",
|
||||
|
|
@ -337,6 +349,7 @@
|
|||
"copyManyCardsPopup-format": "[{\"title\":\"पहला कार्ड शीर्षक\",\"description\":\"पहला कार्ड विवरण\"},{\"title\":\"दूसरा कार्ड शीर्षक\",\"description\":\"दूसरा कार्ड विवरण\"},{\"title\":\"अंतिम कार्ड शीर्षक\",\"description\":\"अंतिम कार्ड विवरण\" }]",
|
||||
"create": "निर्माण करना",
|
||||
"createBoardPopup-title": "बोर्ड निर्माण करना",
|
||||
"createTemplateContainerPopup-title": "Add Template Container",
|
||||
"chooseBoardSourcePopup-title": "बोर्ड आयात",
|
||||
"createLabelPopup-title": "नामपत्र निर्माण",
|
||||
"createCustomField": "क्षेत्र निर्माण",
|
||||
|
|
@ -1404,7 +1417,70 @@
|
|||
"back-to-settings": "Back to Settings",
|
||||
"board-id": "Board ID",
|
||||
"board-migration": "Board Migration",
|
||||
"board-migrations": "Board Migrations",
|
||||
"card-show-lists-on-minicard": "Show Lists on Minicard",
|
||||
"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.",
|
||||
"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.",
|
||||
"lost-cards": "Lost Cards",
|
||||
"lost-cards-list": "Restored Items",
|
||||
"restore-lost-cards-migration": "Restore Lost Cards",
|
||||
"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-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-description": "Detects and repairs missing or corrupted lists in the board structure.",
|
||||
"fix-avatar-urls-migration": "Fix Avatar URLs",
|
||||
"fix-avatar-urls-migration-description": "Updates avatar URLs for board members to use the correct storage backend and fixes broken avatar references.",
|
||||
"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.",
|
||||
"migration-needed": "Migration Needed",
|
||||
"migration-complete": "Complete",
|
||||
"migration-running": "Running...",
|
||||
"migration-successful": "Migration completed successfully",
|
||||
"migration-failed": "Migration failed",
|
||||
"migrations": "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.",
|
||||
"no-issues-found": "No issues found",
|
||||
"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-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-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-fix-missing-lists-migration-confirm": "This will detect and repair missing or corrupted lists in the board structure. Continue?",
|
||||
"run-fix-avatar-urls-migration-confirm": "This will update avatar URLs for board members 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",
|
||||
|
||||
"migration-progress-title": "Board Migration in Progress",
|
||||
"migration-progress-overall": "Overall Progress",
|
||||
"migration-progress-current-step": "Current Step",
|
||||
"migration-progress-status": "Status",
|
||||
"migration-progress-details": "Details",
|
||||
"migration-progress-note": "Please wait while we migrate your board to the latest structure...",
|
||||
|
||||
"step-analyze-board-structure": "Analyze Board Structure",
|
||||
"step-fix-orphaned-cards": "Fix Orphaned Cards",
|
||||
"step-convert-shared-lists": "Convert Shared Lists",
|
||||
"step-ensure-per-swimlane-lists": "Ensure Per-Swimlane Lists",
|
||||
"step-validate-migration": "Validate Migration",
|
||||
"step-fix-avatar-urls": "Fix Avatar URLs",
|
||||
"step-fix-attachment-urls": "Fix Attachment URLs",
|
||||
"step-analyze-lists": "Analyze Lists",
|
||||
"step-create-missing-lists": "Create Missing Lists",
|
||||
"step-update-cards": "Update Cards",
|
||||
"step-finalize": "Finalize",
|
||||
"step-delete-duplicate-empty-lists": "Delete Duplicate Empty Lists",
|
||||
"step-ensure-lost-cards-swimlane": "Ensure Lost Cards Swimlane",
|
||||
"step-restore-lists": "Restore Lists",
|
||||
"step-restore-cards": "Restore Cards",
|
||||
"step-restore-swimlanes": "Restore Swimlanes",
|
||||
"step-fix-missing-ids": "Fix Missing IDs",
|
||||
"step-scan-users": "Checking board member avatars",
|
||||
"step-scan-files": "Checking board file attachments",
|
||||
"step-fix-file-urls": "Fixing file URLs",
|
||||
"cleanup": "Cleanup",
|
||||
"cleanup-old-jobs": "Cleanup Old Jobs",
|
||||
"completed": "Completed",
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue