PSA/server/public/locales/pt/msp/time-entry.json
Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

438 lines
14 KiB
JSON

{
"common": {
"actions": {
"view": "View",
"back": "Back",
"save": "Save Entry",
"saveGeneric": "Save",
"saving": "Saving...",
"cancel": "Cancel",
"reset": "Reset",
"delete": "Delete",
"change": "Change",
"select": "Select",
"getStarted": "Get Started",
"addItem": "Add Item",
"addEntry": "Entry",
"addComment": "Add Comment",
"adding": "Adding...",
"approve": "Approve",
"reject": "Reject",
"requestChanges": "Request Changes",
"reverseApproval": "Reverse Approval",
"reopen": "Reopen",
"reopenForEdits": "Reopen for edits",
"submitTimeSheet": "Submit Time Sheet",
"showDetails": "Show Details",
"hideDetails": "Hide Details",
"copyToAnotherDay": "Copy to another day",
"viewDetails": "View details",
"manageTimePeriods": "Manage Time Periods",
"selectWorkItem": "Select Work Item",
"clearFilter": "Clear filter"
},
"states": {
"inProgress": "In Progress",
"submitted": "Submitted",
"approved": "Approved",
"changesRequested": "Changes Requested",
"unknown": "Unknown",
"current": "Current",
"active": "Active",
"addressed": "Addressed",
"changeRequested": "Change requested",
"loading": "Loading..."
},
"fallbacks": {
"na": "N/A",
"none": "No entries",
"notFound": "Not found",
"untitled": "Untitled",
"unassigned": "Unassigned",
"noDueDate": "No due date",
"noServiceSelected": "No service selected",
"noNotes": "No notes",
"noUserFound": "No user found"
},
"units": {
"hoursShort": "h",
"minutesShort": "m",
"hoursAbbrev": "hrs",
"dayOne": "day",
"dayOther": "days",
"percentBillable": "{{value}}% billable"
},
"types": {
"all": "All Types",
"ticket": "Ticket",
"tickets": "Tickets",
"projectTask": "Project Task",
"projectTasks": "Project Tasks",
"interaction": "Interaction",
"interactions": "Interactions",
"adHocEntry": "Ad-hoc Entry",
"adHocEntries": "Ad-hoc Entries",
"billable": "Billable"
}
},
"timeTracking": {
"subjectUserLabel": "User"
},
"timeEntryProvider": {
"errors": {
"initialize": "Failed to initialize time entries"
}
},
"timePeriodList": {
"title": "Select a Time Period",
"columns": {
"period": "Period",
"status": "Status",
"hoursEntered": "Hours Entered",
"daysLogged": "Days Logged",
"lastEntry": "Last Entry",
"actions": "Actions"
},
"lastEntry": {
"none": "No entries"
}
},
"timeEntryForm": {
"labels": {
"service": "Service",
"date": "Date",
"startTime": "Start Time",
"endTime": "End Time",
"duration": "Duration",
"billable": "Billable",
"notes": "Notes",
"deleteTimeEntry": "Delete Time Entry",
"unsavedChanges": "Unsaved changes"
},
"placeholders": {
"selectService": "Select a service",
"selectDate": "Select date",
"addNotes": "Add notes"
},
"validation": {
"startBeforeEnd": "Start time must be earlier than end time",
"endAfterStart": "End time must be later than start time",
"durationMinimum": "Duration must be at least 1 minute",
"minimumDuration": "Minimum duration is 1 minute",
"serviceRequired": "Service is required for time entries",
"timePeriodRange": "Date must be within the current period ({{periodRange}})",
"endAfterStartPicker": "End time must be after start time",
"durationSameDay": "A duração deve terminar no mesmo dia",
"endSameDay": "A hora de término deve estar no mesmo dia da hora de início",
"invalidTimeRange": "Insira um intervalo de tempo válido"
}
},
"workItemPicker": {
"actions": {
"createAdHocEntry": "Create Ad-hoc Entry"
},
"placeholders": {
"search": "Search work items...",
"adHocTitle": "Enter title for ad-hoc entry",
"startTime": "Start time",
"endTime": "End time"
},
"filters": {
"includeInactive": "Include inactive",
"filters": "Filters",
"assignedTo": "Assigned to",
"assignedToMe": "Assigned to me",
"startDate": "Start date",
"endDate": "End date"
},
"empty": {
"searching": "Searching...",
"noWorkItems": "No work items found"
}
},
"workItemList": {
"meta": {
"assignedTo": "Assigned to: {{value}}",
"dueDate": "Due Date: {{value}}",
"contact": "Contact: {{value}}",
"scheduledEnd": "Scheduled end: {{value}}"
},
"assignment": {
"oneUser": "1 user assigned",
"multipleUsers": "{{count}} users assigned",
"additionalUsers": "{{name}}, +{{count}} user",
"additionalUsersOther": "{{name}}, +{{count}} users"
},
"bundledUnder": "Agrupado → {{number}}",
"bundled": "Agrupado",
"pagination": {
"previous": "Previous",
"next": "Next",
"pageInfo": "Page {{current}} of {{total}} ({{records}} total records)"
},
"interactionType": "{{type}} • {{client}}",
"currentSelection": "Current work item"
},
"timeSheetHeader": {
"title": "Time Sheet",
"titleFor": "Time Sheet for {{name}}",
"editedBy": "Edited by {{name}}",
"aria": {
"previousWeek": "Previous week",
"nextWeek": "Next week"
},
"pagination": {
"pageInfo": "Page {{current}} of {{total}}"
},
"labels": {
"status": "Status:",
"showIntervals": "Show intervals",
"grid": "Grid",
"list": "List"
}
},
"approval": {
"titleFor": "Time Sheet Approval for {{name}}",
"sections": {
"summary": "Summary",
"breakdownByWorkItemType": "Breakdown by Work Item Type",
"dailyBreakdown": "Daily Breakdown",
"detailedEntries": "Detailed Time Entries",
"comments": "Comments",
"timeEntryDetails": "Time Entry Details"
},
"labels": {
"period": "Period",
"submitted": "Submitted",
"total": "Total",
"billable": "Billable",
"nonBillable": "Non-Billable",
"workItem": "Work Item",
"service": "Service",
"duration": "Duration",
"notes": "Notes",
"entryChangeSuggestion": "Entry Change Suggestion",
"approver": "Approver",
"employee": "Employee"
},
"table": {
"date": "Date",
"workItem": "Work Item",
"start": "Start",
"end": "End",
"billable": "Billable",
"status": "Status"
},
"comments": {
"changesRequestedHint": "(Changes have been requested - please review comments)",
"responsePlaceholder": "Add your response to the requested changes...",
"placeholder": "Add a comment...",
"respondToChanges": "Respond to Changes"
},
"changeSuggestionPlaceholder": "Tell the employee exactly what to fix on this entry"
},
"approvalActions": {
"dialogs": {
"rejectTitle": "Reject Time Sheet",
"requestChangesTitle": "Request Changes"
},
"labels": {
"rejectionReason": "Rejection Reason"
},
"placeholders": {
"rejectionReason": "Enter reason for rejection"
},
"confirm": {
"reject": "Confirm Reject",
"changes": "Confirm Changes"
}
},
"comments": {
"placeholder": "Add a comment...",
"responsePlaceholder": "Respond to the requested changes...",
"respondToChanges": "Respond to Changes"
},
"feedback": {
"approverFeedback": "Approver feedback",
"viewHistory": "View feedback history",
"approverOn": "{{name}} on {{value}}"
},
"managerDashboard": {
"access": {
"title": "Team lead access required",
"description": "To approve time sheets for your team members, you need to be a team lead.",
"goToTeamSettings": "Go to Team Settings"
},
"title": "Time Sheet Approvals",
"actions": {
"hideApproved": "Hide Approved",
"showApproved": "Show Approved",
"bulkApproveSelected": "Bulk Approve Selected",
"reverse": "Reverse"
},
"columns": {
"select": "Select",
"employee": "Employee",
"period": "Period",
"status": "Status",
"actions": "Actions"
},
"reverseApproval": {
"reason": "Approval reversed by manager",
"error": "Failed to reverse approval: {{error}}"
}
},
"workItemDrawer": {
"errors": {
"genericTitle": "Error loading content",
"genericDescription": "Please try again",
"failedInteraction": "Failed to load interaction details",
"interactionNotFound": "Interaction not found",
"noUserSession": "No user session found",
"failedTicket": "Failed to load ticket",
"failedTask": "Failed to load task",
"failedTaskPhase": "Failed to load task phase",
"failedTaskProjectMetadata": "Failed to load task project metadata",
"failedAdHoc": "Failed to load ad-hoc entry data",
"unsupportedType": "Unsupported work item type"
}
},
"timeSheetClient": {
"errors": {
"delegationDisabled": "Delegated time entry is disabled",
"failedReopen": "Failed to reopen time sheet"
},
"reopen": {
"success": "Time sheet reopened for edits",
"reason": "Reopened for edits",
"title": "Reopen for edits?",
"message": "This will move the time sheet back to Changes Requested so time entries can be edited."
}
},
"timeSheetTable": {
"empty": {
"title": "Nenhum item de trabalho na sua folha de ponto",
"description": "Adicione um novo item de trabalho para começar a registar o seu tempo desta semana.",
"getStarted": "Começar"
}
},
"timeSheetList": {
"delete": {
"title": "Delete Work Item",
"message": "This will permanently delete all time entries for this work item. This action cannot be undone."
},
"summary": {
"entryOne": "entry",
"entryOther": "entries",
"total": "Total: {{value}}",
"billable": "Billable: {{value}}"
},
"empty": {
"title": "No time entries yet",
"description": "Add a work item and start tracking your time.",
"noEntries": "No entries"
},
"columns": {
"workItem": "Work Item",
"timeEntry": "Time Entry",
"duration": "Duration",
"billableDuration": "Billable Duration",
"actions": "Actions"
},
"dayGroup": {
"entryOne": "{{count}} entry",
"entryOther": "{{count}} entries"
},
"focusFilter": {
"summary": "Showing {{count}} entries for {{workItem}} on {{date}}",
"description": "Only entries from the selected grid cell are visible.",
"backToGrid": "Back to grid"
}
},
"selectedWorkItem": {
"adHocNoWorkItem": "Ad-hoc entry (no work item)"
},
"contractInfo": {
"noContract": "No contract line found for this service. Time will be routed to the system-managed default contract.",
"contract": "Contract: {{name}}",
"defaultContract": "System-managed default contract",
"multipleLines": "Multiple contract lines available - using default selection"
},
"billableLegend": {
"title": "Billable Legend",
"description": "Color indicators for billable time ratios"
},
"intervalItem": {
"now": "Now",
"autoClosed": "Auto-closed",
"active": "Active"
},
"intervals": {
"createdFromNote_one": "Created from {{count}} interval",
"createdFromNote_other": "Created from {{count}} intervals",
"selectedCount_one": "{{count}} interval selected",
"selectedCount_other": "{{count}} intervals selected",
"title": "Ticket Time Intervals",
"hideShortIntervals": "Hide intervals under 1 minute",
"totalTime": "Total time: {{value}}",
"selectedOne": "{{count}} interval selected",
"selectedOther": "{{count}} intervals selected",
"tooltips": {
"createTimeEntry": "Create time entry from selected intervals",
"deleteSelected": "Delete selected intervals",
"mergeSelected": "Merge selected intervals"
},
"actions": {
"selectAll": "Select All",
"deselectAll": "Deselect All",
"merge": "Merge"
},
"states": {
"loading": "Loading intervals...",
"noIntervalsThisPeriod": "No intervals found for this time period",
"noIntervalsThisTicket": "No intervals found for this ticket",
"noIntervalsLongerThanMinute": "No intervals longer than 1 minute found"
},
"entryName": "Ticket Time Entry",
"messages": {
"cannotFindTimeSheet": "Cannot create time entry - could not find or create time sheet",
"mergeFirst": "Please merge intervals first before creating a time entry",
"sameTicketOnly": "Can only create time entries from intervals of the same ticket",
"mergeSameTicketOnly": "Can only merge intervals from the same ticket",
"mergeSuccess": "Intervals merged successfully",
"failedMerge": "Failed to merge intervals",
"noActivePeriod": "No active time period found",
"failedFetchTimeSheet": "Failed to create or fetch time sheet",
"failedPrepareTimeEntry": "Failed to prepare time entry",
"savedSuccess": "Time entry saved successfully",
"failedSave": "Failed to save time entry"
}
},
"addWorkItemDialog": {
"title": "Add Work Item",
"description": "Select a work item to add to timesheet",
"close": "Close add work item dialog",
"focus": "Focus on add work item dialog"
},
"timeEntryReadOnly": {
"viewEntryDetails": "View entry details"
},
"messages": {
"serviceRequired": "Selecione um serviço antes de salvar as entradas de tempo",
"invalidService": "Serviço selecionado inválido",
"taxRegionRequired": "Selecione uma região fiscal para serviços tributáveis",
"invalidTimeEntry": "Verifique os valores da entrada de tempo",
"savingEntry": "Salvando entrada de tempo...",
"entrySaved": "Entrada de tempo salva",
"entrySavedSuccess": "Entrada de tempo salva com sucesso",
"taskUpdated": "Tarefa atualizada com sucesso",
"saveChangesFailed": "Falha ao salvar as alterações",
"changesSaved": "Alterações salvas com sucesso",
"workItemDeleted": "Item de trabalho excluído com sucesso"
},
"bundleNotice": {
"withNumber": "Este ticket está agrupado sob {{number}}. O tempo do grupo geralmente é registrado no ticket mestre.",
"withoutNumber": "Este ticket faz parte de um grupo. O tempo do grupo geralmente é registrado no ticket mestre."
}
}