Merge lane/offline in feature/craftvia-mvp
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
{
|
||||
"badge": {
|
||||
"label": "Synchronisation öffnen",
|
||||
"synced": "Synchron",
|
||||
"pending": "{count} offen",
|
||||
"problem": "Prüfen",
|
||||
"syncing": "Sync …"
|
||||
},
|
||||
"update": {
|
||||
"available": "Neue Version verfügbar – neu laden",
|
||||
"reload": "Neu laden"
|
||||
},
|
||||
"sync": {
|
||||
"title": "Synchronisation",
|
||||
"connection": "Verbindung",
|
||||
"offlineHint": "Eingaben werden auf diesem Gerät gespeichert und übertragen, sobald wieder Verbindung besteht.",
|
||||
"lastSync": "Letzte Synchronisation",
|
||||
"lastPull": "Aufträge offline gespeichert",
|
||||
"never": "Noch nie",
|
||||
"stale": "Die Offline-Daten sind älter als {days} Tage. Bitte mit Verbindung aktualisieren.",
|
||||
"status": "Stand",
|
||||
"pendingOps": "{count, plural, =0 {Keine Änderungen offen} one {# Änderung wartet auf Übertragung} other {# Änderungen warten auf Übertragung}}",
|
||||
"pendingUploads": "{count, plural, =0 {Keine Dateien offen} one {# Datei wartet auf Upload} other {# Dateien warten auf Upload}}",
|
||||
"uploadSize": "{size} zu übertragen",
|
||||
"uploading": "Datei wird hochgeladen … {percent} %",
|
||||
"syncing": "Wird synchronisiert …",
|
||||
"syncNow": "Jetzt synchronisieren",
|
||||
"allSynced": "Alles übertragen.",
|
||||
"waitingForAuth": "Anmeldung abgelaufen. Bitte neu anmelden – Ihre Eingaben bleiben auf dem Gerät gespeichert.",
|
||||
"login": "Neu anmelden",
|
||||
"problems": "Fehler und Konflikte",
|
||||
"noProblems": "Keine Fehler oder Konflikte.",
|
||||
"queue": "Warteschlange",
|
||||
"attempts": "{count, plural, one {# Versuch} other {# Versuche}}",
|
||||
"nextAttempt": "Nächster Versuch um {time}",
|
||||
"createdAt": "Erfasst {time}",
|
||||
"retry": "Erneut versuchen",
|
||||
"discard": "Eintrag verwerfen",
|
||||
"discardConfirm": "Eintrag endgültig verwerfen? Die Eingabe geht verloren.",
|
||||
"discardYes": "Endgültig verwerfen",
|
||||
"cancel": "Abbrechen",
|
||||
"hide": "Hinweis ausblenden",
|
||||
"storage": "Speicher auf diesem Gerät",
|
||||
"storageUsage": "{usage} von {quota} belegt",
|
||||
"storagePersisted": "Offline-Daten sind dauerhaft gespeichert.",
|
||||
"storageNotPersisted": "Der Browser darf Offline-Daten bei Speichermangel löschen.",
|
||||
"storageUnknown": "Speicherverbrauch nicht verfügbar.",
|
||||
"offlineOrders": "{count, plural, =0 {Keine Aufträge offline verfügbar} one {# Auftrag offline verfügbar} other {# Aufträge offline verfügbar}}",
|
||||
"saveOffline": "Für offline speichern",
|
||||
"saveOfflineHint": "Heutige, kommende 3 Tage und laufende Aufträge inklusive Zeichnungen, Montageanleitungen und Sicherheitsunterlagen.",
|
||||
"openOffline": "Offline-Ansicht öffnen",
|
||||
"reset": "Lokale Daten zurücksetzen",
|
||||
"resetConfirm": "Alle Offline-Daten Ihres Kontos auf diesem Gerät löschen?",
|
||||
"resetWarning": "{count, plural, one {# Eingabe wurde} other {# Eingaben wurden}} noch nicht übertragen und {count, plural, one {geht} other {gehen}} verloren.",
|
||||
"resetYes": "Jetzt zurücksetzen",
|
||||
"resetDone": "Lokale Daten gelöscht."
|
||||
},
|
||||
"op": {
|
||||
"session_start": "Einsatz gestartet",
|
||||
"session_pause": "Pause",
|
||||
"session_resume": "Weiter",
|
||||
"session_end": "Zeiterfassung beendet",
|
||||
"work_order_transition": "Statusänderung",
|
||||
"note_create": "Notiz",
|
||||
"checklist_toggle": "Checkliste",
|
||||
"material_upsert": "Material",
|
||||
"photo_attach": "Foto",
|
||||
"voice_attach": "Sprachnotiz",
|
||||
"report_save_draft": "Berichtsentwurf",
|
||||
"report_submit": "Bericht",
|
||||
"signature_capture": "Unterschrift",
|
||||
"emergency_create": "Notdiensteinsatz"
|
||||
},
|
||||
"state": {
|
||||
"queued": "Wartet",
|
||||
"sending": "Wird gesendet",
|
||||
"applied": "Übertragen",
|
||||
"conflict": "Konflikt",
|
||||
"rejected": "Nicht übernommen"
|
||||
},
|
||||
"problem": {
|
||||
"conflictTransition": "Auftrag wurde im Büro geändert – Ihre Statusänderung wurde nicht übernommen. Das Büro prüft den Vorgang.",
|
||||
"conflictReport": "Auftrag wurde im Büro geändert – Ihr Bericht wurde nicht übernommen. Das Büro prüft den Vorgang.",
|
||||
"conflict": "Auftrag wurde im Büro geändert – Ihre Änderung wurde nicht übernommen. Das Büro prüft den Vorgang.",
|
||||
"notFound": "Der Auftrag ist nicht mehr für Sie freigegeben. Die Eingabe wurde nicht übernommen.",
|
||||
"forbidden": "Für diese Aktion fehlt Ihnen die Berechtigung.",
|
||||
"blocked": "Pflichtangaben fehlen noch – bitte am Auftrag ergänzen und erneut versuchen.",
|
||||
"invalid": "Die Eingabe ist unvollständig oder nicht mehr gültig.",
|
||||
"upload": "Die Datei wurde nicht angenommen (Format oder Größe).",
|
||||
"unauthorized": "Anmeldung abgelaufen – bitte neu anmelden.",
|
||||
"network": "Keine Verbindung – wird automatisch erneut versucht.",
|
||||
"internal": "Technischer Fehler – wird automatisch erneut versucht."
|
||||
},
|
||||
"view": {
|
||||
"title": "Offline-Ansicht",
|
||||
"offlineHint": "Keine Verbindung. Sie sehen die auf diesem Gerät gespeicherten Aufträge.",
|
||||
"onlineHint": "Verbindung besteht wieder.",
|
||||
"backOnline": "Zur normalen Ansicht",
|
||||
"empty": "Keine Aufträge auf diesem Gerät gespeichert. Mit Verbindung werden heutige und kommende Aufträge automatisch gespeichert.",
|
||||
"loading": "Offline-Daten werden geladen …",
|
||||
"notReady": "Offline-Daten sind erst nach einer Anmeldung mit Verbindung verfügbar.",
|
||||
"notFound": "Dieser Auftrag ist nicht auf dem Gerät gespeichert.",
|
||||
"backToList": "Alle gespeicherten Aufträge",
|
||||
"open": "Auftrag öffnen",
|
||||
"count": "{count, plural, one {# Auftrag} other {# Aufträge}}",
|
||||
"pending": "{count, plural, one {# Änderung wartet} other {# Änderungen warten}}",
|
||||
"conflict": "Konflikt – siehe Synchronisation",
|
||||
"rejected": "Nicht übernommen – siehe Synchronisation",
|
||||
"savedAt": "Stand: {time}",
|
||||
"noDate": "Ohne Termin",
|
||||
"customer": "Kunde",
|
||||
"site": "Objekt",
|
||||
"contact": "Ansprechpartner",
|
||||
"call": "Anrufen",
|
||||
"access": "Zugang",
|
||||
"parking": "Parken",
|
||||
"safety": "Sicherheit",
|
||||
"technical": "Technik",
|
||||
"hints": "Hinweise für Monteure",
|
||||
"scope": "Leistungsumfang",
|
||||
"description": "Beschreibung",
|
||||
"checklist": "Checkliste",
|
||||
"checklistEmpty": "Keine Checkliste.",
|
||||
"required": "Pflicht",
|
||||
"done": "Erledigt",
|
||||
"open_item": "Offen",
|
||||
"materials": "Material",
|
||||
"materialsProgress": "{done} von {total} Positionen erfasst",
|
||||
"documents": "Dokumente",
|
||||
"noDocuments": "Keine Dokumente.",
|
||||
"docOffline": "Offline verfügbar",
|
||||
"docOnline": "Nur mit Verbindung",
|
||||
"history": "Objekt-Historie",
|
||||
"noHistory": "Keine freigegebenen Berichte am Objekt.",
|
||||
"notes": "Notizen",
|
||||
"notePlaceholder": "Kurz beschreiben, was vor Ort passiert ist …",
|
||||
"noteSave": "Notiz speichern",
|
||||
"draftRestored": "Entwurf wiederhergestellt.",
|
||||
"photos": "Fotos",
|
||||
"photo": "Foto aufnehmen",
|
||||
"photoRequirements": "Pflichtfotos",
|
||||
"photoMissing": "Fehlt",
|
||||
"photoDone": "Vorhanden",
|
||||
"pendingBadge": "Wartet auf Übertragung",
|
||||
"time": "Zeiterfassung",
|
||||
"actionAccept": "Annehmen",
|
||||
"actionTravel": "Losfahren",
|
||||
"actionStart": "Arbeit starten",
|
||||
"actionPause": "Pause",
|
||||
"actionResume": "Weiter",
|
||||
"actionEnd": "Zeiterfassung beenden",
|
||||
"completeOnline": "Abschließen ist nur mit Verbindung möglich (Pflichtangaben werden geprüft).",
|
||||
"saving": "Wird gespeichert …",
|
||||
"queued": "Gespeichert – wird übertragen, sobald Verbindung besteht.",
|
||||
"saved": "Gespeichert und übertragen.",
|
||||
"error": "Konnte nicht gespeichert werden."
|
||||
},
|
||||
"logout": {
|
||||
"warning": "{count, plural, one {# Eingabe wurde} other {# Eingaben wurden}} noch nicht übertragen. Beim Abmelden werden die Offline-Daten dieses Geräts gelöscht – {count, plural, one {die Eingabe geht} other {die Eingaben gehen}} verloren.",
|
||||
"syncFirst": "Erst synchronisieren",
|
||||
"confirm": "Trotzdem abmelden",
|
||||
"cancel": "Abbrechen"
|
||||
},
|
||||
"install": {
|
||||
"title": "App auf dem Gerät",
|
||||
"installed": "Craftvia ist als App installiert.",
|
||||
"button": "Auf dem Startbildschirm installieren",
|
||||
"ios": "Auf iPhone oder iPad: unten das Teilen-Symbol antippen und „Zum Home-Bildschirm“ wählen.",
|
||||
"other": "Im Browser-Menü „App installieren“ oder „Zum Startbildschirm hinzufügen“ wählen."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,171 @@
|
||||
{
|
||||
"badge": {
|
||||
"label": "Open synchronisation",
|
||||
"synced": "Synced",
|
||||
"pending": "{count} open",
|
||||
"problem": "Check",
|
||||
"syncing": "Sync …"
|
||||
},
|
||||
"update": {
|
||||
"available": "New version available – reload",
|
||||
"reload": "Reload"
|
||||
},
|
||||
"sync": {
|
||||
"title": "Synchronisation",
|
||||
"connection": "Connection",
|
||||
"offlineHint": "Entries are stored on this device and sent as soon as a connection is available.",
|
||||
"lastSync": "Last synchronisation",
|
||||
"lastPull": "Orders saved for offline use",
|
||||
"never": "Never",
|
||||
"stale": "Offline data is older than {days} days. Please update with a connection.",
|
||||
"status": "As of",
|
||||
"pendingOps": "{count, plural, =0 {No pending changes} one {# change waiting to be sent} other {# changes waiting to be sent}}",
|
||||
"pendingUploads": "{count, plural, =0 {No pending files} one {# file waiting for upload} other {# files waiting for upload}}",
|
||||
"uploadSize": "{size} to transfer",
|
||||
"uploading": "Uploading file … {percent} %",
|
||||
"syncing": "Synchronising …",
|
||||
"syncNow": "Synchronise now",
|
||||
"allSynced": "Everything sent.",
|
||||
"waitingForAuth": "Your session expired. Please sign in again – your entries stay on this device.",
|
||||
"login": "Sign in again",
|
||||
"problems": "Errors and conflicts",
|
||||
"noProblems": "No errors or conflicts.",
|
||||
"queue": "Queue",
|
||||
"attempts": "{count, plural, one {# attempt} other {# attempts}}",
|
||||
"nextAttempt": "Next attempt at {time}",
|
||||
"createdAt": "Recorded {time}",
|
||||
"retry": "Try again",
|
||||
"discard": "Discard entry",
|
||||
"discardConfirm": "Discard this entry permanently? The input will be lost.",
|
||||
"discardYes": "Discard permanently",
|
||||
"cancel": "Cancel",
|
||||
"hide": "Hide notice",
|
||||
"storage": "Storage on this device",
|
||||
"storageUsage": "{usage} of {quota} used",
|
||||
"storagePersisted": "Offline data is stored persistently.",
|
||||
"storageNotPersisted": "The browser may delete offline data when storage runs low.",
|
||||
"storageUnknown": "Storage usage not available.",
|
||||
"offlineOrders": "{count, plural, =0 {No orders available offline} one {# order available offline} other {# orders available offline}}",
|
||||
"saveOffline": "Save for offline use",
|
||||
"saveOfflineHint": "Today's, the next 3 days' and running orders including drawings, assembly instructions and safety documents.",
|
||||
"openOffline": "Open offline view",
|
||||
"reset": "Reset local data",
|
||||
"resetConfirm": "Delete all offline data of your account on this device?",
|
||||
"resetWarning": "{count, plural, one {# entry has} other {# entries have}} not been sent yet and will be lost.",
|
||||
"resetYes": "Reset now",
|
||||
"resetDone": "Local data deleted."
|
||||
},
|
||||
"op": {
|
||||
"session_start": "Job started",
|
||||
"session_pause": "Break",
|
||||
"session_resume": "Resume",
|
||||
"session_end": "Time tracking ended",
|
||||
"work_order_transition": "Status change",
|
||||
"note_create": "Note",
|
||||
"checklist_toggle": "Checklist",
|
||||
"material_upsert": "Material",
|
||||
"photo_attach": "Photo",
|
||||
"voice_attach": "Voice note",
|
||||
"report_save_draft": "Report draft",
|
||||
"report_submit": "Report",
|
||||
"signature_capture": "Signature",
|
||||
"emergency_create": "Emergency job"
|
||||
},
|
||||
"state": {
|
||||
"queued": "Waiting",
|
||||
"sending": "Sending",
|
||||
"applied": "Sent",
|
||||
"conflict": "Conflict",
|
||||
"rejected": "Not accepted"
|
||||
},
|
||||
"problem": {
|
||||
"conflictTransition": "The order was changed in the office – your status change was not applied. The office will review it.",
|
||||
"conflictReport": "The order was changed in the office – your report was not applied. The office will review it.",
|
||||
"conflict": "The order was changed in the office – your change was not applied. The office will review it.",
|
||||
"notFound": "The order is no longer assigned to you. The entry was not applied.",
|
||||
"forbidden": "You are not allowed to perform this action.",
|
||||
"blocked": "Required information is still missing – please complete it on the order and try again.",
|
||||
"invalid": "The entry is incomplete or no longer valid.",
|
||||
"upload": "The file was not accepted (format or size).",
|
||||
"unauthorized": "Your session expired – please sign in again.",
|
||||
"network": "No connection – will retry automatically.",
|
||||
"internal": "Technical error – will retry automatically."
|
||||
},
|
||||
"view": {
|
||||
"title": "Offline view",
|
||||
"offlineHint": "No connection. You are viewing the orders stored on this device.",
|
||||
"onlineHint": "Connection is back.",
|
||||
"backOnline": "Back to the regular view",
|
||||
"empty": "No orders stored on this device. With a connection, today's and upcoming orders are saved automatically.",
|
||||
"loading": "Loading offline data …",
|
||||
"notReady": "Offline data is available after signing in with a connection.",
|
||||
"notFound": "This order is not stored on this device.",
|
||||
"backToList": "All stored orders",
|
||||
"open": "Open order",
|
||||
"count": "{count, plural, one {# order} other {# orders}}",
|
||||
"pending": "{count, plural, one {# change waiting} other {# changes waiting}}",
|
||||
"conflict": "Conflict – see synchronisation",
|
||||
"rejected": "Not accepted – see synchronisation",
|
||||
"savedAt": "As of: {time}",
|
||||
"noDate": "No date",
|
||||
"customer": "Customer",
|
||||
"site": "Site",
|
||||
"contact": "Contact",
|
||||
"call": "Call",
|
||||
"access": "Access",
|
||||
"parking": "Parking",
|
||||
"safety": "Safety",
|
||||
"technical": "Technical",
|
||||
"hints": "Notes for technicians",
|
||||
"scope": "Scope of work",
|
||||
"description": "Description",
|
||||
"checklist": "Checklist",
|
||||
"checklistEmpty": "No checklist.",
|
||||
"required": "Required",
|
||||
"done": "Done",
|
||||
"open_item": "Open",
|
||||
"materials": "Material",
|
||||
"materialsProgress": "{done} of {total} items recorded",
|
||||
"documents": "Documents",
|
||||
"noDocuments": "No documents.",
|
||||
"docOffline": "Available offline",
|
||||
"docOnline": "Online only",
|
||||
"history": "Site history",
|
||||
"noHistory": "No approved reports at this site.",
|
||||
"notes": "Notes",
|
||||
"notePlaceholder": "Briefly describe what happened on site …",
|
||||
"noteSave": "Save note",
|
||||
"draftRestored": "Draft restored.",
|
||||
"photos": "Photos",
|
||||
"photo": "Take photo",
|
||||
"photoRequirements": "Required photos",
|
||||
"photoMissing": "Missing",
|
||||
"photoDone": "Present",
|
||||
"pendingBadge": "Waiting to be sent",
|
||||
"time": "Time tracking",
|
||||
"actionAccept": "Accept",
|
||||
"actionTravel": "Start travel",
|
||||
"actionStart": "Start work",
|
||||
"actionPause": "Break",
|
||||
"actionResume": "Resume",
|
||||
"actionEnd": "End time tracking",
|
||||
"completeOnline": "Completing requires a connection (required information is checked).",
|
||||
"saving": "Saving …",
|
||||
"queued": "Saved – will be sent as soon as a connection is available.",
|
||||
"saved": "Saved and sent.",
|
||||
"error": "Could not be saved."
|
||||
},
|
||||
"logout": {
|
||||
"warning": "{count, plural, one {# entry has} other {# entries have}} not been sent yet. Signing out deletes the offline data on this device – {count, plural, one {it} other {they}} will be lost.",
|
||||
"syncFirst": "Synchronise first",
|
||||
"confirm": "Sign out anyway",
|
||||
"cancel": "Cancel"
|
||||
},
|
||||
"install": {
|
||||
"title": "App on this device",
|
||||
"installed": "Craftvia is installed as an app.",
|
||||
"button": "Install on home screen",
|
||||
"ios": "On iPhone or iPad: tap the share icon and choose “Add to Home Screen”.",
|
||||
"other": "Choose “Install app” or “Add to home screen” in the browser menu."
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user