b88ce17e1d
Stabilize dialog callbacks and dedupe signature-invalidation alerts so the UI no longer freezes after adding an event to a signed travel day. Co-authored-by: Cursor <cursoragent@cursor.com>
473 lines
23 KiB
JSON
473 lines
23 KiB
JSON
{
|
||
"translation": {
|
||
"app": {
|
||
"name": "Kapteins Daagbok",
|
||
"tagline": "Private Yacht Logbook"
|
||
},
|
||
"nav": {
|
||
"dashboard": "Dashboard",
|
||
"vessel": "Vessel Profile",
|
||
"crew": "Crew List",
|
||
"deviation": "Deviation Table",
|
||
"logs": "Logbook Entries",
|
||
"stats": "Statistics",
|
||
"settings": "Settings"
|
||
},
|
||
"auth": {
|
||
"welcome": "Welcome to Kapteins Daagbok",
|
||
"tagline": "Secure, E2E encrypted maritime logbook.",
|
||
"register": "Register with Passkey",
|
||
"login": "Login with Passkey",
|
||
"login_as": "Login as {{name}}",
|
||
"quick_login": "Quick login",
|
||
"forget_account": "Forget account on this device",
|
||
"not_user": "Not {{name}}?",
|
||
"recovery_title": "Your Recovery Phrase",
|
||
"recovery_warning": "IMPORTANT: Write down these 12 words. If you lose your Passkey and these words, your data cannot be recovered.",
|
||
"confirm_recovery": "I have written down the recovery phrase",
|
||
"status_logged_in": "Logged in",
|
||
"status_logged_out": "Logged out",
|
||
"copied": "Copied!",
|
||
"copy_phrase": "Copy Phrase",
|
||
"enter_recovery": "Enter Recovery Phrase",
|
||
"recovery_fallback_warning": "Your Passkey authenticated successfully, but your device does not support hardware key derivation. Enter your 12-word recovery phrase to decrypt your logbook.",
|
||
"recovery_placeholder": "Enter your 12-word recovery phrase separated by spaces...",
|
||
"back": "Back",
|
||
"decrypting": "Decrypting...",
|
||
"decrypt_logbook": "Decrypt Logbook",
|
||
"error_incorrect_recovery": "Incorrect recovery phrase. Decryption failed.",
|
||
"error_decryption_failed": "Decryption failed. Please check your recovery phrase.",
|
||
"or_register": "or register",
|
||
"explore_demo": "Explore demo without account",
|
||
"username_placeholder": "Username / Skipper Name",
|
||
"processing": "Processing...",
|
||
"help": "Help",
|
||
"setup_pin_title": "Setup Local PIN (Optional)",
|
||
"setup_pin_warning": "Since your device does not support hardware passkey key derivation, you would otherwise need to enter your 12-word recovery phrase on every login on this device. Setup a local PIN to avoid this.",
|
||
"pin_placeholder": "E.g. 123456",
|
||
"pin_label": "Local PIN Code (4-8 digits)",
|
||
"save_pin": "Save PIN & Continue",
|
||
"skip_pin": "Skip & use recovery phrase",
|
||
"enter_pin_title": "Decrypt with PIN",
|
||
"enter_pin_warning": "Enter your local PIN to unlock the decryption key on this device.",
|
||
"enter_pin_placeholder": "Enter your PIN...",
|
||
"decrypt_with_pin": "Decrypt",
|
||
"use_recovery_instead": "Use recovery phrase instead",
|
||
"error_incorrect_pin": "Incorrect PIN. Decryption failed."
|
||
},
|
||
"pwa": {
|
||
"title": "Install app",
|
||
"generic_benefit": "Install Kapteins Daagbok on your device for faster access, offline use, and persistent data storage.",
|
||
"ios_instructions": "On iPad/iPhone: Add the app to your Home Screen so your logbook data stays protected and the app launches like a native app.",
|
||
"ios_step_share": "Tap the Share button in the Safari toolbar",
|
||
"ios_step_add": "Choose “Add to Home Screen”",
|
||
"install_now": "Install now",
|
||
"installing": "Installing…",
|
||
"later": "Later",
|
||
"never": "Don't show again",
|
||
"platform_ios": "Install via Safari",
|
||
"platform_android": "Install via browser",
|
||
"platform_desktop": "Install as desktop app",
|
||
"settings_section": "App installation",
|
||
"update_title": "Update available",
|
||
"update_desc": "A new version of Kapteins Daagbok is ready. Reload to get the latest changes.",
|
||
"update_now": "Reload now",
|
||
"update_reloading": "Reloading…"
|
||
},
|
||
"sync": {
|
||
"status_synced": "Synced",
|
||
"status_offline": "Offline Cache",
|
||
"status_unsynced": "Unsynced changes"
|
||
},
|
||
"vessel": {
|
||
"title": "Vessel Master Data",
|
||
"name": "Yacht Name",
|
||
"type": "Vessel Type",
|
||
"type_unset": "— not specified —",
|
||
"type_sailing": "Sailing yacht",
|
||
"type_motor": "Motor yacht",
|
||
"length_m": "Length (m)",
|
||
"draft_m": "Draft (m)",
|
||
"air_draft_m": "Air draft (m)",
|
||
"invalid_metric": "Invalid number — please enter meters as a decimal (e.g. 12.5).",
|
||
"port": "Home Port",
|
||
"owner": "Owner",
|
||
"charter": "Charter Company",
|
||
"registration": "Registration Number",
|
||
"callsign": "Call Sign",
|
||
"atis": "ATIS Number",
|
||
"mmsi": "MMSI Number",
|
||
"save": "Save Vessel Data",
|
||
"saving": "Saving...",
|
||
"saved": "Vessel details saved successfully!",
|
||
"loading": "Loading vessel details...",
|
||
"sails_list": "Sails (Available Sails)",
|
||
"sails_help": "List the sails available on your vessel (e.g. Mainsail, Genoa, Jib).",
|
||
"add_sail": "Add Sail",
|
||
"sail_name_placeholder": "e.g. Mainsail",
|
||
"no_sails": "No sails defined.",
|
||
"photo_add": "Add Photo",
|
||
"photo_change": "Change Photo",
|
||
"photo_delete": "Delete Photo"
|
||
},
|
||
"logs": {
|
||
"title": "Logbook Journal",
|
||
"new_entry": "New Travel Day",
|
||
"travel_details": "Travel Details",
|
||
"add_event": "Add Event Log Record",
|
||
"add_event_btn": "Add Event Entry",
|
||
"date": "Date",
|
||
"day_of_travel": "Day of Travel",
|
||
"departure": "Departure Port (von)",
|
||
"destination": "Destination Port (nach)",
|
||
"route": "Route / Journey",
|
||
"freshwater": "Freshwater (Liters)",
|
||
"fuel": "Fuel (Liters)",
|
||
"morning": "Morning Level",
|
||
"refilled": "Refilled",
|
||
"evening": "Evening Level",
|
||
"consumption": "Consumption",
|
||
"signatures": "Signatures / Sign-Off",
|
||
"sign_skipper": "Skipper signature",
|
||
"sign_crew": "Crew signature",
|
||
"sign_hint": "Sign with finger, stylus, or mouse",
|
||
"sign_clear": "Clear",
|
||
"sign_export_image": "[Signature]",
|
||
"sign_with_passkey": "Sign with Passkey",
|
||
"sign_passkey_signing": "Requesting Passkey…",
|
||
"sign_passkey_signed": "Signed by {{username}}",
|
||
"sign_passkey_export": "Passkey: {{username}} ({{date}})",
|
||
"sign_passkey_clear": "Remove Passkey signature",
|
||
"sign_mode_passkey": "Passkey",
|
||
"sign_mode_classic": "Classic",
|
||
"sign_passkey_failed": "Passkey signing failed",
|
||
"sign_passkey_cancelled": "Passkey signing cancelled",
|
||
"sign_invalid": "Signature invalid — entry content changed",
|
||
"sign_badge_skipper": "Skipper",
|
||
"sign_badge_skipper_invalid": "Invalid",
|
||
"sign_badge_skipper_title_valid": "Signed by skipper",
|
||
"sign_badge_skipper_title_invalid": "Skipper signature invalid — entry content changed",
|
||
"sign_classic_or_passkey": "Optional: sign classically below or use Passkey above",
|
||
"sign_crew_passkey_hint": "Write collaborators can sign with their Passkey",
|
||
"sign_offline_hint": "Passkey signing requires internet — classic signature works offline",
|
||
"sign_lock_notice": "After signing, log entry changes (except photos) require Skipper and Crew to sign again.",
|
||
"sign_lock_active": "This entry is signed. Changes to the log (except photos) will automatically remove Skipper and Crew signatures.",
|
||
"sign_lock_warning_title": "Confirm signature",
|
||
"sign_lock_warning": "After signing, changes to the log entry (except photos) are not possible without Skipper and Crew signing again.\n\nDo you want to proceed?",
|
||
"sign_proceed": "Sign",
|
||
"sign_cancel": "Cancel",
|
||
"sign_cleared_re_sign_title": "Signatures removed",
|
||
"sign_cleared_re_sign": "The log entry was changed. Skipper and Crew signatures were removed. Please sign again.",
|
||
"no_entries": "No logbook entries found for this yacht. Create your first travel day to begin!",
|
||
"back_to_list": "Back to Journal List",
|
||
"save": "Save Logbook Page",
|
||
"saving": "Saving...",
|
||
"saved": "Logbook page saved successfully!",
|
||
"loading": "Loading journal...",
|
||
"delete_entry": "Delete Day",
|
||
"delete_confirm": "Are you sure you want to permanently delete this travel day?",
|
||
"carry_over_tanks_title": "Carry over from previous day?",
|
||
"carry_over_tanks_confirm": "Use the previous travel day's destination as departure port and closing tank levels as morning levels?\n\nDeparture port: {{departure}}\nFreshwater: {{fw}} L\nFuel: {{fuel}} L",
|
||
"carry_over_tanks_yes": "Carry over",
|
||
"carry_over_tanks_no": "Start at 0",
|
||
"event_title": "Chronological Event Logbook",
|
||
"no_events": "No events logged for this travel day yet.",
|
||
"event_time": "Time",
|
||
"event_mgk": "MgK Course",
|
||
"event_rwk": "RwK Course",
|
||
"event_wind_direction": "Wind Dir",
|
||
"event_wind_strength": "Wind Str",
|
||
"event_sea_state": "Sea State",
|
||
"event_weather": "Weather",
|
||
"event_log": "Log (nm)",
|
||
"event_gps": "GPS Position",
|
||
"event_location": "Location / Port",
|
||
"event_location_placeholder": "e.g. Kiel",
|
||
"event_remarks": "Remarks / Events",
|
||
"gps_btn": "Get GPS Location",
|
||
"weather_btn": "Fetch OpenWeatherMap Weather",
|
||
"event_wind_pressure": "Barometer (hPa)",
|
||
"event_heel": "Heel Angle (°)",
|
||
"event_sails": "Sails / Motor Status",
|
||
"motor_propulsion": "Engine Propulsion",
|
||
"event_distance": "Distance (nm)",
|
||
"export_csv": "Download CSV",
|
||
"share_csv": "Share CSV",
|
||
"export_pdf": "Download PDF",
|
||
"exporting_pdf": "Generating PDF...",
|
||
"photos_title": "Photo Attachments (E2E Encrypted)",
|
||
"photo_caption_label": "Photo Caption / Label (Optional)",
|
||
"photo_caption_placeholder": "e.g. Setting sails near harbor entrance",
|
||
"photo_btn": "Take Photo / Upload",
|
||
"photo_processing": "Processing...",
|
||
"no_photos": "No photos attached to this journal entry yet.",
|
||
"photo_delete_confirm": "Are you sure you want to permanently delete this photo?",
|
||
"confirm_yes": "Yes",
|
||
"confirm_no": "No",
|
||
"track_upload_title": "GPS track file",
|
||
"track_upload_points": "points",
|
||
"gps_tracking_btn_gpx": "Download track file",
|
||
"gps_track_upload_help": "Drag & drop a GPX, KML, or GeoJSON file here, or click to select",
|
||
"gps_track_upload_btn": "Upload GPS Track File",
|
||
"gps_track_delete": "Delete Track File",
|
||
"gps_track_delete_confirm": "Are you sure you want to permanently delete this track file?",
|
||
"track_distance": "GPS distance (nm)",
|
||
"track_speed_max": "Max speed (kn)",
|
||
"track_speed_avg": "Avg speed (kn)",
|
||
"track_map_title": "GPS track on OpenSeaMap",
|
||
"track_map_start": "Start",
|
||
"track_map_end": "End",
|
||
"track_map_speed_slow": "slow",
|
||
"track_map_speed_fast": "fast",
|
||
"track_map_error": "Could not load map.",
|
||
"exporting": "Exporting...",
|
||
"share_unsupported": "Web sharing is not supported on this device. File downloaded instead.",
|
||
"invite_crew": "Invite Crew",
|
||
"invite_link_copied": "Invitation link copied to clipboard!",
|
||
"invite_link_desc": "Share this link with crew members to grant them write permissions for this logbook.",
|
||
"collaborators_list": "Members / Crew",
|
||
"revoke": "Revoke Access",
|
||
"revoke_confirm": "Are you sure you want to revoke access for this crew member?",
|
||
"invite_role": "Role",
|
||
"invite_expires": "Link expires in 48 hours"
|
||
},
|
||
"dashboard": {
|
||
"title": "Your Logbooks",
|
||
"subtitle": "Select a logbook or create a new one to manage your journeys.",
|
||
"create_btn": "Create Logbook",
|
||
"new_logbook_placeholder": "Logbook or Yacht Name",
|
||
"logout": "Logout",
|
||
"delete_confirm": "Are you sure you want to permanently delete this logbook? All local data and server copies will be destroyed.\n\nTip: Create a backup first under Settings → Backup & restore (.daagbok.json) if you may need the data later.",
|
||
"no_logbooks": "No logbooks found. Create your first logbook to begin!",
|
||
"loading": "Loading logbooks...",
|
||
"status_synced": "Synced",
|
||
"status_local": "Local Cache Only",
|
||
"delete_btn": "Delete logbook",
|
||
"section_owned": "My logbooks",
|
||
"section_shared": "Shared logbooks",
|
||
"section_shared_hint": "You were invited as crew. Skipper profile and settings belong to the owner.",
|
||
"role_owner": "Own logbook",
|
||
"role_owner_hint": "You own this logbook and act as skipper",
|
||
"role_crew": "Crew access",
|
||
"role_crew_hint": "Invited logbook — you can collaborate and sign as crew",
|
||
"role_read": "Read only",
|
||
"role_read_hint": "Shared logbook — view only, no editing"
|
||
},
|
||
"crew": {
|
||
"title": "Skipper & Crew Profiles",
|
||
"skipper_section": "Skipper Profile",
|
||
"crew_section": "Crew List",
|
||
"add_crew": "Add Crew Member",
|
||
"edit_crew": "Edit Crew Member",
|
||
"no_crew": "No crew members added yet.",
|
||
"max_crew": "Maximum of 5 crew members reached.",
|
||
"name": "Full Name",
|
||
"address": "Address",
|
||
"birthdate": "Date of Birth",
|
||
"phone": "Phone Number",
|
||
"nationality": "Nationality",
|
||
"passport": "Passport / ID Number",
|
||
"bloodtype": "Blood Type",
|
||
"allergies": "Allergies",
|
||
"diseases": "Medical Conditions / Diseases",
|
||
"save": "Save Skipper Data",
|
||
"save_member": "Save Member",
|
||
"saved": "Skipper profile saved successfully!",
|
||
"loading": "Loading crew files...",
|
||
"delete_confirm": "Are you sure you want to remove this crew member?"
|
||
},
|
||
"deviation": {
|
||
"title": "Compass Deviation Table",
|
||
"subtitle": "Calibrate magnetic compass headings (MgK) from 000° to 360° in 10° steps.",
|
||
"heading": "MgK",
|
||
"deviation": "Deviation",
|
||
"save": "Save Calibration Grid",
|
||
"saving": "Saving...",
|
||
"saved": "Calibration grid saved successfully!",
|
||
"loading": "Loading calibration table..."
|
||
},
|
||
"settings": {
|
||
"title": "System Settings",
|
||
"subtitle": "Configure external integrations and client credentials.",
|
||
"owm_title": "Weather Integration",
|
||
"owm_key": "OpenWeatherMap API Key",
|
||
"save": "Save Configuration",
|
||
"saving": "Saving...",
|
||
"saved": "Settings saved successfully!",
|
||
"key_help": "An API key is required to automatically fetch real-time weather and sea state parameters based on your vessel's GPS coordinates.",
|
||
"no_key": "Please set your OpenWeatherMap API Key in settings to enable weather auto-fill.",
|
||
"weather_success": "Weather details fetched successfully!",
|
||
"weather_error": "Failed to fetch weather. Check your API key and connection.",
|
||
"weather_date_mismatch": "Weather data can only be fetched for today ({{today}}). This logbook entry is dated {{date}}.",
|
||
"gps_error": "Please enter a location or fetch GPS coordinates first.",
|
||
"theme_title": "UI Customization",
|
||
"theme_label": "Application Style / Theme",
|
||
"theme_auto": "Auto (OS Detect)",
|
||
"theme_ocean": "Ocean (Glassmorphism)",
|
||
"theme_material": "Material (Android)",
|
||
"theme_cupertino": "Cupertino (iOS)",
|
||
"color_scheme_title": "Appearance",
|
||
"color_scheme_label": "Light or dark mode (default: follow system)",
|
||
"color_scheme_auto": "Auto (System)",
|
||
"color_scheme_light": "Light",
|
||
"color_scheme_dark": "Dark",
|
||
"share_title": "Share Logbook (Read-Only)",
|
||
"share_desc": "Enable this to generate a public, read-only link. Anyone with the link can view your travels, yacht profile, and crew members. Decryption keys are never transmitted to the server (they stay in the hash part of the URL).",
|
||
"share_enable": "Enable Public Link",
|
||
"share_copied": "Link copied!",
|
||
"share_copy_btn": "Copy Link",
|
||
"danger_zone_title": "Danger Zone",
|
||
"danger_zone_desc": "Deleting your account will permanently delete all your passkeys, logbooks, vessel data, crew profiles, travel logs, and E2E keys. This action cannot be undone.",
|
||
"delete_account_btn": "Permanently Delete Account",
|
||
"delete_account_confirm_title": "Delete Account?",
|
||
"delete_account_confirm_desc": "Are you absolutely sure you want to permanently delete your account and all associated logbooks and E2E-encrypted data?",
|
||
"delete_account_confirm_yes": "Yes, Delete Account and All Data",
|
||
"delete_account_confirm_no": "Cancel",
|
||
"delete_account_failed": "Failed to delete account. Please try again.",
|
||
"deleting_account": "Deleting account…",
|
||
"tour_title": "App tour",
|
||
"tour_desc": "Take a guided walkthrough of the main areas of the app again.",
|
||
"tour_restart": "Restart tour",
|
||
"backup_title": "Backup & restore",
|
||
"backup_desc": "Full encrypted backup of this logbook (entries, photos, GPS tracks, crew, vessel). Protected with a backup passphrase — restore on this or a new account.",
|
||
"backup_export_title": "Create backup",
|
||
"backup_export_desc": "Downloads all local data as a .daagbok.json file. Keep the file and passphrase separate and secure.",
|
||
"backup_restore_title": "Restore backup",
|
||
"backup_restore_desc": "Restores a backup into your current account — including after registering a new account.",
|
||
"backup_passphrase": "Backup passphrase",
|
||
"backup_passphrase_placeholder": "At least 8 characters",
|
||
"backup_passphrase_confirm": "Confirm passphrase",
|
||
"backup_passphrase_short": "The backup passphrase must be at least 8 characters.",
|
||
"backup_passphrase_mismatch": "Passphrases do not match.",
|
||
"backup_wrong_passphrase": "Wrong passphrase or corrupted backup.",
|
||
"backup_export_btn": "Download backup",
|
||
"backup_exporting": "Creating backup…",
|
||
"backup_export_success": "Backup created ({{count}} travel days).",
|
||
"backup_file_label": "Backup file (.daagbok.json)",
|
||
"backup_preview_btn": "Verify contents",
|
||
"backup_previewing": "Verifying…",
|
||
"backup_restore_btn": "Restore",
|
||
"backup_restoring": "Restoring…",
|
||
"backup_restore_success": "Logbook “{{title}}” has been restored.",
|
||
"backup_restore_cancelled": "Restore cancelled.",
|
||
"backup_invalid_json": "The file is not valid JSON.",
|
||
"backup_invalid_format": "Unknown or outdated backup format.",
|
||
"backup_not_owner": "Only the logbook owner can create backups.",
|
||
"backup_not_authenticated": "Please sign in to restore a backup.",
|
||
"backup_id_conflict": "A logbook with this ID already exists.",
|
||
"backup_overwrite_confirm": "The existing logbook with the same ID will be replaced. Continue?",
|
||
"backup_new_id_confirm": "Import the backup as a new logbook with a new ID?",
|
||
"backup_stat_entries": "{{count}} travel days",
|
||
"backup_stat_photos": "{{count}} photos",
|
||
"backup_stat_crew": "{{count}} crew records",
|
||
"backup_stat_tracks": "{{count}} GPS tracks",
|
||
"backup_exported_at": "Exported: {{date}}"
|
||
},
|
||
"disclaimer": {
|
||
"title": "Important notice",
|
||
"intro": "Please read the following information before using Kapteins Daagbok.",
|
||
"e2e_title": "End-to-end encryption",
|
||
"e2e_body": "Your logbook data is encrypted end-to-end. Only you – or people with your key – can read the contents. The server stores encrypted data only.",
|
||
"pwa_title": "Progressive Web App (PWA)",
|
||
"pwa_body": "Kapteins Daagbok runs as a Progressive Web App in your browser and can be installed on your device – similar to a native app, without an app store.",
|
||
"storage_title": "Local storage & sync",
|
||
"storage_body": "Your data is cached locally on your device (IndexedDB). When online, changes are synced to the server. You can keep working offline; sync happens when connectivity returns.",
|
||
"free_title": "Free & ad-free",
|
||
"free_body": "Kapteins Daagbok is free to use and contains no advertising.",
|
||
"liability_title": "Disclaimer of liability",
|
||
"liability_body": "Use is at your own risk. No liability is accepted for damages arising from use of the app – including incorrect or incomplete log entries, data loss, or technical failures.",
|
||
"warranty_title": "No warranty",
|
||
"warranty_body": "No warranty is provided for functionality, accuracy, or availability of the service. Operation may be interrupted, limited, or discontinued at any time.",
|
||
"copyright": "© 2026 KnorrLabs, Markus F.J. Busche",
|
||
"accept": "Accept and continue",
|
||
"close": "Close",
|
||
"button_title": "Legal notice & disclaimer"
|
||
},
|
||
"demo": {
|
||
"logbook_title": "Baltic Sea Demo Logbook",
|
||
"badge": "Demo",
|
||
"public_banner": "Read-only demo view",
|
||
"cta_register": "Create account",
|
||
"back_to_login": "Back to login"
|
||
},
|
||
"stats": {
|
||
"title": "Statistics",
|
||
"subtitle": "Routes, consumption and propulsion at a glance",
|
||
"scope_label": "Scope",
|
||
"scope_logbook": "This logbook",
|
||
"scope_account": "All logbooks",
|
||
"loading": "Calculating statistics…",
|
||
"no_data": "No travel days yet.",
|
||
"total_distance": "Total distance",
|
||
"travel_days": "Travel days",
|
||
"sail_distance": "Under sail",
|
||
"motor_distance": "Engine",
|
||
"unknown_propulsion": "Unknown",
|
||
"fuel_total": "Total fuel",
|
||
"water_total": "Total water",
|
||
"daily_etmal": "Daily mileage",
|
||
"daily_consumption": "Daily consumption",
|
||
"route_overview": "Route",
|
||
"route_map_title": "Route overview",
|
||
"propulsion_title": "Sail vs. engine",
|
||
"propulsion_hint": "Split is based on logbook events per travel day, not GPS segments.",
|
||
"avg_distance": "Avg. per travel day",
|
||
"avg_fuel": "Avg. fuel",
|
||
"avg_water": "Avg. water",
|
||
"fuel_per_nm": "Fuel per nm",
|
||
"fuel_legend": "Fuel",
|
||
"water_legend": "Water",
|
||
"unit_nm": "nm",
|
||
"unit_l": "L",
|
||
"day_label": "Day {{day}}",
|
||
"account_logbooks": "Logbooks overview",
|
||
"col_logbook": "Logbook"
|
||
},
|
||
"tour": {
|
||
"skip": "Skip tour",
|
||
"back": "Back",
|
||
"next": "Next",
|
||
"finish": "Done",
|
||
"progress": "Step {{current}} of {{total}}",
|
||
"steps": {
|
||
"welcome": {
|
||
"title": "Welcome aboard!",
|
||
"body": "We created a demo logbook with three travel days in Kiel Bay. This short tour shows you the key features."
|
||
},
|
||
"welcome_public": {
|
||
"title": "Welcome aboard!",
|
||
"body": "Explore our demo logbook with three travel days in Kiel Bay — no account required. This short tour shows vessel data, crew, and log entries."
|
||
},
|
||
"nav_logs": {
|
||
"title": "Log entries",
|
||
"body": "Manage your travel days here – departure, destination, weather, tank levels, and GPS tracks."
|
||
},
|
||
"entry_list": {
|
||
"title": "Your travel days",
|
||
"body": "Each card represents one travel day. Tap an entry to view or edit the details."
|
||
},
|
||
"entry_open": {
|
||
"title": "Open a travel day",
|
||
"body": "This is what a filled log entry looks like – with events, tank levels, and more."
|
||
},
|
||
"entry_track": {
|
||
"title": "GPS track",
|
||
"body": "Upload GPX files or view saved routes on the map – including distance and speed stats."
|
||
},
|
||
"nav_vessel": {
|
||
"title": "Vessel data",
|
||
"body": "Enter your yacht's name, dimensions, and technical details – fill once, use on every travel day."
|
||
},
|
||
"nav_crew": {
|
||
"title": "Crew list",
|
||
"body": "Manage crew members and assign them to travel days later."
|
||
},
|
||
"finish": {
|
||
"title": "You're all set!",
|
||
"body": "You can restart the tour anytime in Settings. Fair winds!"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|