Merge branch 'main' of https://github.com/Worklenz/worklenz into feature/task-activities-by-user
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
Worklenz is a project management application built with React, TypeScript, and Ant Design. The project is bundled using [Vite](https://vitejs.dev/).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Getting Started](#getting-started)
|
||||
- [Available Scripts](#available-scripts)
|
||||
- [Project Structure](#project-structure)
|
||||
|
||||
@@ -5,42 +5,93 @@
|
||||
<link rel="icon" href="./favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="#2b2b2b" />
|
||||
|
||||
<!-- PWA Meta Tags -->
|
||||
<meta name="application-name" content="Worklenz" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
|
||||
<meta name="apple-mobile-web-app-title" content="Worklenz" />
|
||||
<meta name="description" content="A comprehensive project management application for teams" />
|
||||
<meta name="format-detection" content="telephone=no" />
|
||||
<meta name="mobile-web-app-capable" content="yes" />
|
||||
<meta name="msapplication-config" content="/browserconfig.xml" />
|
||||
<meta name="msapplication-TileColor" content="#2b2b2b" />
|
||||
<meta name="msapplication-tap-highlight" content="no" />
|
||||
|
||||
<!-- Apple Touch Icons -->
|
||||
<link rel="apple-touch-icon" href="/favicon.ico" />
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/favicon.ico" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/favicon.ico" />
|
||||
<link rel="apple-touch-icon" sizes="167x167" href="/favicon.ico" />
|
||||
|
||||
<!-- PWA Manifest -->
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
|
||||
<!-- Resource hints for better loading performance -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link rel="dns-prefetch" href="https://www.googletagmanager.com" />
|
||||
<link rel="dns-prefetch" href="https://js.hs-scripts.com" />
|
||||
|
||||
<!-- Preload critical resources -->
|
||||
<link rel="preload" href="/locales/en/common.json" as="fetch" type="application/json" crossorigin />
|
||||
<link rel="preload" href="/locales/en/auth/login.json" as="fetch" type="application/json" crossorigin />
|
||||
<link rel="preload" href="/locales/en/navbar.json" as="fetch" type="application/json" crossorigin />
|
||||
|
||||
<!-- Optimized font loading with font-display: swap -->
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap"
|
||||
rel="stylesheet"
|
||||
media="print"
|
||||
onload="this.media='all'"
|
||||
/>
|
||||
<noscript>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
</noscript>
|
||||
|
||||
<title>Worklenz</title>
|
||||
|
||||
<!-- Environment configuration -->
|
||||
<script src="/env-config.js"></script>
|
||||
<!-- Google Analytics -->
|
||||
|
||||
<!-- Optimized Google Analytics with reduced blocking -->
|
||||
<script>
|
||||
// Function to initialize Google Analytics
|
||||
// Function to initialize Google Analytics asynchronously
|
||||
function initGoogleAnalytics() {
|
||||
// Load the Google Analytics script
|
||||
const script = document.createElement('script');
|
||||
script.async = true;
|
||||
|
||||
// Determine which tracking ID to use based on the environment
|
||||
const isProduction = window.location.hostname === 'worklenz.com' ||
|
||||
window.location.hostname === 'app.worklenz.com';
|
||||
|
||||
const trackingId = isProduction
|
||||
? 'G-XXXXXXXXXX'
|
||||
: 'G-3LM2HGWEXG'; // Open source tracking ID
|
||||
|
||||
script.src = `https://www.googletagmanager.com/gtag/js?id=${trackingId}`;
|
||||
document.head.appendChild(script);
|
||||
// Use requestIdleCallback to defer analytics loading
|
||||
const loadAnalytics = () => {
|
||||
// Determine which tracking ID to use based on the environment
|
||||
const isProduction = window.location.hostname === 'app.worklenz.com';
|
||||
|
||||
// Initialize Google Analytics
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', trackingId);
|
||||
const trackingId = isProduction ? 'G-7KSRKQ1397' : 'G-3LM2HGWEXG'; // Open source tracking ID
|
||||
|
||||
// Load the Google Analytics script
|
||||
const script = document.createElement('script');
|
||||
script.async = true;
|
||||
script.src = `https://www.googletagmanager.com/gtag/js?id=${trackingId}`;
|
||||
document.head.appendChild(script);
|
||||
|
||||
// Initialize Google Analytics
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag() {
|
||||
dataLayer.push(arguments);
|
||||
}
|
||||
gtag('js', new Date());
|
||||
gtag('config', trackingId);
|
||||
};
|
||||
|
||||
// Use requestIdleCallback if available, otherwise setTimeout
|
||||
if ('requestIdleCallback' in window) {
|
||||
requestIdleCallback(loadAnalytics, { timeout: 2000 });
|
||||
} else {
|
||||
setTimeout(loadAnalytics, 1000);
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize analytics
|
||||
// Initialize analytics after a delay to not block initial render
|
||||
initGoogleAnalytics();
|
||||
|
||||
// Function to show privacy notice
|
||||
@@ -69,7 +120,7 @@
|
||||
document.body.appendChild(notice);
|
||||
// Add event listener to button
|
||||
const btn = notice.querySelector('#analytics-notice-btn');
|
||||
btn.addEventListener('click', function(e) {
|
||||
btn.addEventListener('click', function (e) {
|
||||
e.preventDefault();
|
||||
localStorage.setItem('privacyNoticeShown', 'true');
|
||||
notice.remove();
|
||||
@@ -77,12 +128,13 @@
|
||||
}
|
||||
|
||||
// Wait for DOM to be ready
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
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 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();
|
||||
@@ -95,5 +147,26 @@
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="./src/index.tsx"></script>
|
||||
<script type="text/javascript">
|
||||
// Load HubSpot script asynchronously and only for production
|
||||
if (window.location.hostname === 'app.worklenz.com') {
|
||||
// Use requestIdleCallback to defer HubSpot loading
|
||||
const loadHubSpot = () => {
|
||||
var hs = document.createElement('script');
|
||||
hs.type = 'text/javascript';
|
||||
hs.id = 'hs-script-loader';
|
||||
hs.async = true;
|
||||
hs.defer = true;
|
||||
hs.src = '//js.hs-scripts.com/22348300.js';
|
||||
document.body.appendChild(hs);
|
||||
};
|
||||
|
||||
if ('requestIdleCallback' in window) {
|
||||
requestIdleCallback(loadHubSpot, { timeout: 3000 });
|
||||
} else {
|
||||
setTimeout(loadHubSpot, 2000);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
2363
worklenz-frontend/package-lock.json
generated
2363
worklenz-frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,8 @@
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start": "vite",
|
||||
"start": "vite dev",
|
||||
"dev": "vite dev",
|
||||
"prebuild": "node scripts/copy-tinymce.js",
|
||||
"build": "vite build",
|
||||
"dev-build": "vite build",
|
||||
@@ -13,31 +14,36 @@
|
||||
"dependencies": {
|
||||
"@ant-design/colors": "^7.1.0",
|
||||
"@ant-design/compatible": "^5.1.4",
|
||||
"@ant-design/icons": "^5.4.0",
|
||||
"@ant-design/icons": "^4.7.0",
|
||||
"@ant-design/pro-components": "^2.7.19",
|
||||
"@dnd-kit/core": "^6.3.1",
|
||||
"@dnd-kit/modifiers": "^9.0.0",
|
||||
"@dnd-kit/sortable": "^10.0.0",
|
||||
"@dnd-kit/utilities": "^3.2.2",
|
||||
"@emotion/react": "^11.14.0",
|
||||
"@heroicons/react": "^2.2.0",
|
||||
"@paddle/paddle-js": "^1.3.3",
|
||||
"@reduxjs/toolkit": "^2.2.7",
|
||||
"@tailwindcss/forms": "^0.5.10",
|
||||
"@tanstack/react-table": "^8.20.6",
|
||||
"@tanstack/react-virtual": "^3.11.2",
|
||||
"@tinymce/tinymce-react": "^5.1.1",
|
||||
"antd": "^5.24.1",
|
||||
"axios": "^1.7.9",
|
||||
"antd": "^5.26.2",
|
||||
"axios": "^1.9.0",
|
||||
"chart.js": "^4.4.7",
|
||||
"chartjs-plugin-datalabels": "^2.2.0",
|
||||
"cors": "^2.8.5",
|
||||
"date-fns": "^4.1.0",
|
||||
"dompurify": "^3.2.4",
|
||||
"dompurify": "^3.2.5",
|
||||
"gantt-task-react": "^0.3.9",
|
||||
"html2canvas": "^1.4.1",
|
||||
"i18next": "^23.16.8",
|
||||
"i18next-browser-languagedetector": "^8.0.3",
|
||||
"i18next-browser-languagedetector": "^8.2.0",
|
||||
"i18next-http-backend": "^2.7.3",
|
||||
"i18next-localstorage-backend": "^4.2.0",
|
||||
"jspdf": "^3.0.0",
|
||||
"mixpanel-browser": "^2.56.0",
|
||||
"nanoid": "^5.1.5",
|
||||
"primereact": "^10.8.4",
|
||||
"re-resizable": "^6.10.3",
|
||||
"react": "^18.3.1",
|
||||
@@ -49,10 +55,13 @@
|
||||
"react-responsive": "^10.0.0",
|
||||
"react-router-dom": "^6.28.1",
|
||||
"react-timer-hook": "^3.0.8",
|
||||
"react-virtuoso": "^4.13.0",
|
||||
"react-window": "^1.8.11",
|
||||
"react-window-infinite-loader": "^1.0.10",
|
||||
"socket.io-client": "^4.8.1",
|
||||
"tinymce": "^7.7.2",
|
||||
"web-vitals": "^4.2.4"
|
||||
"web-vitals": "^4.2.4",
|
||||
"worklenz": "file:"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@testing-library/jest-dom": "^6.6.3",
|
||||
@@ -66,14 +75,16 @@
|
||||
"@types/node": "^20.8.4",
|
||||
"@types/react": "19.0.0",
|
||||
"@types/react-dom": "19.0.0",
|
||||
"@types/react-window": "^1.8.8",
|
||||
"@vitejs/plugin-react": "^4.3.4",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"autoprefixer": "^10.4.21",
|
||||
"postcss": "^8.5.2",
|
||||
"prettier-plugin-tailwindcss": "^0.6.8",
|
||||
"prettier-plugin-tailwindcss": "^0.6.13",
|
||||
"rollup": "^4.40.2",
|
||||
"tailwindcss": "^3.4.17",
|
||||
"terser": "^5.39.0",
|
||||
"typescript": "^5.7.3",
|
||||
"vite": "^6.2.5",
|
||||
"vite": "^6.3.5",
|
||||
"vite-tsconfig-paths": "^5.1.4",
|
||||
"vitest": "^3.0.5"
|
||||
},
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
import MembersReportsTimeLogsTab from './members-reports-time-logs-tab';
|
||||
|
||||
type MembersReportsDrawerProps = {
|
||||
memberId: string | null;
|
||||
exportTimeLogs: () => void;
|
||||
};
|
||||
|
||||
const MembersReportsDrawer = ({ memberId, exportTimeLogs }: MembersReportsDrawerProps) => {
|
||||
return (
|
||||
<Drawer
|
||||
open={isDrawerOpen}
|
||||
onClose={handleClose}
|
||||
width={900}
|
||||
destroyOnClose
|
||||
title={
|
||||
selectedMember && (
|
||||
<Flex align="center" justify="space-between">
|
||||
<Flex gap={8} align="center" style={{ fontWeight: 500 }}>
|
||||
<Typography.Text>{selectedMember.name}</Typography.Text>
|
||||
</Flex>
|
||||
|
||||
<Space>
|
||||
<TimeWiseFilter />
|
||||
<Dropdown
|
||||
menu={{
|
||||
items: [
|
||||
{ key: '1', label: t('timeLogsButton'), onClick: exportTimeLogs },
|
||||
{ key: '2', label: t('activityLogsButton') },
|
||||
{ key: '3', label: t('tasksButton') },
|
||||
],
|
||||
}}
|
||||
>
|
||||
<Button type="primary" icon={<DownOutlined />} iconPosition="end">
|
||||
{t('exportButton')}
|
||||
</Button>
|
||||
</Dropdown>
|
||||
</Space>
|
||||
</Flex>
|
||||
)
|
||||
}
|
||||
>
|
||||
{selectedMember && <MembersReportsDrawerTabs memberId={selectedMember.id} />}
|
||||
{selectedMember && <MembersOverviewTasksStatsDrawer memberId={selectedMember.id} />}
|
||||
{selectedMember && <MembersOverviewProjectsStatsDrawer memberId={selectedMember.id} />}
|
||||
</Drawer>
|
||||
);
|
||||
};
|
||||
|
||||
export default MembersReportsDrawer;
|
||||
@@ -1,41 +0,0 @@
|
||||
import React, { useState } from 'react';
|
||||
import { Flex, Skeleton } from 'antd';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTimeLogs } from '../contexts/TimeLogsContext';
|
||||
import { BillableFilter } from './BillableFilter';
|
||||
import { TimeLogCard } from './TimeLogCard';
|
||||
import { EmptyListPlaceholder } from './EmptyListPlaceholder';
|
||||
import { TaskDrawer } from './TaskDrawer';
|
||||
import MembersReportsDrawer from './members-reports-drawer';
|
||||
|
||||
const MembersReportsTimeLogsTab: React.FC = () => {
|
||||
const { t } = useTranslation();
|
||||
const { timeLogsData, billable, setBillable, exportTimeLogs, exporting } = useTimeLogs();
|
||||
|
||||
return (
|
||||
<Flex vertical gap={24}>
|
||||
<BillableFilter billable={billable} onBillableChange={setBillable} />
|
||||
|
||||
<button onClick={exportTimeLogs} disabled={exporting}>
|
||||
{exporting ? t('exporting') : t('exportTimeLogs')}
|
||||
</button>
|
||||
|
||||
<Skeleton active loading={exporting} paragraph={{ rows: 10 }}>
|
||||
{timeLogsData.length > 0 ? (
|
||||
<Flex vertical gap={24}>
|
||||
{timeLogsData.map((logs, index) => (
|
||||
<TimeLogCard key={index} data={logs} />
|
||||
))}
|
||||
</Flex>
|
||||
) : (
|
||||
<EmptyListPlaceholder text={t('timeLogsEmptyPlaceholder')} />
|
||||
)}
|
||||
</Skeleton>
|
||||
|
||||
{createPortal(<TaskDrawer />, document.body)}
|
||||
<MembersReportsDrawer memberId={/* pass the memberId here */} exportTimeLogs={exportTimeLogs} />
|
||||
</Flex>
|
||||
);
|
||||
};
|
||||
|
||||
export default MembersReportsTimeLogsTab;
|
||||
@@ -14,4 +14,4 @@
|
||||
/* Maintain hover state */
|
||||
.table-body-row:hover .sticky-column {
|
||||
background-color: var(--background-hover);
|
||||
}
|
||||
}
|
||||
|
||||
7
worklenz-frontend/public/env-config.js
Normal file
7
worklenz-frontend/public/env-config.js
Normal file
@@ -0,0 +1,7 @@
|
||||
// Development placeholder for env-config.js
|
||||
// In production, this file is dynamically generated with actual environment values
|
||||
// For development, we let the application fall back to import.meta.env variables
|
||||
|
||||
// Set undefined values so the application falls back to build-time env vars
|
||||
window.VITE_API_URL = undefined;
|
||||
window.VITE_SOCKET_URL = undefined;
|
||||
@@ -3,21 +3,32 @@
|
||||
"client": "Klienti",
|
||||
"category": "Kategoria",
|
||||
"status": "Statusi",
|
||||
"tasksProgress": "Progresi i Detyrave",
|
||||
"updated_at": "Përditësuar Së Fundi",
|
||||
"tasksProgress": "Përparimi i Detyrave",
|
||||
"updated_at": "E 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",
|
||||
"all": "Të gjitha",
|
||||
"favorites": "Të preferuarit",
|
||||
"archived": "E arkivuar",
|
||||
"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",
|
||||
"unarchive": "Çarkivo",
|
||||
"archiveConfirm": "Jeni i sigurt që dëshironi të arkivoni këtë projekt?",
|
||||
"unarchiveConfirm": "Jeni i sigurt që dëshironi të çarkivoni këtë projekt?",
|
||||
"yes": "Po",
|
||||
"no": "Jo",
|
||||
"clickToFilter": "Kliko për të filtruar sipas",
|
||||
"noProjects": "Nuk u gjetën projekte",
|
||||
"addToFavourites": "Shto në të preferuarat"
|
||||
"addToFavourites": "Shto te të preferuarit",
|
||||
"list": "Lista",
|
||||
"group": "Grupi",
|
||||
"listView": "Pamja e Listës",
|
||||
"groupView": "Pamja e Grupit",
|
||||
"groupBy": {
|
||||
"category": "Kategoria",
|
||||
"client": "Klienti"
|
||||
},
|
||||
"noPermission": "Nuk keni leje për të kryer këtë veprim"
|
||||
}
|
||||
|
||||
@@ -19,5 +19,12 @@
|
||||
"archive": "Arkivo",
|
||||
|
||||
"newTaskNamePlaceholder": "Shkruaj emrin e detyrës",
|
||||
"newSubtaskNamePlaceholder": "Shkruaj emrin e nëndetyrës"
|
||||
"newSubtaskNamePlaceholder": "Shkruaj emrin e nëndetyrës",
|
||||
"untitledSection": "Seksion pa titull",
|
||||
"unmapped": "Pa hartë",
|
||||
"clickToChangeDate": "Klikoni për të ndryshuar datën",
|
||||
"noDueDate": "Pa datë përfundimi",
|
||||
"save": "Ruaj",
|
||||
"clear": "Pastro",
|
||||
"nextWeek": "Javën e ardhshme"
|
||||
}
|
||||
|
||||
@@ -1,7 +1,24 @@
|
||||
{
|
||||
"configurePhases": "Konfiguro Fazat",
|
||||
"configure": "Konfiguro",
|
||||
"phaseLabel": "Etiketa e Fazës",
|
||||
"enterPhaseName": "Vendosni një emër për etiketën e fazës",
|
||||
"enterPhaseName": "Shkruaj emrin e fazës",
|
||||
"addOption": "Shto Opsion",
|
||||
"phaseOptions": "Opsionet e Fazës:"
|
||||
"phaseOptions": "Opsionet e Fazës",
|
||||
"optionsText": "Opsione",
|
||||
"dragToReorderPhases": "Tërhiq fazat për t'i rirenditur. Çdo fazë mund të ketë një ngjyrë të ndryshme.",
|
||||
"enterNewPhaseName": "Shkruaj emrin e fazës së re...",
|
||||
"addPhase": "Shto Fazë",
|
||||
"noPhasesFound": "Nuk u gjetën faza",
|
||||
"no": "Asnjë",
|
||||
"found": "u gjet",
|
||||
"deletePhase": "Fshi Fazën",
|
||||
"deletePhaseConfirm": "Jeni i sigurt që doni të fshini këtë fazë? Ky veprim nuk mund të zhbëhet.",
|
||||
"rename": "Riemërto",
|
||||
"delete": "Fshi",
|
||||
"create": "Krijo",
|
||||
"cancel": "Anulo",
|
||||
"selectColor": "Zgjidh ngjyrën",
|
||||
"managePhases": "Menaxho Fazat",
|
||||
"close": "Mbyll"
|
||||
}
|
||||
|
||||
14
worklenz-frontend/public/locales/alb/project-view.json
Normal file
14
worklenz-frontend/public/locales/alb/project-view.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"taskList": "Lista e Detyrave",
|
||||
"board": "Tabela Kanban",
|
||||
"insights": "Analiza",
|
||||
"files": "Skedarë",
|
||||
"members": "Anëtarë",
|
||||
"updates": "Përditësime",
|
||||
"projectView": "Pamja e Projektit",
|
||||
"loading": "Duke ngarkuar projektin...",
|
||||
"error": "Gabim në ngarkimin e projektit",
|
||||
"pinnedTab": "E fiksuar si tab i parazgjedhur",
|
||||
"pinTab": "Fikso si tab i parazgjedhur",
|
||||
"unpinTab": "Hiqe fiksimin e tab-it të parazgjedhur"
|
||||
}
|
||||
@@ -1,13 +1,31 @@
|
||||
{
|
||||
"importTasks": "Importo detyra",
|
||||
"importTasks": "Importo detyrat",
|
||||
"importTask": "Importo detyrën",
|
||||
"createTask": "Krijo detyrë",
|
||||
"settings": "Cilësimet",
|
||||
"subscribe": "Abonohu",
|
||||
"unsubscribe": "Ç'abonohu",
|
||||
"deleteProject": "Fshi projektin",
|
||||
"unsubscribe": "Çabonohu",
|
||||
"deleteProject": "Fshij 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."
|
||||
"receiveProjectSummary": "Merr një përmbledhje të projektit çdo mbrëmje.",
|
||||
"refreshProject": "Rifresko projektin",
|
||||
"saveAsTemplate": "Ruaj si shabllon",
|
||||
"invite": "Fto",
|
||||
"share": "Ndaj",
|
||||
"subscribeTooltip": "Abonohu në njoftimet e projektit",
|
||||
"unsubscribeTooltip": "Çabonohu nga njoftimet e projektit",
|
||||
"refreshTooltip": "Rifresko të dhënat e projektit",
|
||||
"settingsTooltip": "Hap cilësimet e projektit",
|
||||
"saveAsTemplateTooltip": "Ruaj këtë projekt si shabllon",
|
||||
"inviteTooltip": "Fto anëtarët e ekipit në këtë projekt",
|
||||
"createTaskTooltip": "Krijo një detyrë të re",
|
||||
"importTaskTooltip": "Importo detyrë nga shablloni",
|
||||
"navigateBackTooltip": "Kthehu në listën e projekteve",
|
||||
"projectStatusTooltip": "Statusi i projektit",
|
||||
"projectDatesInfo": "Informacioni i afateve të projektit",
|
||||
"projectCategoryTooltip": "Kategoria e projektit",
|
||||
"defaultTaskName": "Detyrë Pa Emër"
|
||||
}
|
||||
|
||||
@@ -9,5 +9,6 @@
|
||||
"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"
|
||||
"avatarTooltip": "Klikoni për të ngarkuar një avatar",
|
||||
"title": "Cilësimet e Profilit"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"title": "Anëtarët e Ekipit",
|
||||
"nameColumn": "Emri",
|
||||
"projectsColumn": "Projektet",
|
||||
"emailColumn": "Email",
|
||||
@@ -40,5 +41,7 @@
|
||||
"ownerText": "Pronar i Ekipit",
|
||||
"addedText": "Shtuar",
|
||||
"updatedText": "Përditësuar",
|
||||
"noResultFound": "Shkruani një adresë email dhe shtypni Enter..."
|
||||
"noResultFound": "Shkruani një adresë email dhe shtypni Enter...",
|
||||
"jobTitlesFetchError": "Dështoi marrja e titujve të punës",
|
||||
"invitationResent": "Ftesa u dërgua sërish me sukses!"
|
||||
}
|
||||
|
||||
16
worklenz-frontend/public/locales/alb/settings/teams.json
Normal file
16
worklenz-frontend/public/locales/alb/settings/teams.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"title": "Ekipet",
|
||||
"team": "Ekip",
|
||||
"teams": "Ekipet",
|
||||
"name": "Emri",
|
||||
"created": "Krijuar",
|
||||
"ownsBy": "I përket",
|
||||
"edit": "Ndrysho",
|
||||
"editTeam": "Ndrysho Ekipin",
|
||||
"pinTooltip": "Kliko për ta fiksuar në menunë kryesore",
|
||||
"editTeamName": "Ndrysho Emrin e Ekipit",
|
||||
"updateName": "Përditëso Emrin",
|
||||
"namePlaceholder": "Emri",
|
||||
"nameRequired": "Ju lutem shkruani një Emër",
|
||||
"updateFailed": "Ndryshimi i emrit të ekipit dështoi!"
|
||||
}
|
||||
@@ -1,28 +1,37 @@
|
||||
{
|
||||
"taskHeader": {
|
||||
"taskNamePlaceholder": "Shkruani detyrën tuaj",
|
||||
"taskNamePlaceholder": "Shkruani Detyrën tuaj",
|
||||
"deleteTask": "Fshi Detyrën"
|
||||
},
|
||||
"taskInfoTab": {
|
||||
"title": "Info",
|
||||
"title": "Informacioni",
|
||||
"details": {
|
||||
"title": "Detajet",
|
||||
"task-key": "Çelësi i Detyrës",
|
||||
"phase": "Faza",
|
||||
"assignees": "Përgjegjësit",
|
||||
"due-date": "Afati i Përfundimit",
|
||||
"assignees": "Të Caktuar",
|
||||
"due-date": "Data e Përfundimit",
|
||||
"time-estimation": "Vlerësimi i Kohës",
|
||||
"priority": "Prioriteti",
|
||||
"labels": "Etiketa",
|
||||
"billable": "Fakturueshme",
|
||||
"labels": "Etiketat",
|
||||
"billable": "E Faturueshme",
|
||||
"notify": "Njofto",
|
||||
"when-done-notify": "Kur të përfundojë, njofto",
|
||||
"when-done-notify": "Kur përfundon, 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"
|
||||
"minutes": "Minuta",
|
||||
"progressValue": "Vlera e Progresit",
|
||||
"progressValueTooltip": "Vendosni përqindjen e progresit (0-100%)",
|
||||
"progressValueRequired": "Ju lutemi vendosni një vlerë progresi",
|
||||
"progressValueRange": "Progresi duhet të jetë midis 0 dhe 100",
|
||||
"taskWeight": "Pesha e Detyrës",
|
||||
"taskWeightTooltip": "Vendosni peshën e kësaj nëndetyre (përqindje)",
|
||||
"taskWeightRequired": "Ju lutemi vendosni një peshë detyre",
|
||||
"taskWeightRange": "Pesha duhet të jetë midis 0 dhe 100",
|
||||
"recurring": "E Përsëritur"
|
||||
},
|
||||
"labels": {
|
||||
"labelInputPlaceholder": "Kërko ose krijo",
|
||||
@@ -30,37 +39,48 @@
|
||||
},
|
||||
"description": {
|
||||
"title": "Përshkrimi",
|
||||
"placeholder": "Shtoni një përshkrim më të detajuar..."
|
||||
"placeholder": "Shto 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",
|
||||
"title": "Nëndetyrat",
|
||||
"addSubTask": "Shto Nëndetyrë",
|
||||
"addSubTaskInputPlaceholder": "Shkruani detyrën tuaj dhe shtypni enter",
|
||||
"refreshSubTasks": "Rifresko Nëndetyrat",
|
||||
"edit": "Modifiko",
|
||||
"delete": "Fshi",
|
||||
"confirmDeleteSubTask": "Jeni i sigurt që doni të fshini këtë nën-detyrë?",
|
||||
"deleteSubTask": "Fshi Nën-Detyrën"
|
||||
"confirmDeleteSubTask": "Jeni i sigurt që doni të fshini këtë nëndetyrë?",
|
||||
"deleteSubTask": "Fshi Nëndetyrë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",
|
||||
"blockedBy": "Bllokuar nga",
|
||||
"searchTask": "Shkruani për të kërkuar detyrë",
|
||||
"noTasksFound": "Nuk u gjetën detyra",
|
||||
"confirmDeleteDependency": "Jeni i sigurt që doni të fshini?"
|
||||
},
|
||||
"attachments": {
|
||||
"title": "Bashkëngjitjet",
|
||||
"chooseOrDropFileToUpload": "Zgjidhni ose lëshoni skedar për ngarkim",
|
||||
"uploading": "Po ngarkohet..."
|
||||
"chooseOrDropFileToUpload": "Zgjidhni ose hidhni skedar për të ngarkuar",
|
||||
"uploading": "Duke ngarkuar..."
|
||||
},
|
||||
"comments": {
|
||||
"title": "Komentet",
|
||||
"addComment": "+ Shto koment të ri",
|
||||
"noComments": "Asnjë koment ende. Bëhu i pari që komenton!",
|
||||
"noComments": "Ende pa komente. Bëhu i pari që komenton!",
|
||||
"delete": "Fshi",
|
||||
"confirmDeleteComment": "Jeni i sigurt që doni të fshini këtë koment?"
|
||||
"confirmDeleteComment": "Jeni i sigurt që doni të fshini këtë koment?",
|
||||
"addCommentPlaceholder": "Shto një koment...",
|
||||
"cancel": "Anulo",
|
||||
"commentButton": "Komento",
|
||||
"attachFiles": "Bashkëngjit skedarë",
|
||||
"addMoreFiles": "Shto më shumë skedarë",
|
||||
"selectedFiles": "Skedarët e Zgjedhur (Deri në 25MB, Maksimumi {count})",
|
||||
"maxFilesError": "Mund të ngarkoni maksimum {count} skedarë",
|
||||
"processFilesError": "Dështoi përpunimi i skedarëve",
|
||||
"addCommentError": "Ju lutemi shtoni një koment ose bashkëngjitni skedarë",
|
||||
"createdBy": "Krijuar {{time}} nga {{user}}",
|
||||
"updatedTime": "Përditësuar {{time}}"
|
||||
},
|
||||
"searchInputPlaceholder": "Kërko sipas emrit",
|
||||
"pendingInvitation": "Ftesë në Pritje"
|
||||
@@ -68,11 +88,36 @@
|
||||
"taskTimeLogTab": {
|
||||
"title": "Regjistri i Kohës",
|
||||
"addTimeLog": "Shto regjistrim të ri kohe",
|
||||
"totalLogged": "Koha totale e regjistruar",
|
||||
"totalLogged": "Totali i Regjistruar",
|
||||
"exportToExcel": "Eksporto në Excel",
|
||||
"noTimeLogsFound": "Asnjë regjistrim kohe nuk u gjet"
|
||||
"noTimeLogsFound": "Nuk u gjetën regjistra kohe",
|
||||
"timeLogForm": {
|
||||
"date": "Data",
|
||||
"startTime": "Koha e Fillimit",
|
||||
"endTime": "Koha e Përfundimit",
|
||||
"workDescription": "Përshkrimi i Punës",
|
||||
"descriptionPlaceholder": "Shto një përshkrim",
|
||||
"logTime": "Regjistro kohën",
|
||||
"updateTime": "Përditëso kohën",
|
||||
"cancel": "Anulo",
|
||||
"selectDateError": "Ju lutemi zgjidhni një datë",
|
||||
"selectStartTimeError": "Ju lutemi zgjidhni kohën e fillimit",
|
||||
"selectEndTimeError": "Ju lutemi zgjidhni kohën e përfundimit",
|
||||
"endTimeAfterStartError": "Koha e përfundimit duhet të jetë pas kohës së fillimit"
|
||||
}
|
||||
},
|
||||
"taskActivityLogTab": {
|
||||
"title": "Regjistri i Aktivitetit"
|
||||
"title": "Regjistri i Aktivitetit",
|
||||
"add": "SHTO",
|
||||
"remove": "HIQE",
|
||||
"none": "Asnjë",
|
||||
"weight": "Pesha",
|
||||
"createdTask": "krijoi detyrën."
|
||||
},
|
||||
"taskProgress": {
|
||||
"markAsDoneTitle": "Shëno Detyrën si të Kryer?",
|
||||
"confirmMarkAsDone": "Po, shëno si të kryer",
|
||||
"cancelMarkAsDone": "Jo, mbaj statusin aktual",
|
||||
"markAsDoneDescription": "Keni vendosur progresin në 100%. Doni të përditësoni statusin e detyrës në \"Kryer\"?"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,53 +7,82 @@
|
||||
"statusText": "Statusi",
|
||||
"phaseText": "Faza",
|
||||
"memberText": "Anëtarët",
|
||||
"assigneesText": "Përgjegjësit",
|
||||
"assigneesText": "Të caktuarit",
|
||||
"priorityText": "Prioriteti",
|
||||
"labelsText": "Etiketa",
|
||||
"labelsText": "Etiketat",
|
||||
"membersText": "Anëtarët",
|
||||
"groupByText": "Grupo sipas",
|
||||
"showArchivedText": "Shfaq të arkivuara",
|
||||
"showArchivedText": "Shfaq të arkivuarat",
|
||||
"showFieldsText": "Shfaq fushat",
|
||||
"keyText": "Çelësi",
|
||||
"taskText": "Detyra",
|
||||
"descriptionText": "Përshkrimi",
|
||||
"phasesText": "Fazat",
|
||||
"listText": "Listë",
|
||||
"listText": "Lista",
|
||||
"progressText": "Progresi",
|
||||
"timeTrackingText": "Gjurmimi i Kohës",
|
||||
"timetrackingText": "Gjurmimi i Kohës",
|
||||
"timeTrackingText": "Ndjekja e kohës",
|
||||
"timetrackingText": "Ndjekja e 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",
|
||||
"startDateText": "Data e fillimit",
|
||||
"startdateText": "Data e fillimit",
|
||||
"endDateText": "Data e mbarimit",
|
||||
"dueDateText": "Data e afatit",
|
||||
"duedateText": "Data e afatit",
|
||||
"completedDateText": "Data e përfundimit",
|
||||
"completeddateText": "Data e përfundimit",
|
||||
"createdDateText": "Data e krijimit",
|
||||
"createddateText": "Data e krijimit",
|
||||
"lastUpdatedText": "Përditësimi i fundit",
|
||||
"lastupdatedText": "Përditësimi i fundit",
|
||||
"reporterText": "Raportuesi",
|
||||
"dueTimeText": "Koha e Afatit",
|
||||
"duetimeText": "Koha e Afatit",
|
||||
"dueTimeText": "Koha e afatit",
|
||||
"duetimeText": "Koha e afatit",
|
||||
|
||||
"lowText": "I ulët",
|
||||
"mediumText": "I mesëm",
|
||||
"highText": "I lartë",
|
||||
"lowText": "E ulët",
|
||||
"mediumText": "E mesme",
|
||||
"highText": "E lartë",
|
||||
|
||||
"createStatusButtonTooltip": "Cilësimet e statusit",
|
||||
"configPhaseButtonTooltip": "Cilësimet e fazës",
|
||||
"noLabelsFound": "Nuk u gjetën etiketa",
|
||||
|
||||
"addStatusButton": "Shto Status",
|
||||
"addPhaseButton": "Shto Fazë",
|
||||
"addStatusButton": "Shto status",
|
||||
"addPhaseButton": "Shto fazë",
|
||||
|
||||
"createStatus": "Krijo Status",
|
||||
"createStatus": "Krijo status",
|
||||
"name": "Emri",
|
||||
"category": "Kategoria",
|
||||
"selectCategory": "Zgjidh një kategori",
|
||||
"pleaseEnterAName": "Ju lutemi vendosni një emër",
|
||||
"pleaseEnterAName": "Ju lutemi shkruani një emër",
|
||||
"pleaseSelectACategory": "Ju lutemi zgjidhni një kategori",
|
||||
"create": "Krijo"
|
||||
"create": "Krijo",
|
||||
|
||||
"searchTasks": "Kërko detyra...",
|
||||
"searchPlaceholder": "Kërko...",
|
||||
"fieldsText": "Fushat",
|
||||
"loadingFilters": "Po ngarkohen filtrat...",
|
||||
"noOptionsFound": "Nuk u gjetën opcione",
|
||||
"filtersActive": "filtra aktiv",
|
||||
"filterActive": "filtër aktiv",
|
||||
"clearAll": "Pastro të gjitha",
|
||||
"clearing": "Po pastron...",
|
||||
"cancel": "Anulo",
|
||||
"search": "Kërko",
|
||||
"groupedBy": "Grupuar sipas",
|
||||
"manage": "Menaxho",
|
||||
"manageStatuses": "Menaxho Statuset",
|
||||
"managePhases": "Menaxho Fazat",
|
||||
"dragToReorderStatuses": "Statuset janë të organizuara sipas kategorive. Tërhiq për të rirenditur brenda kategorive. Kliko 'Shto status' për të krijuar statuse të reja në çdo kategori.",
|
||||
"enterNewStatusName": "Shkruani emrin e statusit të ri...",
|
||||
"addStatus": "Shto status",
|
||||
"noStatusesFound": "Nuk ka statuse në këtë kategori",
|
||||
"deleteStatus": "Fshi statusin",
|
||||
"deleteStatusConfirm": "Jeni të sigurt që doni të fshini këtë status? Ky veprim nuk mund të zhbëhet.",
|
||||
"rename": "Riemërto",
|
||||
"delete": "Fshi",
|
||||
"enterStatusName": "Shkruani emrin e statusit",
|
||||
"close": "Mbyll",
|
||||
"cannotMoveStatus": "Nuk mund të lëvizet statusi",
|
||||
"cannotMoveStatusMessage": "Nuk mund të lëvizet ky status sepse do të linte kategorinë '{{categoryName}}' bosh. Çdo kategori duhet të ketë të paktën një status.",
|
||||
"ok": "OK"
|
||||
}
|
||||
|
||||
@@ -36,8 +36,9 @@
|
||||
"selectText": "Zgjidh",
|
||||
"labelsSelectorInputTip": "Shtyp Enter për të krijuar!",
|
||||
|
||||
"addTaskText": "+ Shto Detyrë",
|
||||
"addTaskText": "Shto Detyrë",
|
||||
"addSubTaskText": "+ Shto Nën-Detyrë",
|
||||
"noTasksInGroup": "Nuk ka detyra në këtë grup",
|
||||
"addTaskInputPlaceholder": "Shkruaj detyrën dhe shtyp Enter",
|
||||
|
||||
"openButton": "Hap",
|
||||
@@ -47,6 +48,9 @@
|
||||
"searchInputPlaceholder": "Kërko ose krijo",
|
||||
"assigneeSelectorInviteButton": "Fto një anëtar të ri me email",
|
||||
"labelInputPlaceholder": "Kërko ose krijo",
|
||||
"searchLabelsPlaceholder": "Kërko etiketa...",
|
||||
"createLabelButton": "Krijo \"{{name}}\"",
|
||||
"manageLabelsPath": "Cilësimet → Etiketat",
|
||||
|
||||
"pendingInvitation": "Ftesë në Pritje",
|
||||
|
||||
@@ -59,5 +63,74 @@
|
||||
"convertToTask": "Shndërro në Detyrë",
|
||||
"delete": "Fshi",
|
||||
"searchByNameInputPlaceholder": "Kërko sipas emrit"
|
||||
},
|
||||
"setDueDate": "Cakto datën e afatit",
|
||||
"setStartDate": "Cakto datën e fillimit",
|
||||
"clearDueDate": "Pastro datën e afatit",
|
||||
"clearStartDate": "Pastro datën e fillimit",
|
||||
"dueDatePlaceholder": "Data e afatit",
|
||||
"startDatePlaceholder": "Data e fillimit",
|
||||
|
||||
"emptyStates": {
|
||||
"noTaskGroups": "Nuk u gjetën grupe detyrash",
|
||||
"noTaskGroupsDescription": "Detyrat do të shfaqen këtu kur krijohen ose kur aplikohen filtra.",
|
||||
"errorPrefix": "Gabim:",
|
||||
"dragTaskFallback": "Detyrë"
|
||||
},
|
||||
|
||||
"customColumns": {
|
||||
"addCustomColumn": "Shto një kolonë të personalizuar",
|
||||
"customColumnHeader": "Kolona e Personalizuar",
|
||||
"customColumnSettings": "Cilësimet e kolonës së personalizuar",
|
||||
"noCustomValue": "Asnjë vlerë",
|
||||
"peopleField": "Fusha e njerëzve",
|
||||
"noDate": "Asnjë datë",
|
||||
"unsupportedField": "Lloj fushe i pambështetur",
|
||||
|
||||
"modal": {
|
||||
"addFieldTitle": "Shto fushë",
|
||||
"editFieldTitle": "Redakto fushën",
|
||||
"fieldTitle": "Titulli i fushës",
|
||||
"fieldTitleRequired": "Titulli i fushës është i kërkuar",
|
||||
"columnTitlePlaceholder": "Titulli i kolonës",
|
||||
"type": "Lloji",
|
||||
"deleteConfirmTitle": "Jeni i sigurt që doni të fshini këtë kolonë të personalizuar?",
|
||||
"deleteConfirmDescription": "Kjo veprim nuk mund të zhbëhet. Të gjitha të dhënat e lidhura me këtë kolonë do të fshihen përgjithmonë.",
|
||||
"deleteButton": "Fshi",
|
||||
"cancelButton": "Anulo",
|
||||
"createButton": "Krijo",
|
||||
"updateButton": "Përditëso",
|
||||
"createSuccessMessage": "Kolona e personalizuar u krijua me sukses",
|
||||
"updateSuccessMessage": "Kolona e personalizuar u përditësua me sukses",
|
||||
"deleteSuccessMessage": "Kolona e personalizuar u fshi me sukses",
|
||||
"deleteErrorMessage": "Dështoi në fshirjen e kolonës së personalizuar",
|
||||
"createErrorMessage": "Dështoi në krijimin e kolonës së personalizuar",
|
||||
"updateErrorMessage": "Dështoi në përditësimin e kolonës së personalizuar"
|
||||
},
|
||||
|
||||
"fieldTypes": {
|
||||
"people": "Njerëz",
|
||||
"number": "Numër",
|
||||
"date": "Data",
|
||||
"selection": "Zgjedhje",
|
||||
"checkbox": "Kutia e kontrollit",
|
||||
"labels": "Etiketat",
|
||||
"key": "Çelësi",
|
||||
"formula": "Formula"
|
||||
}
|
||||
},
|
||||
|
||||
"indicators": {
|
||||
"tooltips": {
|
||||
"subtasks": "{{count}} nën-detyrë",
|
||||
"subtasks_plural": "{{count}} nën-detyra",
|
||||
"comments": "{{count}} koment",
|
||||
"comments_plural": "{{count}} komente",
|
||||
"attachments": "{{count}} bashkëngjitje",
|
||||
"attachments_plural": "{{count}} bashkëngjitje",
|
||||
"subscribers": "Detyra ka pajtues",
|
||||
"dependencies": "Detyra ka varësi",
|
||||
"recurring": "Detyrë përsëritëse"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
39
worklenz-frontend/public/locales/alb/task-management.json
Normal file
39
worklenz-frontend/public/locales/alb/task-management.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"noTasksInGroup": "Nuk ka detyra në këtë grup",
|
||||
"noTasksInGroupDescription": "Shto një detyrë për të filluar",
|
||||
"addFirstTask": "Shto detyrën e parë",
|
||||
"openTask": "Hap",
|
||||
"subtask": "nëndetyrë",
|
||||
"subtasks": "nëndetyra",
|
||||
"comment": "koment",
|
||||
"comments": "komente",
|
||||
"attachment": "bashkëngjitje",
|
||||
"attachments": "bashkëngjitje",
|
||||
"enterSubtaskName": "Shkruani emrin e nëndetyrës...",
|
||||
"add": "Shto",
|
||||
"cancel": "Anulo",
|
||||
"renameGroup": "Riemërto Grupin",
|
||||
"renameStatus": "Riemërto Statusin",
|
||||
"renamePhase": "Riemërto Fazën",
|
||||
"changeCategory": "Ndrysho Kategorinë",
|
||||
"clickToEditGroupName": "Kliko për të redaktuar emrin e grupit",
|
||||
"enterGroupName": "Shkruani emrin e grupit",
|
||||
"todo": "Për t'u Bërë",
|
||||
"inProgress": "Në Progres",
|
||||
"done": "E Kryer",
|
||||
"defaultTaskName": "Detyrë Pa Emër",
|
||||
|
||||
"indicators": {
|
||||
"tooltips": {
|
||||
"subtasks": "{{count}} nëndetyrë",
|
||||
"subtasks_plural": "{{count}} nëndetyra",
|
||||
"comments": "{{count}} koment",
|
||||
"comments_plural": "{{count}} komente",
|
||||
"attachments": "{{count}} bashkëngjitje",
|
||||
"attachments_plural": "{{count}} bashkëngjitje",
|
||||
"subscribers": "Detyra ka abonues",
|
||||
"dependencies": "Detyra ka varësi",
|
||||
"recurring": "Detyrë e përsëritur"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,9 @@
|
||||
"createTaskTemplate": "Krijo Shabllon Detyre",
|
||||
"apply": "Apliko",
|
||||
"createLabel": "+ Krijo Etiketë",
|
||||
"searchOrCreateLabel": "Kërko ose krijo etiketë...",
|
||||
"hitEnterToCreate": "Shtyp Enter për të krijuar",
|
||||
"labelExists": "Etiketa ekziston tashmë",
|
||||
"pendingInvitation": "Ftesë në Pritje",
|
||||
"noMatchingLabels": "Asnjë etiketë që përputhet",
|
||||
"noLabels": "Asnjë etiketë"
|
||||
|
||||
@@ -17,7 +17,18 @@
|
||||
"unarchive": "Dearchivieren",
|
||||
"archiveConfirm": "Sind Sie sicher, dass Sie dieses Projekt archivieren möchten?",
|
||||
"unarchiveConfirm": "Sind Sie sicher, dass Sie dieses Projekt dearchivieren möchten?",
|
||||
"yes": "Ja",
|
||||
"no": "Nein",
|
||||
"clickToFilter": "Zum Filtern klicken nach",
|
||||
"noProjects": "Keine Projekte gefunden",
|
||||
"addToFavourites": "Zu Favoriten hinzufügen"
|
||||
"addToFavourites": "Zu Favoriten hinzufügen",
|
||||
"list": "Liste",
|
||||
"group": "Gruppe",
|
||||
"listView": "Listenansicht",
|
||||
"groupView": "Gruppenansicht",
|
||||
"groupBy": {
|
||||
"category": "Kategorie",
|
||||
"client": "Kunde"
|
||||
},
|
||||
"noPermission": "Sie haben keine Berechtigung, diese Aktion durchzuführen"
|
||||
}
|
||||
|
||||
@@ -19,5 +19,12 @@
|
||||
"archive": "Archivieren",
|
||||
|
||||
"newTaskNamePlaceholder": "Aufgabenname eingeben",
|
||||
"newSubtaskNamePlaceholder": "Unteraufgabenname eingeben"
|
||||
"newSubtaskNamePlaceholder": "Unteraufgabenname eingeben",
|
||||
"untitledSection": "Unbenannter Abschnitt",
|
||||
"unmapped": "Nicht zugeordnet",
|
||||
"clickToChangeDate": "Klicken Sie, um das Datum zu ändern",
|
||||
"noDueDate": "Kein Fälligkeitsdatum",
|
||||
"save": "Speichern",
|
||||
"clear": "Löschen",
|
||||
"nextWeek": "Nächste Woche"
|
||||
}
|
||||
|
||||
@@ -1,7 +1,24 @@
|
||||
{
|
||||
"configurePhases": "Phasen konfigurieren",
|
||||
"phaseLabel": "Phasenbezeichnung",
|
||||
"enterPhaseName": "Namen für Phasenbezeichnung eingeben",
|
||||
"configure": "Konfigurieren",
|
||||
"phaseLabel": "Phasen-Label",
|
||||
"enterPhaseName": "Phasenname eingeben",
|
||||
"addOption": "Option hinzufügen",
|
||||
"phaseOptions": "Phasenoptionen:"
|
||||
"phaseOptions": "Phasenoptionen",
|
||||
"optionsText": "Optionen",
|
||||
"dragToReorderPhases": "Ziehen Sie Phasen, um sie neu zu ordnen. Jede Phase kann eine andere Farbe haben.",
|
||||
"enterNewPhaseName": "Neuen Phasennamen eingeben...",
|
||||
"addPhase": "Phase hinzufügen",
|
||||
"noPhasesFound": "Keine Phasen gefunden",
|
||||
"no": "Keine",
|
||||
"found": "gefunden",
|
||||
"deletePhase": "Phase löschen",
|
||||
"deletePhaseConfirm": "Sind Sie sicher, dass Sie diese Phase löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
|
||||
"rename": "Umbenennen",
|
||||
"delete": "Löschen",
|
||||
"create": "Erstellen",
|
||||
"cancel": "Abbrechen",
|
||||
"selectColor": "Farbe auswählen",
|
||||
"managePhases": "Phasen verwalten",
|
||||
"close": "Schließen"
|
||||
}
|
||||
|
||||
14
worklenz-frontend/public/locales/de/project-view.json
Normal file
14
worklenz-frontend/public/locales/de/project-view.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"taskList": "Aufgabenliste",
|
||||
"board": "Kanban-Board",
|
||||
"insights": "Insights",
|
||||
"files": "Dateien",
|
||||
"members": "Mitglieder",
|
||||
"updates": "Aktualisierungen",
|
||||
"projectView": "Projektansicht",
|
||||
"loading": "Projekt wird geladen...",
|
||||
"error": "Fehler beim Laden des Projekts",
|
||||
"pinnedTab": "Als Standard-Registerkarte festgesetzt",
|
||||
"pinTab": "Als Standard-Registerkarte festsetzen",
|
||||
"unpinTab": "Standard-Registerkarte lösen"
|
||||
}
|
||||
@@ -1,13 +1,31 @@
|
||||
{
|
||||
"importTasks": "Aufgaben importieren",
|
||||
"importTask": "Aufgabe importieren",
|
||||
"createTask": "Aufgabe erstellen",
|
||||
"settings": "Einstellungen",
|
||||
"subscribe": "Abonnieren",
|
||||
"unsubscribe": "Abbestellen",
|
||||
"unsubscribe": "Abmelden",
|
||||
"deleteProject": "Projekt löschen",
|
||||
"startDate": "Startdatum",
|
||||
"endDate": "Enddatum",
|
||||
"projectSettings": "Projekteinstellungen",
|
||||
"projectSummary": "Projektzusammenfassung",
|
||||
"receiveProjectSummary": "Erhalten Sie jeden Abend eine Projektzusammenfassung."
|
||||
"receiveProjectSummary": "Jeden Abend eine Projektzusammenfassung erhalten.",
|
||||
"refreshProject": "Projekt aktualisieren",
|
||||
"saveAsTemplate": "Als Vorlage speichern",
|
||||
"invite": "Einladen",
|
||||
"share": "Teilen",
|
||||
"subscribeTooltip": "Projektbenachrichtigungen abonnieren",
|
||||
"unsubscribeTooltip": "Projektbenachrichtigungen abmelden",
|
||||
"refreshTooltip": "Projektdaten aktualisieren",
|
||||
"settingsTooltip": "Projekteinstellungen öffnen",
|
||||
"saveAsTemplateTooltip": "Dieses Projekt als Vorlage speichern",
|
||||
"inviteTooltip": "Teammitglieder zu diesem Projekt einladen",
|
||||
"createTaskTooltip": "Eine neue Aufgabe erstellen",
|
||||
"importTaskTooltip": "Aufgabe aus Vorlage importieren",
|
||||
"navigateBackTooltip": "Zurück zur Projektliste",
|
||||
"projectStatusTooltip": "Projektstatus",
|
||||
"projectDatesInfo": "Projekt-Zeitleisten-Informationen",
|
||||
"projectCategoryTooltip": "Projektkategorie",
|
||||
"defaultTaskName": "Unbenannte Aufgabe"
|
||||
}
|
||||
|
||||
@@ -9,5 +9,6 @@
|
||||
"saveChanges": "Änderungen speichern",
|
||||
"profileJoinedText": "Vor einem Monat beigetreten",
|
||||
"profileLastUpdatedText": "Vor einem Monat aktualisiert",
|
||||
"avatarTooltip": "Klicken Sie zum Hochladen eines Avatars"
|
||||
"avatarTooltip": "Klicken Sie zum Hochladen eines Avatars",
|
||||
"title": "Profil-Einstellungen"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"title": "Teammitglieder",
|
||||
"nameColumn": "Name",
|
||||
"projectsColumn": "Projekte",
|
||||
"emailColumn": "E-Mail",
|
||||
@@ -40,5 +41,7 @@
|
||||
"ownerText": "Team-Besitzer",
|
||||
"addedText": "Hinzugefügt",
|
||||
"updatedText": "Aktualisiert",
|
||||
"noResultFound": "Geben Sie eine E-Mail-Adresse ein und drücken Sie Enter..."
|
||||
"noResultFound": "Geben Sie eine E-Mail-Adresse ein und drücken Sie Enter...",
|
||||
"jobTitlesFetchError": "Fehler beim Abrufen der Jobtitel",
|
||||
"invitationResent": "Einladung erfolgreich erneut gesendet!"
|
||||
}
|
||||
|
||||
16
worklenz-frontend/public/locales/de/settings/teams.json
Normal file
16
worklenz-frontend/public/locales/de/settings/teams.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"title": "Teams",
|
||||
"team": "Team",
|
||||
"teams": "Teams",
|
||||
"name": "Name",
|
||||
"created": "Erstellt",
|
||||
"ownsBy": "Gehört zu",
|
||||
"edit": "Bearbeiten",
|
||||
"editTeam": "Team bearbeiten",
|
||||
"pinTooltip": "Klicken Sie hier, um dies im Hauptmenü zu fixieren",
|
||||
"editTeamName": "Team-Name bearbeiten",
|
||||
"updateName": "Name aktualisieren",
|
||||
"namePlaceholder": "Name",
|
||||
"nameRequired": "Bitte geben Sie einen Namen ein",
|
||||
"updateFailed": "Änderung des Team-Namens fehlgeschlagen!"
|
||||
}
|
||||
@@ -26,4 +26,4 @@
|
||||
"add-sub-task": "+ Unteraufgabe hinzufügen",
|
||||
"refresh-sub-tasks": "Unteraufgaben aktualisieren"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"taskHeader": {
|
||||
"taskNamePlaceholder": "Aufgabe eingeben",
|
||||
"taskNamePlaceholder": "Geben Sie Ihre Aufgabe ein",
|
||||
"deleteTask": "Aufgabe löschen"
|
||||
},
|
||||
"taskInfoTab": {
|
||||
@@ -9,20 +9,29 @@
|
||||
"title": "Details",
|
||||
"task-key": "Aufgaben-Schlüssel",
|
||||
"phase": "Phase",
|
||||
"assignees": "Zugewiesene",
|
||||
"assignees": "Beauftragte",
|
||||
"due-date": "Fälligkeitsdatum",
|
||||
"time-estimation": "Zeitschätzung",
|
||||
"priority": "Priorität",
|
||||
"labels": "Labels",
|
||||
"billable": "Abrechenbar",
|
||||
"notify": "Benachrichtigen",
|
||||
"when-done-notify": "Bei Fertigstellung benachrichtigen",
|
||||
"when-done-notify": "Bei Abschluss benachrichtigen",
|
||||
"start-date": "Startdatum",
|
||||
"end-date": "Enddatum",
|
||||
"hide-start-date": "Startdatum ausblenden",
|
||||
"show-start-date": "Startdatum anzeigen",
|
||||
"hours": "Stunden",
|
||||
"minutes": "Minuten"
|
||||
"minutes": "Minuten",
|
||||
"progressValue": "Fortschrittswert",
|
||||
"progressValueTooltip": "Fortschritt in Prozent einstellen (0-100%)",
|
||||
"progressValueRequired": "Bitte geben Sie einen Fortschrittswert ein",
|
||||
"progressValueRange": "Fortschritt muss zwischen 0 und 100 liegen",
|
||||
"taskWeight": "Aufgabengewicht",
|
||||
"taskWeightTooltip": "Gewicht dieser Teilaufgabe festlegen (Prozent)",
|
||||
"taskWeightRequired": "Bitte geben Sie ein Aufgabengewicht ein",
|
||||
"taskWeightRange": "Gewicht muss zwischen 0 und 100 liegen",
|
||||
"recurring": "Wiederkehrend"
|
||||
},
|
||||
"labels": {
|
||||
"labelInputPlaceholder": "Suchen oder erstellen",
|
||||
@@ -30,29 +39,29 @@
|
||||
},
|
||||
"description": {
|
||||
"title": "Beschreibung",
|
||||
"placeholder": "Detaillierte Beschreibung hinzufügen..."
|
||||
"placeholder": "Detailliertere Beschreibung hinzufügen..."
|
||||
},
|
||||
"subTasks": {
|
||||
"title": "Unteraufgaben",
|
||||
"addSubTask": "+ Unteraufgabe hinzufügen",
|
||||
"addSubTaskInputPlaceholder": "Aufgabe eingeben und Enter drücken",
|
||||
"refreshSubTasks": "Unteraufgaben aktualisieren",
|
||||
"title": "Teilaufgaben",
|
||||
"addSubTask": "Teilaufgabe hinzufügen",
|
||||
"addSubTaskInputPlaceholder": "Geben Sie Ihre Aufgabe ein und drücken Sie Enter",
|
||||
"refreshSubTasks": "Teilaufgaben aktualisieren",
|
||||
"edit": "Bearbeiten",
|
||||
"delete": "Löschen",
|
||||
"confirmDeleteSubTask": "Sind Sie sicher, dass Sie diese Unteraufgabe löschen möchten?",
|
||||
"deleteSubTask": "Unteraufgabe löschen"
|
||||
"confirmDeleteSubTask": "Sind Sie sicher, dass Sie diese Teilaufgabe löschen möchten?",
|
||||
"deleteSubTask": "Teilaufgabe löschen"
|
||||
},
|
||||
"dependencies": {
|
||||
"title": "Abhängigkeiten",
|
||||
"addDependency": "+ Neue Abhängigkeit hinzufügen",
|
||||
"blockedBy": "Blockiert durch",
|
||||
"blockedBy": "Blockiert von",
|
||||
"searchTask": "Aufgabe suchen",
|
||||
"noTasksFound": "Keine Aufgaben gefunden",
|
||||
"confirmDeleteDependency": "Sind Sie sicher, dass Sie dies löschen möchten?"
|
||||
"confirmDeleteDependency": "Sind Sie sicher, dass Sie löschen möchten?"
|
||||
},
|
||||
"attachments": {
|
||||
"title": "Anhänge",
|
||||
"chooseOrDropFileToUpload": "Datei auswählen oder zum Hochladen ablegen",
|
||||
"chooseOrDropFileToUpload": "Datei zum Hochladen wählen oder ablegen",
|
||||
"uploading": "Wird hochgeladen..."
|
||||
},
|
||||
"comments": {
|
||||
@@ -60,19 +69,55 @@
|
||||
"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?"
|
||||
"confirmDeleteComment": "Sind Sie sicher, dass Sie diesen Kommentar löschen möchten?",
|
||||
"addCommentPlaceholder": "Kommentar hinzufügen...",
|
||||
"cancel": "Abbrechen",
|
||||
"commentButton": "Kommentieren",
|
||||
"attachFiles": "Dateien anhängen",
|
||||
"addMoreFiles": "Weitere Dateien hinzufügen",
|
||||
"selectedFiles": "Ausgewählte Dateien (Bis zu 25MB, Maximum {count})",
|
||||
"maxFilesError": "Sie können maximal {count} Dateien hochladen",
|
||||
"processFilesError": "Fehler beim Verarbeiten der Dateien",
|
||||
"addCommentError": "Bitte fügen Sie einen Kommentar hinzu oder hängen Sie Dateien an",
|
||||
"createdBy": "Erstellt {{time}} von {{user}}",
|
||||
"updatedTime": "Aktualisiert {{time}}"
|
||||
},
|
||||
"searchInputPlaceholder": "Nach Namen suchen",
|
||||
"pendingInvitation": "Einladung ausstehend"
|
||||
"searchInputPlaceholder": "Nach Name suchen",
|
||||
"pendingInvitation": "Ausstehende Einladung"
|
||||
},
|
||||
"taskTimeLogTab": {
|
||||
"title": "Zeiterfassung",
|
||||
"addTimeLog": "Neuen Zeiteintrag hinzufügen",
|
||||
"totalLogged": "Gesamt erfasst",
|
||||
"exportToExcel": "Nach Excel exportieren",
|
||||
"noTimeLogsFound": "Keine Zeiterfassungen gefunden"
|
||||
"noTimeLogsFound": "Keine Zeiteinträge gefunden",
|
||||
"timeLogForm": {
|
||||
"date": "Datum",
|
||||
"startTime": "Startzeit",
|
||||
"endTime": "Endzeit",
|
||||
"workDescription": "Arbeitsbeschreibung",
|
||||
"descriptionPlaceholder": "Beschreibung hinzufügen",
|
||||
"logTime": "Zeit erfassen",
|
||||
"updateTime": "Zeit aktualisieren",
|
||||
"cancel": "Abbrechen",
|
||||
"selectDateError": "Bitte wählen Sie ein Datum",
|
||||
"selectStartTimeError": "Bitte wählen Sie eine Startzeit",
|
||||
"selectEndTimeError": "Bitte wählen Sie eine Endzeit",
|
||||
"endTimeAfterStartError": "Endzeit muss nach der Startzeit liegen"
|
||||
}
|
||||
},
|
||||
"taskActivityLogTab": {
|
||||
"title": "Aktivitätsprotokoll"
|
||||
"title": "Aktivitätsprotokoll",
|
||||
"add": "HINZUFÜGEN",
|
||||
"remove": "ENTFERNEN",
|
||||
"none": "Keine",
|
||||
"weight": "Gewicht",
|
||||
"createdTask": "hat die Aufgabe erstellt."
|
||||
},
|
||||
"taskProgress": {
|
||||
"markAsDoneTitle": "Aufgabe als erledigt markieren?",
|
||||
"confirmMarkAsDone": "Ja, als erledigt markieren",
|
||||
"cancelMarkAsDone": "Nein, aktuellen Status beibehalten",
|
||||
"markAsDoneDescription": "Sie haben den Fortschritt auf 100% gesetzt. Möchten Sie den Aufgabenstatus auf \"Erledigt\" aktualisieren?"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,15 +28,15 @@
|
||||
"endDateText": "Enddatum",
|
||||
"dueDateText": "Fälligkeitsdatum",
|
||||
"duedateText": "Fälligkeitsdatum",
|
||||
"completedDateText": "Abschlussdatum",
|
||||
"completeddateText": "Abschlussdatum",
|
||||
"createdDateText": "Erstellungsdatum",
|
||||
"createddateText": "Erstellungsdatum",
|
||||
"completedDateText": "Abgeschlossen am",
|
||||
"completeddateText": "Abgeschlossen am",
|
||||
"createdDateText": "Erstellt am",
|
||||
"createddateText": "Erstellt am",
|
||||
"lastUpdatedText": "Zuletzt aktualisiert",
|
||||
"lastupdatedText": "Zuletzt aktualisiert",
|
||||
"reporterText": "Melder",
|
||||
"dueTimeText": "Fällige Zeit",
|
||||
"duetimeText": "Fällige Zeit",
|
||||
"reporterText": "Berichterstatter",
|
||||
"dueTimeText": "Fälligkeitszeit",
|
||||
"duetimeText": "Fälligkeitszeit",
|
||||
|
||||
"lowText": "Niedrig",
|
||||
"mediumText": "Mittel",
|
||||
@@ -54,6 +54,35 @@
|
||||
"category": "Kategorie",
|
||||
"selectCategory": "Kategorie auswählen",
|
||||
"pleaseEnterAName": "Bitte geben Sie einen Namen ein",
|
||||
"pleaseSelectACategory": "Bitte wählen Sie eine Kategorie aus",
|
||||
"create": "Erstellen"
|
||||
"pleaseSelectACategory": "Bitte wählen Sie eine Kategorie",
|
||||
"create": "Erstellen",
|
||||
|
||||
"searchTasks": "Aufgaben suchen...",
|
||||
"searchPlaceholder": "Suchen...",
|
||||
"fieldsText": "Felder",
|
||||
"loadingFilters": "Filter werden geladen...",
|
||||
"noOptionsFound": "Keine Optionen gefunden",
|
||||
"filtersActive": "Filter aktiv",
|
||||
"filterActive": "Filter aktiv",
|
||||
"clearAll": "Alle löschen",
|
||||
"clearing": "Wird gelöscht...",
|
||||
"cancel": "Abbrechen",
|
||||
"search": "Suchen",
|
||||
"groupedBy": "Gruppiert nach",
|
||||
"manage": "Verwalten",
|
||||
"manageStatuses": "Status verwalten",
|
||||
"managePhases": "Phasen verwalten",
|
||||
"dragToReorderStatuses": "Status sind nach Kategorien organisiert. Ziehen Sie, um innerhalb von Kategorien neu zu ordnen. Klicken Sie auf 'Status hinzufügen', um neue Status in jeder Kategorie zu erstellen.",
|
||||
"enterNewStatusName": "Neuen Status-Namen eingeben...",
|
||||
"addStatus": "Status hinzufügen",
|
||||
"noStatusesFound": "Keine Status in dieser Kategorie",
|
||||
"deleteStatus": "Status löschen",
|
||||
"deleteStatusConfirm": "Sind Sie sicher, dass Sie diesen Status löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
|
||||
"rename": "Umbenennen",
|
||||
"delete": "Löschen",
|
||||
"enterStatusName": "Status-Namen eingeben",
|
||||
"close": "Schließen",
|
||||
"cannotMoveStatus": "Status kann nicht verschoben werden",
|
||||
"cannotMoveStatusMessage": "Dieser Status kann nicht verschoben werden, da die Kategorie '{{categoryName}}' leer bleiben würde. Jede Kategorie muss mindestens einen Status haben.",
|
||||
"ok": "OK"
|
||||
}
|
||||
|
||||
@@ -36,9 +36,10 @@
|
||||
"selectText": "Auswählen",
|
||||
"labelsSelectorInputTip": "Enter drücken zum Erstellen!",
|
||||
|
||||
"addTaskText": "+ Aufgabe hinzufügen",
|
||||
"addTaskText": "Aufgabe hinzufügen",
|
||||
"addSubTaskText": "+ Unteraufgabe hinzufügen",
|
||||
"addTaskInputPlaceholder": "Aufgabe eingeben und Enter drücken",
|
||||
"noTasksInGroup": "Keine Aufgaben in dieser Gruppe",
|
||||
|
||||
"openButton": "Öffnen",
|
||||
"okButton": "OK",
|
||||
@@ -47,6 +48,9 @@
|
||||
"searchInputPlaceholder": "Suchen oder erstellen",
|
||||
"assigneeSelectorInviteButton": "Neues Mitglied per E-Mail einladen",
|
||||
"labelInputPlaceholder": "Suchen oder erstellen",
|
||||
"searchLabelsPlaceholder": "Labels suchen...",
|
||||
"createLabelButton": "\"{{name}}\" erstellen",
|
||||
"manageLabelsPath": "Einstellungen → Labels",
|
||||
|
||||
"pendingInvitation": "Einladung ausstehend",
|
||||
|
||||
@@ -59,5 +63,74 @@
|
||||
"convertToTask": "In Aufgabe umwandeln",
|
||||
"delete": "Löschen",
|
||||
"searchByNameInputPlaceholder": "Nach Namen suchen"
|
||||
},
|
||||
"setDueDate": "Fälligkeitsdatum festlegen",
|
||||
"setStartDate": "Startdatum festlegen",
|
||||
"clearDueDate": "Fälligkeitsdatum löschen",
|
||||
"clearStartDate": "Startdatum löschen",
|
||||
"dueDatePlaceholder": "Fälligkeitsdatum",
|
||||
"startDatePlaceholder": "Startdatum",
|
||||
|
||||
"emptyStates": {
|
||||
"noTaskGroups": "Keine Aufgabengruppen gefunden",
|
||||
"noTaskGroupsDescription": "Aufgaben werden hier angezeigt, wenn sie erstellt oder Filter angewendet werden.",
|
||||
"errorPrefix": "Fehler:",
|
||||
"dragTaskFallback": "Aufgabe"
|
||||
},
|
||||
|
||||
"customColumns": {
|
||||
"addCustomColumn": "Benutzerdefinierte Spalte hinzufügen",
|
||||
"customColumnHeader": "Benutzerdefinierte Spalte",
|
||||
"customColumnSettings": "Einstellungen für benutzerdefinierte Spalte",
|
||||
"noCustomValue": "Kein Wert",
|
||||
"peopleField": "Personenfeld",
|
||||
"noDate": "Kein Datum",
|
||||
"unsupportedField": "Nicht unterstützter Feldtyp",
|
||||
|
||||
"modal": {
|
||||
"addFieldTitle": "Feld hinzufügen",
|
||||
"editFieldTitle": "Feld bearbeiten",
|
||||
"fieldTitle": "Feldtitel",
|
||||
"fieldTitleRequired": "Feldtitel ist erforderlich",
|
||||
"columnTitlePlaceholder": "Spaltentitel",
|
||||
"type": "Typ",
|
||||
"deleteConfirmTitle": "Sind Sie sicher, dass Sie diese benutzerdefinierte Spalte löschen möchten?",
|
||||
"deleteConfirmDescription": "Diese Aktion kann nicht rückgängig gemacht werden. Alle mit dieser Spalte verbundenen Daten werden dauerhaft gelöscht.",
|
||||
"deleteButton": "Löschen",
|
||||
"cancelButton": "Abbrechen",
|
||||
"createButton": "Erstellen",
|
||||
"updateButton": "Aktualisieren",
|
||||
"createSuccessMessage": "Benutzerdefinierte Spalte erfolgreich erstellt",
|
||||
"updateSuccessMessage": "Benutzerdefinierte Spalte erfolgreich aktualisiert",
|
||||
"deleteSuccessMessage": "Benutzerdefinierte Spalte erfolgreich gelöscht",
|
||||
"deleteErrorMessage": "Fehler beim Löschen der benutzerdefinierten Spalte",
|
||||
"createErrorMessage": "Fehler beim Erstellen der benutzerdefinierten Spalte",
|
||||
"updateErrorMessage": "Fehler beim Aktualisieren der benutzerdefinierten Spalte"
|
||||
},
|
||||
|
||||
"fieldTypes": {
|
||||
"people": "Personen",
|
||||
"number": "Zahl",
|
||||
"date": "Datum",
|
||||
"selection": "Auswahl",
|
||||
"checkbox": "Kontrollkästchen",
|
||||
"labels": "Etiketten",
|
||||
"key": "Schlüssel",
|
||||
"formula": "Formel"
|
||||
}
|
||||
},
|
||||
|
||||
"indicators": {
|
||||
"tooltips": {
|
||||
"subtasks": "{{count}} Unteraufgabe",
|
||||
"subtasks_plural": "{{count}} Unteraufgaben",
|
||||
"comments": "{{count}} Kommentar",
|
||||
"comments_plural": "{{count}} Kommentare",
|
||||
"attachments": "{{count}} Anhang",
|
||||
"attachments_plural": "{{count}} Anhänge",
|
||||
"subscribers": "Aufgabe hat Abonnenten",
|
||||
"dependencies": "Aufgabe hat Abhängigkeiten",
|
||||
"recurring": "Wiederkehrende Aufgabe"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
39
worklenz-frontend/public/locales/de/task-management.json
Normal file
39
worklenz-frontend/public/locales/de/task-management.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"noTasksInGroup": "Keine Aufgaben in dieser Gruppe",
|
||||
"noTasksInGroupDescription": "Fügen Sie eine Aufgabe hinzu, um zu beginnen",
|
||||
"addFirstTask": "Fügen Sie Ihre erste Aufgabe hinzu",
|
||||
"openTask": "Öffnen",
|
||||
"subtask": "Unteraufgabe",
|
||||
"subtasks": "Unteraufgaben",
|
||||
"comment": "Kommentar",
|
||||
"comments": "Kommentare",
|
||||
"attachment": "Anhang",
|
||||
"attachments": "Anhänge",
|
||||
"enterSubtaskName": "Geben Sie den Namen der Unteraufgabe ein...",
|
||||
"add": "Hinzufügen",
|
||||
"cancel": "Abbrechen",
|
||||
"renameGroup": "Gruppe umbenennen",
|
||||
"renameStatus": "Status umbenennen",
|
||||
"renamePhase": "Phase umbenennen",
|
||||
"changeCategory": "Kategorie ändern",
|
||||
"clickToEditGroupName": "Klicken Sie, um den Gruppennamen zu bearbeiten",
|
||||
"enterGroupName": "Geben Sie den Gruppennamen ein",
|
||||
"todo": "Zu erledigen",
|
||||
"inProgress": "In Bearbeitung",
|
||||
"done": "Erledigt",
|
||||
"defaultTaskName": "Unbenannte Aufgabe",
|
||||
|
||||
"indicators": {
|
||||
"tooltips": {
|
||||
"subtasks": "{{count}} Unteraufgabe",
|
||||
"subtasks_plural": "{{count}} Unteraufgaben",
|
||||
"comments": "{{count}} Kommentar",
|
||||
"comments_plural": "{{count}} Kommentare",
|
||||
"attachments": "{{count}} Anhang",
|
||||
"attachments_plural": "{{count}} Anhänge",
|
||||
"subscribers": "Aufgabe hat Abonnenten",
|
||||
"dependencies": "Aufgabe hat Abhängigkeiten",
|
||||
"recurring": "Wiederkehrende Aufgabe"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,8 +17,25 @@
|
||||
"createTaskTemplate": "Aufgabenvorlage erstellen",
|
||||
"apply": "Anwenden",
|
||||
"createLabel": "+ Label erstellen",
|
||||
"searchOrCreateLabel": "Label suchen oder erstellen...",
|
||||
"hitEnterToCreate": "Enter drücken zum Erstellen",
|
||||
"labelExists": "Label existiert bereits",
|
||||
"pendingInvitation": "Einladung ausstehend",
|
||||
"noMatchingLabels": "Keine passenden Labels",
|
||||
"noLabels": "Keine Labels"
|
||||
"noLabels": "Keine Labels",
|
||||
"CHANGE_STATUS": "Status ändern",
|
||||
"CHANGE_PRIORITY": "Priorität ändern",
|
||||
"CHANGE_PHASE": "Phase ändern",
|
||||
"ADD_LABELS": "Labels hinzufügen",
|
||||
"ASSIGN_TO_ME": "Mir zuweisen",
|
||||
"ASSIGN_MEMBERS": "Mitglieder zuweisen",
|
||||
"ARCHIVE": "Archivieren",
|
||||
"DELETE": "Löschen",
|
||||
"CANCEL": "Abbrechen",
|
||||
"CLEAR_SELECTION": "Auswahl löschen",
|
||||
"TASKS_SELECTED": "{{count}} Aufgabe ausgewählt",
|
||||
"TASKS_SELECTED_plural": "{{count}} Aufgaben ausgewählt",
|
||||
"DELETE_TASKS_CONFIRM": "{{count}} Aufgabe löschen?",
|
||||
"DELETE_TASKS_CONFIRM_plural": "{{count}} Aufgaben löschen?",
|
||||
"DELETE_TASKS_WARNING": "Diese Aktion kann nicht rückgängig gemacht werden."
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"paymentMethod": "Payment Method",
|
||||
"status": "Status",
|
||||
"ltdUsers": "You can add up to {{ltd_users}} users.",
|
||||
|
||||
|
||||
"totalSeats": "Total seats",
|
||||
"availableSeats": "Available seats",
|
||||
"addMoreSeats": "Add more seats",
|
||||
@@ -103,11 +103,19 @@
|
||||
"perMonthPerUser": "per user/month",
|
||||
"viewInvoice": "View Invoice",
|
||||
"switchToFreePlan": "Switch to Free Plan",
|
||||
|
||||
|
||||
"expirestoday": "today",
|
||||
"expirestomorrow": "tomorrow",
|
||||
"expiredDaysAgo": "{{days}} days ago",
|
||||
|
||||
|
||||
"continueWith": "Continue with {{plan}}",
|
||||
"changeToPlan": "Change to {{plan}}"
|
||||
"changeToPlan": "Change to {{plan}}",
|
||||
"creditPlan": "Credit Plan",
|
||||
"customPlan": "Custom Plan",
|
||||
"planValidTill": "Your plan is valid till {{date}}",
|
||||
"purchaseSeatsText": "To continue, you'll need to purchase additional seats.",
|
||||
"currentSeatsText": "You currently have {{seats}} seats available.",
|
||||
"selectSeatsText": "Please select the number of additional seats to purchase.",
|
||||
"purchase": "Purchase",
|
||||
"contactSales": "Contact sales"
|
||||
}
|
||||
|
||||
@@ -29,5 +29,7 @@
|
||||
"role": "Role",
|
||||
"owner": "Owner",
|
||||
"admin": "Admin",
|
||||
"member": "Member"
|
||||
"member": "Member",
|
||||
"cannotChangeOwnerRole": "Owner role cannot be changed",
|
||||
"pendingInvitation": "Pending invitation"
|
||||
}
|
||||
|
||||
@@ -17,7 +17,18 @@
|
||||
"unarchive": "Unarchive",
|
||||
"archiveConfirm": "Are you sure you want to archive this project?",
|
||||
"unarchiveConfirm": "Are you sure you want to unarchive this project?",
|
||||
"yes": "Yes",
|
||||
"no": "No",
|
||||
"clickToFilter": "Click to filter by",
|
||||
"noProjects": "No projects found",
|
||||
"addToFavourites": "Add to favourites"
|
||||
"addToFavourites": "Add to favourites",
|
||||
"list": "List",
|
||||
"group": "Group",
|
||||
"listView": "List View",
|
||||
"groupView": "Group View",
|
||||
"groupBy": {
|
||||
"category": "Category",
|
||||
"client": "Client"
|
||||
},
|
||||
"noPermission": "You don't have permission to perform this action"
|
||||
}
|
||||
|
||||
@@ -19,5 +19,15 @@
|
||||
"archive": "Archive",
|
||||
|
||||
"newTaskNamePlaceholder": "Write a task Name",
|
||||
"newSubtaskNamePlaceholder": "Write a subtask Name"
|
||||
"newSubtaskNamePlaceholder": "Write a subtask Name",
|
||||
"untitledSection": "Untitled section",
|
||||
"unmapped": "Unmapped",
|
||||
"clickToChangeDate": "Click to change date",
|
||||
"noDueDate": "No due date",
|
||||
"save": "Save",
|
||||
"clear": "Clear",
|
||||
"nextWeek": "Next week",
|
||||
"noSubtasks": "No subtasks",
|
||||
"showSubtasks": "Show subtasks",
|
||||
"hideSubtasks": "Hide subtasks"
|
||||
}
|
||||
|
||||
@@ -1,7 +1,24 @@
|
||||
{
|
||||
"configurePhases": "Configure Phases",
|
||||
"phaseLabel": "Phase Label",
|
||||
"enterPhaseName": "Enter a name for phase label",
|
||||
"addOption": "Add Option",
|
||||
"phaseOptions": "Phase Options:"
|
||||
}
|
||||
"configurePhases": "Configure Phases",
|
||||
"configure": "Configure",
|
||||
"phaseLabel": "Phase Label",
|
||||
"enterPhaseName": "Enter phase name",
|
||||
"addOption": "Add Option",
|
||||
"phaseOptions": "Phase Options",
|
||||
"optionsText": "Options",
|
||||
"dragToReorderPhases": "Drag phases to reorder them. Each phase can have a different color.",
|
||||
"enterNewPhaseName": "Enter new phase name...",
|
||||
"addPhase": "Add Phase",
|
||||
"noPhasesFound": "No phases found",
|
||||
"no": "No",
|
||||
"found": "found",
|
||||
"deletePhase": "Delete Phase",
|
||||
"deletePhaseConfirm": "Are you sure you want to delete this phase? This action cannot be undone.",
|
||||
"rename": "Rename",
|
||||
"delete": "Delete",
|
||||
"create": "Create",
|
||||
"cancel": "Cancel",
|
||||
"selectColor": "Select color",
|
||||
"managePhases": "Manage Phases",
|
||||
"close": "Close"
|
||||
}
|
||||
|
||||
@@ -38,5 +38,15 @@
|
||||
"createClient": "Create client",
|
||||
"searchInputPlaceholder": "Search by name or email",
|
||||
"hoursPerDayValidationMessage": "Hours per day must be a number between 1 and 24",
|
||||
"noPermission": "No permission"
|
||||
"workingDaysValidationMessage": "Working days must be a positive number",
|
||||
"manDaysValidationMessage": "Man days must be a positive number",
|
||||
"noPermission": "No permission",
|
||||
"progressSettings": "Progress Settings",
|
||||
"manualProgress": "Manual Progress",
|
||||
"manualProgressTooltip": "Allow manual progress updates for tasks without subtasks",
|
||||
"weightedProgress": "Weighted Progress",
|
||||
"weightedProgressTooltip": "Calculate progress based on subtask weights",
|
||||
"timeProgress": "Time-based Progress",
|
||||
"timeProgressTooltip": "Calculate progress based on estimated time",
|
||||
"enterProjectKey": "Enter project key"
|
||||
}
|
||||
|
||||
14
worklenz-frontend/public/locales/en/project-view.json
Normal file
14
worklenz-frontend/public/locales/en/project-view.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"taskList": "Task List",
|
||||
"board": "Board",
|
||||
"insights": "Insights",
|
||||
"files": "Files",
|
||||
"members": "Members",
|
||||
"updates": "Updates",
|
||||
"projectView": "Project View",
|
||||
"loading": "Loading project...",
|
||||
"error": "Error loading project",
|
||||
"pinnedTab": "Pinned as default tab",
|
||||
"pinTab": "Pin as default tab",
|
||||
"unpinTab": "Unpin default tab"
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"importTaskTemplate": "Import Task Template",
|
||||
"templateName": "Template Name",
|
||||
"templateDescription": "Template Description",
|
||||
"selectedTasks": "Selected Tasks",
|
||||
"tasks": "Tasks",
|
||||
"templates": "Templates",
|
||||
"remove": "Remove",
|
||||
"cancel": "Cancel",
|
||||
"import": "Import"
|
||||
"importTaskTemplate": "Import Task Template",
|
||||
"templateName": "Template Name",
|
||||
"templateDescription": "Template Description",
|
||||
"selectedTasks": "Selected Tasks",
|
||||
"tasks": "Tasks",
|
||||
"templates": "Templates",
|
||||
"remove": "Remove",
|
||||
"cancel": "Cancel",
|
||||
"import": "Import"
|
||||
}
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
{
|
||||
"title": "Project Members",
|
||||
"searchLabel": "Add members by adding their name or email",
|
||||
"searchPlaceholder": "Type name or email",
|
||||
"inviteAsAMember": "Invite as a member",
|
||||
"inviteNewMemberByEmail": "Invite new member by email"
|
||||
|
||||
}
|
||||
"title": "Project Members",
|
||||
"searchLabel": "Add members by adding their name or email",
|
||||
"searchPlaceholder": "Type name or email",
|
||||
"inviteAsAMember": "Invite as a member",
|
||||
"inviteNewMemberByEmail": "Invite new member by email"
|
||||
}
|
||||
|
||||
@@ -1,13 +1,31 @@
|
||||
{
|
||||
"importTasks": "Import tasks",
|
||||
"createTask": "Create task",
|
||||
"settings": "Settings",
|
||||
"subscribe": "Subscribe",
|
||||
"unsubscribe": "Unsubscribe",
|
||||
"deleteProject": "Delete project",
|
||||
"startDate": "Start date",
|
||||
"endDate": "End date",
|
||||
"projectSettings": "Project settings",
|
||||
"projectSummary": "Project summary",
|
||||
"receiveProjectSummary": "Receive a project summary every evening."
|
||||
}
|
||||
"importTasks": "Import tasks",
|
||||
"importTask": "Import task",
|
||||
"createTask": "Create task",
|
||||
"settings": "Settings",
|
||||
"subscribe": "Subscribe",
|
||||
"unsubscribe": "Unsubscribe",
|
||||
"deleteProject": "Delete project",
|
||||
"startDate": "Start date",
|
||||
"endDate": "End date",
|
||||
"projectSettings": "Project settings",
|
||||
"projectSummary": "Project summary",
|
||||
"receiveProjectSummary": "Receive a project summary every evening.",
|
||||
"refreshProject": "Refresh project",
|
||||
"saveAsTemplate": "Save as template",
|
||||
"invite": "Invite",
|
||||
"share": "Share",
|
||||
"subscribeTooltip": "Subscribe to project notifications",
|
||||
"unsubscribeTooltip": "Unsubscribe from project notifications",
|
||||
"refreshTooltip": "Refresh project data",
|
||||
"settingsTooltip": "Open project settings",
|
||||
"saveAsTemplateTooltip": "Save this project as a template",
|
||||
"inviteTooltip": "Invite team members to this project",
|
||||
"createTaskTooltip": "Create a new task",
|
||||
"importTaskTooltip": "Import task from template",
|
||||
"navigateBackTooltip": "Go back to projects list",
|
||||
"projectStatusTooltip": "Project status",
|
||||
"projectDatesInfo": "Project timeline information",
|
||||
"projectCategoryTooltip": "Project category",
|
||||
"defaultTaskName": "Untitled Task"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"title": "Appearance",
|
||||
"darkMode": "Dark Mode",
|
||||
"darkModeDescription": "Switch between light and dark mode to customize your viewing experience."
|
||||
}
|
||||
@@ -9,5 +9,6 @@
|
||||
"saveChanges": "Save Changes",
|
||||
"profileJoinedText": "Joined a month ago",
|
||||
"profileLastUpdatedText": "Last updated a month ago",
|
||||
"avatarTooltip": "Click to upload an avatar"
|
||||
"avatarTooltip": "Click to upload an avatar",
|
||||
"title": "Profile Settings"
|
||||
}
|
||||
|
||||
@@ -10,5 +10,6 @@
|
||||
"team-members": "Team Members",
|
||||
"teams": "Teams",
|
||||
"change-password": "Change Password",
|
||||
"language-and-region": "Language and Region"
|
||||
"language-and-region": "Language and Region",
|
||||
"appearance": "Appearance"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"title": "Team Members",
|
||||
"nameColumn": "Name",
|
||||
"projectsColumn": "Projects",
|
||||
"emailColumn": "Email",
|
||||
@@ -40,5 +41,7 @@
|
||||
"ownerText": "Team Owner",
|
||||
"addedText": "Added",
|
||||
"updatedText": "Updated",
|
||||
"noResultFound": "Type an email address and hit enter..."
|
||||
"noResultFound": "Type an email address and hit enter...",
|
||||
"jobTitlesFetchError": "Failed to fetch job titles",
|
||||
"invitationResent": "Invitation resent successfully!"
|
||||
}
|
||||
|
||||
16
worklenz-frontend/public/locales/en/settings/teams.json
Normal file
16
worklenz-frontend/public/locales/en/settings/teams.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"title": "Teams",
|
||||
"team": "Team",
|
||||
"teams": "Teams",
|
||||
"name": "Name",
|
||||
"created": "Created",
|
||||
"ownsBy": "Owns By",
|
||||
"edit": "Edit",
|
||||
"editTeam": "Edit Team",
|
||||
"pinTooltip": "Click to pin this into the main menu",
|
||||
"editTeamName": "Edit Team Name",
|
||||
"updateName": "Update Name",
|
||||
"namePlaceholder": "Name",
|
||||
"nameRequired": "Please enter a Name",
|
||||
"updateFailed": "Team name change failed!"
|
||||
}
|
||||
@@ -15,7 +15,8 @@
|
||||
"hide-start-date": "Hide Start Date",
|
||||
"show-start-date": "Show Start Date",
|
||||
"hours": "Hours",
|
||||
"minutes": "Minutes"
|
||||
"minutes": "Minutes",
|
||||
"recurring": "Recurring"
|
||||
},
|
||||
"description": {
|
||||
"title": "Description",
|
||||
@@ -23,7 +24,7 @@
|
||||
},
|
||||
"subTasks": {
|
||||
"title": "Sub Tasks",
|
||||
"add-sub-task": "+ Add Sub Task",
|
||||
"add-sub-task": "Add Sub Task",
|
||||
"refresh-sub-tasks": "Refresh Sub Tasks"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"recurring": "Recurring",
|
||||
"recurringTaskConfiguration": "Recurring task configuration",
|
||||
"repeats": "Repeats",
|
||||
"daily": "Daily",
|
||||
"weekly": "Weekly",
|
||||
"everyXDays": "Every X Days",
|
||||
"everyXWeeks": "Every X Weeks",
|
||||
"everyXMonths": "Every X Months",
|
||||
"monthly": "Monthly",
|
||||
"selectDaysOfWeek": "Select Days of the Week",
|
||||
"mon": "Mon",
|
||||
"tue": "Tue",
|
||||
"wed": "Wed",
|
||||
"thu": "Thu",
|
||||
"fri": "Fri",
|
||||
"sat": "Sat",
|
||||
"sun": "Sun",
|
||||
"monthlyRepeatType": "Monthly repeat type",
|
||||
"onSpecificDate": "On a specific date",
|
||||
"onSpecificDay": "On a specific day",
|
||||
"dateOfMonth": "Date of the month",
|
||||
"weekOfMonth": "Week of the month",
|
||||
"dayOfWeek": "Day of the week",
|
||||
"first": "First",
|
||||
"second": "Second",
|
||||
"third": "Third",
|
||||
"fourth": "Fourth",
|
||||
"last": "Last",
|
||||
"intervalDays": "Interval (days)",
|
||||
"intervalWeeks": "Interval (weeks)",
|
||||
"intervalMonths": "Interval (months)",
|
||||
"saveChanges": "Save Changes"
|
||||
}
|
||||
@@ -22,7 +22,16 @@
|
||||
"hide-start-date": "Hide Start Date",
|
||||
"show-start-date": "Show Start Date",
|
||||
"hours": "Hours",
|
||||
"minutes": "Minutes"
|
||||
"minutes": "Minutes",
|
||||
"progressValue": "Progress Value",
|
||||
"progressValueTooltip": "Set the progress percentage (0-100%)",
|
||||
"progressValueRequired": "Please enter a progress value",
|
||||
"progressValueRange": "Progress must be between 0 and 100",
|
||||
"taskWeight": "Task Weight",
|
||||
"taskWeightTooltip": "Set the weight of this subtask (percentage)",
|
||||
"taskWeightRequired": "Please enter a task weight",
|
||||
"taskWeightRange": "Weight must be between 0 and 100",
|
||||
"recurring": "Recurring"
|
||||
},
|
||||
"labels": {
|
||||
"labelInputPlaceholder": "Search or create",
|
||||
@@ -34,7 +43,7 @@
|
||||
},
|
||||
"subTasks": {
|
||||
"title": "Sub Tasks",
|
||||
"addSubTask": "+ Add Sub Task",
|
||||
"addSubTask": "Add Sub Task",
|
||||
"addSubTaskInputPlaceholder": "Type your task and hit enter",
|
||||
"refreshSubTasks": "Refresh Sub Tasks",
|
||||
"edit": "Edit",
|
||||
@@ -60,7 +69,18 @@
|
||||
"addComment": "+ Add new comment",
|
||||
"noComments": "No comments yet. Be the first to comment!",
|
||||
"delete": "Delete",
|
||||
"confirmDeleteComment": "Are you sure you want to delete this comment?"
|
||||
"confirmDeleteComment": "Are you sure you want to delete this comment?",
|
||||
"addCommentPlaceholder": "Add a comment...",
|
||||
"cancel": "Cancel",
|
||||
"commentButton": "Comment",
|
||||
"attachFiles": "Attach files",
|
||||
"addMoreFiles": "Add more files",
|
||||
"selectedFiles": "Selected Files (Up to 25MB, Maximum of {count})",
|
||||
"maxFilesError": "You can only upload a maximum of {count} files",
|
||||
"processFilesError": "Failed to process files",
|
||||
"addCommentError": "Please add a comment or attach files",
|
||||
"createdBy": "Created {{time}} by {{user}}",
|
||||
"updatedTime": "Updated {{time}}"
|
||||
},
|
||||
"searchInputPlaceholder": "Search by name",
|
||||
"pendingInvitation": "Pending Invitation"
|
||||
@@ -70,9 +90,34 @@
|
||||
"addTimeLog": "Add new time log",
|
||||
"totalLogged": "Total Logged",
|
||||
"exportToExcel": "Export to Excel",
|
||||
"noTimeLogsFound": "No time logs found"
|
||||
"noTimeLogsFound": "No time logs found",
|
||||
"timeLogForm": {
|
||||
"date": "Date",
|
||||
"startTime": "Start Time",
|
||||
"endTime": "End Time",
|
||||
"workDescription": "Work Description",
|
||||
"descriptionPlaceholder": "Add a description",
|
||||
"logTime": "Log time",
|
||||
"updateTime": "Update time",
|
||||
"cancel": "Cancel",
|
||||
"selectDateError": "Please select a date",
|
||||
"selectStartTimeError": "Please select start time",
|
||||
"selectEndTimeError": "Please select end time",
|
||||
"endTimeAfterStartError": "End time must be after start time"
|
||||
}
|
||||
},
|
||||
"taskActivityLogTab": {
|
||||
"title": "Activity Log"
|
||||
"title": "Activity Log",
|
||||
"add": "ADD",
|
||||
"remove": "REMOVE",
|
||||
"none": "None",
|
||||
"weight": "Weight",
|
||||
"createdTask": "created the task."
|
||||
},
|
||||
"taskProgress": {
|
||||
"markAsDoneTitle": "Mark Task as Done?",
|
||||
"confirmMarkAsDone": "Yes, mark as done",
|
||||
"cancelMarkAsDone": "No, keep current status",
|
||||
"markAsDoneDescription": "You've set the progress to 100%. Would you like to update the task status to \"Done\"?"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,5 +55,34 @@
|
||||
"selectCategory": "Select a category",
|
||||
"pleaseEnterAName": "Please enter a name",
|
||||
"pleaseSelectACategory": "Please select a category",
|
||||
"create": "Create"
|
||||
"create": "Create",
|
||||
|
||||
"searchTasks": "Search tasks...",
|
||||
"searchPlaceholder": "Search...",
|
||||
"fieldsText": "Fields",
|
||||
"loadingFilters": "Loading filters...",
|
||||
"noOptionsFound": "No options found",
|
||||
"filtersActive": "filters active",
|
||||
"filterActive": "filter active",
|
||||
"clearAll": "Clear all",
|
||||
"clearing": "Clearing...",
|
||||
"cancel": "Cancel",
|
||||
"search": "Search",
|
||||
"groupedBy": "Grouped by",
|
||||
"manage": "Manage",
|
||||
"manageStatuses": "Manage Statuses",
|
||||
"managePhases": "Manage Phases",
|
||||
"dragToReorderStatuses": "Statuses are organized by categories. Drag to reorder within categories. Click 'Add Status' to create new statuses in each category.",
|
||||
"enterNewStatusName": "Enter new status name...",
|
||||
"addStatus": "Add Status",
|
||||
"noStatusesFound": "No statuses in this category",
|
||||
"deleteStatus": "Delete Status",
|
||||
"deleteStatusConfirm": "Are you sure you want to delete this status? This action cannot be undone.",
|
||||
"rename": "Rename",
|
||||
"delete": "Delete",
|
||||
"enterStatusName": "Enter status name",
|
||||
"close": "Close",
|
||||
"cannotMoveStatus": "Cannot Move Status",
|
||||
"cannotMoveStatusMessage": "Cannot move this status because it would leave the '{{categoryName}}' category empty. Each category must have at least one status.",
|
||||
"ok": "OK"
|
||||
}
|
||||
|
||||
@@ -36,9 +36,10 @@
|
||||
"selectText": "Select",
|
||||
"labelsSelectorInputTip": "Hit enter to create!",
|
||||
|
||||
"addTaskText": "+ Add Task",
|
||||
"addSubTaskText": "+ Add Sub Task",
|
||||
"addTaskText": "Add Task",
|
||||
"addSubTaskText": "Add Sub Task",
|
||||
"addTaskInputPlaceholder": "Type your task and hit enter",
|
||||
"noTasksInGroup": "No tasks in this group",
|
||||
|
||||
"openButton": "Open",
|
||||
"okButton": "Ok",
|
||||
@@ -47,7 +48,10 @@
|
||||
"searchInputPlaceholder": "Search or create",
|
||||
"assigneeSelectorInviteButton": "Invite a new member by email",
|
||||
"labelInputPlaceholder": "Search or create",
|
||||
|
||||
"searchLabelsPlaceholder": "Search labels...",
|
||||
"createLabelButton": "Create \"{{name}}\"",
|
||||
"manageLabelsPath": "Settings → Labels",
|
||||
|
||||
"pendingInvitation": "Pending Invitation",
|
||||
|
||||
"contextMenu": {
|
||||
@@ -59,5 +63,74 @@
|
||||
"convertToTask": "Convert to Task",
|
||||
"delete": "Delete",
|
||||
"searchByNameInputPlaceholder": "Search by name"
|
||||
},
|
||||
"setDueDate": "Set due date",
|
||||
"setStartDate": "Set start date",
|
||||
"clearDueDate": "Clear due date",
|
||||
"clearStartDate": "Clear start date",
|
||||
"dueDatePlaceholder": "Due Date",
|
||||
"startDatePlaceholder": "Start Date",
|
||||
|
||||
"emptyStates": {
|
||||
"noTaskGroups": "No task groups found",
|
||||
"noTaskGroupsDescription": "Tasks will appear here when they are created or when filters are applied.",
|
||||
"errorPrefix": "Error:",
|
||||
"dragTaskFallback": "Task"
|
||||
},
|
||||
|
||||
"customColumns": {
|
||||
"addCustomColumn": "Add a custom column",
|
||||
"customColumnHeader": "Custom Column",
|
||||
"customColumnSettings": "Custom column settings",
|
||||
"noCustomValue": "No value",
|
||||
"peopleField": "People field",
|
||||
"noDate": "No date",
|
||||
"unsupportedField": "Unsupported field type",
|
||||
|
||||
"modal": {
|
||||
"addFieldTitle": "Add field",
|
||||
"editFieldTitle": "Edit field",
|
||||
"fieldTitle": "Field title",
|
||||
"fieldTitleRequired": "Field title is required",
|
||||
"columnTitlePlaceholder": "Column title",
|
||||
"type": "Type",
|
||||
"deleteConfirmTitle": "Are you sure you want to delete this custom column?",
|
||||
"deleteConfirmDescription": "This action cannot be undone. All data associated with this column will be permanently deleted.",
|
||||
"deleteButton": "Delete",
|
||||
"cancelButton": "Cancel",
|
||||
"createButton": "Create",
|
||||
"updateButton": "Update",
|
||||
"createSuccessMessage": "Custom column created successfully",
|
||||
"updateSuccessMessage": "Custom column updated successfully",
|
||||
"deleteSuccessMessage": "Custom column deleted successfully",
|
||||
"deleteErrorMessage": "Failed to delete custom column",
|
||||
"createErrorMessage": "Failed to create custom column",
|
||||
"updateErrorMessage": "Failed to update custom column"
|
||||
},
|
||||
|
||||
"fieldTypes": {
|
||||
"people": "People",
|
||||
"number": "Number",
|
||||
"date": "Date",
|
||||
"selection": "Selection",
|
||||
"checkbox": "Checkbox",
|
||||
"labels": "Labels",
|
||||
"key": "Key",
|
||||
"formula": "Formula"
|
||||
}
|
||||
},
|
||||
|
||||
"indicators": {
|
||||
"tooltips": {
|
||||
"subtasks": "{{count}} subtask",
|
||||
"subtasks_plural": "{{count}} subtasks",
|
||||
"comments": "{{count}} comment",
|
||||
"comments_plural": "{{count}} comments",
|
||||
"attachments": "{{count}} attachment",
|
||||
"attachments_plural": "{{count}} attachments",
|
||||
"subscribers": "Task has subscribers",
|
||||
"dependencies": "Task has dependencies",
|
||||
"recurring": "Recurring task"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
39
worklenz-frontend/public/locales/en/task-management.json
Normal file
39
worklenz-frontend/public/locales/en/task-management.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"noTasksInGroup": "No tasks in this group",
|
||||
"noTasksInGroupDescription": "Add a task to get started",
|
||||
"addFirstTask": "Add your first task",
|
||||
"openTask": "Open",
|
||||
"subtask": "subtask",
|
||||
"subtasks": "subtasks",
|
||||
"comment": "comment",
|
||||
"comments": "comments",
|
||||
"attachment": "attachment",
|
||||
"attachments": "attachments",
|
||||
"enterSubtaskName": "Enter subtask name...",
|
||||
"add": "Add",
|
||||
"cancel": "Cancel",
|
||||
"renameGroup": "Rename Group",
|
||||
"renameStatus": "Rename Status",
|
||||
"renamePhase": "Rename Phase",
|
||||
"changeCategory": "Change Category",
|
||||
"clickToEditGroupName": "Click to edit group name",
|
||||
"enterGroupName": "Enter group name",
|
||||
"todo": "To Do",
|
||||
"inProgress": "Doing",
|
||||
"done": "Done",
|
||||
"defaultTaskName": "Untitled Task",
|
||||
|
||||
"indicators": {
|
||||
"tooltips": {
|
||||
"subtasks": "{{count}} subtask",
|
||||
"subtasks_plural": "{{count}} subtasks",
|
||||
"comments": "{{count}} comment",
|
||||
"comments_plural": "{{count}} comments",
|
||||
"attachments": "{{count}} attachment",
|
||||
"attachments_plural": "{{count}} attachments",
|
||||
"subscribers": "Task has subscribers",
|
||||
"dependencies": "Task has dependencies",
|
||||
"recurring": "Recurring task"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@
|
||||
"cancelText": "Cancel",
|
||||
"saveText": "Save",
|
||||
"templateNameText": "Template Name",
|
||||
"templateNameRequired": "Template name is required",
|
||||
"selectedTasks": "Selected Tasks",
|
||||
"removeTask": "Remove",
|
||||
"cancelButton": "Cancel",
|
||||
|
||||
@@ -1,24 +1,41 @@
|
||||
{
|
||||
"taskSelected": "task selected",
|
||||
"tasksSelected": "tasks selected",
|
||||
"changeStatus": "Change Status/ Prioriy/ Phases",
|
||||
"changeLabel": "Change Label",
|
||||
"assignToMe": "Assign to me",
|
||||
"changeAssignees": "Change Assignees",
|
||||
"archive": "Archive",
|
||||
"unarchive": "Unarchive",
|
||||
"delete": "Delete",
|
||||
"moreOptions": "More options",
|
||||
"deselectAll": "Deselect all",
|
||||
"status": "Status",
|
||||
"priority": "Priority",
|
||||
"phase": "Phase",
|
||||
"member": "Member",
|
||||
"createTaskTemplate": "Create Task Template",
|
||||
"apply": "Apply",
|
||||
"createLabel": "+ Create Label",
|
||||
"hitEnterToCreate": "Press Enter to create",
|
||||
"pendingInvitation": "Pending Invitation",
|
||||
"noMatchingLabels": "No matching labels",
|
||||
"noLabels": "No labels"
|
||||
}
|
||||
"taskSelected": "task selected",
|
||||
"tasksSelected": "tasks selected",
|
||||
"changeStatus": "Change Status/ Prioriy/ Phases",
|
||||
"changeLabel": "Change Label",
|
||||
"assignToMe": "Assign to me",
|
||||
"changeAssignees": "Change Assignees",
|
||||
"archive": "Archive",
|
||||
"unarchive": "Unarchive",
|
||||
"delete": "Delete",
|
||||
"moreOptions": "More options",
|
||||
"deselectAll": "Deselect all",
|
||||
"status": "Status",
|
||||
"priority": "Priority",
|
||||
"phase": "Phase",
|
||||
"member": "Member",
|
||||
"createTaskTemplate": "Create Task Template",
|
||||
"apply": "Apply",
|
||||
"createLabel": "+ Create Label",
|
||||
"searchOrCreateLabel": "Search or create label...",
|
||||
"hitEnterToCreate": "Press Enter to create",
|
||||
"labelExists": "Label already exists",
|
||||
"pendingInvitation": "Pending Invitation",
|
||||
"noMatchingLabels": "No matching labels",
|
||||
"noLabels": "No labels",
|
||||
"CHANGE_STATUS": "Change Status",
|
||||
"CHANGE_PRIORITY": "Change Priority",
|
||||
"CHANGE_PHASE": "Change Phase",
|
||||
"ADD_LABELS": "Add Labels",
|
||||
"ASSIGN_TO_ME": "Assign to Me",
|
||||
"ASSIGN_MEMBERS": "Assign Members",
|
||||
"ARCHIVE": "Archive",
|
||||
"DELETE": "Delete",
|
||||
"CANCEL": "Cancel",
|
||||
"CLEAR_SELECTION": "Clear Selection",
|
||||
"TASKS_SELECTED": "{{count}} task selected",
|
||||
"TASKS_SELECTED_plural": "{{count}} tasks selected",
|
||||
"DELETE_TASKS_CONFIRM": "Delete {{count}} task?",
|
||||
"DELETE_TASKS_CONFIRM_plural": "Delete {{count}} tasks?",
|
||||
"DELETE_TASKS_WARNING": "This action cannot be undone."
|
||||
}
|
||||
|
||||
@@ -40,5 +40,18 @@
|
||||
"noCategory": "No Category",
|
||||
"noProjects": "No projects found",
|
||||
"noTeams": "No teams found",
|
||||
"noData": "No data found"
|
||||
"noData": "No data found",
|
||||
|
||||
"groupBy": "Group by",
|
||||
"groupByCategory": "Category",
|
||||
"groupByTeam": "Team",
|
||||
"groupByStatus": "Status",
|
||||
"groupByNone": "None",
|
||||
"clearSearch": "Clear search",
|
||||
"selectedProjects": "Selected Projects",
|
||||
"projectsSelected": "projects selected",
|
||||
"showSelected": "Show Selected Only",
|
||||
"expandAll": "Expand All",
|
||||
"collapseAll": "Collapse All",
|
||||
"ungrouped": "Ungrouped"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"title": "Unauthorized!",
|
||||
"subtitle": "You are not authorized to access this page",
|
||||
"button": "Go to Home"
|
||||
}
|
||||
"title": "Unauthorized!",
|
||||
"subtitle": "You are not authorized to access this page",
|
||||
"button": "Go to Home"
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"paymentMethod": "Método de Pago",
|
||||
"status": "Estado",
|
||||
"ltdUsers": "Puedes agregar hasta {{ltd_users}} usuarios.",
|
||||
|
||||
|
||||
"drawerTitle": "Canjear Código",
|
||||
"label": "Canjear Código",
|
||||
"drawerPlaceholder": "Ingrese su código de canje",
|
||||
@@ -98,8 +98,16 @@
|
||||
"perMonthPerUser": "por usuario / mes",
|
||||
"viewInvoice": "Ver Factura",
|
||||
"switchToFreePlan": "Cambiar a Plan Gratuito",
|
||||
|
||||
|
||||
"expirestoday": "hoy",
|
||||
"expirestomorrow": "mañana",
|
||||
"expiredDaysAgo": "hace {{days}} días"
|
||||
"expiredDaysAgo": "hace {{days}} días",
|
||||
"creditPlan": "Plan de Crédito",
|
||||
"customPlan": "Plan Personalizado",
|
||||
"planValidTill": "Su plan es válido hasta {{date}}",
|
||||
"purchaseSeatsText": "Para continuar, deberá comprar asientos adicionales.",
|
||||
"currentSeatsText": "Actualmente tiene {{seats}} asientos disponibles.",
|
||||
"selectSeatsText": "Seleccione el número de asientos adicionales a comprar.",
|
||||
"purchase": "Comprar",
|
||||
"contactSales": "Contactar ventas"
|
||||
}
|
||||
|
||||
@@ -29,5 +29,7 @@
|
||||
"role": "Rol",
|
||||
"owner": "Propietario",
|
||||
"admin": "Administrador",
|
||||
"member": "Miembro"
|
||||
"member": "Miembro",
|
||||
"cannotChangeOwnerRole": "El rol de Propietario no puede ser cambiado",
|
||||
"pendingInvitation": "Invitación pendiente"
|
||||
}
|
||||
|
||||
@@ -3,21 +3,32 @@
|
||||
"client": "Cliente",
|
||||
"category": "Categoría",
|
||||
"status": "Estado",
|
||||
"tasksProgress": "Progreso de tareas",
|
||||
"updated_at": "Última actualización",
|
||||
"tasksProgress": "Progreso de Tareas",
|
||||
"updated_at": "Última Actualización",
|
||||
"members": "Miembros",
|
||||
"setting": "Configuración",
|
||||
"archive": "Archivar",
|
||||
"projects": "Proyectos",
|
||||
"refreshProjects": "Actualizar proyectos",
|
||||
"all": "Todos",
|
||||
"favorites": "Favoritos",
|
||||
"archived": "Archivados",
|
||||
"placeholder": "Buscar por nombre",
|
||||
"archive": "Archivar",
|
||||
"unarchive": "Desarchivar",
|
||||
"archiveConfirm": "¿Estás seguro de que deseas archivar este proyecto?",
|
||||
"unarchiveConfirm": "¿Estás seguro de que deseas desarchivar este proyecto?",
|
||||
"clickToFilter": "Clique para filtrar por",
|
||||
"archiveConfirm": "¿Está seguro de que desea archivar este proyecto?",
|
||||
"unarchiveConfirm": "¿Está seguro de que desea desarchivar este proyecto?",
|
||||
"yes": "Sí",
|
||||
"no": "No",
|
||||
"clickToFilter": "Haga clic para filtrar por",
|
||||
"noProjects": "No se encontraron proyectos",
|
||||
"addToFavourites": "Añadir a favoritos"
|
||||
"addToFavourites": "Agregar a favoritos",
|
||||
"list": "Lista",
|
||||
"group": "Grupo",
|
||||
"listView": "Vista de Lista",
|
||||
"groupView": "Vista de Grupo",
|
||||
"groupBy": {
|
||||
"category": "Categoría",
|
||||
"client": "Cliente"
|
||||
},
|
||||
"noPermission": "No tienes permiso para realizar esta acción"
|
||||
}
|
||||
|
||||
@@ -19,5 +19,12 @@
|
||||
"archive": "Archivar",
|
||||
|
||||
"newTaskNamePlaceholder": "Escribe un nombre de tarea",
|
||||
"newSubtaskNamePlaceholder": "Escribe un nombre de subtarea"
|
||||
}
|
||||
"newSubtaskNamePlaceholder": "Escribe un nombre de subtarea",
|
||||
"untitledSection": "Sección sin título",
|
||||
"unmapped": "Sin asignar",
|
||||
"clickToChangeDate": "Haz clic para cambiar la fecha",
|
||||
"noDueDate": "Sin fecha de vencimiento",
|
||||
"save": "Guardar",
|
||||
"clear": "Limpiar",
|
||||
"nextWeek": "Próxima semana"
|
||||
}
|
||||
|
||||
@@ -1,7 +1,24 @@
|
||||
{
|
||||
"configurePhases": "Configurar fases",
|
||||
"phaseLabel": "Etiqueta de fase",
|
||||
"enterPhaseName": "Ingrese un nombre para la etiqueta de fase",
|
||||
"addOption": "Agregar opción",
|
||||
"phaseOptions": "Opciones de fase:"
|
||||
}
|
||||
"configurePhases": "Configurar Fases",
|
||||
"configure": "Configurar",
|
||||
"phaseLabel": "Etiqueta de Fase",
|
||||
"enterPhaseName": "Ingresa el nombre de la fase",
|
||||
"addOption": "Agregar Opción",
|
||||
"phaseOptions": "Opciones de Fase",
|
||||
"optionsText": "Opciones",
|
||||
"dragToReorderPhases": "Arrastra las fases para reordenarlas. Cada fase puede tener un color diferente.",
|
||||
"enterNewPhaseName": "Ingresa el nombre de la nueva fase...",
|
||||
"addPhase": "Agregar Fase",
|
||||
"noPhasesFound": "No se encontraron fases",
|
||||
"no": "No",
|
||||
"found": "encontrado",
|
||||
"deletePhase": "Eliminar Fase",
|
||||
"deletePhaseConfirm": "¿Estás seguro de que quieres eliminar esta fase? Esta acción no se puede deshacer.",
|
||||
"rename": "Renombrar",
|
||||
"delete": "Eliminar",
|
||||
"create": "Crear",
|
||||
"cancel": "Cancelar",
|
||||
"selectColor": "Seleccionar color",
|
||||
"managePhases": "Gestionar Fases",
|
||||
"close": "Cerrar"
|
||||
}
|
||||
|
||||
@@ -38,5 +38,15 @@
|
||||
"createClient": "Crear cliente",
|
||||
"searchInputPlaceholder": "Busca por nombre o email",
|
||||
"hoursPerDayValidationMessage": "Las horas por día deben ser un número entre 1 y 24",
|
||||
"noPermission": "Sin permiso"
|
||||
"workingDaysValidationMessage": "Los días de trabajo deben ser un número positivo",
|
||||
"manDaysValidationMessage": "Los días hombre deben ser un número positivo",
|
||||
"noPermission": "Sin permiso",
|
||||
"progressSettings": "Configuración de Progreso",
|
||||
"manualProgress": "Progreso Manual",
|
||||
"manualProgressTooltip": "Permitir actualizaciones manuales de progreso para tareas sin subtareas",
|
||||
"weightedProgress": "Progreso Ponderado",
|
||||
"weightedProgressTooltip": "Calcular el progreso basado en los pesos de las subtareas",
|
||||
"timeProgress": "Progreso Basado en Tiempo",
|
||||
"timeProgressTooltip": "Calcular el progreso basado en el tiempo estimado",
|
||||
"enterProjectKey": "Ingresa la clave del proyecto"
|
||||
}
|
||||
|
||||
14
worklenz-frontend/public/locales/es/project-view.json
Normal file
14
worklenz-frontend/public/locales/es/project-view.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"taskList": "Lista de Tareas",
|
||||
"board": "Tablero Kanban",
|
||||
"insights": "Análisis",
|
||||
"files": "Archivos",
|
||||
"members": "Miembros",
|
||||
"updates": "Actualizaciones",
|
||||
"projectView": "Vista del Proyecto",
|
||||
"loading": "Cargando proyecto...",
|
||||
"error": "Error al cargar el proyecto",
|
||||
"pinnedTab": "Fijado como pestaña predeterminada",
|
||||
"pinTab": "Fijar como pestaña predeterminada",
|
||||
"unpinTab": "Desfijar pestaña predeterminada"
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"importTaskTemplate": "Importar plantilla de tarea",
|
||||
"templateName": "Nombre de la plantilla",
|
||||
"templateDescription": "Descripción de la plantilla",
|
||||
"selectedTasks": "Tareas seleccionadas",
|
||||
"tasks": "Tareas",
|
||||
"templates": "Plantillas",
|
||||
"remove": "Eliminar",
|
||||
"cancel": "Cancelar",
|
||||
"import": "Importar"
|
||||
}
|
||||
"importTaskTemplate": "Importar plantilla de tarea",
|
||||
"templateName": "Nombre de la plantilla",
|
||||
"templateDescription": "Descripción de la plantilla",
|
||||
"selectedTasks": "Tareas seleccionadas",
|
||||
"tasks": "Tareas",
|
||||
"templates": "Plantillas",
|
||||
"remove": "Eliminar",
|
||||
"cancel": "Cancelar",
|
||||
"import": "Importar"
|
||||
}
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
{
|
||||
"title": "Miembros del Proyecto",
|
||||
"searchLabel": "Agregar miembros ingresando su nombre o correo electrónico",
|
||||
"searchPlaceholder": "Escriba nombre o correo electrónico",
|
||||
"inviteAsAMember": "Invitar como miembro",
|
||||
"inviteNewMemberByEmail": "Invitar nuevo miembro por correo electrónico"
|
||||
|
||||
}
|
||||
"title": "Miembros del Proyecto",
|
||||
"searchLabel": "Agregar miembros ingresando su nombre o correo electrónico",
|
||||
"searchPlaceholder": "Escriba nombre o correo electrónico",
|
||||
"inviteAsAMember": "Invitar como miembro",
|
||||
"inviteNewMemberByEmail": "Invitar nuevo miembro por correo electrónico"
|
||||
}
|
||||
|
||||
@@ -1,13 +1,31 @@
|
||||
{
|
||||
"importTasks": "Importar tareas",
|
||||
"createTask": "Crear tarea",
|
||||
"settings": "Ajustes",
|
||||
"subscribe": "Suscribirse",
|
||||
"unsubscribe": "Cancelar suscripción",
|
||||
"deleteProject": "Eliminar proyecto",
|
||||
"startDate": "Fecha de inicio",
|
||||
"endDate": "Fecha de finalización",
|
||||
"projectSettings": "Ajustes del proyecto",
|
||||
"projectSummary": "Resumen del proyecto",
|
||||
"receiveProjectSummary": "Recibir un resumen del proyecto todas las noches."
|
||||
}
|
||||
"importTasks": "Importar tareas",
|
||||
"importTask": "Importar tarea",
|
||||
"createTask": "Crear tarea",
|
||||
"settings": "Configuración",
|
||||
"subscribe": "Suscribirse",
|
||||
"unsubscribe": "Desuscribirse",
|
||||
"deleteProject": "Eliminar proyecto",
|
||||
"startDate": "Fecha de inicio",
|
||||
"endDate": "Fecha de fin",
|
||||
"projectSettings": "Configuración del proyecto",
|
||||
"projectSummary": "Resumen del proyecto",
|
||||
"receiveProjectSummary": "Recibir un resumen del proyecto cada noche.",
|
||||
"refreshProject": "Actualizar proyecto",
|
||||
"saveAsTemplate": "Guardar como plantilla",
|
||||
"invite": "Invitar",
|
||||
"share": "Compartir",
|
||||
"subscribeTooltip": "Suscribirse a las notificaciones del proyecto",
|
||||
"unsubscribeTooltip": "Desuscribirse de las notificaciones del proyecto",
|
||||
"refreshTooltip": "Actualizar datos del proyecto",
|
||||
"settingsTooltip": "Abrir configuración del proyecto",
|
||||
"saveAsTemplateTooltip": "Guardar este proyecto como plantilla",
|
||||
"inviteTooltip": "Invitar miembros del equipo a este proyecto",
|
||||
"createTaskTooltip": "Crear una nueva tarea",
|
||||
"importTaskTooltip": "Importar tarea desde plantilla",
|
||||
"navigateBackTooltip": "Volver a la lista de proyectos",
|
||||
"projectStatusTooltip": "Estado del proyecto",
|
||||
"projectDatesInfo": "Información de la cronología del proyecto",
|
||||
"projectCategoryTooltip": "Categoría del proyecto",
|
||||
"defaultTaskName": "Tarea Sin Título"
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
"taskIncludes": "¿Qué se debe incluir en la plantilla de las tareas?",
|
||||
"taskIncludesOptions": {
|
||||
"statuses": "Estados",
|
||||
"phases": "Fases",
|
||||
"phases": "Fases",
|
||||
"labels": "Etiquetas",
|
||||
"name": "Nombre",
|
||||
"priority": "Prioridad",
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"title": "Apariencia",
|
||||
"darkMode": "Modo Oscuro",
|
||||
"darkModeDescription": "Cambia entre el modo claro y oscuro para personalizar tu experiencia visual."
|
||||
}
|
||||
@@ -9,5 +9,6 @@
|
||||
"saveChanges": "Guardar cambios",
|
||||
"profileJoinedText": "Se unió hace un mes",
|
||||
"profileLastUpdatedText": "Última actualización hace un mes",
|
||||
"avatarTooltip": "Haz clic para subir un avatar"
|
||||
"avatarTooltip": "Haz clic para subir un avatar",
|
||||
"title": "Configuración del Perfil"
|
||||
}
|
||||
|
||||
@@ -10,5 +10,6 @@
|
||||
"team-members": "Miembros del equipo",
|
||||
"teams": "Equipos",
|
||||
"change-password": "Cambiar contraseña",
|
||||
"language-and-region": "Idioma y región"
|
||||
"language-and-region": "Idioma y región",
|
||||
"appearance": "Apariencia"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"title": "Miembros del Equipo",
|
||||
"nameColumn": "Nombre",
|
||||
"projectsColumn": "Proyectos",
|
||||
"emailColumn": "Correo electrónico",
|
||||
@@ -40,5 +41,7 @@
|
||||
"ownerText": "Propietario del equipo",
|
||||
"addedText": "Agregado",
|
||||
"updatedText": "Actualizado",
|
||||
"noResultFound": "Escriba una dirección de correo electrónico y presione enter..."
|
||||
"noResultFound": "Escriba una dirección de correo electrónico y presione enter...",
|
||||
"jobTitlesFetchError": "Error al obtener los cargos",
|
||||
"invitationResent": "¡Invitación reenviada exitosamente!"
|
||||
}
|
||||
|
||||
16
worklenz-frontend/public/locales/es/settings/teams.json
Normal file
16
worklenz-frontend/public/locales/es/settings/teams.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"title": "Equipos",
|
||||
"team": "Equipo",
|
||||
"teams": "Equipos",
|
||||
"name": "Nombre",
|
||||
"created": "Creado",
|
||||
"ownsBy": "Pertenece a",
|
||||
"edit": "Editar",
|
||||
"editTeam": "Editar Equipo",
|
||||
"pinTooltip": "Haz clic para fijar esto en el menú principal",
|
||||
"editTeamName": "Editar Nombre del Equipo",
|
||||
"updateName": "Actualizar Nombre",
|
||||
"namePlaceholder": "Nombre",
|
||||
"nameRequired": "Por favor ingresa un Nombre",
|
||||
"updateFailed": "¡Falló el cambio de nombre del equipo!"
|
||||
}
|
||||
@@ -15,7 +15,8 @@
|
||||
"hide-start-date": "Ocultar fecha de inicio",
|
||||
"show-start-date": "Mostrar fecha de inicio",
|
||||
"hours": "Horas",
|
||||
"minutes": "Minutos"
|
||||
"minutes": "Minutos",
|
||||
"recurring": "Recurrente"
|
||||
},
|
||||
"description": {
|
||||
"title": "Descripción",
|
||||
@@ -26,4 +27,4 @@
|
||||
"add-sub-task": "+ Añadir subtarea",
|
||||
"refresh-sub-tasks": "Actualizar subtareas"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"recurring": "Recurrente",
|
||||
"recurringTaskConfiguration": "Configuración de tarea recurrente",
|
||||
"repeats": "Repeticiones",
|
||||
"daily": "Diario",
|
||||
"weekly": "Semanal",
|
||||
"everyXDays": "Cada X días",
|
||||
"everyXWeeks": "Cada X semanas",
|
||||
"everyXMonths": "Cada X meses",
|
||||
"monthly": "Mensual",
|
||||
"selectDaysOfWeek": "Seleccionar días de la semana",
|
||||
"mon": "Lun",
|
||||
"tue": "Mar",
|
||||
"wed": "Mié",
|
||||
"thu": "Jue",
|
||||
"fri": "Vie",
|
||||
"sat": "Sáb",
|
||||
"sun": "Dom",
|
||||
"monthlyRepeatType": "Tipo de repetición mensual",
|
||||
"onSpecificDate": "En una fecha específica",
|
||||
"onSpecificDay": "En un día específico",
|
||||
"dateOfMonth": "Fecha del mes",
|
||||
"weekOfMonth": "Semana del mes",
|
||||
"dayOfWeek": "Día de la semana",
|
||||
"first": "Primero",
|
||||
"second": "Segundo",
|
||||
"third": "Tercero",
|
||||
"fourth": "Cuarto",
|
||||
"last": "Último",
|
||||
"intervalDays": "Intervalo (días)",
|
||||
"intervalWeeks": "Intervalo (semanas)",
|
||||
"intervalMonths": "Intervalo (meses)",
|
||||
"saveChanges": "Guardar cambios"
|
||||
}
|
||||
@@ -1,78 +1,123 @@
|
||||
{
|
||||
"taskHeader": {
|
||||
"taskNamePlaceholder": "Escribe tu tarea",
|
||||
"deleteTask": "Eliminar tarea"
|
||||
"taskNamePlaceholder": "Escriba su Tarea",
|
||||
"deleteTask": "Eliminar Tarea"
|
||||
},
|
||||
"taskInfoTab": {
|
||||
"title": "Información",
|
||||
"details": {
|
||||
"title": "Detalles",
|
||||
"task-key": "Clave de tarea",
|
||||
"task-key": "Clave de Tarea",
|
||||
"phase": "Fase",
|
||||
"assignees": "Asignados",
|
||||
"due-date": "Fecha de vencimiento",
|
||||
"time-estimation": "Estimación de tiempo",
|
||||
"due-date": "Fecha de Vencimiento",
|
||||
"time-estimation": "Estimación de Tiempo",
|
||||
"priority": "Prioridad",
|
||||
"labels": "Etiquetas",
|
||||
"billable": "Facturable",
|
||||
"notify": "Notificar",
|
||||
"when-done-notify": "Al terminar, notificar",
|
||||
"start-date": "Fecha de inicio",
|
||||
"end-date": "Fecha de finalización",
|
||||
"hide-start-date": "Ocultar fecha de inicio",
|
||||
"show-start-date": "Mostrar fecha de inicio",
|
||||
"start-date": "Fecha de Inicio",
|
||||
"end-date": "Fecha de Fin",
|
||||
"hide-start-date": "Ocultar Fecha de Inicio",
|
||||
"show-start-date": "Mostrar Fecha de Inicio",
|
||||
"hours": "Horas",
|
||||
"minutes": "Minutos"
|
||||
"minutes": "Minutos",
|
||||
"progressValue": "Valor de Progreso",
|
||||
"progressValueTooltip": "Establecer el porcentaje de progreso (0-100%)",
|
||||
"progressValueRequired": "Por favor, introduzca un valor de progreso",
|
||||
"progressValueRange": "El progreso debe estar entre 0 y 100",
|
||||
"taskWeight": "Peso de la Tarea",
|
||||
"taskWeightTooltip": "Establecer el peso de esta subtarea (porcentaje)",
|
||||
"taskWeightRequired": "Por favor, introduzca un peso de tarea",
|
||||
"taskWeightRange": "El peso debe estar entre 0 y 100",
|
||||
"recurring": "Recurrente"
|
||||
},
|
||||
"labels": {
|
||||
"labelInputPlaceholder": "Buscar o crear",
|
||||
"labelsSelectorInputTip": "Pulse Enter para crear"
|
||||
"labelsSelectorInputTip": "Presiona Enter para crear"
|
||||
},
|
||||
"description": {
|
||||
"title": "Descripción",
|
||||
"placeholder": "Añadir una descripción más detallada..."
|
||||
},
|
||||
"subTasks": {
|
||||
"title": "Subtareas",
|
||||
"addSubTask": "+ Añadir subtarea",
|
||||
"addSubTaskInputPlaceholder": "Escribe tu tarea y pulsa enter",
|
||||
"refreshSubTasks": "Actualizar subtareas",
|
||||
"title": "Sub Tareas",
|
||||
"addSubTask": "Agregar Sub Tarea",
|
||||
"addSubTaskInputPlaceholder": "Escriba su tarea y presione enter",
|
||||
"refreshSubTasks": "Actualizar Sub Tareas",
|
||||
"edit": "Editar",
|
||||
"delete": "Eliminar",
|
||||
"confirmDeleteSubTask": "¿Estás seguro de que quieres eliminar esta subtarea?",
|
||||
"deleteSubTask": "Eliminar subtarea"
|
||||
"confirmDeleteSubTask": "¿Está seguro de que desea eliminar esta subtarea?",
|
||||
"deleteSubTask": "Eliminar Sub Tarea"
|
||||
},
|
||||
"dependencies": {
|
||||
"title": "Dependencias",
|
||||
"addDependency": "+ Añadir nueva dependencia",
|
||||
"addDependency": "+ Agregar nueva dependencia",
|
||||
"blockedBy": "Bloqueado por",
|
||||
"searchTask": "Escribe para buscar tarea",
|
||||
"searchTask": "Escribir para buscar tarea",
|
||||
"noTasksFound": "No se encontraron tareas",
|
||||
"confirmDeleteDependency": "¿Estás seguro de que quieres eliminar?"
|
||||
"confirmDeleteDependency": "¿Está seguro de que desea eliminar?"
|
||||
},
|
||||
"attachments": {
|
||||
"title": "Adjuntos",
|
||||
"chooseOrDropFileToUpload": "Elige o arrastra un archivo para subir",
|
||||
"chooseOrDropFileToUpload": "Elija o arrastre un archivo para subir",
|
||||
"uploading": "Subiendo..."
|
||||
},
|
||||
"comments": {
|
||||
"title": "Comentarios",
|
||||
"addComment": "+ Añadir nuevo comentario",
|
||||
"noComments": "No hay comentarios todavía. ¡Sé el primero en comentar!",
|
||||
"addComment": "+ Agregar nuevo comentario",
|
||||
"noComments": "Aún no hay comentarios. ¡Sé el primero en comentar!",
|
||||
"delete": "Eliminar",
|
||||
"confirmDeleteComment": "¿Estás seguro de que quieres eliminar este comentario?"
|
||||
"confirmDeleteComment": "¿Está seguro de que desea eliminar este comentario?",
|
||||
"addCommentPlaceholder": "Agregar un comentario...",
|
||||
"cancel": "Cancelar",
|
||||
"commentButton": "Comentar",
|
||||
"attachFiles": "Adjuntar archivos",
|
||||
"addMoreFiles": "Agregar más archivos",
|
||||
"selectedFiles": "Archivos Seleccionados (Hasta 25MB, Máximo {count})",
|
||||
"maxFilesError": "Solo puede subir un máximo de {count} archivos",
|
||||
"processFilesError": "Error al procesar archivos",
|
||||
"addCommentError": "Por favor agregue un comentario o adjunte archivos",
|
||||
"createdBy": "Creado {{time}} por {{user}}",
|
||||
"updatedTime": "Actualizado {{time}}"
|
||||
},
|
||||
"searchInputPlaceholder": "Buscar por nombre",
|
||||
"pendingInvitation": "Invitación pendiente"
|
||||
"pendingInvitation": "Invitación Pendiente"
|
||||
},
|
||||
"taskTimeLogTab": {
|
||||
"title": "Registro de tiempo",
|
||||
"title": "Registro de Tiempo",
|
||||
"addTimeLog": "Añadir nuevo registro de tiempo",
|
||||
"totalLogged": "Total registrado",
|
||||
"totalLogged": "Total Registrado",
|
||||
"exportToExcel": "Exportar a Excel",
|
||||
"noTimeLogsFound": "No se encontraron registros de tiempo"
|
||||
"noTimeLogsFound": "No se encontraron registros de tiempo",
|
||||
"timeLogForm": {
|
||||
"date": "Fecha",
|
||||
"startTime": "Hora de Inicio",
|
||||
"endTime": "Hora de Fin",
|
||||
"workDescription": "Descripción del Trabajo",
|
||||
"descriptionPlaceholder": "Agregar una descripción",
|
||||
"logTime": "Registrar tiempo",
|
||||
"updateTime": "Actualizar tiempo",
|
||||
"cancel": "Cancelar",
|
||||
"selectDateError": "Por favor seleccione una fecha",
|
||||
"selectStartTimeError": "Por favor seleccione la hora de inicio",
|
||||
"selectEndTimeError": "Por favor seleccione la hora de fin",
|
||||
"endTimeAfterStartError": "La hora de fin debe ser posterior a la hora de inicio"
|
||||
}
|
||||
},
|
||||
"taskActivityLogTab": {
|
||||
"title": "Registro de actividad"
|
||||
"title": "Registro de Actividad",
|
||||
"add": "AGREGAR",
|
||||
"remove": "QUITAR",
|
||||
"none": "Ninguno",
|
||||
"weight": "Peso",
|
||||
"createdTask": "creó la tarea."
|
||||
},
|
||||
"taskProgress": {
|
||||
"markAsDoneTitle": "¿Marcar Tarea como Completada?",
|
||||
"confirmMarkAsDone": "Sí, marcar como completada",
|
||||
"cancelMarkAsDone": "No, mantener estado actual",
|
||||
"markAsDoneDescription": "Ha establecido el progreso al 100%. ¿Le gustaría actualizar el estado de la tarea a \"Completada\"?"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
"sortText": "Ordenar",
|
||||
"statusText": "Estado",
|
||||
"phaseText": "Fase",
|
||||
"memberText": "Miembros",
|
||||
"assigneesText": "Asignados",
|
||||
"priorityText": "Prioridad",
|
||||
"labelsText": "Etiquetas",
|
||||
"membersText": "Miembros",
|
||||
@@ -16,30 +18,32 @@
|
||||
"taskText": "Tarea",
|
||||
"descriptionText": "Descripción",
|
||||
"phasesText": "Fases",
|
||||
"listText": "Lista",
|
||||
"progressText": "Progreso",
|
||||
"timeTrackingText": "Seguimiento de tiempo",
|
||||
"timetrackingText": "Seguimiento de tiempo",
|
||||
"estimationText": "Estimación",
|
||||
"startDateText": "Fecha de inicio",
|
||||
"startdateText": "Fecha de inicio",
|
||||
"endDateText": "Fecha de fin",
|
||||
"dueDateText": "Fecha de vencimiento",
|
||||
"duedateText": "Fecha de vencimiento",
|
||||
"completedDateText": "Fecha de finalización",
|
||||
"completeddateText": "Fecha de finalización",
|
||||
"createdDateText": "Fecha de creación",
|
||||
"createddateText": "Fecha de creación",
|
||||
"lastUpdatedText": "Última actualización",
|
||||
"lastupdatedText": "Última actualización",
|
||||
"reporterText": "Reportero",
|
||||
"dueTimeText": "Hora de vencimiento",
|
||||
"lowText": "Baja",
|
||||
"mediumText": "Media",
|
||||
"highText": "Alta",
|
||||
"assigneesText": "Asignados",
|
||||
"timetrackingText": "Seguimiento de tiempo",
|
||||
"startdateText": "Fecha de inicio",
|
||||
"duedateText": "Fecha de vencimiento",
|
||||
"completeddateText": "Fecha de finalización",
|
||||
"createddateText": "Fecha de creación",
|
||||
"lastupdatedText": "Última actualización",
|
||||
"duetimeText": "Hora de vencimiento",
|
||||
"createStatusButtonTooltip": "Configuración de estados",
|
||||
"configPhaseButtonTooltip": "Configuración de fases",
|
||||
|
||||
"lowText": "Bajo",
|
||||
"mediumText": "Medio",
|
||||
"highText": "Alto",
|
||||
|
||||
"createStatusButtonTooltip": "Configuración de estado",
|
||||
"configPhaseButtonTooltip": "Configuración de fase",
|
||||
"noLabelsFound": "No se encontraron etiquetas",
|
||||
|
||||
"addStatusButton": "Agregar estado",
|
||||
@@ -49,7 +53,36 @@
|
||||
"name": "Nombre",
|
||||
"category": "Categoría",
|
||||
"selectCategory": "Seleccionar una categoría",
|
||||
"pleaseEnterAName": "Por favor, ingrese un nombre",
|
||||
"pleaseSelectACategory": "Por favor, seleccione una categoría",
|
||||
"create": "Crear"
|
||||
"pleaseEnterAName": "Por favor ingrese un nombre",
|
||||
"pleaseSelectACategory": "Por favor seleccione una categoría",
|
||||
"create": "Crear",
|
||||
|
||||
"searchTasks": "Buscar tareas...",
|
||||
"searchPlaceholder": "Buscar...",
|
||||
"fieldsText": "Campos",
|
||||
"loadingFilters": "Cargando filtros...",
|
||||
"noOptionsFound": "No se encontraron opciones",
|
||||
"filtersActive": "filtros activos",
|
||||
"filterActive": "filtro activo",
|
||||
"clearAll": "Limpiar todo",
|
||||
"clearing": "Limpiando...",
|
||||
"cancel": "Cancelar",
|
||||
"search": "Buscar",
|
||||
"groupedBy": "Agrupado por",
|
||||
"manage": "Gestionar",
|
||||
"manageStatuses": "Gestionar Estados",
|
||||
"managePhases": "Gestionar Fases",
|
||||
"dragToReorderStatuses": "Los estados están organizados por categorías. Arrastra para reordenar dentro de las categorías. Haz clic en 'Agregar estado' para crear nuevos estados en cada categoría.",
|
||||
"enterNewStatusName": "Ingrese el nombre del nuevo estado...",
|
||||
"addStatus": "Agregar estado",
|
||||
"noStatusesFound": "No hay estados en esta categoría",
|
||||
"deleteStatus": "Eliminar estado",
|
||||
"deleteStatusConfirm": "¿Está seguro de que desea eliminar este estado? Esta acción no se puede deshacer.",
|
||||
"rename": "Renombrar",
|
||||
"delete": "Eliminar",
|
||||
"enterStatusName": "Ingrese el nombre del estado",
|
||||
"close": "Cerrar",
|
||||
"cannotMoveStatus": "No se puede mover el estado",
|
||||
"cannotMoveStatusMessage": "No se puede mover este estado porque dejaría vacía la categoría '{{categoryName}}'. Cada categoría debe tener al menos un estado.",
|
||||
"ok": "OK"
|
||||
}
|
||||
|
||||
@@ -36,8 +36,9 @@
|
||||
"selectText": "Seleccionar",
|
||||
"labelsSelectorInputTip": "¡Presiona enter para crear!",
|
||||
|
||||
"addTaskText": "+ Agregar tarea",
|
||||
"addSubTaskText": "+ Agregar subtarea",
|
||||
"addTaskText": "Agregar tarea",
|
||||
"addSubTaskText": "Agregar subtarea",
|
||||
"noTasksInGroup": "No hay tareas en este grupo",
|
||||
"addTaskInputPlaceholder": "Escribe tu tarea y presiona enter",
|
||||
|
||||
"openButton": "Abrir",
|
||||
@@ -47,7 +48,10 @@
|
||||
"searchInputPlaceholder": "Buscar o crear",
|
||||
"assigneeSelectorInviteButton": "Invitar a un nuevo miembro por correo",
|
||||
"labelInputPlaceholder": "Buscar o crear",
|
||||
|
||||
"searchLabelsPlaceholder": "Buscar etiquetas...",
|
||||
"createLabelButton": "Crear \"{{name}}\"",
|
||||
"manageLabelsPath": "Configuración → Etiquetas",
|
||||
|
||||
"pendingInvitation": "Invitación pendiente",
|
||||
|
||||
"contextMenu": {
|
||||
@@ -59,5 +63,74 @@
|
||||
"convertToTask": "Convertir en tarea",
|
||||
"delete": "Eliminar",
|
||||
"searchByNameInputPlaceholder": "Buscar por nombre"
|
||||
},
|
||||
"setDueDate": "Establecer fecha de vencimiento",
|
||||
"setStartDate": "Establecer fecha de inicio",
|
||||
"clearDueDate": "Limpiar fecha de vencimiento",
|
||||
"clearStartDate": "Limpiar fecha de inicio",
|
||||
"dueDatePlaceholder": "Fecha de vencimiento",
|
||||
"startDatePlaceholder": "Fecha de inicio",
|
||||
|
||||
"emptyStates": {
|
||||
"noTaskGroups": "No se encontraron grupos de tareas",
|
||||
"noTaskGroupsDescription": "Las tareas aparecerán aquí cuando se creen o cuando se apliquen filtros.",
|
||||
"errorPrefix": "Error:",
|
||||
"dragTaskFallback": "Tarea"
|
||||
},
|
||||
|
||||
"customColumns": {
|
||||
"addCustomColumn": "Agregar una columna personalizada",
|
||||
"customColumnHeader": "Columna Personalizada",
|
||||
"customColumnSettings": "Configuración de columna personalizada",
|
||||
"noCustomValue": "Sin valor",
|
||||
"peopleField": "Campo de personas",
|
||||
"noDate": "Sin fecha",
|
||||
"unsupportedField": "Tipo de campo no compatible",
|
||||
|
||||
"modal": {
|
||||
"addFieldTitle": "Agregar campo",
|
||||
"editFieldTitle": "Editar campo",
|
||||
"fieldTitle": "Título del campo",
|
||||
"fieldTitleRequired": "El título del campo es obligatorio",
|
||||
"columnTitlePlaceholder": "Título de la columna",
|
||||
"type": "Tipo",
|
||||
"deleteConfirmTitle": "¿Está seguro de que desea eliminar esta columna personalizada?",
|
||||
"deleteConfirmDescription": "Esta acción no se puede deshacer. Todos los datos asociados con esta columna se eliminarán permanentemente.",
|
||||
"deleteButton": "Eliminar",
|
||||
"cancelButton": "Cancelar",
|
||||
"createButton": "Crear",
|
||||
"updateButton": "Actualizar",
|
||||
"createSuccessMessage": "Columna personalizada creada exitosamente",
|
||||
"updateSuccessMessage": "Columna personalizada actualizada exitosamente",
|
||||
"deleteSuccessMessage": "Columna personalizada eliminada exitosamente",
|
||||
"deleteErrorMessage": "Error al eliminar la columna personalizada",
|
||||
"createErrorMessage": "Error al crear la columna personalizada",
|
||||
"updateErrorMessage": "Error al actualizar la columna personalizada"
|
||||
},
|
||||
|
||||
"fieldTypes": {
|
||||
"people": "Personas",
|
||||
"number": "Número",
|
||||
"date": "Fecha",
|
||||
"selection": "Selección",
|
||||
"checkbox": "Casilla de verificación",
|
||||
"labels": "Etiquetas",
|
||||
"key": "Clave",
|
||||
"formula": "Fórmula"
|
||||
}
|
||||
},
|
||||
|
||||
"indicators": {
|
||||
"tooltips": {
|
||||
"subtasks": "{{count}} subtarea",
|
||||
"subtasks_plural": "{{count}} subtareas",
|
||||
"comments": "{{count}} comentario",
|
||||
"comments_plural": "{{count}} comentarios",
|
||||
"attachments": "{{count}} archivo adjunto",
|
||||
"attachments_plural": "{{count}} archivos adjuntos",
|
||||
"subscribers": "La tarea tiene suscriptores",
|
||||
"dependencies": "La tarea tiene dependencias",
|
||||
"recurring": "Tarea recurrente"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
39
worklenz-frontend/public/locales/es/task-management.json
Normal file
39
worklenz-frontend/public/locales/es/task-management.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"noTasksInGroup": "No hay tareas en este grupo",
|
||||
"noTasksInGroupDescription": "Añade una tarea para comenzar",
|
||||
"addFirstTask": "Añade tu primera tarea",
|
||||
"openTask": "Abrir",
|
||||
"subtask": "subtarea",
|
||||
"subtasks": "subtareas",
|
||||
"comment": "comentario",
|
||||
"comments": "comentarios",
|
||||
"attachment": "adjunto",
|
||||
"attachments": "adjuntos",
|
||||
"enterSubtaskName": "Ingresa el nombre de la subtarea...",
|
||||
"add": "Añadir",
|
||||
"cancel": "Cancelar",
|
||||
"renameGroup": "Renombrar Grupo",
|
||||
"renameStatus": "Renombrar Estado",
|
||||
"renamePhase": "Renombrar Fase",
|
||||
"changeCategory": "Cambiar Categoría",
|
||||
"clickToEditGroupName": "Haz clic para editar el nombre del grupo",
|
||||
"enterGroupName": "Ingresa el nombre del grupo",
|
||||
"todo": "Por Hacer",
|
||||
"inProgress": "En Progreso",
|
||||
"done": "Hecho",
|
||||
"defaultTaskName": "Tarea Sin Título",
|
||||
|
||||
"indicators": {
|
||||
"tooltips": {
|
||||
"subtasks": "{{count}} subtarea",
|
||||
"subtasks_plural": "{{count}} subtareas",
|
||||
"comments": "{{count}} comentario",
|
||||
"comments_plural": "{{count}} comentarios",
|
||||
"attachments": "{{count}} adjunto",
|
||||
"attachments_plural": "{{count}} adjuntos",
|
||||
"subscribers": "La tarea tiene suscriptores",
|
||||
"dependencies": "La tarea tiene dependencias",
|
||||
"recurring": "Tarea recurrente"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,24 +1,41 @@
|
||||
{
|
||||
"taskSelected": "Tarea seleccionada",
|
||||
"tasksSelected": "Tareas seleccionadas",
|
||||
"changeStatus": "Cambiar estado/ prioridad/ fases",
|
||||
"changeLabel": "Cambiar etiqueta",
|
||||
"assignToMe": "Asignar a mí",
|
||||
"changeAssignees": "Cambiar asignados",
|
||||
"archive": "Archivar",
|
||||
"unarchive": "Desarchivar",
|
||||
"delete": "Eliminar",
|
||||
"moreOptions": "Más opciones",
|
||||
"deselectAll": "Deseleccionar todo",
|
||||
"status": "Estado",
|
||||
"priority": "Prioridad",
|
||||
"phase": "Fase",
|
||||
"member": "Miembro",
|
||||
"createTaskTemplate": "Crear plantilla de tarea",
|
||||
"apply": "Aplicar",
|
||||
"createLabel": "+ Crear etiqueta",
|
||||
"hitEnterToCreate": "Presione Enter para crear",
|
||||
"pendingInvitation": "Invitación Pendiente",
|
||||
"noMatchingLabels": "No hay etiquetas coincidentes",
|
||||
"noLabels": "Sin etiquetas"
|
||||
}
|
||||
"taskSelected": "Tarea seleccionada",
|
||||
"tasksSelected": "Tareas seleccionadas",
|
||||
"changeStatus": "Cambiar estado/ prioridad/ fases",
|
||||
"changeLabel": "Cambiar etiqueta",
|
||||
"assignToMe": "Asignar a mí",
|
||||
"changeAssignees": "Cambiar asignados",
|
||||
"archive": "Archivar",
|
||||
"unarchive": "Desarchivar",
|
||||
"delete": "Eliminar",
|
||||
"moreOptions": "Más opciones",
|
||||
"deselectAll": "Deseleccionar todo",
|
||||
"status": "Estado",
|
||||
"priority": "Prioridad",
|
||||
"phase": "Fase",
|
||||
"member": "Miembro",
|
||||
"createTaskTemplate": "Crear plantilla de tarea",
|
||||
"apply": "Aplicar",
|
||||
"createLabel": "+ Crear etiqueta",
|
||||
"searchOrCreateLabel": "Buscar o crear etiqueta...",
|
||||
"hitEnterToCreate": "Presione Enter para crear",
|
||||
"labelExists": "La etiqueta ya existe",
|
||||
"pendingInvitation": "Invitación Pendiente",
|
||||
"noMatchingLabels": "No hay etiquetas coincidentes",
|
||||
"noLabels": "Sin etiquetas",
|
||||
"CHANGE_STATUS": "Cambiar Estado",
|
||||
"CHANGE_PRIORITY": "Cambiar Prioridad",
|
||||
"CHANGE_PHASE": "Cambiar Fase",
|
||||
"ADD_LABELS": "Agregar Etiquetas",
|
||||
"ASSIGN_TO_ME": "Asignar a Mí",
|
||||
"ASSIGN_MEMBERS": "Asignar Miembros",
|
||||
"ARCHIVE": "Archivar",
|
||||
"DELETE": "Eliminar",
|
||||
"CANCEL": "Cancelar",
|
||||
"CLEAR_SELECTION": "Limpiar Selección",
|
||||
"TASKS_SELECTED": "{{count}} tarea seleccionada",
|
||||
"TASKS_SELECTED_plural": "{{count}} tareas seleccionadas",
|
||||
"DELETE_TASKS_CONFIRM": "¿Eliminar {{count}} tarea?",
|
||||
"DELETE_TASKS_CONFIRM_plural": "¿Eliminar {{count}} tareas?",
|
||||
"DELETE_TASKS_WARNING": "Esta acción no se puede deshacer."
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"selectAll": "Seleccionar Todo",
|
||||
"teams": "Equipos",
|
||||
|
||||
"searchByProject": "Buscar por nombre de proyecto",
|
||||
"searchByProject": "Buscar por nombre del proyecto",
|
||||
"projects": "Proyectos",
|
||||
|
||||
"searchByCategory": "Buscar por nombre de categoría",
|
||||
@@ -37,8 +37,21 @@
|
||||
"actualDays": "Días Reales",
|
||||
|
||||
"noCategories": "No se encontraron categorías",
|
||||
"noCategory": "No Categoría",
|
||||
"noCategory": "Sin Categoría",
|
||||
"noProjects": "No se encontraron proyectos",
|
||||
"noTeams": "No se encontraron equipos",
|
||||
"noData": "No se encontraron datos"
|
||||
"noData": "No se encontraron datos",
|
||||
|
||||
"groupBy": "Agrupar por",
|
||||
"groupByCategory": "Categoría",
|
||||
"groupByTeam": "Equipo",
|
||||
"groupByStatus": "Estado",
|
||||
"groupByNone": "Ninguno",
|
||||
"clearSearch": "Limpiar búsqueda",
|
||||
"selectedProjects": "Proyectos Seleccionados",
|
||||
"projectsSelected": "proyectos seleccionados",
|
||||
"showSelected": "Mostrar Solo Seleccionados",
|
||||
"expandAll": "Expandir Todo",
|
||||
"collapseAll": "Contraer Todo",
|
||||
"ungrouped": "Sin Agrupar"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"title": "¡No autorizado!",
|
||||
"subtitle": "No tienes permisos para acceder a esta página",
|
||||
"button": "Ir a Inicio"
|
||||
}
|
||||
"title": "¡No autorizado!",
|
||||
"subtitle": "No tienes permisos para acceder a esta página",
|
||||
"button": "Ir a Inicio"
|
||||
}
|
||||
|
||||
@@ -98,8 +98,16 @@
|
||||
"perMonthPerUser": "por usuário / mês",
|
||||
"viewInvoice": "Ver Fatura",
|
||||
"switchToFreePlan": "Mudar para Plano Gratuito",
|
||||
|
||||
|
||||
"expirestoday": "hoje",
|
||||
"expirestomorrow": "amanhã",
|
||||
"expiredDaysAgo": "há {{days}} dias"
|
||||
"expiredDaysAgo": "há {{days}} dias",
|
||||
"creditPlan": "Plano de Crédito",
|
||||
"customPlan": "Plano Personalizado",
|
||||
"planValidTill": "Seu plano é válido até {{date}}",
|
||||
"purchaseSeatsText": "Para continuar, você precisará comprar assentos adicionais.",
|
||||
"currentSeatsText": "Atualmente você tem {{seats}} assentos disponíveis.",
|
||||
"selectSeatsText": "Selecione o número de assentos adicionais para comprar.",
|
||||
"purchase": "Comprar",
|
||||
"contactSales": "Fale com vendas"
|
||||
}
|
||||
|
||||
@@ -29,5 +29,7 @@
|
||||
"role": "Rol",
|
||||
"owner": "Propietario",
|
||||
"admin": "Administrador",
|
||||
"member": "Miembro"
|
||||
"member": "Miembro",
|
||||
"cannotChangeOwnerRole": "A função de Proprietário não pode ser alterada",
|
||||
"pendingInvitation": "Convite pendente"
|
||||
}
|
||||
|
||||
@@ -6,18 +6,29 @@
|
||||
"tasksProgress": "Progresso das Tarefas",
|
||||
"updated_at": "Última Atualização",
|
||||
"members": "Membros",
|
||||
"setting": "Configuração",
|
||||
"archive": "Arquivar",
|
||||
"setting": "Configurações",
|
||||
"projects": "Projetos",
|
||||
"refreshProjects": "Atualizar projetos",
|
||||
"all": "Todos",
|
||||
"favorites": "Favoritos",
|
||||
"archived": "Arquivados",
|
||||
"placeholder": "Pesquisar por nome",
|
||||
"archiveConfirm": "Tem certeza de que deseja arquivar este projeto?",
|
||||
"archive": "Arquivar",
|
||||
"unarchive": "Desarquivar",
|
||||
"archiveConfirm": "Tem certeza de que deseja arquivar este projeto?",
|
||||
"unarchiveConfirm": "Tem certeza de que deseja desarquivar este projeto?",
|
||||
"yes": "Sim",
|
||||
"no": "Não",
|
||||
"clickToFilter": "Clique para filtrar por",
|
||||
"noProjects": "Nenhum projeto encontrado",
|
||||
"addToFavourites": "Adicionar aos favoritos"
|
||||
"addToFavourites": "Adicionar aos favoritos",
|
||||
"list": "Lista",
|
||||
"group": "Grupo",
|
||||
"listView": "Visualização em Lista",
|
||||
"groupView": "Visualização em Grupo",
|
||||
"groupBy": {
|
||||
"category": "Categoria",
|
||||
"client": "Cliente"
|
||||
},
|
||||
"noPermission": "Você não tem permissão para realizar esta ação"
|
||||
}
|
||||
|
||||
@@ -19,5 +19,12 @@
|
||||
"archive": "Arquivar",
|
||||
|
||||
"newTaskNamePlaceholder": "Escreva um nome de tarefa",
|
||||
"newSubtaskNamePlaceholder": "Escreva um nome de subtarefa"
|
||||
}
|
||||
"newSubtaskNamePlaceholder": "Escreva um nome de subtarefa",
|
||||
"untitledSection": "Seção sem título",
|
||||
"unmapped": "Não mapeado",
|
||||
"clickToChangeDate": "Clique para alterar a data",
|
||||
"noDueDate": "Sem data de vencimento",
|
||||
"save": "Salvar",
|
||||
"clear": "Limpar",
|
||||
"nextWeek": "Próxima semana"
|
||||
}
|
||||
|
||||
@@ -1,7 +1,24 @@
|
||||
{
|
||||
"configurePhases": "Configurar fases",
|
||||
"phaseLabel": "Etiqueta de fase",
|
||||
"enterPhaseName": "Ingrese un nombre para la etiqueta de fase",
|
||||
"addOption": "Agregar opción",
|
||||
"phaseOptions": "Opciones de fase:"
|
||||
}
|
||||
"configurePhases": "Configurar Fases",
|
||||
"configure": "Configurar",
|
||||
"phaseLabel": "Rótulo da Fase",
|
||||
"enterPhaseName": "Digite o nome da fase",
|
||||
"addOption": "Adicionar Opção",
|
||||
"phaseOptions": "Opções de Fase",
|
||||
"optionsText": "Opções",
|
||||
"dragToReorderPhases": "Arraste as fases para reordená-las. Cada fase pode ter uma cor diferente.",
|
||||
"enterNewPhaseName": "Digite o nome da nova fase...",
|
||||
"addPhase": "Adicionar Fase",
|
||||
"noPhasesFound": "Nenhuma fase encontrada",
|
||||
"no": "Nenhuma",
|
||||
"found": "encontrada",
|
||||
"deletePhase": "Excluir Fase",
|
||||
"deletePhaseConfirm": "Tem certeza de que deseja excluir esta fase? Esta ação não pode ser desfeita.",
|
||||
"rename": "Renomear",
|
||||
"delete": "Excluir",
|
||||
"create": "Criar",
|
||||
"cancel": "Cancelar",
|
||||
"selectColor": "Selecionar cor",
|
||||
"managePhases": "Gerenciar Fases",
|
||||
"close": "Fechar"
|
||||
}
|
||||
|
||||
@@ -38,5 +38,15 @@
|
||||
"createClient": "Criar cliente",
|
||||
"searchInputPlaceholder": "Pesquise por nome ou email",
|
||||
"hoursPerDayValidationMessage": "As horas por dia devem ser um número entre 1 e 24",
|
||||
"noPermission": "Sem permissão"
|
||||
"workingDaysValidationMessage": "Os dias de trabalho devem ser um número positivo",
|
||||
"manDaysValidationMessage": "Os dias de homem devem ser um número positivo",
|
||||
"noPermission": "Sem permissão",
|
||||
"progressSettings": "Configurações de Progresso",
|
||||
"manualProgress": "Progresso Manual",
|
||||
"manualProgressTooltip": "Permitir atualizações manuais de progresso para tarefas sem subtarefas",
|
||||
"weightedProgress": "Progresso Ponderado",
|
||||
"weightedProgressTooltip": "Calcular o progresso com base nos pesos das subtarefas",
|
||||
"timeProgress": "Progresso Baseado em Tempo",
|
||||
"timeProgressTooltip": "Calcular o progresso com base no tempo estimado",
|
||||
"enterProjectKey": "Insira a chave do projeto"
|
||||
}
|
||||
|
||||
14
worklenz-frontend/public/locales/pt/project-view.json
Normal file
14
worklenz-frontend/public/locales/pt/project-view.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"taskList": "Lista de Tarefas",
|
||||
"board": "Quadro Kanban",
|
||||
"insights": "Insights",
|
||||
"files": "Arquivos",
|
||||
"members": "Membros",
|
||||
"updates": "Atualizações",
|
||||
"projectView": "Visualização do Projeto",
|
||||
"loading": "Carregando projeto...",
|
||||
"error": "Erro ao carregar projeto",
|
||||
"pinnedTab": "Fixada como aba padrão",
|
||||
"pinTab": "Fixar como aba padrão",
|
||||
"unpinTab": "Desfixar aba padrão"
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"importTaskTemplate": "Importar modelo de tarefa",
|
||||
"templateName": "Nome do modelo",
|
||||
"templateDescription": "Descrição do modelo",
|
||||
"selectedTasks": "Tarefas selecionadas",
|
||||
"tasks": "Tarefas",
|
||||
"templates": "Modelos",
|
||||
"remove": "Remover",
|
||||
"cancel": "Cancelar",
|
||||
"import": "Importar"
|
||||
}
|
||||
"importTaskTemplate": "Importar modelo de tarefa",
|
||||
"templateName": "Nome do modelo",
|
||||
"templateDescription": "Descrição do modelo",
|
||||
"selectedTasks": "Tarefas selecionadas",
|
||||
"tasks": "Tarefas",
|
||||
"templates": "Modelos",
|
||||
"remove": "Remover",
|
||||
"cancel": "Cancelar",
|
||||
"import": "Importar"
|
||||
}
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
{
|
||||
"title": "Membros do Projeto",
|
||||
"searchLabel": "Adicionar membros inserindo nome ou e-mail",
|
||||
"searchPlaceholder": "Digite nome ou e-mail",
|
||||
"inviteAsAMember": "Convidar como membro",
|
||||
"inviteNewMemberByEmail": "Convidar novo membro por e-mail"
|
||||
|
||||
}
|
||||
"title": "Membros do Projeto",
|
||||
"searchLabel": "Adicionar membros inserindo nome ou e-mail",
|
||||
"searchPlaceholder": "Digite nome ou e-mail",
|
||||
"inviteAsAMember": "Convidar como membro",
|
||||
"inviteNewMemberByEmail": "Convidar novo membro por e-mail"
|
||||
}
|
||||
|
||||
@@ -1,13 +1,31 @@
|
||||
{
|
||||
"importTasks": "Importar tarefas",
|
||||
"createTask": "Criar tarefa",
|
||||
"settings": "Configurações",
|
||||
"subscribe": "Inscrever-se",
|
||||
"unsubscribe": "Cancelar inscrição",
|
||||
"deleteProject": "Excluir projeto",
|
||||
"startDate": "Data de início",
|
||||
"endDate": "Data de fim",
|
||||
"projectSettings": "Configurações do projeto",
|
||||
"projectSummary": "Resumo do projeto",
|
||||
"receiveProjectSummary": "Receber um resumo do projeto todas as noites."
|
||||
}
|
||||
"importTasks": "Importar tarefas",
|
||||
"importTask": "Importar tarefa",
|
||||
"createTask": "Criar tarefa",
|
||||
"settings": "Configurações",
|
||||
"subscribe": "Inscrever-se",
|
||||
"unsubscribe": "Cancelar inscrição",
|
||||
"deleteProject": "Excluir projeto",
|
||||
"startDate": "Data de início",
|
||||
"endDate": "Data de fim",
|
||||
"projectSettings": "Configurações do projeto",
|
||||
"projectSummary": "Resumo do projeto",
|
||||
"receiveProjectSummary": "Receber um resumo do projeto todas as noites.",
|
||||
"refreshProject": "Atualizar projeto",
|
||||
"saveAsTemplate": "Salvar como modelo",
|
||||
"invite": "Convidar",
|
||||
"share": "Compartilhar",
|
||||
"subscribeTooltip": "Inscrever-se nas notificações do projeto",
|
||||
"unsubscribeTooltip": "Cancelar inscrição nas notificações do projeto",
|
||||
"refreshTooltip": "Atualizar dados do projeto",
|
||||
"settingsTooltip": "Abrir configurações do projeto",
|
||||
"saveAsTemplateTooltip": "Salvar este projeto como modelo",
|
||||
"inviteTooltip": "Convidar membros da equipe para este projeto",
|
||||
"createTaskTooltip": "Criar uma nova tarefa",
|
||||
"importTaskTooltip": "Importar tarefa do modelo",
|
||||
"navigateBackTooltip": "Voltar para a lista de projetos",
|
||||
"projectStatusTooltip": "Status do projeto",
|
||||
"projectDatesInfo": "Informações da linha do tempo do projeto",
|
||||
"projectCategoryTooltip": "Categoria do projeto",
|
||||
"defaultTaskName": "Tarefa Sem Título"
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"taskIncludesOptions": {
|
||||
"statuses": "Status",
|
||||
"phases": "Fases",
|
||||
"labels": "Etiquetas",
|
||||
"labels": "Etiquetas",
|
||||
"name": "Nome",
|
||||
"priority": "Prioridade",
|
||||
"status": "Status",
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"title": "Aparência",
|
||||
"darkMode": "Modo Escuro",
|
||||
"darkModeDescription": "Alterne entre o modo claro e escuro para personalizar sua experiência de visualização."
|
||||
}
|
||||
@@ -7,4 +7,4 @@
|
||||
"searchPlaceholder": "Pesquisar por nome",
|
||||
"emptyText": "As categorias podem ser criadas ao atualizar ou criar projetos.",
|
||||
"colorChangeTooltip": "Clique para mudar a cor"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,4 +19,4 @@
|
||||
"createClientErrorMessage": "Criar cliente falhou!",
|
||||
"updateClientSuccessMessage": "Atualizar cliente sucesso!",
|
||||
"updateClientErrorMessage": "Atualizar cliente falhou!"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,4 +17,4 @@
|
||||
"createJobTitleErrorMessage": "Falha ao criar título de emprego!",
|
||||
"updateJobTitleSuccessMessage": "Atualizar título de emprego com sucesso!",
|
||||
"updateJobTitleErrorMessage": "Falha ao atualizar título de emprego!"
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user