Merge branch 'edge' into meteor-1.8

This commit is contained in:
Lauri Ojansivu 2018-12-18 20:23:43 +02:00
commit 61c0292089
62 changed files with 696 additions and 401 deletions

View file

@ -1,3 +1,13 @@
# v1.94 2018-12-18 Wekan version
This release adds the following new features:
- Admin Panel / Layout / Custom HTML after `<body>` start, and Custom HTML before `</body>` end.
In progress, does not work yet. Thanks to xet7.
- Add Bitnami Stacksmith. In progress test version, that does work, but is not released yet. Thanks to j-fuentes.
Thanks to above GitHub users for their contributions.
# v1.93 2018-12-16 Wekan release
This release adds the following new features:
@ -5,7 +15,7 @@ This release adds the following new features:
- In translations, only show name "Wekan" in Admin Panel Wekan version.
Elsewhere use general descriptions for whitelabeling.
Thanks to GitHub user xet7 for contributions.
Thanks to GitHub user xet7 and translators for their contributions.
# v1.92 2018-12-16 Wekan release

9
Stackerfile.yml Normal file
View file

@ -0,0 +1,9 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v1.94.0"
files:
userUploads:
- README.md
userScripts:
build: stacksmith/user-scripts/build.sh
boot: stacksmith/user-scripts/boot.sh
run: stacksmith/user-scripts/run.sh

View file

@ -38,7 +38,9 @@ template(name="userFormsLayout")
template(name="defaultLayout")
+header
#content
| {{{afterBodyStart}}}
+Template.dynamic(template=content)
| {{{beforeBodyEnd}}}
if (Modal.isOpen)
#modal
.overlay

View file

