From 0f65e06338a75f54982c53b88a5bed8496277943 Mon Sep 17 00:00:00 2001 From: viehlieb Date: Fri, 10 Jun 2022 17:57:15 +0200 Subject: [PATCH 1/6] wip card description save --- client/components/cards/cardDescription.js | 6 +- client/components/cards/cardDetails.js | 6 + i18n/de.i18n.json | 1180 +++++++++++++++++++ i18n/en.i18n.json | 1181 ++++++++++++++++++++ package-lock.json | 6 +- rebuild-wekan.sh | 5 + 6 files changed, 2380 insertions(+), 4 deletions(-) create mode 100644 i18n/de.i18n.json create mode 100644 i18n/en.i18n.json diff --git a/client/components/cards/cardDescription.js b/client/components/cards/cardDescription.js index c958c335e..cfc366684 100644 --- a/client/components/cards/cardDescription.js +++ b/client/components/cards/cardDescription.js @@ -23,7 +23,11 @@ BlazeComponent.extendComponent({ this.data().setDescription(description); }, // Pressing Ctrl+Enter should submit the form - 'keydown form textarea'(evt) { + // was keydown + // extraevent for saving input. buffer of keydown vs buffer time + 'keyup form textarea'(evt) { + const description = this.getInput()[0].value; + this.data().setDescription(description); if (evt.keyCode === 13 && (evt.metaKey || evt.ctrlKey)) { const submitButton = this.find('button[type=submit]'); if (submitButton) { diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 23a1fc107..675a1fbec 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -1710,10 +1710,16 @@ BlazeComponent.extendComponent({ EscapeActions.register( 'detailsPane', () => { + //save description editing on EscapeAction + if (document.getElementsByClassName("editor js-new-description-input").item(0)) + { + Utils.getCurrentCard().setDescription(document.getElementsByClassName("editor js-new-description-input").item(0).value); + } if (Session.get('cardDetailsIsDragging')) { // Reset dragging status as the mouse landed outside the cardDetails template area and this will prevent a mousedown event from firing Session.set('cardDetailsIsDragging', false); Session.set('cardDetailsIsMouseDown', false); + } else { // Prevent close card when the user is selecting text and moves the mouse cursor outside the card detail area Utils.goBoardId(Session.get('currentBoard')); diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json new file mode 100644 index 000000000..059e1a056 --- /dev/null +++ b/i18n/de.i18n.json @@ -0,0 +1,1180 @@ +{ + "accept": "Akzeptieren", + "act-activity-notify": "Aktivitätsbenachrichtigung", + "act-addAttachment": "hat Anhang __attachment__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt", + "act-deleteAttachment": "hat Anhang __attachment__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ gelöscht", + "act-addSubtask": "hat Teilaufgabe __subtask__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt", + "act-addLabel": "hat Label __label__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt", + "act-addedLabel": "hat Label __label__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt", + "act-removeLabel": "hat Label __label__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt", + "act-removedLabel": "hat Label __label__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt", + "act-addChecklist": "hat Checkliste __checklist__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt", + "act-addChecklistItem": "hat Checklistenelement __checklistItem__ zu Checkliste __checkList__ auf der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt", + "act-removeChecklist": "hat Checkliste __checklist__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt", + "act-removeChecklistItem": "hat Checklistenposition __checklistItem__ von Checkliste __checkList__ auf der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt", + "act-checkedItem": "hat __checklistItem__ der Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ abgehakt", + "act-uncheckedItem": "hat Haken von __checklistItem__ der Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt", + "act-completeChecklist": "hat Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ vervollständigt", + "act-uncompleteChecklist": "hat Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ unvervollständigt", + "act-addComment": "hat Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ kommentiert: __comment__", + "act-editComment": "hat den Kommentar auf Karte __card__: __comment__ auf Liste __list__ in Swimlane __swimlane__ in Board __board__ bearbeitet", + "act-deleteComment": "hat den Kommentar von Karte __card__: __comment__ auf Liste __list__ in Swimlane __swimlane__ in Board __board__ gelöscht", + "act-createBoard": "hat Board __board__ erstellt", + "act-createSwimlane": "hat Swimlane __swimlane__ in Board __board__ erstellt", + "act-createCard": "hat Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ erstellt", + "act-createCustomField": "hat benutzerdefiniertes Feld __customField__ in Board __board__ angelegt", + "act-deleteCustomField": "hat benutzerdefiniertes Feld __customField__ in Board __board__ gelöscht", + "act-setCustomField": "hat benutzerdefiniertes Feld __customField__: __customFieldValue__ auf Karte __card__ auf Liste __list__ in Swimlane __swimlane__ in Board __board__ bearbeitet", + "act-createList": "hat Liste __list__ zu Board __board__ hinzugefügt", + "act-addBoardMember": "hat Mitglied __member__ zu Board __board__ hinzugefügt", + "act-archivedBoard": "hat Board __board__ ins Archiv verschoben", + "act-archivedCard": "hat Karte __card__ von der Liste __list__ in Swimlane __swimlane__ in Board __board__ ins Archiv verschoben", + "act-archivedList": "hat Liste __list__ in Swimlane __swimlane__ in Board __board__ ins Archiv verschoben", + "act-archivedSwimlane": "hat Swimlane __swimlane__ von Board __board__ ins Archiv verschoben", + "act-importBoard": "hat Board __board__ importiert", + "act-importCard": "hat Karte __card__ in Liste __list__ in Swimlane __swimlane__ in Board __board__ importiert", + "act-importList": "hat Liste __list__ in Swimlane __swimlane__ in Board __board__ importiert", + "act-joinMember": "hat Mitglied __member__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt", + "act-moveCard": "hat Karte __card__ in Board __board__ von Liste __oldList__ in Swimlane __oldSwimlane__ zu Liste __list__ in Swimlane __swimlane__ verschoben", + "act-moveCardToOtherBoard": "hat Karte __card__ von Liste __oldList__ in Swimlane __oldSwimlane__ in Board __oldBoard__ zu Liste __list__ in Swimlane __swimlane__ in Board __board__ verschoben", + "act-removeBoardMember": "hat Mitglied __member__ von Board __board__ entfernt", + "act-restoredCard": "hat Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ wiederhergestellt", + "act-unjoinMember": "hat Mitglied __member__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt", + "act-withBoardTitle": "__board__", + "act-withCardTitle": "[__board__] __card__", + "actions": "Aktionen", + "activities": "Aktivitäten", + "activity": "Aktivität", + "activity-added": "hat %s zu %s hinzugefügt", + "activity-archived": "hat %s ins Archiv verschoben", + "activity-attached": "hat %s an %s angehängt", + "activity-created": "hat %s erstellt", + "activity-customfield-created": "hat das benutzerdefinierte Feld %s erstellt", + "activity-excluded": "hat %s von %s ausgeschlossen", + "activity-imported": "hat %s in %s von %s importiert", + "activity-imported-board": "hat %s von %s importiert", + "activity-joined": "ist %s beigetreten", + "activity-moved": "hat %s von %s nach %s verschoben", + "activity-on": "in %s", + "activity-removed": "hat %s von %s entfernt", + "activity-sent": "hat %s an %s gesendet", + "activity-unjoined": "hat %s verlassen", + "activity-subtask-added": "Teilaufgabe zu %s hinzugefügt", + "activity-checked-item": "markierte %s in Checkliste %s von %s", + "activity-unchecked-item": "hat %s in Checkliste %s von %s abgewählt", + "activity-checklist-added": "hat eine Checkliste zu %s hinzugefügt", + "activity-checklist-removed": "entfernte eine Checkliste von %s", + "activity-checklist-completed": "Abgeschlossene Checkliste", + "activity-checklist-uncompleted": "unvervollständigte die Checkliste %s von %s", + "activity-checklist-item-added": "hat ein Checklistenelement zu '%s' in %s hinzugefügt", + "activity-checklist-item-removed": "hat ein Checklistenelement von '%s' in %s entfernt", + "add": "Hinzufügen", + "activity-checked-item-card": "markiere %s in Checkliste %s", + "activity-unchecked-item-card": "hat %s in Checkliste %s abgewählt", + "activity-checklist-completed-card": "hat Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ vervollständigt", + "activity-checklist-uncompleted-card": "unvervollständigte die Checkliste %s", + "activity-editComment": "editierte Kommentar %s", + "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", + "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", + "add-board": "neues Board", + "add-template": "Vorlage hinzufügen", + "add-card": "Karte hinzufügen", + "add-card-to-top-of-list": "Karte am Anfang der Liste hinzufügen", + "add-card-to-bottom-of-list": "Karte am Ende der Liste hinzufügen", + "add-swimlane": "Swimlane hinzufügen", + "add-subtask": "Teilaufgabe hinzufügen", + "add-checklist": "Checkliste hinzufügen", + "add-checklist-item": "Element zu Checkliste hinzufügen", + "convertChecklistItemToCardPopup-title": "Zu Karte umwandeln", + "add-cover": "Cover hinzufügen", + "add-label": "Label hinzufügen", + "add-list": "Liste hinzufügen", + "add-members": "Mitglieder hinzufügen", + "added": "Hinzugefügt", + "addMemberPopup-title": "Mitglieder", + "memberPopup-title": "Nutzereinstellungen", + "admin": "Admin", + "admin-desc": "Kann Karten anzeigen und bearbeiten, Mitglieder entfernen und Boardeinstellungen ändern.", + "admin-announcement": "Ankündigung", + "admin-announcement-active": "Aktive systemweite Ankündigungen", + "admin-announcement-title": "Ankündigung des Administrators", + "all-boards": "Alle Boards", + "and-n-other-card": "und eine andere Karte", + "and-n-other-card_plural": "und __count__ andere Karten", + "apply": "Übernehmen", + "app-is-offline": "Laden, bitte warten. Das Aktualisieren der Seite führt zu Datenverlust. Wenn das Laden nicht funktioniert, überprüfen Sie bitte, ob der Server nicht angehalten wurde.", + "app-try-reconnect": "Versuche die Verbindung wiederherzustellen", + "archive": "Ins Archiv verschieben", + "archive-all": "Alles ins Archiv verschieben", + "archive-board": "Board ins Archiv verschieben", + "archive-card": "Karte ins Archiv verschieben", + "archive-list": "Liste ins Archiv verschieben", + "archive-swimlane": "Swimlane ins Archiv verschieben", + "archive-selection": "Auswahl ins Archiv verschieben", + "archiveBoardPopup-title": "Board ins Archiv verschieben?", + "archived-items": "Archiv", + "archived-boards": "Boards im Archiv", + "restore-board": "Board wiederherstellen", + "no-archived-boards": "Keine Boards im Archiv.", + "archives": "Archiv", + "template": "Vorlage", + "templates": "Vorlagen", + "template-container": "Vorlagen-Container", + "add-template-container": "Vorlagen-Container hinzufügen", + "assign-member": "Mitglied zuweisen", + "attached": "angehängt", + "attachment": "Anhang", + "attachment-delete-pop": "Das Löschen eines Anhangs kann nicht rückgängig gemacht werden.", + "attachmentDeletePopup-title": "Anhang löschen?", + "attachments": "Anhänge", + "auto-watch": "Neue Boards nach Erstellung automatisch beobachten", + "avatar-too-big": "Das Profilbild ist zu groß (520KB max)", + "back": "Zurück", + "board-change-color": "Farbe ändern", + "show-at-all-boards-page": "Zeige auf \"Alle Boards\" Seite", + "board-info-on-my-boards": "\"Alle Boards\" Einstellungen", + "boardInfoOnMyBoardsPopup-title": "\"Alle Boards\" Einstellungen", + "boardInfoOnMyBoards-title": "\"Alle Boards\" Einstellungen", + "show-card-counter-per-list": "Zeige Kartenanzahl pro Liste", + "show-board_members-avatar": "Zeige Profilbilder der Board-Mitglieder", + "board-nb-stars": "%s Sterne", + "board-not-found": "Board nicht gefunden", + "board-private-info": "Dieses Board wird privat sein.", + "board-public-info": "Dieses Board wird öffentlich sein.", + "board-drag-drop-reorder-or-click-open": "Benutze Drag-and-Drop, um Board-Icons neu anzuordnen. Klicke auf ein Board-Icon, um das Board zu öffnen.", + "boardChangeColorPopup-title": "Farbe des Boards ändern", + "boardChangeTitlePopup-title": "Board umbenennen", + "boardChangeVisibilityPopup-title": "Sichtbarkeit ändern", + "boardChangeWatchPopup-title": "Beobachtung ändern", + "boardMenuPopup-title": "Boardeinstellungen", + "boardChangeViewPopup-title": "Boardansicht", + "boards": "Boards", + "board-view": "Boardansicht", + "board-view-cal": "Kalender", + "board-view-swimlanes": "Swimlanes", + "board-view-collapse": "Einklappen", + "board-view-gantt": "Gantt", + "board-view-lists": "Listen", + "bucket-example": "z.B. \"Löffelliste\"", + "cancel": "Abbrechen", + "card-archived": "Diese Karte wurde ins Archiv verschoben", + "board-archived": "Dieses Board wurde ins Archiv verschoben.", + "card-comments-title": "Diese Karte hat %s Kommentar(e).", + "card-delete-notice": "Löschen kann nicht rückgängig gemacht werden. Alle Aktionen, die dieser Karte zugeordnet sind, werden ebenfalls gelöscht.", + "card-delete-pop": "Alle Aktionen werden aus dem Aktivitätsfeed entfernt und die Karte kann nicht wiedereröffnet werden. Die Aktion kann nicht rückgängig gemacht werden.", + "card-delete-suggest-archive": "Sie können eine Karte ins Archiv verschieben, um sie vom Board zu entfernen und die Aktivitäten zu behalten.", + "card-archive-pop": "Die Karte wird nach ihrer Archivierung nicht in dieser Liste sichtbar sein.", + "card-archive-suggest-cancel": "Sie können die Karte später aus dem Archiv wiederherstellen.", + "card-due": "Fällig", + "card-due-on": "Fällig am", + "card-spent": "Aufgewendete Zeit", + "card-edit-attachments": "Anhänge ändern", + "card-edit-custom-fields": "Benutzerdefinierte Felder editieren", + "card-edit-labels": "Labels ändern", + "card-edit-members": "Mitglieder ändern", + "card-labels-title": "Labels für diese Karte ändern.", + "card-members-title": "Der Karte Board-Mitglieder hinzufügen oder entfernen.", + "card-start": "Start", + "card-start-on": "Start am", + "cardAttachmentsPopup-title": "Anhängen von", + "cardCustomField-datePopup-title": "Datum ändern", + "cardCustomFieldsPopup-title": "Benutzerdefinierte Felder editieren", + "cardStartVotingPopup-title": "Abstimmung starten", + "positiveVoteMembersPopup-title": "Befürworter", + "negativeVoteMembersPopup-title": "Gegner", + "card-edit-voting": "Abstimmung editieren", + "editVoteEndDatePopup-title": "Enddatum der Abstimmung ändern", + "allowNonBoardMembers": "Alle eingeloggte Nutzer erlauben", + "vote-question": "Abstimmen über", + "vote-public": "Zeigen, wer was gewählt hat", + "vote-for-it": "Dafür", + "vote-against": "Dagegen", + "deleteVotePopup-title": "Wahl löschen?", + "vote-delete-pop": "Löschen ist unwiderruflich. Alle Aktionen die dieser Karte zugeordnet sind werden ebenfalls gelöscht.", + "cardStartPlanningPokerPopup-title": "Planungspoker starten", + "card-edit-planning-poker": "Planungspoker ändern", + "editPokerEndDatePopup-title": "Enddatum für Planungspoker-Stimme ändern", + "poker-question": "Planungspoker", + "poker-one": "1", + "poker-two": "2", + "poker-three": "3", + "poker-five": "5", + "poker-eight": "8", + "poker-thirteen": "13", + "poker-twenty": "20", + "poker-forty": "40", + "poker-oneHundred": "100", + "poker-unsure": "?", + "poker-finish": "Beenden", + "poker-result-votes": "Werte", + "poker-result-who": "Wer", + "poker-replay": "Wiederholen", + "set-estimation": "Schätzung vornehmen", + "deletePokerPopup-title": "Planungspoker löschen?", + "poker-delete-pop": "Die Löschung ist permanent. Sie werden alles im Zusammenhang mit diesem Planungspoker verlieren.", + "cardDeletePopup-title": "Karte löschen?", + "cardArchivePopup-title": "Karte archivieren?", + "cardDetailsActionsPopup-title": "Kartenaktionen", + "cardLabelsPopup-title": "Labels", + "cardMembersPopup-title": "Mitglieder", + "cardMorePopup-title": "Mehr", + "cardTemplatePopup-title": "Vorlage erstellen", + "cards": "Karten", + "cards-count": "Karten", + "cards-count-one": "Karte", + "casSignIn": "Mit CAS anmelden", + "cardType-card": "Karte", + "cardType-linkedCard": "Verknüpfte Karte", + "cardType-linkedBoard": "Verknüpftes Board", + "change": "Ändern", + "change-avatar": "Profilbild ändern", + "change-password": "Passwort ändern", + "change-permissions": "Berechtigungen ändern", + "change-settings": "Einstellungen ändern", + "changeAvatarPopup-title": "Profilbild ändern", + "changeLanguagePopup-title": "Sprache ändern", + "changePasswordPopup-title": "Passwort ändern", + "changePermissionsPopup-title": "Berechtigungen ändern", + "changeSettingsPopup-title": "Einstellungen ändern", + "subtasks": "Teilaufgaben", + "checklists": "Checklisten", + "click-to-star": "Klicken Sie, um das Board mit einem Stern zu markieren.", + "click-to-unstar": "Klicken Sie, um den Stern vom Board zu entfernen.", + "clipboard": "Zwischenablage oder Drag & Drop", + "close": "Schließen", + "close-board": "Board schließen", + "close-board-pop": "Sie können das Board wiederherstellen, indem Sie die Schaltfläche \"Archiv\" in der Kopfzeile der Startseite anklicken.", + "close-card": "Karte schließen", + "color-black": "schwarz", + "color-blue": "blau", + "color-crimson": "Karminrot", + "color-darkgreen": "Dunkelgrün", + "color-gold": "Gold", + "color-gray": "Grau", + "color-green": "grün", + "color-indigo": "Indigo", + "color-lime": "hellgrün", + "color-magenta": "Magentarot", + "color-mistyrose": "Altrosa", + "color-navy": "Marineblau", + "color-orange": "orange", + "color-paleturquoise": "Blasses Türkis", + "color-peachpuff": "Pfirsich", + "color-pink": "pink", + "color-plum": "Pflaume", + "color-purple": "lila", + "color-red": "rot", + "color-saddlebrown": "Sattelbraun", + "color-silver": "Silber", + "color-sky": "himmelblau", + "color-slateblue": "Schieferblau", + "color-white": "Weiß", + "color-yellow": "gelb", + "unset-color": "Nicht festgelegt", + "comment": "Kommentar speichern", + "comment-placeholder": "Kommentar schreiben", + "comment-only": "Nur Kommentare", + "comment-only-desc": "Kann Karten nur kommentieren.", + "comment-delete": "Sind Sie sicher, dass Sie den Kommentar löschen wollen?", + "deleteCommentPopup-title": "Kommentar löschen?", + "no-comments": "Keine Kommentare", + "no-comments-desc": "Kann keine Kommentare und Aktivitäten sehen.", + "worker": "Arbeiter", + "worker-desc": "Kann Karten nur verschieben, sich selbst zuweisen und kommentieren.", + "computer": "Computer", + "confirm-subtask-delete-popup": "Wollen Sie die Teilaufgabe wirklich löschen?", + "confirm-checklist-delete-popup": "Wollen Sie diese Checkliste wirklich löschen?", + "subtaskDeletePopup-title": "Teilaufgabe löschen?", + "checklistDeletePopup-title": "Checkliste löschen?", + "copy-card-link-to-clipboard": "Kopiere Link zur Karte in die Zwischenablage", + "copy-text-to-clipboard": "Text in die Zwischenablage kopieren", + "linkCardPopup-title": "Karte verknüpfen", + "searchElementPopup-title": "Suche", + "copyCardPopup-title": "Karte kopieren", + "copyChecklistToManyCardsPopup-title": "Checklistenvorlage in mehrere Karten kopieren", + "copyChecklistToManyCardsPopup-instructions": "Titel und Beschreibungen der Zielkarten im folgenden JSON-Format", + "copyChecklistToManyCardsPopup-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", + "chooseBoardSourcePopup-title": "Board importieren", + "createLabelPopup-title": "Label erstellen", + "createCustomField": "Feld erstellen", + "createCustomFieldPopup-title": "Feld erstellen", + "current": "aktuell", + "custom-field-delete-pop": "Dies wird das Feld aus allen Karten entfernen und den dazugehörigen Verlauf löschen. Die Aktion kann nicht rückgängig gemacht werden.", + "custom-field-checkbox": "Kontrollkästchen", + "custom-field-currency": "Währung", + "custom-field-currency-option": "Währungszeichen", + "custom-field-date": "Datum", + "custom-field-dropdown": "Dropdownliste", + "custom-field-dropdown-none": "(keiner)", + "custom-field-dropdown-options": "Listenoptionen", + "custom-field-dropdown-options-placeholder": "Drücken Sie die Eingabetaste, um weitere Optionen hinzuzufügen", + "custom-field-dropdown-unknown": "(unbekannt)", + "custom-field-number": "Zahl", + "custom-field-text": "Text", + "custom-fields": "Benutzerdefinierte Felder", + "date": "Datum", + "decline": "Ablehnen", + "default-avatar": "Standard Profilbild", + "delete": "Löschen", + "deleteCustomFieldPopup-title": "Benutzerdefiniertes Feld löschen?", + "deleteLabelPopup-title": "Label löschen?", + "description": "Beschreibung", + "disambiguateMultiLabelPopup-title": "Labels vereinheitlichen", + "disambiguateMultiMemberPopup-title": "Mitglieder vereinheitlichen", + "discard": "Verwerfen", + "done": "Erledigt", + "download": "Herunterladen", + "edit": "Bearbeiten", + "edit-avatar": "Profilbild ändern", + "edit-profile": "Profil ändern", + "edit-wip-limit": "WIP-Limit bearbeiten", + "soft-wip-limit": "Soft WIP-Limit", + "editCardStartDatePopup-title": "Startdatum ändern", + "editCardDueDatePopup-title": "Fälligkeitsdatum ändern", + "editCustomFieldPopup-title": "Feld bearbeiten", + "addReactionPopup-title": "Reaktion hinzufügen", + "editCardSpentTimePopup-title": "Aufgewendete Zeit ändern", + "editLabelPopup-title": "Label ändern", + "editNotificationPopup-title": "Benachrichtigung ändern", + "editProfilePopup-title": "Profil ändern", + "email": "E-Mail", + "email-enrollAccount-subject": "Ihr Benutzerkonto auf __siteName__ wurde erstellt", + "email-enrollAccount-text": "Hallo __user__,\n\num den Dienst nutzen zu können, klicken Sie bitte auf folgenden Link:\n\n__url__\n\nDanke.", + "email-fail": "Senden der E-Mail fehlgeschlagen", + "email-fail-text": "Fehler beim Senden der E-Mail", + "email-invalid": "Ungültige E-Mail-Adresse", + "email-invite": "per E-Mail einladen", + "email-invite-subject": "__inviter__ hat Ihnen eine Einladung geschickt", + "email-invite-text": "Hallo __user__,\n\n__inviter__ hat Sie zu dem Board \"__board__\" eingeladen.\n\nBitte klicken Sie auf folgenden Link:\n\n__url__\n\nDanke.", + "email-resetPassword-subject": "Setzten Sie ihr Passwort auf __siteName__ zurück", + "email-resetPassword-text": "Hallo __user__,\n\num ihr Passwort zurückzusetzen, klicken Sie bitte auf folgenden Link:\n\n__url__\n\nDanke.", + "email-sent": "E-Mail gesendet", + "email-verifyEmail-subject": "Bestätigen Sie ihre E-Mail-Adresse auf __siteName__", + "email-verifyEmail-text": "Hallo __user__,\n\num ihre E-Mail-Adresse zu bestätigen, klicken Sie bitte auf folgenden Link:\n\n__url__\n\nDanke.", + "enable-wip-limit": "WIP-Limit einschalten", + "error-board-doesNotExist": "Dieses Board existiert nicht", + "error-board-notAdmin": "Um das zu tun, müssen Sie Administrator dieses Boards sein", + "error-board-notAMember": "Um das zu tun, müssen Sie Mitglied dieses Boards sein", + "error-json-malformed": "Ihre Eingabe ist kein gültiges JSON", + "error-json-schema": "Ihre JSON-Daten enthalten nicht die gewünschten Informationen im richtigen Format", + "error-csv-schema": "hre CSV (Comma Separated Values)/TSV (Tab Separated Values) enthalten nicht die gewünschten Informationen im richtigen Format", + "error-list-doesNotExist": "Diese Liste existiert nicht", + "error-user-doesNotExist": "Dieser Nutzer existiert nicht", + "error-user-notAllowSelf": "Sie können sich nicht selbst einladen.", + "error-user-notCreated": "Dieser Nutzer ist nicht angelegt", + "error-username-taken": "Dieser Benutzername ist bereits vergeben", + "error-orgname-taken": "Dieser Organisationsname ist schon vergeben", + "error-teamname-taken": "Dieser Teamname ist schon vergeben", + "error-email-taken": "E-Mail wird schon verwendet", + "export-board": "Board exportieren", + "export-board-json": "Board als JSON exportieren", + "export-board-csv": "Board als CSV exportieren", + "export-board-tsv": "Board als TSV exportieren", + "export-board-excel": "Board nach Excel exportieren", + "user-can-not-export-excel": "Benutzer kann nicht nach Excel exportieren", + "export-board-html": "Board als HTML exportieren", + "export-card": "Karte exportieren", + "export-card-pdf": "Karte in ein PDF exportieren", + "user-can-not-export-card-to-pdf": "Benutzer kann Karte nicht in ein PDF exportieren", + "exportBoardPopup-title": "Board exportieren", + "exportCardPopup-title": "Karte exportieren", + "sort": "Sortieren", + "sorted": "Sortiert", + "remove-sort": "Sortierung entfernen", + "sort-desc": "Zum Sortieren der Liste klicken", + "list-sort-by": "Sortieren der Liste nach:", + "list-label-modifiedAt": "Letzte Zugriffszeit", + "list-label-title": "Name der Liste", + "list-label-sort": "Ihre manuelle Sortierung", + "list-label-short-modifiedAt": "(Z)", + "list-label-short-title": "(N)", + "list-label-short-sort": "(M)", + "filter": "Filter", + "filter-cards": "Karten oder Listen filtern", + "filter-dates-label": "Nach Datum filtern", + "filter-no-due-date": "Kein Fälligkeitsdatum", + "filter-overdue": "Überfällig", + "filter-due-today": "Heute fällig", + "filter-due-this-week": "Diese Woche fällig", + "filter-due-tomorrow": "Morgen fällig", + "list-filter-label": "Liste nach Titel filtern", + "filter-clear": "Filter entfernen", + "filter-labels-label": "Nach Label filtern", + "filter-no-label": "Kein Label", + "filter-member-label": "Nach Nutzer filtern", + "filter-no-member": "Kein Mitglied", + "filter-assignee-label": "Nach Zuordnung filtern", + "filter-no-assignee": "Nicht zugewiesen", + "filter-custom-fields-label": "Filtern nach benutzerdefinierten Feldern", + "filter-no-custom-fields": "Keine benutzerdefinierten Felder", + "filter-show-archive": "Archivierte Listen anzeigen", + "filter-hide-empty": "Leere Listen verstecken", + "filter-on": "Filter ist aktiv", + "filter-on-desc": "Sie filtern die Karten in diesem Board. Klicken Sie, um den Filter zu bearbeiten.", + "filter-to-selection": "Ergebnisse auswählen", + "other-filters-label": "Andere Filter", + "advanced-filter-label": "Erweiterter Filter", + "advanced-filter-description": "Der erweiterte Filter erlaubt die Eingabe von Zeichenfolgen, die folgende Operatoren enthalten: == != <= >= && || ( ). Ein Leerzeichen wird als Trennzeichen zwischen den Operatoren verwendet. Sie können nach allen benutzerdefinierten Feldern filtern, indem Sie deren Namen und Werte eingeben. Zum Beispiel: Feld1 == Wert1. Hinweis: Wenn Felder oder Werte Leerzeichen enthalten, müssen Sie sie in einfache Anführungszeichen setzen. Zum Beispiel: 'Feld 1' == 'Wert 1'. Um einzelne Steuerzeichen (' \\/) zu überspringen, können Sie \\ verwenden. Zum Beispiel: Feld1 == Ich bin\\'s. Sie können außerdem mehrere Bedingungen kombinieren. Zum Beispiel: F1 == W1 || F1 == W2. Normalerweise werden alle Operatoren von links nach rechts interpretiert. Sie können die Reihenfolge ändern, indem Sie Klammern setzen. Zum Beispiel: F1 == W1 && ( F2 == W2 || F2 == W3 ). Sie können Textfelder auch mithilfe regulärer Ausdrücke durchsuchen: F1 == /Tes.*/i", + "fullname": "Vollständiger Name", + "header-logo-title": "Zurück zur Board Seite.", + "hide-system-messages": "Systemmeldungen ausblenden", + "headerBarCreateBoardPopup-title": "Board erstellen", + "home": "Home", + "import": "Importieren", + "impersonate-user": "als Benutzer ausgeben", + "link": "Verknüpfung", + "import-board": "Board importieren", + "import-board-c": "Board importieren", + "import-board-title-trello": "Board von Trello importieren", + "import-board-title-wekan": "Board aus vorherigem Export importieren", + "import-board-title-csv": "Board von CSV/TSV importieren", + "from-trello": "Von Trello", + "from-wekan": "Aus vorherigem Export", + "from-csv": "Aus CSV/TSV", + "import-board-instruction-trello": "Gehen Sie in ihrem Trello-Board auf 'Menü', dann 'Mehr', 'Drucken und Exportieren', 'JSON-Export' und kopieren Sie den dort angezeigten Text", + "import-board-instruction-csv": "Fügen Sie die Ihre Comma-Separated- (CSV) / bzw. Tab-Separated-Values (TSV) ein.", + "import-board-instruction-wekan": "Gehen Sie in Ihrem Board auf 'Menü', danach auf 'Board exportieren' und kopieren Sie den Text aus der heruntergeladenen Datei.", + "import-board-instruction-about-errors": "Treten beim importieren eines Board Fehler auf, so kann der Import dennoch erfolgreich abgeschlossen sein und das Board ist auf der Seite \"Alle Boards\" zusehen.", + "import-json-placeholder": "Fügen Sie die korrekten JSON-Daten hier ein", + "import-csv-placeholder": "Fügen Sie die korrekten CSV/TSV-Daten hier ein", + "import-map-members": "Mitglieder zuordnen", + "import-members-map": "Das importierte Board hat einige Mitglieder. Bitte ordnen sie die Mitglieder, die Sie importieren wollen, Ihren Benutzern zu.", + "import-members-map-note": "Anmerkung: Nicht zugeordnete Mitglieder werden dem aktuellen Benutzer zugeordnet.", + "import-show-user-mapping": "Mitgliederzuordnung überprüfen", + "import-user-select": "Wählen Sie den bestehenden Benutzer aus, den Sie für dieses Mitglied verwenden wollen.", + "importMapMembersAddPopup-title": "Mitglied auswählen", + "info": "Version", + "initials": "Initialen", + "invalid-date": "Ungültiges Datum", + "invalid-time": "Ungültige Zeitangabe", + "invalid-user": "Ungültiger Benutzer", + "joined": "beigetreten", + "just-invited": "Sie wurden soeben zu diesem Board eingeladen", + "keyboard-shortcuts": "Tastaturkürzel", + "label-create": "Label erstellen", + "label-default": "%s Label (Standard)", + "label-delete-pop": "Aktion kann nicht rückgängig gemacht werden. Das Label wird von allen Karten entfernt und seine Historie gelöscht.", + "labels": "Labels", + "language": "Sprache", + "last-admin-desc": "Sie können keine Rollen ändern, weil es mindestens einen Administrator geben muss.", + "leave-board": "Board verlassen", + "leave-board-pop": "Sind Sie sicher, dass Sie __boardTitle__ verlassen möchten? Sie werden von allen Karten in diesem Board entfernt.", + "leaveBoardPopup-title": "Board verlassen?", + "link-card": "Link zu dieser Karte", + "list-archive-cards": "Alle Karten dieser Liste ins Archiv verschieben", + "list-archive-cards-pop": "Alle Karten dieser Liste werden vom Board entfernt. Um Karten im Papierkorb anzuzeigen und wiederherzustellen, klicken Sie auf \"Menü\" > \"Archiv\".", + "list-move-cards": "Alle Karten in dieser Liste verschieben", + "list-select-cards": "Alle Karten in dieser Liste auswählen", + "set-color-list": "Lege Farbe fest", + "listActionPopup-title": "Listenaktionen", + "settingsUserPopup-title": "Benutzereinstellungen", + "settingsTeamPopup-title": "Team-Einstellungen", + "settingsOrgPopup-title": "Organisations-Einstellungen", + "swimlaneActionPopup-title": "Swimlaneaktionen", + "swimlaneAddPopup-title": "Swimlane unterhalb einfügen", + "listImportCardPopup-title": "Eine Trello-Karte importieren", + "listImportCardsTsvPopup-title": "CSV/TSV importieren", + "listMorePopup-title": "Mehr", + "link-list": "Link zu dieser Liste", + "list-delete-pop": "Alle Aktionen werden aus dem Verlauf gelöscht und die Liste kann nicht wiederhergestellt werden.", + "list-delete-suggest-archive": "Listen können ins Archiv verschoben werden, um sie aus dem Board zu entfernen und die Aktivitäten zu behalten.", + "lists": "Listen", + "swimlanes": "Swimlanes", + "log-out": "Ausloggen", + "log-in": "Einloggen", + "loginPopup-title": "Einloggen", + "memberMenuPopup-title": "Nutzereinstellungen", + "members": "Mitglieder", + "menu": "Menü", + "move-selection": "Auswahl verschieben", + "moveCardPopup-title": "Karte verschieben", + "moveCardToBottom-title": "Ans Ende verschieben", + "moveCardToTop-title": "Zum Anfang verschieben", + "moveSelectionPopup-title": "Auswahl verschieben", + "multi-selection": "Mehrfachauswahl", + "multi-selection-label": "Label für die Auswahl setzen", + "multi-selection-member": "Mitglied für die Auswahl setzen", + "multi-selection-on": "Mehrfachauswahl ist aktiv", + "muted": "Stumm", + "muted-info": "Sie werden nicht über Änderungen auf diesem Board benachrichtigt", + "my-boards": "Meine Boards", + "name": "Name", + "no-archived-cards": "Keine Karten im Archiv.", + "no-archived-lists": "Keine Listen im Archiv.", + "no-archived-swimlanes": "Keine Swimlanes im Archiv.", + "no-results": "Keine Ergebnisse", + "normal": "Normal", + "normal-desc": "Kann Karten anzeigen und bearbeiten, aber keine Einstellungen ändern.", + "not-accepted-yet": "Die Einladung wurde noch nicht angenommen", + "notify-participate": "Benachrichtigungen zu allen Karten erhalten, an denen Sie teilnehmen", + "notify-watch": "Benachrichtigungen über alle Boards, Listen oder Karten erhalten, die Sie beobachten", + "optional": "optional", + "or": "oder", + "page-maybe-private": "Diese Seite könnte privat sein. Vielleicht können Sie sie sehen, wenn Sie sich einloggen.", + "page-not-found": "Seite nicht gefunden.", + "password": "Passwort", + "paste-or-dragdrop": "Einfügen oder Datei mit Drag & Drop ablegen (nur Bilder)", + "participating": "Teilnehmen", + "preview": "Vorschau", + "previewAttachedImagePopup-title": "Vorschau", + "previewClipboardImagePopup-title": "Vorschau", + "private": "Privat", + "private-desc": "Dieses Board ist privat. Nur Nutzer, die zu dem Board gehören, können es anschauen und bearbeiten.", + "profile": "Profil", + "public": "Öffentlich", + "public-desc": "Dieses Board ist öffentlich. Es ist für jeden, der den Link kennt, sichtbar und taucht in Suchmaschinen wie Google auf. Nur Nutzer, die zum Board hinzugefügt wurden, können es bearbeiten.", + "quick-access-description": "Markieren Sie ein Board mit einem Stern, um dieser Leiste eine Verknüpfung hinzuzufügen.", + "remove-cover": "Cover entfernen", + "remove-from-board": "Von Board entfernen", + "remove-label": "Label entfernen", + "listDeletePopup-title": "Liste löschen?", + "remove-member": "Nutzer entfernen", + "remove-member-from-card": "Von Karte entfernen", + "remove-member-pop": "__name__ (__username__) von __boardTitle__ entfernen? Das Mitglied wird von allen Karten auf diesem Board entfernt. Es erhält eine Benachrichtigung.", + "removeMemberPopup-title": "Mitglied entfernen?", + "rename": "Umbenennen", + "rename-board": "Board umbenennen", + "restore": "Wiederherstellen", + "save": "Speichern", + "search": "Suchen", + "rules": "Regeln", + "search-cards": "Suche nach Karten-/Listentiteln, Beschreibungen und personalisierten Feldern auf diesem Board", + "search-example": "Suchtext eingeben und Enter drücken", + "select-color": "Farbe auswählen", + "select-board": "Board auswählen", + "set-wip-limit-value": "Setzen Sie ein Limit für die maximale Anzahl von Aufgaben in dieser Liste", + "setWipLimitPopup-title": "WIP-Limit setzen", + "shortcut-assign-self": "Fügen Sie sich zur aktuellen Karte hinzu", + "shortcut-autocomplete-emoji": "Emojis vervollständigen", + "shortcut-autocomplete-members": "Mitglieder vervollständigen", + "shortcut-clear-filters": "Alle Filter entfernen", + "shortcut-close-dialog": "Dialog schließen", + "shortcut-filter-my-cards": "Meine Karten filtern", + "shortcut-show-shortcuts": "Liste der Tastaturkürzel anzeigen", + "shortcut-toggle-filterbar": "Filter-Seitenleiste ein-/ausblenden", + "shortcut-toggle-searchbar": "Such-Seitenleiste ein-/ausblenden", + "shortcut-toggle-sidebar": "Seitenleiste ein-/ausblenden", + "show-cards-minimum-count": "Zeigt die Kartenanzahl an, wenn die Liste mehr enthält als", + "sidebar-open": "Seitenleiste öffnen", + "sidebar-close": "Seitenleiste schließen", + "signupPopup-title": "Benutzerkonto erstellen", + "star-board-title": "Klicken Sie, um das Board mit einem Stern zu markieren. Es erscheint dann oben in ihrer Boardliste.", + "starred-boards": "Markierte Boards", + "starred-boards-description": "Markierte Boards erscheinen oben in ihrer Boardliste.", + "subscribe": "Abonnieren", + "team": "Team", + "this-board": "diesem Board", + "this-card": "diese Karte", + "spent-time-hours": "Aufgewendete Zeit (Stunden)", + "overtime-hours": "Mehrarbeit (Stunden)", + "overtime": "Mehrarbeit", + "has-overtime-cards": "Hat Karten mit Mehrarbeit", + "has-spenttime-cards": "Hat Karten mit aufgewendeten Zeiten", + "time": "Zeit", + "title": "Titel", + "toggle-labels": "Label 1-9 zur Karte hinzufügen. Bei Mehrfachauswahl Label 1-9 hinzufügen", + "remove-labels-multiselect": "Labels 1-9 bei Karten-Mehrfachauswahl entfernen", + "tracking": "Folgen", + "tracking-info": "Sie werden über alle Änderungen an Karten benachrichtigt, an denen Sie als Ersteller oder Mitglied beteiligt sind.", + "type": "Typ", + "unassign-member": "Mitglied entfernen", + "unsaved-description": "Sie haben eine nicht gespeicherte Änderung.", + "unwatch": "Beobachtung entfernen", + "upload": "Upload", + "upload-avatar": "Profilbild hochladen", + "uploaded-avatar": "Profilbild hochgeladen", + "custom-top-left-corner-logo-image-url": "Benutzerdefiniertes Logo oben links Bild URL", + "custom-top-left-corner-logo-link-url": "Benutzerdefiniertes Logo oben links Link URL", + "custom-top-left-corner-logo-height": "Benutzerdefiniertes Logo oben links Höhe. Voreinstellung: 27", + "custom-login-logo-image-url": "Benutzerdefiniertes Login Logo Bild URL", + "custom-login-logo-link-url": "Benutzerdefiniertes Login Logo Link URL", + "text-below-custom-login-logo": "Text unterhalb benutzerdefiniertem Login Logo", + "automatic-linked-url-schemes": "Spezielle URL-Schemas, die durch Klick automatisch öffenbar sein sollen. Ein URL-Schema pro Zeile", + "username": "Benutzername", + "import-usernames": "Nutzernamen importieren", + "view-it": "Ansehen", + "warn-list-archived": "Warnung: Diese Karte befindet sich in einer Liste im Archiv", + "watch": "Beobachten", + "watching": "Beobachten", + "watching-info": "Sie werden über alle Änderungen in diesem Board benachrichtigt", + "welcome-board": "Willkommen-Board", + "welcome-swimlane": "Meilenstein 1", + "welcome-list1": "Grundlagen", + "welcome-list2": "Fortgeschritten", + "card-templates-swimlane": "Kartenvorlagen", + "list-templates-swimlane": "Listenvorlagen", + "board-templates-swimlane": "Boardvorlagen", + "what-to-do": "Was wollen Sie tun?", + "wipLimitErrorPopup-title": "Ungültiges WIP-Limit", + "wipLimitErrorPopup-dialog-pt1": "Die Anzahl von Aufgaben in dieser Liste ist größer als das von Ihnen definierte WIP-Limit.", + "wipLimitErrorPopup-dialog-pt2": "Bitte verschieben Sie einige Aufgaben aus dieser Liste oder setzen Sie ein grösseres WIP-Limit.", + "admin-panel": "Administration", + "settings": "Einstellungen", + "people": "Nutzer", + "registration": "Registrierung", + "disable-self-registration": "Selbstregistrierung deaktivierenSelbstregistrierung deaktivieren", + "disable-forgot-password": "\"Passwort vergessen\" deaktivieren", + "invite": "Einladen", + "invite-people": "Nutzer einladen", + "to-boards": "In Board(s)", + "email-addresses": "E-Mail Adressen", + "smtp-host-description": "Die Adresse Ihres SMTP-Servers für ausgehende E-Mails.", + "smtp-port-description": "Der Port Ihres SMTP-Servers für ausgehende E-Mails.", + "smtp-tls-description": "Aktiviere TLS Unterstützung für SMTP Server", + "smtp-host": "SMTP-Server", + "smtp-port": "SMTP-Port", + "smtp-username": "Benutzername", + "smtp-password": "Passwort", + "smtp-tls": "TLS Unterstützung", + "send-from": "Absender", + "send-smtp-test": "Test-E-Mail an sich selbst schicken", + "invitation-code": "Einladungscode", + "email-invite-register-subject": "__inviter__ hat Ihnen eine Einladung geschickt", + "email-invite-register-text": "Sehr geehrte(r) __user__,\n\n__inviter__ hat Sie zur Mitarbeit an einem Kanbanboard eingeladen.\n\nBitte klicken Sie auf folgenden Link:\n__url__\n\nIhr Einladungscode lautet: __icode__\n\nDanke.", + "email-smtp-test-subject": "SMTP Test-E-Mail", + "email-smtp-test-text": "Sie haben erfolgreich eine E-Mail versandt", + "error-invitation-code-not-exist": "Ungültiger Einladungscode", + "error-notAuthorized": "Sie sind nicht berechtigt diese Seite zu sehen.", + "webhook-title": "Webhook Name", + "webhook-token": "Token (Optional für Authentifizierung)", + "outgoing-webhooks": "Ausgehende Webhooks", + "bidirectional-webhooks": "Zwei-Wege Webhooks", + "outgoingWebhooksPopup-title": "Ausgehende Webhooks", + "boardCardTitlePopup-title": "Kartentitelfilter", + "disable-webhook": "Diesen Webhook deaktivieren", + "global-webhook": "Globale Webhooks", + "new-outgoing-webhook": "Neuer ausgehender Webhook", + "no-name": "(Unbekannt)", + "Node_version": "Node-Version", + "Meteor_version": "Meteor-Version", + "MongoDB_version": "MongoDB-Version", + "MongoDB_storage_engine": "MongoDB-Speicher-Engine", + "MongoDB_Oplog_enabled": "MongoDB-Oplog aktiviert", + "OS_Arch": "Betriebssystem-Architektur", + "OS_Cpus": "Anzahl Prozessoren", + "OS_Freemem": "Freier Arbeitsspeicher", + "OS_Loadavg": "Mittlere Systembelastung", + "OS_Platform": "Plattform", + "OS_Release": "Version des Betriebssystem", + "OS_Totalmem": "Gesamter Arbeitsspeicher", + "OS_Type": "Typ des Betriebssystems", + "OS_Uptime": "Laufzeit des Systems", + "days": "Tage", + "hours": "Stunden", + "minutes": "Minuten", + "seconds": "Sekunden", + "show-field-on-card": "Zeige dieses Feld auf der Karte", + "automatically-field-on-card": "Füge Feld neuen Karten hinzu", + "always-field-on-card": "Füge Feld allen Karten hinzu", + "showLabel-field-on-card": "Feldbezeichnung auf Minikarte anzeigen", + "showSum-field-on-list": "Zeige Summe der Felder oben in der Liste", + "yes": "Ja", + "no": "Nein", + "accounts": "Konten", + "accounts-allowEmailChange": "Ändern der E-Mailadresse erlauben", + "accounts-allowUserNameChange": "Ändern des Benutzernamens erlauben", + "tableVisibilityMode-allowPrivateOnly": "Board-Sichtbarkeit: Erlaube ausschließlich private Boards", + "tableVisibilityMode": "Sichtbarkeit der Boards", + "createdAt": "Erstellt am", + "modifiedAt": "Geändert am", + "verified": "Geprüft", + "active": "Aktiv", + "card-received": "Empfangen", + "card-received-on": "Empfangen am", + "card-end": "Ende", + "card-end-on": "Endet am", + "editCardReceivedDatePopup-title": "Empfangsdatum ändern", + "editCardEndDatePopup-title": "Enddatum ändern", + "setCardColorPopup-title": "Farbe festlegen", + "setCardActionsColorPopup-title": "Farbe wählen", + "setSwimlaneColorPopup-title": "Farbe wählen", + "setListColorPopup-title": "Farbe wählen", + "assigned-by": "Zugewiesen von", + "requested-by": "Angefordert von", + "card-sorting-by-number": "Kartensortierung nach Nummer", + "board-delete-notice": "Löschen kann nicht rückgängig gemacht werden. Sie werden alle Listen, Karten und Aktionen, die mit diesem Board verbunden sind, verlieren.", + "delete-board-confirm-popup": "Alle Listen, Karten, Labels und Akivitäten werden gelöscht und Sie können die Inhalte des Boards nicht wiederherstellen! Die Aktion kann nicht rückgängig gemacht werden.", + "boardDeletePopup-title": "Board löschen?", + "delete-board": "Board löschen", + "default-subtasks-board": "Teilaufgabe für __board__ Board", + "default": "Standard", + "queue": "Warteschlange", + "subtask-settings": "Einstellungen für Teilaufgaben", + "card-settings": "Karten-Einstellungen", + "minicard-settings": "Minikarte-Einstellungen", + "boardSubtaskSettingsPopup-title": "Boardeinstellungen für Teilaufgaben", + "boardCardSettingsPopup-title": "Karten-Einstellungen", + "boardMinicardSettingsPopup-title": "Minikarte-Einstellungen", + "deposit-subtasks-board": "Teilaufgaben in diesem Board ablegen:", + "deposit-subtasks-list": "Zielliste für hier abgelegte Teilaufgaben:", + "show-parent-in-minicard": "Übergeordnetes Element auf Minikarte anzeigen:", + "description-on-minicard": "Beschreibung auf Minikarte", + "prefix-with-full-path": "Vollständiger Pfad über Titel", + "prefix-with-parent": "Über Titel", + "subtext-with-full-path": "Vollständiger Pfad unter Titel", + "subtext-with-parent": "Unter Titel", + "change-card-parent": "Übergeordnete Karte ändern", + "parent-card": "Übergeordnete Karte", + "source-board": "Quellboard", + "no-parent": "Nicht anzeigen", + "activity-added-label": "fügte Label '%s' zu %s hinzu", + "activity-removed-label": "entfernte Label '%s' von %s", + "activity-delete-attach": "löschte ein Anhang von %s", + "activity-added-label-card": "Label hinzugefügt '%s'", + "activity-removed-label-card": "Label entfernt '%s'", + "activity-delete-attach-card": "hat einen Anhang gelöscht", + "activity-set-customfield": "setze benutzerdefiniertes Feld '%s' zu '%s' in %s", + "activity-unset-customfield": "entferne benutzerdefiniertes Feld '%s' in %s", + "r-rule": "Regel", + "r-add-trigger": "Auslöser hinzufügen", + "r-add-action": "Aktion hinzufügen", + "r-board-rules": "Boardregeln", + "r-add-rule": "Regel hinzufügen", + "r-view-rule": "Regel anzeigen", + "r-delete-rule": "Regel löschen", + "r-new-rule-name": "Neuer Regeltitel", + "r-no-rules": "Keine Regeln", + "r-trigger": "Auslöser", + "r-action": "Aktion", + "r-when-a-card": "Wenn Karte", + "r-is": "wird", + "r-is-moved": "verschoben wird", + "r-added-to": "Hinzugefügt zu", + "r-removed-from": "entfernt von", + "r-the-board": "das Board", + "r-list": "Liste", + "list": "Liste", + "set-filter": "Setze Filter", + "r-moved-to": "verschoben nach", + "r-moved-from": "verschoben von", + "r-archived": "ins Archiv verschoben", + "r-unarchived": "aus dem Archiv wiederhergestellt", + "r-a-card": "einer Karte", + "r-when-a-label-is": "Wenn ein Label", + "r-when-the-label": "Wenn das Label", + "r-list-name": "Listenname", + "r-when-a-member": "Wenn ein Mitglied", + "r-when-the-member": "Wenn das Mitglied", + "r-name": "Name", + "r-when-a-attach": "Wenn ein Anhang", + "r-when-a-checklist": "Wenn eine Checkliste wird", + "r-when-the-checklist": "Wenn die Checkliste", + "r-completed": "abgeschlossen", + "r-made-incomplete": "unvollständig gemacht", + "r-when-a-item": "Wenn eine Checklistenposition", + "r-when-the-item": "Wenn die Checklistenposition", + "r-checked": "markiert wird", + "r-unchecked": "abgewählt wird", + "r-move-card-to": "Verschiebe Karte an", + "r-top-of": "Anfang von", + "r-bottom-of": "Ende von", + "r-its-list": "seiner Liste", + "r-archive": "Ins Archiv verschieben", + "r-unarchive": "Aus dem Archiv wiederherstellen", + "r-card": "Karte", + "r-add": "Hinzufügen", + "r-remove": "entfernen", + "r-label": "Label", + "r-member": "Mitglied", + "r-remove-all": "Entferne alle Mitglieder von der Karte", + "r-set-color": "Farbe festlegen auf", + "r-checklist": "Checkliste", + "r-check-all": "Alle markieren", + "r-uncheck-all": "Alle abwählen", + "r-items-check": "Elemente der Checkliste", + "r-check": "Markieren", + "r-uncheck": "Abwählen", + "r-item": "Element", + "r-of-checklist": "der Checkliste", + "r-send-email": "Eine E-Mail senden", + "r-to": "an", + "r-of": "von", + "r-subject": "Betreff", + "r-rule-details": "Regeldetails", + "r-d-move-to-top-gen": "Karte nach oben in die Liste verschieben", + "r-d-move-to-top-spec": "Karte an den Anfang der Liste verschieben", + "r-d-move-to-bottom-gen": "Karte nach unten in die Liste verschieben", + "r-d-move-to-bottom-spec": "Karte an das Ende der Liste verschieben", + "r-d-send-email": "E-Mail senden", + "r-d-send-email-to": "an", + "r-d-send-email-subject": "Betreff", + "r-d-send-email-message": "Nachricht", + "r-d-archive": "Karte ins Archiv verschieben", + "r-d-unarchive": "Karte aus dem Archiv wiederherstellen", + "r-d-add-label": "Label hinzufügen", + "r-d-remove-label": "Label entfernen", + "r-create-card": "Neue Karte erstellen", + "r-in-list": "in der Liste", + "r-in-swimlane": "in Swimlane", + "r-d-add-member": "Mitglied hinzufügen", + "r-d-remove-member": "Mitglied entfernen", + "r-d-remove-all-member": "Entferne alle Mitglieder", + "r-d-check-all": "Alle Elemente der Liste markieren", + "r-d-uncheck-all": "Alle Element der Liste abwählen", + "r-d-check-one": "Element auswählen", + "r-d-uncheck-one": "Element abwählen", + "r-d-check-of-list": "der Checkliste", + "r-d-add-checklist": "Checkliste hinzufügen", + "r-d-remove-checklist": "Checkliste entfernen", + "r-by": "durch", + "r-add-checklist": "Checkliste hinzufügen", + "r-with-items": "mit Elementen", + "r-items-list": "Element1,Element2,Element3", + "r-add-swimlane": "Füge Swimlane hinzu", + "r-swimlane-name": "Swimlanename", + "r-board-note": "Hinweis: Lassen Sie ein Feld leer, um alle möglichen Werte zu finden.", + "r-checklist-note": "Hinweis: Die Elemente der Checkliste müssen als kommagetrennte Werte geschrieben werden.", + "r-when-a-card-is-moved": "Wenn eine Karte in eine andere Liste verschoben wird", + "r-set": "Setze", + "r-update": "Aktualisiere", + "r-datefield": "Datumsfeld", + "r-df-start-at": "Start", + "r-df-due-at": "Fällig", + "r-df-end-at": "Ende", + "r-df-received-at": "Empfangen", + "r-to-current-datetime": "auf das aktuelle Datum/Zeit", + "r-remove-value-from": "Entferne Wert von", + "ldap": "LDAP", + "oauth2": "OAuth2", + "cas": "CAS", + "authentication-method": "Authentifizierungsmethode", + "authentication-type": "Authentifizierungstyp", + "custom-product-name": "Benutzerdefinierter Produktname", + "layout": "Layout", + "hide-logo": "Verstecke Logo", + "add-custom-html-after-body-start": "Füge benutzerdefiniertes HTML nach Anfang hinzu", + "add-custom-html-before-body-end": "Füge benutzerdefiniertes HTML vor Ende hinzu", + "error-undefined": "Etwas ist schief gelaufen", + "error-ldap-login": "Es ist ein Fehler beim Anmelden aufgetreten", + "display-authentication-method": "Anzeige Authentifizierungsverfahren", + "oidc-button-text": "Benutzerdefinierter Text der OIDC-Schaltfläche", + "default-authentication-method": "Standardauthentifizierungsverfahren", + "duplicate-board": "Board duplizieren", + "org-number": "Die Anzahl an Organisationen ist:", + "team-number": "Die Anzahl an Teams ist:", + "people-number": "Anzahl der Personen:", + "swimlaneDeletePopup-title": "Swimlane löschen?", + "swimlane-delete-pop": "Alle Aktionen werden aus dem Aktivitätenfeed entfernt und die Swimlane kann nicht wiederhergestellt werden. Die Aktion kann nicht rückgängig gemacht werden.", + "restore-all": "Alles wiederherstellen", + "delete-all": "Alles löschen", + "loading": "Laden, bitte warten.", + "previous_as": "letzter Zeitpunkt war", + "act-a-dueAt": "hat Fälligkeit geändert auf\nWann: __timeValue__\nWo: __card__\nvorheriger Fälligkeitszeitpunkt war __timeOldValue__", + "act-a-endAt": "hat Ende auf __timeValue__ von (__timeOldValue__) geändert", + "act-a-startAt": "hat Start auf __timeValue__ von (__timeOldValue__) geändert", + "act-a-receivedAt": "hat Empfangszeit auf __timeValue__ von (__timeOldValue__) geändert", + "a-dueAt": "hat Fälligkeit geändert auf", + "a-endAt": "hat Ende geändert auf", + "a-startAt": "hat Startzeit geändert auf", + "a-receivedAt": "hat Empfangszeit geändert auf", + "almostdue": "aktuelles Fälligkeitsdatum %s bevorstehend", + "pastdue": "aktuelles Fälligkeitsdatum %s überschritten", + "duenow": "aktuelles Fälligkeitsdatum %s heute", + "act-newDue": "__list__/__card__ hat seine 1. fällige Erinnerung [__board__]", + "act-withDue": "Erinnerung an Fällikgeit von __card__ [__board__]", + "act-almostdue": "erinnernd an das aktuelle Fälligkeitszeitpunkt (__timeValue__) von __card__ ist bevorstehend", + "act-pastdue": "erinnernd an das aktuelle Fälligkeitszeitpunkt (__timeValue__) von __card__ ist vorbei", + "act-duenow": "erinnernd an das aktuelle Fälligkeitszeitpunkt (__timeValue__) von __card__ ist jetzt", + "act-atUserComment": "Sie wurden in [__board__] __list__/__card__ erwähnt", + "delete-user-confirm-popup": "Sind Sie sicher, dass Sie diesen Account löschen wollen? Die Aktion kann nicht rückgängig gemacht werden.", + "delete-team-confirm-popup": "Sind Sie sicher, daß Sie dieses Team löschen wollen? Es gibt keine Möglichkeit, das rückgängig zu machen.", + "delete-org-confirm-popup": "Sind Sie sicher, daß Sie diese Organisation löschen wollen? Es gibt keine Möglichkeit, das rückgängig zu machen.", + "accounts-allowUserDelete": "Erlaube Benutzern ihren eigenen Account zu löschen", + "hide-minicard-label-text": "Labeltext auf Minikarte ausblenden", + "show-desktop-drag-handles": "Desktop-Ziehpunkte anzeigen", + "assignee": "Zugewiesen", + "cardAssigneesPopup-title": "Zugewiesen", + "addmore-detail": "Eine detailliertere Beschreibung hinzufügen", + "show-on-card": "Zeige auf Karte", + "show-on-minicard": "Zeige auf Minikarte", + "new": "Neu", + "editOrgPopup-title": "Organisation bearbeiten", + "newOrgPopup-title": "Neue Organisation", + "editTeamPopup-title": "Team bearbeiten", + "newTeamPopup-title": "Neues Team", + "editUserPopup-title": "Benutzer ändern", + "newUserPopup-title": "Neuer Benutzer", + "notifications": "Benachrichtigungen", + "view-all": "Alle anzeigen", + "filter-by-unread": "Nur ungelesene", + "mark-all-as-read": "Alle als gelesen markieren", + "remove-all-read": "Alle gelesenen entfernen", + "allow-rename": "Umbenennen erlauben", + "allowRenamePopup-title": "Umbenennen erlauben", + "start-day-of-week": "Wochentagbeginn festlegen", + "monday": "Montag", + "tuesday": "Dienstag", + "wednesday": "Mittwoch", + "thursday": "Donnerstag", + "friday": "Freitag", + "saturday": "Samstag", + "sunday": "Sonntag", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Eigentümer", + "last-modified-at": "Zuletzt geändert um", + "last-activity": "Letzte Aktivität", + "voting": "Abstimunng", + "archived": "Archiviert", + "delete-linked-card-before-this-card": "Sie können diese Karte nicht löschen, bevor verbundene Karten nicht gelöscht wurden.", + "delete-linked-cards-before-this-list": "Sie können diese Liste erst löschen, wenn Sie alle Karten gelöscht haben, die auf Karten in dieser Liste verweisen.", + "hide-checked-items": "Erledigte ausblenden", + "task": "Aufgabe", + "create-task": "Aufgabe erstellen", + "ok": "OK", + "organizations": "Organisationen", + "teams": "Teams", + "displayName": "Anzeigename", + "shortName": "Kurzname", + "website": "Webseite", + "person": "Person", + "my-cards": "Meine Karten", + "card": "Karte", + "board": "Board", + "context-separator": "/", + "myCardsViewChange-title": "Meine Karten Ansicht", + "myCardsViewChangePopup-title": "Meine Karten Ansicht", + "myCardsViewChange-choice-boards": "Boards", + "myCardsViewChange-choice-table": "Tabelle", + "myCardsSortChange-title": "Meine Karten Sortierung", + "myCardsSortChangePopup-title": "Meine Karten Sortierung", + "myCardsSortChange-choice-board": "nach Board", + "myCardsSortChange-choice-dueat": "nach Fälligkeitsdatum", + "dueCards-title": "Fällige Karten", + "dueCardsViewChange-title": "Fällige Karten Ansicht", + "dueCardsViewChangePopup-title": "Fällige Karten Ansicht", + "dueCardsViewChange-choice-me": "Ich", + "dueCardsViewChange-choice-all": "alle Benutzer", + "dueCardsViewChange-choice-all-description": "Zeigt alle unvollständigen Karten mit einem *Fälligkeits*-Datum auf Boards, für die der Benutzer Berechtigungen hat.", + "broken-cards": "Fehlerhafte Karten", + "board-title-not-found": "Board „%s“ nicht gefunden.", + "swimlane-title-not-found": "Swimlane „%s“ nicht gefunden.", + "list-title-not-found": "Liste „%s“ nicht gefunden.", + "label-not-found": "Label „%s“ nicht gefunden.", + "label-color-not-found": "Label-Farbe „%s“ nicht gefunden.", + "user-username-not-found": "Nutzername „%s“ nicht gefunden.", + "comment-not-found": "Keine Karte gefunden, die „%s“ in einem Kommentar enthält.", + "org-name-not-found": "Organisation '%s' nicht gefunden.", + "team-name-not-found": "Team '%s' nicht gefunden.", + "globalSearch-title": "Alle Boards durchsuchen", + "no-cards-found": "Keine Karten gefunden", + "one-card-found": "Eine Karte gefunden", + "n-cards-found": "%s Karten gefunden", + "n-n-of-n-cards-found": "__start__–__end__ von __total__ Karten gefunden", + "operator-board": "Board", + "operator-board-abbrev": "b", + "operator-swimlane": "Swimlane", + "operator-swimlane-abbrev": "s", + "operator-list": "Liste", + "operator-list-abbrev": "l", + "operator-label": "Label", + "operator-label-abbrev": "#", + "operator-user": "Nutzer", + "operator-user-abbrev": "@", + "operator-member": "Mitglied", + "operator-member-abbrev": "m", + "operator-assignee": "Zugewiesener", + "operator-assignee-abbrev": "a", + "operator-creator": "Ersteller", + "operator-status": "Status", + "operator-due": "Fällig", + "operator-created": "erstellt", + "operator-modified": "geändert", + "operator-sort": "sortieren", + "operator-comment": "Kommentar", + "operator-has": "hat", + "operator-limit": "Begrenzung", + "operator-debug": "Debug", + "operator-org": "Organisation", + "operator-team": "Team", + "predicate-archived": "archiviert", + "predicate-open": "offen", + "predicate-ended": "beendet", + "predicate-all": "alle", + "predicate-overdue": "überfällig", + "predicate-week": "Woche", + "predicate-month": "Monat", + "predicate-quarter": "Quartal", + "predicate-year": "Jahr", + "predicate-due": "Fällig", + "predicate-modified": "geändert", + "predicate-created": "erstellt", + "predicate-attachment": "Anhang", + "predicate-description": "Beschreibung", + "predicate-checklist": "Checkliste", + "predicate-start": "Start", + "predicate-end": "Ende", + "predicate-assignee": "Zugewiesener", + "predicate-member": "Mitglied", + "predicate-public": "öffentlich", + "predicate-private": "privat", + "predicate-selector": "Auswahl", + "predicate-projection": "Projektion", + "operator-unknown-error": "„%s“ ist kein Operator", + "operator-number-expected": "Operator „__operator__“ erwartete eine Zahl, bekam aber „__value__“", + "operator-sort-invalid": "Sortierung „%s“ ist ungültig", + "operator-status-invalid": "„%s“ ist kein gültiger Status", + "operator-has-invalid": "%s ist keine gültige Prüfung auf Existenz", + "operator-limit-invalid": "%s ist keine gültige Begrenzung. Die Begrenzung sollte eine positive Ganzzahl sein.", + "operator-debug-invalid": "%s ist kein gültiger Debugausdruck", + "next-page": "Nächste Seite", + "previous-page": "Vorherige Seite", + "heading-notes": "Bemerkungen", + "globalSearch-instructions-heading": "Hinweise zur Suche", + "globalSearch-instructions-description": "Suchanfragen können Operatoren enthalten, um die Suche zu verfeinern. Operatoren bestehen aus ihrem Namen und ihrem Wert, getrennt durch einen Doppelpunkt. Beispielsweise würde die Operatorangabe `Liste:Blockiert` die Suche beschränken auf Karten in einer Liste namens *Blockiert*. Wenn der Wert Leerschritte oder andere Spezialzeichen enthält, muss er in Anführungszeichen gesetzt sein (z.B. `__operator_list__:\"Im Review\"`).", + "globalSearch-instructions-operators": "Mögliche Operatoren:", + "globalSearch-instructions-operator-board": "`__operator_board__:` – Karten in Boards, auf die das angegebene *<title>* passt", + "globalSearch-instructions-operator-list": "`__operator_list__:<title>` – Karten in Listen, auf die das angegebene *<title>* passt", + "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` – Karten in Swimlanes, auf die das angebene *<title>* passt", + "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` – Karten mit einem Kommentar, das *<text>* enthält.", + "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` – Karten, die ein Label haben, auf das *<color>* oder *<name> passt", + "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<Name|Farbe>` – Kurzform für `__operator_label__:<color>` oder `__operator_label__:<name>`", + "globalSearch-instructions-operator-user": "`__operator_user__:<username>` – Karten, für die *<username>* ein *Mitglied* oder ein *Zugewiesener* ist", + "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` – Kurzform für `user:<username>`", + "globalSearch-instructions-operator-member": "`__operator_member__:<username>` – Karten, von denen *<username>* *Mitglied* ist", + "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` – Karten, denen *<username>* *zugewiesen* ist", + "globalSearch-instructions-operator-creator": "`__operator_creator__:<username>` – Karten, die von *<username>* angelegt wurden", + "globalSearch-instructions-operator-org": "`__operator_org__:<display name|short name>` - Karten gehören zu einem Board, dass der Organisation *<name>* zugewiesen ist", + "globalSearch-instructions-operator-team": "`__operator_team__:<display name|short name>` - Karten gehören zu einem Board, dass Team *<name>* zugewiesen ist", + "globalSearch-instructions-operator-due": "`__operator_due__:<n>` – Karten, die spätestens in *<n>* Tagen fällig sind. `__operator_due__:__predicate_overdue__` zeigt alle Karten, für die die Fälligkeit überschritten ist.", + "globalSearch-instructions-operator-created": "`__operator_created__:<n>` – Karten, die vor maximal *<n>* Tagen angelegt wurden", + "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` – Karten, die vor maximal *<n>* Tagen geändert wurden", + "globalSearch-instructions-operator-status": "`__operator_status__:<status>` – wo *<status>* eines der Folgenden ist:", + "globalSearch-instructions-status-archived": "`__predicate_archived__` – archivierte Karten", + "globalSearch-instructions-status-all": "`__predicate_all__` – alle archivierten und unarchivierten Karten", + "globalSearch-instructions-status-ended": "`__predicate_ended__` – Karten mit einem Enddatum", + "globalSearch-instructions-status-public": "`__predicate_public__` – Karten aus öffentlichen Boards", + "globalSearch-instructions-status-private": "`__predicate_private__` – Karten aus privaten Boards", + "globalSearch-instructions-operator-has": "`__operator_has__:<field>` – wo *<field>* eines aus `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` oder `__predicate_member__` ist. Die Angabe eines `-` vor *<field>* sucht nach leerem Feld (z.B. findet `__operator_has__:-fällig` alle Karten ohne Fälligkeitsdatum).", + "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` – wo *<sort-name>* eines aus `__predicate_due__`, `__predicate_created__` oder `__predicate_modified__` ist. Zum absteigenden Sortieren ein `-` vor den Sortierschlüssel setzen.", + "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` – wo *<n>* eine positive Ganzzahl ist, die die Anzahl Karten pro Seite darstellt.", + "globalSearch-instructions-notes-1": "Mehrere Operatoren können angegeben werden.", + "globalSearch-instructions-notes-2": "Gleichartige Operatoren werden Oder-verknüpft. Karten, für die eine Bedingung zutrifft, werden ausgegeben.\n`__operator_list__:Verfügbar __operator_list__:Blockiert` würde alle Karten ausgeben, die in irgendwelchen Listen mit den Namen *Verfügbar* oder *Blockiert* stehen.", + "globalSearch-instructions-notes-3": "Verschiedenartige Operatoren werden *UND*-verknüpft. Nur Karten, auf die alle verschiedenartigen Operatoren zutreffen, werden zurückgegeben. `__operator_list__:Verfügbar __operator_label__:Rot` gibt nur Karten aus der Liste *Verfügbar* mit *rotem* Label zurück.", + "globalSearch-instructions-notes-3-2": "Tage können als positive oder negative Ganzzahl angegeben werden, oder man nutzt `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` oder `__predicate_year__` für den jeweiligen Zeitraum.", + "globalSearch-instructions-notes-4": "Bei Suchen in Texten ist die Groß-/Kleinschreibung egal.", + "globalSearch-instructions-notes-5": "Per Vorgabe werden archivierte Karten bei der Suche nicht berücksichtigt.", + "link-to-search": "Link auf diese Suche", + "excel-font": "Arial", + "number": "Zahl", + "label-colors": "Label-Farben", + "label-names": "Label-Namen", + "archived-at": "archiviert am", + "sort-cards": "Sortiere Karten", + "cardsSortPopup-title": "Sortiere Karten", + "due-date": "Fälligkeitsdatum", + "server-error": "Server-Fehler", + "server-error-troubleshooting": "Bitte übermitteln Sie den Fehler, den der Server erzeugt hat.\nRufen Sie für eine Snap-Installation auf: `sudo snap logs wekan.wekan`\nRufen Sie für eine Docker-Installation auf: `sudo docker logs wekan-app`", + "title-alphabetically": "Überschrift (alphabetisch)", + "created-at-newest-first": "Erstelldatum (neueste zuerst)", + "created-at-oldest-first": "Erstelldatum (älteste zuerst)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Alle System-Nachrichten aller Nutzer verbergen", + "now-system-messages-of-all-users-are-hidden": "Alle System-Nachrichten aller Nutzer sind nun verborgen", + "move-swimlane": "Swimlane verschieben", + "moveSwimlanePopup-title": "Swimlane verschieben", + "custom-field-stringtemplate": "String-Vorlage", + "custom-field-stringtemplate-format": "Format (verwende %{value} als Platzhalter)", + "custom-field-stringtemplate-separator": "Trenner (verwende oder   für einen Leerschritt)", + "custom-field-stringtemplate-item-placeholder": "Drücke die Eingabetaste, um weitere Einträge hinzuzufügen", + "creator": "Ersteller", + "filesReportTitle": "Dateien-Bericht", + "reports": "Berichte", + "rulesReportTitle": "Regeln-Bericht", + "boardsReportTitle": "Boardbericht", + "cardsReportTitle": "Kartenbericht", + "copy-swimlane": "Kopiere Swimlane", + "copySwimlanePopup-title": "Swimlane kopieren", + "display-card-creator": "Karten-Ersteller anzeigen", + "wait-spinner": "Warte-Symbol", + "Bounce": "Puls-Warte-Symbol", + "Cube": "Würfel-Warte-Symbol", + "Cube-Grid": "Würfel-Gitter-Warte-Symbol", + "Dot": "Punkt-Warte-Symbol", + "Double-Bounce": "Doppelpuls-Warte-Symbol", + "Rotateplane": "Drehscheibe-Warte-Symbol", + "Scaleout": "Scaleout-Warte-Symbol", + "Wave": "Wellen-Warte-Symbol", + "maximize-card": "Karte maximieren", + "minimize-card": "Karte minimieren", + "delete-org-warning-message": "Diese Organisation kann nicht gelöscht werden, da wenigstens ein Nutzer dazu gehört.", + "delete-team-warning-message": "Dieses Team kann nicht gelöscht werden, da wenigstens ein Nutzer dazu gehört.", + "subject": "Betreff", + "details": "Details", + "carbon-copy": "Kopie (CC:)", + "ticket": "Ticket", + "tickets": "Tickets", + "ticket-number": "Ticketnummer", + "open": "Offen", + "pending": "Unerledigt", + "closed": "Geschlossen", + "resolved": "Gelöst", + "cancelled": "Gestrichen", + "history": "Verlauf", + "request": "Anfrage", + "requests": "Anfragen", + "help-request": "Hilfsgesuch", + "editCardSortOrderPopup-title": "Sortierung ändern", + "cardDetailsPopup-title": "Kartendetails", + "add-teams": "Teams hinzufügen", + "add-teams-label": "Zugewiesene Teams werden darunter angezeigt:", + "remove-team-from-table": "Sind Sie sicher, das Sie dieses Team vom Board entfernen möchten?", + "confirm-btn": "Bestätigen", + "remove-btn": "entfernen", + "filter-card-title-label": "Nach Titel der Karte filtern", + "invite-people-success": "Registrierungseinladung erfolgreich versandt", + "invite-people-error": "Fehler beim Versand der Registrierungseinladung", + "can-invite-if-same-mailDomainName": "Name der Email-Domain", + "to-create-teams-contact-admin": "Bitte kontaktieren Sie den Administrator um Teams anlegen zu lassen.", + "Node_heap_total_heap_size": "Knoten-Heap: totale Heap-Größe", + "Node_heap_total_heap_size_executable": "Knoten-Heap: totale Heap-Größe (Executable)", + "Node_heap_total_physical_size": "Knoten-Heap: totale physische Größe", + "Node_heap_total_available_size": "Knoten-Heap: totale verfügbare Größe", + "Node_heap_used_heap_size": "Knoten-Heap: benutzte Heap-Größe", + "Node_heap_heap_size_limit": "Knoten-Heap: Heap-Größen-Limit", + "Node_heap_malloced_memory": "Knoten-Heap: malloc-belegter Speicher", + "Node_heap_peak_malloced_memory": "Knoten-Heap: Maximum des malloc-belegten Speichers", + "Node_heap_does_zap_garbage": "Knoten-Heap: macht „Zap-Garbage“", + "Node_heap_number_of_native_contexts": "Knoten-Heap: Anzahl nativer Kontexte", + "Node_heap_number_of_detached_contexts": "Knoten-Heap: Anzahl losgelöster Kontexte", + "Node_memory_usage_rss": "Knoten-Speicherverbrauch: Resident Set-Größe", + "Node_memory_usage_heap_total": "Knoten-Speicherverbrauch: totale Größe des belegten Heaps", + "Node_memory_usage_heap_used": "Knoten-Speicherverbrauch: tatsächlicher Speicherverbrauch", + "Node_memory_usage_external": "Knoten-Speicherverbrauch: extern", + "add-organizations": "Organisation hinzufügen", + "add-organizations-label": "Hinzugefügte Organisationen werden nachfolgend angezeigt:", + "remove-organization-from-board": "Sicher, dass du die Organisation von diesem Board entfernen willst?", + "to-create-organizations-contact-admin": "Um Organisationen anzulegen, wende dich bitte an den Administrator.", + "custom-legal-notice-link-url": "URL zu eigenem Impressum", + "acceptance_of_our_legalNotice": "Durch das Einloggen akzeptieren Sie unser", + "legalNotice": "Impressum/Datenschutzerklärung", + "copied": "Kopiert!", + "checklistActionsPopup-title": "Checklistenaktionen", + "moveChecklist": "Checkliste verschieben", + "moveChecklistPopup-title": "Checkliste verschieben", + "newlineBecomesNewChecklistItem": "Neue Zeile wird ein neues Checklistenelement", + "copyChecklist": "Checkliste kopieren", + "copyChecklistPopup-title": "Checkliste kopieren", + "card-show-lists": "Listen anzeigen", + "subtaskActionsPopup-title": "Teilaufgabenaktionen", + "attachmentActionsPopup-title": "Anhang-Aktionen", + "attachment-move-storage-fs": "Verschiebe den Anhang zum Dateisystem", + "attachment-move-storage-gridfs": "Verschiebe den Anhang zu GridFS", + "attachment-move": "Verschiebe den Anhang", + "move-all-attachments-to-fs": "Verschiebe alle Anhänge zum Dateisystem", + "move-all-attachments-to-gridfs": "Verschiebe alle Anhänge zu GridFS", + "move-all-attachments-of-board-to-fs": "Verschiebe alle Anhänge des Boards zum Dateisystem", + "move-all-attachments-of-board-to-gridfs": "Verschiebe alle Anhänge des Boards zu GridFS", + "path": "Pfad", + "version-name": "Version-Name", + "size": "Größe", + "storage": "Speicher", + "action": "Aktion", + "board-title": "Board-Titel" +} \ No newline at end of file diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json new file mode 100644 index 000000000..a4f2d204c --- /dev/null +++ b/i18n/en.i18n.json @@ -0,0 +1,1181 @@ +{ + "accept": "Accept", + "act-activity-notify": "Activity Notification", + "act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-uncheckedItem": "unchecked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-completeChecklist": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-editComment": "edited comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-deleteComment": "deleted comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-createBoard": "created board __board__", + "act-createSwimlane": "created swimlane __swimlane__ to board __board__", + "act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__", + "act-createCustomField": "created custom field __customField__ at board __board__", + "act-deleteCustomField": "deleted custom field __customField__ at board __board__", + "act-setCustomField": "edited custom field __customField__: __customFieldValue__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-createList": "added list __list__ to board __board__", + "act-addBoardMember": "added member __member__ to board __board__", + "act-archivedBoard": "Board __board__ moved to Archive", + "act-archivedCard": "Card __card__ at list __list__ at swimlane __swimlane__ at board __board__ moved to Archive", + "act-archivedList": "List __list__ at swimlane __swimlane__ at board __board__ moved to Archive", + "act-archivedSwimlane": "Swimlane __swimlane__ at board __board__ moved to Archive", + "act-importBoard": "imported board __board__", + "act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__", + "act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__", + "act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__", + "act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__", + "act-removeBoardMember": "removed member __member__ from board __board__", + "act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__", + "act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-withBoardTitle": "__board__", + "act-withCardTitle": "[__board__] __card__", + "actions": "Actions", + "activities": "Activities", + "activity": "Activity", + "activity-added": "added %s to %s", + "activity-archived": "%s moved to Archive", + "activity-attached": "attached %s to %s", + "activity-created": "created %s", + "activity-customfield-created": "created custom field %s", + "activity-excluded": "excluded %s from %s", + "activity-imported": "imported %s into %s from %s", + "activity-imported-board": "imported %s from %s", + "activity-joined": "joined %s", + "activity-moved": "moved %s from %s to %s", + "activity-on": "on %s", + "activity-removed": "removed %s from %s", + "activity-sent": "sent %s to %s", + "activity-unjoined": "unjoined %s", + "activity-subtask-added": "added subtask to %s", + "activity-checked-item": "checked %s in checklist %s of %s", + "activity-unchecked-item": "unchecked %s in checklist %s of %s", + "activity-checklist-added": "added checklist to %s", + "activity-checklist-removed": "removed a checklist from %s", + "activity-checklist-completed": "completed checklist %s of %s", + "activity-checklist-uncompleted": "uncompleted the checklist %s of %s", + "activity-checklist-item-added": "added checklist item to '%s' in %s", + "activity-checklist-item-removed": "removed a checklist item from '%s' in %s", + "add": "Add", + "activity-checked-item-card": "checked %s in checklist %s", + "activity-unchecked-item-card": "unchecked %s in checklist %s", + "activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "activity-checklist-uncompleted-card": "uncompleted the checklist %s", + "activity-editComment": "edited comment %s", + "activity-deleteComment": "deleted comment %s", + "activity-receivedDate": "edited received date to %s of %s", + "activity-startDate": "edited start date to %s of %s", + "activity-dueDate": "edited due date to %s of %s", + "activity-endDate": "edited end date to %s of %s", + "add-attachment": "Add Attachment", + "add-board": "Add Board", + "add-template": "Add Template", + "add-card": "Add Card", + "add-card-to-top-of-list": "Add Card to Top of List", + "add-card-to-bottom-of-list": "Add Card to Bottom of List", + "add-swimlane": "Add Swimlane", + "add-subtask": "Add Subtask", + "add-checklist": "Add Checklist", + "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", + "add-cover": "Add Cover", + "add-label": "Add Label", + "add-list": "Add List", + "add-members": "Add Members", + "added": "Added", + "addMemberPopup-title": "Members", + "memberPopup-title": "Member Settings", + "admin": "Admin", + "admin-desc": "Can view and edit cards, remove members, and change settings for the board.", + "admin-announcement": "Announcement", + "admin-announcement-active": "Active System-Wide Announcement", + "admin-announcement-title": "Announcement from Administrator", + "all-boards": "All boards", + "and-n-other-card": "And __count__ other card", + "and-n-other-card_plural": "And __count__ other cards", + "apply": "Apply", + "app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.", + "app-try-reconnect": "Try to reconnect.", + "archive": "Move to Archive", + "archive-all": "Move All to Archive", + "archive-board": "Move Board to Archive", + "archive-card": "Move Card to Archive", + "archive-list": "Move List to Archive", + "archive-swimlane": "Move Swimlane to Archive", + "archive-selection": "Move selection to Archive", + "archiveBoardPopup-title": "Move Board to Archive?", + "archived-items": "Archive", + "archived-boards": "Boards in Archive", + "restore-board": "Restore Board", + "no-archived-boards": "No Boards in Archive.", + "archives": "Archive", + "template": "Template", + "templates": "Templates", + "template-container": "Template Container", + "add-template-container": "Add Template Container", + "assign-member": "Assign member", + "attached": "attached", + "attachment": "Attachment", + "attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.", + "attachmentDeletePopup-title": "Delete Attachment?", + "attachments": "Attachments", + "auto-watch": "Automatically watch boards when they are created", + "avatar-too-big": "The avatar is too large (520KB max)", + "back": "Back", + "board-change-color": "Change color", + "show-at-all-boards-page" : "Show at All Boards page", + "board-info-on-my-boards" : "All Boards Settings", + "boardInfoOnMyBoardsPopup-title" : "All Boards Settings", + "boardInfoOnMyBoards-title": "All Boards Settings", + "show-card-counter-per-list": "Show card count per list", + "show-board_members-avatar": "Show Board members avatars", + "board-nb-stars": "%s stars", + "board-not-found": "Board not found", + "board-private-info": "This board will be <strong>private</strong>.", + "board-public-info": "This board will be <strong>public</strong>.", + "board-drag-drop-reorder-or-click-open": "Drag and drop to reorder board icons. Click board icon to open board.", + "boardChangeColorPopup-title": "Change Board Background", + "boardChangeTitlePopup-title": "Rename Board", + "boardChangeVisibilityPopup-title": "Change Visibility", + "boardChangeWatchPopup-title": "Change Watch", + "boardMenuPopup-title": "Board Settings", + "boardChangeViewPopup-title": "Board View", + "boards": "Boards", + "board-view": "Board View", + "board-view-cal": "Calendar", + "board-view-swimlanes": "Swimlanes", + "board-view-collapse": "Collapse", + "board-view-gantt": "Gantt", + "board-view-lists": "Lists", + "bucket-example": "Like “Bucket List” for example", + "cancel": "Cancel", + "card-archived": "This card is moved to Archive.", + "board-archived": "This board is moved to Archive.", + "card-comments-title": "This card has %s comment.", + "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.", + "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.", + "card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.", + "card-archive-pop": "Card will not be visible at this list after archiving card.", + "card-archive-suggest-cancel": "You can later restore card from Archive.", + "card-due": "Due", + "card-due-on": "Due on", + "card-spent": "Spent Time", + "card-edit-attachments": "Edit attachments", + "card-edit-custom-fields": "Edit custom fields", + "card-edit-labels": "Edit labels", + "card-edit-members": "Edit members", + "card-labels-title": "Change the labels for the card.", + "card-members-title": "Add or remove members of the board from the card.", + "card-start": "Start", + "card-start-on": "Starts on", + "cardAttachmentsPopup-title": "Attach From", + "cardCustomField-datePopup-title": "Change date", + "cardCustomFieldsPopup-title": "Edit custom fields", + "cardStartVotingPopup-title": "Start a vote", + "positiveVoteMembersPopup-title": "Proponents", + "negativeVoteMembersPopup-title": "Opponents", + "card-edit-voting": "Edit voting", + "editVoteEndDatePopup-title": "Change vote end date", + "allowNonBoardMembers": "Allow all logged in users", + "vote-question": "Voting question", + "vote-public": "Show who voted what", + "vote-for-it": "for it", + "vote-against": "against", + "deleteVotePopup-title": "Delete vote?", + "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.", + "cardStartPlanningPokerPopup-title": "Start a Planning Poker", + "card-edit-planning-poker": "Edit Planning Poker", + "editPokerEndDatePopup-title": "Change Planning Poker vote end date", + "poker-question": "Planning Poker", + "poker-one": "1", + "poker-two": "2", + "poker-three": "3", + "poker-five": "5", + "poker-eight": "8", + "poker-thirteen": "13", + "poker-twenty": "20", + "poker-forty": "40", + "poker-oneHundred": "100", + "poker-unsure": "?", + "poker-finish": "Finish", + "poker-result-votes": "Votes", + "poker-result-who": "Who", + "poker-replay": "Replay", + "set-estimation": "Set Estimation", + "deletePokerPopup-title": "Delete planning poker?", + "poker-delete-pop": "Deleting is permanent. You will lose all actions associated with this planning poker.", + "cardDeletePopup-title": "Delete Card?", + "cardArchivePopup-title": "Archive Card?", + "cardDetailsActionsPopup-title": "Card Actions", + "cardLabelsPopup-title": "Labels", + "cardMembersPopup-title": "Members", + "cardMorePopup-title": "More", + "cardTemplatePopup-title": "Create template", + "cards": "Cards", + "cards-count": "Cards", + "cards-count-one": "Card", + "casSignIn": "Sign In with CAS", + "cardType-card": "Card", + "cardType-linkedCard": "Linked Card", + "cardType-linkedBoard": "Linked Board", + "change": "Change", + "change-avatar": "Change Avatar", + "change-password": "Change Password", + "change-permissions": "Change permissions", + "change-settings": "Change Settings", + "changeAvatarPopup-title": "Change Avatar", + "changeLanguagePopup-title": "Change Language", + "changePasswordPopup-title": "Change Password", + "changePermissionsPopup-title": "Change Permissions", + "changeSettingsPopup-title": "Change Settings", + "subtasks": "Subtasks", + "checklists": "Checklists", + "click-to-star": "Click to star this board.", + "click-to-unstar": "Click to unstar this board.", + "clipboard": "Clipboard or drag & drop", + "close": "Close", + "close-board": "Close Board", + "close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.", + "close-card": "Close Card", + "color-black": "black", + "color-blue": "blue", + "color-crimson": "crimson", + "color-darkgreen": "darkgreen", + "color-gold": "gold", + "color-gray": "gray", + "color-green": "green", + "color-indigo": "indigo", + "color-lime": "lime", + "color-magenta": "magenta", + "color-mistyrose": "mistyrose", + "color-navy": "navy", + "color-orange": "orange", + "color-paleturquoise": "paleturquoise", + "color-peachpuff": "peachpuff", + "color-pink": "pink", + "color-plum": "plum", + "color-purple": "purple", + "color-red": "red", + "color-saddlebrown": "saddlebrown", + "color-silver": "silver", + "color-sky": "sky", + "color-slateblue": "slateblue", + "color-white": "white", + "color-yellow": "yellow", + "unset-color": "Unset", + "comment": "Comment", + "comment-placeholder": "Write Comment", + "comment-only": "Comment only", + "comment-only-desc": "Can comment on cards only.", + "comment-delete": "Are you sure you want to delete the comment?", + "deleteCommentPopup-title": "Delete comment?", + "no-comments": "No comments", + "no-comments-desc": "Can not see comments and activities.", + "worker": "Worker", + "worker-desc": "Can only move cards, assign itself to card and comment.", + "computer": "Computer", + "confirm-subtask-delete-popup": "Are you sure you want to delete subtask?", + "confirm-checklist-delete-popup": "Are you sure you want to delete the checklist?", + "subtaskDeletePopup-title": "Delete Subtask?", + "checklistDeletePopup-title": "Delete Checklist?", + "copy-card-link-to-clipboard": "Copy card link to clipboard", + "copy-text-to-clipboard": "Copy text to clipboard", + "linkCardPopup-title": "Link Card", + "searchElementPopup-title": "Search", + "copyCardPopup-title": "Copy Card", + "copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards", + "copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format", + "copyChecklistToManyCardsPopup-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", + "chooseBoardSourcePopup-title": "Import board", + "createLabelPopup-title": "Create Label", + "createCustomField": "Create Field", + "createCustomFieldPopup-title": "Create Field", + "current": "current", + "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.", + "custom-field-checkbox": "Checkbox", + "custom-field-currency": "Currency", + "custom-field-currency-option": "Currency Code", + "custom-field-date": "Date", + "custom-field-dropdown": "Dropdown List", + "custom-field-dropdown-none": "(none)", + "custom-field-dropdown-options": "List Options", + "custom-field-dropdown-options-placeholder": "Press enter to add more options", + "custom-field-dropdown-unknown": "(unknown)", + "custom-field-number": "Number", + "custom-field-text": "Text", + "custom-fields": "Custom Fields", + "date": "Date", + "decline": "Decline", + "default-avatar": "Default avatar", + "delete": "Delete", + "deleteCustomFieldPopup-title": "Delete Custom Field?", + "deleteLabelPopup-title": "Delete Label?", + "description": "Description", + "disambiguateMultiLabelPopup-title": "Disambiguate Label Action", + "disambiguateMultiMemberPopup-title": "Disambiguate Member Action", + "discard": "Discard", + "done": "Done", + "download": "Download", + "edit": "Edit", + "edit-avatar": "Change Avatar", + "edit-profile": "Edit Profile", + "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", + "editCardStartDatePopup-title": "Change start date", + "editCardDueDatePopup-title": "Change due date", + "editCustomFieldPopup-title": "Edit Field", + "addReactionPopup-title": "Add reaction", + "editCardSpentTimePopup-title": "Change spent time", + "editLabelPopup-title": "Change Label", + "editNotificationPopup-title": "Edit Notification", + "editProfilePopup-title": "Edit Profile", + "email": "Email", + "email-enrollAccount-subject": "An account created for you on __siteName__", + "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.", + "email-fail": "Sending email failed", + "email-fail-text": "Error trying to send email", + "email-invalid": "Invalid email", + "email-invite": "Invite via Email", + "email-invite-subject": "__inviter__ sent you an invitation", + "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.", + "email-resetPassword-subject": "Reset your password on __siteName__", + "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.", + "email-sent": "Email sent", + "email-verifyEmail-subject": "Verify your email address on __siteName__", + "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.", + "enable-wip-limit": "Enable WIP Limit", + "error-board-doesNotExist": "This board does not exist", + "error-board-notAdmin": "You need to be admin of this board to do that", + "error-board-notAMember": "You need to be a member of this board to do that", + "error-json-malformed": "Your text is not valid JSON", + "error-json-schema": "Your JSON data does not include the proper information in the correct format", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format ", + "error-list-doesNotExist": "This list does not exist", + "error-user-doesNotExist": "This user does not exist", + "error-user-notAllowSelf": "You can not invite yourself", + "error-user-notCreated": "This user is not created", + "error-username-taken": "This username is already taken", + "error-orgname-taken": "This organization name is already taken", + "error-teamname-taken": "This team name is already taken", + "error-email-taken": "Email has already been taken", + "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "export-board-excel": "Export board to Excel", + "user-can-not-export-excel": "User can not export Excel", + "export-board-html": "Export board to HTML", + "export-card": "Export card", + "export-card-pdf": "Export card to PDF", + "user-can-not-export-card-to-pdf": "User can not export card to PDF", + "exportBoardPopup-title": "Export board", + "exportCardPopup-title": "Export card", + "sort": "Sort", + "sorted": "Sorted", + "remove-sort": "Remove sort", + "sort-desc": "Click to Sort List", + "list-sort-by": "Sort the List By:", + "list-label-modifiedAt": "Last Access Time", + "list-label-title": "Name of the List", + "list-label-sort": "Your Manual Order", + "list-label-short-modifiedAt": "(L)", + "list-label-short-title": "(N)", + "list-label-short-sort": "(M)", + "filter": "Filter", + "filter-cards": "Filter Cards or Lists", + "filter-dates-label": "Filter by date", + "filter-no-due-date": "No due date", + "filter-overdue": "Overdue", + "filter-due-today": "Due today", + "filter-due-this-week": "Due this week", + "filter-due-tomorrow": "Due tomorrow", + "list-filter-label": "Filter List by Title", + "filter-clear": "Clear filter", + "filter-labels-label": "Filter by label", + "filter-no-label": "No label", + "filter-member-label": "Filter by member", + "filter-no-member": "No member", + "filter-assignee-label": "Filter by assignee", + "filter-no-assignee": "No assignee", + "filter-custom-fields-label": "Filter by Custom Fields", + "filter-no-custom-fields": "No Custom Fields", + "filter-show-archive": "Show archived lists", + "filter-hide-empty": "Hide empty lists", + "filter-on": "Filter is on", + "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.", + "filter-to-selection": "Filter to selection", + "other-filters-label": "Other Filters", + "advanced-filter-label": "Advanced Filter", + "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i", + "fullname": "Full Name", + "header-logo-title": "Go back to your boards page.", + "hide-system-messages": "Hide system messages", + "headerBarCreateBoardPopup-title": "Create Board", + "home": "Home", + "import": "Import", + "impersonate-user": "Impersonate user", + "link": "Link", + "import-board": "import board", + "import-board-c": "Import board", + "import-board-title-trello": "Import board from Trello", + "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", + "from-trello": "From Trello", + "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", + "import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", + "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", + "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", + "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", + "import-map-members": "Map members", + "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", + "import-members-map-note": "Note: Unmapped members will be assigned to the current user.", + "import-show-user-mapping": "Review members mapping", + "import-user-select": "Pick your existing user you want to use as this member", + "importMapMembersAddPopup-title": "Select member", + "info": "Version", + "initials": "Initials", + "invalid-date": "Invalid date", + "invalid-time": "Invalid time", + "invalid-user": "Invalid user", + "joined": "joined", + "just-invited": "You are just invited to this board", + "keyboard-shortcuts": "Keyboard shortcuts", + "label-create": "Create Label", + "label-default": "%s label (default)", + "label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.", + "labels": "Labels", + "language": "Language", + "last-admin-desc": "You can’t change roles because there must be at least one admin.", + "leave-board": "Leave Board", + "leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.", + "leaveBoardPopup-title": "Leave Board ?", + "link-card": "Link to this card", + "list-archive-cards": "Move all cards in this list to Archive", + "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.", + "list-move-cards": "Move all cards in this list", + "list-select-cards": "Select all cards in this list", + "set-color-list": "Set Color", + "listActionPopup-title": "List Actions", + "settingsUserPopup-title": "User Settings", + "settingsTeamPopup-title": "Team Settings", + "settingsOrgPopup-title": "Organization Settings", + "swimlaneActionPopup-title": "Swimlane Actions", + "swimlaneAddPopup-title": "Add a Swimlane below", + "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", + "listMorePopup-title": "More", + "link-list": "Link to this list", + "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.", + "list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.", + "lists": "Lists", + "swimlanes": "Swimlanes", + "log-out": "Log Out", + "log-in": "Log In", + "loginPopup-title": "Log In", + "memberMenuPopup-title": "Member Settings", + "members": "Members", + "menu": "Menu", + "move-selection": "Move selection", + "moveCardPopup-title": "Move Card", + "moveCardToBottom-title": "Move to Bottom", + "moveCardToTop-title": "Move to Top", + "moveSelectionPopup-title": "Move selection", + "multi-selection": "Multi-Selection", + "multi-selection-label": "Set label for selection", + "multi-selection-member": "Set member for selection", + "multi-selection-on": "Multi-Selection is on", + "muted": "Muted", + "muted-info": "You will never be notified of any changes in this board", + "my-boards": "My Boards", + "name": "Name", + "no-archived-cards": "No cards in Archive.", + "no-archived-lists": "No lists in Archive.", + "no-archived-swimlanes": "No swimlanes in Archive.", + "no-results": "No results", + "normal": "Normal", + "normal-desc": "Can view and edit cards. Can't change settings.", + "not-accepted-yet": "Invitation not accepted yet", + "notify-participate": "Receive updates to any cards you participate as creater or member", + "notify-watch": "Receive updates to any boards, lists, or cards you’re watching", + "optional": "optional", + "or": "or", + "page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.", + "page-not-found": "Page not found.", + "password": "Password", + "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)", + "participating": "Participating", + "preview": "Preview", + "previewAttachedImagePopup-title": "Preview", + "previewClipboardImagePopup-title": "Preview", + "private": "Private", + "private-desc": "This board is private. Only people added to the board can view and edit it.", + "profile": "Profile", + "public": "Public", + "public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.", + "quick-access-description": "Star a board to add a shortcut in this bar.", + "remove-cover": "Remove Cover", + "remove-from-board": "Remove from Board", + "remove-label": "Remove Label", + "listDeletePopup-title": "Delete List ?", + "remove-member": "Remove Member", + "remove-member-from-card": "Remove from Card", + "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.", + "removeMemberPopup-title": "Remove Member?", + "rename": "Rename", + "rename-board": "Rename Board", + "restore": "Restore", + "save": "Save", + "search": "Search", + "rules": "Rules", + "search-cards": "Search from card/list titles, descriptions and custom fields on this board", + "search-example": "Write text you search and press Enter", + "select-color": "Select Color", + "select-board": "Select Board", + "set-wip-limit-value": "Set a limit for the maximum number of tasks in this list", + "setWipLimitPopup-title": "Set WIP Limit", + "shortcut-assign-self": "Assign yourself to current card", + "shortcut-autocomplete-emoji": "Autocomplete emoji", + "shortcut-autocomplete-members": "Autocomplete members", + "shortcut-clear-filters": "Clear all filters", + "shortcut-close-dialog": "Close Dialog", + "shortcut-filter-my-cards": "Filter my cards", + "shortcut-show-shortcuts": "Bring up this shortcuts list", + "shortcut-toggle-filterbar": "Toggle Filter Sidebar", + "shortcut-toggle-searchbar": "Toggle Search Sidebar", + "shortcut-toggle-sidebar": "Toggle Board Sidebar", + "show-cards-minimum-count": "Show cards count if list contains more than", + "sidebar-open": "Open Sidebar", + "sidebar-close": "Close Sidebar", + "signupPopup-title": "Create an Account", + "star-board-title": "Click to star this board. It will show up at top of your boards list.", + "starred-boards": "Starred Boards", + "starred-boards-description": "Starred boards show up at the top of your boards list.", + "subscribe": "Subscribe", + "team": "Team", + "this-board": "this board", + "this-card": "this card", + "spent-time-hours": "Spent time (hours)", + "overtime-hours": "Overtime (hours)", + "overtime": "Overtime", + "has-overtime-cards": "Has overtime cards", + "has-spenttime-cards": "Has spent time cards", + "time": "Time", + "title": "Title", + "toggle-labels": "Toggle labels 1-9 for card. Multi-Selection adds labels 1-9", + "remove-labels-multiselect": "Multi-Selection removes labels 1-9", + "tracking": "Tracking", + "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.", + "type": "Type", + "unassign-member": "Unassign member", + "unsaved-description": "You have an unsaved description.", + "unwatch": "Unwatch", + "upload": "Upload", + "upload-avatar": "Upload an avatar", + "uploaded-avatar": "Uploaded an avatar", + "custom-top-left-corner-logo-image-url": "Custom Top Left Corner Logo Image URL", + "custom-top-left-corner-logo-link-url": "Custom Top Left Corner Logo Link URL", + "custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27", + "custom-login-logo-image-url": "Custom Login Logo Image URL", + "custom-login-logo-link-url": "Custom Login Logo Link URL", + "text-below-custom-login-logo": "Text below Custom Login Logo", + "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line", + "username": "Username", + "import-usernames": "Import Usernames", + "view-it": "View it", + "warn-list-archived": "warning: this card is in an list at Archive", + "watch": "Watch", + "watching": "Watching", + "watching-info": "You will be notified of any change in this board", + "welcome-board": "Welcome Board", + "welcome-swimlane": "Milestone 1", + "welcome-list1": "Basics", + "welcome-list2": "Advanced", + "card-templates-swimlane": "Card Templates", + "list-templates-swimlane": "List Templates", + "board-templates-swimlane": "Board Templates", + "what-to-do": "What do you want to do?", + "wipLimitErrorPopup-title": "Invalid WIP Limit", + "wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.", + "wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.", + "admin-panel": "Admin Panel", + "settings": "Settings", + "people": "People", + "registration": "Registration", + "disable-self-registration": "Disable Self-Registration", + "disable-forgot-password": "Disable Forgot Password", + "invite": "Invite", + "invite-people": "Invite People", + "to-boards": "To board(s)", + "email-addresses": "Email Addresses", + "smtp-host-description": "The address of the SMTP server that handles your emails.", + "smtp-port-description": "The port your SMTP server uses for outgoing emails.", + "smtp-tls-description": "Enable TLS support for SMTP server", + "smtp-host": "SMTP Host", + "smtp-port": "SMTP Port", + "smtp-username": "Username", + "smtp-password": "Password", + "smtp-tls": "TLS support", + "send-from": "From", + "send-smtp-test": "Send a test email to yourself", + "invitation-code": "Invitation Code", + "email-invite-register-subject": "__inviter__ sent you an invitation", + "email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.", + "email-smtp-test-subject": "SMTP Test Email", + "email-smtp-test-text": "You have successfully sent an email", + "error-invitation-code-not-exist": "Invitation code doesn't exist", + "error-notAuthorized": "You are not authorized to view this page.", + "webhook-title": "Webhook Name", + "webhook-token": "Token (Optional for Authentication)", + "outgoing-webhooks": "Outgoing Webhooks", + "bidirectional-webhooks": "Two-Way Webhooks", + "outgoingWebhooksPopup-title": "Outgoing Webhooks", + "boardCardTitlePopup-title": "Card Title Filter", + "disable-webhook": "Disable This Webhook", + "global-webhook": "Global Webhooks", + "new-outgoing-webhook": "New Outgoing Webhook", + "no-name": "(Unknown)", + "Node_version": "Node version", + "Meteor_version": "Meteor version", + "MongoDB_version": "MongoDB version", + "MongoDB_storage_engine": "MongoDB storage engine", + "MongoDB_Oplog_enabled": "MongoDB Oplog enabled", + "OS_Arch": "OS Arch", + "OS_Cpus": "OS CPU Count", + "OS_Freemem": "OS Free Memory", + "OS_Loadavg": "OS Load Average", + "OS_Platform": "OS Platform", + "OS_Release": "OS Release", + "OS_Totalmem": "OS Total Memory", + "OS_Type": "OS Type", + "OS_Uptime": "OS Uptime", + "days": "days", + "hours": "hours", + "minutes": "minutes", + "seconds": "seconds", + "show-field-on-card": "Show this field on card", + "automatically-field-on-card": "Add field to new cards", + "always-field-on-card": "Add field to all cards", + "showLabel-field-on-card": "Show field label on minicard", + "showSum-field-on-list": "Show sum of fields at top of list", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change", + "accounts-allowUserNameChange": "Allow Username Change", + "tableVisibilityMode-allowPrivateOnly": "Boards visibility: Allow private boards only", + "tableVisibilityMode" : "Boards visibility", + "createdAt": "Created at", + "modifiedAt": "Modified at", + "verified": "Verified", + "active": "Active", + "card-received": "Received", + "card-received-on": "Received on", + "card-end": "End", + "card-end-on": "Ends on", + "editCardReceivedDatePopup-title": "Change received date", + "editCardEndDatePopup-title": "Change end date", + "setCardColorPopup-title": "Set color", + "setCardActionsColorPopup-title": "Choose a color", + "setSwimlaneColorPopup-title": "Choose a color", + "setListColorPopup-title": "Choose a color", + "assigned-by": "Assigned By", + "requested-by": "Requested By", + "card-sorting-by-number": "Card sorting by number", + "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.", + "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.", + "boardDeletePopup-title": "Delete Board?", + "delete-board": "Delete Board", + "default-subtasks-board": "Subtasks for __board__ board", + "default": "Default", + "queue": "Queue", + "subtask-settings": "Subtasks Settings", + "card-settings": "Card Settings", + "minicard-settings": "Minicard Settings", + "boardSubtaskSettingsPopup-title": "Board Subtasks Settings", + "boardCardSettingsPopup-title": "Card Settings", + "boardMinicardSettingsPopup-title": "Minicard Settings", + "deposit-subtasks-board": "Deposit subtasks to this board:", + "deposit-subtasks-list": "Landing list for subtasks deposited here:", + "show-parent-in-minicard": "Show parent in minicard:", + "description-on-minicard": "Description on minicard", + "prefix-with-full-path": "Prefix with full path", + "prefix-with-parent": "Prefix with parent", + "subtext-with-full-path": "Subtext with full path", + "subtext-with-parent": "Subtext with parent", + "change-card-parent": "Change card's parent", + "parent-card": "Parent card", + "source-board": "Source board", + "no-parent": "Don't show parent", + "activity-added-label": "added label '%s' to %s", + "activity-removed-label": "removed label '%s' from %s", + "activity-delete-attach": "deleted an attachment from %s", + "activity-added-label-card": "added label '%s'", + "activity-removed-label-card": "removed label '%s'", + "activity-delete-attach-card": "deleted an attachment", + "activity-set-customfield": "set custom field '%s' to '%s' in %s", + "activity-unset-customfield": "unset custom field '%s' in %s", + "r-rule": "Rule", + "r-add-trigger": "Add trigger", + "r-add-action": "Add action", + "r-board-rules": "Board rules", + "r-add-rule": "Add rule", + "r-view-rule": "View rule", + "r-delete-rule": "Delete rule", + "r-new-rule-name": "New rule title", + "r-no-rules": "No rules", + "r-trigger": "Trigger", + "r-action": "Action", + "r-when-a-card": "When a card", + "r-is": "is", + "r-is-moved": "is moved", + "r-added-to": "Added to", + "r-removed-from": "Removed from", + "r-the-board": "the board", + "r-list": "list", + "list": "list", + "set-filter": "Set Filter", + "r-moved-to": "Moved to", + "r-moved-from": "Moved from", + "r-archived": "Moved to Archive", + "r-unarchived": "Restored from Archive", + "r-a-card": "a card", + "r-when-a-label-is": "When a label is", + "r-when-the-label": "When the label", + "r-list-name": "list name", + "r-when-a-member": "When a member is", + "r-when-the-member": "When the member", + "r-name": "name", + "r-when-a-attach": "When an attachment", + "r-when-a-checklist": "When a checklist is", + "r-when-the-checklist": "When the checklist", + "r-completed": "Completed", + "r-made-incomplete": "Made incomplete", + "r-when-a-item": "When a checklist item is", + "r-when-the-item": "When the checklist item", + "r-checked": "Checked", + "r-unchecked": "Unchecked", + "r-move-card-to": "Move card to", + "r-top-of": "Top of", + "r-bottom-of": "Bottom of", + "r-its-list": "its list", + "r-archive": "Move to Archive", + "r-unarchive": "Restore from Archive", + "r-card": "card", + "r-add": "Add", + "r-remove": "Remove", + "r-label": "label", + "r-member": "member", + "r-remove-all": "Remove all members from the card", + "r-set-color": "Set color to", + "r-checklist": "checklist", + "r-check-all": "Check all", + "r-uncheck-all": "Uncheck all", + "r-items-check": "items of checklist", + "r-check": "Check", + "r-uncheck": "Uncheck", + "r-item": "item", + "r-of-checklist": "of checklist", + "r-send-email": "Send an email", + "r-to": "to", + "r-of": "of", + "r-subject": "subject", + "r-rule-details": "Rule details", + "r-d-move-to-top-gen": "Move card to top of its list", + "r-d-move-to-top-spec": "Move card to top of list", + "r-d-move-to-bottom-gen": "Move card to bottom of its list", + "r-d-move-to-bottom-spec": "Move card to bottom of list", + "r-d-send-email": "Send email", + "r-d-send-email-to": "to", + "r-d-send-email-subject": "subject", + "r-d-send-email-message": "message", + "r-d-archive": "Move card to Archive", + "r-d-unarchive": "Restore card from Archive", + "r-d-add-label": "Add label", + "r-d-remove-label": "Remove label", + "r-create-card": "Create new card", + "r-in-list": "in list", + "r-in-swimlane": "in swimlane", + "r-d-add-member": "Add member", + "r-d-remove-member": "Remove member", + "r-d-remove-all-member": "Remove all member", + "r-d-check-all": "Check all items of a list", + "r-d-uncheck-all": "Uncheck all items of a list", + "r-d-check-one": "Check item", + "r-d-uncheck-one": "Uncheck item", + "r-d-check-of-list": "of checklist", + "r-d-add-checklist": "Add checklist", + "r-d-remove-checklist": "Remove checklist", + "r-by": "by", + "r-add-checklist": "Add checklist", + "r-with-items": "with items", + "r-items-list": "item1,item2,item3", + "r-add-swimlane": "Add swimlane", + "r-swimlane-name": "swimlane name", + "r-board-note": "Note: leave a field empty to match every possible value. ", + "r-checklist-note": "Note: checklist's items have to be written as comma separated values.", + "r-when-a-card-is-moved": "When a card is moved to another list", + "r-set": "Set", + "r-update": "Update", + "r-datefield": "date field", + "r-df-start-at": "start", + "r-df-due-at": "due", + "r-df-end-at": "end", + "r-df-received-at": "received", + "r-to-current-datetime": "to current date/time", + "r-remove-value-from": "Remove value from", + "ldap": "LDAP", + "oauth2": "OAuth2", + "cas": "CAS", + "authentication-method": "Authentication method", + "authentication-type": "Authentication type", + "custom-product-name": "Custom Product Name", + "layout": "Layout", + "hide-logo": "Hide Logo", + "add-custom-html-after-body-start": "Add Custom HTML after <body> start", + "add-custom-html-before-body-end": "Add Custom HTML before </body> end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login", + "display-authentication-method": "Display Authentication Method", + "oidc-button-text": "Customize the OIDC button text", + "default-authentication-method": "Default Authentication Method", + "duplicate-board": "Duplicate Board", + "org-number": "The number of organizations is: ", + "team-number": "The number of teams is: ", + "people-number": "The number of people is: ", + "swimlaneDeletePopup-title": "Delete Swimlane ?", + "swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.", + "restore-all": "Restore all", + "delete-all": "Delete all", + "loading": "Loading, please wait.", + "previous_as": "last time was", + "act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__", + "act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)", + "act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)", + "act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)", + "a-dueAt": "modified due time to be", + "a-endAt": "modified ending time to be", + "a-startAt": "modified starting time to be", + "a-receivedAt": "modified received time to be", + "almostdue": "current due time %s is approaching", + "pastdue": "current due time %s is past", + "duenow": "current due time %s is today", + "act-newDue": "__list__/__card__ has 1st due reminder [__board__]", + "act-withDue": "__list__/__card__ due reminders [__board__]", + "act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching", + "act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past", + "act-duenow": "was reminding the current due (__timeValue__) of __card__ is now", + "act-atUserComment": "You were mentioned in [__board__] __list__/__card__", + "delete-user-confirm-popup": "Are you sure you want to delete this account? There is no undo.", + "delete-team-confirm-popup": "Are you sure you want to delete this team? There is no undo.", + "delete-org-confirm-popup": "Are you sure you want to delete this organization? There is no undo.", + "accounts-allowUserDelete": "Allow users to self delete their account", + "hide-minicard-label-text": "Hide minicard label text", + "show-desktop-drag-handles": "Show desktop drag handles", + "assignee": "Assignee", + "cardAssigneesPopup-title": "Assignee", + "addmore-detail": "Add a more detailed description", + "show-on-card": "Show on Card", + "show-on-minicard": "Show on Minicard", + "new": "New", + "editOrgPopup-title": "Edit Organization", + "newOrgPopup-title": "New Organization", + "editTeamPopup-title": "Edit Team", + "newTeamPopup-title": "New Team", + "editUserPopup-title": "Edit User", + "newUserPopup-title": "New User", + "notifications": "Notifications", + "view-all": "View All", + "filter-by-unread": "Filter by Unread", + "mark-all-as-read": "Mark all as read", + "remove-all-read": "Remove all read", + "allow-rename": "Allow Rename", + "allowRenamePopup-title": "Allow Rename", + "start-day-of-week": "Set day of the week start", + "monday": "Monday", + "tuesday": "Tuesday", + "wednesday": "Wednesday", + "thursday": "Thursday", + "friday": "Friday", + "saturday": "Saturday", + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived", + "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items", + "task": "Task", + "create-task": "Create Task", + "ok": "OK", + "organizations": "Organizations", + "teams": "Teams", + "displayName": "Display Name", + "shortName": "Short Name", + "website": "Website", + "person": "Person", + "my-cards": "My Cards", + "card": "Card", + "list": "List", + "board": "Board", + "context-separator": "/", + "myCardsViewChange-title": "My Cards View", + "myCardsViewChangePopup-title": "My Cards View", + "myCardsViewChange-choice-boards": "Boards", + "myCardsViewChange-choice-table": "Table", + "myCardsSortChange-title": "My Cards Sort", + "myCardsSortChangePopup-title": "My Cards Sort", + "myCardsSortChange-choice-board": "By Board", + "myCardsSortChange-choice-dueat": "By Due Date", + "dueCards-title": "Due Cards", + "dueCardsViewChange-title": "Due Cards View", + "dueCardsViewChangePopup-title": "Due Cards View", + "dueCardsViewChange-choice-me": "Me", + "dueCardsViewChange-choice-all": "All Users", + "dueCardsViewChange-choice-all-description": "Shows all incomplete cards with a *Due* date from boards for which the user has permission.", + "broken-cards": "Broken Cards", + "board-title-not-found": "Board '%s' not found.", + "swimlane-title-not-found": "Swimlane '%s' not found.", + "list-title-not-found": "List '%s' not found.", + "label-not-found": "Label '%s' not found.", + "label-color-not-found": "Label color %s not found.", + "user-username-not-found": "Username '%s' not found.", + "comment-not-found": "Card with comment containing text '%s' not found.", + "org-name-not-found": "Organization '%s' not found.", + "team-name-not-found": "Team '%s' not found.", + "globalSearch-title": "Search All Boards", + "no-cards-found": "No Cards Found", + "one-card-found": "One Card Found", + "n-cards-found": "%s Cards Found", + "n-n-of-n-cards-found": "__start__-__end__ of __total__ Cards Found", + "operator-board": "board", + "operator-board-abbrev": "b", + "operator-swimlane": "swimlane", + "operator-swimlane-abbrev": "s", + "operator-list": "list", + "operator-list-abbrev": "l", + "operator-label": "label", + "operator-label-abbrev": "#", + "operator-user": "user", + "operator-user-abbrev": "@", + "operator-member": "member", + "operator-member-abbrev": "m", + "operator-assignee": "assignee", + "operator-assignee-abbrev": "a", + "operator-creator": "creator", + "operator-status": "status", + "operator-due": "due", + "operator-created": "created", + "operator-modified": "modified", + "operator-sort": "sort", + "operator-comment": "comment", + "operator-has": "has", + "operator-limit": "limit", + "operator-debug": "debug", + "operator-org": "org", + "operator-team": "team", + "predicate-archived": "archived", + "predicate-open": "open", + "predicate-ended": "ended", + "predicate-all": "all", + "predicate-overdue": "overdue", + "predicate-week": "week", + "predicate-month": "month", + "predicate-quarter": "quarter", + "predicate-year": "year", + "predicate-due": "due", + "predicate-modified": "modified", + "predicate-created": "created", + "predicate-attachment": "attachment", + "predicate-description": "description", + "predicate-checklist": "checklist", + "predicate-start": "start", + "predicate-end": "end", + "predicate-assignee": "assignee", + "predicate-member": "member", + "predicate-public": "public", + "predicate-private": "private", + "predicate-selector": "selector", + "predicate-projection": "projection", + "operator-unknown-error": "%s is not an operator", + "operator-number-expected": "operator __operator__ expected a number, got '__value__'", + "operator-sort-invalid": "sort of '%s' is invalid", + "operator-status-invalid": "'%s' is not a valid status", + "operator-has-invalid": "%s is not a valid existence check", + "operator-limit-invalid": "%s is not a valid limit. Limit should be a positive integer.", + "operator-debug-invalid": "%s is not a valid debug predicate", + "next-page": "Next Page", + "previous-page": "Previous Page", + "heading-notes": "Notes", + "globalSearch-instructions-heading": "Search Instructions", + "globalSearch-instructions-description": "Searches can include operators to refine the search. Operators are specified by writing the operator name and value separated by a colon. For example, an operator specification of `list:Blocked` would limit the search to cards that are contained in a list named *Blocked*. If the value contains spaces or special characters it must be enclosed in quotation marks (e.g. `__operator_list__:\"To Review\"`).", + "globalSearch-instructions-operators": "Available operators:", + "globalSearch-instructions-operator-board": "`__operator_board__:<title>` - cards in boards matching the specified *<title>*", + "globalSearch-instructions-operator-list": "`__operator_list__:<title>` - cards in lists matching the specified *<title>*", + "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - cards in swimlanes matching the specified *<title>*", + "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - cards with a comment containing *<text>*.", + "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - cards that have a label matching *<color>* or *<name>", + "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name|color>` - shorthand for `__operator_label__:<color>` or `__operator_label__:<name>`", + "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - cards where *<username>* is a *member* or *assignee*", + "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - shorthand for `user:<username>`", + "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - cards where *<username>* is a *member*", + "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - cards where *<username>* is an *assignee*", + "globalSearch-instructions-operator-creator": "`__operator_creator__:<username>` - cards where *<username>* is the card's creator", + "globalSearch-instructions-operator-org": "`__operator_org__:<display name|short name>` - cards belonging to a board assigned to organization *<name>*", + "globalSearch-instructions-operator-team": "`__operator_team__:<display name|short name>` - cards belonging to a board assigned to team *<name>*", + "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - cards which are due up to *<n>* days from now. `__operator_due__:__predicate_overdue__ lists all cards past their due date.", + "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - cards which were created *<n>* days ago or less", + "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - cards which were modified *<n>* days ago or less", + "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - where *<status>* is one of the following:", + "globalSearch-instructions-status-archived": "`__predicate_archived__` - archived cards", + "globalSearch-instructions-status-all": "`__predicate_all__` - all archived and unarchived cards", + "globalSearch-instructions-status-ended": "`__predicate_ended__` - cards with an end date", + "globalSearch-instructions-status-public": "`__predicate_public__` - cards only in public boards", + "globalSearch-instructions-status-private": "`__predicate_private__` - cards only in private boards", + "globalSearch-instructions-operator-has": "`__operator_has__:<field>` - where *<field>* is one of `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` or `__predicate_member__`. Placing a `-` in front of *<field>* searches for the absence of a value in that field (e.g. `has:-due` searches for cards without a due date).", + "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - where *<sort-name>* is one of `__predicate_due__`, `__predicate_created__` or `__predicate_modified__`. For a descending sort, place a `-` in front of the sort name.", + "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - where *<n>* is a positive integer expressing the number of cards to be displayed per page.", + "globalSearch-instructions-notes-1": "Multiple operators may be specified.", + "globalSearch-instructions-notes-2": "Similar operators are *OR*ed together. Cards that match any of the conditions will be returned.\n`__operator_list__:Available __operator_list__:Blocked` would return cards contained in any list named *Blocked* or *Available*.", + "globalSearch-instructions-notes-3": "Differing operators are *AND*ed together. Only cards that match all of the differing operators are returned. `__operator_list__:Available __operator_label__:red` returns only cards in the list *Available* with a *red* label.", + "globalSearch-instructions-notes-3-2": "Days can be specified as a positive or negative integer or using `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` or `__predicate_year__` for the current period.", + "globalSearch-instructions-notes-4": "Text searches are case insensitive.", + "globalSearch-instructions-notes-5": "By default archived cards are not searched.", + "link-to-search": "Link to this search", + "excel-font": "Arial", + "number": "Number", + "label-colors": "Label Colors", + "label-names": "Label Names", + "archived-at": "archived at", + "sort-cards": "Sort Cards", + "cardsSortPopup-title": "Sort Cards", + "due-date": "Due Date", + "server-error": "Server Error", + "server-error-troubleshooting": "Please submit the error generated by the server.\nFor a snap installation, run: `sudo snap logs wekan.wekan`\nFor a Docker installation, run: `sudo docker logs wekan-app`", + "title-alphabetically": "Title (Alphabetically)", + "created-at-newest-first": "Created At (Newest First)", + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden", + "move-swimlane": "Move Swimlane", + "moveSwimlanePopup-title": "Move Swimlane", + "custom-field-stringtemplate": "String Template", + "custom-field-stringtemplate-format": "Format (use %{value} as placeholder)", + "custom-field-stringtemplate-separator": "Separator (use or   for a space)", + "custom-field-stringtemplate-item-placeholder": "Press enter to add more items", + "creator": "Creator", + "filesReportTitle": "Files Report", + "reports": "Reports", + "rulesReportTitle": "Rules Report", + "boardsReportTitle": "Boards Report", + "cardsReportTitle": "Cards Report", + "copy-swimlane": "Copy Swimlane", + "copySwimlanePopup-title": "Copy Swimlane", + "display-card-creator": "Display Card Creator", + "wait-spinner": "Wait Spinner", + "Bounce": "Bounce Wait Spinner", + "Cube": "Cube Wait Spinner", + "Cube-Grid": "Cube-Grid Wait Spinner", + "Dot": "Dot Wait Spinner", + "Double-Bounce": "Double Bounce Wait Spinner", + "Rotateplane": "Rotateplane Wait Spinner", + "Scaleout": "Scaleout Wait Spinner", + "Wave": "Wave Wait Spinner", + "maximize-card": "Maximize Card", + "minimize-card": "Minimize Card", + "delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it", + "delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it", + "subject": "Subject", + "details": "Details", + "carbon-copy": "Carbon Copy (Cc:)", + "ticket": "Ticket", + "tickets": "Tickets", + "ticket-number": "Ticket Number", + "open": "Open", + "pending": "Pending", + "closed": "Closed", + "resolved": "Resolved", + "cancelled": "Cancelled", + "history": "History", + "request": "Request", + "requests": "Requests", + "help-request": "Help Request", + "editCardSortOrderPopup-title": "Change Sorting", + "cardDetailsPopup-title": "Card Details", + "add-teams": "Add teams", + "add-teams-label": "Added teams are displayed below:", + "remove-team-from-table": "Are you sure you want to remove this team from the board ?", + "confirm-btn": "Confirm", + "remove-btn": "Remove", + "filter-card-title-label": "Filter by card title", + "invite-people-success": "Invitation to register sent with success", + "invite-people-error": "Error while sending invitation to register", + "can-invite-if-same-mailDomainName": "Email domain name", + "to-create-teams-contact-admin": "To create teams, please contact the administrator.", + "Node_heap_total_heap_size": "Node heap: total heap size", + "Node_heap_total_heap_size_executable": "Node heap: total heap size executable", + "Node_heap_total_physical_size": "Node heap: total physical size", + "Node_heap_total_available_size": "Node heap: total available size", + "Node_heap_used_heap_size": "Node heap: used heap size", + "Node_heap_heap_size_limit": "Node heap: heap size limit", + "Node_heap_malloced_memory": "Node heap: malloced memory", + "Node_heap_peak_malloced_memory": "Node heap: peak malloced memory", + "Node_heap_does_zap_garbage": "Node heap: does zap garbage", + "Node_heap_number_of_native_contexts": "Node heap: number of native contexts", + "Node_heap_number_of_detached_contexts": "Node heap: number of detached contexts", + "Node_memory_usage_rss": "Node memory usage: resident set size", + "Node_memory_usage_heap_total": "Node memory usage: total size of the allocated heap", + "Node_memory_usage_heap_used": "Node memory usage: actual memory used", + "Node_memory_usage_external": "Node memory usage: external", + "add-organizations": "Add organizations", + "add-organizations-label": "Added organizations are displayed below:", + "remove-organization-from-board": "Are you sure you want to remove this organization from this board ?", + "to-create-organizations-contact-admin": "To create organizations, please contact administrator.", + "custom-legal-notice-link-url": "Custom legal notice page URL", + "acceptance_of_our_legalNotice": "By continuing, you accept our", + "legalNotice": "legal notice", + "copied": "Copied!", + "checklistActionsPopup-title": "Checklist Actions", + "moveChecklist": "Move Checklist", + "moveChecklistPopup-title": "Move Checklist", + "newlineBecomesNewChecklistItem": "Newline becomes new checklist item", + "copyChecklist": "Copy Checklist", + "copyChecklistPopup-title": "Copy Checklist", + "card-show-lists": "Card Show Lists", + "subtaskActionsPopup-title": "Subtask Actions", + "attachmentActionsPopup-title": "Attachment Actions", + "attachment-move-storage-fs": "Move attachment to filesystem", + "attachment-move-storage-gridfs": "Move attachment to GridFS", + "attachment-move": "Move Attachment", + "move-all-attachments-to-fs": "Move all attachments to filesystem", + "move-all-attachments-to-gridfs": "Move all attachments to GridFS", + "move-all-attachments-of-board-to-fs": "Move all attachments of board to filesystem", + "move-all-attachments-of-board-to-gridfs": "Move all attachments of board to GridFS", + "path": "Path", + "version-name": "Version-Name", + "size": "Size", + "storage": "Storage", + "action": "Action", + "board-title": "Board Title" +} diff --git a/package-lock.json b/package-lock.json index 29994390f..844c8686a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -691,9 +691,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001332", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", - "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==" + "version": "1.0.30001334", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001334.tgz", + "integrity": "sha512-kbaCEBRRVSoeNs74sCuq92MJyGrMtjWVfhltoHUCW4t4pXFvGjUBrfo47weBRViHkiV3eBYyIsfl956NtHGazw==" }, "chai": { "version": "4.3.6", diff --git a/rebuild-wekan.sh b/rebuild-wekan.sh index c61a556ad..2373dc09c 100755 --- a/rebuild-wekan.sh +++ b/rebuild-wekan.sh @@ -6,6 +6,10 @@ echo "Note: If you use other locale than en_US.UTF-8 , you need to additionally echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correctly." echo " You can still use any other locale as your main locale." +export $(cat .env) + +export OAUTH2_REQUEST_PERMISSIONS="openid profile email wekan_scope" + #Below script installs newest node 8.x for Debian/Ubuntu/Mint. function pause(){ @@ -111,6 +115,7 @@ do "Run Meteor for dev on http://localhost:4000") WRITABLE_PATH=.. NODE_OPTIONS="--max_old_space_size=4096" WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://localhost:4000 meteor run --exclude-archs web.browser.legacy,web.cordova --port 4000 + break ;; From b00169d24f4033b2a4d532c521010135ae958e88 Mon Sep 17 00:00:00 2001 From: viehlieb <pf@pragma-shift.net> Date: Mon, 11 Jul 2022 16:15:40 +0200 Subject: [PATCH 2/6] wipon card description - prevention of unintentional exit deletesunsaved description --- client/components/cards/cardDescription.js | 2 -- client/components/cards/cardDetails.js | 14 ++++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/client/components/cards/cardDescription.js b/client/components/cards/cardDescription.js index cfc366684..34b4a2836 100644 --- a/client/components/cards/cardDescription.js +++ b/client/components/cards/cardDescription.js @@ -26,8 +26,6 @@ BlazeComponent.extendComponent({ // was keydown // extraevent for saving input. buffer of keydown vs buffer time 'keyup form textarea'(evt) { - const description = this.getInput()[0].value; - this.data().setDescription(description); if (evt.keyCode === 13 && (evt.metaKey || evt.ctrlKey)) { const submitButton = this.find('button[type=submit]'); if (submitButton) { diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 322e23a27..dca15c1f5 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -1714,10 +1714,20 @@ BlazeComponent.extendComponent({ EscapeActions.register( 'detailsPane', () => { + currentDescription = document.getElementsByClassName("editor js-new-description-input").item(0) //save description editing on EscapeAction - if (document.getElementsByClassName("editor js-new-description-input").item(0)) + if (currentDescription?.value && !(currentDescription.value === Utils.getCurrentCard().getDescription())) { - Utils.getCurrentCard().setDescription(document.getElementsByClassName("editor js-new-description-input").item(0).value); + console.log("equal?",!(currentDescription === Utils.getCurrentCard().getDescription())); + if (confirm('Are you sure you want to save this thing into the database?')) { + Utils.getCurrentCard().setDescription(document.getElementsByClassName("editor js-new-description-input").item(0).value); + // Save it! + console.log(document.getElementsByClassName("editor js-new-description-input").item(0).value); + console.log("current description",Utils.getCurrentCard().getDescription()); + } else { + // Do nothing! + console.log('Thing was not saved to the database.'); + } } if (Session.get('cardDetailsIsDragging')) { // Reset dragging status as the mouse landed outside the cardDetails template area and this will prevent a mousedown event from firing From b3056626f3af2896c2838748181727325609800d Mon Sep 17 00:00:00 2001 From: viehlieb <pf@pragma-shift.net> Date: Mon, 18 Jul 2022 15:05:22 +0200 Subject: [PATCH 3/6] add option to get asked whether unsaved card descriptions should be saved to db on e.g. unintentional click out of card details pane --- client/components/cards/cardDetails.js | 27 ++++++++++++++----------- client/components/users/userHeader.jade | 7 +++++++ client/components/users/userHeader.js | 13 ++++++++++++ imports/i18n/data/de.i18n.json | 5 ++++- imports/i18n/data/en.i18n.json | 3 +++ models/users.js | 23 +++++++++++++++++++++ package-lock.json | 6 ------ 7 files changed, 65 insertions(+), 19 deletions(-) diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index dca15c1f5..a84c843c2 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -1714,19 +1714,22 @@ BlazeComponent.extendComponent({ EscapeActions.register( 'detailsPane', () => { - currentDescription = document.getElementsByClassName("editor js-new-description-input").item(0) - //save description editing on EscapeAction - if (currentDescription?.value && !(currentDescription.value === Utils.getCurrentCard().getDescription())) + // if card description diverges from database due to editing + // ask user whether changes should be applied + if(currentUser.profile.rescueCardDescription== true) { - console.log("equal?",!(currentDescription === Utils.getCurrentCard().getDescription())); - if (confirm('Are you sure you want to save this thing into the database?')) { - Utils.getCurrentCard().setDescription(document.getElementsByClassName("editor js-new-description-input").item(0).value); - // Save it! - console.log(document.getElementsByClassName("editor js-new-description-input").item(0).value); - console.log("current description",Utils.getCurrentCard().getDescription()); - } else { - // Do nothing! - console.log('Thing was not saved to the database.'); + currentDescription = document.getElementsByClassName("editor js-new-description-input").item(0) + if (currentDescription?.value && !(currentDescription.value === Utils.getCurrentCard().getDescription())) + { + if (confirm(TAPi18n.__('rescue-card-description-dialogue'))) { + Utils.getCurrentCard().setDescription(document.getElementsByClassName("editor js-new-description-input").item(0).value); + // Save it! + console.log(document.getElementsByClassName("editor js-new-description-input").item(0).value); + console.log("current description",Utils.getCurrentCard().getDescription()); + } else { + // Do nothing! + console.log('Description changes were not saved to the database.'); + } } } if (Session.get('cardDetailsIsDragging')) { diff --git a/client/components/users/userHeader.jade b/client/components/users/userHeader.jade index 4d7bd89a5..4dd68441e 100644 --- a/client/components/users/userHeader.jade +++ b/client/components/users/userHeader.jade @@ -180,6 +180,13 @@ template(name="changeSettingsPopup") option(selected="true", value="#{day.value}") #{day.name} else option(value="#{day.value}") #{day.name} + label.bold.clear + {{_ 'card-settings'}} + ul#cards.card-description-rescued + a.flex.js-rescue-card-description(title="{{_ 'rescue-card-description'}}") + b   + #rescue-card-description.materialCheckBox.left(class="{{#if rescueCardDescription}}is-checked{{/if}}", value=rescueCardDescription) + span {{_ 'rescue-card-description'}} input.js-apply-user-settings.left(type="submit" value="{{_ 'apply'}}") template(name="userDeletePopup") diff --git a/client/components/users/userHeader.js b/client/components/users/userHeader.js index b3745ac61..ad5bb89a0 100644 --- a/client/components/users/userHeader.js +++ b/client/components/users/userHeader.js @@ -297,6 +297,16 @@ Template.changeSettingsPopup.helpers({ return false; } }, + rescueCardDescription() { + currentUser = Meteor.user(); + if (currentUser) { + return (currentUser.profile || {}).rescueCardDescription; + } else if (window.localStorage.getItem('rescueCardDescription')) { + return true; + } else { + return false; + } + }, showCardsCountAt() { currentUser = Meteor.user(); if (currentUser) { @@ -356,6 +366,9 @@ Template.changeSettingsPopup.events({ window.localStorage.setItem('hasHiddenSystemMessages', 'true'); } }, + 'click .js-rescue-card-description'() { + Meteor.call('toggleRescueCardDescription') + }, 'click .js-apply-user-settings'(event, templateInstance) { event.preventDefault(); let minLimit = parseInt( diff --git a/imports/i18n/data/de.i18n.json b/imports/i18n/data/de.i18n.json index 58d435e19..e09019e99 100644 --- a/imports/i18n/data/de.i18n.json +++ b/imports/i18n/data/de.i18n.json @@ -541,6 +541,9 @@ "rename": "Umbenennen", "rename-board": "Board umbenennen", "restore": "Wiederherstellen", + "rescue-card-description": "Vor dem Schließen Dialog für ungespeicherte Änderungen von Kartenbeschreibungen anzeigen", + "rescue-card-description-dialogue": "Aktuelle Kartenbeschreibung mit ihren Änderungen überschreiben?", + "card-settings": "Karteneinstellungen", "save": "Speichern", "search": "Suchen", "rules": "Regeln", @@ -1178,4 +1181,4 @@ "action": "Aktion", "board-title": "Board-Titel", "attachmentRenamePopup-title": "Umbenennen" -} \ No newline at end of file +} diff --git a/imports/i18n/data/en.i18n.json b/imports/i18n/data/en.i18n.json index bedffe666..b48ae3dcb 100644 --- a/imports/i18n/data/en.i18n.json +++ b/imports/i18n/data/en.i18n.json @@ -541,6 +541,9 @@ "rename": "Rename", "rename-board": "Rename Board", "restore": "Restore", + "rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions", + "rescue-card-description-dialogue": "Overwrite current card description with your changes?", + "card-settings":"Card Settings", "save": "Save", "search": "Search", "rules": "Rules", diff --git a/models/users.js b/models/users.js index ac7faee48..b15c0ca61 100644 --- a/models/users.js +++ b/models/users.js @@ -337,6 +337,13 @@ Users.attachSchema( type: Date, optional: true, }, + 'profile.rescueCardDescription': { + /** + * show dialog for saving card description on unintentional card closing + */ + type: Boolean, + optional: true, + }, 'profile.showCardsCountAt': { /** * showCardCountAt field of the user @@ -794,6 +801,11 @@ Users.helpers({ return profile.hiddenMinicardLabelText || false; }, + hasRescuedCardDescription(){ + const profile = this.profile || {}; + return profile.rescueCardDescription || false; + }, + getEmailBuffer() { const { emailBuffer = [] } = this.profile || {}; return emailBuffer; @@ -1004,6 +1016,13 @@ Users.mutations({ }, }; }, + toggleRescueCardDescription(value = false) { + return { + $set: { + 'profile.rescueCardDescription': !value, + }, + }; + }, addNotification(activityId) { return { @@ -1103,6 +1122,10 @@ Meteor.methods({ const user = Meteor.user(); user.toggleLabelText(user.hasHiddenMinicardLabelText()); }, + toggleRescueCardDescription() { + const user = Meteor.user(); + user.toggleRescueCardDescription(user.hasRescuedCardDescription()); + }, changeLimitToShowCardsCount(limit) { check(limit, Number); Meteor.user().setShowCardsCountAt(limit); diff --git a/package-lock.json b/package-lock.json index 8b867d6fd..1f40263e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -742,15 +742,9 @@ "dev": true }, "caniuse-lite": { -<<<<<<< HEAD - "version": "1.0.30001334", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001334.tgz", - "integrity": "sha512-kbaCEBRRVSoeNs74sCuq92MJyGrMtjWVfhltoHUCW4t4pXFvGjUBrfo47weBRViHkiV3eBYyIsfl956NtHGazw==" -======= "version": "1.0.30001352", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001352.tgz", "integrity": "sha512-GUgH8w6YergqPQDGWhJGt8GDRnY0L/iJVQcU3eJ46GYf52R8tk0Wxp0PymuFVZboJYXGiCqwozAYZNRjVj6IcA==" ->>>>>>> ccea223ef745f0ce91d1ad98f12a6755ae8746a9 }, "chai": { "version": "4.3.6", From 1c4b54d1ad18ce3e60b516dd6828e9e66161d12e Mon Sep 17 00:00:00 2001 From: viehlieb <pf@pragma-shift.net> Date: Mon, 18 Jul 2022 15:11:19 +0200 Subject: [PATCH 4/6] revert tiny change on input event keydown <-> keyup --- client/components/cards/cardDescription.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/client/components/cards/cardDescription.js b/client/components/cards/cardDescription.js index 34b4a2836..c958c335e 100644 --- a/client/components/cards/cardDescription.js +++ b/client/components/cards/cardDescription.js @@ -23,9 +23,7 @@ BlazeComponent.extendComponent({ this.data().setDescription(description); }, // Pressing Ctrl+Enter should submit the form - // was keydown - // extraevent for saving input. buffer of keydown vs buffer time - 'keyup form textarea'(evt) { + 'keydown form textarea'(evt) { if (evt.keyCode === 13 && (evt.metaKey || evt.ctrlKey)) { const submitButton = this.find('button[type=submit]'); if (submitButton) { From b2fd576f36b403e290efd7d8ec5c9bf45abe8e28 Mon Sep 17 00:00:00 2001 From: viehlieb <pf@pragma-shift.net> Date: Mon, 18 Jul 2022 15:54:49 +0200 Subject: [PATCH 5/6] added space before text --- client/components/users/userHeader.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/components/users/userHeader.jade b/client/components/users/userHeader.jade index 4dd68441e..7b2414bf1 100644 --- a/client/components/users/userHeader.jade +++ b/client/components/users/userHeader.jade @@ -181,7 +181,7 @@ template(name="changeSettingsPopup") else option(value="#{day.value}") #{day.name} label.bold.clear - {{_ 'card-settings'}} + | {{_ 'card-settings'}} ul#cards.card-description-rescued a.flex.js-rescue-card-description(title="{{_ 'rescue-card-description'}}") b   From b2a555f996dbeae0236504c2fb2f780d7b8a7c98 Mon Sep 17 00:00:00 2001 From: viehlieb <pf@pragma-shift.net> Date: Mon, 18 Jul 2022 15:56:04 +0200 Subject: [PATCH 6/6] revert changeson rebuild-wekan.sh --- rebuild-wekan.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/rebuild-wekan.sh b/rebuild-wekan.sh index f8c9d6e2c..b2f1eea2e 100755 --- a/rebuild-wekan.sh +++ b/rebuild-wekan.sh @@ -6,10 +6,6 @@ echo "Note: If you use other locale than en_US.UTF-8 , you need to additionally echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correctly." echo " You can still use any other locale as your main locale." -export $(cat .env) - -export OAUTH2_REQUEST_PERMISSIONS="openid profile email wekan_scope" - #Below script installs newest node 8.x for Debian/Ubuntu/Mint. function pause(){