L12 Zeiterfassung: Mobile Uhr-Leiste, Meine Zeiten, Freigaben und Backoffice-Liste
Laufende-Uhr-Leiste auf allen /m-Seiten, Start/Pause direkt auf den Auftragskarten, Auto-Wechsel-Dialog, Auftragsdetail mit Pause / Für heute beenden / Abschließen-Link und Segmentwechseln, /m/time (Tagesübersicht, Nachtragen, Korrektur vorschlagen), /m/approvals für Teamleiter, /work-orders/time-approvals mit Sammelfreigabe, Zeiten-Tab mit Badges und Inline-Freigabe, Dashboard-Kachel, Texte de/en. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+148
-6
@@ -5,7 +5,8 @@
|
||||
"orders": "Orders",
|
||||
"emergency": "Emergency",
|
||||
"sync": "Sync",
|
||||
"profile": "Profile"
|
||||
"profile": "Profile",
|
||||
"approvalsBadge": "{count} time entries to approve"
|
||||
},
|
||||
"connection": {
|
||||
"online": "Online",
|
||||
@@ -35,7 +36,13 @@
|
||||
"noDate": "No date",
|
||||
"emergency": "Emergency",
|
||||
"urgent": "Urgent",
|
||||
"high": "High"
|
||||
"high": "High",
|
||||
"running": "Time running",
|
||||
"paused": "Paused",
|
||||
"enRoute": "On the way",
|
||||
"startWork": "Start work",
|
||||
"pause": "Pause",
|
||||
"resume": "Resume"
|
||||
},
|
||||
"statusGroup": {
|
||||
"new": "New",
|
||||
@@ -78,7 +85,17 @@
|
||||
"saving": "Saving …",
|
||||
"blocked": "Still missing before completion:",
|
||||
"reportNext": "Report and signature follow in the next step.",
|
||||
"nothing": "No action required."
|
||||
"nothing": "No action required.",
|
||||
"stop_day": "Stop for today",
|
||||
"confirmStopDay": "Stop for today now",
|
||||
"stopDayHint": "Time recording ends, the order stays open and can be continued tomorrow.",
|
||||
"completeLink": "Complete order …",
|
||||
"segment": {
|
||||
"return_travel": "Start return trip",
|
||||
"material_procurement": "Fetch material",
|
||||
"work": "Back to work"
|
||||
},
|
||||
"currentSegment": "Current: {type}"
|
||||
},
|
||||
"blocker": {
|
||||
"checklist_item": "Checklist: {label}",
|
||||
@@ -264,7 +281,8 @@
|
||||
"en_route": "On the way",
|
||||
"running": "Running",
|
||||
"paused": "Paused",
|
||||
"ended": "Ended"
|
||||
"ended": "Ended",
|
||||
"manual": "Recorded later"
|
||||
},
|
||||
"running": "running",
|
||||
"offlineStarted": "started offline",
|
||||
@@ -277,7 +295,10 @@
|
||||
"save": "Save correction",
|
||||
"saved": "Correction saved.",
|
||||
"empty": "No time recorded yet.",
|
||||
"totalWork": "Total working time: {duration}"
|
||||
"totalWork": "Total working time: {duration}",
|
||||
"propose": "Propose correction",
|
||||
"totalPending": "Awaiting approval: {duration}",
|
||||
"ownEntryHint": "Correct your own time via “Propose correction”."
|
||||
},
|
||||
"profile": {
|
||||
"title": "Profile",
|
||||
@@ -287,12 +308,133 @@
|
||||
"roles": "Role",
|
||||
"language": "Language",
|
||||
"logout": "Sign out",
|
||||
"backoffice": "Go to office area"
|
||||
"backoffice": "Go to office area",
|
||||
"myTime": "My time",
|
||||
"approvals": "Approve time"
|
||||
},
|
||||
"sync": {
|
||||
"title": "Synchronisation",
|
||||
"immediate": "Changes are sent to the office immediately.",
|
||||
"offlineHint": "Without a connection, entries cannot be buffered yet – the offline queue will follow.",
|
||||
"status": "Connection"
|
||||
},
|
||||
"clock": {
|
||||
"label": "Running time recording",
|
||||
"running": "Running",
|
||||
"paused": "Paused",
|
||||
"enRoute": "Travel",
|
||||
"openOrder": "Open order {number}",
|
||||
"pause": "Pause",
|
||||
"resume": "Resume",
|
||||
"stopDay": "Stop for today",
|
||||
"stopDayConfirm": "Stop?",
|
||||
"myTime": "My time",
|
||||
"offline": "offline"
|
||||
},
|
||||
"switch": {
|
||||
"title": "Another time recording is running",
|
||||
"text": "{from} is still running. Pause it and start {to}?",
|
||||
"textUnknown": "Time is still running on another order. Pause it and start {to}?",
|
||||
"confirm": "Switch",
|
||||
"cancel": "Cancel"
|
||||
},
|
||||
"myTime": {
|
||||
"title": "My time",
|
||||
"sub": "Your time per day across all orders.",
|
||||
"today": "Today",
|
||||
"yesterday": "Yesterday",
|
||||
"days": "Choose day",
|
||||
"empty": "No time recorded on this day.",
|
||||
"approved": "Approved",
|
||||
"pending": "Awaiting approval",
|
||||
"dayTotal": "Day total",
|
||||
"totalApproved": "Approved: {duration}",
|
||||
"totalPending": "Open: {duration}",
|
||||
"add": "Add time",
|
||||
"running": "running",
|
||||
"badge": {
|
||||
"manual": "Manual",
|
||||
"pending": "Awaiting approval",
|
||||
"rejected": "Rejected: {reason}",
|
||||
"correctionRequested": "Correction requested",
|
||||
"correctionRejected": "Correction rejected: {reason}",
|
||||
"corrected": "Corrected"
|
||||
},
|
||||
"proposed": "Proposal: {from}–{to} · {type}",
|
||||
"localPending": "Waiting to be sent",
|
||||
"localTitle": "Not sent yet",
|
||||
"form": {
|
||||
"title": "Add time",
|
||||
"order": "Order",
|
||||
"orderPlaceholder": "Choose order",
|
||||
"noOrders": "No orders from the last 7 days available.",
|
||||
"forUser": "For",
|
||||
"me": "Myself",
|
||||
"type": "Type",
|
||||
"date": "Date",
|
||||
"mode": "Entry",
|
||||
"modeRange": "From – to",
|
||||
"modeDuration": "Duration",
|
||||
"from": "From",
|
||||
"to": "To",
|
||||
"duration": "Duration in minutes",
|
||||
"quick": "{minutes} min",
|
||||
"reason": "Reason",
|
||||
"reasonHint": "Required, at least 3 characters.",
|
||||
"note": "Note (optional)",
|
||||
"approvalHint": "Counts once approved by the team lead or office.",
|
||||
"directHint": "Time recorded for team members is approved immediately.",
|
||||
"save": "Save entry",
|
||||
"saved": "Entry saved – awaiting approval.",
|
||||
"savedDirect": "Time saved.",
|
||||
"queued": "Saved offline – will be sent once connected.",
|
||||
"cancel": "Cancel"
|
||||
},
|
||||
"correction": {
|
||||
"title": "Propose correction",
|
||||
"hint": "The current time stays valid until approved.",
|
||||
"save": "Send proposal",
|
||||
"saved": "Correction requested."
|
||||
},
|
||||
"reasons": {
|
||||
"forgotStart": "Forgot to start",
|
||||
"noNetwork": "No network",
|
||||
"recordedLater": "Recorded afterwards"
|
||||
},
|
||||
"errors": {
|
||||
"overlap": "The period overlaps with time already recorded.",
|
||||
"too_old": "Time can only be added for the last 7 days.",
|
||||
"in_future": "The time must not be in the future.",
|
||||
"too_long": "An entry may be at most 16 hours long.",
|
||||
"end_before_start": "The end must be after the start.",
|
||||
"work_order_status": "Time can no longer be recorded for this order.",
|
||||
"not_own_entry": "You can only correct your own time.",
|
||||
"own_entry": "You cannot approve your own time.",
|
||||
"entry_running": "The time is still running."
|
||||
}
|
||||
},
|
||||
"approvals": {
|
||||
"title": "Approve time",
|
||||
"sub": "Added entries and corrections of your team.",
|
||||
"empty": "No open entries or corrections.",
|
||||
"link": "Approve time",
|
||||
"count": "{count, plural, =0 {Nothing open} one {# open} other {# open}}",
|
||||
"manual": "Added entry",
|
||||
"correction": "Correction",
|
||||
"reason": "Reason",
|
||||
"note": "Note",
|
||||
"old": "Before",
|
||||
"new": "New",
|
||||
"approve": "Approve",
|
||||
"reject": "Reject",
|
||||
"rejectReason": "Reason for rejection",
|
||||
"rejectConfirm": "Send rejection",
|
||||
"cancel": "Cancel",
|
||||
"approved": "Approved.",
|
||||
"rejected": "Rejected."
|
||||
},
|
||||
"pendingTime": {
|
||||
"report": "Note: {duration} of added time is not approved yet and missing from the report.",
|
||||
"proposals": "Note: {count, plural, one {# time correction is} other {# time corrections are}} awaiting approval."
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user