@ -42,6 +42,15 @@ Template.userFormsLayout.helpers({
return Settings.findOne();
},
afterBodyStart() {
return currentSetting.customHTMLafterBodyStart;
},
beforeBodyEnd() {
return currentSetting.customHTMLbeforeBodyEnd;
},
languages() {
return _.map(TAPi18n.getLanguages(), (lang, code) => {
const tag = code;

View file

@ -145,5 +145,11 @@ template(name='layoutSettings')
.title {{_ 'custom-product-name'}}
.form-group
input.form-control#product-name(type="text", placeholder="Wekan" value="{{currentSetting.productName}}")
li.layout-form
.title {{_ 'add-custom-html-after-body-start'}}
textarea#customHTMLafterBodyStart.form-control= currentSetting.customHTMLafterBodyStart
li.layout-form
.title {{_ 'add-custom-html-before-body-end'}}
textarea#customHTMLbeforeBodyEnd.form-control= currentSetting.customHTMLbeforeBodyEnd
li
button.js-save-layout.primary {{_ 'save'}}

View file

@ -140,6 +140,8 @@ BlazeComponent.extendComponent({
const productName = $('#product-name').val().trim();
const hideLogoChange = ($('input[name=hideLogo]:checked').val() === 'true');
const customHTMLafterBodyStart = $('#customHTMLafterBodyStart').val().trim();
const customHTMLbeforeBodyEnd = $('#customHTMLbeforeBodyEnd').val().trim();
try {
@ -147,6 +149,8 @@ BlazeComponent.extendComponent({
$set: {
productName,
hideLogo: hideLogoChange,
customHTMLafterBodyStart,
customHTMLbeforeBodyEnd,
},
});
} catch (e) {

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Typ autentizace",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -1,6 +1,6 @@
{
"accept": "Akzeptieren",
"act-activity-notify": "Activity Notification",
"act-activity-notify": "Aktivitätsbenachrichtigung",
"act-addAttachment": "hat __attachment__ an __card__ angehängt",
"act-addSubtask": "hat die Teilaufgabe __checklist__ zu __card__ hinzugefügt",
"act-addChecklist": "hat die Checkliste __checklist__ zu __card__ hinzugefügt",
@ -78,7 +78,7 @@
"and-n-other-card": "und eine andere Karte",
"and-n-other-card_plural": "und __count__ andere Karten",
"apply": "Übernehmen",
"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-is-offline": "Wekan lädt gerade, bitte warten Sie. Wenn Sie die Seite neu laden, gehen nicht übertragene Änderungen verloren. Sollte Wekan nicht geladen werden, überprüfen Sie bitte, ob der Server noch läuft.",
"archive": "Ins Archiv verschieben",
"archive-all": "Alles ins Archiv verschieben",
"archive-board": "Board ins Archiv verschieben",
@ -283,20 +283,20 @@
"import-board": "Board importieren",
"import-board-c": "Board importieren",
"import-board-title-trello": "Board von Trello importieren",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-board-title-wekan": "Board aus vorherigem Export importieren",
"import-sandstorm-backup-warning": "Bitte keine Daten aus dem Original-Wekan oder Trello Board nach dem Import löschen, bitte prüfe vorher ob die alles funktioniert, andernfalls es kommt zum Fehler \"Board nicht gefunden\", dies meint Datenverlust.",
"import-sandstorm-warning": "Das importierte Board wird alle bereits existierenden Daten löschen und mit den importierten Daten überschreiben.",
"from-trello": "Von Trello",
"from-wekan": "From previous export",
"from-wekan": "Aus vorherigem Export",
"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-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-wekan": "Gehen Sie in Ihrem Wekan Board auf 'Menü', anschließend auf 'Board exportieren'. Kopieren Sie anschließend 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-map-members": "Mitglieder zuordnen",
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-members-map": "Das importierte Board hat Mitglieder. Bitte ordnen jene, die importiert werden sollen, vorhandenen Wekan-Nutzern zu",
"import-show-user-mapping": "Mitgliederzuordnung überprüfen",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"import-user-select": "Wählen Sie den Wekan-Nutzer aus, der dieses Mitglied sein soll",
"importMapMembersAddPopup-title": "Mitglied auswählen",
"info": "Version",
"initials": "Initialen",
"invalid-date": "Ungültiges Datum",
@ -460,8 +460,8 @@
"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": "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-invite-register-text": "Hallo __user__,\n\n__inviter__ hat Sie für Ihre Zusammenarbeit zu Wekan 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.",
@ -617,5 +617,7 @@
"authentication-type": "Authentifizierungstyp",
"custom-product-name": "Benutzerdefinierter Produktname",
"layout": "Layout",
"hide-logo": "Verstecke Logo"
"hide-logo": "Verstecke Logo",
"add-custom-html-after-body-start": "Füge benutzerdefiniertes HTML nach <body> Anfang hinzu",
"add-custom-html-before-body-end": "Füge benutzerdefiniertes HTML vor </body>Ende hinzu"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -618,5 +618,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -1,6 +1,6 @@
{
"accept": "Aceptar",
"act-activity-notify": "Activity Notification",
"act-activity-notify": "Notificación de actividad",
"act-addAttachment": "ha adjuntado __attachment__ a __card__",
"act-addSubtask": "ha añadido la subtarea __checklist__ a __card__",
"act-addChecklist": "ha añadido la lista de verificación __checklist__ a __card__",
@ -78,7 +78,7 @@
"and-n-other-card": "y __count__ tarjeta más",
"and-n-other-card_plural": "y otras __count__ tarjetas",
"apply": "Aplicar",
"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-is-offline": "Cargando, espera por favor. Refrescar esta página causará pérdida de datos. Si la carga no funciona, por favor comprueba que el servidor no se ha parado.",
"archive": "Mover al Archivo",
"archive-all": "Mover todo al Archivo",
"archive-board": "Mover Tablero al Archivo",
@ -283,20 +283,20 @@
"import-board": "importar un tablero",
"import-board-c": "Importar un tablero",
"import-board-title-trello": "Importar un tablero desde Trello",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-board-title-wekan": "Importar tablero desde una exportación previa",
"import-sandstorm-backup-warning": "No elimine los datos que está importando del tablero o Trello original antes de verificar que la semilla pueda cerrarse y abrirse nuevamente, o que ocurra un error de \"Tablero no encontrado\", de lo contrario perderá sus datos.",
"import-sandstorm-warning": "El tablero importado eliminará todos los datos existentes en este tablero y los reemplazará con los datos del tablero importado.",
"from-trello": "Desde Trello",
"from-wekan": "From previous export",
"from-wekan": "Desde exportación previa",
"import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego 'Más' > 'Imprimir y exportar' > 'Exportar JSON', y copia el texto resultante.",
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-wekan": "En tu tablero, vete a 'Menú', luego 'Exportar tablero', y copia el texto en el archivo descargado.",
"import-board-instruction-about-errors": "Si obtiene errores cuando importe el tablero, a veces la importación funciona igualmente, y el tablero se encuentra en la página de Todos los Tableros.",
"import-json-placeholder": "Pega tus datos JSON válidos aquí",
"import-map-members": "Mapa de miembros",
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-members-map": "Tu tablero importado tiene algunos miembros. Por favor, mapea los miembros que quieres importar con tus usuarios.",
"import-show-user-mapping": "Revisión de la asignación de miembros",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"import-user-select": "Selecciona el miembro existe que quieres usar como este miembro.",
"importMapMembersAddPopup-title": "Seleccionar miembro",
"info": "Versión",
"initials": "Iniciales",
"invalid-date": "Fecha no válida",
@ -460,8 +460,8 @@
"send-smtp-test": "Enviarte un correo de prueba a ti mismo",
"invitation-code": "Código de Invitación",
"email-invite-register-subject": "__inviter__ te ha enviado una invitación",
"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-invite-register-text": "Querido __user__,\n__inviter__ le invita al tablero kanban para colaborar.\n\nPor favor, siga el siguiente enlace:\n__url__\n\nY tu código de invitación es: __icode__\n\nGracias.",
"email-smtp-test-subject": "Prueba de email SMTP",
"email-smtp-test-text": "El correo se ha enviado correctamente",
"error-invitation-code-not-exist": "El código de invitación no existe",
"error-notAuthorized": "No estás autorizado a ver esta página.",
@ -617,5 +617,7 @@
"authentication-type": "Tipo de autenticación",
"custom-product-name": "Nombre de producto personalizado",
"layout": "Disñeo",
"hide-logo": "Ocultar logo"
"hide-logo": "Ocultar logo",
"add-custom-html-after-body-start": "Añade HTML personalizado después de <body> ",
"add-custom-html-before-body-end": "Añade HTML personalizado después de </body>"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -1,6 +1,6 @@
{
"accept": "پذیرش",
"act-activity-notify": "Activity Notification",
"act-activity-notify": "اعلان فعالیت",
"act-addAttachment": "پیوست __attachment__ به __card__",
"act-addSubtask": "زیر وظیفه __checklist__ به __card__ اضافه شد",
"act-addChecklist": "سیاهه __checklist__ به __card__ افزوده شد",
@ -11,10 +11,10 @@
"act-createCustomField": "فیلد __customField__ ایجاد شد",
"act-createList": "__list__ به __board__ اضافه شد",
"act-addBoardMember": "__member__ به __board__ اضافه شد",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-archivedBoard": "__board__ به آرشیو انتقال یافت",
"act-archivedCard": "__card__ به آرشیو انتقال یافت",
"act-archivedList": "__list__ به آرشیو انتقال یافت",
"act-archivedSwimlane": "__swimlane__ به آرشیو انتقال یافت",
"act-importBoard": "__board__ وارد شده",
"act-importCard": "__card__ وارد شده",
"act-importList": "__list__ وارد شده",
@ -29,7 +29,7 @@
"activities": "فعالیت‌ها",
"activity": "فعالیت",
"activity-added": "%s به %s اضافه شد",
"activity-archived": "%s moved to Archive",
"activity-archived": "%s به آرشیو انتقال یافت",
"activity-attached": "%s به %s پیوست شد",
"activity-created": "%s ایجاد شد",
"activity-customfield-created": "%s فیلدشخصی ایجاد شد",
@ -43,19 +43,19 @@
"activity-sent": "ارسال %s به %s",
"activity-unjoined": "قطع اتصال %s",
"activity-subtask-added": "زیروظیفه به %s اضافه شد",
"activity-checked-item": "checked %s in checklist %s of %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-checked-item": "چک شده %s در چک لیست %s از %s",
"activity-unchecked-item": "چک نشده %s در چک لیست %s از %s",
"activity-checklist-added": "سیاهه به %s اضافه شد",
"activity-checklist-removed": "removed a checklist from %s",
"activity-checklist-completed": "completed the checklist %s of %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-checklist-removed": "از چک لیست حذف گردید",
"activity-checklist-completed": "تمام شده ها در چک لیست %s از %s",
"activity-checklist-uncompleted": "تمام نشده ها در چک لیست %s از %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
"activity-checklist-item-removed": "حذف شده از چک لیست '%s' در %s",
"add": "افزودن",
"activity-checked-item-card": "checked %s in checklist %s",
"activity-unchecked-item-card": "unchecked %s in checklist %s",
"activity-checklist-completed-card": "completed the checklist %s",
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"activity-checked-item-card": "چک شده %s در چک لیست %s",
"activity-unchecked-item-card": "چک نشده %s در چک لیست %s",
"activity-checklist-completed-card": "چک لیست تمام شده %s",
"activity-checklist-uncompleted-card": "چک لیست تمام نشده %s",
"add-attachment": "افزودن ضمیمه",
"add-board": "افزودن برد",
"add-card": "افزودن کارت",
@ -78,19 +78,19 @@
"and-n-other-card": "و __count__ کارت دیگر",
"and-n-other-card_plural": "و __count__ کارت دیگر",
"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.",
"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?",
"app-is-offline": "در حال بارگزاری لطفا منتظر بمانید. بازخوانی صفحه باعث از بین رفتن اطلاعات می شود. اگر بارگذاری کار نمی کند، لطفا بررسی کنید که این سرور متوقف نشده است.",
"archive": "انتقال به آرشیو",
"archive-all": "انتقال همه به آرشیو",
"archive-board": "انتقال برد به آرشیو",
"archive-card": "انتقال کارت به آرشیو",
"archive-list": "انتقال لیست به آرشیو",
"archive-swimlane": "انتقال مسیر به آرشیو",
"archive-selection": "انتقال انتخاب شده ها به آرشیو",
"archiveBoardPopup-title": "انتقال برد به آرشیو؟",
"archived-items": "بایگانی",
"archived-boards": "Boards in Archive",
"archived-boards": "برد های داخل آرشیو",
"restore-board": "بازیابی تخته",
"no-archived-boards": "No Boards in Archive.",
"no-archived-boards": "هیچ بردی داخل آرشیو نیست",
"archives": "بایگانی",
"assign-member": "تعیین عضو",
"attached": "ضمیمه شده",
@ -118,12 +118,12 @@
"board-view-lists": "فهرست‌ها",
"bucket-example": "برای مثال چیزی شبیه \"لیست سبدها\"",
"cancel": "انصراف",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"card-archived": "این کارت به آرشیو انتقال داده شد",
"board-archived": "این برد به آرشیو انتقال یافت",
"card-comments-title": "این کارت دارای %s نظر است.",
"card-delete-notice": "حذف دائمی. تمامی موارد مرتبط با این کارت از بین خواهند رفت.",
"card-delete-pop": "همه اقدامات از این پردازه (خوراک) حذف خواهد شد و امکان بازگرداندن کارت وجود نخواهد داشت.",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-delete-pop": "همه اقدامات از این پردازه حذف خواهد شد و امکان بازگرداندن کارت وجود نخواهد داشت.",
"card-delete-suggest-archive": "شما می توانید کارت را به بایگانی منتقل کنید تا آن را از هیئت مدیره حذف کنید و فعالیت را حفظ کنید.",
"card-due": "تا",
"card-due-on": "تا",
"card-spent": "زمان صرف شده",
@ -166,7 +166,7 @@
"clipboard": "ذخیره در حافظه ویا بردار-رهاکن",
"close": "بستن",
"close-board": "بستن برد",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"close-board-pop": "شما می توانید با کلیک کردن بر روی دکمه «بایگانی» از صفحه هدر، صفحه را بازگردانید.",
"color-black": "مشکی",
"color-blue": "آبی",
"color-green": "سبز",
@ -181,8 +181,8 @@
"comment-placeholder": "درج نظر",
"comment-only": "فقط نظر",
"comment-only-desc": "فقط می‌تواند روی کارت‌ها نظر دهد.",
"no-comments": "No comments",
"no-comments-desc": "Can not see comments and activities.",
"no-comments": "هیچ کامنتی موجود نیست",
"no-comments-desc": "نظرات و فعالیت ها را نمی توان دید.",
"computer": "رایانه",
"confirm-subtask-delete-dialog": "از حذف این زیر وظیفه اطمینان دارید؟",
"confirm-checklist-delete-dialog": "مطمئنا چک لیست پاک شود؟",
@ -272,7 +272,7 @@
"filter-on-desc": "شما صافی ـFilterـ برای کارتهای تخته را روشن کرده اید. جهت ویرایش کلیک نمایید.",
"filter-to-selection": "صافی ـFilterـ برای موارد انتخابی",
"advanced-filter-label": "صافی پیشرفته",
"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",
"advanced-filter-description": "فیلتر پیشرفته اجازه می دهد تا برای نوشتن رشته حاوی اپراتورهای زیر: ==! = <=> = && || () یک فضای به عنوان یک جداساز بین اپراتورها استفاده می شود. با تایپ کردن نام ها و مقادیر آنها می توانید برای تمام زمینه های سفارشی فیلتر کنید. به عنوان مثال: Field1 == Value1. نکته: اگر فیلدها یا مقادیر حاوی فضاها باشند، شما باید آنها را به یک نقل قول کپسول کنید. برای مثال: 'فیلد 1' == 'مقدار 1'. برای تک تک کاراکترهای کنترل (\\\\) که می توانید از آنها استفاده کنید، می توانید از \\ استفاده کنید. به عنوان مثال: Field1 == I \\ 'm. همچنین شما می توانید شرایط مختلف را ترکیب کنید. برای مثال: F1 == V1 || F1 == V2. به طور معمول همه اپراتورها از چپ به راست تفسیر می شوند. شما می توانید سفارش را با قرار دادن براکت تغییر دهید. برای مثال: F1 == V1 && (F2 == V2 || F2 == V3). همچنین می توانید فیلدهای متنی را با استفاده از regex جستجو کنید: F1 == /Tes.*/i",
"fullname": "نام و نام خانوادگی",
"header-logo-title": "بازگشت به صفحه تخته.",
"hide-system-messages": "عدم نمایش پیامهای سیستمی",
@ -283,20 +283,20 @@
"import-board": "وارد کردن تخته",
"import-board-c": "وارد کردن تخته",
"import-board-title-trello": "وارد کردن تخته از Trello",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-board-title-wekan": "بارگذاری برد ها از آخرین خروجی",
"import-sandstorm-backup-warning": "قبل از بررسی این داده ها را از صفحه اصلی صادر شده یا Trello وارد نمیکنید این دانه دوباره باز می شود و یا دوباره باز می شود، یا برد را پیدا نمی کنید، این بدان معنی است که از دست دادن اطلاعات.",
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
"from-trello": "از Trello",
"from-wekan": "From previous export",
"from-wekan": "از آخرین خروجی",
"import-board-instruction-trello": "در Trello-ی خود به 'Menu'، 'More'، 'Print'، 'Export to JSON رفته و متن نهایی را دراینجا وارد نمایید.",
"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-board-instruction-wekan": "در هیئت مدیره خود، به 'Menu' بروید، سپس 'Export Board'، و متن را در فایل دانلود شده کپی کنید.",
"import-board-instruction-about-errors": "اگر هنگام بازگردانی با خطا مواجه شدید بعضی اوقات بازگردانی انجام می شود و تمامی برد ها در داخل صفحه All Boards هستند",
"import-json-placeholder": "اطلاعات Json معتبر خود را اینجا وارد کنید.",
"import-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": "برد ها بازگردانده شده تعدادی کاربر دارند . لطفا کاربر های که می خواهید را انتخاب نمایید",
"import-show-user-mapping": "بررسی نقشه کاربران",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"import-user-select": "کاربر فعلی خود را انتخاب نمایید اگر میخواهیپ بعنوان کاربر باشد",
"importMapMembersAddPopup-title": "انتخاب کاربر",
"info": "نسخه",
"initials": "تخصیصات اولیه",
"invalid-date": "تاریخ نامعتبر",
@ -315,8 +315,8 @@
"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": "ارجاع به این کارت",
"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-archive-cards": "انتقال تمامی کارت های این لیست به آرشیو",
"list-archive-cards-pop": "این کارتباعث حذف تمامی کارت های این لیست از برد می شود . برای مشاهده کارت ها در آرشیو و برگرداندن آنها به برد بر بروی \"Menu\">\"Archive\" کلیک نمایید",
"list-move-cards": "انتقال تمام کارت های این لیست",
"list-select-cards": "انتخاب تمام کارت های این لیست",
"listActionPopup-title": "لیست اقدامات",
@ -325,7 +325,7 @@
"listMorePopup-title": "بیشتر",
"link-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.",
"list-delete-suggest-archive": "شما می توانید لیست را به آرشیو انتقال دهید تا آن را از برد حذف نمایید و فعالیت های خود را حفظ نمایید",
"lists": "لیست ها",
"swimlanes": "Swimlanes",
"log-out": "خروج",
@ -345,9 +345,9 @@
"muted-info": "شما هیچگاه از تغییرات این تخته مطلع نخواهید شد",
"my-boards": "تخته‌های من",
"name": "نام",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-archived-cards": "هیچ کارتی در آرشیو موجود نمی باشد",
"no-archived-lists": "هیچ لیستی در آرشیو موجود نمی باشد",
"no-archived-swimlanes": "هیچ مسیری در آرشیو موجود نمی باشد",
"no-results": "بدون نتیجه",
"normal": "عادی",
"normal-desc": "امکان نمایش و تنظیم کارت بدون امکان تغییر تنظیمات",
@ -383,7 +383,7 @@
"restore": "بازیابی",
"save": "ذخیره",
"search": "جستجو",
"rules": "Rules",
"rules": "قوانین",
"search-cards": "جستجو در میان عناوین و توضیحات در این تخته",
"search-example": "متن مورد جستجو؟",
"select-color": "انتخاب رنگ",
@ -427,7 +427,7 @@
"uploaded-avatar": "تصویر ارسال شد",
"username": "نام کاربری",
"view-it": "مشاهده",
"warn-list-archived": "warning: this card is in an list at Archive",
"warn-list-archived": "اخطار:این کارت در یک لیست در آرشیو موجود می باشد",
"watch": "دیده بانی",
"watching": "درحال دیده بانی",
"watching-info": "شما از هر تغییری دراین تخته آگاه خواهید شد",
@ -460,8 +460,8 @@
"send-smtp-test": "فرستادن رایانامه آزمایشی به خود",
"invitation-code": "کد دعوت نامه",
"email-invite-register-subject": "__inviter__ برای شما دعوت نامه ارسال کرده است",
"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-invite-register-text": "__user__ عزیز,\n\n__inviter__ شما را به این برد دعوت کرده است.\n\nلطفا روی لینک زیر کلیک نمایید:\n__url__\n\nو کد معرفی شما: __icode__\n\nبا تشکر.",
"email-smtp-test-subject": "SMTP تست ایمیل",
"email-smtp-test-text": "با موفقیت، یک رایانامه را فرستادید",
"error-invitation-code-not-exist": "چنین کد دعوتی یافت نشد",
"error-notAuthorized": "شما مجاز به دیدن این صفحه نیستید.",
@ -482,9 +482,9 @@
"hours": "ساعت",
"minutes": "دقیقه",
"seconds": "ثانیه",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"show-field-on-card": "این رشته را در کارت نمایش بده",
"automatically-field-on-card": "اتوماتیک این رشته را در همه ی کارت ها اضافه کن",
"showLabel-field-on-card": "نمایش نام رشته در کارت های کوچک",
"yes": "بله",
"no": "خیر",
"accounts": "حساب‌ها",
@ -501,74 +501,74 @@
"editCardEndDatePopup-title": "تغییر تاریخ پایان",
"assigned-by": "محول شده توسط",
"requested-by": "تقاضا شده توسط",
"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.",
"board-delete-notice": "حذف دائمی است شما تمام لیست ها، کارت ها و اقدامات مرتبط با این برد را از دست خواهید داد.",
"delete-board-confirm-popup": "تمام لیست ها، کارت ها، برچسب ها و فعالیت ها حذف خواهند شد و شما نمی توانید محتوای برد را بازیابی کنید. هیچ واکنشی وجود ندارد",
"boardDeletePopup-title": "حذف تخته؟",
"delete-board": "حذف تخته",
"default-subtasks-board": "Subtasks for __board__ board",
"default-subtasks-board": "ریزکار برای __board__ برد",
"default": "پیش‌فرض",
"queue": "صف",
"subtask-settings": "Subtasks Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
"show-subtasks-field": "Cards can have subtasks",
"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:",
"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",
"subtask-settings": "تنظیمات ریزکارها",
"boardSubtaskSettingsPopup-title": "تنظیمات ریزکار های برد",
"show-subtasks-field": "کارت می تواند ریزکار داشته باشد",
"deposit-subtasks-board": "افزودن ریزکار به برد:",
"deposit-subtasks-list": "لیست برای ریزکار های افزوده شده",
"show-parent-in-minicard": "نمایش خانواده در ریز کارت",
"prefix-with-full-path": "پیشوند با مسیر کامل",
"prefix-with-parent": "پیشوند با خانواده",
"subtext-with-full-path": "زیرنویس با مسیر کامل",
"subtext-with-parent": "زیرنویس با خانواده",
"change-card-parent": "تغییرخانواده کارت",
"parent-card": "کارت خانواده",
"source-board": "کارت مرجع",
"no-parent": "خانواده نمایش داده نشود",
"activity-added-label": "افزودن لیبل '%s' به %s",
"activity-removed-label": "حذف لیبل '%s' از %s",
"activity-delete-attach": "حذف ضمیمه از %s",
"activity-added-label-card": "افزودن لیبل '%s'",
"activity-removed-label-card": "حذف لیبل '%s'",
"activity-delete-attach-card": "حذف ضمیمه",
"r-rule": "نقش",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
"r-board-rules": "Board rules",
"r-add-trigger": "افزودن گیره",
"r-add-action": "افزودن عملیات",
"r-board-rules": "قوانین برد",
"r-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-when-a-card-is": "When a card is",
"r-added-to": "Added to",
"r-removed-from": "Removed from",
"r-the-board": "the board",
"r-list": "list",
"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-is": "When the label is",
"r-list-name": "List name",
"r-when-a-member": "When a member is",
"r-when-the-member": "When the member",
"r-name": "name",
"r-is": "is",
"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-view-rule": "نمایش قانون",
"r-delete-rule": "حذف قانون",
"r-new-rule-name": "تیتر قانون جدید",
"r-no-rules": "بدون قانون",
"r-when-a-card-is": "زمانی که کارت هست",
"r-added-to": "افزودن به",
"r-removed-from": "حذف از",
"r-the-board": "برد",
"r-list": "لیست",
"r-moved-to": "انتقال به",
"r-moved-from": "انتقال از",
"r-archived": "انتقال به آرشیو",
"r-unarchived": "بازگردانی از آرشیو",
"r-a-card": "کارت",
"r-when-a-label-is": "زمانی که لیبل هست",
"r-when-the-label-is": "زمانی که لیبل هست",
"r-list-name": "نام لیست",
"r-when-a-member": "زمانی که کاربر هست",
"r-when-the-member": "زمانی که کاربر",
"r-name": "نام",
"r-is": "هست",
"r-when-a-attach": "زمانی که ضمیمه",
"r-when-a-checklist": "زمانی که چک لیست هست",
"r-when-the-checklist": "زمانی که چک لیست",
"r-completed": "تمام شده",
"r-made-incomplete": "تمام نشده",
"r-when-a-item": "زمانی که چک لیست ایتم هست",
"r-when-the-item": "زمانی که چک لیست ایتم",
"r-checked": "انتخاب شده",
"r-unchecked": "لغو انتخاب",
"r-move-card-to": "انتقال کارت به",
"r-top-of": "بالای",
"r-bottom-of": "پایین",
"r-its-list": "لیست خود",
"r-archive": "Move to Archive",
"r-unarchive": "Restore from Archive",
"r-archive": "انتقال به آرشیو",
"r-unarchive": "بازگردانی از آرشیو",
"r-card": "کارت",
"r-add": "افزودن",
"r-remove": "حذف",
@ -595,8 +595,8 @@
"r-d-send-email-to": "به",
"r-d-send-email-subject": "عنوان",
"r-d-send-email-message": "پیام",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-archive": "انتقال کارت به آرشیو",
"r-d-unarchive": "بازگردانی کارت از آرشیو",
"r-d-add-label": "افزودن برچسب",
"r-d-remove-label": "حذف برچسب",
"r-d-add-member": "افزودن عضو",
@ -617,5 +617,7 @@
"authentication-type": "نوع اعتبارسنجی",
"custom-product-name": "نام سفارشی محصول",
"layout": "لایه",
"hide-logo": "Hide Logo"
"hide-logo": "مخفی سازی نماد",
"add-custom-html-after-body-start": "افزودن کد های HTML بعد از <body> شروع",
"add-custom-html-before-body-end": "افزودن کد های HTML قبل از </body> پایان"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Kirjautumistyyppi",
"custom-product-name": "Mukautettu tuotenimi",
"layout": "Ulkoasu",
"hide-logo": "Piilota Logo"
"hide-logo": "Piilota Logo",
"add-custom-html-after-body-start": "Lisää HTML <body> alun jälkeen",
"add-custom-html-before-body-end": "Lisä HTML ennen </body> loppua"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Type d'authentification",
"custom-product-name": "Nom personnalisé",
"layout": "Interface",
"hide-logo": "Cacher le logo"
"hide-logo": "Cacher le 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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -1,6 +1,6 @@
{
"accept": "אישור",
"act-activity-notify": "Activity Notification",
"act-activity-notify": "הודעת פעילות",
"act-addAttachment": " __attachment__ צורף לכרטיס __card__",
"act-addSubtask": "נוספה תת־משימה __checklist__ אל __card__",
"act-addChecklist": "רשימת משימות __checklist__ נוספה ל __card__",
@ -11,10 +11,10 @@
"act-createCustomField": "נוצר שדה בהתאמה אישית __customField__",
"act-createList": "הרשימה __list__ התווספה ללוח __board__",
"act-addBoardMember": "המשתמש __member__ נוסף ללוח __board__",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-archivedBoard": "__board__ הועבר לארכיון",
"act-archivedCard": "__card__ הועבר לארכיון",
"act-archivedList": "__list__ הועבר לארכיון",
"act-archivedSwimlane": "__swimlane__ נשמר בארכיון",
"act-importBoard": "הלוח __board__ יובא",
"act-importCard": "הכרטיס __card__ יובא",
"act-importList": "הרשימה __list__ יובאה",
@ -29,7 +29,7 @@
"activities": "פעילויות",
"activity": "פעילות",
"activity-added": "%s נוסף ל%s",
"activity-archived": "%s moved to Archive",
"activity-archived": "%s הועבר לארכיון",
"activity-attached": "%s צורף ל%s",
"activity-created": "%s נוצר",
"activity-customfield-created": "נוצר שדה בהתאמה אישית %s",
@ -78,19 +78,19 @@
"and-n-other-card": "וכרטיס נוסף",
"and-n-other-card_plural": "ו־__count__ כרטיסים נוספים",
"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.",
"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?",
"app-is-offline": "טוען, אנא המתן. טעינה מחדש של הדף תוביל לאבדן מידע. אם הטעינה לוקחת יותר מדי זמן, אנא בדוק אם השרת מקוון.",
"archive": "העברה לארכיון",
"archive-all": "אחסן הכל בארכיון",
"archive-board": "העברת הלוח לארכיון",
"archive-card": "העברת הכרטיס לארכיון",
"archive-list": "העברת הרשימה לארכיון",
"archive-swimlane": "שמור נתיב זרימה לארכיון",
"archive-selection": "העברת הבחירה לארכיון",
"archiveBoardPopup-title": "האם להעביר לוח זה לארכיון?",
"archived-items": "להעביר לארכיון",
"archived-boards": "Boards in Archive",
"archived-boards": "לוחות שנשמרו בארכיון",
"restore-board": "שחזור לוח",
"no-archived-boards": "No Boards in Archive.",
"no-archived-boards": "לא נשמרו לוחות בארכיון.",
"archives": "להעביר לארכיון",
"assign-member": "הקצאת חבר",
"attached": "מצורף",
@ -118,12 +118,12 @@
"board-view-lists": "רשימות",
"bucket-example": "כמו למשל „רשימת המשימות“",
"cancel": "ביטול",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"card-archived": "כרטיס זה שמור בארכיון.",
"board-archived": "הלוח עבר לארכיון",
"card-comments-title": "לכרטיס זה %s תגובות.",
"card-delete-notice": "מחיקה היא סופית. כל הפעולות המשויכות לכרטיס זה תלכנה לאיוד.",
"card-delete-pop": "כל הפעולות יוסרו מלוח הפעילות ולא תהיה אפשרות לפתוח מחדש את הכרטיס. אין דרך חזרה.",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-delete-suggest-archive": "על מנת להסיר כרטיסים מהלוח מבלי לאבד את היסטוריית הפעילות שלהם, ניתן לשמור אותם בארכיון.",
"card-due": "תאריך יעד",
"card-due-on": "תאריך יעד",
"card-spent": "זמן שהושקע",
@ -166,7 +166,7 @@
"clipboard": "לוח גזירים או גרירה ושחרור",
"close": "סגירה",
"close-board": "סגירת לוח",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"close-board-pop": "ניתן לשחזר את הלוח בלחיצה על כפתור „ארכיונים“ מהכותרת העליונה.",
"color-black": "שחור",
"color-blue": "כחול",
"color-green": "ירוק",
@ -287,16 +287,16 @@
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-sandstorm-warning": "הלוח שייובא ימחק את כל הנתונים הקיימים בלוח ויחליף אותם בלוח שייובא.",
"from-trello": "מ־Trello",
"from-wekan": "From previous export",
"from-wekan": "מייצוא קודם",
"import-board-instruction-trello": "בלוח הטרלו שלך, עליך ללחוץ על ‚תפריט‘, ואז על ‚עוד‘, ‚הדפסה וייצוא‘, ‚יצוא JSON ולהעתיק את הטקסט שנוצר.",
"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-board-instruction-about-errors": "גם אם התקבלו שגיאות בעת ייבוא לוח, ייתכן שהייבוא עבד. כדי לבדוק זאת, יש להיכנס ל„כל הלוחות”.",
"import-json-placeholder": "יש להדביק את נתוני ה־JSON התקינים לכאן",
"import-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": "הלוחות המיובאים שלך מכילים חברים. בבקשה מפה את החברים שתרצה לייבא כמשתמשים",
"import-show-user-mapping": "סקירת מיפוי חברים",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"import-user-select": "נא לבחור את המשתמש ב־Wekan בו ברצונך להשתמש עבור חבר זה",
"importMapMembersAddPopup-title": "בחר משתמש",
"info": "גרסא",
"initials": "ראשי תיבות",
"invalid-date": "תאריך שגוי",
@ -315,8 +315,8 @@
"leave-board-pop": "לעזוב את __boardTitle__? שמך יוסר מכל הכרטיסים שבלוח זה.",
"leaveBoardPopup-title": "לעזוב לוח ?",
"link-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-archive-cards": "העברת כל הכרטיסים שברשימה זו לארכיון",
"list-archive-cards-pop": "כל הכרטיסים מרשימה זו יוסרו מהלוח. לצפייה בכרטיסים השמורים בארכיון ולהחזירם ללוח, לחצו \"תפריט\" > \"פריטים בארכיון\".",
"list-move-cards": "העברת כל הכרטיסים שברשימה זו",
"list-select-cards": "בחירת כל הכרטיסים שברשימה זו",
"listActionPopup-title": "פעולות רשימה",
@ -325,7 +325,7 @@
"listMorePopup-title": "עוד",
"link-list": "קישור לרשימה זו",
"list-delete-pop": "כל הפעולות תוסרנה מרצף הפעילות ולא תהיה לך אפשרות לשחזר את הרשימה. אין ביטול.",
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
"list-delete-suggest-archive": "ניתן לשמור רשימה בארכיון כדי להסיר אותה מהלוח ולשמור על היסטוריית הפעילות.",
"lists": "רשימות",
"swimlanes": "מסלולים",
"log-out": "יציאה",
@ -345,9 +345,9 @@
"muted-info": "מעתה לא תתקבלנה אצלך התרעות על שינויים בלוח זה",
"my-boards": "הלוחות שלי",
"name": "שם",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-archived-cards": "אין כרטיסים בארכיון",
"no-archived-lists": "אין רשימות בארכיון",
"no-archived-swimlanes": "לא שמורים נתיבי זרימה בארכיון",
"no-results": "אין תוצאות",
"normal": "רגיל",
"normal-desc": "הרשאה לצפות ולערוך כרטיסים. לא ניתן לשנות הגדרות.",
@ -427,7 +427,7 @@
"uploaded-avatar": "הועלתה תמונה משתמש",
"username": "שם משתמש",
"view-it": "הצגה",
"warn-list-archived": "warning: this card is in an list at Archive",
"warn-list-archived": "אזהרה: כרטיס זה הוא חלק מרשימה שנמצאת בארכיון",
"watch": "לעקוב",
"watching": "במעקב",
"watching-info": "מעתה יגיעו אליך דיווחים על כל שינוי בלוח זה",
@ -460,8 +460,8 @@
"send-smtp-test": "שליחת דוא״ל בדיקה לעצמך",
"invitation-code": "קוד הזמנה",
"email-invite-register-subject": "נשלחה אליך הזמנה מאת __inviter__",
"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-invite-register-text": " __user__, יקר/ה\n\n__inviter__ מזמין/ה אתכם לשיתוף פעולה בלוח הקנבן.\n\nאנא לחצו על הקישור הבא:\n__url__\n\nקוד ההזמנה הוא: __icode__\n\nתודה.",
"email-smtp-test-subject": "דוא\"ל בדיקת SMTP",
"email-smtp-test-text": "שלחת הודעת דוא״ל בהצלחה",
"error-invitation-code-not-exist": "קוד ההזמנה אינו קיים",
"error-notAuthorized": "אין לך הרשאה לצפות בעמוד זה.",
@ -483,8 +483,8 @@
"minutes": "דקות",
"seconds": "שניות",
"show-field-on-card": "הצגת שדה זה בכרטיס",
"automatically-field-on-card": "Auto create field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"automatically-field-on-card": "הוספת שדה לכל הכרטיסים",
"showLabel-field-on-card": "הצג תווית של השדה במיני כרטיס",
"yes": "כן",
"no": "לא",
"accounts": "חשבונות",
@ -535,7 +535,7 @@
"r-add-rule": "הוספת כלל",
"r-view-rule": "הצגת כלל",
"r-delete-rule": "מחיקת כל",
"r-new-rule-name": "New rule title",
"r-new-rule-name": "שמו של הכלל החדש",
"r-no-rules": "אין כללים",
"r-when-a-card-is": "כאשר כרטיס",
"r-added-to": "נוסף אל",
@ -544,8 +544,8 @@
"r-list": "רשימה",
"r-moved-to": "מועבר אל",
"r-moved-from": "מועבר מ־",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
"r-archived": "הועבר לארכיון",
"r-unarchived": "הוחזר מהארכיון",
"r-a-card": "כרטיס",
"r-when-a-label-is": "כאשר תווית",
"r-when-the-label-is": "כאשר התווית היא",
@ -567,8 +567,8 @@
"r-top-of": "ראש",
"r-bottom-of": "תחתית",
"r-its-list": "הרשימה שלו",
"r-archive": "Move to Archive",
"r-unarchive": "Restore from Archive",
"r-archive": "העברה לארכיון",
"r-unarchive": "החזרה מהארכיון",
"r-card": "כרטיס",
"r-add": "הוספה",
"r-remove": "הסרה",
@ -578,7 +578,7 @@
"r-checklist": "רשימת משימות",
"r-check-all": "לסמן הכול",
"r-uncheck-all": "לבטל את הסימון",
"r-items-check": "items of checklist",
"r-items-check": "פריטים ברשימת משימות",
"r-check": "סימון",
"r-uncheck": "ביטול סימון",
"r-item": "פריט",
@ -595,8 +595,8 @@
"r-d-send-email-to": "אל",
"r-d-send-email-subject": "נושא",
"r-d-send-email-message": "הודעה",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-archive": "העברת כרטיס לארכיון",
"r-d-unarchive": "החזרת כרטיס מהארכיון",
"r-d-add-label": "הוספת תווית",
"r-d-remove-label": "הסרת תווית",
"r-d-add-member": "הוספת חבר",
@ -613,9 +613,11 @@
"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"
"authentication-method": "שיטת אימות",
"authentication-type": "סוג אימות",
"custom-product-name": "שם מותאם אישית למוצר",
"layout": "פריסה",
"hide-logo": "הסתרת לוגו",
"add-custom-html-after-body-start": "הוספת קוד HTML מותאם אישית בתחילת ה <body>.",
"add-custom-html-before-body-end": "הוספת קוד HTML מותאם אישית בסוף ה</body>."
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Tipe Autentikasi",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Sembunyikan Logo"
"hide-logo": "Sembunyikan 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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -1,6 +1,6 @@
{
"accept": "Accetta",
"act-activity-notify": "Activity Notification",
"act-activity-notify": "Notifica attività ",
"act-addAttachment": "ha allegato __attachment__ a __card__",
"act-addSubtask": "ha aggiunto il sotto compito__checklist__in_card__",
"act-addChecklist": "aggiunta checklist __checklist__ a __card__",
@ -11,10 +11,10 @@
"act-createCustomField": "campo personalizzato __customField__ creato",
"act-createList": "ha aggiunto __list__ a __board__",
"act-addBoardMember": "ha aggiunto __member__ a __board__",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-archivedBoard": "__board__ spostata nell'archivio ",
"act-archivedCard": "__card__ spostata nell'archivio",
"act-archivedList": "__list__ spostato nell'archivio",
"act-archivedSwimlane": "__swimlane__ spostato nell'archivio",
"act-importBoard": "ha importato __board__",
"act-importCard": "ha importato __card__",
"act-importList": "ha importato __list__",
@ -29,7 +29,7 @@
"activities": "Attività",
"activity": "Attività",
"activity-added": "ha aggiunto %s a %s",
"activity-archived": "%s moved to Archive",
"activity-archived": "%s spostato nell'archivio",
"activity-attached": "allegato %s a %s",
"activity-created": "creato %s",
"activity-customfield-created": "Campo personalizzato creato",
@ -44,9 +44,9 @@
"activity-unjoined": "ha abbandonato %s",
"activity-subtask-added": "aggiunto il sottocompito a 1%s",
"activity-checked-item": " selezionata %s nella checklist %s di %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-unchecked-item": "disattivato %s nella checklist %s di %s",
"activity-checklist-added": "aggiunta checklist a %s",
"activity-checklist-removed": "removed a checklist from %s",
"activity-checklist-removed": "È stata rimossa una checklist da%s",
"activity-checklist-completed": "completed the checklist %s of %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-checklist-item-added": "Aggiunto l'elemento checklist a '%s' in %s",
@ -617,5 +617,7 @@
"authentication-type": "Tipo Autenticazione",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -296,7 +296,7 @@
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-show-user-mapping": "Przejrzyj wybranych członków",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"importMapMembersAddPopup-title": "Wybierz użytkownika",
"info": "Wersja",
"initials": "Inicjały",
"invalid-date": "Błędna data",
@ -617,5 +617,7 @@
"authentication-type": "Typ autoryzacji",
"custom-product-name": "Niestandardowa nazwa produktu",
"layout": "Układ strony",
"hide-logo": "Ukryj logo"
"hide-logo": "Ukryj 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"
}

View file

@ -1,8 +1,8 @@
{
"accept": "Aceitar",
"act-activity-notify": "Activity Notification",
"act-activity-notify": "Notificação de atividade",
"act-addAttachment": "anexo __attachment__ de __card__",
"act-addSubtask": "Subtarefa adicionada__checklist__ao__cartão",
"act-addSubtask": "Subtarefa adicionada __checklist__ ao __cartão",
"act-addChecklist": "added checklist __checklist__ no __card__",
"act-addChecklistItem": "adicionado __checklistitem__ para a lista de checagem __checklist__ em __card__",
"act-addComment": "comentou em __card__: __comment__",
@ -11,10 +11,10 @@
"act-createCustomField": "criado campo customizado __customField__",
"act-createList": "__list__ adicionada à __board__",
"act-addBoardMember": "__member__ adicionado à __board__",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-archivedBoard": "__board__ foi arquivada",
"act-archivedCard": "__card__ foi Arquivado",
"act-archivedList": "__list__ foi Arquivado",
"act-archivedSwimlane": "__swimlane__ foi Arquivado",
"act-importBoard": "__board__ importado",
"act-importCard": "__card__ importado",
"act-importList": "__list__ importada",
@ -29,7 +29,7 @@
"activities": "Atividades",
"activity": "Atividade",
"activity-added": "adicionou %s a %s",
"activity-archived": "%s moved to Archive",
"activity-archived": "%s foi Arquivado",
"activity-attached": "anexou %s a %s",
"activity-created": "criou %s",
"activity-customfield-created": "criado campo customizado %s",
@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -1,6 +1,6 @@
{
"accept": "Принять",
"act-activity-notify": "Activity Notification",
"act-activity-notify": "Уведомление о действиях участников",
"act-addAttachment": "прикрепил __attachment__ в __card__",
"act-addSubtask": "добавил подзадачу __checklist__ в __card__",
"act-addChecklist": "добавил контрольный список __checklist__ в __card__",
@ -78,7 +78,7 @@
"and-n-other-card": "И __count__ другая карточка",
"and-n-other-card_plural": "И __count__ другие карточки",
"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-is-offline": "Идет загрузка, подождите. Обновление страницы приведет к потере данных. Если загрузка не происходит, проверьте работоспособность сервера.",
"archive": "Переместить в архив",
"archive-all": "Переместить всё в архив",
"archive-board": "Переместить доску в архив",
@ -283,20 +283,20 @@
"import-board": "импортировать доску",
"import-board-c": "Импортировать доску",
"import-board-title-trello": "Импортировать доску из Trello",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-board-title-wekan": "Импортировать доску, сохраненную ранее.",
"import-sandstorm-backup-warning": "Не удаляйте импортируемые данные из ранее сохраненной доски или Trello, пока не убедитесь, что импорт завершился успешно удается закрыть и снова открыть доску, и не появляется ошибка «Доска не найдена», что означает потерю данных.",
"import-sandstorm-warning": "Импортированная доска удалит все существующие данные на текущей доске и заменит её импортированной доской.",
"from-trello": "Из Trello",
"from-wekan": "From previous export",
"from-wekan": "Сохраненную ранее",
"import-board-instruction-trello": "На вашей Trello доске нажмите “Menu” - “More” - “Print and export - “Export JSON” и скопируйте полученный текст",
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-wekan": "На вашей доске перейдите в “Меню”, далее “Экспортировать доску” и скопируйте текст из скачаного файла",
"import-board-instruction-about-errors": "Даже если при импорте возникли ошибки, иногда импортирование проходит успешно тогда доска появится на странице «Все доски».",
"import-json-placeholder": "Вставьте JSON сюда",
"import-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": "Вы импортировали доску с участниками. Пожалуйста, отметьте участников, которых вы хотите импортировать в качестве пользователей",
"import-show-user-mapping": "Проверить карту участников",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"import-user-select": "Выберите существующего пользователя, которого вы хотите использовать в качестве участника",
"importMapMembersAddPopup-title": "Выбрать участника",
"info": "Версия",
"initials": "Инициалы",
"invalid-date": "Неверная дата",
@ -460,8 +460,8 @@
"send-smtp-test": "Отправьте тестовое письмо себе",
"invitation-code": "Код приглашения",
"email-invite-register-subject": "__inviter__ прислал вам приглашение",
"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-invite-register-text": "Уважаемый __user__,\n\n__inviter__ приглашает вас использовать канбан-доску для совместной работы.\n\nПожалуйста, проследуйте по ссылке:\n__url__\n\nКод вашего приглашения: __icode__\n\nСпасибо.",
"email-smtp-test-subject": "Тестовое письмо SMTP",
"email-smtp-test-text": "Вы успешно отправили письмо",
"error-invitation-code-not-exist": "Код приглашения не существует",
"error-notAuthorized": "У вас нет доступа на просмотр этой страницы.",
@ -538,7 +538,7 @@
"r-new-rule-name": "Имя нового правила",
"r-no-rules": "Нет правил",
"r-when-a-card-is": "Когда карточка",
"r-added-to": "Добавлен(а) в/на",
"r-added-to": "Добавляется в",
"r-removed-from": "Покидает",
"r-the-board": "доску",
"r-list": "список",
@ -549,7 +549,7 @@
"r-a-card": "карточку",
"r-when-a-label-is": "Когда метка",
"r-when-the-label-is": "Когда метка",
"r-list-name": "Имя списка",
"r-list-name": "имя",
"r-when-a-member": "Когда участник",
"r-when-the-member": "Когда участник",
"r-name": "имя",
@ -617,5 +617,7 @@
"authentication-type": "Тип авторизации",
"custom-product-name": "Собственное наименование",
"layout": "Внешний вид",
"hide-logo": "Скрыть логотип"
"hide-logo": "Скрыть логотип",
"add-custom-html-after-body-start": "Добавить HTML после начала <body> ",
"add-custom-html-before-body-end": "Добавить HTML до завершения </body>"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Autentiseringstyp",
"custom-product-name": "Anpassat produktnamn",
"layout": "Layout",
"hide-logo": "Dölj logotypen"
"hide-logo": "Dölj logotypen",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Kimlik doğrulama türü",
"custom-product-name": "Özel Ürün Adı",
"layout": "Düzen",
"hide-logo": "Logoyu Gizle"
"hide-logo": "Logoyu Gizle",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end"
}

View file

@ -1,26 +1,26 @@
{
"accept": "Прийняти",
"act-activity-notify": "Activity Notification",
"act-activity-notify": "Сповіщення діяльності",
"act-addAttachment": "__attachment__ додане до __card__",
"act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "комментар в __card__: __comment__",
"act-createBoard": "__board__ створенна",
"act-createCard": "__card__ карта додана до __list__ листа",
"act-createCustomField": "created custom field __customField__",
"act-createList": "added __list__ to __board__",
"act-addBoardMember": "added __member__ to __board__",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-importBoard": "imported __board__",
"act-addSubtask": "додав підзадачу __checklist__ до __card__",
"act-addChecklist": "додав список __checklist__ до __card__",
"act-addChecklistItem": "додав __checklistItem__ до списку __checklist__ в __card__",
"act-addComment": "прокоментував __card__: __comment__",
"act-createBoard": "створив __board__",
"act-createCard": "додав __card__ до __list__",
"act-createCustomField": "створено налаштовуване поле __customField__",
"act-createList": "додав __list__ до __board__",
"act-addBoardMember": "додав __member__ до __board__",
"act-archivedBoard": "__board__ перенесена до архіву",
"act-archivedCard": "__card__ перенесена до архіву",
"act-archivedList": "__list__ перенесений до архіву",
"act-archivedSwimlane": "__swimlane__ перенесений до архіву",
"act-importBoard": "__board__ імпортована",
"act-importCard": "__card__ заімпортована",
"act-importList": "imported __list__",
"act-importList": "__list__ імпортовано",
"act-joinMember": "__member__ був доданий до __card__",
"act-moveCard": " __card__ була перенесена з __oldList__ до __list__",
"act-removeBoardMember": "removed __member__ from __board__",
"act-removeBoardMember": "__member__ видалений з __board__",
"act-restoredCard": " __card__ відновлена у __board__",
"act-unjoinMember": " __member__ був виделений з __card__",
"act-withBoardTitle": "__board__",
@ -28,24 +28,24 @@
"actions": "Дії",
"activities": "Діяльність",
"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-added": "додав %s до %s",
"activity-archived": "%s перенесено до архіву",
"activity-attached": "прикріпив %s до %s",
"activity-created": "створив %s",
"activity-customfield-created": "створив налаштовуване поле",
"activity-excluded": "виключено %s з %s",
"activity-imported": "імпортовано %s до %s з %s",
"activity-imported-board": "імпортовано %s з %s",
"activity-joined": "приєднався %s",
"activity-moved": "переміщений %s з %s до %s",
"activity-on": "%s",
"activity-removed": "видалив %s з %s",
"activity-sent": "відправив %s до %s",
"activity-unjoined": "unjoined %s",
"activity-subtask-added": "added subtask to %s",
"activity-subtask-added": "додав підзадачу до %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-added": "додав список до %s",
"activity-checklist-removed": "removed a checklist from %s",
"activity-checklist-completed": "completed the checklist %s of %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
@ -57,15 +57,15 @@
"activity-checklist-completed-card": "completed the checklist %s",
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"add-attachment": "Add Attachment",
"add-board": "Add Board",
"add-card": "Add Card",
"add-board": "Додати дошку",
"add-card": "Додати картку",
"add-swimlane": "Add Swimlane",
"add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Додати елемент в список",
"add-cover": "Додати обкладинку",
"add-label": "Add Label",
"add-list": "Add List",
"add-label": "Додати мітку",
"add-list": "Додати список",
"add-members": "Додати користувача",
"added": "Доданно",
"addMemberPopup-title": "Користувачі",
@ -78,7 +78,7 @@
"and-n-other-card": "та __count__ інших карток",
"and-n-other-card_plural": "та __count__ інших карток",
"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-is-offline": "Завантаження, будь ласка, зачекайте. Оновлення сторінки призведе до втрати даних. Якщо завантаження не працює, перевірте, чи не зупинився сервер.",
"archive": "Move to Archive",
"archive-all": "Move All to Archive",
"archive-board": "Move Board to Archive",
@ -88,32 +88,32 @@
"archive-selection": "Move selection to Archive",
"archiveBoardPopup-title": "Move Board to Archive?",
"archived-items": "Архів",
"archived-boards": "Boards in Archive",
"restore-board": "Restore Board",
"no-archived-boards": "No Boards in Archive.",
"archived-boards": "Дошки в архіві",
"restore-board": "Відновити дошку",
"no-archived-boards": "Немає дошок в архіві",
"archives": "Архів",
"assign-member": "Assign member",
"attached": "доданно",
"attachment": "Додаток",
"attachment-delete-pop": "Видалення Додатку безповоротне. Тут нема відміні (undo).",
"attachmentDeletePopup-title": "Видалити Додаток?",
"attachments": "Attachments",
"attachments": "Додатки",
"auto-watch": "Automatically watch boards when they are created",
"avatar-too-big": "The avatar is too large (70KB max)",
"back": "Назад",
"board-change-color": "Change color",
"board-change-color": "Змінити колір",
"board-nb-stars": "%s stars",
"board-not-found": "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>.",
"boardChangeColorPopup-title": "Change Board Background",
"boardChangeTitlePopup-title": "Rename Board",
"boardChangeTitlePopup-title": "Перейменувати дошку",
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Menu",
"boards": "Дошки",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-cal": "Календар",
"board-view-swimlanes": "Swimlanes",
"board-view-lists": "Lists",
"bucket-example": "Like “Bucket List” for example",
@ -121,16 +121,16 @@
"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-delete-notice": "Цю дію неможливо буде скасувати. Всі зміни, які ви вносили в картку будуть втрачені.",
"card-delete-pop": "Усі дії буде видалено з каналу активності, і ви не зможете повторно відкрити картку. Цю дію не можна скасувати.",
"card-delete-suggest-archive": "Ви можете перемістити картку до архіву, щоб прибрати її з дошки, зберігаючи всю історію дій учасників.",
"card-due": "Due",
"card-due-on": "Due on",
"card-spent": "Spent Time",
"card-spent": "Витрачено часу",
"card-edit-attachments": "Edit attachments",
"card-edit-custom-fields": "Edit custom fields",
"card-edit-labels": "Edit labels",
"card-edit-members": "Edit members",
"card-edit-labels": "Редагувати мітки",
"card-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",
@ -138,55 +138,55 @@
"cardAttachmentsPopup-title": "Attach From",
"cardCustomField-datePopup-title": "Change date",
"cardCustomFieldsPopup-title": "Edit custom fields",
"cardDeletePopup-title": "Delete Card?",
"cardDeletePopup-title": "Видалити картку?",
"cardDetailsActionsPopup-title": "Card Actions",
"cardLabelsPopup-title": "Labels",
"cardMembersPopup-title": "Користувачі",
"cardMorePopup-title": "More",
"cards": "Cards",
"cards-count": "Cards",
"cards": "Картки",
"cards-count": "Картки",
"casSignIn": "Sign In with CAS",
"cardType-card": "Card",
"cardType-card": "Картка",
"cardType-linkedCard": "Linked Card",
"cardType-linkedBoard": "Linked Board",
"change": "Change",
"change-avatar": "Change Avatar",
"change-password": "Change Password",
"change": "Змінити",
"change-avatar": "Змінити аватар",
"change-password": "Змінити пароль",
"change-permissions": "Change permissions",
"change-settings": "Change Settings",
"changeAvatarPopup-title": "Change Avatar",
"changeLanguagePopup-title": "Change Language",
"changePasswordPopup-title": "Change Password",
"change-settings": "Змінити налаштування",
"changeAvatarPopup-title": "Змінити аватар",
"changeLanguagePopup-title": "Змінити мову",
"changePasswordPopup-title": "Змінити пароль",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
"subtasks": "Subtasks",
"changeSettingsPopup-title": "Змінити налаштування",
"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": "Закрити",
"close-board": "Close Board",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-green": "green",
"color-lime": "lime",
"color-orange": "orange",
"color-pink": "pink",
"color-purple": "purple",
"color-red": "red",
"color-black": "чорний",
"color-blue": "синій",
"color-green": "зелений",
"color-lime": "лайм",
"color-orange": "помаранчевий",
"color-pink": "рожевий",
"color-purple": "фіолетовий",
"color-red": "червоний",
"color-sky": "sky",
"color-yellow": "yellow",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"color-yellow": "жовтий",
"comment": "Коментар",
"comment-placeholder": "Написати коментар",
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"no-comments": "No comments",
"no-comments": "Немає коментарів",
"no-comments-desc": "Can not see comments and activities.",
"computer": "Computer",
"confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copy-card-link-to-clipboard": "Скопіювати посилання на картку в буфер обміну",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"copyCardPopup-title": "Copy Card",
@ -224,7 +224,7 @@
"done": "Done",
"download": "Download",
"edit": "Edit",
"edit-avatar": "Change Avatar",
"edit-avatar": "Змінити аватар",
"edit-profile": "Edit Profile",
"edit-wip-limit": "Edit WIP Limit",
"soft-wip-limit": "Soft WIP Limit",
@ -284,7 +284,7 @@
"import-board-c": "Import board",
"import-board-title-trello": "Import board from Trello",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-sandstorm-backup-warning": "Не видаляйте імпортовані дані з раніше збереженої дошки або Trello, поки не переконаєтеся, що імпорт завершився успішно - вдається закрити і знову відкрити дошку, і не з'являється помилка «Дошка не знайдена», що означає втрату даних.",
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
"from-trello": "From Trello",
"from-wekan": "From previous export",
@ -368,7 +368,7 @@
"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.",
"public-desc": "Цю дошку можуть переглядати усі, у кого є посилання. Також ця дошка може бути проіндексована пошуковими системами. Вносити зміни можуть тільки учасники.",
"quick-access-description": "Star a board to add a shortcut in this bar.",
"remove-cover": "Remove Cover",
"remove-from-board": "Remove from Board",
@ -379,7 +379,7 @@
"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",
"rename-board": "Перейменувати дошку",
"restore": "Restore",
"save": "Save",
"search": "Search",
@ -417,7 +417,7 @@
"time": "Time",
"title": "Title",
"tracking": "Tracking",
"tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
"tracking-info": "Ви будете повідомлені про будь-які зміни в тих картках, в яких ви є творцем або учасником.",
"type": "Type",
"unassign-member": "Unassign member",
"unsaved-description": "You have an unsaved description.",
@ -437,8 +437,8 @@
"welcome-list2": "Advanced",
"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.",
"wipLimitErrorPopup-dialog-pt1": "Кількість завдань у цьому списку перевищує встановлений вами ліміт",
"wipLimitErrorPopup-dialog-pt2": "Будь ласка, перенесіть деякі завдання з цього списку або збільште ліміт на кількість завдань",
"admin-panel": "Admin Panel",
"settings": "Settings",
"people": "People",
@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -1,6 +1,6 @@
{
"accept": "接受",
"act-activity-notify": "Activity Notification",
"act-activity-notify": "活动通知",
"act-addAttachment": "添加附件 __attachment__ 至卡片 __card__",
"act-addSubtask": "添加清单 __checklist__ 到__card__",
"act-addChecklist": "添加清单 __checklist__ 到 __card__",
@ -23,7 +23,7 @@
"act-removeBoardMember": "从看板 __board__ 移除成员 __member__",
"act-restoredCard": "恢复卡片 __card__ 至看板 __board__",
"act-unjoinMember": "从卡片 __card__ 移除成员 __member__",
"act-withBoardTitle": "__board__",
"act-withBoardTitle": "看板__board__",
"act-withCardTitle": "[看板 __board__] 卡片 __card__",
"actions": "操作",
"activities": "活动",
@ -43,7 +43,7 @@
"activity-sent": "发送 %s 至 %s",
"activity-unjoined": "已解除 %s 关联",
"activity-subtask-added": "添加子任务到%s",
"activity-checked-item": "勾选%s于清单 %s 共 %s",
"activity-checked-item": "勾选%s于清单%s 共 %s",
"activity-unchecked-item": "未勾选 %s 于清单 %s 共 %s",
"activity-checklist-added": "已经将清单添加到 %s",
"activity-checklist-removed": "已从%s移除待办清单",
@ -78,19 +78,19 @@
"and-n-other-card": "和其他 __count__ 个卡片",
"and-n-other-card_plural": "和其他 __count__ 个卡片",
"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-is-offline": "加载中,请稍后。刷新页面将导致数据丢失,如果加载长时间不起作用,请检查服务器是否已经停止工作。",
"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?",
"archive-all": "全部归档",
"archive-board": "将看板归档",
"archive-card": "将卡片归档",
"archive-list": "将列表归档",
"archive-swimlane": "将泳道归档",
"archive-selection": "将选择归档",
"archiveBoardPopup-title": "是否归档看板?",
"archived-items": "归档",
"archived-boards": "Boards in Archive",
"archived-boards": "归档的看板",
"restore-board": "还原看板",
"no-archived-boards": "No Boards in Archive.",
"no-archived-boards": "没有归档的看板。",
"archives": "归档",
"assign-member": "分配成员",
"attached": "附加",
@ -118,12 +118,12 @@
"board-view-lists": "列表",
"bucket-example": "例如 “目标清单”",
"cancel": "取消",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"card-archived": "归档这个卡片。",
"board-archived": "归档这个看板。",
"card-comments-title": "该卡片有 %s 条评论",
"card-delete-notice": "彻底删除的操作不可恢复,你将会丢失该卡片相关的所有操作记录。",
"card-delete-pop": "所有的活动将从活动摘要中被移除且您将无法重新打开该卡片。此操作无法撤销。",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-delete-suggest-archive": "您可以移动卡片到活动以便从看板中删除并保持活动。",
"card-due": "到期",
"card-due-on": "期限",
"card-spent": "耗时",
@ -166,7 +166,7 @@
"clipboard": "剪贴板或者拖放文件",
"close": "关闭",
"close-board": "关闭看板",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"close-board-pop": "您可以通过主页头部的“归档”按钮,来恢复看板。",
"color-black": "黑色",
"color-blue": "蓝色",
"color-green": "绿色",
@ -283,20 +283,20 @@
"import-board": "导入看板",
"import-board-c": "导入看板",
"import-board-title-trello": "从Trello导入看板",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-board-title-wekan": "从以前的导出数据导入看板",
"import-sandstorm-backup-warning": "在检查此颗粒是否关闭和再次打开之前不要删除从原始导出的看板或Trello导入的数据否则看板会发生未知的错误这将意味着数据丢失。",
"import-sandstorm-warning": "导入的面板将删除所有已存在于面板上的数据并替换他们为导入的面板。 ",
"from-trello": "自 Trello",
"from-wekan": "From previous export",
"from-wekan": "自以前的导出",
"import-board-instruction-trello": "在你的Trello看板中点击“菜单”然后选择“更多”“打印与导出”“导出为 JSON” 并拷贝结果文本",
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-wekan": "在您的看板,点击“菜单”,然后“导出看板”,复制下载文件中的文本。",
"import-board-instruction-about-errors": "如果在导入看板时出现错误,导入工作可能仍然在进行中,并且看板已经出现在全部看板页。",
"import-json-placeholder": "粘贴您有效的 JSON 数据至此",
"import-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": "您导入的看板有一些成员,请映射这些成员到您导入的用户。",
"import-show-user-mapping": "核对成员映射",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"import-user-select": "为这个成员选择您已经存在的用户",
"importMapMembersAddPopup-title": "选择成员",
"info": "版本",
"initials": "缩写",
"invalid-date": "无效日期",
@ -315,8 +315,8 @@
"leave-board-pop": "确认要离开 __boardTitle__ 吗?此看板的所有卡片都会将您移除。",
"leaveBoardPopup-title": "离开看板?",
"link-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-archive-cards": "将此列表中的所有卡片归档",
"list-archive-cards-pop": "将移动看板中列表的所有卡片,查看或回复归档中的卡片,点击“菜单”->“归档”",
"list-move-cards": "移动列表中的所有卡片",
"list-select-cards": "选择列表中的所有卡片",
"listActionPopup-title": "列表操作",
@ -325,7 +325,7 @@
"listMorePopup-title": "更多",
"link-list": "关联到这个列表",
"list-delete-pop": "所有活动将被从活动动态中删除并且你无法恢复他们,此操作无法撤销。 ",
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
"list-delete-suggest-archive": "您可以移动列表到归档以将其从看板中移除并保留活动。",
"lists": "列表",
"swimlanes": "泳道图",
"log-out": "登出",
@ -345,9 +345,9 @@
"muted-info": "你将不会收到此看板的任何变更通知",
"my-boards": "我的看板",
"name": "名称",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-archived-cards": "存档中没有卡片。",
"no-archived-lists": "存档中没有清单。",
"no-archived-swimlanes": "存档中没有泳道。",
"no-results": "无结果",
"normal": "普通",
"normal-desc": "可以创建以及编辑卡片,无法更改设置。",
@ -427,7 +427,7 @@
"uploaded-avatar": "头像已经上传",
"username": "用户名",
"view-it": "查看",
"warn-list-archived": "warning: this card is in an list at Archive",
"warn-list-archived": "警告:此卡片在列表归档中",
"watch": "关注",
"watching": "关注",
"watching-info": "当此看板发生变更时会通知你",
@ -460,8 +460,8 @@
"send-smtp-test": "给自己发送一封测试邮件",
"invitation-code": "邀请码",
"email-invite-register-subject": "__inviter__ 向您发出邀请",
"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-invite-register-text": "亲爱的__user__\n__inviter__ 邀请您加入到看板\n\n请点击下面的链接\n__url__\n\n您的邀请码是__icode__\n\n谢谢。",
"email-smtp-test-subject": "通过SMTP发送测试邮件",
"email-smtp-test-text": "你已成功发送邮件",
"error-invitation-code-not-exist": "邀请码不存在",
"error-notAuthorized": "您无权查看此页面。",
@ -531,7 +531,7 @@
"r-rule": "规则",
"r-add-trigger": "添加触发器",
"r-add-action": "添加行动",
"r-board-rules": "板规则",
"r-board-rules": "板规则",
"r-add-rule": "添加规则",
"r-view-rule": "查看规则",
"r-delete-rule": "删除规则",
@ -544,12 +544,12 @@
"r-list": "列表",
"r-moved-to": "移至",
"r-moved-from": "已移动",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
"r-archived": "已移动到归档",
"r-unarchived": "已从归档中恢复",
"r-a-card": "一个卡片",
"r-when-a-label-is": "当一个标签是",
"r-when-the-label-is": "当该标签是",
"r-list-name": "清单名称",
"r-list-name": "列表名称",
"r-when-a-member": "当一个成员是",
"r-when-the-member": "当该成员",
"r-name": "名称",
@ -566,9 +566,9 @@
"r-move-card-to": "移动卡片到",
"r-top-of": "的顶部",
"r-bottom-of": "的尾部",
"r-its-list": "其清单",
"r-its-list": "其列表",
"r-archive": "归档",
"r-unarchive": "Restore from Archive",
"r-unarchive": "从归档中恢复",
"r-card": "卡片",
"r-add": "添加",
"r-remove": "移除",
@ -587,29 +587,29 @@
"r-to": "收件人",
"r-subject": "标题",
"r-rule-details": "规则详情",
"r-d-move-to-top-gen": "移动卡片到其清单顶部",
"r-d-move-to-top-spec": "移动卡片到清单顶部",
"r-d-move-to-bottom-gen": "移动卡片到其清单尾部",
"r-d-move-to-bottom-spec": "移动卡片到清单尾部",
"r-d-move-to-top-gen": "移动卡片到其列表顶部",
"r-d-move-to-top-spec": "移动卡片到列表顶部",
"r-d-move-to-bottom-gen": "移动卡片到其列表尾部",
"r-d-move-to-bottom-spec": "移动卡片到列表尾部",
"r-d-send-email": "发送邮件",
"r-d-send-email-to": "收件人",
"r-d-send-email-subject": "标题",
"r-d-send-email-message": "消息",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-archive": "将卡片归档",
"r-d-unarchive": "从归档中恢复卡片",
"r-d-add-label": "添加标签",
"r-d-remove-label": "移除标签",
"r-d-add-member": "添加成员",
"r-d-remove-member": "移除成员",
"r-d-remove-all-member": "移除所有成员",
"r-d-check-all": "勾选所有清单项",
"r-d-uncheck-all": "取消勾选所有清单项",
"r-d-check-all": "勾选所有列表项",
"r-d-uncheck-all": "取消勾选所有列表项",
"r-d-check-one": "勾选该项",
"r-d-uncheck-one": "取消勾选",
"r-d-check-of-list": "清单的",
"r-d-add-checklist": "添加待办清单",
"r-d-remove-checklist": "移待办清单",
"r-when-a-card-is-moved": "当移动卡片到另一个清单时",
"r-d-remove-checklist": "移待办清单",
"r-when-a-card-is-moved": "当移动卡片到另一个列表时",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
@ -617,5 +617,7 @@
"authentication-type": "认证类型",
"custom-product-name": "自定义产品名称",
"layout": "布局",
"hide-logo": "Hide Logo"
"hide-logo": "隐藏LOGO",
"add-custom-html-after-body-start": "添加定制的HTML在开始<body>之前",
"add-custom-html-before-body-end": "添加定制的HTML在结束</body>之后"
}

View file

@ -617,5 +617,7 @@
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo"
"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"
}

View file

@ -32,6 +32,14 @@ Settings.attachSchema(new SimpleSchema({
type: String,
optional: true,
},
customHTMLafterBodyStart: {
type: String,
optional: true,
},
customHTMLbeforeBodyEnd: {
type: String,
optional: true,
},
hideLogo: {
type: Boolean,
optional: true,

View file

@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v1.93.0",
"version": "v1.94.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {

View file

@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
appTitle = (defaultText = "Wekan"),
# The name of the app as it is displayed to the user.
appVersion = 195,
appVersion = 196,
# Increment this for every release.
appMarketingVersion = (defaultText = "1.93.0~2018-12-16"),
appMarketingVersion = (defaultText = "1.94.0~2018-12-18"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,

View file

@ -374,3 +374,27 @@ Migrations.add('add-hide-logo', () => {
},
}, noValidateMulti);
});
Migrations.add('add-custom-html-after-body-start', () => {
Settings.update({
customHTMLafterBodyStart: {
$exists: false,
},
}, {
$set: {
customHTMLafterBodyStart:'',
},
}, noValidateMulti);
});
Migrations.add('add-custom-html-before-body-end', () => {
Settings.update({
customHTMLbeforeBodyEnd: {
$exists: false,
},
}, {
$set: {
customHTMLbeforeBodyEnd:'',
},
}, noValidateMulti);
});

View file

@ -1,5 +1,5 @@
Meteor.publish('setting', () => {
return Settings.find({}, {fields:{disableRegistration: 1, productName: 1, hideLogo: 1}});
return Settings.find({}, {fields:{disableRegistration: 1, productName: 1, hideLogo: 1, customHTMLafterBodyStart: 1, customHTMLbeforeBodyEnd: 1}});
});
Meteor.publish('mailServer', function () {

21
stacksmith/user-scripts/boot.sh Executable file
View file

@ -0,0 +1,21 @@
#!/bin/bash
set -euxo pipefail
# This file will store the config env variables needed by the app
readonly CONF=/build/env.config
# EMAIL_URL can also be set here by injecting another env variable in the template
# ROOT_URL can also be set at runtime, by querying AWS api or by using ingress annotations in the template for k8s.
cat >"${CONF}" <<'EOF'
export MONGO_URL=mongodb://{{DATABASE_USER}}:{{DATABASE_PASSWORD}}@{{DATABASE_HOST}}:{{DATABASE_PORT}}/{{DATABASE_NAME}}
export ROOT_URL=http://localhost
export PORT=3000
EOF
sed -i -e "s/{{DATABASE_USER}}/${DATABASE_USER}/" "${CONF}"
sed -i -e "s/{{DATABASE_PASSWORD}}/${DATABASE_PASSWORD}/" "${CONF}"
sed -i -e "s/{{DATABASE_HOST}}/${DATABASE_HOST}/" "${CONF}"
sed -i -e "s/{{DATABASE_PORT}}/${DATABASE_PORT}/" "${CONF}"
sed -i -e "s/{{DATABASE_NAME}}/${DATABASE_NAME}/" "${CONF}"

View file

@ -0,0 +1,86 @@
#!/bin/bash
set -euxo pipefail
BUILD_DEPS="bsdtar gnupg wget curl bzip2 python git ca-certificates perl-Digest-SHA"
NODE_VERSION=v8.14.0
METEOR_RELEASE=1.6.0.1
USE_EDGE=false
METEOR_EDGE=1.5-beta.17
NPM_VERSION=latest
FIBERS_VERSION=2.0.0
ARCHITECTURE=linux-x64
#NODE_VERSION=v10.14.1
sudo yum groupinstall -y 'Development Tools'
sudo yum install -y http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
sudo yum install -y git
sudo useradd --user-group --system --home-dir /home/wekan wekan
sudo mkdir -p /home/wekan
sudo chown wekan:wekan /home/wekan/
sudo -u wekan git clone https://github.com/wekan/wekan.git /home/wekan/app
sudo yum install -y ${BUILD_DEPS}
# Meteor installer doesn't work with the default tar binary, so using bsdtar while installing.
# https://github.com/coreos/bugs/issues/1095#issuecomment-350574389
sudo cp $(which tar) $(which tar)~
sudo ln -sf $(which bsdtar) $(which tar)
# Install nodejs
wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz
wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc
grep ${NODE_VERSION}-${ARCHITECTURE}.tar.gz SHASUMS256.txt.asc | shasum -a 256 -c -
tar xvzf node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz
rm node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz
sudo mv node-${NODE_VERSION}-${ARCHITECTURE} /opt/nodejs
sudo rm -f /usr/bin/node
sudo rm -f /usr/bin/npm
sudo ln -s /opt/nodejs/bin/node /usr/bin/node || true
sudo ln -s /opt/nodejs/bin/npm /usr/bin/npm || true
sudo npm install -g npm@${NPM_VERSION}
sudo npm install -g node-gyp
sudo npm install -g --unsafe-perm fibers@${FIBERS_VERSION}
cd /home/wekan
#install meteor
sudo curl "https://install.meteor.com" -o /home/wekan/install_meteor.sh
sudo chmod +x /home/wekan/install_meteor.sh
sudo sed -i 's/VERBOSITY="--silent"/VERBOSITY="--progress-bar"/' ./install_meteor.sh
echo "Starting meteor ${METEOR_RELEASE} installation... \n"
# Check if opting for a release candidate instead of major release
if [ "$USE_EDGE" = false ]; then
sudo su -c '/home/wekan/install_meteor.sh' - wekan
else
sudo -u wekan git clone --recursive --depth 1 -b release/METEOR@${METEOR_EDGE} git://github.com/meteor/meteor.git /home/wekan/.meteor;
fi;
# Get additional packages
sudo mkdir -p /home/wekan/app/packages
sudo chown wekan:wekan --recursive /home/wekan/app
cd /home/wekan/app/packages
sudo -u wekan git clone --depth 1 -b master git://github.com/wekan/flow-router.git kadira-flow-router
sudo -u wekan git clone --depth 1 -b master git://github.com/meteor-useraccounts/core.git meteor-useraccounts-core
sudo -u wekan git clone --depth 1 -b master git://github.com/wekan/meteor-accounts-cas.git
sudo -u wekan git clone --depth 1 -b master git://github.com/wekan/wekan-ldap.git
sudo sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' /home/wekan/app/packages/meteor-useraccounts-core/package.js
sudo -u wekan /home/wekan/.meteor/meteor -- help
# Build app
cd /home/wekan/app
meteor=/home/wekan/.meteor/meteor
sudo -u wekan ${meteor} add standard-minifier-js
sudo -u wekan ${meteor} npm install
sudo -u wekan ${meteor} build --directory /home/wekan/app_build
sudo cp /home/wekan/app/fix-download-unicode/cfs_access-point.txt /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js
sudo chown wekan:wekan /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js
cd /home/wekan/app_build/bundle/programs/server/
sudo npm install
sudo chown -R wekan:wekan ./node_modules
sudo mv /home/wekan/app_build/bundle /build

20
stacksmith/user-scripts/run.sh Executable file
View file

@ -0,0 +1,20 @@
#!/bin/bash
set -euo pipefail
readonly CONF=/build/env.config
source ${CONF}
# wait for DB
check_db() {
mongo $MONGO_URL --eval "db.runCommand( { connectionStatus: 1} )" --quiet | python -c 'import json,sys;obj=json.load(sys.stdin);code = 0 if obj["ok"]==1 else 1; sys.exit(code);'
}
until check_db; do
period=5
echo "Cannot connect to db, waiting ${period} seconds before trying again..."
sleep ${period}
done
cd /build
echo "starting the wekan service..."
node main.js