From a1f8776743efb277bbb9212f25ed2330202e9e23 Mon Sep 17 00:00:00 2001 From: "Gabriel A. Devenyi" Date: Tue, 27 May 2025 22:32:36 -0400 Subject: [PATCH 01/11] Fix use of deprecated mc command for bucket creation --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index e7d074ad..d7bd8cb5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -58,7 +58,7 @@ services: sleep 15; for i in 1 2 3 4 5; do echo "Attempt $i to connect to MinIO..."; - if /usr/bin/mc config host add myminio http://minio:9000 minioadmin minioadmin; then + if /usr/bin/mc alias set myminio http://minio:9000 minioadmin minioadmin; then echo "Successfully connected to MinIO!"; /usr/bin/mc mb --ignore-existing myminio/worklenz-bucket; /usr/bin/mc policy set public myminio/worklenz-bucket; From e9f01624393ace326ef3d798dc1b70f328c74990 Mon Sep 17 00:00:00 2001 From: chamiakJ Date: Thu, 12 Jun 2025 09:26:00 +0530 Subject: [PATCH 02/11] Enhance documentation and integrate Google Analytics - Added an Analytics section to the README.md, detailing what is tracked, privacy measures, and opt-out instructions. - Implemented Google Analytics in index.html, including a privacy notice for open source users and environment-specific tracking IDs. - Updated worklenz-frontend README.md to include a License section. --- README.md | 21 +++++++++++++ worklenz-frontend/README.md | 5 ++++ worklenz-frontend/index.html | 57 ++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) diff --git a/README.md b/README.md index e7d4f89b..2e0b1ae5 100644 --- a/README.md +++ b/README.md @@ -192,6 +192,27 @@ Email [info@worklenz.com](mailto:info@worklenz.com) to disclose any security vul This project is licensed under the [MIT License](LICENSE). +## Analytics + +Worklenz uses Google Analytics to understand how the application is being used. This helps us improve the application and make better decisions about future development. + +### What We Track +- Anonymous usage statistics +- Page views and navigation patterns +- Feature usage +- Browser and device information + +### Privacy +- Analytics is opt-in only +- No personal information is collected +- Users can opt-out at any time +- Data is stored according to Google's privacy policy + +### How to Opt-Out +If you've previously opted in and want to opt-out: +1. Clear your browser's local storage for the Worklenz domain +2. Or click the "Decline" button in the analytics notice if it appears + ## Screenshots

