Files
teOS/apps/web/messages/en.json
Flexomatic81 0e8d5aef85 feat: add Docker deployment, web installer, and local test environment
- Multi-stage Dockerfiles for API (NestJS) and Web (Next.js standalone)
- docker-compose.prod.yml: full production stack (postgres, redis, keycloak,
  api, web) with optional Caddy/Let's Encrypt via --profile ssl
- docker-compose.local.yml: identical local test stack, all ports exposed
- docker/postgres/init.sql: auto-creates tos_app DB on first start
- Caddyfile: reverse proxy for app domain + auth subdomain
- install.sh: interactive installer (domain, SSL mode, secret generation)
- NestJS SetupModule: @Public() endpoints for /setup/status, /setup/admin,
  /setup/branding, /setup/complete with setup-token guard
- Web installer: 4-step flow (system check, admin creation, branding, complete)
  at /[locale]/setup/* with public middleware bypass
- i18n: installer namespace added to de.json and en.json
- CORS: x-setup-token header allowed in main.ts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 21:17:34 +01:00

1136 lines
39 KiB
JSON

{
"common": {
"save": "Save",
"cancel": "Cancel",
"delete": "Delete",
"edit": "Edit",
"create": "Create",
"search": "Search",
"filter": "Filter",
"loading": "Loading...",
"error": "An error occurred",
"success": "Success",
"confirm": "Confirm",
"back": "Back",
"next": "Next",
"close": "Close",
"yes": "Yes",
"no": "No",
"all": "All",
"none": "None",
"select": "Select",
"submit": "Submit",
"reset": "Reset",
"refresh": "Refresh",
"export": "Export",
"import": "Import",
"download": "Download",
"upload": "Upload",
"actions": "Actions",
"openMenu": "Open menu",
"retry": "Try again",
"noData": "No data available",
"noResults": "No results found.",
"loadingError": "Loading error",
"columns": "Columns",
"rowsPerPage": "Rows per page",
"page": "Page",
"of": "of",
"rowsSelected": "{selected} of {total} row(s) selected.",
"completed": "Completed",
"cancelled": "Cancelled",
"inProgress": "In Progress",
"notStarted": "Not Started",
"problem": "Problem",
"noRolesAssigned": "No roles assigned"
},
"auth": {
"login": "Login",
"logout": "Logout",
"loginTitle": "Welcome to tOS",
"loginSubtitle": "Sign in with your company account",
"loginButton": "Sign in with Keycloak",
"loggingIn": "Signing in...",
"logoutButton": "Sign out",
"sessionExpired": "Your session has expired. Please sign in again.",
"unauthorized": "You are not authorized to perform this action."
},
"navigation": {
"dashboard": "Dashboard",
"lean": "LEAN",
"hr": "HR",
"integrations": "Integrations",
"admin": "Administration",
"settings": "Settings",
"profile": "Profile",
"help": "Help",
"s3Planning": "3S Planning",
"morningMeeting": "Morning Meeting",
"skillMatrix": "Skill Matrix",
"employees": "Employees",
"timeTracking": "Time Tracking",
"absences": "Absences",
"orgChart": "Org Chart",
"onboarding": "Onboarding",
"reviews": "Employee Reviews",
"users": "Users",
"departments": "Departments",
"overview": "Overview",
"plentyOne": "PlentyONE",
"zulip": "ZULIP",
"systemSettings": "Settings"
},
"dashboard": {
"title": "Dashboard",
"welcome": "Welcome, {name}!",
"welcomeBack": "Welcome back, {name}!",
"overview": "Your personal overview",
"quickActions": "Quick Actions",
"recentActivity": "Recent Activity",
"notifications": "Notifications",
"noNotifications": "No new notifications",
"todaysTasks": "Today's Tasks",
"upcomingEvents": "Upcoming Events",
"reset": "Reset",
"done": "Done",
"customize": "Customize",
"editModeActive": "Edit mode active:",
"editModeDescription": "Drag widgets to rearrange them. Click the X to remove a widget."
},
"widgets": {
"addWidget": "Add Widget",
"addWidgetTitle": "Add Widget",
"addWidgetDescription": "Select a widget to add to your dashboard",
"searchWidgets": "Search widgets...",
"noWidgetsFound": "No widgets found",
"alreadyAdded": "Already added",
"categories": {
"all": "All",
"general": "General",
"productivity": "Productivity",
"analytics": "Analytics",
"communication": "Communication",
"integrations": "Integrations"
},
"clock": {
"name": "Clock",
"description": "Shows the current time and date"
},
"welcome": {
"name": "Welcome",
"description": "Personal greeting with user information",
"goodMorning": "Good morning",
"goodAfternoon": "Good afternoon",
"goodEvening": "Good evening",
"goodNight": "Good night",
"subtitle": "What would you like to accomplish today?"
},
"quickActions": {
"name": "Quick Actions",
"description": "Quick access to common actions",
"clockIn": "Clock In",
"requestVacation": "Request Vacation",
"scheduleMeeting": "Schedule Meeting",
"createDocument": "Create Document"
},
"stats": {
"name": "Statistics",
"description": "Key metrics at a glance",
"presentToday": "Present Today",
"openTasks": "Open Tasks",
"upcomingMeetings": "Upcoming Meetings",
"openTickets": "Open Tickets",
"trendPresentToday": "+3 since yesterday",
"trendOpenTasks": "5 with high priority",
"trendUpcomingMeetings": "This week",
"trendOpenTickets": "-5 compared to yesterday"
},
"calendar": {
"name": "Calendar",
"description": "Mini calendar with appointments"
},
"activity": {
"name": "Activity",
"description": "Recent activities and events",
"noActivity": "No current activities"
},
"notifications": {
"name": "Notifications",
"description": "Current notifications"
},
"tasks": {
"name": "Tasks",
"description": "Your current tasks"
},
"orders": {
"name": "Orders",
"description": "Recent PlentyONE orders",
"noOrders": "No orders available",
"viewAll": "View all orders",
"viewDetails": "View details",
"markShipped": "Mark as shipped",
"error": "Error loading orders",
"status": {
"new": "New",
"processing": "Processing",
"shipped": "Shipped",
"delivered": "Delivered",
"cancelled": "Cancelled",
"returned": "Returned"
}
},
"chat": {
"name": "Chat",
"description": "ZULIP messages and streams",
"noMessages": "No messages available",
"viewAll": "View all messages",
"reply": "Reply",
"replyPlaceholder": "Enter message..."
},
"todoistTasks": {
"name": "Todoist Tasks",
"description": "Tasks due today from Todoist",
"noTasks": "No tasks for today",
"addTask": "Add task",
"add": "Add",
"newTaskPlaceholder": "Enter new task...",
"viewAll": "View all tasks"
},
"tickets": {
"name": "Support Tickets",
"description": "Open FreeScout tickets",
"noTickets": "No tickets available",
"viewAll": "View all tickets",
"viewTicket": "View ticket",
"reply": "Reply",
"assign": "Assign",
"filterStatus": "Filter by status",
"status": {
"all": "All",
"open": "Open",
"pending": "Pending",
"resolved": "Resolved",
"closed": "Closed"
},
"priority": {
"urgent": "Urgent",
"high": "High",
"medium": "Medium",
"low": "Low"
}
},
"files": {
"name": "Files",
"description": "Recently modified Nextcloud files",
"noFiles": "No files available",
"download": "Download",
"openNextcloud": "Open in Nextcloud"
},
"documents": {
"name": "Documents",
"description": "ecoDMS document archive",
"noDocuments": "No documents available",
"noResults": "No results found",
"download": "Download",
"openEcoDms": "Open in ecoDMS",
"searchPlaceholder": "Search documents..."
},
"gembadocs": {
"name": "GembaDocs",
"description": "Audits, findings and compliance status",
"upcomingAudits": "Upcoming Audits",
"noAudits": "No audits scheduled",
"openFindings": "Open Findings",
"complianceScore": "Compliance Score",
"severity": {
"critical": "Critical",
"high": "High",
"medium": "Medium",
"low": "Low"
},
"auditType": {
"internal": "Internal",
"external": "External",
"certification": "Certification"
},
"daysLeft": "{days} days",
"today": "Today",
"tomorrow": "Tomorrow",
"viewAll": "View all audits",
"openGembaDocs": "Open in GembaDocs"
},
"noWidgets": "No widgets added",
"noWidgetsDescription": "Add widgets to personalize your dashboard.",
"addWidgetButton": "Add widget",
"settings": "Settings",
"remove": "Remove"
},
"hr": {
"title": "Human Resources",
"description": "Manage employees, time tracking and absences",
"employee": "Employee",
"newEmployee": "New Employee",
"createEmployee": "Create Employee",
"timeTracking": {
"title": "Time Tracking",
"description": "Record your working hours and manage your time account",
"noData": "No time data available",
"noDataDesc": "No working hours have been recorded yet.",
"clockIn": "Clock In",
"clockOut": "Clock Out",
"startBreak": "Start Break",
"endBreak": "End Break",
"working": "Working",
"onBreak": "On Break",
"notWorking": "Not Clocked In",
"workDuration": "Work Duration Today",
"since": "since",
"todayWorked": "Worked Today",
"todayBreak": "Break Today",
"clockedIn": "Clocked In",
"clockedInDesc": "You have successfully clocked in.",
"clockedOut": "Clocked Out",
"clockedOutDesc": "You have successfully clocked out.",
"breakStarted": "Break Started",
"breakStartedDesc": "Enjoy your break!",
"breakEnded": "Break Ended",
"breakEndedDesc": "Welcome back!",
"errorClockIn": "Error clocking in",
"errorClockOut": "Error clocking out",
"errorBreakStart": "Error starting break",
"errorBreakEnd": "Error ending break",
"errorLoading": "Error loading time tracking",
"recentEntries": "Recent Entries",
"recentEntriesDesc": "Your working hours from recent days",
"entries": "Entries",
"summary": "Summary",
"noEntries": "No entries available",
"errorLoadingEntries": "Error loading entries",
"break": "Break",
"overtime": "Overtime",
"corrected": "Corrected",
"pendingApproval": "Pending Approval",
"requestCorrection": "Request Correction",
"date": "Date",
"reason": "Reason",
"reasonPlaceholder": "Please provide a reason for the correction...",
"noteRequired": "A reason is required",
"correctionSubmitted": "Correction Request Submitted",
"correctionSubmittedDesc": "Your request is being reviewed.",
"errorSubmitCorrection": "Error submitting correction request",
"requestCorrectionDesc": "Request a correction for incorrect time entries",
"breakStart": "Break Start",
"breakEnd": "Break End",
"monthlySummary": "Monthly Summary",
"progress": "Progress",
"worked": "worked",
"target": "Target",
"balance": "Balance",
"totalHours": "Total",
"workDays": "Work Days",
"absencesThisMonth": "Absences This Month",
"sickDays": "Sick Days",
"vacationDays": "Vacation Days",
"errorLoadingSummary": "Error loading summary",
"timeAccount": "Time Account"
},
"absences": {
"title": "Absences",
"description": "Manage your vacation and absence requests",
"noData": "No absences available",
"noDataDesc": "No absences have been recorded yet.",
"vacationBalance": "Vacation Balance",
"daysRemaining": "days remaining",
"used": "used",
"pending": "pending",
"available": "available",
"totalEntitlement": "Entitlement",
"taken": "Taken",
"planned": "Planned",
"carriedOver": "Carried Over",
"days": "days",
"day": "day",
"total": "Total",
"expirationWarning": "Days Expiring",
"expirationWarningDesc": "{days} carried over days will expire on {date}",
"errorLoadingBalance": "Error loading vacation balance",
"myRequests": "My Requests",
"myRequestsDesc": "All your absence requests",
"teamCalendar": "Team Calendar",
"teamCalendarDesc": "Overview of all team absences",
"approvals": "Approvals",
"newRequest": "New Request",
"newRequestDesc": "Create a new absence request",
"createFirstRequest": "Create First Request",
"noRequests": "No requests available",
"errorLoadingRequests": "Error loading requests",
"errorLoadingCalendar": "Error loading calendar",
"type": "Type",
"selectType": "Select type",
"startDate": "From",
"endDate": "To",
"halfDay": "Half Day",
"selectPeriod": "Select period",
"morning": "Morning",
"afternoon": "Afternoon",
"note": "Note",
"notePlaceholder": "Optional note for the request...",
"fillRequiredFields": "Please fill all required fields",
"invalidDateRange": "End date must be after start date",
"submitRequest": "Submit Request",
"requestSubmitted": "Request Submitted",
"requestSubmittedDesc": "Your request has been submitted for approval.",
"errorSubmitRequest": "Error submitting request",
"cancel": "Cancel",
"cancelled": "Request Cancelled",
"cancelledDesc": "Your request has been cancelled.",
"errorCancel": "Error cancelling request",
"rejectionReason": "Rejection Reason",
"approvedBy": "Approved by",
"pendingApprovals": "Pending Approvals",
"pendingApprovalsDesc": "Requests awaiting approval",
"pendingApprovalsManagerDesc": "Approve or reject your employees' requests",
"approve": "Approve",
"reject": "Reject",
"approved": "Approved",
"approvedDesc": "The request has been approved.",
"rejected": "Rejected",
"rejectedDesc": "The request has been rejected.",
"errorApprove": "Error approving request",
"errorReject": "Error rejecting request",
"rejectRequest": "Reject Request",
"rejectRequestDesc": "Please provide a reason for the rejection.",
"rejectionReasonPlaceholder": "Reason for rejection...",
"selectDepartment": "Select department",
"today": "Today",
"overview": "Overview",
"more": "more"
},
"clockIn": "Clock In",
"clockOut": "Clock Out",
"breakStart": "Start Break",
"breakEnd": "End Break",
"currentlyWorking": "Currently Working",
"onBreak": "On Break",
"totalHours": "Total Hours",
"overtime": "Overtime",
"overtimeBalance": "Overtime Balance",
"vacation": "Vacation",
"sick": "Sick",
"homeOffice": "Home Office",
"specialLeave": "Special Leave",
"requestVacation": "Request Vacation",
"vacationBalance": "Vacation Days",
"vacationDaysTotal": "Total Vacation Days",
"vacationDaysUsed": "Vacation Days Used",
"vacationDaysRemaining": "Vacation Days Remaining",
"vacationOverview": "Vacation Overview",
"daysUsed": "days used",
"remaining": "remaining",
"used": "used",
"pending": "pending",
"absenceTypes": {
"vacation": "Vacation",
"sick": "Sick",
"sickChild": "Sick Child",
"homeOffice": "Home Office",
"specialLeave": "Special Leave",
"unpaidLeave": "Unpaid Leave",
"parentalLeave": "Parental Leave",
"businessTrip": "Business Trip",
"training": "Training",
"compensation": "Compensation"
},
"absenceStatus": {
"pending": "Pending",
"approved": "Approved",
"rejected": "Rejected",
"cancelled": "Cancelled"
},
"timeStatus": {
"clockedIn": "Working",
"onBreak": "On Break",
"clockedOut": "Clocked Out"
},
"modules": {
"employees": {
"description": "Manage employee master data"
},
"timeTracking": {
"description": "Record and analyze working hours"
},
"absences": {
"description": "Vacation, sick leave and other absences"
},
"orgChart": {
"description": "Visualize organizational structure"
}
},
"employees": {
"title": "Employee List",
"subtitle": "Overview of all employees",
"description": "Manage employee master data",
"new": "New Employee",
"newSubtitle": "Fill out the form to create a new employee",
"newDescription": "Create a new employee",
"details": "Employee Details",
"detailsDescription": "Detailed employee information"
},
"stats": {
"totalEmployees": "Total Employees",
"activeEmployees": "Active Employees",
"onLeave": "On Leave",
"departments": "Departments",
"thisMonth": "this month",
"ofTotal": "of total",
"currentlyAbsent": "currently absent",
"activeDepartments": "active departments"
},
"employeeStatus": {
"active": "Active",
"inactive": "Inactive",
"on_leave": "On Leave",
"terminated": "Terminated"
},
"contractType": {
"label": "Contract Type",
"full_time": "Full Time",
"part_time": "Part Time",
"mini_job": "Mini Job",
"trainee": "Trainee",
"intern": "Intern",
"freelance": "Freelance"
},
"name": "Name",
"firstName": "First Name",
"lastName": "Last Name",
"email": "Email",
"phone": "Phone",
"position": "Position",
"department": "Department",
"manager": "Manager",
"roles": "Roles",
"status": "Status",
"hireDate": "Hire Date",
"terminationDate": "Termination Date",
"weeklyHours": "Weekly Hours",
"weeklyTarget": "Weekly Target",
"employeeNumber": "Employee Number",
"selectDepartment": "Select department",
"selectDate": "Select date",
"filterByStatus": "Filter by status",
"filterByContract": "Filter by contract type",
"searchEmployees": "Search employees...",
"viewDetails": "View Details",
"terminate": "Terminate",
"reactivate": "Reactivate",
"confirmDelete": "Are you sure you want to terminate {name}?",
"employeeNotFound": "Employee Not Found",
"employeeNotFoundDesc": "The requested employee does not exist.",
"backToList": "Back to List",
"noEmployeesFound": "No employees found",
"departmentBreakdown": "Employees by Department",
"departmentBreakdownDesc": "Distribution of employees across departments",
"noDepartments": "No departments available",
"address": "Address",
"street": "Street",
"city": "City",
"zipCode": "ZIP Code",
"country": "Country",
"emergencyContact": "Emergency Contact",
"emergencyName": "Name",
"emergencyPhone": "Phone",
"emergencyRelationship": "Relationship",
"employmentDetails": "Employment Details",
"form": {
"personalInfo": "Personal Information",
"personalInfoDesc": "Basic information about the employee",
"employmentDetails": "Employment Details",
"employmentDetailsDesc": "Contract details and working hours",
"address": "Address",
"addressDesc": "Employee's home address (optional)",
"emergencyContact": "Emergency Contact",
"emergencyContactDesc": "Contact person for emergencies (optional)"
},
"tabs": {
"overview": "Overview",
"timeAccount": "Time Account",
"absences": "Absences"
},
"orgChart": {
"title": "Organization Chart",
"subtitle": "Hierarchical view of the organizational structure",
"description": "Visualize organizational structure"
},
"expandAll": "Expand All",
"collapseAll": "Collapse All",
"fullscreen": "Fullscreen",
"exitFullscreen": "Exit Fullscreen",
"directReports": "Direct Reports",
"errorLoadingOrgChart": "Error loading organization chart",
"toast": {
"employeeCreated": "Employee Created",
"employeeCreatedDesc": "The employee has been created successfully.",
"employeeUpdated": "Employee Updated",
"employeeUpdatedDesc": "The changes have been saved.",
"employeeDeleted": "Employee Terminated",
"employeeDeletedDesc": "The employee has been marked as terminated.",
"errorCreate": "Error creating employee",
"errorUpdate": "Error updating employee",
"errorDelete": "Error terminating employee"
}
},
"lean": {
"title": "LEAN Management",
"description": "Continuous improvement and shopfloor management",
"modules": {
"s3-planning": {
"title": "3S Planning",
"description": "Seiri, Seiton, Seiso - Sort, Set in Order, Shine",
"status": "Active"
},
"morning-meeting": {
"title": "Morning Meeting",
"description": "Daily shopfloor meetings with SQCDM",
"status": "Active"
},
"skill-matrix": {
"title": "Skill Matrix",
"description": "Qualification management and skill development",
"status": "Active"
}
},
"stats": {
"s3Completion": "3S Completion",
"meetingsThisWeek": "Meetings This Week",
"openActions": "Open Actions",
"skillCoverage": "Skill Coverage"
},
"s3": {
"title": "3S Planning",
"seiri": "Seiri (Sort)",
"seiton": "Seiton (Set in Order)",
"seiso": "Seiso (Shine)",
"week": "Week",
"status": {
"not_started": "Not Started",
"in_progress": "In Progress",
"completed": "Completed",
"issue": "Issue"
},
"statusDescNotStarted": "No activity yet",
"statusDescInProgress": "Work in progress",
"statusDescCompleted": "Successfully completed",
"statusDescIssue": "Action required",
"completedByAt": "Completed by {name} on {date}",
"noDataAvailable": "No data available",
"completionRate": "Completion rate",
"statusOverview": "3S Status Overview",
"done": "Done",
"working": "In Progress",
"problems": "Problems",
"openStatus": "Open",
"loadingError": "Error loading plans",
"noPlansFound": "No plans found for the selected period",
"overviewSubtitle": "Overview of all department 3S plans",
"newPlan": "New Plan",
"year": "Year",
"allMonths": "All Months",
"totalCompletionRate": "Total Completion Rate",
"ofEntries": "{count} of {total} entries",
"activePlans": "Active Plans",
"entriesActive": "Entries active",
"requireActions": "require actions",
"departmentPlans": "Department Plans",
"percentCompleted": "{percent}% completed",
"categories": "Categories",
"clickToEdit": "Click to edit",
"editStatus": "Edit Status",
"noteOptional": "Note (optional)",
"additionalInfo": "Additional information...",
"characters": "characters",
"photo": "Photo",
"statusPhoto": "Status Photo",
"addPhoto": "Add photo (in development)",
"loadingPlanError": "Error loading plan",
"noPlanForMonth": "No plan for {month} {year} available",
"createPlan": "Create plan",
"addCategory": "Add category",
"legend": "Legend",
"noCategories": "No categories available",
"planDetails": "Plan Details",
"createdBy": "Created by",
"createdAt": "Created at",
"statusActive": "Active",
"statusInactive": "Inactive",
"statusUpdated": "Status updated",
"statusUpdatedDesc": "The status has been saved successfully.",
"statusUpdateError": "The status could not be updated.",
"month": "Month",
"yearView": "Year",
"monthView": "Month"
},
"morningMeeting": {
"title": "Morning Meeting",
"overview": "Overview of all department meetings and open actions",
"noMeetingToday": "No meeting for today",
"noMeetingTodayDesc": "No morning meeting has been created for this department today.",
"departments": "Departments",
"currentMeetings": "Current Meetings",
"openActions": "Open Actions",
"noOpenActions": "No open actions",
"history": "History",
"settings": "Settings",
"backToOverview": "Back to Overview",
"refresh": "Refresh",
"sqcdm": {
"safety": "Safety",
"quality": "Quality",
"cost": "Cost",
"delivery": "Delivery",
"morale": "Morale"
},
"status": {
"scheduled": "Scheduled",
"inProgress": "In Progress",
"completed": "Completed",
"cancelled": "Cancelled"
},
"timer": {
"duration": "Duration",
"totalDuration": "Total Duration",
"targetTime": "Target Time",
"ready": "Ready",
"remaining": "Remaining",
"overtime": "Overtime",
"targetExceeded": "Target time exceeded",
"meetingCompleted": "Meeting completed"
},
"kpi": {
"noKpis": "No KPIs defined",
"target": "Target",
"trend": {
"up": "Rising",
"down": "Falling",
"stable": "Stable",
"none": "No trend"
},
"status": {
"green": "Green",
"yellow": "Yellow",
"red": "Red",
"neutral": "Neutral"
}
},
"actions": {
"title": "Actions",
"new": "New Action",
"add": "Add",
"noActions": "No actions available",
"noActionsFiltered": "No actions match this filter",
"open": "open",
"inProgress": "in progress",
"completed": "completed",
"showCompleted": "Show completed",
"filterAll": "All",
"notAssigned": "Not assigned",
"priority": {
"low": "Low",
"medium": "Medium",
"high": "High",
"critical": "Critical"
},
"status": {
"open": "Open",
"inProgress": "In Progress",
"completed": "Completed",
"cancelled": "Cancelled"
}
},
"toast": {
"meetingStarted": "Meeting started",
"meetingStartedDesc": "The morning meeting has been started.",
"meetingEnded": "Meeting ended",
"meetingEndedDesc": "The morning meeting has been completed.",
"kpiUpdated": "KPI updated",
"kpiUpdatedDesc": "The KPI value has been saved.",
"actionCreated": "Action created",
"actionCreatedDesc": "The new action has been added.",
"actionUpdated": "Action updated",
"actionUpdatedDesc": "The action has been saved.",
"actionCompleted": "Action completed",
"actionCompletedDesc": "The action has been marked as done.",
"error": "Error",
"errorStartMeeting": "Could not start the meeting.",
"errorEndMeeting": "Could not end the meeting.",
"errorUpdateKpi": "Could not update the KPI.",
"errorCreateAction": "Could not create the action.",
"errorUpdateAction": "Could not update the action.",
"errorCompleteAction": "Could not complete the action."
},
"notes": "Notes",
"noNotes": "No notes available",
"participants": "Participants",
"participantCount": "{count} participants",
"conductor": "Conductor",
"startMeeting": "Start Meeting",
"endMeeting": "End Meeting",
"loadingError": "Loading error",
"loadingErrorDesc": "The meeting could not be loaded.",
"noMeetingForDepartment": "No morning meeting has been created for {department} today.",
"noMeetingsFound": "No meetings found",
"allStatuses": "All statuses",
"departmentsTitle": "Departments",
"currentMeetingsTitle": "Current Meetings",
"openActionsTitle": "Open Actions",
"openCount": "{count} open"
},
"skillMatrix": {
"title": "Skill Matrix",
"description": "Qualification management and skill development for all departments",
"levels": {
"0": "No Knowledge",
"1": "Basics",
"2": "Independent",
"3": "Expert",
"4": "Can Train"
},
"employee": "Employee",
"employees": "Employees",
"addSkill": "Add Skill",
"totalEmployees": "Total Employees",
"inDepartments": "in {count} departments",
"avgCoverage": "Average Coverage",
"avgLevel": "Average Level",
"trainers": "Trainers",
"targetLevel": "Target Level",
"vsLastMonth": "vs. last month",
"searchDepartment": "Search department",
"noDepartmentsFound": "No departments found",
"coverage": "Coverage",
"trend": {
"label": "Trend",
"up": "Rising",
"down": "Falling",
"stable": "Stable"
},
"notFound": "Skill Matrix not found",
"subtitle": "{employees} employees | {skills} skills",
"unsavedChanges": "unsaved changes",
"matrixView": "Matrix",
"gapAnalysis": "Gap Analysis",
"gapAnalysisDescription": "Comparison between current and target level",
"gapAnalysisSettings": "Analysis Settings",
"gapAnalysisSettingsDescription": "Select the target level for gap analysis",
"noGapData": "No analysis data available",
"actualLevel": "Actual Level",
"gap": "Gap",
"belowTarget": "Below Target",
"atOrAboveTarget": "At/Above Target",
"criticalGaps": "Critical Gaps",
"warningGaps": "Warnings",
"noGap": "No Gap",
"averageGap": "Average Gap",
"levelUpdated": "Level updated",
"levelUpdatedDescription": "The change has been queued",
"changesSaved": "Changes saved",
"saveError": "Error saving",
"noEmployeesFound": "No employees found"
},
"s3Planning": "3S Planning",
"department": "Department",
"status": "Status",
"measures": "Measures",
"responsible": "Responsible",
"dueDate": "Due Date",
"completed": "Completed",
"inProgress": "In Progress",
"open": "Open",
"skillLevel": "Skill Level",
"skills": "Skills",
"noKnowledge": "No Knowledge",
"basics": "Basics",
"independent": "Independent",
"expert": "Expert",
"canTrain": "Can Train"
},
"integrations": {
"title": "Integrations",
"subtitle": "Manage your external services and integrations",
"connected": "Connected",
"disconnected": "Disconnected",
"error": "Error",
"configuring": "Configuring",
"configure": "Configure",
"test": "Test Connection",
"testing": "Testing...",
"testSuccess": "Connection successful",
"testFailed": "Connection failed",
"testError": "Could not perform test",
"lastSync": "Last Sync",
"never": "Never",
"syncNow": "Sync Now",
"details": "Details",
"enable": "Enable",
"disable": "Disable",
"credentials": "Credentials",
"apiUrl": "API URL",
"apiKey": "API Key",
"username": "Username",
"password": "Password",
"syncInterval": "Sync Interval",
"minutes": "Minutes",
"saveSettings": "Save Settings",
"plentyOne": "PlentyONE",
"plentyOneDesc": "E-commerce and inventory management",
"zulip": "ZULIP",
"zulipDesc": "Team communication and chat",
"todoist": "Todoist",
"todoistDesc": "Task management",
"freeScout": "FreeScout",
"freeScoutDesc": "Helpdesk and ticket system",
"nextcloud": "Nextcloud",
"nextcloudDesc": "File management and collaboration",
"ecoDms": "ecoDMS",
"ecoDmsDesc": "Document management system",
"gembaDocs": "GembaDocs",
"gembaDocsDesc": "Audits, compliance and findings",
"overview": "Overview",
"allIntegrations": "All Integrations",
"connectedCount": "{count} connected",
"errorCount": "{count} with errors",
"data": "Data",
"settingsTab": "Settings",
"logs": "Logs",
"configureCredentials": "Configure the credentials for this integration",
"settingsManagedViaAdmin": "Settings are managed via the admin interface.",
"syncLogs": "Sync Logs",
"recentSyncActivity": "Recent sync activities",
"syncSuccessful": "Sync successful",
"lastError": "Last error:",
"notFound": "Integration not found.",
"streams": "Streams",
"subscribedStreams": "Your subscribed ZULIP streams",
"unread": "Unread",
"messagesToday": "Messages today",
"recentMessages": "Recent Messages",
"currentMessages": "Current messages from your streams",
"noStreamsFound": "No streams found",
"documents": "Documents",
"classifications": "Classifications",
"documentCategories": "Document categories in the archive",
"archived": "Archived",
"addedToday": "Added today",
"documentsTitle": "Documents",
"documentsFromArchive": "Documents from the ecoDMS archive",
"documentTitle": "Title",
"classification": "Classification",
"tags": "Tags",
"size": "Size",
"created": "Created",
"noClassificationsFound": "No classifications found",
"dueToday": "Due today",
"totalOpen": "Total open",
"highPriority": "High priority",
"projects": "Projects",
"yourProjects": "Your Todoist projects",
"tasks": "Tasks",
"allOpenTasks": "All open tasks",
"noProjectsFound": "No projects found",
"noPriority": "No priority",
"priority1": "Priority 1",
"priority2": "Priority 2",
"priority3": "Priority 3",
"complianceScore": "Compliance Score",
"audits": "Audits",
"openFindings": "Open Findings",
"critical": "Critical",
"findingsBySeverity": "Findings by Severity",
"allAuditsStatus": "All audits and their status",
"searchAudits": "Search audits...",
"type": "Type",
"department": "Department",
"findings": "Findings",
"scheduled": "Scheduled",
"noAuditsFound": "No audits found",
"noAuditsAvailable": "No audits available",
"today": "Today",
"synchronization": "Synchronization",
"settingsSaved": "{name} settings have been saved"
},
"admin": {
"title": "Administration",
"overview": "Overview",
"users": "Users",
"roles": "Roles",
"departments": "Departments",
"settings": "System Settings",
"auditLog": "Audit Log",
"userManagement": "User Management",
"createUser": "Create User",
"editUser": "Edit User",
"deleteUser": "Delete User",
"assignRole": "Assign Role",
"integrationManagement": "Integration Management",
"integrationManagementDesc": "Configure credentials and settings for external services"
},
"settings": {
"title": "Settings",
"subtitle": "Manage your account settings and preferences",
"general": "General",
"appearance": "Appearance",
"notifications": "Notifications",
"language": "Language",
"theme": "Theme",
"lightMode": "Light",
"darkMode": "Dark",
"systemDefault": "System Default",
"profile": "Profile",
"account": "Account",
"security": "Security",
"changePassword": "Change Password",
"twoFactor": "Two-Factor Authentication",
"profileTitle": "Profile",
"profileDescription": "Manage your personal information",
"preferencesTitle": "Preferences",
"preferencesDescription": "Customize theme and language",
"notificationsTitle": "Notifications",
"notificationsDescription": "Configure your notification settings",
"securityTitle": "Security",
"securityDescription": "Manage password and two-factor authentication",
"profilePicture": "Profile Picture",
"profilePictureSyncedFromKeycloak": "Your profile picture is synced from Keycloak",
"profilePictureManagedInKeycloak": "The profile picture is managed centrally in Keycloak.",
"changeImageViaKeycloak": "Change image (via Keycloak)",
"personalInformation": "Personal Information",
"personalInformationDesc": "This data is synced from Keycloak and can be changed there",
"name": "Name",
"email": "Email",
"departmentLabel": "Department",
"memberSince": "Member since",
"notAssigned": "Not assigned",
"contactAdminToChange": "To change your personal data, please contact your administrator or change the data directly in Keycloak.",
"rolesAndPermissions": "Roles and Permissions",
"assignedRoles": "Your assigned roles in the system"
},
"errors": {
"notFound": "Page Not Found",
"notFoundDescription": "The requested page does not exist.",
"serverError": "Server Error",
"serverErrorDescription": "An unexpected error occurred. Please try again later.",
"unauthorized": "Unauthorized",
"unauthorizedDescription": "You are not authorized to view this page.",
"forbidden": "Access Denied",
"forbiddenDescription": "You do not have permission to perform this action.",
"networkError": "Network Error",
"networkErrorDescription": "Could not connect to the server.",
"goHome": "Go to Home",
"tryAgain": "Try Again"
},
"validation": {
"required": "This field is required",
"email": "Please enter a valid email address",
"minLength": "At least {min} characters required",
"maxLength": "Maximum {max} characters allowed",
"passwordMatch": "Passwords do not match",
"invalidDate": "Invalid date",
"invalidNumber": "Invalid number"
},
"time": {
"today": "Today",
"yesterday": "Yesterday",
"tomorrow": "Tomorrow",
"thisWeek": "This Week",
"lastWeek": "Last Week",
"thisMonth": "This Month",
"lastMonth": "Last Month",
"thisYear": "This Year",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
"days": "days"
},
"systemSettings": {
"title": "System Settings",
"description": "Manage global application configuration",
"general": "General",
"cors": "CORS",
"sync": "Synchronization",
"features": "Features",
"branding": "Branding",
"appName": "Application Name",
"companyName": "Company Name",
"logoUrl": "Logo URL",
"corsOrigins": "Allowed Origins",
"corsOriginsDesc": "Comma-separated list of allowed origins for cross-origin requests",
"syncInterval": "Sync Interval",
"minutes": "minutes",
"enableSyncJobs": "Background Sync Jobs",
"enableSyncJobsDesc": "Automatic synchronization of integrations in the background",
"enableSwagger": "Swagger API Documentation",
"enableSwaggerDesc": "Interactive API documentation available at /api/docs (restart required)",
"saved": "Settings saved",
"saveError": "Failed to save settings",
"requiresRestart": "Change requires a backend restart",
"save": "Save"
},
"installer": {
"title": "tOS Setup",
"setupComplete": "Setup Complete",
"notAccessible": "After setup, this area will no longer be accessible.",
"steps": {
"systemCheck": "System Check",
"adminSetup": "Admin Account",
"branding": "Branding",
"complete": "Complete"
},
"systemCheck": {
"title": "System Check",
"description": "Checking all services for availability.",
"api": "API Server",
"database": "Database",
"keycloak": "Authentication",
"online": "Online",
"offline": "Unreachable",
"checking": "Checking...",
"continue": "Continue Setup",
"alreadyComplete": "Setup has already been completed.",
"redirecting": "Redirecting to dashboard..."
},
"adminSetup": {
"title": "Create Admin Account",
"description": "Create the first administrator account for tOS.",
"firstName": "First Name",
"lastName": "Last Name",
"email": "Email Address",
"password": "Password",
"passwordConfirm": "Confirm Password",
"passwordMismatch": "Passwords do not match",
"passwordTooShort": "Minimum 8 characters required",
"createAccount": "Create Account",
"creating": "Creating..."
},
"branding": {
"title": "Configure Branding",
"description": "Customize tOS for your company.",
"appName": "App Name",
"appNamePlaceholder": "tOS",
"companyName": "Company Name",
"companyNamePlaceholder": "My Company Inc.",
"logoUrl": "Logo URL",
"logoUrlPlaceholder": "https://example.com/logo.png",
"logoPreview": "Logo Preview",
"save": "Save & Continue",
"saving": "Saving...",
"skip": "Skip"
},
"complete": {
"title": "Setup Complete!",
"description": "tOS has been successfully set up and is ready to use.",
"completing": "Completing setup...",
"toDashboard": "Go to Dashboard",
"toLogin": "Go to Login"
}
}
}