L1 Stammdaten: Backoffice-Seiten Kunden, Objekte, Teams und Dokumente

Listen mit Suche/Filter/Paginierung, Popups für Anlage und Bearbeitung,
Kundendetail mit Tabs, Dublettenhinweis und Zusammenführen, Objektdetail mit
Kartenlink, Dokumenten-Tab und Historie, Teamverwaltung mit Mitgliedern,
Dokumentenübersicht. Texte in messages de/en, Audit-Label Ansprechpartner.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-14 12:26:27 +02:00
co-authored by Claude Opus 5
parent 49c5ad0e33
commit d18f4fe431
28 changed files with 3660 additions and 12 deletions
+137
View File
@@ -0,0 +1,137 @@
{
"title": "Sites",
"crumb": "Master data",
"sub": "Construction sites, branches and installations with notes, documents and job history.",
"new": "New site",
"searchLabel": "Search",
"searchPlaceholder": "Site, address or customer",
"filter": {
"status": "Status",
"all": "All",
"apply": "Filter",
"reset": "Reset"
},
"status": {
"active": "Active",
"inactive": "Inactive",
"provisional": "Provisional"
},
"columns": {
"name": "Site",
"customer": "Customer",
"address": "Address",
"orders": "Work orders",
"status": "Status"
},
"empty": "No sites found.",
"pagination": {
"prev": "Previous",
"next": "Next",
"summary": "{from}–{to} of {total}"
},
"fields": {
"customerId": "Customer",
"selectCustomer": "Select customer",
"name": "Site name",
"street": "Street",
"houseNumber": "No.",
"postalCode": "Postal code",
"city": "City",
"country": "Country",
"contactId": "On-site contact",
"noContact": "No stored contact",
"onSiteContact": "On-site contact (free text)",
"phone": "On-site phone",
"accessNotes": "Access notes",
"parkingNotes": "Parking notes",
"safetyNotes": "Safety information",
"technicalNotes": "Technical notes",
"status": "Status",
"latitude": "Latitude",
"longitude": "Longitude"
},
"sections": {
"base": "Site",
"address": "Address",
"onSite": "On site",
"notes": "Notes for the job",
"geo": "Coordinates (optional)"
},
"form": {
"createTitle": "Create site",
"createSub": "Every site belongs to a customer.",
"editTitle": "Edit site",
"create": "Create site",
"save": "Save",
"saving": "Saving…",
"cancel": "Cancel",
"saved": "Saved.",
"contactHint": "The customer's contacts can be selected after creating the site."
},
"tabs": {
"master": "Master data",
"documents": "Documents",
"history": "History"
},
"detail": {
"edit": "Edit",
"delete": "Delete",
"deleteTitle": "Delete site",
"deleteHint": "The site is hidden. History and records are kept. Only possible without open work orders.",
"deleteConfirm": "Delete site",
"map": "Open map (OpenStreetMap)",
"noMap": "No address for the map",
"customer": "Customer",
"back": "Back to sites",
"noNotes": "No notes stored."
},
"history": {
"title": "Job history",
"onlyApproved": "Released only",
"showAll": "All jobs",
"approvedOnlyHint": "Showing released jobs.",
"empty": "No jobs at this site yet.",
"workDone": "Work carried out",
"noWorkDone": "No activities recorded.",
"materials": "Material",
"noMaterials": "No material recorded.",
"photos": "{count, plural, =0 {No photos} one {# photo} other {# photos}}",
"reports": "Reports",
"noReports": "No released report.",
"reportType": {
"daily": "Daily report",
"completion": "Completion report"
},
"reportLink": "{type} v{version} of {date}",
"signed": "Customer signature available",
"notSigned": "No customer signature",
"followUp": "Open follow-up work",
"emergency": "Emergency",
"noTeam": "No team",
"openOrder": "Open work order"
},
"statusGroup": {
"new": "New",
"planned": "Planned",
"en_route": "On the way",
"in_progress": "In progress",
"documentation_incomplete": "Documentation incomplete",
"in_review": "In review",
"ready_for_billing": "Ready for billing",
"billed": "Billed",
"cancelled": "Cancelled"
},
"errors": {
"invalid": "Please check the highlighted fields.",
"not_found": "Record not found.",
"forbidden": "You are not allowed to do this.",
"conflict": "Not possible: the record was changed.",
"blocked": "Action currently not possible.",
"generic": "That did not work. Please try again.",
"required": "Required",
"invalidField": "Check input",
"customer_not_found": "Customer not found.",
"contact_mismatch": "The contact does not belong to this customer.",
"open_work_orders": "There are still open work orders."
}
}