diff --git a/worklenz-frontend/README.md b/worklenz-frontend/README.md index 02c573fc..46c4a267 100644 --- a/worklenz-frontend/README.md +++ b/worklenz-frontend/README.md @@ -8,6 +8,7 @@ Worklenz is a project management application built with React, TypeScript, and A - [Project Structure](#project-structure) - [Contributing](#contributing) - [Learn More](#learn-more) +- [License](#license) ## Getting Started @@ -93,3 +94,7 @@ To learn more about the technologies used in this project: - [TypeScript Documentation](https://www.typescriptlang.org/docs/) - [Ant Design Documentation](https://ant.design/docs/react/introduce) - [Vite Documentation](https://vitejs.dev/guide/) + +## License + +Worklenz is open source and released under the [GNU Affero General Public License Version 3 (AGPLv3)](LICENSE). diff --git a/worklenz-frontend/index.html b/worklenz-frontend/index.html index 86abad6e..989d4aa0 100644 --- a/worklenz-frontend/index.html +++ b/worklenz-frontend/index.html @@ -14,6 +14,63 @@ Worklenz + + From 1889c58598cce34bfa8ac22e01d3a5605eca79c6 Mon Sep 17 00:00:00 2001 From: chamiakJ Date: Thu, 12 Jun 2025 09:34:53 +0530 Subject: [PATCH 03/11] Refactor privacy notice implementation in index.html - Introduced a dedicated function to display the privacy notice for users of the open source version. - Updated the styling and content of the privacy notice for improved visibility and clarity. - Added a DOMContentLoaded event listener to conditionally show the notice based on the environment and previous interactions. --- worklenz-frontend/index.html | 45 ++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/worklenz-frontend/index.html b/worklenz-frontend/index.html index 989d4aa0..6d44efb5 100644 --- a/worklenz-frontend/index.html +++ b/worklenz-frontend/index.html @@ -43,33 +43,44 @@ // Initialize analytics initGoogleAnalytics(); - // Show privacy notice only for open source version - if (window.location.hostname !== 'worklenz.com' && - window.location.hostname !== 'app.worklenz.com' && - !localStorage.getItem('privacyNoticeShown')) { + // Function to show privacy notice + function showPrivacyNotice() { const notice = document.createElement('div'); notice.style.cssText = ` position: fixed; - bottom: 20px; - right: 20px; - background: #fff; - padding: 20px; - border-radius: 8px; - box-shadow: 0 2px 10px rgba(0,0,0,0.1); + bottom: 16px; + right: 16px; + background: #222; + color: #f5f5f5; + padding: 12px 16px 10px 16px; + border-radius: 7px; + box-shadow: 0 2px 8px rgba(0,0,0,0.18); z-index: 1000; - max-width: 400px; + max-width: 320px; font-family: Inter, sans-serif; + border: 1px solid #333; + font-size: 0.95rem; `; notice.innerHTML = ` -

Analytics Notice

-

This open source project uses Google Analytics to understand usage patterns and improve the application.

-

We only collect anonymous usage data. No personal information is tracked.

-
- -
+
Analytics Notice
+
This app uses Google Analytics for anonymous usage stats. No personal data is tracked.
+ `; document.body.appendChild(notice); } + + // Wait for DOM to be ready + document.addEventListener('DOMContentLoaded', function() { + // Check if we should show the notice + const isProduction = window.location.hostname === 'worklenz.com' || + window.location.hostname === 'app.worklenz.com'; + const noticeShown = localStorage.getItem('privacyNoticeShown') === 'true'; + + // Show notice if not in production and not shown before + if (!isProduction && !noticeShown) { + showPrivacyNotice(); + } + }); From 69313fba348d2a3d2b25fcb62305310b26af25e2 Mon Sep 17 00:00:00 2001 From: chamiakJ Date: Thu, 12 Jun 2025 09:38:24 +0530 Subject: [PATCH 04/11] Enhance privacy notice functionality in index.html - Updated the privacy notice button to use an ID for easier event handling. - Added an event listener to the button to manage the display of the notice and store user consent in localStorage. --- worklenz-frontend/index.html | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/worklenz-frontend/index.html b/worklenz-frontend/index.html index 6d44efb5..b95b837b 100644 --- a/worklenz-frontend/index.html +++ b/worklenz-frontend/index.html @@ -64,9 +64,16 @@ notice.innerHTML = `
Analytics Notice
This app uses Google Analytics for anonymous usage stats. No personal data is tracked.
- + `; document.body.appendChild(notice); + // Add event listener to button + const btn = notice.querySelector('#analytics-notice-btn'); + btn.addEventListener('click', function(e) { + e.preventDefault(); + localStorage.setItem('privacyNoticeShown', 'true'); + notice.remove(); + }); } // Wait for DOM to be ready From ef299f1f4a2fe7e01cf1f9f12145d6ba2d84a625 Mon Sep 17 00:00:00 2001 From: Omindu Hirushka <102536488+OminduHirushka@users.noreply.github.com> Date: Tue, 17 Jun 2025 16:03:08 +0530 Subject: [PATCH 05/11] albanian language --- .../public/locales/alb/404-page.json | 4 + .../public/locales/alb/account-setup.json | 31 +++++ .../alb/admin-center/current-bill.json | 113 ++++++++++++++++++ .../locales/alb/admin-center/overview.json | 8 ++ .../locales/alb/admin-center/projects.json | 12 ++ .../locales/alb/admin-center/sidebar.json | 8 ++ .../locales/alb/admin-center/teams.json | 33 +++++ .../locales/alb/admin-center/users.json | 9 ++ .../public/locales/alb/all-project-list.json | 23 ++++ .../public/locales/alb/auth/auth-common.json | 5 + .../locales/alb/auth/forgot-password.json | 12 ++ .../public/locales/alb/auth/login.json | 27 +++++ .../public/locales/alb/auth/signup.json | 29 +++++ .../locales/alb/auth/verify-reset-email.json | 14 +++ .../public/locales/alb/common.json | 9 ++ .../alb/create-first-project-form.json | 13 ++ .../locales/alb/create-first-tasks.json | 7 ++ .../public/locales/alb/home.json | 46 +++++++ .../alb/invite-initial-team-members.json | 8 ++ .../public/locales/alb/kanban-board.json | 23 ++++ .../public/locales/alb/license-expired.json | 6 + .../public/locales/alb/navbar.json | 31 +++++ .../locales/alb/organization-name-form.json | 5 + .../public/locales/alb/phases-drawer.json | 7 ++ .../public/locales/alb/project-drawer.json | 42 +++++++ .../locales/alb/project-view-files.json | 14 +++ .../locales/alb/project-view-insights.json | 41 +++++++ .../locales/alb/project-view-members.json | 17 +++ .../locales/alb/project-view-updates.json | 6 + .../project-view/import-task-templates.json | 11 ++ .../project-view/project-member-drawer.json | 7 ++ .../alb/project-view/project-view-header.json | 13 ++ .../alb/project-view/save-as-template.json | 27 +++++ .../locales/alb/reporting-members-drawer.json | 90 ++++++++++++++ .../public/locales/alb/reporting-members.json | 35 ++++++ .../alb/reporting-overview-drawer.json | 39 ++++++ .../locales/alb/reporting-overview.json | 25 ++++ .../alb/reporting-projects-drawer.json | 59 +++++++++ .../alb/reporting-projects-filters.json | 35 ++++++ .../locales/alb/reporting-projects.json | 52 ++++++++ .../public/locales/alb/reporting-sidebar.json | 8 ++ .../public/locales/alb/schedule.json | 39 ++++++ .../locales/alb/settings/categories.json | 10 ++ .../locales/alb/settings/change-password.json | 15 +++ .../public/locales/alb/settings/clients.json | 22 ++++ .../locales/alb/settings/job-titles.json | 20 ++++ .../public/locales/alb/settings/labels.json | 11 ++ .../public/locales/alb/settings/language.json | 7 ++ .../locales/alb/settings/notifications.json | 11 ++ .../public/locales/alb/settings/profile.json | 13 ++ .../alb/settings/project-templates.json | 8 ++ .../public/locales/alb/settings/sidebar.json | 14 +++ .../locales/alb/settings/task-templates.json | 9 ++ .../locales/alb/settings/team-members.json | 44 +++++++ .../alb/task-drawer/task-drawer-info-tab.json | 29 +++++ .../locales/alb/task-drawer/task-drawer.json | 78 ++++++++++++ .../public/locales/alb/task-list-filters.json | 59 +++++++++ .../public/locales/alb/task-list-table.json | 63 ++++++++++ .../locales/alb/task-template-drawer.json | 11 ++ .../alb/tasks/task-table-bulk-actions.json | 24 ++++ .../public/locales/alb/template-drawer.json | 19 +++ .../public/locales/alb/templateDrawer.json | 23 ++++ .../public/locales/alb/time-report.json | 44 +++++++ .../public/locales/alb/unauthorized.json | 5 + 64 files changed, 1582 insertions(+) create mode 100644 worklenz-frontend/public/locales/alb/404-page.json create mode 100644 worklenz-frontend/public/locales/alb/account-setup.json create mode 100644 worklenz-frontend/public/locales/alb/admin-center/current-bill.json create mode 100644 worklenz-frontend/public/locales/alb/admin-center/overview.json create mode 100644 worklenz-frontend/public/locales/alb/admin-center/projects.json create mode 100644 worklenz-frontend/public/locales/alb/admin-center/sidebar.json create mode 100644 worklenz-frontend/public/locales/alb/admin-center/teams.json create mode 100644 worklenz-frontend/public/locales/alb/admin-center/users.json create mode 100644 worklenz-frontend/public/locales/alb/all-project-list.json create mode 100644 worklenz-frontend/public/locales/alb/auth/auth-common.json create mode 100644 worklenz-frontend/public/locales/alb/auth/forgot-password.json create mode 100644 worklenz-frontend/public/locales/alb/auth/login.json create mode 100644 worklenz-frontend/public/locales/alb/auth/signup.json create mode 100644 worklenz-frontend/public/locales/alb/auth/verify-reset-email.json create mode 100644 worklenz-frontend/public/locales/alb/common.json create mode 100644 worklenz-frontend/public/locales/alb/create-first-project-form.json create mode 100644 worklenz-frontend/public/locales/alb/create-first-tasks.json create mode 100644 worklenz-frontend/public/locales/alb/home.json create mode 100644 worklenz-frontend/public/locales/alb/invite-initial-team-members.json create mode 100644 worklenz-frontend/public/locales/alb/kanban-board.json create mode 100644 worklenz-frontend/public/locales/alb/license-expired.json create mode 100644 worklenz-frontend/public/locales/alb/navbar.json create mode 100644 worklenz-frontend/public/locales/alb/organization-name-form.json create mode 100644 worklenz-frontend/public/locales/alb/phases-drawer.json create mode 100644 worklenz-frontend/public/locales/alb/project-drawer.json create mode 100644 worklenz-frontend/public/locales/alb/project-view-files.json create mode 100644 worklenz-frontend/public/locales/alb/project-view-insights.json create mode 100644 worklenz-frontend/public/locales/alb/project-view-members.json create mode 100644 worklenz-frontend/public/locales/alb/project-view-updates.json create mode 100644 worklenz-frontend/public/locales/alb/project-view/import-task-templates.json create mode 100644 worklenz-frontend/public/locales/alb/project-view/project-member-drawer.json create mode 100644 worklenz-frontend/public/locales/alb/project-view/project-view-header.json create mode 100644 worklenz-frontend/public/locales/alb/project-view/save-as-template.json create mode 100644 worklenz-frontend/public/locales/alb/reporting-members-drawer.json create mode 100644 worklenz-frontend/public/locales/alb/reporting-members.json create mode 100644 worklenz-frontend/public/locales/alb/reporting-overview-drawer.json create mode 100644 worklenz-frontend/public/locales/alb/reporting-overview.json create mode 100644 worklenz-frontend/public/locales/alb/reporting-projects-drawer.json create mode 100644 worklenz-frontend/public/locales/alb/reporting-projects-filters.json create mode 100644 worklenz-frontend/public/locales/alb/reporting-projects.json create mode 100644 worklenz-frontend/public/locales/alb/reporting-sidebar.json create mode 100644 worklenz-frontend/public/locales/alb/schedule.json create mode 100644 worklenz-frontend/public/locales/alb/settings/categories.json create mode 100644 worklenz-frontend/public/locales/alb/settings/change-password.json create mode 100644 worklenz-frontend/public/locales/alb/settings/clients.json create mode 100644 worklenz-frontend/public/locales/alb/settings/job-titles.json create mode 100644 worklenz-frontend/public/locales/alb/settings/labels.json create mode 100644 worklenz-frontend/public/locales/alb/settings/language.json create mode 100644 worklenz-frontend/public/locales/alb/settings/notifications.json create mode 100644 worklenz-frontend/public/locales/alb/settings/profile.json create mode 100644 worklenz-frontend/public/locales/alb/settings/project-templates.json create mode 100644 worklenz-frontend/public/locales/alb/settings/sidebar.json create mode 100644 worklenz-frontend/public/locales/alb/settings/task-templates.json create mode 100644 worklenz-frontend/public/locales/alb/settings/team-members.json create mode 100644 worklenz-frontend/public/locales/alb/task-drawer/task-drawer-info-tab.json create mode 100644 worklenz-frontend/public/locales/alb/task-drawer/task-drawer.json create mode 100644 worklenz-frontend/public/locales/alb/task-list-filters.json create mode 100644 worklenz-frontend/public/locales/alb/task-list-table.json create mode 100644 worklenz-frontend/public/locales/alb/task-template-drawer.json create mode 100644 worklenz-frontend/public/locales/alb/tasks/task-table-bulk-actions.json create mode 100644 worklenz-frontend/public/locales/alb/template-drawer.json create mode 100644 worklenz-frontend/public/locales/alb/templateDrawer.json create mode 100644 worklenz-frontend/public/locales/alb/time-report.json create mode 100644 worklenz-frontend/public/locales/alb/unauthorized.json diff --git a/worklenz-frontend/public/locales/alb/404-page.json b/worklenz-frontend/public/locales/alb/404-page.json new file mode 100644 index 00000000..a5e803fe --- /dev/null +++ b/worklenz-frontend/public/locales/alb/404-page.json @@ -0,0 +1,4 @@ +{ + "doesNotExistText": "Na vjen keq, faqja që kërkoni nuk ekziston.", + "backHomeButton": "Kthehu në Faqen Kryesore" +} diff --git a/worklenz-frontend/public/locales/alb/account-setup.json b/worklenz-frontend/public/locales/alb/account-setup.json new file mode 100644 index 00000000..d5f624b3 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/account-setup.json @@ -0,0 +1,31 @@ +{ + "continue": "Vazhdo", + + "setupYourAccount": "Konfiguro Llogarinë Tënde në Worklenz.", + "organizationStepTitle": "Emërtoni Organizatën Tuaj", + "organizationStepLabel": "Zgjidhni një emër për llogarinë tuaj në Worklenz.", + + "projectStepTitle": "Krijoni projektin tuaj të parë", + "projectStepLabel": "Në cilin projekt po punoni aktualisht?", + "projectStepPlaceholder": "p.sh. Plani i Marketingut", + + "tasksStepTitle": "Krijoni detyrat tuaja të para", + "tasksStepLabel": "Shkruani disa detyra që do të kryeni në", + "tasksStepAddAnother": "Shto një tjetër", + + "emailPlaceholder": "Adresa email", + "invalidEmail": "Ju lutemi vendosni një adresë email të vlefshme", + "or": "ose", + "templateButton": "Importo nga shablloni", + "goBack": "Kthehu Mbrapa", + "cancel": "Anulo", + "create": "Krijo", + "templateDrawerTitle": "Zgjidh nga shabllonet", + "step3InputLabel": "Fto me email", + "addAnother": "Shto një tjetër", + "skipForNow": "Kalo tani për tani", + "formTitle": "Krijoni detyrën tuaj të parë.", + "step3Title": "Fto ekipin tënd të punojë me", + "maxMembers": " (Mund të ftoni deri në 5 anëtarë)", + "maxTasks": " (Mund të krijoni deri në 5 detyra)" +} diff --git a/worklenz-frontend/public/locales/alb/admin-center/current-bill.json b/worklenz-frontend/public/locales/alb/admin-center/current-bill.json new file mode 100644 index 00000000..1f76f32b --- /dev/null +++ b/worklenz-frontend/public/locales/alb/admin-center/current-bill.json @@ -0,0 +1,113 @@ +{ + "title": "Faturimet", + "currentBill": "Fatura Aktuale", + "configuration": "Konfigurimi", + "currentPlanDetails": "Detajet e Planit Aktual", + "upgradePlan": "Përmirëso Planin", + "cardBodyText01": "Provë falas", + "cardBodyText02": "(Plani juaj i provës skadon në 1 muaj 19 ditë)", + "redeemCode": "Kodi i Zbritjes", + "accountStorage": "Depozita e Llogarisë", + "used": "Përdorur:", + "remaining": "E mbetur:", + "charges": "Tarifat", + "tooltip": "Tarifat për ciklin aktual të faturimit", + "description": "Përshkrimi", + "billingPeriod": "Periudha e Faturimit", + "billStatus": "Statusi i Faturës", + "perUserValue": "Vlera për Përdorues", + "users": "Përdoruesit", + + "amount": "Shuma", + "invoices": "Faturat", + "transactionId": "ID e Transaksionit", + "transactionDate": "Data e Transaksionit", + "paymentMethod": "Metoda e Pagesës", + "status": "Statusi", + "ltdUsers": "Mund të shtoni deri në {{ltd_users}} përdorues.", + + "totalSeats": "Vende totale", + "availableSeats": "Vende të disponueshme", + "addMoreSeats": "Shto më shumë vende", + + "drawerTitle": "Kodi i Zbritjes", + "label": "Kodi i Zbritjes", + "drawerPlaceholder": "Vendosni kodin tuaj të zbritjes", + "redeemSubmit": "Paraqit", + + "modalTitle": "Zgjidhni planin më të mirë për ekipin tuaj", + "seatLabel": "Numri i vendeve", + "freePlan": "Plan Falas", + "startup": "Startup", + "business": "Biznes", + "tag": "Më i Popullarizuar", + "enterprise": "Ndërmarrje", + + "freeSubtitle": "falas përgjithmonë", + "freeUsers": "Më e mira për përdorim personal", + "freeText01": "100MB depozitë", + "freeText02": "3 projekte", + "freeText03": "5 anëtarë të ekipit", + + "startupSubtitle": "ÇMIM I RASTËSISHËM / muaj", + "startupUsers": "Deri në 15 përdorues", + "startupText01": "25GB depozitë", + "startupText02": "Projekte të pakufizuara aktive", + "startupText03": "Orar", + "startupText04": "Raportim", + "startupText05": "Abonohu në projekte", + + "businessSubtitle": "përdorues / muaj", + "businessUsers": "16 - 200 përdorues", + + "enterpriseUsers": "200 - 500+ përdorues", + + "footerTitle": "Ju lutemi na jepni një numër kontakti që mund të përdorim për t'ju kontaktuar.", + "footerLabel": "Numri i Kontaktit", + "footerButton": "Na kontaktoni", + + "redeemCodePlaceHolder": "Vendosni kodin tuaj të zbritjes", + "submit": "Paraqit", + + "trialPlan": "Provë Falas", + "trialExpireDate": "E vlefshme deri më {{trial_expire_date}}", + "trialExpired": "Provat tuaja falas skaduan {{trial_expire_string}}", + "trialInProgress": "Provat tuaja falas skadojnë {{trial_expire_string}}", + + "required": "Kjo fushë është e detyrueshme", + "invalidCode": "Kod i pavlefshëm", + + "selectPlan": "Zgjidhni planin më të mirë për ekipin tuaj", + "changeSubscriptionPlan": "Ndryshoni planin tuaj të abonimit", + "noOfSeats": "Numri i vendeve", + "annualPlan": "Pro - Vjetor", + "monthlyPlan": "Pro - Mujor", + "freeForever": "Falas Përgjithmonë", + "bestForPersonalUse": "Më e mira për përdorim personal", + "storage": "Depozitë", + "projects": "Projekte", + "teamMembers": "Anëtarët e Ekipit", + "unlimitedTeamMembers": "Anëtarë të pakufizuar të ekipit", + "unlimitedActiveProjects": "Projekte të pakufizuara aktive", + "schedule": "Orar", + "reporting": "Raportim", + "subscribeToProjects": "Abonohu në projekte", + "billedAnnually": "Faturuar çdo vit", + "billedMonthly": "Faturuar çdo muaj", + + "pausePlan": "Pauzë Planin", + "resumePlan": "Rifillo Planin", + "changePlan": "Ndrysho Planin", + "cancelPlan": "Anulo Planin", + + "perMonthPerUser": "për përdorues/muaj", + "viewInvoice": "Shiko Faturën", + "switchToFreePlan": "Kalo në Planin Falas", + + "expirestoday": "sot", + "expirestomorrow": "nesër", + "expiredDaysAgo": "{{days}} ditë më parë", + + "continueWith": "Vazhdo me {{plan}}", + "changeToPlan": "Ndrysho në {{plan}}" +} diff --git a/worklenz-frontend/public/locales/alb/admin-center/overview.json b/worklenz-frontend/public/locales/alb/admin-center/overview.json new file mode 100644 index 00000000..296eae4c --- /dev/null +++ b/worklenz-frontend/public/locales/alb/admin-center/overview.json @@ -0,0 +1,8 @@ +{ + "overview": "Përmbledhje", + "name": "Emri i Organizatës", + "owner": "Pronari i Organizatës", + "admins": "Administruesit e Organizatës", + "contactNumber": "Shto Numrin e Kontaktit", + "edit": "Redakto" +} diff --git a/worklenz-frontend/public/locales/alb/admin-center/projects.json b/worklenz-frontend/public/locales/alb/admin-center/projects.json new file mode 100644 index 00000000..356aaec9 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/admin-center/projects.json @@ -0,0 +1,12 @@ +{ + "membersCount": "Numri i Anëtarëve", + "createdAt": "Krijuar më", + "projectName": "Emri i Projektit", + "teamName": "Emri i Ekipit", + "refreshProjects": "Rifresko Projektet", + "searchPlaceholder": "Kërkoni sipas emrit të projektit", + "deleteProject": "Jeni i sigurt që dëshironi të fshini këtë projekt?", + "confirm": "Konfirmo", + "cancel": "Anulo", + "delete": "Fshi Projektin" +} diff --git a/worklenz-frontend/public/locales/alb/admin-center/sidebar.json b/worklenz-frontend/public/locales/alb/admin-center/sidebar.json new file mode 100644 index 00000000..584a9a10 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/admin-center/sidebar.json @@ -0,0 +1,8 @@ +{ + "overview": "Përmbledhje", + "users": "Përdoruesit", + "teams": "Ekipet", + "billing": "Faturimi", + "projects": "Projektet", + "adminCenter": "Qendra Administrative" +} diff --git a/worklenz-frontend/public/locales/alb/admin-center/teams.json b/worklenz-frontend/public/locales/alb/admin-center/teams.json new file mode 100644 index 00000000..de37bf7a --- /dev/null +++ b/worklenz-frontend/public/locales/alb/admin-center/teams.json @@ -0,0 +1,33 @@ +{ + "title": "Ekipet", + "subtitle": "ekipet", + "tooltip": "Rifresko ekipet", + "placeholder": "Kërko sipas emrit", + "addTeam": "Shto Ekip", + "team": "Ekipi", + "membersCount": "Numri i Anëtarëve", + "members": "Anëtarët", + "drawerTitle": "Krijo Ekip të Ri", + "label": "Emri i Ekipit", + "drawerPlaceholder": "Emri", + "create": "Krijo", + "delete": "Fshi", + "settings": "Cilësimet", + "popTitle": "Jeni i sigurt?", + "message": "Ju lutemi shkruani një Emër", + "teamSettings": "Cilësimet e Ekipit", + "teamName": "Emri i Ekipit", + "teamDescription": "Përshkrimi i Ekipit", + "teamMembers": "Anëtarët e Ekipit", + "teamMembersCount": "Numri i Anëtarëve të Ekipit", + "teamMembersPlaceholder": "Kërko sipas emrit", + "addMember": "Shto Anëtar", + "add": "Shto", + "update": "Përditëso", + "teamNamePlaceholder": "Emri i ekipit", + "user": "Përdoruesi", + "role": "Roli", + "owner": "Pronari", + "admin": "Administruesi", + "member": "Anëtari" +} diff --git a/worklenz-frontend/public/locales/alb/admin-center/users.json b/worklenz-frontend/public/locales/alb/admin-center/users.json new file mode 100644 index 00000000..9cfe7956 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/admin-center/users.json @@ -0,0 +1,9 @@ +{ + "title": "Përdoruesit", + "subTitle": "përdoruesit", + "placeholder": "Kërko sipas emrit", + "user": "Përdoruesi", + "email": "Email", + "lastActivity": "Aktiviteti i Fundit", + "refresh": "Rifresko përdoruesit" +} diff --git a/worklenz-frontend/public/locales/alb/all-project-list.json b/worklenz-frontend/public/locales/alb/all-project-list.json new file mode 100644 index 00000000..0e090edb --- /dev/null +++ b/worklenz-frontend/public/locales/alb/all-project-list.json @@ -0,0 +1,23 @@ +{ + "name": "Emri", + "client": "Klienti", + "category": "Kategoria", + "status": "Statusi", + "tasksProgress": "Progresi i Detyrave", + "updated_at": "Përditësuar Së Fundi", + "members": "Anëtarët", + "setting": "Cilësimet", + "projects": "Projektet", + "refreshProjects": "Rifresko projektet", + "all": "Të Gjitha", + "favorites": "Të Preferuarat", + "archived": "Të Arkivuara", + "placeholder": "Kërko sipas emrit", + "archive": "Arkivo", + "unarchive": "Ç'arkivo", + "archiveConfirm": "Jeni i sigurt që doni ta arkivoni këtë projekt?", + "unarchiveConfirm": "Jeni i sigurt që doni ta çarkivoni këtë projekt?", + "clickToFilter": "Klikoni për të filtruar sipas", + "noProjects": "Nuk u gjetën projekte", + "addToFavourites": "Shto në të preferuarat" +} diff --git a/worklenz-frontend/public/locales/alb/auth/auth-common.json b/worklenz-frontend/public/locales/alb/auth/auth-common.json new file mode 100644 index 00000000..5f687234 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/auth/auth-common.json @@ -0,0 +1,5 @@ +{ + "loggingOut": "Po dilni...", + "authenticating": "Po autentikoheni...", + "gettingThingsReady": "Po përgatiten gjërat për ju..." +} diff --git a/worklenz-frontend/public/locales/alb/auth/forgot-password.json b/worklenz-frontend/public/locales/alb/auth/forgot-password.json new file mode 100644 index 00000000..2ee64388 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/auth/forgot-password.json @@ -0,0 +1,12 @@ +{ + "headerDescription": "Rivendosni fjalëkalimin tuaj", + "emailLabel": "Email", + "emailPlaceholder": "Vendosni email-in tuaj", + "emailRequired": "Ju lutemi vendosni Email-in tuaj!", + "resetPasswordButton": "Rivendos Fjalëkalimin", + "returnToLoginButton": "Kthehu te Hyrja", + "passwordResetSuccessMessage": "Një lidhje për rivendosjen e fjalëkalimit është dërguar në email-in tuaj.", + "orText": "OSE", + "successTitle": "U dërguan udhëzimet për rivendosje!", + "successMessage": "Informacioni për rivendosje është dërguar në email-in tuaj. Ju lutemi kontrolloni email-in." +} diff --git a/worklenz-frontend/public/locales/alb/auth/login.json b/worklenz-frontend/public/locales/alb/auth/login.json new file mode 100644 index 00000000..668b4fdc --- /dev/null +++ b/worklenz-frontend/public/locales/alb/auth/login.json @@ -0,0 +1,27 @@ +{ + "headerDescription": "Hyni në llogarinë tuaj", + "emailLabel": "Email", + "emailPlaceholder": "Vendosni email-in tuaj", + "emailRequired": "Ju lutemi vendosni Email-in tuaj!", + "passwordLabel": "Fjalëkalimi", + "passwordPlaceholder": "Vendosni fjalëkalimin", + "passwordRequired": "Ju lutemi vendosni Fjalëkalimin!", + "rememberMe": "Më mbaj mend", + "loginButton": "Hyr", + "signupButton": "Regjistrohu", + "forgotPasswordButton": "Keni harruar fjalëkalimin?", + "signInWithGoogleButton": "Hyr me Google", + "dontHaveAccountText": "Nuk keni llogari?", + "orText": "OSE", + "successMessage": "Jeni futur me sukses!", + "loginError": "Hyrja dështoi", + "googleLoginError": "Hyrja përmes Google dështoi", + "validationMessages": { + "email": "Ju lutemi vendosni një adresë email të vlefshme", + "password": "Fjalëkalimi duhet të jetë së paku 8 karaktere" + }, + "errorMessages": { + "loginErrorTitle": "Hyrja dështoi", + "loginErrorMessage": "Ju lutemi kontrolloni email-in dhe fjalëkalimin dhe provoni përsëri" + } +} diff --git a/worklenz-frontend/public/locales/alb/auth/signup.json b/worklenz-frontend/public/locales/alb/auth/signup.json new file mode 100644 index 00000000..1dac7a39 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/auth/signup.json @@ -0,0 +1,29 @@ +{ + "headerDescription": "Regjistrohuni për të filluar", + "nameLabel": "Emri i Plotë", + "namePlaceholder": "Shkruani emrin tuaj të plotë", + "nameRequired": "Ju lutemi shkruani emrin tuaj të plotë!", + "nameMinCharacterRequired": "Emri duhet të jetë së paku 4 karaktere!", + "emailLabel": "Email", + "emailPlaceholder": "Shkruani email-in tuaj", + "emailRequired": "Ju lutemi shkruani Email-in tuaj!", + "passwordLabel": "Fjalëkalimi", + "passwordPlaceholder": "Krijoni një fjalëkalim", + "passwordRequired": "Ju lutemi krijoni një Fjalëkalim!", + "passwordMinCharacterRequired": "Fjalëkalimi duhet të jetë së paku 8 karaktere!", + "passwordPatternRequired": "Fjalëkalimi nuk plotëson kërkesat!", + "strongPasswordPlaceholder": "Vendosni një fjalëkalim më të fortë", + "passwordValidationAltText": "Fjalëkalimi duhet të përmbajë së paku 8 karaktere me shkronja të mëdha dhe të vogla, një numër dhe një simbol.", + "signupSuccessMessage": "Jeni regjistruar me sukses!", + "privacyPolicyLink": "Politika e Privatësisë", + "termsOfUseLink": "Kushtet e Përdorimit", + "bySigningUpText": "Duke u regjistruar, ju pranoni", + "andText": "dhe", + "signupButton": "Regjistrohu", + "signInWithGoogleButton": "Hyr me Google", + "alreadyHaveAccountText": "Keni tashmë një llogari?", + "loginButton": "Hyr", + "orText": "OSE", + "reCAPTCHAVerificationError": "Gabim në Verifikimin e reCAPTCHA", + "reCAPTCHAVerificationErrorMessage": "Nuk mundëm të verifikojmë reCAPTCHA-n tuaj. Ju lutemi provoni përsëri." +} diff --git a/worklenz-frontend/public/locales/alb/auth/verify-reset-email.json b/worklenz-frontend/public/locales/alb/auth/verify-reset-email.json new file mode 100644 index 00000000..16017318 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/auth/verify-reset-email.json @@ -0,0 +1,14 @@ +{ + "title": "Verifikoni Email-in për Rivendosje", + "description": "Vendosni fjalëkalimin tuaj të ri", + "placeholder": "Vendosni fjalëkalimin tuaj të ri", + "confirmPasswordPlaceholder": "Konfirmoni fjalëkalimin e ri", + "passwordHint": "Të paktën 8 karaktere, me shkronja të mëdha dhe të vogla, një numër dhe një simbol.", + "resetPasswordButton": "Rivendos fjalëkalimin", + "orText": "Ose", + "resendResetEmail": "Dërgo përsëri email-in e rivendosjes", + "passwordRequired": "Ju lutemi vendosni fjalëkalimin e ri", + "returnToLoginButton": "Kthehu te Hyrja", + "confirmPasswordRequired": "Ju lutemi konfirmoni fjalëkalimin e ri", + "passwordMismatch": "Fjalëkalimet nuk përputhen" +} diff --git a/worklenz-frontend/public/locales/alb/common.json b/worklenz-frontend/public/locales/alb/common.json new file mode 100644 index 00000000..5af25f69 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/common.json @@ -0,0 +1,9 @@ +{ + "login-success": "Hyrja u krye me sukses!", + "login-failed": "Hyrja dështoi. Ju lutemi kontrolloni kredencialet dhe provoni përsëri.", + "signup-success": "Regjistrimi u krye me sukses! Mirë se erdhët.", + "signup-failed": "Regjistrimi dështoi. Ju lutemi sigurohuni që të gjitha fushat e nevojshme janë plotësuar dhe provoni përsëri.", + "reconnecting": "Jeni shkëputur nga serveri.", + "connection-lost": "Lidhja me serverin dështoi. Ju lutemi kontrolloni lidhjen tuaj me internet.", + "connection-restored": "U lidhët me serverin me sukses" +} diff --git a/worklenz-frontend/public/locales/alb/create-first-project-form.json b/worklenz-frontend/public/locales/alb/create-first-project-form.json new file mode 100644 index 00000000..80c3bb86 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/create-first-project-form.json @@ -0,0 +1,13 @@ +{ + "formTitle": "Krijoni projektin tuaj të parë", + "inputLabel": "Në cilin projekt po punoni aktualisht?", + "or": "ose", + "templateButton": "Importo nga shablloni", + "createFromTemplate": "Krijo nga shablloni", + "goBack": "Kthehu Mbrapa", + "continue": "Vazhdo", + "cancel": "Anulo", + "create": "Krijo", + "templateDrawerTitle": "Zgjidh nga shabllonet", + "createProject": "Krijo Projekt" +} diff --git a/worklenz-frontend/public/locales/alb/create-first-tasks.json b/worklenz-frontend/public/locales/alb/create-first-tasks.json new file mode 100644 index 00000000..5e74d7d4 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/create-first-tasks.json @@ -0,0 +1,7 @@ +{ + "formTitle": "Krijo detyrën tënde të parë.", + "inputLabel": "Shkruaj disa detyra që do të kryesh në", + "addAnother": "Shto një tjetër", + "goBack": "Kthehu mbrapa", + "continue": "Vazhdo" +} diff --git a/worklenz-frontend/public/locales/alb/home.json b/worklenz-frontend/public/locales/alb/home.json new file mode 100644 index 00000000..58d26e0b --- /dev/null +++ b/worklenz-frontend/public/locales/alb/home.json @@ -0,0 +1,46 @@ +{ + "todoList": { + "title": "Lista e Detyrave", + "refreshTasks": "Rifresko detyrat", + "addTask": "+ Shto Detyrë", + "noTasks": "Asnjë detyrë", + "pressEnter": "Shtyp", + "toCreate": "për të krijuar.", + "markAsDone": "Shëno si të përfunduar" + }, + "projects": { + "title": "Projektet", + "refreshProjects": "Rifresko projektet", + "noRecentProjects": "Aktualisht nuk jeni caktuar në asnjë projekt.", + "noFavouriteProjects": "Asnjë projekt i shënuar si i preferuar.", + "recent": "Të Fundit", + "favourites": "Të Preferuarat" + }, + "tasks": { + "assignedToMe": "Më janë caktuar", + "assignedByMe": "I kam caktuar", + "all": "Të Gjitha", + "today": "Sot", + "upcoming": "Ardhj", + "overdue": "Të vonuara", + "noDueDate": "Pa afat", + "noTasks": "Asnjë detyrë për të shfaqur.", + "addTask": "+ Shto detyrë", + "name": "Emri", + "project": "Projekti", + "status": "Statusi", + "dueDate": "Afati", + "dueDatePlaceholder": "Cakto Afatin", + "tomorrow": "Nesër", + "nextWeek": "Javën e Ardhshme", + "nextMonth": "Muajin e Ardhshëm", + "projectRequired": "Ju lutemi zgjidhni një projekt", + "pressTabToSelectDueDateAndProject": "Shtyp Tab për të zgjedhur afatin dhe projektin", + "dueOn": "Detyrat me afat më", + "taskRequired": "Ju lutemi shtoni një detyrë", + "list": "Listë", + "calendar": "Kalendar", + "tasks": "Detyrat", + "refresh": "Rifresko" + } +} diff --git a/worklenz-frontend/public/locales/alb/invite-initial-team-members.json b/worklenz-frontend/public/locales/alb/invite-initial-team-members.json new file mode 100644 index 00000000..c86da726 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/invite-initial-team-members.json @@ -0,0 +1,8 @@ +{ + "formTitle": "Fto ekipin tënd të punojë me", + "inputLabel": "Fto me email", + "addAnother": "Shto një tjetër", + "goBack": "Kthehu mbrapa", + "continue": "Vazhdo", + "skipForNow": "Anashkalo tani për tani" +} diff --git a/worklenz-frontend/public/locales/alb/kanban-board.json b/worklenz-frontend/public/locales/alb/kanban-board.json new file mode 100644 index 00000000..e14f338b --- /dev/null +++ b/worklenz-frontend/public/locales/alb/kanban-board.json @@ -0,0 +1,23 @@ +{ + "rename": "Riemërto", + "delete": "Fshi", + "addTask": "Shto Detyrë", + "addSectionButton": "Shto Seksion", + "changeCategory": "Ndrysho kategorinë", + + "deleteTooltip": "Fshi", + "deleteConfirmationTitle": "Jeni i sigurt?", + "deleteConfirmationOk": "Po", + "deleteConfirmationCancel": "Anulo", + + "dueDate": "Data e përfundimit", + "cancel": "Anulo", + + "today": "Sot", + "tomorrow": "Nesër", + "assignToMe": "Cakto mua", + "archive": "Arkivo", + + "newTaskNamePlaceholder": "Shkruaj emrin e detyrës", + "newSubtaskNamePlaceholder": "Shkruaj emrin e nëndetyrës" +} diff --git a/worklenz-frontend/public/locales/alb/license-expired.json b/worklenz-frontend/public/locales/alb/license-expired.json new file mode 100644 index 00000000..94abf5ae --- /dev/null +++ b/worklenz-frontend/public/locales/alb/license-expired.json @@ -0,0 +1,6 @@ +{ + "title": "Prova juaj e Worklenz ka skaduar!", + "subtitle": "Ju lutemi përmirësoni tani.", + "button": "Përmirëso tani", + "checking": "Po kontrollohet statusi i abonimit..." +} diff --git a/worklenz-frontend/public/locales/alb/navbar.json b/worklenz-frontend/public/locales/alb/navbar.json new file mode 100644 index 00000000..88c53de4 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/navbar.json @@ -0,0 +1,31 @@ +{ + "logoAlt": "Logoja e Worklenz", + "home": "Kryefaqja", + "projects": "Projektet", + "schedule": "Orari", + "reporting": "Raportimi", + "clients": "Klientët", + "teams": "Ekipet", + "labels": "Etiketa", + "jobTitles": "Tituj Pune", + "upgradePlan": "Përmirëso Abonimin", + "upgradePlanTooltip": "Përmirëso abonimin", + "invite": "Fto", + "inviteTooltip": "Fto anëtarë të ekipit të bashkohen", + "switchTeamTooltip": "Ndrysho ekipin", + "help": "Ndihmë", + "notificationTooltip": "Shiko njoftimet", + "profileTooltip": "Shiko profilin", + "adminCenter": "Qendra Administrative", + "settings": "Cilësimet", + "logOut": "Dil", + "notificationsDrawer": { + "read": "Lexuara e njoftimet ", + "unread": "Njoftimet e palexuara", + "markAsRead": "Shëno si të lexuara", + "readAndJoin": "Lexo & Bashkohu", + "accept": "Prano", + "acceptAndJoin": "Prano & Bashkohu", + "noNotifications": "Asnjë njoftim" + } +} diff --git a/worklenz-frontend/public/locales/alb/organization-name-form.json b/worklenz-frontend/public/locales/alb/organization-name-form.json new file mode 100644 index 00000000..d01b09c8 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/organization-name-form.json @@ -0,0 +1,5 @@ +{ + "nameYourOrganization": "Emërtoni organizatën tuaj.", + "worklenzAccountTitle": "Zgjidhni një emër për llogarinë tuaj në Worklenz.", + "continue": "Vazhdo" +} diff --git a/worklenz-frontend/public/locales/alb/phases-drawer.json b/worklenz-frontend/public/locales/alb/phases-drawer.json new file mode 100644 index 00000000..de34c740 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/phases-drawer.json @@ -0,0 +1,7 @@ +{ + "configurePhases": "Konfiguro Fazat", + "phaseLabel": "Etiketa e Fazës", + "enterPhaseName": "Vendosni një emër për etiketën e fazës", + "addOption": "Shto Opsion", + "phaseOptions": "Opsionet e Fazës:" +} diff --git a/worklenz-frontend/public/locales/alb/project-drawer.json b/worklenz-frontend/public/locales/alb/project-drawer.json new file mode 100644 index 00000000..952dba7e --- /dev/null +++ b/worklenz-frontend/public/locales/alb/project-drawer.json @@ -0,0 +1,42 @@ +{ + "createProject": "Krijo Projekt", + "editProject": "Modifiko Projektin", + "enterCategoryName": "Vendosni emër për kategorinë", + "hitEnterToCreate": "Shtyp Enter për të krijuar!", + "enterNotes": "Shënime", + "youCanManageClientsUnderSettings": "Mund të menaxhoni klientët nën Cilësimet", + "addCategory": "Shto kategori projektit", + "newCategory": "Kategori e Re", + "notes": "Shënime", + "startDate": "Data e Fillimit", + "endDate": "Data e Përfundimit", + "estimateWorkingDays": "Vlerëso ditët e punës", + "estimateManDays": "Vlerëso ditët e punëtorëve", + "hoursPerDay": "Orë në ditë", + "create": "Krijo", + "update": "Përditëso", + "delete": "Fshi", + "typeToSearchClients": "Shkruani për të kërkuar klientë", + "projectColor": "Ngjyra e Projektit", + "pleaseEnterAName": "Ju lutemi vendosni një emër", + "enterProjectName": "Vendosni emrin e projektit", + "name": "Emri", + "status": "Statusi", + "health": "Gjendja", + "category": "Kategoria", + "projectManager": "Menaxheri i Projektit", + "client": "Klienti", + "deleteConfirmation": "Jeni i sigurt që doni të fshini?", + "deleteConfirmationDescription": "Kjo do të fshijë të gjitha të dhënat e lidhura dhe nuk mund të zhbëhet.", + "yes": "Po", + "no": "Jo", + "createdAt": "Krijuar më", + "updatedAt": "Përditësuar më", + "by": "nga", + "add": "Shto", + "asClient": "si klient", + "createClient": "Krijo klient", + "searchInputPlaceholder": "Kërko sipas emrit ose emailit", + "hoursPerDayValidationMessage": "Orët në ditë duhet të jenë një numër midis 1 dhe 24", + "noPermission": "Nuk ka leje" +} diff --git a/worklenz-frontend/public/locales/alb/project-view-files.json b/worklenz-frontend/public/locales/alb/project-view-files.json new file mode 100644 index 00000000..1a49c36a --- /dev/null +++ b/worklenz-frontend/public/locales/alb/project-view-files.json @@ -0,0 +1,14 @@ +{ + "nameColumn": "Emri", + "attachedTaskColumn": "Detyra e Bashkangjitur", + "sizeColumn": "Madhësia", + "uploadedByColumn": "Ngarkuar Nga", + "uploadedAtColumn": "Ngarkuar Më", + "fileIconAlt": "Ikona e skedarit", + "titleDescriptionText": "Të gjitha bashkëngjitjet e detyrave në këtë projekt do të shfahen këtu.", + "deleteConfirmationTitle": "Jeni i sigurt?", + "deleteConfirmationOk": "Po", + "deleteConfirmationCancel": "Anulo", + "segmentedTooltip": "Së shpejti! Kaloni midis pamjes listë dhe pamjes miniaturash.", + "emptyText": "Nuk ka bashkëngjitje në projekt." +} diff --git a/worklenz-frontend/public/locales/alb/project-view-insights.json b/worklenz-frontend/public/locales/alb/project-view-insights.json new file mode 100644 index 00000000..c7714578 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/project-view-insights.json @@ -0,0 +1,41 @@ +{ + "overview": { + "title": "Përmbledhje", + "statusOverview": "Përmbledhje Statusi", + "priorityOverview": "Përmbledhje Prioriteti", + "lastUpdatedTasks": "Detyrat e Përditësuara Së Fundi" + }, + "members": { + "title": "Anëtarët", + "tooltip": "Anëtarët", + "tasksByMembers": "Detyrat sipas anëtarëve", + "tasksByMembersTooltip": "Detyrat sipas anëtarëve", + "name": "Emri", + "taskCount": "Numri i Detyrave", + "contribution": "Kontributi", + "completed": "Të Përfunduara", + "incomplete": "Të Papërfunduara", + "overdue": "Të Vonuara", + "progress": "Progresi" + }, + "tasks": { + "overdueTasks": "Detyrat e Vonuara", + "overLoggedTasks": "Detyrat me regjistrim të tepërt", + "tasksCompletedEarly": "Detyrat e përfunduara para afatit", + "tasksCompletedLate": "Detyrat e përfunduara pas afatit", + "overLoggedTasksTooltip": "Detyrat me kohë të regjistruar mbi kohën e vlerësuar", + "overdueTasksTooltip": "Detyrat që kanë kaluar afatin e tyre" + }, + "common": { + "seeAll": "Shiko të gjitha", + "totalLoggedHours": "Orët totale të regjistruara", + "totalEstimation": "Vlerësimi total", + "completedTasks": "Detyrat e përfunduara", + "incompleteTasks": "Detyrat e papërfunduara", + "overdueTasks": "Detyrat e vonuara", + "overdueTasksTooltip": "Detyrat që kanë kaluar afatin e tyre", + "totalLoggedHoursTooltip": "Vlerësimi dhe koha e regjistruar për detyrat.", + "includeArchivedTasks": "Përfshi Detyrat e Arkivuara", + "export": "Eksporto" + } +} diff --git a/worklenz-frontend/public/locales/alb/project-view-members.json b/worklenz-frontend/public/locales/alb/project-view-members.json new file mode 100644 index 00000000..239b77e9 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/project-view-members.json @@ -0,0 +1,17 @@ +{ + "nameColumn": "Emri", + "jobTitleColumn": "Titulli i Punës", + "emailColumn": "Email", + "tasksColumn": "Detyrat", + "taskProgressColumn": "Progresi i Detyrave", + "accessColumn": "Qasja", + "fileIconAlt": "Ikona e skedarit", + "deleteConfirmationTitle": "Jeni i sigurt?", + "deleteConfirmationOk": "Po", + "deleteConfirmationCancel": "Anulo", + "refreshButtonTooltip": "Rifresko anëtarët", + "deleteButtonTooltip": "Hiq nga projekti", + "memberCount": "Anëtar", + "membersCountPlural": "Anëtarë", + "emptyText": "Nuk ka bashkëngjitje në projekt." +} diff --git a/worklenz-frontend/public/locales/alb/project-view-updates.json b/worklenz-frontend/public/locales/alb/project-view-updates.json new file mode 100644 index 00000000..15a4ec1c --- /dev/null +++ b/worklenz-frontend/public/locales/alb/project-view-updates.json @@ -0,0 +1,6 @@ +{ + "inputPlaceholder": "Shto një koment..", + "addButton": "Shto", + "cancelButton": "Anulo", + "deleteButton": "Fshi" +} diff --git a/worklenz-frontend/public/locales/alb/project-view/import-task-templates.json b/worklenz-frontend/public/locales/alb/project-view/import-task-templates.json new file mode 100644 index 00000000..fab0381b --- /dev/null +++ b/worklenz-frontend/public/locales/alb/project-view/import-task-templates.json @@ -0,0 +1,11 @@ +{ + "importTaskTemplate": "Importo Shabllon Detyrash", + "templateName": "Emri i Shabllonit", + "templateDescription": "Përshkrimi i Shabllonit", + "selectedTasks": "Detyrat e Përzgjedhura", + "tasks": "Detyrat", + "templates": "Shabllonet", + "remove": "Hiq", + "cancel": "Anulo", + "import": "Importo" +} diff --git a/worklenz-frontend/public/locales/alb/project-view/project-member-drawer.json b/worklenz-frontend/public/locales/alb/project-view/project-member-drawer.json new file mode 100644 index 00000000..aa6637e1 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/project-view/project-member-drawer.json @@ -0,0 +1,7 @@ +{ + "title": "Anëtarët e Projektit", + "searchLabel": "Shtoni anëtarë duke shkruar emrin ose email-in e tyre", + "searchPlaceholder": "Shkruani emrin ose email-in", + "inviteAsAMember": "Fto si anëtar", + "inviteNewMemberByEmail": "Fto anëtar të ri me email" +} diff --git a/worklenz-frontend/public/locales/alb/project-view/project-view-header.json b/worklenz-frontend/public/locales/alb/project-view/project-view-header.json new file mode 100644 index 00000000..8d7b9d39 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/project-view/project-view-header.json @@ -0,0 +1,13 @@ +{ + "importTasks": "Importo detyra", + "createTask": "Krijo detyrë", + "settings": "Cilësimet", + "subscribe": "Abonohu", + "unsubscribe": "Ç'abonohu", + "deleteProject": "Fshi projektin", + "startDate": "Data e fillimit", + "endDate": "Data e përfundimit", + "projectSettings": "Cilësimet e projektit", + "projectSummary": "Përmbledhja e projektit", + "receiveProjectSummary": "Merrni një përmbledhje të projektit çdo mbrëmje." +} diff --git a/worklenz-frontend/public/locales/alb/project-view/save-as-template.json b/worklenz-frontend/public/locales/alb/project-view/save-as-template.json new file mode 100644 index 00000000..63d7ace8 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/project-view/save-as-template.json @@ -0,0 +1,27 @@ +{ + "title": "Ruaj si Shabllon", + "templateName": "Emri i Shabllonit", + "includes": "Çfarë duhet të përfshihet në shabllon nga projekti?", + "includesOptions": { + "statuses": "Statuset", + "phases": "Fazat", + "labels": "Etiketat" + }, + "taskIncludes": "Çfarë duhet të përfshihet në shabllon nga detyrat?", + "taskIncludesOptions": { + "statuses": "Statuset", + "phases": "Fazat", + "labels": "Etiketat", + "name": "Emri", + "priority": "Prioriteti", + "status": "Statusi", + "phase": "Faza", + "label": "Etiketa", + "timeEstimate": "Vlerësimi i Kohës", + "description": "Përshkrimi", + "subTasks": "Nëndetyrat" + }, + "cancel": "Anulo", + "save": "Ruaj", + "templateNamePlaceholder": "Shkruani emrin e shabllonit" +} diff --git a/worklenz-frontend/public/locales/alb/reporting-members-drawer.json b/worklenz-frontend/public/locales/alb/reporting-members-drawer.json new file mode 100644 index 00000000..899e590e --- /dev/null +++ b/worklenz-frontend/public/locales/alb/reporting-members-drawer.json @@ -0,0 +1,90 @@ +{ + "exportButton": "Eksporto", + "timeLogsButton": "Regjistrimet e Kohës", + "activityLogsButton": "Regjistrimet e Aktivitetit", + "tasksButton": "Detyrat", + "searchByNameInputPlaceholder": "Kërko sipas emrit", + + "overviewTab": "Përmbledhje", + "timeLogsTab": "Regjistrimet e Kohës", + "activityLogsTab": "Regjistrimet e Aktivitetit", + "tasksTab": "Detyrat", + + "projectsText": "Projektet", + "totalTasksText": "Detyrat Gjithsej", + "assignedTasksText": "Detyrat e Caktuara", + "completedTasksText": "Detyrat e Përfunduara", + "ongoingTasksText": "Detyrat në Vazhdim", + "overdueTasksText": "Detyrat e Vonuara", + "loggedHoursText": "Orët e Regjistruara", + + "tasksText": "Detyrat", + "allText": "Të Gjitha", + + "tasksByProjectsText": "Detyrat Sipas Projekteve", + "tasksByStatusText": "Detyrat Sipas Statusit", + "tasksByPriorityText": "Detyrat Sipas Prioritetit", + + "todoText": "Për Të Bërë", + "doingText": "Duke bërë", + "doneText": "E Përfunduar", + "lowText": "I Ulët", + "mediumText": "I Mesëm", + "highText": "I Lartë", + + "billableButton": "Fakturueshme", + "billableText": "Fakturueshme", + "nonBillableText": "Jo Fakturueshme", + + "timeLogsEmptyPlaceholder": "Asnjë regjistrim kohe për të shfaqur", + "loggedText": "Regjistruar", + "forText": "për", + "inText": "në", + "updatedText": "Përditësuar", + "fromText": "Nga", + "toText": "në", + "withinText": "brenda", + + "activityLogsEmptyPlaceholder": "Asnjë regjistrim aktiviteti për të shfaqur", + + "filterByText": "Filtro sipas:", + "selectProjectPlaceholder": "Zgjidh Projektin", + + "taskColumn": "Detyra", + "nameColumn": "Emri", + "projectColumn": "Projekti", + "statusColumn": "Statusi", + "priorityColumn": "Prioriteti", + "dueDateColumn": "Afati", + "completedDateColumn": "Data e Përfundimit", + "estimatedTimeColumn": "Koha e Vlerësuar", + "loggedTimeColumn": "Koha e Regjistruar", + "overloggedTimeColumn": "Koha e Tepërt", + "daysLeftColumn": "Ditë të Mbetura/Vonuar", + "startDateColumn": "Data e Fillimit", + "endDateColumn": "Data e Përfundimit", + "actualTimeColumn": "Koha Aktuale", + "projectHealthColumn": "Gjendja e Projektit", + "categoryColumn": "Kategoria", + "projectManagerColumn": "Menaxheri i Projektit", + + "tasksStatsOverviewDrawerTitle": "Detyrat e ", + "projectsStatsOverviewDrawerTitle": "Projektet e ", + + "cancelledText": "Anuluar", + "blockedText": "E Bllokuar", + "onHoldText": "Në Pritje", + "proposedText": "E Propozuar", + "inPlanningText": "Në Planifikim", + "inProgressText": "Në Progres", + "completedText": "E Përfunduar", + "continuousText": "E Vazhdueshme", + + "daysLeftText": "ditë të mbetura", + "daysOverdueText": "ditë vonuar", + + "notSetText": "Pa Caktuar", + "needsAttentionText": "Kërkon Vëmendje", + "atRiskText": "Në Rrezik", + "goodText": "Në Rregull" +} diff --git a/worklenz-frontend/public/locales/alb/reporting-members.json b/worklenz-frontend/public/locales/alb/reporting-members.json new file mode 100644 index 00000000..d88f0662 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/reporting-members.json @@ -0,0 +1,35 @@ +{ + "yesterdayText": "Dje", + "lastSevenDaysText": "7 Ditët e Fundit", + "lastWeekText": "Javën e Kaluar", + "lastThirtyDaysText": "30 Ditët e Fundit", + "lastMonthText": "Muajin e Kaluar", + "lastThreeMonthsText": "3 Muajt e Fundit", + "allTimeText": "Të Gjitha", + "customRangeText": "Interval i Përshtatur", + "startDateInputPlaceholder": "Data e fillimit", + "EndDateInputPlaceholder": "Data e përfundimit", + "filterButton": "Filtro", + + "membersTitle": "Anëtarët", + "includeArchivedButton": "Përfshij Projektet e Arkivuara", + "exportButton": "Eksporto", + "excelButton": "Excel", + "searchByNameInputPlaceholder": "Kërko sipas emrit", + + "memberColumn": "Anëtari", + "tasksProgressColumn": "Progresi i Detyrave", + "tasksAssignedColumn": "Detyrat e Caktuara", + "completedTasksColumn": "Detyrat e Përfunduara", + "overdueTasksColumn": "Detyrat e Vonuara", + "ongoingTasksColumn": "Detyrat në Vazhdim", + + "tasksAssignedColumnTooltip": "Detyrat e caktuara në intervalin e zgjedhur", + "overdueTasksColumnTooltip": "Detyrat e vonuara deri në fund të intervalit të zgjedhur", + "completedTasksColumnTooltip": "Detyrat e përfunduara në intervalin e zgjedhur", + "ongoingTasksColumnTooltip": "Detyrat e filluara por jo të përfunduara ende", + + "todoText": "Për Të Bërë", + "doingText": "Duke bërë", + "doneText": "E Përfunduar" +} diff --git a/worklenz-frontend/public/locales/alb/reporting-overview-drawer.json b/worklenz-frontend/public/locales/alb/reporting-overview-drawer.json new file mode 100644 index 00000000..9e4d9186 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/reporting-overview-drawer.json @@ -0,0 +1,39 @@ +{ + "exportButton": "Eksporto", + "projectsButton": "Projektet", + "membersButton": "Anëtarët", + "searchByNameInputPlaceholder": "Kërko sipas emrit", + + "overviewTab": "Përmbledhje", + "projectsTab": "Projektet", + "membersTab": "Anëtarët", + + "projectsByStatusText": "Projektet Sipas Statusit", + "projectsByCategoryText": "Projektet Sipas Kategorisë", + "projectsByHealthText": "Projektet Sipas Gjendjes", + + "projectsText": "Projektet", + "allText": "Të Gjitha", + + "cancelledText": "Anuluar", + "blockedText": "E Bllokuar", + "onHoldText": "Në Pritje", + "proposedText": "E Propozuar", + "inPlanningText": "Në Planifikim", + "inProgressText": "Në Progres", + "completedText": "E Përfunduar", + "continuousText": "E Vazhdueshme", + + "notSetText": "Pa Caktuar", + "needsAttentionText": "Kërkon Vëmendje", + "atRiskText": "Në Rrezik", + "goodText": "Në Rregull", + + "nameColumn": "Emri", + "emailColumn": "Email", + "projectsColumn": "Projektet", + "tasksColumn": "Detyrat", + "overdueTasksColumn": "Detyrat e Vonuara", + "completedTasksColumn": "Detyrat e Përfunduara", + "ongoingTasksColumn": "Detyrat në Vazhdim" +} diff --git a/worklenz-frontend/public/locales/alb/reporting-overview.json b/worklenz-frontend/public/locales/alb/reporting-overview.json new file mode 100644 index 00000000..b8977912 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/reporting-overview.json @@ -0,0 +1,25 @@ +{ + "overviewTitle": "Përmbledhje", + "includeArchivedButton": "Përfshij Projektet e Arkivuara", + + "teamCount": "Ekip", + "teamCountPlural": "Ekipe", + "projectCount": "Projekt", + "projectCountPlural": "Projekte", + "memberCount": "Anëtar", + "memberCountPlural": "Anëtarë", + "activeProjectCount": "Projekt Aktiv", + "activeProjectCountPlural": "Projekte Aktive", + "overdueProjectCount": "Projekt i Vonuar", + "overdueProjectCountPlural": "Projekte të Vonuara", + "unassignedMemberCount": "Anëtar i Pacaktuar", + "unassignedMemberCountPlural": "Anëtarë të Pacaktuar", + "memberWithOverdueTaskCount": "Anëtar me Detyrë të Vonuar", + "memberWithOverdueTaskCountPlural": "Anëtarë me Detyra të Vonuara", + + "teamsText": "Ekipet", + + "nameColumn": "Emri", + "projectsColumn": "Projektet", + "membersColumn": "Anëtarët" +} diff --git a/worklenz-frontend/public/locales/alb/reporting-projects-drawer.json b/worklenz-frontend/public/locales/alb/reporting-projects-drawer.json new file mode 100644 index 00000000..fd3a380c --- /dev/null +++ b/worklenz-frontend/public/locales/alb/reporting-projects-drawer.json @@ -0,0 +1,59 @@ +{ + "exportButton": "Eksporto", + "membersButton": "Anëtarët", + "tasksButton": "Detyrat", + "searchByNameInputPlaceholder": "Kërko sipas emrit", + + "overviewTab": "Përmbledhje", + "membersTab": "Anëtarët", + "tasksTab": "Detyrat", + + "completedTasksText": "Detyrat e Përfunduara", + "incompleteTasksText": "Detyrat e Papërfunduara", + "overdueTasksText": "Detyrat e Vonuara", + "allocatedHoursText": "Orët e Alokuara", + "loggedHoursText": "Orët e Regjistruara", + + "tasksText": "Detyrat", + "allText": "Të Gjitha", + + "tasksByStatusText": "Detyrat Sipas Statusit", + "tasksByPriorityText": "Detyrat Sipas Prioritetit", + "tasksByDueDateText": "Detyrat Sipas Afatit", + + "todoText": "Për Të Bërë", + "doingText": "Duke bërë", + "doneText": "E Përfunduar", + "lowText": "I Ulët", + "mediumText": "I Mesëm", + "highText": "I Lartë", + "completedText": "E Përfunduar", + "upcomingText": "Në Ardhje", + "overdueText": "E Vonuar", + "noDueDateText": "Pa Afat", + + "nameColumn": "Emri", + "tasksCountColumn": "Numri i Detyrave", + "completedTasksColumn": "Detyrat e Përfunduara", + "incompleteTasksColumn": "Detyrat e Papërfunduara", + "overdueTasksColumn": "Detyrat e Vonuara", + "contributionColumn": "Kontributi", + "progressColumn": "Progresi", + "loggedTimeColumn": "Koha e Regjistruar", + "taskColumn": "Detyra", + "projectColumn": "Projekti", + "statusColumn": "Statusi", + "priorityColumn": "Prioriteti", + "phaseColumn": "Faza", + "dueDateColumn": "Afati", + "completedDateColumn": "Data e Përfundimit", + "estimatedTimeColumn": "Koha e Vlerësuar", + "overloggedTimeColumn": "Koha e Tepërt", + "completedOnColumn": "Përfunduar Më", + "daysOverdueColumn": "Ditë vonim", + + "groupByText": "Grupo Sipas:", + "statusText": "Statusi", + "priorityText": "Prioriteti", + "phaseText": "Faza" +} diff --git a/worklenz-frontend/public/locales/alb/reporting-projects-filters.json b/worklenz-frontend/public/locales/alb/reporting-projects-filters.json new file mode 100644 index 00000000..614d57f3 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/reporting-projects-filters.json @@ -0,0 +1,35 @@ +{ + "searchByNamePlaceholder": "Kërko sipas emrit", + "searchByCategoryPlaceholder": "Kërko sipas kategorisë", + + "statusText": "Statusi", + "healthText": "Gjendja", + "categoryText": "Kategoria", + "projectManagerText": "Menaxheri i Projektit", + "showFieldsText": "Shfaq fushat", + + "cancelledText": "Anuluar", + "blockedText": "E bllokuar", + "onHoldText": "Në pritje", + "proposedText": "E propozuar", + "inPlanningText": "Në planifikim", + "inProgressText": "Në progres", + "completedText": "E përfunduar", + "continuousText": "E vazhdueshme", + + "notSetText": "Pa caktuar", + "needsAttentionText": "Kërkon vëmendje", + "atRiskText": "Në rrezik", + "goodText": "Në rregull", + + "nameText": "Projekti", + "estimatedVsActualText": "Vlerësuar vs Aktual", + "tasksProgressText": "Progresi i detyrave", + "lastActivityText": "Aktiviteti i fundit", + "datesText": "Datat e Fillimit/Përfundimit", + "daysLeftText": "Ditë të mbetura/vonuar", + "projectHealthText": "Gjendja e projektit", + "projectUpdateText": "Përditësimi i projektit", + "clientText": "Klienti", + "teamText": "Ekipi" +} diff --git a/worklenz-frontend/public/locales/alb/reporting-projects.json b/worklenz-frontend/public/locales/alb/reporting-projects.json new file mode 100644 index 00000000..c10e8f7a --- /dev/null +++ b/worklenz-frontend/public/locales/alb/reporting-projects.json @@ -0,0 +1,52 @@ +{ + "projectCount": "Projekt", + "projectCountPlural": "Projekte", + "includeArchivedButton": "Përfshij Projektet e Arkivuara", + "exportButton": "Eksporto", + "excelButton": "Excel", + + "projectColumn": "Projekti", + "estimatedVsActualColumn": "Vlerësuar vs Aktual", + "tasksProgressColumn": "Progresi i Detyrave", + "lastActivityColumn": "Aktiviteti i Fundit", + "statusColumn": "Statusi", + "datesColumn": "Data e Fillimit/Përfundimit", + "daysLeftColumn": "Ditë të Mbetura/Vonuar", + "projectHealthColumn": "Gjendja e Projektit", + "categoryColumn": "Kategoria", + "projectUpdateColumn": "Përditësimi i Projektit", + "clientColumn": "Klienti", + "teamColumn": "Ekipi", + "projectManagerColumn": "Menaxheri i Projektit", + + "openButton": "Hap", + + "estimatedText": "Vlerësuar", + "actualText": "Aktual", + + "todoText": "Për të Bërë", + "doingText": "duke bërë", + "doneText": "E Përfunduar", + + "cancelledText": "Anuluar", + "blockedText": "E Bllokuar", + "onHoldText": "Në Pritje", + "proposedText": "E Propozuar", + "inPlanningText": "Në Planifikim", + "inProgressText": "Në Progres", + "completedText": "E Përfunduar", + "continuousText": "E Vazhdueshme", + + "daysLeftText": "ditë të mbetura", + "dayLeftText": "ditë e mbetur", + "daysOverdueText": "ditë vonuar", + + "notSetText": "Pa Caktuar", + "needsAttentionText": "Kërkon Vëmendje", + "atRiskText": "Në Rrezik", + "goodText": "Në Rregull", + + "setCategoryText": "Cakto Kategorinë", + "searchByNameInputPlaceholder": "Kërko sipas emrit", + "todayText": "Sot" +} diff --git a/worklenz-frontend/public/locales/alb/reporting-sidebar.json b/worklenz-frontend/public/locales/alb/reporting-sidebar.json new file mode 100644 index 00000000..a8c14e68 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/reporting-sidebar.json @@ -0,0 +1,8 @@ +{ + "overview": "Përmbledhje", + "projects": "Projektet", + "members": "Anëtarët", + "timeReports": "Raportet e Kohës", + "estimateVsActual": "Vlerësimi vs Aktual", + "currentOrganizationTooltip": "Organizata aktuale" +} diff --git a/worklenz-frontend/public/locales/alb/schedule.json b/worklenz-frontend/public/locales/alb/schedule.json new file mode 100644 index 00000000..a5670aaa --- /dev/null +++ b/worklenz-frontend/public/locales/alb/schedule.json @@ -0,0 +1,39 @@ +{ + "today": "Sot", + "week": "Javë", + "month": "Muaj", + + "settings": "Cilësimet", + "workingDays": "Ditët e punës", + "monday": "E hënë", + "tuesday": "E martë", + "wednesday": "E mërkurë", + "thursday": "E enjte", + "friday": "E premte", + "saturday": "E shtunë", + "sunday": "E diel", + "workingHours": "Orët e punës", + "hours": "Orë", + "saveButton": "Ruaj", + + "totalAllocation": "Alokimi Total", + "timeLogged": "Koha e Regjistruar", + "remainingTime": "Koha e Mbetur", + "total": "Total", + "perDay": "Në Ditë", + "tasks": "detyra", + "startDate": "Data e Fillimit", + "endDate": "Data e Përfundimit", + + "hoursPerDay": "Orë Në Ditë", + "totalHours": "Orë Totale", + "deleteButton": "Fshi", + "cancelButton": "Anulo", + + "tabTitle": "Detyra pa Data Fillimi & Përfundimi", + + "allocatedTime": "Koha e alokuar", + "totalLogged": "Total i Regjistruar", + "loggedBillable": "Regjistruar Fakturueshme", + "loggedNonBillable": "Regjistruar Jo Fakturueshme" +} diff --git a/worklenz-frontend/public/locales/alb/settings/categories.json b/worklenz-frontend/public/locales/alb/settings/categories.json new file mode 100644 index 00000000..62eb60d5 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/settings/categories.json @@ -0,0 +1,10 @@ +{ + "categoryColumn": "Kategoria", + "deleteConfirmationTitle": "Jeni të sigurt?", + "deleteConfirmationOk": "Po", + "deleteConfirmationCancel": "Anulo", + "associatedTaskColumn": "Projektet e Lidhura", + "searchPlaceholder": "Kërko sipas emrit", + "emptyText": "Kategoritë mund të krijohen gjatë përditësimit ose krijimit të projekteve.", + "colorChangeTooltip": "Klikoni për të ndryshuar ngjyrën" +} diff --git a/worklenz-frontend/public/locales/alb/settings/change-password.json b/worklenz-frontend/public/locales/alb/settings/change-password.json new file mode 100644 index 00000000..ac1500bd --- /dev/null +++ b/worklenz-frontend/public/locales/alb/settings/change-password.json @@ -0,0 +1,15 @@ +{ + "title": "Ndrysho Fjalëkalimin", + "currentPassword": "Fjalëkalimi Aktual", + "newPassword": "Fjalëkalimi i Ri", + "confirmPassword": "Konfirmo Fjalëkalimin", + "currentPasswordPlaceholder": "Vendosni fjalëkalimin aktual", + "newPasswordPlaceholder": "Fjalëkalimi i Ri", + "confirmPasswordPlaceholder": "Konfirmo Fjalëkalimin", + "currentPasswordRequired": "Ju lutemi vendosni fjalëkalimin aktual!", + "newPasswordRequired": "Ju lutemi vendosni fjalëkalimin e ri!", + "passwordValidationError": "Fjalëkalimi duhet të përmbajë të paktën 8 karaktere, me një shkronjë të madhe, një numër dhe një simbol.", + "passwordMismatch": "Fjalëkalimet nuk përputhen!", + "passwordRequirements": "Fjalëkalimi i ri duhet të jetë së paku 8 karaktere, me një shkronjë të madhe, një numër dhe një simbol.", + "updateButton": "Përditëso Fjalëkalimin" +} diff --git a/worklenz-frontend/public/locales/alb/settings/clients.json b/worklenz-frontend/public/locales/alb/settings/clients.json new file mode 100644 index 00000000..72407a5e --- /dev/null +++ b/worklenz-frontend/public/locales/alb/settings/clients.json @@ -0,0 +1,22 @@ +{ + "nameColumn": "Emri", + "projectColumn": "Projekti", + "noProjectsAvailable": "Nuk ka projekte të disponueshme", + "deleteConfirmationTitle": "Jeni i sigurt?", + "deleteConfirmationOk": "Po", + "deleteConfirmationCancel": "Anulo", + "searchPlaceholder": "Kërko sipas emrit", + "createClient": "Krijo Klient", + "pinTooltip": "Klikoni për ta fiksuar në menynë kryesore", + "createClientDrawerTitle": "Krijo Klient", + "updateClientDrawerTitle": "Përditëso Klientin", + "nameLabel": "Emri", + "namePlaceholder": "Emri", + "nameRequiredError": "Ju lutemi shkruani një Emër", + "createButton": "Krijo", + "updateButton": "Përditëso", + "createClientSuccessMessage": "Klienti u krijua me sukses!", + "createClientErrorMessage": "Krijimi i klientit dështoi!", + "updateClientSuccessMessage": "Klienti u përditësua me sukses!", + "updateClientErrorMessage": "Përditësimi i klientit dështoi!" +} diff --git a/worklenz-frontend/public/locales/alb/settings/job-titles.json b/worklenz-frontend/public/locales/alb/settings/job-titles.json new file mode 100644 index 00000000..a464716a --- /dev/null +++ b/worklenz-frontend/public/locales/alb/settings/job-titles.json @@ -0,0 +1,20 @@ +{ + "nameColumn": "Emri", + "deleteConfirmationTitle": "Jeni i sigurt?", + "deleteConfirmationOk": "Po", + "deleteConfirmationCancel": "Anulo", + "searchPlaceholder": "Kërko sipas emrit", + "createJobTitleButton": "Krijo Titull Pune", + "pinTooltip": "Klikoni për ta fiksuar në menynë kryesore", + "createJobTitleDrawerTitle": "Krijo Titull Pune", + "updateJobTitleDrawerTitle": "Përditëso Titullin e Punës", + "nameLabel": "Emri", + "namePlaceholder": "Emri", + "nameRequiredError": "Ju lutemi shkruani një Emër", + "createButton": "Krijo", + "updateButton": "Përditëso", + "createJobTitleSuccessMessage": "Titulli i punës u krijua me sukses!", + "createJobTitleErrorMessage": "Krijimi i titullit të punës dështoi!", + "updateJobTitleSuccessMessage": "Titulli i punës u përditësua me sukses!", + "updateJobTitleErrorMessage": "Përditësimi i titullit të punës dështoi!" +} diff --git a/worklenz-frontend/public/locales/alb/settings/labels.json b/worklenz-frontend/public/locales/alb/settings/labels.json new file mode 100644 index 00000000..40e6361b --- /dev/null +++ b/worklenz-frontend/public/locales/alb/settings/labels.json @@ -0,0 +1,11 @@ +{ + "labelColumn": "Etiketa", + "deleteConfirmationTitle": "Jeni i sigurt?", + "deleteConfirmationOk": "Po", + "deleteConfirmationCancel": "Anulo", + "associatedTaskColumn": "Numri i Detyrave të Lidhura", + "searchPlaceholder": "Kërko sipas emrit", + "emptyText": "Etiketat mund të krijohen gjatë përditësimit ose krijimit të detyrave.", + "pinTooltip": "Klikoni për ta fiksuar në menynë kryesore", + "colorChangeTooltip": "Klikoni për të ndryshuar ngjyrën" +} diff --git a/worklenz-frontend/public/locales/alb/settings/language.json b/worklenz-frontend/public/locales/alb/settings/language.json new file mode 100644 index 00000000..7c0d3756 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/settings/language.json @@ -0,0 +1,7 @@ +{ + "language": "Gjuha", + "language_required": "Gjuha është e detyrueshme", + "time_zone": "Zona kohore", + "time_zone_required": "Zona kohore është e detyrueshme", + "save_changes": "Ruaj Ndryshimet" +} diff --git a/worklenz-frontend/public/locales/alb/settings/notifications.json b/worklenz-frontend/public/locales/alb/settings/notifications.json new file mode 100644 index 00000000..4bfd55b2 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/settings/notifications.json @@ -0,0 +1,11 @@ +{ + "title": "Cilësimet e Njoftimeve", + "emailTitle": "Më dërgo njoftime me email", + "emailDescription": "Kjo përfshin caktimet e reja të detyrave", + "dailyDigestTitle": "Më dërgo një përmbledhje ditore", + "dailyDigestDescription": "Çdo mbrëmje, do të merrni një përmbledhje të aktivitetit të fundit në detyra.", + "popupTitle": "Shfaq njoftimet në kompjuterin tim kur Worklenz është i hapur", + "popupDescription": "Njoftimet e shfaqura mund të çaktivizohen nga shfletuesi juaj. Ndryshoni cilësimet e shfletuesit për t'i lejuar ato.", + "unreadItemsTitle": "Shfaq numrin e artikujve të palexuar", + "unreadItemsDescription": "Do të shihni numërimin për çdo njoftim." +} diff --git a/worklenz-frontend/public/locales/alb/settings/profile.json b/worklenz-frontend/public/locales/alb/settings/profile.json new file mode 100644 index 00000000..c3ad210d --- /dev/null +++ b/worklenz-frontend/public/locales/alb/settings/profile.json @@ -0,0 +1,13 @@ +{ + "uploadError": "Mund të ngarkoni vetëm skedarë JPG/PNG!", + "uploadSizeError": "Imazhi duhet të jetë më i vogël se 2MB!", + "upload": "Ngarko", + "nameLabel": "Emri", + "nameRequiredError": "Emri është i detyrueshëm", + "emailLabel": "Email", + "emailRequiredError": "Email-i është i detyrueshëm", + "saveChanges": "Ruaj Ndryshimet", + "profileJoinedText": "U bashkua një muaj më parë", + "profileLastUpdatedText": "Përditësuar një muaj më parë", + "avatarTooltip": "Klikoni për të ngarkuar një avatar" +} diff --git a/worklenz-frontend/public/locales/alb/settings/project-templates.json b/worklenz-frontend/public/locales/alb/settings/project-templates.json new file mode 100644 index 00000000..ac0a87ef --- /dev/null +++ b/worklenz-frontend/public/locales/alb/settings/project-templates.json @@ -0,0 +1,8 @@ +{ + "nameColumn": "Emri", + "editToolTip": "Modifiko", + "deleteToolTip": "Fshi", + "confirmText": "Jeni i sigurt?", + "okText": "Po", + "cancelText": "Anulo" +} diff --git a/worklenz-frontend/public/locales/alb/settings/sidebar.json b/worklenz-frontend/public/locales/alb/settings/sidebar.json new file mode 100644 index 00000000..a2b6dd2e --- /dev/null +++ b/worklenz-frontend/public/locales/alb/settings/sidebar.json @@ -0,0 +1,14 @@ +{ + "profile": "Profili", + "notifications": "Njoftimet", + "clients": "Klientët", + "job-titles": "Tituj Pune", + "labels": "Etiketa", + "categories": "Kategoritë", + "project-templates": "Shabllonet e Projekteve", + "task-templates": "Shabllonet e Detyrave", + "team-members": "Anëtarët e Ekipit", + "teams": "Ekipet", + "change-password": "Ndrysho Fjalëkalimin", + "language-and-region": "Gjuha dhe Rajoni" +} diff --git a/worklenz-frontend/public/locales/alb/settings/task-templates.json b/worklenz-frontend/public/locales/alb/settings/task-templates.json new file mode 100644 index 00000000..b053027c --- /dev/null +++ b/worklenz-frontend/public/locales/alb/settings/task-templates.json @@ -0,0 +1,9 @@ +{ + "nameColumn": "Emri", + "createdColumn": "Krijuar", + "editToolTip": "Redakto", + "deleteToolTip": "Fshi", + "confirmText": "Jeni i sigurt?", + "okText": "Po", + "cancelText": "Anulo" +} diff --git a/worklenz-frontend/public/locales/alb/settings/team-members.json b/worklenz-frontend/public/locales/alb/settings/team-members.json new file mode 100644 index 00000000..0ebdb3b5 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/settings/team-members.json @@ -0,0 +1,44 @@ +{ + "nameColumn": "Emri", + "projectsColumn": "Projektet", + "emailColumn": "Email", + "teamAccessColumn": "Qasja në Ekip", + "memberCount": "Anëtar", + "membersCountPlural": "Anëtarë", + "searchPlaceholder": "Kërko anëtarë sipas emrit", + "pinTooltip": "Rifresko listën e anëtarëve", + "addMemberButton": "Shto Anëtar të Ri", + "editTooltip": "Modifiko anëtarin", + "deactivateTooltip": "Çaktivizo anëtarin", + "activateTooltip": "Aktivizo anëtarin", + "deleteTooltip": "Fshi anëtarin", + "confirmDeleteTitle": "Jeni i sigurt që doni të fshini këtë anëtar?", + "confirmActivateTitle": "Jeni i sigurt që doni të ndryshoni statusin e këtij anëtari?", + "okText": "Po, vazhdo", + "cancelText": "Jo, anulo", + "deactivatedText": "(Aktualisht i çaktivizuar)", + "pendingInvitationText": "(Ftesë në pritje)", + "addMemberDrawerTitle": "Shto Anëtar të Ri në Ekip", + "updateMemberDrawerTitle": "Përditëso Anëtarin e Ekipit", + "addMemberEmailHint": "Anëtarët do të shtohen në ekip pavarësisht nga statusi i pranimit të ftesës", + "memberEmailLabel": "Email(o)", + "memberEmailPlaceholder": "Vendos adresën email të anëtarit të ekipit", + "memberEmailRequiredError": "Ju lutemi vendosni një adresë email të vlefshme", + "jobTitleLabel": "Titulli i Punës", + "jobTitlePlaceholder": "Zgjidh ose kërko titull pune (Opsionale)", + "memberAccessLabel": "Niveli i Qasjes", + "addToTeamButton": "Shto Anëtar në Ekip", + "updateButton": "Ruaj Ndryshimet", + "resendInvitationButton": "Dërgo Përsëri Email-in e Ftesës", + "invitationSentSuccessMessage": "Ftesa për ekip u dërgua me sukses!", + "createMemberSuccessMessage": "Anëtari i ri i ekipit u shtua me sukses!", + "createMemberErrorMessage": "Dështoi shtimi i anëtarit të ri. Ju lutemi provoni përsëri.", + "updateMemberSuccessMessage": "Anëtari i ekipit u përditësua me sukses!", + "updateMemberErrorMessage": "Dështoi përditësimi i anëtarit. Ju lutemi provoni përsëri.", + "memberText": "Anëtar", + "adminText": "Administrues", + "ownerText": "Pronar i Ekipit", + "addedText": "Shtuar", + "updatedText": "Përditësuar", + "noResultFound": "Shkruani një adresë email dhe shtypni Enter..." +} diff --git a/worklenz-frontend/public/locales/alb/task-drawer/task-drawer-info-tab.json b/worklenz-frontend/public/locales/alb/task-drawer/task-drawer-info-tab.json new file mode 100644 index 00000000..75e1226a --- /dev/null +++ b/worklenz-frontend/public/locales/alb/task-drawer/task-drawer-info-tab.json @@ -0,0 +1,29 @@ +{ + "details": { + "task-key": "Çelësi i Detyrës", + "phase": "Faza", + "assignees": "Përgjegjësit", + "due-date": "Data e Përfundimit", + "time-estimation": "Vlerësimi i Kohës", + "priority": "Prioriteti", + "labels": "Etiketa", + "billable": "Fakturueshme", + "notify": "Njofto", + "when-done-notify": "Kur të përfundojë, njofto", + "start-date": "Data e Fillimit", + "end-date": "Data e Përfundimit", + "hide-start-date": "Fshih Datën e Fillimit", + "show-start-date": "Shfaq Datën e Fillimit", + "hours": "Orë", + "minutes": "Minuta" + }, + "description": { + "title": "Përshkrimi", + "placeholder": "Shtoni një përshkrim më të detajuar..." + }, + "subTasks": { + "title": "Nën-Detyrat", + "add-sub-task": "+ Shto Nën-Detyrë", + "refresh-sub-tasks": "Rifresko Nën-Detyrat" + } +} diff --git a/worklenz-frontend/public/locales/alb/task-drawer/task-drawer.json b/worklenz-frontend/public/locales/alb/task-drawer/task-drawer.json new file mode 100644 index 00000000..d2f7ef99 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/task-drawer/task-drawer.json @@ -0,0 +1,78 @@ +{ + "taskHeader": { + "taskNamePlaceholder": "Shkruani detyrën tuaj", + "deleteTask": "Fshi Detyrën" + }, + "taskInfoTab": { + "title": "Info", + "details": { + "title": "Detajet", + "task-key": "Çelësi i Detyrës", + "phase": "Faza", + "assignees": "Përgjegjësit", + "due-date": "Afati i Përfundimit", + "time-estimation": "Vlerësimi i Kohës", + "priority": "Prioriteti", + "labels": "Etiketa", + "billable": "Fakturueshme", + "notify": "Njofto", + "when-done-notify": "Kur të përfundojë, njofto", + "start-date": "Data e Fillimit", + "end-date": "Data e Përfundimit", + "hide-start-date": "Fshih Datën e Fillimit", + "show-start-date": "Shfaq Datën e Fillimit", + "hours": "Orë", + "minutes": "Minuta" + }, + "labels": { + "labelInputPlaceholder": "Kërko ose krijo", + "labelsSelectorInputTip": "Shtyp Enter për të krijuar" + }, + "description": { + "title": "Përshkrimi", + "placeholder": "Shtoni një përshkrim më të detajuar..." + }, + "subTasks": { + "title": "Nën-Detyrat", + "addSubTask": "+ Shto Nën-Detyrë", + "addSubTaskInputPlaceholder": "Shkruani detyrën dhe shtypni Enter", + "refreshSubTasks": "Rifresko Nën-Detyrat", + "edit": "Modifiko", + "delete": "Fshi", + "confirmDeleteSubTask": "Jeni i sigurt që doni të fshini këtë nën-detyrë?", + "deleteSubTask": "Fshi Nën-Detyrën" + }, + "dependencies": { + "title": "Varësitë", + "addDependency": "+ Shto varësi të re", + "blockedBy": "I bllokuar nga", + "searchTask": "Shkruani për të kërkuar detyra", + "noTasksFound": "Asnjë detyrë nuk u gjet", + "confirmDeleteDependency": "Jeni i sigurt që doni të fshini?" + }, + "attachments": { + "title": "Bashkëngjitjet", + "chooseOrDropFileToUpload": "Zgjidhni ose lëshoni skedar për ngarkim", + "uploading": "Po ngarkohet..." + }, + "comments": { + "title": "Komentet", + "addComment": "+ Shto koment të ri", + "noComments": "Asnjë koment ende. Bëhu i pari që komenton!", + "delete": "Fshi", + "confirmDeleteComment": "Jeni i sigurt që doni të fshini këtë koment?" + }, + "searchInputPlaceholder": "Kërko sipas emrit", + "pendingInvitation": "Ftesë në Pritje" + }, + "taskTimeLogTab": { + "title": "Regjistri i Kohës", + "addTimeLog": "Shto regjistrim të ri kohe", + "totalLogged": "Koha totale e regjistruar", + "exportToExcel": "Eksporto në Excel", + "noTimeLogsFound": "Asnjë regjistrim kohe nuk u gjet" + }, + "taskActivityLogTab": { + "title": "Regjistri i Aktivitetit" + } +} diff --git a/worklenz-frontend/public/locales/alb/task-list-filters.json b/worklenz-frontend/public/locales/alb/task-list-filters.json new file mode 100644 index 00000000..1e1b649d --- /dev/null +++ b/worklenz-frontend/public/locales/alb/task-list-filters.json @@ -0,0 +1,59 @@ +{ + "searchButton": "Kërko", + "resetButton": "Rivendos", + "searchInputPlaceholder": "Kërko sipas emrit", + + "sortText": "Rendit", + "statusText": "Statusi", + "phaseText": "Faza", + "memberText": "Anëtarët", + "assigneesText": "Përgjegjësit", + "priorityText": "Prioriteti", + "labelsText": "Etiketa", + "membersText": "Anëtarët", + "groupByText": "Grupo sipas", + "showArchivedText": "Shfaq të arkivuara", + "showFieldsText": "Shfaq fushat", + "keyText": "Çelësi", + "taskText": "Detyra", + "descriptionText": "Përshkrimi", + "phasesText": "Fazat", + "listText": "Listë", + "progressText": "Progresi", + "timeTrackingText": "Gjurmimi i Kohës", + "timetrackingText": "Gjurmimi i Kohës", + "estimationText": "Vlerësimi", + "startDateText": "Data e Fillimit", + "startdateText": "Data e Fillimit", + "endDateText": "Data e Përfundimit", + "dueDateText": "Afati", + "duedateText": "Afati", + "completedDateText": "Data e Përfundimit", + "completeddateText": "Data e Përfundimit", + "createdDateText": "Data e Krijimit", + "createddateText": "Data e Krijimit", + "lastUpdatedText": "Përditësuar Së Fundi", + "lastupdatedText": "Përditësuar Së Fundi", + "reporterText": "Raportuesi", + "dueTimeText": "Koha e Afatit", + "duetimeText": "Koha e Afatit", + + "lowText": "I ulët", + "mediumText": "I mesëm", + "highText": "I lartë", + + "createStatusButtonTooltip": "Cilësimet e statusit", + "configPhaseButtonTooltip": "Cilësimet e fazës", + "noLabelsFound": "Nuk u gjetën etiketa", + + "addStatusButton": "Shto Status", + "addPhaseButton": "Shto Fazë", + + "createStatus": "Krijo Status", + "name": "Emri", + "category": "Kategoria", + "selectCategory": "Zgjidh një kategori", + "pleaseEnterAName": "Ju lutemi vendosni një emër", + "pleaseSelectACategory": "Ju lutemi zgjidhni një kategori", + "create": "Krijo" +} diff --git a/worklenz-frontend/public/locales/alb/task-list-table.json b/worklenz-frontend/public/locales/alb/task-list-table.json new file mode 100644 index 00000000..cfb2d398 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/task-list-table.json @@ -0,0 +1,63 @@ +{ + "keyColumn": "Çelësi", + "taskColumn": "Detyra", + "descriptionColumn": "Përshkrimi", + "progressColumn": "Progresi", + "membersColumn": "Anëtarët", + "assigneesColumn": "Përgjegjësit", + "labelsColumn": "Etiketa", + "phasesColumn": "Fazat", + "phaseColumn": "Faza", + "statusColumn": "Statusi", + "priorityColumn": "Prioriteti", + "timeTrackingColumn": "Gjurmimi i Kohës", + "timetrackingColumn": "Gjurmimi i Kohës", + "estimationColumn": "Vlerësimi", + "startDateColumn": "Data e Fillimit", + "startdateColumn": "Data e Fillimit", + "dueDateColumn": "Data e Afatit", + "duedateColumn": "Data e Afatit", + "completedDateColumn": "Data e Përfundimit", + "completeddateColumn": "Data e Përfundimit", + "createdDateColumn": "Data e Krijimit", + "createddateColumn": "Data e Krijimit", + "lastUpdatedColumn": "Përditësuar Së Fundi", + "lastupdatedColumn": "Përditësuar Së Fundi", + "reporterColumn": "Raportuesi", + "dueTimeColumn": "Koha e Afatit", + "todoSelectorText": "Për të Bërë", + "doingSelectorText": "Duke bërë", + "doneSelectorText": "E Përfunduar", + + "lowSelectorText": "I ulët", + "mediumSelectorText": "I mesëm", + "highSelectorText": "I lartë", + + "selectText": "Zgjidh", + "labelsSelectorInputTip": "Shtyp Enter për të krijuar!", + + "addTaskText": "+ Shto Detyrë", + "addSubTaskText": "+ Shto Nën-Detyrë", + "addTaskInputPlaceholder": "Shkruaj detyrën dhe shtyp Enter", + + "openButton": "Hap", + "okButton": "Në rregull", + + "noLabelsFound": "Nuk u gjetën etiketa", + "searchInputPlaceholder": "Kërko ose krijo", + "assigneeSelectorInviteButton": "Fto një anëtar të ri me email", + "labelInputPlaceholder": "Kërko ose krijo", + + "pendingInvitation": "Ftesë në Pritje", + + "contextMenu": { + "assignToMe": "Cakto mua", + "moveTo": "Zhvendos në", + "unarchive": "Ç'arkivizo", + "archive": "Arkivizo", + "convertToSubTask": "Shndërro në Nën-Detyrë", + "convertToTask": "Shndërro në Detyrë", + "delete": "Fshi", + "searchByNameInputPlaceholder": "Kërko sipas emrit" + } +} diff --git a/worklenz-frontend/public/locales/alb/task-template-drawer.json b/worklenz-frontend/public/locales/alb/task-template-drawer.json new file mode 100644 index 00000000..034ac916 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/task-template-drawer.json @@ -0,0 +1,11 @@ +{ + "createTaskTemplate": "Krijo Shabllon Detyre", + "editTaskTemplate": "Modifiko Shabllon Detyre", + "cancelText": "Anulo", + "saveText": "Ruaj", + "templateNameText": "Emri i Shabllonit", + "selectedTasks": "Detyrat e Përzgjedhura", + "removeTask": "Hiq", + "cancelButton": "Anulo", + "saveButton": "Ruaj" +} diff --git a/worklenz-frontend/public/locales/alb/tasks/task-table-bulk-actions.json b/worklenz-frontend/public/locales/alb/tasks/task-table-bulk-actions.json new file mode 100644 index 00000000..cb433bf9 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/tasks/task-table-bulk-actions.json @@ -0,0 +1,24 @@ +{ + "taskSelected": "detyrë e zgjedhur", + "tasksSelected": "detyra të zgjedhura", + "changeStatus": "Ndrysho Statusin/ Prioritetin/ Fazat", + "changeLabel": "Ndrysho Etiketën", + "assignToMe": "Cakto mua", + "changeAssignees": "Ndrysho Përgjegjësit", + "archive": "Arkivo", + "unarchive": "Ç'arkivo", + "delete": "Fshi", + "moreOptions": "Më shumë opsione", + "deselectAll": "Zgjidhja të gjitha", + "status": "Statusi", + "priority": "Prioriteti", + "phase": "Faza", + "member": "Anëtar", + "createTaskTemplate": "Krijo Shabllon Detyre", + "apply": "Apliko", + "createLabel": "+ Krijo Etiketë", + "hitEnterToCreate": "Shtyp Enter për të krijuar", + "pendingInvitation": "Ftesë në Pritje", + "noMatchingLabels": "Asnjë etiketë që përputhet", + "noLabels": "Asnjë etiketë" +} diff --git a/worklenz-frontend/public/locales/alb/template-drawer.json b/worklenz-frontend/public/locales/alb/template-drawer.json new file mode 100644 index 00000000..e6174c10 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/template-drawer.json @@ -0,0 +1,19 @@ +{ + "title": "Modifiko Shabllon Detyre", + "cancelText": "Anulo", + "saveText": "Ruaj", + "templateNameText": "Emri i Shabllonit", + "selectedTasks": "Detyrat e Përzgjedhura", + "removeTask": "Hiq", + "description": "Përshkrimi", + "phase": "Faza", + "statuses": "Statuset", + "priorities": "Prioritetet", + "labels": "Etiketa", + "tasks": "Detyrat", + "noTemplateSelected": "Asnjë shabllon i përzgjedhur", + "noDescription": "Pa përshkrim", + "worklenzTemplates": "Shabllonet Worklenz", + "yourTemplatesLibrary": "Biblioteka Juaj", + "searchTemplates": "Kërko Shabllone" +} diff --git a/worklenz-frontend/public/locales/alb/templateDrawer.json b/worklenz-frontend/public/locales/alb/templateDrawer.json new file mode 100644 index 00000000..6b2cd828 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/templateDrawer.json @@ -0,0 +1,23 @@ +{ + "bugTracking": "Gjurmimi i Gabimeve", + "construction": "Ndërtim", + "designCreative": "Dizajn & Kreativ", + "education": "Arsim", + "finance": "Financë", + "hrRecruiting": "Burime Njerëzore & Rekrutim", + "informationTechnology": "Teknologji Informacioni", + "legal": "Juridik", + "manufacturing": "Prodhim", + "marketing": "Marketing", + "nonprofit": "Jo-fitimprurës", + "personalUse": "Përdorim Personal", + "salesCRM": "Shitje & CRM", + "serviceConsulting": "Shërbime & Këshillim", + "softwareDevelopment": "Zhvillim Softueri", + "description": "Përshkrimi", + "phase": "Faza", + "statuses": "Statuset", + "priorities": "Prioritetet", + "labels": "Etiketa", + "tasks": "Detyrat" +} diff --git a/worklenz-frontend/public/locales/alb/time-report.json b/worklenz-frontend/public/locales/alb/time-report.json new file mode 100644 index 00000000..8a0bb69b --- /dev/null +++ b/worklenz-frontend/public/locales/alb/time-report.json @@ -0,0 +1,44 @@ +{ + "includeArchivedProjects": "Përfshij Projektet e Arkivuara", + "export": "Eksporto", + "timeSheet": "Fletë Kohore", + + "searchByName": "Kërko sipas emrit", + "selectAll": "Zgjidh të Gjitha", + "teams": "Ekipet", + + "searchByProject": "Kërko sipas emrit të projektit", + "projects": "Projektet", + + "searchByCategory": "Kërko sipas emrit të kategorisë", + "categories": "Kategoritë", + + "billable": "Fakturueshme", + "nonBillable": "Jo Fakturueshme", + + "total": "Total", + + "projectsTimeSheet": "Fletë Kohore e Projekteve", + + "loggedTime": "Koha e Regjistruar(orë)", + + "exportToExcel": "Eksporto në Excel", + "logged": "regjistruar", + "for": "për", + + "membersTimeSheet": "Fletë Kohore e Anëtarëve", + "member": "Anëtar", + + "estimatedVsActual": "Vlerësuar vs Aktual", + "workingDays": "Ditë Pune", + "manDays": "Ditë Njeri", + "days": "Ditë", + "estimatedDays": "Ditë të Vlerësuara", + "actualDays": "Ditë Aktuale", + + "noCategories": "Nuk u gjetën kategori", + "noCategory": "Pa Kategori", + "noProjects": "Nuk u gjetën projekte", + "noTeams": "Nuk u gjetën ekipe", + "noData": "Nuk u gjetën të dhëna" +} diff --git a/worklenz-frontend/public/locales/alb/unauthorized.json b/worklenz-frontend/public/locales/alb/unauthorized.json new file mode 100644 index 00000000..a731e676 --- /dev/null +++ b/worklenz-frontend/public/locales/alb/unauthorized.json @@ -0,0 +1,5 @@ +{ + "title": "E paautorizuar!", + "subtitle": "Nuk jeni të autorizuar të hyni në këtë faqe", + "button": "Kthehu në Faqen Kryesore" +} From 99bec6c7f9fc49eeda087ba1ef2b629a9e99cbe9 Mon Sep 17 00:00:00 2001 From: Omindu Hirushka <102536488+OminduHirushka@users.noreply.github.com> Date: Wed, 18 Jun 2025 17:04:58 +0530 Subject: [PATCH 06/11] albanian language switch --- worklenz-frontend/src/features/i18n/language-selector.tsx | 2 ++ worklenz-frontend/src/features/i18n/localesSlice.ts | 1 + .../language-and-region/language-and-region-settings.tsx | 4 ++++ worklenz-frontend/src/utils/greetingString.ts | 6 ++++++ 4 files changed, 13 insertions(+) diff --git a/worklenz-frontend/src/features/i18n/language-selector.tsx b/worklenz-frontend/src/features/i18n/language-selector.tsx index aa3bdc9f..83851977 100644 --- a/worklenz-frontend/src/features/i18n/language-selector.tsx +++ b/worklenz-frontend/src/features/i18n/language-selector.tsx @@ -15,12 +15,14 @@ const LanguageSelector = () => { { key: 'en', label: 'English' }, { key: 'es', label: 'Español' }, { key: 'pt', label: 'Português' }, + { key: 'alb', label: 'Shqip' }, ]; const languageLabels = { en: 'En', es: 'Es', pt: 'Pt', + alb: 'Sq', }; return ( diff --git a/worklenz-frontend/src/features/i18n/localesSlice.ts b/worklenz-frontend/src/features/i18n/localesSlice.ts index d6810845..f405ec2a 100644 --- a/worklenz-frontend/src/features/i18n/localesSlice.ts +++ b/worklenz-frontend/src/features/i18n/localesSlice.ts @@ -5,6 +5,7 @@ export enum Language { EN = 'en', ES = 'es', PT = 'pt', + ALB = 'alb' } export type ILanguageType = `${Language}`; diff --git a/worklenz-frontend/src/pages/settings/language-and-region/language-and-region-settings.tsx b/worklenz-frontend/src/pages/settings/language-and-region/language-and-region-settings.tsx index 68afcb60..a7c8b092 100644 --- a/worklenz-frontend/src/pages/settings/language-and-region/language-and-region-settings.tsx +++ b/worklenz-frontend/src/pages/settings/language-and-region/language-and-region-settings.tsx @@ -47,6 +47,10 @@ const LanguageAndRegionSettings = () => { value: Language.PT, label: 'Português', }, + { + value: Language.ALB, + label: 'Shqip', + }, ]; const handleLanguageChange = async (values: { language?: ILanguageType; timezone?: string }) => { diff --git a/worklenz-frontend/src/utils/greetingString.ts b/worklenz-frontend/src/utils/greetingString.ts index 0cc763b4..40bdb86b 100644 --- a/worklenz-frontend/src/utils/greetingString.ts +++ b/worklenz-frontend/src/utils/greetingString.ts @@ -29,6 +29,12 @@ export const greetingString = (name: string): string => { morning = 'manhã'; afternoon = 'tarde'; evening = 'noite'; + } else if (language === 'alb') { + greetingPrefix = 'Përshëndetje'; + greetingSuffix = 'të mbarë'; + morning = 'mëngjesi'; + afternoon = 'pasdite'; + evening = 'mbrëmja'; } return `${greetingPrefix} ${name}, ${greetingSuffix} ${greet}!`; From 3ace14fcdbe74b8b4d2ccd1f9a2cb4006e0ce110 Mon Sep 17 00:00:00 2001 From: kithmina1999 Date: Thu, 19 Jun 2025 22:26:20 +0530 Subject: [PATCH 07/11] build(docker): optimize docker setup and compose configuration - Split Dockerfile into multi-stage build to reduce final image size - Update docker-compose.yml with restart policies and health checks - Improve .dockerignore files for both frontend and backend - Fix MinIO bucket creation script to use 'alias set' instead of deprecated command - Enhance PostgreSQL healthcheck configuration --- docker-compose.yml | 14 ++++++---- git | 3 +++ worklenz-backend/.dockerignore | 6 ++++- worklenz-backend/Dockerfile | 45 +++++++++++++++++++++------------ worklenz-frontend/.dockerignore | 6 +++++ 5 files changed, 52 insertions(+), 22 deletions(-) create mode 100644 git create mode 100644 worklenz-frontend/.dockerignore diff --git a/docker-compose.yml b/docker-compose.yml index e7d074ad..51b30b3a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,8 +7,8 @@ services: ports: - "5000:5000" depends_on: - backend: - condition: service_started + - backend + restart: unless-stopped env_file: - ./worklenz-frontend/.env.production networks: @@ -26,6 +26,7 @@ services: condition: service_healthy minio: condition: service_started + restart: unless-stopped env_file: - ./worklenz-backend/.env networks: @@ -37,6 +38,7 @@ services: ports: - "9000:9000" - "9001:9001" + restart: unless-stopped environment: MINIO_ROOT_USER: ${S3_ACCESS_KEY_ID:-minioadmin} MINIO_ROOT_PASSWORD: ${S3_SECRET_ACCESS_KEY:-minioadmin} @@ -52,13 +54,14 @@ services: container_name: worklenz_createbuckets depends_on: - minio + restart: on-failure entrypoint: > /bin/sh -c ' echo "Waiting for MinIO to start..."; sleep 15; for i in 1 2 3 4 5; do echo "Attempt $i to connect to MinIO..."; - if /usr/bin/mc config host add myminio http://minio:9000 minioadmin minioadmin; then + if /usr/bin/mc alias set myminio http://minio:9000 minioadmin minioadmin; then echo "Successfully connected to MinIO!"; /usr/bin/mc mb --ignore-existing myminio/worklenz-bucket; /usr/bin/mc policy set public myminio/worklenz-bucket; @@ -80,10 +83,11 @@ services: POSTGRES_DB: ${DB_NAME:-worklenz_db} POSTGRES_PASSWORD: ${DB_PASSWORD:-password} healthcheck: - test: [ "CMD-SHELL", "pg_isready -d ${DB_NAME:-worklenz_db} -U ${DB_USER:-postgres}" ] + test: ["CMD-SHELL", "pg_isready -h localhost -p 5432 -U postgres"] interval: 10s timeout: 5s - retries: 5 + retries: 10 + restart: unless-stopped networks: - worklenz volumes: diff --git a/git b/git new file mode 100644 index 00000000..ff506e2f --- /dev/null +++ b/git @@ -0,0 +1,3 @@ + PID PPID PGID WINPID TTY UID STIME COMMAND + 1449 1 1449 23644 cons0 197609 22:11:58 /usr/bin/bash + 1567 1449 1567 20324 cons0 197609 22:17:39 /usr/bin/PS diff --git a/worklenz-backend/.dockerignore b/worklenz-backend/.dockerignore index 263e9ac4..fdfab06a 100644 --- a/worklenz-backend/.dockerignore +++ b/worklenz-backend/.dockerignore @@ -1,5 +1,9 @@ node_modules npm-debug.log -build .scannerwork coverage +.dockerignore +.git +*.md +tests + diff --git a/worklenz-backend/Dockerfile b/worklenz-backend/Dockerfile index f381e37e..244b7cf8 100644 --- a/worklenz-backend/Dockerfile +++ b/worklenz-backend/Dockerfile @@ -1,26 +1,39 @@ -# Use the official Node.js 20 image as a base -FROM node:20 +# --- Stage 1: Build --- +FROM node:20-slim AS builder + +ARG RELEASE_VERSION +RUN apt-get update && apt-get install -y \ + python3 \ + make \ + g++ \ + curl \ + postgresql-server-dev-all \ + && rm -rf /var/lib/apt/lists/* -# Create and set the working directory WORKDIR /usr/src/app -# Install global dependencies -RUN npm install -g ts-node typescript grunt grunt-cli - -# Copy package.json and package-lock.json (if available) COPY package*.json ./ - -# Install app dependencies RUN npm ci -# Copy the rest of the application code COPY . . - -# Run the build script to compile TypeScript to JavaScript RUN npm run build -# Expose the port the app runs on -EXPOSE 3000 +RUN echo "$RELEASE_VERSION" > release + +# --- Stage 2: Production Image --- +FROM node:20-slim + +RUN apt-get update && apt-get install -y libpq5 && rm -rf /var/lib/apt/lists/* + +WORKDIR /app + +COPY --from=builder /usr/src/app/package*.json ./ +COPY --from=builder /usr/src/app/build ./build +COPY --from=builder /usr/src/app/node_modules ./node_modules +COPY --from=builder /usr/src/app/release ./release +COPY --from=builder /usr/src/app/worklenz-email-templates ./worklenz-email-templates + + +EXPOSE 3000 +CMD ["node", "build/bin/www"] -# Start the application -CMD ["npm", "start"] \ No newline at end of file diff --git a/worklenz-frontend/.dockerignore b/worklenz-frontend/.dockerignore new file mode 100644 index 00000000..6a9920e7 --- /dev/null +++ b/worklenz-frontend/.dockerignore @@ -0,0 +1,6 @@ +node_modules +npm-debug.log +.git +.gitignore +.dockerignore +README.md From eca7af2d6f33c0d2a0d092e3b639e95d11d95f07 Mon Sep 17 00:00:00 2001 From: kithmina1999 Date: Thu, 19 Jun 2025 22:32:17 +0530 Subject: [PATCH 08/11] chore: remove obsolete git file with process information The file contained outdated process information that was no longer relevant to the project. This cleanup helps maintain a cleaner codebase. --- git | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 git diff --git a/git b/git deleted file mode 100644 index ff506e2f..00000000 --- a/git +++ /dev/null @@ -1,3 +0,0 @@ - PID PPID PGID WINPID TTY UID STIME COMMAND - 1449 1 1449 23644 cons0 197609 22:11:58 /usr/bin/bash - 1567 1449 1567 20324 cons0 197609 22:17:39 /usr/bin/PS From 0d0596b767e8b3c6b10a997e81f2e402b36e20a1 Mon Sep 17 00:00:00 2001 From: kithmina1999 Date: Fri, 20 Jun 2025 08:48:51 +0530 Subject: [PATCH 09/11] ci(docker): update postgres healthcheck and retry settings - Modify healthcheck command to use DB_NAME and DB_USER environment variables - Reduce retries from 10 to 5 to fail faster if database is unavailable --- docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 51b30b3a..363f2006 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -83,10 +83,10 @@ services: POSTGRES_DB: ${DB_NAME:-worklenz_db} POSTGRES_PASSWORD: ${DB_PASSWORD:-password} healthcheck: - test: ["CMD-SHELL", "pg_isready -h localhost -p 5432 -U postgres"] + test: [ "CMD-SHELL", "pg_isready -d ${DB_NAME:-worklenz_db} -U ${DB_USER:-postgres}" ] interval: 10s timeout: 5s - retries: 10 + retries: 5 restart: unless-stopped networks: - worklenz From a681aadcfaeb2c03641f5ba23a961e279e69e221 Mon Sep 17 00:00:00 2001 From: Omindu Hirushka <102536488+OminduHirushka@users.noreply.github.com> Date: Tue, 24 Jun 2025 14:17:08 +0530 Subject: [PATCH 10/11] german language --- .../public/locales/de/404-page.json | 4 + .../public/locales/de/account-setup.json | 31 +++++ .../locales/de/admin-center/current-bill.json | 113 ++++++++++++++++++ .../locales/de/admin-center/overview.json | 8 ++ .../locales/de/admin-center/projects.json | 12 ++ .../locales/de/admin-center/sidebar.json | 8 ++ .../public/locales/de/admin-center/teams.json | 33 +++++ .../public/locales/de/admin-center/users.json | 9 ++ .../public/locales/de/all-project-list.json | 23 ++++ .../public/locales/de/auth/auth-common.json | 5 + .../locales/de/auth/forgot-password.json | 12 ++ .../public/locales/de/auth/login.json | 27 +++++ .../public/locales/de/auth/signup.json | 29 +++++ .../locales/de/auth/verify-reset-email.json | 14 +++ .../public/locales/de/common.json | 9 ++ .../locales/de/create-first-project-form.json | 13 ++ .../public/locales/de/create-first-tasks.json | 7 ++ worklenz-frontend/public/locales/de/home.json | 46 +++++++ .../de/invite-initial-team-members.json | 8 ++ .../public/locales/de/kanban-board.json | 23 ++++ .../public/locales/de/license-expired.json | 6 + .../public/locales/de/navbar.json | 31 +++++ .../locales/de/organization-name-form.json | 5 + .../public/locales/de/phases-drawer.json | 7 ++ .../public/locales/de/project-drawer.json | 42 +++++++ .../public/locales/de/project-view-files.json | 14 +++ .../locales/de/project-view-insights.json | 41 +++++++ .../locales/de/project-view-members.json | 17 +++ .../locales/de/project-view-updates.json | 6 + .../project-view/import-task-templates.json | 11 ++ .../project-view/project-member-drawer.json | 7 ++ .../de/project-view/project-view-header.json | 13 ++ .../de/project-view/save-as-template.json | 27 +++++ .../locales/de/reporting-members-drawer.json | 90 ++++++++++++++ .../public/locales/de/reporting-members.json | 35 ++++++ .../locales/de/reporting-overview-drawer.json | 39 ++++++ .../public/locales/de/reporting-overview.json | 25 ++++ .../locales/de/reporting-projects-drawer.json | 59 +++++++++ .../de/reporting-projects-filters.json | 35 ++++++ .../public/locales/de/reporting-projects.json | 52 ++++++++ .../public/locales/de/reporting-sidebar.json | 8 ++ .../public/locales/de/schedule.json | 39 ++++++ .../locales/de/settings/categories.json | 10 ++ .../locales/de/settings/change-password.json | 15 +++ .../public/locales/de/settings/clients.json | 22 ++++ .../locales/de/settings/job-titles.json | 20 ++++ .../public/locales/de/settings/labels.json | 11 ++ .../public/locales/de/settings/language.json | 7 ++ .../locales/de/settings/notifications.json | 11 ++ .../public/locales/de/settings/profile.json | 13 ++ .../de/settings/project-templates.json | 8 ++ .../public/locales/de/settings/sidebar.json | 14 +++ .../locales/de/settings/task-templates.json | 9 ++ .../locales/de/settings/team-members.json | 44 +++++++ .../de/task-drawer/task-drawer-info-tab.json | 29 +++++ .../locales/de/task-drawer/task-drawer.json | 78 ++++++++++++ .../public/locales/de/task-list-filters.json | 59 +++++++++ .../public/locales/de/task-list-table.json | 63 ++++++++++ .../locales/de/task-template-drawer.json | 11 ++ .../de/tasks/task-table-bulk-actions.json | 24 ++++ .../public/locales/de/template-drawer.json | 19 +++ .../public/locales/de/templateDrawer.json | 23 ++++ .../public/locales/de/time-report.json | 44 +++++++ .../public/locales/de/unauthorized.json | 5 + 64 files changed, 1582 insertions(+) create mode 100644 worklenz-frontend/public/locales/de/404-page.json create mode 100644 worklenz-frontend/public/locales/de/account-setup.json create mode 100644 worklenz-frontend/public/locales/de/admin-center/current-bill.json create mode 100644 worklenz-frontend/public/locales/de/admin-center/overview.json create mode 100644 worklenz-frontend/public/locales/de/admin-center/projects.json create mode 100644 worklenz-frontend/public/locales/de/admin-center/sidebar.json create mode 100644 worklenz-frontend/public/locales/de/admin-center/teams.json create mode 100644 worklenz-frontend/public/locales/de/admin-center/users.json create mode 100644 worklenz-frontend/public/locales/de/all-project-list.json create mode 100644 worklenz-frontend/public/locales/de/auth/auth-common.json create mode 100644 worklenz-frontend/public/locales/de/auth/forgot-password.json create mode 100644 worklenz-frontend/public/locales/de/auth/login.json create mode 100644 worklenz-frontend/public/locales/de/auth/signup.json create mode 100644 worklenz-frontend/public/locales/de/auth/verify-reset-email.json create mode 100644 worklenz-frontend/public/locales/de/common.json create mode 100644 worklenz-frontend/public/locales/de/create-first-project-form.json create mode 100644 worklenz-frontend/public/locales/de/create-first-tasks.json create mode 100644 worklenz-frontend/public/locales/de/home.json create mode 100644 worklenz-frontend/public/locales/de/invite-initial-team-members.json create mode 100644 worklenz-frontend/public/locales/de/kanban-board.json create mode 100644 worklenz-frontend/public/locales/de/license-expired.json create mode 100644 worklenz-frontend/public/locales/de/navbar.json create mode 100644 worklenz-frontend/public/locales/de/organization-name-form.json create mode 100644 worklenz-frontend/public/locales/de/phases-drawer.json create mode 100644 worklenz-frontend/public/locales/de/project-drawer.json create mode 100644 worklenz-frontend/public/locales/de/project-view-files.json create mode 100644 worklenz-frontend/public/locales/de/project-view-insights.json create mode 100644 worklenz-frontend/public/locales/de/project-view-members.json create mode 100644 worklenz-frontend/public/locales/de/project-view-updates.json create mode 100644 worklenz-frontend/public/locales/de/project-view/import-task-templates.json create mode 100644 worklenz-frontend/public/locales/de/project-view/project-member-drawer.json create mode 100644 worklenz-frontend/public/locales/de/project-view/project-view-header.json create mode 100644 worklenz-frontend/public/locales/de/project-view/save-as-template.json create mode 100644 worklenz-frontend/public/locales/de/reporting-members-drawer.json create mode 100644 worklenz-frontend/public/locales/de/reporting-members.json create mode 100644 worklenz-frontend/public/locales/de/reporting-overview-drawer.json create mode 100644 worklenz-frontend/public/locales/de/reporting-overview.json create mode 100644 worklenz-frontend/public/locales/de/reporting-projects-drawer.json create mode 100644 worklenz-frontend/public/locales/de/reporting-projects-filters.json create mode 100644 worklenz-frontend/public/locales/de/reporting-projects.json create mode 100644 worklenz-frontend/public/locales/de/reporting-sidebar.json create mode 100644 worklenz-frontend/public/locales/de/schedule.json create mode 100644 worklenz-frontend/public/locales/de/settings/categories.json create mode 100644 worklenz-frontend/public/locales/de/settings/change-password.json create mode 100644 worklenz-frontend/public/locales/de/settings/clients.json create mode 100644 worklenz-frontend/public/locales/de/settings/job-titles.json create mode 100644 worklenz-frontend/public/locales/de/settings/labels.json create mode 100644 worklenz-frontend/public/locales/de/settings/language.json create mode 100644 worklenz-frontend/public/locales/de/settings/notifications.json create mode 100644 worklenz-frontend/public/locales/de/settings/profile.json create mode 100644 worklenz-frontend/public/locales/de/settings/project-templates.json create mode 100644 worklenz-frontend/public/locales/de/settings/sidebar.json create mode 100644 worklenz-frontend/public/locales/de/settings/task-templates.json create mode 100644 worklenz-frontend/public/locales/de/settings/team-members.json create mode 100644 worklenz-frontend/public/locales/de/task-drawer/task-drawer-info-tab.json create mode 100644 worklenz-frontend/public/locales/de/task-drawer/task-drawer.json create mode 100644 worklenz-frontend/public/locales/de/task-list-filters.json create mode 100644 worklenz-frontend/public/locales/de/task-list-table.json create mode 100644 worklenz-frontend/public/locales/de/task-template-drawer.json create mode 100644 worklenz-frontend/public/locales/de/tasks/task-table-bulk-actions.json create mode 100644 worklenz-frontend/public/locales/de/template-drawer.json create mode 100644 worklenz-frontend/public/locales/de/templateDrawer.json create mode 100644 worklenz-frontend/public/locales/de/time-report.json create mode 100644 worklenz-frontend/public/locales/de/unauthorized.json diff --git a/worklenz-frontend/public/locales/de/404-page.json b/worklenz-frontend/public/locales/de/404-page.json new file mode 100644 index 00000000..641a1847 --- /dev/null +++ b/worklenz-frontend/public/locales/de/404-page.json @@ -0,0 +1,4 @@ +{ + "doesNotExistText": "Entschuldigung, die von Ihnen besuchte Seite existiert nicht.", + "backHomeButton": "Zurück zur Startseite" +} diff --git a/worklenz-frontend/public/locales/de/account-setup.json b/worklenz-frontend/public/locales/de/account-setup.json new file mode 100644 index 00000000..ddfb7b80 --- /dev/null +++ b/worklenz-frontend/public/locales/de/account-setup.json @@ -0,0 +1,31 @@ +{ + "continue": "Weiter", + + "setupYourAccount": "Richten Sie Ihr Worklenz-Konto ein.", + "organizationStepTitle": "Organisation benennen", + "organizationStepLabel": "Wählen Sie einen Namen für Ihr Worklenz-Konto.", + + "projectStepTitle": "Erstellen Sie Ihr erstes Projekt", + "projectStepLabel": "An welchem Projekt arbeiten Sie gerade?", + "projectStepPlaceholder": "z.B. Marketingplan", + + "tasksStepTitle": "Erstellen Sie Ihre ersten Aufgaben", + "tasksStepLabel": "Geben Sie einige Aufgaben ein, die Sie in", + "tasksStepAddAnother": "Weitere hinzufügen", + + "emailPlaceholder": "E-Mail-Adresse", + "invalidEmail": "Bitte geben Sie eine gültige E-Mail-Adresse ein", + "or": "oder", + "templateButton": "Aus Vorlage importieren", + "goBack": "Zurück", + "cancel": "Abbrechen", + "create": "Erstellen", + "templateDrawerTitle": "Aus Vorlagen auswählen", + "step3InputLabel": "Per E-Mail einladen", + "addAnother": "Weitere hinzufügen", + "skipForNow": "Jetzt überspringen", + "formTitle": "Erstellen Sie Ihre erste Aufgabe.", + "step3Title": "Laden Sie Ihr Team zur Zusammenarbeit ein", + "maxMembers": " (Sie können bis zu 5 Mitglieder einladen)", + "maxTasks": " (Sie können bis zu 5 Aufgaben erstellen)" +} diff --git a/worklenz-frontend/public/locales/de/admin-center/current-bill.json b/worklenz-frontend/public/locales/de/admin-center/current-bill.json new file mode 100644 index 00000000..fcf2c636 --- /dev/null +++ b/worklenz-frontend/public/locales/de/admin-center/current-bill.json @@ -0,0 +1,113 @@ +{ + "title": "Abrechnungen", + "currentBill": "Aktuelle Rechnung", + "configuration": "Konfiguration", + "currentPlanDetails": "Aktuelle Plan Details", + "upgradePlan": "Plan upgraden", + "cardBodyText01": "Kostenlose Testversion", + "cardBodyText02": "(Ihr Testplan läuft in 1 Monat 19 Tagen ab)", + "redeemCode": "Gutscheincode einlösen", + "accountStorage": "Kontospeicher", + "used": "Verwendet:", + "remaining": "Verbleibend:", + "charges": "Gebühren", + "tooltip": "Gebühren für den aktuellen Abrechnungszeitraum", + "description": "Beschreibung", + "billingPeriod": "Abrechnungszeitraum", + "billStatus": "Rechnungsstatus", + "perUserValue": "Pro Benutzer Wert", + "users": "Benutzer", + + "amount": "Betrag", + "invoices": "Rechnungen", + "transactionId": "Transaktions-ID", + "transactionDate": "Transaktionsdatum", + "paymentMethod": "Zahlungsmethode", + "status": "Status", + "ltdUsers": "Sie können bis zu {{ltd_users}} Benutzer hinzufügen.", + + "totalSeats": "Gesamte Plätze", + "availableSeats": "Verfügbare Plätze", + "addMoreSeats": "Weitere Plätze hinzufügen", + + "drawerTitle": "Gutscheincode einlösen", + "label": "Gutscheincode", + "drawerPlaceholder": "Geben Sie Ihren Gutscheincode ein", + "redeemSubmit": "Einreichen", + + "modalTitle": "Wählen Sie den besten Plan für Ihr Team", + "seatLabel": "Anzahl der Plätze", + "freePlan": "Kostenloser Plan", + "startup": "Startup", + "business": "Business", + "tag": "Am beliebtesten", + "enterprise": "Enterprise", + + "freeSubtitle": "kostenlos für immer", + "freeUsers": "Ideal für die persönliche Nutzung", + "freeText01": "100MB Speicher", + "freeText02": "3 Projekte", + "freeText03": "5 Teammitglieder", + + "startupSubtitle": "PAUSCHALPREIS / Monat", + "startupUsers": "Bis zu 15 Benutzer", + "startupText01": "25GB Speicher", + "startupText02": "Unbegrenzte aktive Projekte", + "startupText03": "Zeitplan", + "startupText04": "Berichterstattung", + "startupText05": "Projekte abonnieren", + + "businessSubtitle": "Benutzer / Monat", + "businessUsers": "16 - 200 Benutzer", + + "enterpriseUsers": "200 - 500+ Benutzer", + + "footerTitle": "Bitte geben Sie uns eine Kontaktnummer, unter der wir Sie erreichen können.", + "footerLabel": "Kontaktnummer", + "footerButton": "Kontaktieren Sie uns", + + "redeemCodePlaceHolder": "Geben Sie Ihren Gutscheincode ein", + "submit": "Einreichen", + + "trialPlan": "Kostenlose Testversion", + "trialExpireDate": "Gültig bis {{trial_expire_date}}", + "trialExpired": "Ihre kostenlose Testversion ist {{trial_expire_string}} abgelaufen", + "trialInProgress": "Ihre kostenlose Testversion läuft {{trial_expire_string}} ab", + + "required": "Dieses Feld ist erforderlich", + "invalidCode": "Ungültiger Code", + + "selectPlan": "Wählen Sie den besten Plan für Ihr Team", + "changeSubscriptionPlan": "Ändern Sie Ihren Abonnementplan", + "noOfSeats": "Anzahl der Plätze", + "annualPlan": "Pro - Jährlich", + "monthlyPlan": "Pro - Monatlich", + "freeForever": "Kostenlos für immer", + "bestForPersonalUse": "Ideal für die persönliche Nutzung", + "storage": "Speicher", + "projects": "Projekte", + "teamMembers": "Teammitglieder", + "unlimitedTeamMembers": "Unbegrenzte Teammitglieder", + "unlimitedActiveProjects": "Unbegrenzte aktive Projekte", + "schedule": "Zeitplan", + "reporting": "Berichterstattung", + "subscribeToProjects": "Projekte abonnieren", + "billedAnnually": "Jährlich abgerechnet", + "billedMonthly": "Monatlich abgerechnet", + + "pausePlan": "Plan pausieren", + "resumePlan": "Plan fortsetzen", + "changePlan": "Plan ändern", + "cancelPlan": "Plan kündigen", + + "perMonthPerUser": "pro Benutzer/Monat", + "viewInvoice": "Rechnung anzeigen", + "switchToFreePlan": "Wechsel zum kostenlosen Plan", + + "expirestoday": "heute", + "expirestomorrow": "morgen", + "expiredDaysAgo": "vor {{days}} Tagen", + + "continueWith": "Fortfahren mit {{plan}}", + "changeToPlan": "Wechseln zu {{plan}}" +} diff --git a/worklenz-frontend/public/locales/de/admin-center/overview.json b/worklenz-frontend/public/locales/de/admin-center/overview.json new file mode 100644 index 00000000..0330d788 --- /dev/null +++ b/worklenz-frontend/public/locales/de/admin-center/overview.json @@ -0,0 +1,8 @@ +{ + "overview": "Übersicht", + "name": "Organisationsname", + "owner": "Organisationsinhaber", + "admins": "Organisationsadministratoren", + "contactNumber": "Kontaktnummer hinzufügen", + "edit": "Bearbeiten" +} diff --git a/worklenz-frontend/public/locales/de/admin-center/projects.json b/worklenz-frontend/public/locales/de/admin-center/projects.json new file mode 100644 index 00000000..2d4f3534 --- /dev/null +++ b/worklenz-frontend/public/locales/de/admin-center/projects.json @@ -0,0 +1,12 @@ +{ + "membersCount": "Mitgliederanzahl", + "createdAt": "Erstellt am", + "projectName": "Projektname", + "teamName": "Teamname", + "refreshProjects": "Projekte aktualisieren", + "searchPlaceholder": "Nach Projektname suchen", + "deleteProject": "Sind Sie sicher, dass Sie dieses Projekt löschen möchten?", + "confirm": "Bestätigen", + "cancel": "Abbrechen", + "delete": "Projekt löschen" +} diff --git a/worklenz-frontend/public/locales/de/admin-center/sidebar.json b/worklenz-frontend/public/locales/de/admin-center/sidebar.json new file mode 100644 index 00000000..670595a3 --- /dev/null +++ b/worklenz-frontend/public/locales/de/admin-center/sidebar.json @@ -0,0 +1,8 @@ +{ + "overview": "Übersicht", + "users": "Benutzer", + "teams": "Teams", + "billing": "Abrechnung", + "projects": "Projekte", + "adminCenter": "Admin-Center" +} diff --git a/worklenz-frontend/public/locales/de/admin-center/teams.json b/worklenz-frontend/public/locales/de/admin-center/teams.json new file mode 100644 index 00000000..7ab2831f --- /dev/null +++ b/worklenz-frontend/public/locales/de/admin-center/teams.json @@ -0,0 +1,33 @@ +{ + "title": "Teams", + "subtitle": "Teams", + "tooltip": "Teams aktualisieren", + "placeholder": "Nach Namen suchen", + "addTeam": "Team hinzufügen", + "team": "Team", + "membersCount": "Mitgliederanzahl", + "members": "Mitglieder", + "drawerTitle": "Neues Team erstellen", + "label": "Teamname", + "drawerPlaceholder": "Name", + "create": "Erstellen", + "delete": "Löschen", + "settings": "Einstellungen", + "popTitle": "Sind Sie sicher?", + "message": "Bitte geben Sie einen Namen ein", + "teamSettings": "Team-Einstellungen", + "teamName": "Teamname", + "teamDescription": "Teambeschreibung", + "teamMembers": "Teammitglieder", + "teamMembersCount": "Anzahl der Teammitglieder", + "teamMembersPlaceholder": "Nach Namen suchen", + "addMember": "Mitglied hinzufügen", + "add": "Hinzufügen", + "update": "Aktualisieren", + "teamNamePlaceholder": "Name des Teams", + "user": "Benutzer", + "role": "Rolle", + "owner": "Besitzer", + "admin": "Administrator", + "member": "Mitglied" +} diff --git a/worklenz-frontend/public/locales/de/admin-center/users.json b/worklenz-frontend/public/locales/de/admin-center/users.json new file mode 100644 index 00000000..47de9a59 --- /dev/null +++ b/worklenz-frontend/public/locales/de/admin-center/users.json @@ -0,0 +1,9 @@ +{ + "title": "Benutzer", + "subTitle": "Benutzer", + "placeholder": "Nach Namen suchen", + "user": "Benutzer", + "email": "E-Mail", + "lastActivity": "Letzte Aktivität", + "refresh": "Benutzer aktualisieren" +} diff --git a/worklenz-frontend/public/locales/de/all-project-list.json b/worklenz-frontend/public/locales/de/all-project-list.json new file mode 100644 index 00000000..b11fbbcd --- /dev/null +++ b/worklenz-frontend/public/locales/de/all-project-list.json @@ -0,0 +1,23 @@ +{ + "name": "Name", + "client": "Kunde", + "category": "Kategorie", + "status": "Status", + "tasksProgress": "Aufgabenfortschritt", + "updated_at": "Zuletzt aktualisiert", + "members": "Mitglieder", + "setting": "Einstellungen", + "projects": "Projekte", + "refreshProjects": "Projekte aktualisieren", + "all": "Alle", + "favorites": "Favoriten", + "archived": "Archiviert", + "placeholder": "Nach Namen suchen", + "archive": "Archivieren", + "unarchive": "Dearchivieren", + "archiveConfirm": "Sind Sie sicher, dass Sie dieses Projekt archivieren möchten?", + "unarchiveConfirm": "Sind Sie sicher, dass Sie dieses Projekt dearchivieren möchten?", + "clickToFilter": "Zum Filtern klicken nach", + "noProjects": "Keine Projekte gefunden", + "addToFavourites": "Zu Favoriten hinzufügen" +} diff --git a/worklenz-frontend/public/locales/de/auth/auth-common.json b/worklenz-frontend/public/locales/de/auth/auth-common.json new file mode 100644 index 00000000..dab26d10 --- /dev/null +++ b/worklenz-frontend/public/locales/de/auth/auth-common.json @@ -0,0 +1,5 @@ +{ + "loggingOut": "Abmelden...", + "authenticating": "Authentifizierung läuft...", + "gettingThingsReady": "Bereite alles für Sie vor..." +} diff --git a/worklenz-frontend/public/locales/de/auth/forgot-password.json b/worklenz-frontend/public/locales/de/auth/forgot-password.json new file mode 100644 index 00000000..a94c7463 --- /dev/null +++ b/worklenz-frontend/public/locales/de/auth/forgot-password.json @@ -0,0 +1,12 @@ +{ + "headerDescription": "Passwort zurücksetzen", + "emailLabel": "E-Mail", + "emailPlaceholder": "Ihre E-Mail eingeben", + "emailRequired": "Bitte geben Sie Ihre E-Mail-Adresse ein!", + "resetPasswordButton": "Passwort zurücksetzen", + "returnToLoginButton": "Zurück zum Login", + "passwordResetSuccessMessage": "Ein Link zum Zurücksetzen des Passworts wurde an Ihre E-Mail gesendet.", + "orText": "ODER", + "successTitle": "Anweisung zum Zurücksetzen gesendet!", + "successMessage": "Die Informationen zum Zurücksetzen wurden an Ihre E-Mail gesendet. Bitte überprüfen Sie Ihr E-Mail-Postfach." +} diff --git a/worklenz-frontend/public/locales/de/auth/login.json b/worklenz-frontend/public/locales/de/auth/login.json new file mode 100644 index 00000000..f42d0db9 --- /dev/null +++ b/worklenz-frontend/public/locales/de/auth/login.json @@ -0,0 +1,27 @@ +{ + "headerDescription": "Melden Sie sich an", + "emailLabel": "E-Mail", + "emailPlaceholder": "Ihre E-Mail-Adresse eingeben", + "emailRequired": "Bitte geben Sie Ihre E-Mail-Adresse ein!", + "passwordLabel": "Passwort", + "passwordPlaceholder": "Ihr Passwort eingeben", + "passwordRequired": "Bitte geben Sie Ihr Passwort ein!", + "rememberMe": "Erinnere dich an mich", + "loginButton": "Anmelden", + "signupButton": "Registrieren", + "forgotPasswordButton": "Passwort vergessen?", + "signInWithGoogleButton": "Mit Google anmelden", + "dontHaveAccountText": "Noch kein Konto?", + "orText": "ODER", + "successMessage": "Sie haben sich erfolgreich angemeldet!", + "loginError": "Anmeldung fehlgeschlagen", + "googleLoginError": "Google-Anmeldung fehlgeschlagen", + "validationMessages": { + "email": "Bitte geben Sie eine gültige E-Mail-Adresse ein", + "password": "Das Passwort muss mindestens 8 Zeichen lang sein" + }, + "errorMessages": { + "loginErrorTitle": "Anmeldung fehlgeschlagen", + "loginErrorMessage": "Bitte überprüfen Sie Ihre E-Mail-Adresse und Ihr Passwort und versuchen Sie es erneut" + } +} diff --git a/worklenz-frontend/public/locales/de/auth/signup.json b/worklenz-frontend/public/locales/de/auth/signup.json new file mode 100644 index 00000000..55a63a23 --- /dev/null +++ b/worklenz-frontend/public/locales/de/auth/signup.json @@ -0,0 +1,29 @@ +{ + "headerDescription": "Registrieren Sie sich, um loszulegen", + "nameLabel": "Vollständiger Name", + "namePlaceholder": "Ihren vollständigen Namen eingeben", + "nameRequired": "Bitte geben Sie Ihren vollständigen Namen ein!", + "nameMinCharacterRequired": "Der Name muss mindestens 4 Zeichen lang sein!", + "emailLabel": "E-Mail", + "emailPlaceholder": "Ihre E-Mail-Adresse eingeben", + "emailRequired": "Bitte geben Sie Ihre E-Mail-Adresse ein!", + "passwordLabel": "Passwort", + "passwordPlaceholder": "Ihr Passwort eingeben", + "passwordRequired": "Bitte geben Sie Ihr Passwort ein!", + "passwordMinCharacterRequired": "Das Passwort muss mindestens 8 Zeichen lang sein!", + "passwordPatternRequired": "Das Passwort erfüllt nicht die Anforderungen!", + "strongPasswordPlaceholder": "Ein stärkeres Passwort eingeben", + "passwordValidationAltText": "Das Passwort muss mindestens 8 Zeichen enthalten, mit Groß- und Kleinbuchstaben, einer Zahl und einem Sonderzeichen.", + "signupSuccessMessage": "Sie haben sich erfolgreich registriert!", + "privacyPolicyLink": "Datenschutzrichtlinie", + "termsOfUseLink": "Nutzungsbedingungen", + "bySigningUpText": "Mit der Registrierung stimmen Sie unseren", + "andText": "und", + "signupButton": "Registrieren", + "signInWithGoogleButton": "Mit Google anmelden", + "alreadyHaveAccountText": "Sie haben bereits ein Konto?", + "loginButton": "Anmelden", + "orText": "ODER", + "reCAPTCHAVerificationError": "reCAPTCHA-Verifizierungsfehler", + "reCAPTCHAVerificationErrorMessage": "Wir konnten Ihre reCAPTCHA nicht verifizieren. Bitte versuchen Sie es erneut." +} diff --git a/worklenz-frontend/public/locales/de/auth/verify-reset-email.json b/worklenz-frontend/public/locales/de/auth/verify-reset-email.json new file mode 100644 index 00000000..323c685f --- /dev/null +++ b/worklenz-frontend/public/locales/de/auth/verify-reset-email.json @@ -0,0 +1,14 @@ +{ + "title": "E-Mail zurücksetzen bestätigen", + "description": "Geben Sie Ihr neues Passwort ein", + "placeholder": "Neues Passwort eingeben", + "confirmPasswordPlaceholder": "Neues Passwort bestätigen", + "passwordHint": "Mindestens 8 Zeichen, mit Groß- und Kleinbuchstaben, einer Zahl und einem Sonderzeichen.", + "resetPasswordButton": "Passwort zurücksetzen", + "orText": "Oder", + "resendResetEmail": "Zurücksetz-E-Mail erneut senden", + "passwordRequired": "Bitte geben Sie Ihr neues Passwort ein", + "returnToLoginButton": "Zurück zur Anmeldung", + "confirmPasswordRequired": "Bitte bestätigen Sie Ihr neues Passwort", + "passwordMismatch": "Die beiden Passwörter stimmen nicht überein" +} diff --git a/worklenz-frontend/public/locales/de/common.json b/worklenz-frontend/public/locales/de/common.json new file mode 100644 index 00000000..937ad4a9 --- /dev/null +++ b/worklenz-frontend/public/locales/de/common.json @@ -0,0 +1,9 @@ +{ + "login-success": "Anmeldung erfolgreich!", + "login-failed": "Anmeldung fehlgeschlagen. Bitte überprüfen Sie Ihre Anmeldedaten und versuchen Sie es erneut.", + "signup-success": "Registrierung erfolgreich! Willkommen an Bord.", + "signup-failed": "Registrierung fehlgeschlagen. Bitte füllen Sie alle erforderlichen Felder aus und versuchen Sie es erneut.", + "reconnecting": "Vom Server getrennt.", + "connection-lost": "Verbindung zum Server fehlgeschlagen. Bitte überprüfen Sie Ihre Internetverbindung.", + "connection-restored": "Erfolgreich mit dem Server verbunden" +} diff --git a/worklenz-frontend/public/locales/de/create-first-project-form.json b/worklenz-frontend/public/locales/de/create-first-project-form.json new file mode 100644 index 00000000..02ce495e --- /dev/null +++ b/worklenz-frontend/public/locales/de/create-first-project-form.json @@ -0,0 +1,13 @@ +{ + "formTitle": "Erstellen Sie Ihr erstes Projekt", + "inputLabel": "An welchem Projekt arbeiten Sie gerade?", + "or": "oder", + "templateButton": "Aus Vorlage importieren", + "createFromTemplate": "Aus Vorlage erstellen", + "goBack": "Zurück", + "continue": "Weitermachen", + "cancel": "Abbrechen", + "create": "Erstellen", + "templateDrawerTitle": "Aus Vorlagen auswählen", + "createProject": "Projekt erstellen" +} diff --git a/worklenz-frontend/public/locales/de/create-first-tasks.json b/worklenz-frontend/public/locales/de/create-first-tasks.json new file mode 100644 index 00000000..ae7a4256 --- /dev/null +++ b/worklenz-frontend/public/locales/de/create-first-tasks.json @@ -0,0 +1,7 @@ +{ + "formTitle": "Erstellen Sie Ihre erste Aufgabe.", + "inputLabel": "Geben Sie einige Aufgaben ein, die Sie erledigen werden in", + "addAnother": "Einen weiteren hinzufügen", + "goBack": "Zurück", + "continue": "Weiter" +} diff --git a/worklenz-frontend/public/locales/de/home.json b/worklenz-frontend/public/locales/de/home.json new file mode 100644 index 00000000..cc868952 --- /dev/null +++ b/worklenz-frontend/public/locales/de/home.json @@ -0,0 +1,46 @@ +{ + "todoList": { + "title": "Aufgabenliste", + "refreshTasks": "Aufgaben aktualisieren", + "addTask": "+ Aufgabe hinzufügen", + "noTasks": "Keine Aufgaben", + "pressEnter": "Drücken Sie", + "toCreate": "zum Erstellen.", + "markAsDone": "Als erledigt markieren" + }, + "projects": { + "title": "Projekte", + "refreshProjects": "Projekte aktualisieren", + "noRecentProjects": "Sie sind aktuell keinem Projekt zugewiesen.", + "noFavouriteProjects": "Keine Projekte als Favoriten markiert.", + "recent": "Kürzlich", + "favourites": "Favoriten" + }, + "tasks": { + "assignedToMe": "Mir zugewiesen", + "assignedByMe": "Von mir zugewiesen", + "all": "Alle", + "today": "Heute", + "upcoming": "Bevorstehend", + "overdue": "Überfällig", + "noDueDate": "Kein Fälligkeitsdatum", + "noTasks": "Keine Aufgaben zum Anzeigen.", + "addTask": "+ Aufgabe hinzufügen", + "name": "Name", + "project": "Projekt", + "status": "Status", + "dueDate": "Fälligkeitsdatum", + "dueDatePlaceholder": "Fälligkeitsdatum festlegen", + "tomorrow": "Morgen", + "nextWeek": "Nächste Woche", + "nextMonth": "Nächster Monat", + "projectRequired": "Bitte wählen Sie ein Projekt aus", + "pressTabToSelectDueDateAndProject": "Drücken Sie Tab, um ein Fälligkeitsdatum und ein Projekt auszuwählen", + "dueOn": "Fällige Aufgaben am", + "taskRequired": "Bitte fügen Sie eine Aufgabe hinzu", + "list": "Liste", + "calendar": "Kalender", + "tasks": "Aufgaben", + "refresh": "Aktualisieren" + } +} diff --git a/worklenz-frontend/public/locales/de/invite-initial-team-members.json b/worklenz-frontend/public/locales/de/invite-initial-team-members.json new file mode 100644 index 00000000..e3ba64ae --- /dev/null +++ b/worklenz-frontend/public/locales/de/invite-initial-team-members.json @@ -0,0 +1,8 @@ +{ + "formTitle": "Laden Sie Ihr Team zur Zusammenarbeit ein", + "inputLabel": "Per E-Mail einladen", + "addAnother": "Weitere hinzufügen", + "goBack": "Zurück", + "continue": "Weitermachen", + "skipForNow": "Vorerst überspringen" +} diff --git a/worklenz-frontend/public/locales/de/kanban-board.json b/worklenz-frontend/public/locales/de/kanban-board.json new file mode 100644 index 00000000..47f8bef4 --- /dev/null +++ b/worklenz-frontend/public/locales/de/kanban-board.json @@ -0,0 +1,23 @@ +{ + "rename": "Umbenennen", + "delete": "Löschen", + "addTask": "Aufgabe hinzufügen", + "addSectionButton": "Abschnitt hinzufügen", + "changeCategory": "Kategorie ändern", + + "deleteTooltip": "Löschen", + "deleteConfirmationTitle": "Sind Sie sicher?", + "deleteConfirmationOk": "Ja", + "deleteConfirmationCancel": "Abbrechen", + + "dueDate": "Fälligkeitsdatum", + "cancel": "Abbrechen", + + "today": "Heute", + "tomorrow": "Morgen", + "assignToMe": "Mir zuweisen", + "archive": "Archivieren", + + "newTaskNamePlaceholder": "Aufgabenname eingeben", + "newSubtaskNamePlaceholder": "Unteraufgabenname eingeben" +} diff --git a/worklenz-frontend/public/locales/de/license-expired.json b/worklenz-frontend/public/locales/de/license-expired.json new file mode 100644 index 00000000..437ddeb2 --- /dev/null +++ b/worklenz-frontend/public/locales/de/license-expired.json @@ -0,0 +1,6 @@ +{ + "title": "Ihre Worklenz-Testversion ist abgelaufen!", + "subtitle": "Bitte führen Sie jetzt ein Upgrade durch.", + "button": "Jetzt upgraden", + "checking": "Überprüfen des Abonnementstatus..." +} diff --git a/worklenz-frontend/public/locales/de/navbar.json b/worklenz-frontend/public/locales/de/navbar.json new file mode 100644 index 00000000..c84912e4 --- /dev/null +++ b/worklenz-frontend/public/locales/de/navbar.json @@ -0,0 +1,31 @@ +{ + "logoAlt": "Worklenz-Logo", + "home": "Startseite", + "projects": "Projekte", + "schedule": "Zeitplan", + "reporting": "Berichterstattung", + "clients": "Kunden", + "teams": "Teams", + "labels": "Labels", + "jobTitles": "Jobtitel", + "upgradePlan": "Plan upgraden", + "upgradePlanTooltip": "Plan upgraden", + "invite": "Einladen", + "inviteTooltip": "Teammitglieder zur Teilnahme einladen", + "switchTeamTooltip": "Team wechseln", + "help": "Hilfe", + "notificationTooltip": "Benachrichtigungen anzeigen", + "profileTooltip": "Profil anzeigen", + "adminCenter": "Admin-Center", + "settings": "Einstellungen", + "logOut": "Abmelden", + "notificationsDrawer": { + "read": "Gelesene Benachrichtigungen", + "unread": "Ungelesene Benachrichtigungen", + "markAsRead": "Als gelesen markieren", + "readAndJoin": "Lesen & Beitreten", + "accept": "Annehmen", + "acceptAndJoin": "Annehmen & Beitreten", + "noNotifications": "Keine Benachrichtigungen" + } +} diff --git a/worklenz-frontend/public/locales/de/organization-name-form.json b/worklenz-frontend/public/locales/de/organization-name-form.json new file mode 100644 index 00000000..06d3efcf --- /dev/null +++ b/worklenz-frontend/public/locales/de/organization-name-form.json @@ -0,0 +1,5 @@ +{ + "nameYourOrganization": "Benennen Sie Ihre Organisation.", + "worklenzAccountTitle": "Wählen Sie einen Namen für Ihr Worklenz-Konto.", + "continue": "Weiter" +} diff --git a/worklenz-frontend/public/locales/de/phases-drawer.json b/worklenz-frontend/public/locales/de/phases-drawer.json new file mode 100644 index 00000000..d06e3d05 --- /dev/null +++ b/worklenz-frontend/public/locales/de/phases-drawer.json @@ -0,0 +1,7 @@ +{ + "configurePhases": "Phasen konfigurieren", + "phaseLabel": "Phasenbezeichnung", + "enterPhaseName": "Namen für Phasenbezeichnung eingeben", + "addOption": "Option hinzufügen", + "phaseOptions": "Phasenoptionen:" +} diff --git a/worklenz-frontend/public/locales/de/project-drawer.json b/worklenz-frontend/public/locales/de/project-drawer.json new file mode 100644 index 00000000..d20f220b --- /dev/null +++ b/worklenz-frontend/public/locales/de/project-drawer.json @@ -0,0 +1,42 @@ +{ + "createProject": "Projekt erstellen", + "editProject": "Projekt bearbeiten", + "enterCategoryName": "Namen für die Kategorie eingeben", + "hitEnterToCreate": "Enter drücken zum Erstellen!", + "enterNotes": "Notizen", + "youCanManageClientsUnderSettings": "Kunden können Sie unter Einstellungen verwalten", + "addCategory": "Kategorie zum Projekt hinzufügen", + "newCategory": "Neue Kategorie", + "notes": "Notizen", + "startDate": "Startdatum", + "endDate": "Enddatum", + "estimateWorkingDays": "Arbeitstage schätzen", + "estimateManDays": "Personentage schätzen", + "hoursPerDay": "Stunden pro Tag", + "create": "Erstellen", + "update": "Aktualisieren", + "delete": "Löschen", + "typeToSearchClients": "Kundensuche", + "projectColor": "Projektfarbe", + "pleaseEnterAName": "Bitte geben Sie einen Namen ein", + "enterProjectName": "Projektnamen eingeben", + "name": "Name", + "status": "Status", + "health": "Gesundheit", + "category": "Kategorie", + "projectManager": "Projektleiter", + "client": "Kunde", + "deleteConfirmation": "Sind Sie sicher, dass Sie löschen möchten?", + "deleteConfirmationDescription": "Dies entfernt alle zugehörigen Daten und kann nicht rückgängig gemacht werden.", + "yes": "Ja", + "no": "Nein", + "createdAt": "Erstellt am", + "updatedAt": "Aktualisiert am", + "by": "von", + "add": "Hinzufügen", + "asClient": "als Kunde", + "createClient": "Kunde erstellen", + "searchInputPlaceholder": "Nach Name oder E-Mail suchen", + "hoursPerDayValidationMessage": "Stunden pro Tag müssen zwischen 1 und 24", + "noPermission": "Keine Berechtigung" +} diff --git a/worklenz-frontend/public/locales/de/project-view-files.json b/worklenz-frontend/public/locales/de/project-view-files.json new file mode 100644 index 00000000..8408df16 --- /dev/null +++ b/worklenz-frontend/public/locales/de/project-view-files.json @@ -0,0 +1,14 @@ +{ + "nameColumn": "Name", + "attachedTaskColumn": "Zugehörige Aufgabe", + "sizeColumn": "Größe", + "uploadedByColumn": "Hochgeladen von", + "uploadedAtColumn": "Hochgeladen am", + "fileIconAlt": "Dateisymbol", + "titleDescriptionText": "Alle Anhänge zu Aufgaben in diesem Projekt werden hier angezeigt.", + "deleteConfirmationTitle": "Sind Sie sicher?", + "deleteConfirmationOk": "Ja", + "deleteConfirmationCancel": "Abbrechen", + "segmentedTooltip": "Demnächst verfügbar! Wechseln zwischen Listenansicht und Miniaturansicht.", + "emptyText": "Es gibt keine Anhänge in diesem Projekt." +} diff --git a/worklenz-frontend/public/locales/de/project-view-insights.json b/worklenz-frontend/public/locales/de/project-view-insights.json new file mode 100644 index 00000000..5f11df54 --- /dev/null +++ b/worklenz-frontend/public/locales/de/project-view-insights.json @@ -0,0 +1,41 @@ +{ + "overview": { + "title": "Übersicht", + "statusOverview": "Statusübersicht", + "priorityOverview": "Prioritätenübersicht", + "lastUpdatedTasks": "Zuletzt aktualisierte Aufgaben" + }, + "members": { + "title": "Mitglieder", + "tooltip": "Mitglieder", + "tasksByMembers": "Aufgaben nach Mitgliedern", + "tasksByMembersTooltip": "Aufgaben nach Mitgliedern", + "name": "Name", + "taskCount": "Anzahl Aufgaben", + "contribution": "Beitrag", + "completed": "Abgeschlossen", + "incomplete": "Unvollständig", + "overdue": "Überfällig", + "progress": "Fortschritt" + }, + "tasks": { + "overdueTasks": "Überfällige Aufgaben", + "overLoggedTasks": "Aufgaben mit zu viel erfasster Zeit", + "tasksCompletedEarly": "Vorzeitig abgeschlossene Aufgaben", + "tasksCompletedLate": "Verspätet abgeschlossene Aufgaben", + "overLoggedTasksTooltip": "Aufgaben, bei denen mehr Zeit erfasst wurde als geschätzt", + "overdueTasksTooltip": "Aufgaben, deren Fälligkeitsdatum überschritten wurde" + }, + "common": { + "seeAll": "Alle anzeigen", + "totalLoggedHours": "Gesamterfasste Stunden", + "totalEstimation": "Gesamtschätzung", + "completedTasks": "Abgeschlossene Aufgaben", + "incompleteTasks": "Unvollständige Aufgaben", + "overdueTasks": "Überfällige Aufgaben", + "overdueTasksTooltip": "Aufgaben, deren Fälligkeitsdatum überschritten wurde", + "totalLoggedHoursTooltip": "Zeitschätzung und erfasste Zeit für Aufgaben.", + "includeArchivedTasks": "Archivierte Aufgaben einbeziehen", + "export": "Exportieren" + } +} diff --git a/worklenz-frontend/public/locales/de/project-view-members.json b/worklenz-frontend/public/locales/de/project-view-members.json new file mode 100644 index 00000000..eee5d0a1 --- /dev/null +++ b/worklenz-frontend/public/locales/de/project-view-members.json @@ -0,0 +1,17 @@ +{ + "nameColumn": "Name", + "jobTitleColumn": "Jobtitel", + "emailColumn": "E-Mail", + "tasksColumn": "Aufgaben", + "taskProgressColumn": "Aufgabenfortschritt", + "accessColumn": "Zugriff", + "fileIconAlt": "Dateisymbol", + "deleteConfirmationTitle": "Sind Sie sicher?", + "deleteConfirmationOk": "Ja", + "deleteConfirmationCancel": "Abbrechen", + "refreshButtonTooltip": "Mitglieder aktualisieren", + "deleteButtonTooltip": "Aus Projekt entfernen", + "memberCount": "Mitglied", + "membersCountPlural": "Mitglieder", + "emptyText": "Es gibt keine Anhänge in diesem Projekt." +} diff --git a/worklenz-frontend/public/locales/de/project-view-updates.json b/worklenz-frontend/public/locales/de/project-view-updates.json new file mode 100644 index 00000000..d32cf352 --- /dev/null +++ b/worklenz-frontend/public/locales/de/project-view-updates.json @@ -0,0 +1,6 @@ +{ + "inputPlaceholder": "Kommentar hinzufügen..", + "addButton": "Hinzufügen", + "cancelButton": "Abbrechen", + "deleteButton": "Löschen" +} diff --git a/worklenz-frontend/public/locales/de/project-view/import-task-templates.json b/worklenz-frontend/public/locales/de/project-view/import-task-templates.json new file mode 100644 index 00000000..c5af50a0 --- /dev/null +++ b/worklenz-frontend/public/locales/de/project-view/import-task-templates.json @@ -0,0 +1,11 @@ +{ + "importTaskTemplate": "Aufgabenvorlage importieren", + "templateName": "Vorlagenname", + "templateDescription": "Vorlagenbeschreibung", + "selectedTasks": "Ausgewählte Aufgaben", + "tasks": "Aufgaben", + "templates": "Vorlagen", + "remove": "Entfernen", + "cancel": "Abbrechen", + "import": "Importieren" +} diff --git a/worklenz-frontend/public/locales/de/project-view/project-member-drawer.json b/worklenz-frontend/public/locales/de/project-view/project-member-drawer.json new file mode 100644 index 00000000..cb391b2c --- /dev/null +++ b/worklenz-frontend/public/locales/de/project-view/project-member-drawer.json @@ -0,0 +1,7 @@ +{ + "title": "Projektmitglieder", + "searchLabel": "Mitglieder hinzufügen durch Eingabe von Name oder E-Mail", + "searchPlaceholder": "Name oder E-Mail eingeben", + "inviteAsAMember": "Als Mitglied einladen", + "inviteNewMemberByEmail": "Neues Mitglied per E-Mail einladen" +} diff --git a/worklenz-frontend/public/locales/de/project-view/project-view-header.json b/worklenz-frontend/public/locales/de/project-view/project-view-header.json new file mode 100644 index 00000000..ad236a04 --- /dev/null +++ b/worklenz-frontend/public/locales/de/project-view/project-view-header.json @@ -0,0 +1,13 @@ +{ + "importTasks": "Aufgaben importieren", + "createTask": "Aufgabe erstellen", + "settings": "Einstellungen", + "subscribe": "Abonnieren", + "unsubscribe": "Abbestellen", + "deleteProject": "Projekt löschen", + "startDate": "Startdatum", + "endDate": "Enddatum", + "projectSettings": "Projekteinstellungen", + "projectSummary": "Projektzusammenfassung", + "receiveProjectSummary": "Erhalten Sie jeden Abend eine Projektzusammenfassung." +} diff --git a/worklenz-frontend/public/locales/de/project-view/save-as-template.json b/worklenz-frontend/public/locales/de/project-view/save-as-template.json new file mode 100644 index 00000000..7b732962 --- /dev/null +++ b/worklenz-frontend/public/locales/de/project-view/save-as-template.json @@ -0,0 +1,27 @@ +{ + "title": "Als Vorlage speichern", + "templateName": "Vorlagenname", + "includes": "Was soll aus dem Projekt in die Vorlage aufgenommen werden?", + "includesOptions": { + "statuses": "Status", + "phases": "Phasen", + "labels": "Labels" + }, + "taskIncludes": "Was soll aus den Aufgaben in die Vorlage aufgenommen werden?", + "taskIncludesOptions": { + "statuses": "Status", + "phases": "Phasen", + "labels": "Labels", + "name": "Name", + "priority": "Priorität", + "status": "Status", + "phase": "Phase", + "label": "Label", + "timeEstimate": "Zeitschätzung", + "description": "Beschreibung", + "subTasks": "Unteraufgaben" + }, + "cancel": "Abbrechen", + "save": "Speichern", + "templateNamePlaceholder": "Vorlagennamen eingeben" +} diff --git a/worklenz-frontend/public/locales/de/reporting-members-drawer.json b/worklenz-frontend/public/locales/de/reporting-members-drawer.json new file mode 100644 index 00000000..807f43c7 --- /dev/null +++ b/worklenz-frontend/public/locales/de/reporting-members-drawer.json @@ -0,0 +1,90 @@ +{ + "exportButton": "Exportieren", + "timeLogsButton": "Zeiterfassungen", + "activityLogsButton": "Aktivitätsprotokolle", + "tasksButton": "Aufgaben", + "searchByNameInputPlaceholder": "Nach Namen suchen", + + "overviewTab": "Übersicht", + "timeLogsTab": "Zeiterfassungen", + "activityLogsTab": "Aktivitätsprotokolle", + "tasksTab": "Aufgaben", + + "projectsText": "Projekte", + "totalTasksText": "Gesamtaufgaben", + "assignedTasksText": "Zugewiesene Aufgaben", + "completedTasksText": "Abgeschlossene Aufgaben", + "ongoingTasksText": "Laufende Aufgaben", + "overdueTasksText": "Überfällige Aufgaben", + "loggedHoursText": "Erfasste Stunden", + + "tasksText": "Aufgaben", + "allText": "Alle", + + "tasksByProjectsText": "Aufgaben nach Projekten", + "tasksByStatusText": "Aufgaben nach Status", + "tasksByPriorityText": "Aufgaben nach Priorität", + + "todoText": "Zu erledigen", + "doingText": "Tun", + "doneText": "Erledigt", + "lowText": "Niedrig", + "mediumText": "Mittel", + "highText": "Hoch", + + "billableButton": "Abrechenbar", + "billableText": "Abrechenbar", + "nonBillableText": "Nicht abrechenbar", + + "timeLogsEmptyPlaceholder": "Keine Zeiterfassungen vorhanden", + "loggedText": "Erfasst", + "forText": "für", + "inText": "in", + "updatedText": "Aktualisiert", + "fromText": "Von", + "toText": "bis", + "withinText": "innerhalb", + + "activityLogsEmptyPlaceholder": "Keine Aktivitätsprotokolle vorhanden", + + "filterByText": "Filtern nach:", + "selectProjectPlaceholder": "Projekt auswählen", + + "taskColumn": "Aufgabe", + "nameColumn": "Name", + "projectColumn": "Projekt", + "statusColumn": "Status", + "priorityColumn": "Priorität", + "dueDateColumn": "Fälligkeitsdatum", + "completedDateColumn": "Abschlussdatum", + "estimatedTimeColumn": "Geschätzte Zeit", + "loggedTimeColumn": "Erfasste Zeit", + "overloggedTimeColumn": "Übererfasste Zeit", + "daysLeftColumn": "Tage übrig/überfällig", + "startDateColumn": "Startdatum", + "endDateColumn": "Enddatum", + "actualTimeColumn": "Tatsächliche Zeit", + "projectHealthColumn": "Projektstatus", + "categoryColumn": "Kategorie", + "projectManagerColumn": "Projektleiter", + + "tasksStatsOverviewDrawerTitle": "Aufgaben von", + "projectsStatsOverviewDrawerTitle": "Projekte von", + + "cancelledText": "Abgebrochen", + "blockedText": "Blockiert", + "onHoldText": "Pausiert", + "proposedText": "Vorgeschlagen", + "inPlanningText": "In Planung", + "inProgressText": "In Bearbeitung", + "completedText": "Abgeschlossen", + "continuousText": "Kontinuierlich", + + "daysLeftText": "Tage übrig", + "daysOverdueText": "Tage überfällig", + + "notSetText": "Nicht festgelegt", + "needsAttentionText": "Benötigt Aufmerksamkeit", + "atRiskText": "Gefährdet", + "goodText": "Gut" +} diff --git a/worklenz-frontend/public/locales/de/reporting-members.json b/worklenz-frontend/public/locales/de/reporting-members.json new file mode 100644 index 00000000..5454d2a8 --- /dev/null +++ b/worklenz-frontend/public/locales/de/reporting-members.json @@ -0,0 +1,35 @@ +{ + "yesterdayText": "Gestern", + "lastSevenDaysText": "Letzte 7 Tage", + "lastWeekText": "Letzte Woche", + "lastThirtyDaysText": "Letzte 30 Tage", + "lastMonthText": "Letzter Monat", + "lastThreeMonthsText": "Letzte 3 Monate", + "allTimeText": "Gesamter Zeitraum", + "customRangeText": "Benutzerdefinierter Bereich", + "startDateInputPlaceholder": "Startdatum", + "EndDateInputPlaceholder": "Enddatum", + "filterButton": "Filtern", + + "membersTitle": "Mitglieder", + "includeArchivedButton": "Archivierte Projekte einschließen", + "exportButton": "Exportieren", + "excelButton": "Excel", + "searchByNameInputPlaceholder": "Nach Namen suchen", + + "memberColumn": "Mitglied", + "tasksProgressColumn": "Aufgabenfortschritt", + "tasksAssignedColumn": "Zugewiesene Aufgaben", + "completedTasksColumn": "Abgeschlossene Aufgaben", + "overdueTasksColumn": "Überfällige Aufgaben", + "ongoingTasksColumn": "Laufende Aufgaben", + + "tasksAssignedColumnTooltip": "Im ausgewählten Zeitraum zugewiesene Aufgaben", + "overdueTasksColumnTooltip": "Zum Ende des ausgewählten Zeitraums überfällige Aufgaben", + "completedTasksColumnTooltip": "Im ausgewählten Zeitraum abgeschlossene Aufgaben", + "ongoingTasksColumnTooltip": "Begonnene, aber noch nicht abgeschlossene Aufgaben", + + "todoText": "Zu erledigen", + "doingText": "Tun", + "doneText": "Erledigt" +} diff --git a/worklenz-frontend/public/locales/de/reporting-overview-drawer.json b/worklenz-frontend/public/locales/de/reporting-overview-drawer.json new file mode 100644 index 00000000..6bf4678a --- /dev/null +++ b/worklenz-frontend/public/locales/de/reporting-overview-drawer.json @@ -0,0 +1,39 @@ +{ + "exportButton": "Exportieren", + "projectsButton": "Projekte", + "membersButton": "Mitglieder", + "searchByNameInputPlaceholder": "Nach Namen suchen", + + "overviewTab": "Übersicht", + "projectsTab": "Projekte", + "membersTab": "Mitglieder", + + "projectsByStatusText": "Projekte nach Status", + "projectsByCategoryText": "Projekte nach Kategorie", + "projectsByHealthText": "Projekte nach Gesundheit", + + "projectsText": "Projekte", + "allText": "Alle", + + "cancelledText": "Abgebrochen", + "blockedText": "Blockiert", + "onHoldText": "Pausiert", + "proposedText": "Vorgeschlagen", + "inPlanningText": "In Planung", + "inProgressText": "In Bearbeitung", + "completedText": "Abgeschlossen", + "continuousText": "Kontinuierlich", + + "notSetText": "Nicht festgelegt", + "needsAttentionText": "Benötigt Aufmerksamkeit", + "atRiskText": "Gefährdet", + "goodText": "Gut", + + "nameColumn": "Name", + "emailColumn": "E-Mail", + "projectsColumn": "Projekte", + "tasksColumn": "Aufgaben", + "overdueTasksColumn": "Überfällige Aufgaben", + "completedTasksColumn": "Abgeschlossene Aufgaben", + "ongoingTasksColumn": "Laufende Aufgaben" +} diff --git a/worklenz-frontend/public/locales/de/reporting-overview.json b/worklenz-frontend/public/locales/de/reporting-overview.json new file mode 100644 index 00000000..411ec83a --- /dev/null +++ b/worklenz-frontend/public/locales/de/reporting-overview.json @@ -0,0 +1,25 @@ +{ + "overviewTitle": "Übersicht", + "includeArchivedButton": "Archivierte Projekte einschließen", + + "teamCount": "Team", + "teamCountPlural": "Teams", + "projectCount": "Projekt", + "projectCountPlural": "Projekte", + "memberCount": "Mitglied", + "memberCountPlural": "Mitglieder", + "activeProjectCount": "Aktives Projekt", + "activeProjectCountPlural": "Aktive Projekte", + "overdueProjectCount": "Überfälliges Projekt", + "overdueProjectCountPlural": "Überfällige Projekte", + "unassignedMemberCount": "Nicht zugewiesenes Mitglied", + "unassignedMemberCountPlural": "Nicht zugewiesene Mitglieder", + "memberWithOverdueTaskCount": "Mitglied mit überfälliger Aufgabe", + "memberWithOverdueTaskCountPlural": "Mitglieder mit überfälligen Aufgaben", + + "teamsText": "Teams", + + "nameColumn": "Name", + "projectsColumn": "Projekte", + "membersColumn": "Mitglieder" +} diff --git a/worklenz-frontend/public/locales/de/reporting-projects-drawer.json b/worklenz-frontend/public/locales/de/reporting-projects-drawer.json new file mode 100644 index 00000000..3f335a6c --- /dev/null +++ b/worklenz-frontend/public/locales/de/reporting-projects-drawer.json @@ -0,0 +1,59 @@ +{ + "exportButton": "Exportieren", + "membersButton": "Mitglieder", + "tasksButton": "Aufgaben", + "searchByNameInputPlaceholder": "Nach Namen suchen", + + "overviewTab": "Übersicht", + "membersTab": "Mitglieder", + "tasksTab": "Aufgaben", + + "completedTasksText": "Abgeschlossene Aufgaben", + "incompleteTasksText": "Unvollständige Aufgaben", + "overdueTasksText": "Überfällige Aufgaben", + "allocatedHoursText": "Zugewiesene Stunden", + "loggedHoursText": "Erfasste Stunden", + + "tasksText": "Aufgaben", + "allText": "Alle", + + "tasksByStatusText": "Aufgaben nach Status", + "tasksByPriorityText": "Aufgaben nach Priorität", + "tasksByDueDateText": "Aufgaben nach Fälligkeit", + + "todoText": "Zu erledigen", + "doingText": "Tun", + "doneText": "Erledigt", + "lowText": "Niedrig", + "mediumText": "Mittel", + "highText": "Hoch", + "completedText": "Abgeschlossen", + "upcomingText": "Bevorstehend", + "overdueText": "Überfällig", + "noDueDateText": "Kein Fälligkeitsdatum", + + "nameColumn": "Name", + "tasksCountColumn": "Anzahl Aufgaben", + "completedTasksColumn": "Abgeschlossene Aufgaben", + "incompleteTasksColumn": "Unvollständige Aufgaben", + "overdueTasksColumn": "Überfällige Aufgaben", + "contributionColumn": "Beitrag", + "progressColumn": "Fortschritt", + "loggedTimeColumn": "Erfasste Zeit", + "taskColumn": "Aufgabe", + "projectColumn": "Projekt", + "statusColumn": "Status", + "priorityColumn": "Priorität", + "phaseColumn": "Phase", + "dueDateColumn": "Fälligkeitsdatum", + "completedDateColumn": "Abschlussdatum", + "estimatedTimeColumn": "Geschätzte Zeit", + "overloggedTimeColumn": "Übererfasste Zeit", + "completedOnColumn": "Abgeschlossen am", + "daysOverdueColumn": "Tage überfällig", + + "groupByText": "Gruppieren nach:", + "statusText": "Status", + "priorityText": "Priorität", + "phaseText": "Phase" +} diff --git a/worklenz-frontend/public/locales/de/reporting-projects-filters.json b/worklenz-frontend/public/locales/de/reporting-projects-filters.json new file mode 100644 index 00000000..c48fa256 --- /dev/null +++ b/worklenz-frontend/public/locales/de/reporting-projects-filters.json @@ -0,0 +1,35 @@ +{ + "searchByNamePlaceholder": "Nach Namen suchen", + "searchByCategoryPlaceholder": "Nach Kategorie suchen", + + "statusText": "Status", + "healthText": "Gesundheit", + "categoryText": "Kategorie", + "projectManagerText": "Projektleiter", + "showFieldsText": "Felder anzeigen", + + "cancelledText": "Abgebrochen", + "blockedText": "Blockiert", + "onHoldText": "Pausiert", + "proposedText": "Vorgeschlagen", + "inPlanningText": "In Planung", + "inProgressText": "In Bearbeitung", + "completedText": "Abgeschlossen", + "continuousText": "Kontinuierlich", + + "notSetText": "Nicht festgelegt", + "needsAttentionText": "Benötigt Aufmerksamkeit", + "atRiskText": "Gefährdet", + "goodText": "Gut", + + "nameText": "Projekt", + "estimatedVsActualText": "Geplant vs. Tatsächlich", + "tasksProgressText": "Aufgabenfortschritt", + "lastActivityText": "Letzte Aktivität", + "datesText": "Start-/Enddatum", + "daysLeftText": "Tage übrig/überfällig", + "projectHealthText": "Projektstatus", + "projectUpdateText": "Projektupdate", + "clientText": "Kunde", + "teamText": "Team" +} diff --git a/worklenz-frontend/public/locales/de/reporting-projects.json b/worklenz-frontend/public/locales/de/reporting-projects.json new file mode 100644 index 00000000..0f63310b --- /dev/null +++ b/worklenz-frontend/public/locales/de/reporting-projects.json @@ -0,0 +1,52 @@ +{ + "projectCount": "Projekt", + "projectCountPlural": "Projekte", + "includeArchivedButton": "Archivierte Projekte einschließen", + "exportButton": "Exportieren", + "excelButton": "Excel", + + "projectColumn": "Projekt", + "estimatedVsActualColumn": "Geschätzt vs. Tatsächlich", + "tasksProgressColumn": "Aufgabenfortschritt", + "lastActivityColumn": "Letzte Aktivität", + "statusColumn": "Status", + "datesColumn": "Start-/Enddatum", + "daysLeftColumn": "Tage übrig/überfällig", + "projectHealthColumn": "Projektzustand", + "categoryColumn": "Kategorie", + "projectUpdateColumn": "Projektupdate", + "clientColumn": "Kunde", + "teamColumn": "Team", + "projectManagerColumn": "Projektleiter", + + "openButton": "Öffnen", + + "estimatedText": "Geschätzt", + "actualText": "Tatsächlich", + + "todoText": "Zu erledigen", + "doingText": "Tun", + "doneText": "Erledigt", + + "cancelledText": "Abgebrochen", + "blockedText": "Blockiert", + "onHoldText": "Pausiert", + "proposedText": "Vorgeschlagen", + "inPlanningText": "In Planung", + "inProgressText": "In Bearbeitung", + "completedText": "Abgeschlossen", + "continuousText": "Kontinuierlich", + + "daysLeftText": "Tage übrig", + "dayLeftText": "Tag übrig", + "daysOverdueText": "Tage überfällig", + + "notSetText": "Nicht festgelegt", + "needsAttentionText": "Benötigt Aufmerksamkeit", + "atRiskText": "Gefährdet", + "goodText": "Gut", + + "setCategoryText": "Kategorie festlegen", + "searchByNameInputPlaceholder": "Nach Namen suchen", + "todayText": "Heute" +} diff --git a/worklenz-frontend/public/locales/de/reporting-sidebar.json b/worklenz-frontend/public/locales/de/reporting-sidebar.json new file mode 100644 index 00000000..74d6bfb9 --- /dev/null +++ b/worklenz-frontend/public/locales/de/reporting-sidebar.json @@ -0,0 +1,8 @@ +{ + "overview": "Übersicht", + "projects": "Projekte", + "members": "Mitglieder", + "timeReports": "Zeitberichte", + "estimateVsActual": "Schätzen vs. Tatsächlich", + "currentOrganizationTooltip": "Aktuelle Organisation" +} diff --git a/worklenz-frontend/public/locales/de/schedule.json b/worklenz-frontend/public/locales/de/schedule.json new file mode 100644 index 00000000..046c7bb0 --- /dev/null +++ b/worklenz-frontend/public/locales/de/schedule.json @@ -0,0 +1,39 @@ +{ + "today": "Heute", + "week": "Woche", + "month": "Monat", + + "settings": "Einstellungen", + "workingDays": "Arbeitstage", + "monday": "Montag", + "tuesday": "Dienstag", + "wednesday": "Mittwoch", + "thursday": "Donnerstag", + "friday": "Freitag", + "saturday": "Samstag", + "sunday": "Sonntag", + "workingHours": "Arbeitsstunden", + "hours": "Stunden", + "saveButton": "Speichern", + + "totalAllocation": "Gesamtzuteilung", + "timeLogged": "Zeiterfassung", + "remainingTime": "Verbleibende Zeit", + "total": "Gesamt", + "perDay": "Pro Tag", + "tasks": "Aufgaben", + "startDate": "Startdatum", + "endDate": "Enddatum", + + "hoursPerDay": "Stunden pro Tag", + "totalHours": "Gesamtstunden", + "deleteButton": "Löschen", + "cancelButton": "Abbrechen", + + "tabTitle": "Aufgaben ohne Start- & Enddatum", + + "allocatedTime": "Zugewiesene Zeit", + "totalLogged": "Gesamterfasst", + "loggedBillable": "Abrechenbar erfasst", + "loggedNonBillable": "Nicht abrechenbar erfasst" +} diff --git a/worklenz-frontend/public/locales/de/settings/categories.json b/worklenz-frontend/public/locales/de/settings/categories.json new file mode 100644 index 00000000..5694d11d --- /dev/null +++ b/worklenz-frontend/public/locales/de/settings/categories.json @@ -0,0 +1,10 @@ +{ + "categoryColumn": "Kategorie", + "deleteConfirmationTitle": "Sind Sie sicher?", + "deleteConfirmationOk": "Ja", + "deleteConfirmationCancel": "Abbrechen", + "associatedTaskColumn": "Zugehörige Projekte", + "searchPlaceholder": "Nach Namen suchen", + "emptyText": "Kategorien können beim Aktualisieren oder Erstellen von Projekten angelegt werden.", + "colorChangeTooltip": "Zum Farbwechsel klicken" +} diff --git a/worklenz-frontend/public/locales/de/settings/change-password.json b/worklenz-frontend/public/locales/de/settings/change-password.json new file mode 100644 index 00000000..6b65a8cf --- /dev/null +++ b/worklenz-frontend/public/locales/de/settings/change-password.json @@ -0,0 +1,15 @@ +{ + "title": "Passwort ändern", + "currentPassword": "Aktuelles Passwort", + "newPassword": "Neues Passwort", + "confirmPassword": "Passwort bestätigen", + "currentPasswordPlaceholder": "Aktuelles Passwort eingeben", + "newPasswordPlaceholder": "Neues Passwort", + "confirmPasswordPlaceholder": "Passwort bestätigen", + "currentPasswordRequired": "Bitte geben Sie Ihr aktuelles Passwort ein!", + "newPasswordRequired": "Bitte geben Sie Ihr neues Passwort ein!", + "passwordValidationError": "Das Passwort muss mindestens 8 Zeichen lang sein und einen Großbuchstaben, eine Zahl und ein Sonderzeichen enthalten.", + "passwordMismatch": "Die Passwörter stimmen nicht überein!", + "passwordRequirements": "Das neue Passwort muss mindestens 8 Zeichen lang sein und einen Großbuchstaben, eine Zahl und ein Sonderzeichen enthalten.", + "updateButton": "Passwort aktualisieren" +} diff --git a/worklenz-frontend/public/locales/de/settings/clients.json b/worklenz-frontend/public/locales/de/settings/clients.json new file mode 100644 index 00000000..d2982bdb --- /dev/null +++ b/worklenz-frontend/public/locales/de/settings/clients.json @@ -0,0 +1,22 @@ +{ + "nameColumn": "Name", + "projectColumn": "Projekt", + "noProjectsAvailable": "Keine Projekte verfügbar", + "deleteConfirmationTitle": "Sind Sie sicher?", + "deleteConfirmationOk": "Ja", + "deleteConfirmationCancel": "Abbrechen", + "searchPlaceholder": "Nach Namen suchen", + "createClient": "Kunde anlegen", + "pinTooltip": "Zum Anheften an das Hauptmenü klicken", + "createClientDrawerTitle": "Kunde anlegen", + "updateClientDrawerTitle": "Kunde aktualisieren", + "nameLabel": "Name", + "namePlaceholder": "Name", + "nameRequiredError": "Bitte geben Sie einen Namen ein", + "createButton": "Anlegen", + "updateButton": "Aktualisieren", + "createClientSuccessMessage": "Kunde erfolgreich angelegt!", + "createClientErrorMessage": "Anlegen des Kunden fehlgeschlagen!", + "updateClientSuccessMessage": "Kunde erfolgreich aktualisiert!", + "updateClientErrorMessage": "Aktualisierung des Kunden fehlgeschlagen!" +} diff --git a/worklenz-frontend/public/locales/de/settings/job-titles.json b/worklenz-frontend/public/locales/de/settings/job-titles.json new file mode 100644 index 00000000..f4403ad1 --- /dev/null +++ b/worklenz-frontend/public/locales/de/settings/job-titles.json @@ -0,0 +1,20 @@ +{ + "nameColumn": "Name", + "deleteConfirmationTitle": "Sind Sie sicher?", + "deleteConfirmationOk": "Ja", + "deleteConfirmationCancel": "Abbrechen", + "searchPlaceholder": "Nach Namen suchen", + "createJobTitleButton": "Jobtitel erstellen", + "pinTooltip": "Zum Anheften an das Hauptmenü klicken", + "createJobTitleDrawerTitle": "Jobtitel erstellen", + "updateJobTitleDrawerTitle": "Jobtitel aktualisieren", + "nameLabel": "Name", + "namePlaceholder": "Name", + "nameRequiredError": "Bitte geben Sie einen Namen ein", + "createButton": "Erstellen", + "updateButton": "Aktualisieren", + "createJobTitleSuccessMessage": "Jobtitel erfolgreich erstellt!", + "createJobTitleErrorMessage": "Erstellung des Jobtitels fehlgeschlagen!", + "updateJobTitleSuccessMessage": "Jobtitel erfolgreich aktualisiert!", + "updateJobTitleErrorMessage": "Aktualisierung des Jobtitels fehlgeschlagen!" +} diff --git a/worklenz-frontend/public/locales/de/settings/labels.json b/worklenz-frontend/public/locales/de/settings/labels.json new file mode 100644 index 00000000..18b6a021 --- /dev/null +++ b/worklenz-frontend/public/locales/de/settings/labels.json @@ -0,0 +1,11 @@ +{ + "labelColumn": "Label", + "deleteConfirmationTitle": "Sind Sie sicher?", + "deleteConfirmationOk": "Ja", + "deleteConfirmationCancel": "Abbrechen", + "associatedTaskColumn": "Zugeordnete Aufgabenanzahl", + "searchPlaceholder": "Nach Name suchen", + "emptyText": "Labels können beim Aktualisieren oder Erstellen von Aufgaben erstellt werden.", + "pinTooltip": "Zum Anheften an das Hauptmenü klicken", + "colorChangeTooltip": "Zum Ändern der Farbe klicken" +} diff --git a/worklenz-frontend/public/locales/de/settings/language.json b/worklenz-frontend/public/locales/de/settings/language.json new file mode 100644 index 00000000..9e6bc27d --- /dev/null +++ b/worklenz-frontend/public/locales/de/settings/language.json @@ -0,0 +1,7 @@ +{ + "language": "Sprache", + "language_required": "Sprache ist erforderlich", + "time_zone": "Zeitzone", + "time_zone_required": "Zeitzone ist erforderlich", + "save_changes": "Änderungen speichern" +} diff --git a/worklenz-frontend/public/locales/de/settings/notifications.json b/worklenz-frontend/public/locales/de/settings/notifications.json new file mode 100644 index 00000000..272542a0 --- /dev/null +++ b/worklenz-frontend/public/locales/de/settings/notifications.json @@ -0,0 +1,11 @@ +{ + "title": "Benachrichtigungseinstellungen", + "emailTitle": "E-Mail-Benachrichtigungen erhalten", + "emailDescription": "Dies beinhaltet neue Aufgaben-Zuweisungen", + "dailyDigestTitle": "Tägliche Übersicht erhalten", + "dailyDigestDescription": "Jeden Abend erhalten Sie eine Zusammenfassung der letzten Aktivitäten in Aufgaben.", + "popupTitle": "Popup-Benachrichtigungen auf meinem Computer anzeigen, wenn Worklenz geöffnet ist", + "popupDescription": "Popup-Benachrichtigungen können von Ihrem Browser blockiert werden. Ändern Sie Ihre Browser-Einstellungen, um diese zu erlauben.", + "unreadItemsTitle": "Anzahl ungelesener Elemente anzeigen", + "unreadItemsDescription": "Sie sehen Zähler für jede Benachrichtigung." +} diff --git a/worklenz-frontend/public/locales/de/settings/profile.json b/worklenz-frontend/public/locales/de/settings/profile.json new file mode 100644 index 00000000..f896e1f8 --- /dev/null +++ b/worklenz-frontend/public/locales/de/settings/profile.json @@ -0,0 +1,13 @@ +{ + "uploadError": "Sie können nur JPG/PNG-Dateien hochladen!", + "uploadSizeError": "Bilder müssen kleiner als 2MB sein!", + "upload": "Hochladen", + "nameLabel": "Name", + "nameRequiredError": "Name ist erforderlich", + "emailLabel": "E-Mail", + "emailRequiredError": "E-Mail ist erforderlich", + "saveChanges": "Änderungen speichern", + "profileJoinedText": "Vor einem Monat beigetreten", + "profileLastUpdatedText": "Vor einem Monat aktualisiert", + "avatarTooltip": "Klicken Sie zum Hochladen eines Avatars" +} diff --git a/worklenz-frontend/public/locales/de/settings/project-templates.json b/worklenz-frontend/public/locales/de/settings/project-templates.json new file mode 100644 index 00000000..6c6e23ca --- /dev/null +++ b/worklenz-frontend/public/locales/de/settings/project-templates.json @@ -0,0 +1,8 @@ +{ + "nameColumn": "Name", + "editToolTip": "Bearbeiten", + "deleteToolTip": "Löschen", + "confirmText": "Sind Sie sicher?", + "okText": "Ja", + "cancelText": "Abbrechen" +} diff --git a/worklenz-frontend/public/locales/de/settings/sidebar.json b/worklenz-frontend/public/locales/de/settings/sidebar.json new file mode 100644 index 00000000..d4d8754d --- /dev/null +++ b/worklenz-frontend/public/locales/de/settings/sidebar.json @@ -0,0 +1,14 @@ +{ + "profile": "Profil", + "notifications": "Benachrichtigungen", + "clients": "Kunden", + "job-titles": "Jobbezeichnungen", + "labels": "Labels", + "categories": "Kategorien", + "project-templates": "Projektvorlagen", + "task-templates": "Aufgabenvorlagen", + "team-members": "Teammitglieder", + "teams": "Teams", + "change-password": "Passwort ändern", + "language-and-region": "Sprache und Region" +} diff --git a/worklenz-frontend/public/locales/de/settings/task-templates.json b/worklenz-frontend/public/locales/de/settings/task-templates.json new file mode 100644 index 00000000..ffe93318 --- /dev/null +++ b/worklenz-frontend/public/locales/de/settings/task-templates.json @@ -0,0 +1,9 @@ +{ + "nameColumn": "Name", + "createdColumn": "Erstellt", + "editToolTip": "Bearbeiten", + "deleteToolTip": "Löschen", + "confirmText": "Sind Sie sicher?", + "okText": "Ja", + "cancelText": "Abbrechen" +} diff --git a/worklenz-frontend/public/locales/de/settings/team-members.json b/worklenz-frontend/public/locales/de/settings/team-members.json new file mode 100644 index 00000000..6f2add12 --- /dev/null +++ b/worklenz-frontend/public/locales/de/settings/team-members.json @@ -0,0 +1,44 @@ +{ + "nameColumn": "Name", + "projectsColumn": "Projekte", + "emailColumn": "E-Mail", + "teamAccessColumn": "Team-Zugriff", + "memberCount": "Mitglied", + "membersCountPlural": "Mitglieder", + "searchPlaceholder": "Mitglieder nach Namen suchen", + "pinTooltip": "Mitgliederliste aktualisieren", + "addMemberButton": "Neues Mitglied hinzufügen", + "editTooltip": "Mitglied bearbeiten", + "deactivateTooltip": "Mitglied deaktivieren", + "activateTooltip": "Mitglied aktivieren", + "deleteTooltip": "Mitglied löschen", + "confirmDeleteTitle": "Sind Sie sicher, dass Sie dieses Mitglied löschen möchten?", + "confirmActivateTitle": "Sind Sie sicher, dass Sie den Status dieses Mitglieds ändern möchten?", + "okText": "Ja, fortfahren", + "cancelText": "Nein, abbrechen", + "deactivatedText": "(Aktuell deaktiviert)", + "pendingInvitationText": "(Einladung ausstehend)", + "addMemberDrawerTitle": "Neues Teammitglied hinzufügen", + "updateMemberDrawerTitle": "Teammitglied aktualisieren", + "addMemberEmailHint": "Mitglieder werden dem Team hinzugefügt, unabhängig vom Status der Einladungsannahme", + "memberEmailLabel": "E-Mail(s)", + "memberEmailPlaceholder": "E-Mail-Adresse des Teammitglieds eingeben", + "memberEmailRequiredError": "Bitte geben Sie eine gültige E-Mail-Adresse ein", + "jobTitleLabel": "Jobtitel", + "jobTitlePlaceholder": "Jobtitel auswählen oder suchen (optional)", + "memberAccessLabel": "Zugriffslevel", + "addToTeamButton": "Mitglied zum Team hinzufügen", + "updateButton": "Änderungen speichern", + "resendInvitationButton": "Einladungs-E-Mail erneut senden", + "invitationSentSuccessMessage": "Team-Einladung erfolgreich versendet!", + "createMemberSuccessMessage": "Neues Teammitglied erfolgreich hinzugefügt!", + "createMemberErrorMessage": "Hinzufügen des Teammitglieds fehlgeschlagen. Bitte versuchen Sie es erneut.", + "updateMemberSuccessMessage": "Teammitglied erfolgreich aktualisiert!", + "updateMemberErrorMessage": "Aktualisierung des Teammitglieds fehlgeschlagen. Bitte versuchen Sie es erneut.", + "memberText": "Mitglied", + "adminText": "Administrator", + "ownerText": "Team-Besitzer", + "addedText": "Hinzugefügt", + "updatedText": "Aktualisiert", + "noResultFound": "Geben Sie eine E-Mail-Adresse ein und drücken Sie Enter..." +} diff --git a/worklenz-frontend/public/locales/de/task-drawer/task-drawer-info-tab.json b/worklenz-frontend/public/locales/de/task-drawer/task-drawer-info-tab.json new file mode 100644 index 00000000..ed79d6bf --- /dev/null +++ b/worklenz-frontend/public/locales/de/task-drawer/task-drawer-info-tab.json @@ -0,0 +1,29 @@ +{ + "details": { + "task-key": "Aufgabenschlüssel", + "phase": "Phase", + "assignees": "Zugewiesene", + "due-date": "Fälligkeitsdatum", + "time-estimation": "Zeitschätzung", + "priority": "Priorität", + "labels": "Labels", + "billable": "Abrechenbar", + "notify": "Benachrichtigen", + "when-done-notify": "Bei Fertigstellung benachrichtigen", + "start-date": "Startdatum", + "end-date": "Enddatum", + "hide-start-date": "Startdatum ausblenden", + "show-start-date": "Startdatum anzeigen", + "hours": "Stunden", + "minutes": "Minuten" + }, + "description": { + "title": "Beschreibung", + "placeholder": "Fügen Sie eine detailliertere Beschreibung hinzu..." + }, + "subTasks": { + "title": "Unteraufgaben", + "add-sub-task": "+ Unteraufgabe hinzufügen", + "refresh-sub-tasks": "Unteraufgaben aktualisieren" + } +} \ No newline at end of file diff --git a/worklenz-frontend/public/locales/de/task-drawer/task-drawer.json b/worklenz-frontend/public/locales/de/task-drawer/task-drawer.json new file mode 100644 index 00000000..b4aa0525 --- /dev/null +++ b/worklenz-frontend/public/locales/de/task-drawer/task-drawer.json @@ -0,0 +1,78 @@ +{ + "taskHeader": { + "taskNamePlaceholder": "Aufgabe eingeben", + "deleteTask": "Aufgabe löschen" + }, + "taskInfoTab": { + "title": "Info", + "details": { + "title": "Details", + "task-key": "Aufgaben-Schlüssel", + "phase": "Phase", + "assignees": "Zugewiesene", + "due-date": "Fälligkeitsdatum", + "time-estimation": "Zeitschätzung", + "priority": "Priorität", + "labels": "Labels", + "billable": "Abrechenbar", + "notify": "Benachrichtigen", + "when-done-notify": "Bei Fertigstellung benachrichtigen", + "start-date": "Startdatum", + "end-date": "Enddatum", + "hide-start-date": "Startdatum ausblenden", + "show-start-date": "Startdatum anzeigen", + "hours": "Stunden", + "minutes": "Minuten" + }, + "labels": { + "labelInputPlaceholder": "Suchen oder erstellen", + "labelsSelectorInputTip": "Enter drücken zum Erstellen" + }, + "description": { + "title": "Beschreibung", + "placeholder": "Detaillierte Beschreibung hinzufügen..." + }, + "subTasks": { + "title": "Unteraufgaben", + "addSubTask": "+ Unteraufgabe hinzufügen", + "addSubTaskInputPlaceholder": "Aufgabe eingeben und Enter drücken", + "refreshSubTasks": "Unteraufgaben aktualisieren", + "edit": "Bearbeiten", + "delete": "Löschen", + "confirmDeleteSubTask": "Sind Sie sicher, dass Sie diese Unteraufgabe löschen möchten?", + "deleteSubTask": "Unteraufgabe löschen" + }, + "dependencies": { + "title": "Abhängigkeiten", + "addDependency": "+ Neue Abhängigkeit hinzufügen", + "blockedBy": "Blockiert durch", + "searchTask": "Aufgabe suchen", + "noTasksFound": "Keine Aufgaben gefunden", + "confirmDeleteDependency": "Sind Sie sicher, dass Sie dies löschen möchten?" + }, + "attachments": { + "title": "Anhänge", + "chooseOrDropFileToUpload": "Datei auswählen oder zum Hochladen ablegen", + "uploading": "Wird hochgeladen..." + }, + "comments": { + "title": "Kommentare", + "addComment": "+ Neuen Kommentar hinzufügen", + "noComments": "Noch keine Kommentare. Seien Sie der Erste!", + "delete": "Löschen", + "confirmDeleteComment": "Sind Sie sicher, dass Sie diesen Kommentar löschen möchten?" + }, + "searchInputPlaceholder": "Nach Namen suchen", + "pendingInvitation": "Einladung ausstehend" + }, + "taskTimeLogTab": { + "title": "Zeiterfassung", + "addTimeLog": "Neuen Zeiteintrag hinzufügen", + "totalLogged": "Gesamt erfasst", + "exportToExcel": "Nach Excel exportieren", + "noTimeLogsFound": "Keine Zeiterfassungen gefunden" + }, + "taskActivityLogTab": { + "title": "Aktivitätsprotokoll" + } +} diff --git a/worklenz-frontend/public/locales/de/task-list-filters.json b/worklenz-frontend/public/locales/de/task-list-filters.json new file mode 100644 index 00000000..4cc157c8 --- /dev/null +++ b/worklenz-frontend/public/locales/de/task-list-filters.json @@ -0,0 +1,59 @@ +{ + "searchButton": "Suchen", + "resetButton": "Zurücksetzen", + "searchInputPlaceholder": "Nach Namen suchen", + + "sortText": "Sortieren", + "statusText": "Status", + "phaseText": "Phase", + "memberText": "Mitglieder", + "assigneesText": "Zugewiesene", + "priorityText": "Priorität", + "labelsText": "Labels", + "membersText": "Mitglieder", + "groupByText": "Gruppieren nach", + "showArchivedText": "Archivierte anzeigen", + "showFieldsText": "Felder anzeigen", + "keyText": "Schlüssel", + "taskText": "Aufgabe", + "descriptionText": "Beschreibung", + "phasesText": "Phasen", + "listText": "Liste", + "progressText": "Fortschritt", + "timeTrackingText": "Zeiterfassung", + "timetrackingText": "Zeiterfassung", + "estimationText": "Schätzung", + "startDateText": "Startdatum", + "startdateText": "Startdatum", + "endDateText": "Enddatum", + "dueDateText": "Fälligkeitsdatum", + "duedateText": "Fälligkeitsdatum", + "completedDateText": "Abschlussdatum", + "completeddateText": "Abschlussdatum", + "createdDateText": "Erstellungsdatum", + "createddateText": "Erstellungsdatum", + "lastUpdatedText": "Zuletzt aktualisiert", + "lastupdatedText": "Zuletzt aktualisiert", + "reporterText": "Melder", + "dueTimeText": "Fällige Zeit", + "duetimeText": "Fällige Zeit", + + "lowText": "Niedrig", + "mediumText": "Mittel", + "highText": "Hoch", + + "createStatusButtonTooltip": "Status-Einstellungen", + "configPhaseButtonTooltip": "Phasen-Einstellungen", + "noLabelsFound": "Keine Labels gefunden", + + "addStatusButton": "Status hinzufügen", + "addPhaseButton": "Phase hinzufügen", + + "createStatus": "Status erstellen", + "name": "Name", + "category": "Kategorie", + "selectCategory": "Kategorie auswählen", + "pleaseEnterAName": "Bitte geben Sie einen Namen ein", + "pleaseSelectACategory": "Bitte wählen Sie eine Kategorie aus", + "create": "Erstellen" +} diff --git a/worklenz-frontend/public/locales/de/task-list-table.json b/worklenz-frontend/public/locales/de/task-list-table.json new file mode 100644 index 00000000..d399dea4 --- /dev/null +++ b/worklenz-frontend/public/locales/de/task-list-table.json @@ -0,0 +1,63 @@ +{ + "keyColumn": "Schlüssel", + "taskColumn": "Aufgabe", + "descriptionColumn": "Beschreibung", + "progressColumn": "Fortschritt", + "membersColumn": "Mitglieder", + "assigneesColumn": "Zugewiesene", + "labelsColumn": "Labels", + "phasesColumn": "Phasen", + "phaseColumn": "Phase", + "statusColumn": "Status", + "priorityColumn": "Priorität", + "timeTrackingColumn": "Zeiterfassung", + "timetrackingColumn": "Zeiterfassung", + "estimationColumn": "Schätzung", + "startDateColumn": "Startdatum", + "startdateColumn": "Startdatum", + "dueDateColumn": "Fälligkeitsdatum", + "duedateColumn": "Fälligkeitsdatum", + "completedDateColumn": "Abschlussdatum", + "completeddateColumn": "Abschlussdatum", + "createdDateColumn": "Erstellungsdatum", + "createddateColumn": "Erstellungsdatum", + "lastUpdatedColumn": "Zuletzt aktualisiert", + "lastupdatedColumn": "Zuletzt aktualisiert", + "reporterColumn": "Melder", + "dueTimeColumn": "Fällige Zeit", + "todoSelectorText": "Zu erledigen", + "doingSelectorText": "Tun", + "doneSelectorText": "Erledigt", + + "lowSelectorText": "Niedrig", + "mediumSelectorText": "Mittel", + "highSelectorText": "Hoch", + + "selectText": "Auswählen", + "labelsSelectorInputTip": "Enter drücken zum Erstellen!", + + "addTaskText": "+ Aufgabe hinzufügen", + "addSubTaskText": "+ Unteraufgabe hinzufügen", + "addTaskInputPlaceholder": "Aufgabe eingeben und Enter drücken", + + "openButton": "Öffnen", + "okButton": "OK", + + "noLabelsFound": "Keine Labels gefunden", + "searchInputPlaceholder": "Suchen oder erstellen", + "assigneeSelectorInviteButton": "Neues Mitglied per E-Mail einladen", + "labelInputPlaceholder": "Suchen oder erstellen", + + "pendingInvitation": "Einladung ausstehend", + + "contextMenu": { + "assignToMe": "Mir zuweisen", + "moveTo": "Verschieben nach", + "unarchive": "Dearchivieren", + "archive": "Archivieren", + "convertToSubTask": "In Unteraufgabe umwandeln", + "convertToTask": "In Aufgabe umwandeln", + "delete": "Löschen", + "searchByNameInputPlaceholder": "Nach Namen suchen" + } +} diff --git a/worklenz-frontend/public/locales/de/task-template-drawer.json b/worklenz-frontend/public/locales/de/task-template-drawer.json new file mode 100644 index 00000000..21dbe369 --- /dev/null +++ b/worklenz-frontend/public/locales/de/task-template-drawer.json @@ -0,0 +1,11 @@ +{ + "createTaskTemplate": "Aufgabenvorlage erstellen", + "editTaskTemplate": "Aufgabenvorlage bearbeiten", + "cancelText": "Abbrechen", + "saveText": "Speichern", + "templateNameText": "Vorlagenname", + "selectedTasks": "Ausgewählte Aufgaben", + "removeTask": "Entfernen", + "cancelButton": "Abbrechen", + "saveButton": "Speichern" +} diff --git a/worklenz-frontend/public/locales/de/tasks/task-table-bulk-actions.json b/worklenz-frontend/public/locales/de/tasks/task-table-bulk-actions.json new file mode 100644 index 00000000..3c2d7132 --- /dev/null +++ b/worklenz-frontend/public/locales/de/tasks/task-table-bulk-actions.json @@ -0,0 +1,24 @@ +{ + "taskSelected": "Aufgabe ausgewählt", + "tasksSelected": "Aufgaben ausgewählt", + "changeStatus": "Status/Priorität/Phase ändern", + "changeLabel": "Label ändern", + "assignToMe": "Mir zuweisen", + "changeAssignees": "Zuständige ändern", + "archive": "Archivieren", + "unarchive": "Dearchivieren", + "delete": "Löschen", + "moreOptions": "Weitere Optionen", + "deselectAll": "Alle abwählen", + "status": "Status", + "priority": "Priorität", + "phase": "Phase", + "member": "Mitglied", + "createTaskTemplate": "Aufgabenvorlage erstellen", + "apply": "Anwenden", + "createLabel": "+ Label erstellen", + "hitEnterToCreate": "Enter drücken zum Erstellen", + "pendingInvitation": "Einladung ausstehend", + "noMatchingLabels": "Keine passenden Labels", + "noLabels": "Keine Labels" +} diff --git a/worklenz-frontend/public/locales/de/template-drawer.json b/worklenz-frontend/public/locales/de/template-drawer.json new file mode 100644 index 00000000..8655504d --- /dev/null +++ b/worklenz-frontend/public/locales/de/template-drawer.json @@ -0,0 +1,19 @@ +{ + "title": "Aufgabenvorlage bearbeiten", + "cancelText": "Abbrechen", + "saveText": "Speichern", + "templateNameText": "Vorlagenname", + "selectedTasks": "Ausgewählte Aufgaben", + "removeTask": "Entfernen", + "description": "Beschreibung", + "phase": "Phase", + "statuses": "Status", + "priorities": "Prioritäten", + "labels": "Labels", + "tasks": "Aufgaben", + "noTemplateSelected": "Keine Vorlage ausgewählt", + "noDescription": "Keine Beschreibung", + "worklenzTemplates": "Worklenz-Vorlagen", + "yourTemplatesLibrary": "Ihre Bibliothek", + "searchTemplates": "Vorlagen durchsuchen" +} diff --git a/worklenz-frontend/public/locales/de/templateDrawer.json b/worklenz-frontend/public/locales/de/templateDrawer.json new file mode 100644 index 00000000..571ed15f --- /dev/null +++ b/worklenz-frontend/public/locales/de/templateDrawer.json @@ -0,0 +1,23 @@ +{ + "bugTracking": "Fehlerverfolgung", + "construction": "Bauwesen", + "designCreative": "Design & Kreatives", + "education": "Bildung", + "finance": "Finanzen", + "hrRecruiting": "Personalwesen & Recruiting", + "informationTechnology": "Informationstechnologie", + "legal": "Rechtliches", + "manufacturing": "Produktion", + "marketing": "Marketing", + "nonprofit": "Gemeinnützig", + "personalUse": "Persönliche Nutzung", + "salesCRM": "Vertrieb & CRM", + "serviceConsulting": "Dienstleistungen & Beratung", + "softwareDevelopment": "Softwareentwicklung", + "description": "Beschreibung", + "phase": "Phase", + "statuses": "Status", + "priorities": "Prioritäten", + "labels": "Labels", + "tasks": "Aufgaben" +} diff --git a/worklenz-frontend/public/locales/de/time-report.json b/worklenz-frontend/public/locales/de/time-report.json new file mode 100644 index 00000000..efadbb8a --- /dev/null +++ b/worklenz-frontend/public/locales/de/time-report.json @@ -0,0 +1,44 @@ +{ + "includeArchivedProjects": "Archivierte Projekte einschließen", + "export": "Exportieren", + "timeSheet": "Stundenzettel", + + "searchByName": "Nach Namen suchen", + "selectAll": "Alle auswählen", + "teams": "Teams", + + "searchByProject": "Nach Projektnamen suchen", + "projects": "Projekte", + + "searchByCategory": "Nach Kategorienamen suchen", + "categories": "Kategorien", + + "billable": "Abrechenbar", + "nonBillable": "Nicht abrechenbar", + + "total": "Gesamt", + + "projectsTimeSheet": "Projekt-Zeiterfassung", + + "loggedTime": "Erfasste Zeit (Stunden)", + + "exportToExcel": "Nach Excel exportieren", + "logged": "erfasst", + "for": "für", + + "membersTimeSheet": "Mitglieder-Zeiterfassung", + "member": "Mitglied", + + "estimatedVsActual": "Geschätzt vs. Tatsächlich", + "workingDays": "Arbeitstage", + "manDays": "Manntage", + "days": "Tage", + "estimatedDays": "Geschätzt Tage", + "actualDays": "Tatsächliche Tage", + + "noCategories": "Keine Kategorien gefunden", + "noCategory": "Keine Kategorie", + "noProjects": "Keine Projekte gefunden", + "noTeams": "Keine Teams gefunden", + "noData": "Keine Daten gefunden" +} diff --git a/worklenz-frontend/public/locales/de/unauthorized.json b/worklenz-frontend/public/locales/de/unauthorized.json new file mode 100644 index 00000000..4384ad80 --- /dev/null +++ b/worklenz-frontend/public/locales/de/unauthorized.json @@ -0,0 +1,5 @@ +{ + "title": "Unbefugt!", + "subtitle": "Sie sind nicht berechtigt, auf diese Seite zuzugreifen", + "button": "Zur Startseite" +} From dc096f5e129852e1ea9735e07639e3fe5784072f Mon Sep 17 00:00:00 2001 From: Omindu Hirushka <102536488+OminduHirushka@users.noreply.github.com> Date: Tue, 24 Jun 2025 14:17:23 +0530 Subject: [PATCH 11/11] german language switch --- worklenz-frontend/src/features/i18n/language-selector.tsx | 2 ++ worklenz-frontend/src/features/i18n/localesSlice.ts | 3 ++- .../language-and-region/language-and-region-settings.tsx | 4 ++++ worklenz-frontend/src/utils/greetingString.ts | 6 ++++++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/worklenz-frontend/src/features/i18n/language-selector.tsx b/worklenz-frontend/src/features/i18n/language-selector.tsx index 83851977..7af61f85 100644 --- a/worklenz-frontend/src/features/i18n/language-selector.tsx +++ b/worklenz-frontend/src/features/i18n/language-selector.tsx @@ -16,6 +16,7 @@ const LanguageSelector = () => { { key: 'es', label: 'Español' }, { key: 'pt', label: 'Português' }, { key: 'alb', label: 'Shqip' }, + { key: 'de', label: 'Deutsch' }, ]; const languageLabels = { @@ -23,6 +24,7 @@ const LanguageSelector = () => { es: 'Es', pt: 'Pt', alb: 'Sq', + de: 'de', }; return ( diff --git a/worklenz-frontend/src/features/i18n/localesSlice.ts b/worklenz-frontend/src/features/i18n/localesSlice.ts index f405ec2a..045f385e 100644 --- a/worklenz-frontend/src/features/i18n/localesSlice.ts +++ b/worklenz-frontend/src/features/i18n/localesSlice.ts @@ -5,7 +5,8 @@ export enum Language { EN = 'en', ES = 'es', PT = 'pt', - ALB = 'alb' + ALB = 'alb', + DE = 'de', } export type ILanguageType = `${Language}`; diff --git a/worklenz-frontend/src/pages/settings/language-and-region/language-and-region-settings.tsx b/worklenz-frontend/src/pages/settings/language-and-region/language-and-region-settings.tsx index a7c8b092..a043ac95 100644 --- a/worklenz-frontend/src/pages/settings/language-and-region/language-and-region-settings.tsx +++ b/worklenz-frontend/src/pages/settings/language-and-region/language-and-region-settings.tsx @@ -51,6 +51,10 @@ const LanguageAndRegionSettings = () => { value: Language.ALB, label: 'Shqip', }, + { + value: Language.DE, + label: 'Deutsch', + }, ]; const handleLanguageChange = async (values: { language?: ILanguageType; timezone?: string }) => { diff --git a/worklenz-frontend/src/utils/greetingString.ts b/worklenz-frontend/src/utils/greetingString.ts index 40bdb86b..1e122f6a 100644 --- a/worklenz-frontend/src/utils/greetingString.ts +++ b/worklenz-frontend/src/utils/greetingString.ts @@ -35,6 +35,12 @@ export const greetingString = (name: string): string => { morning = 'mëngjesi'; afternoon = 'pasdite'; evening = 'mbrëmja'; + } else if (language === 'de') { + greetingPrefix = 'Hallo'; + greetingSuffix = 'Guten'; + morning = 'Morgen'; + afternoon = 'Tag'; + evening = 'Abend'; } return `${greetingPrefix} ${name}, ${greetingSuffix} ${greet}!`;