1081 lines
70 KiB
JSON
1081 lines
70 KiB
JSON
{
|
||
"translation": {
|
||
"app": {
|
||
"name": "Kapteins Daagbok",
|
||
"tagline": "Journal de bord privé d'un yacht",
|
||
"beta": "Bêta",
|
||
"beta_hint": "Version bêta — Les fonctionnalités sont susceptibles d'évoluer"
|
||
},
|
||
"footer": {
|
||
"kofi_label": "Ko-fi",
|
||
"kofi_title": "Soutenez le projet, son développement et ses coûts d'exploitation sur Ko-fi"
|
||
},
|
||
"languages": {
|
||
"de": "Deutsch",
|
||
"en": "English",
|
||
"da": "Dansk",
|
||
"sv": "Svenska",
|
||
"nb": "Norsk",
|
||
"fr": "Français",
|
||
"es": "Español"
|
||
},
|
||
"dialog": {
|
||
"ok": "OK",
|
||
"yes": "Oui",
|
||
"no": "Non"
|
||
},
|
||
"errors": {
|
||
"load_failed": "Les données n'ont pas pu être chargées.",
|
||
"save_failed": "Les modifications n'ont pas pu être enregistrées.",
|
||
"delete_failed": "Échec de la suppression.",
|
||
"export_failed": "Échec de l'exportation."
|
||
},
|
||
"common": {
|
||
"unsaved_changes_title": "Modifications non enregistrées",
|
||
"unsaved_changes_message": "Tu as des modifications non enregistrées. Veux-tu vraiment quitter cette page ? Tes modifications seront perdues.",
|
||
"unsaved_changes_stay": "Rester",
|
||
"unsaved_changes_save_leave": "Enregistrer et quitter",
|
||
"unsaved_changes_discard": "Rejeter",
|
||
"unsaved_changes_leave": "Quitter"
|
||
},
|
||
"nav": {
|
||
"dashboard": "Tableau de bord",
|
||
"vessel": "Données relatives au navire",
|
||
"crew": "Équipage",
|
||
"deviation": "Tableau des déviations",
|
||
"logs": "Entrées du journal de bord",
|
||
"stats": "Statistiques",
|
||
"settings": "Paramètres",
|
||
"admin": "Admin"
|
||
},
|
||
"auth": {
|
||
"welcome": "Bienvenue chez Kapteins Daagbok",
|
||
"tagline": "Ton journal de bord maritime sécurisé et crypté avec le protocole E2E.",
|
||
"register": "S'inscrire avec Passkey",
|
||
"login": "Se connecter avec Passkey",
|
||
"login_as": "Se connecter en tant que {{name}}",
|
||
"quick_login": "Connexion rapide",
|
||
"forget_account": "Compte oublié sur cet appareil",
|
||
"not_user": "Pas {{name}} ?",
|
||
"recovery_title": "Ta clé de récupération",
|
||
"recovery_warning": "IMPORTANT : Note ces 12 mots. Si tu perds ton Passkey et ces mots, tes données ne pourront pas être récupérées.",
|
||
"confirm_recovery": "J'ai noté ces mots",
|
||
"status_logged_in": "Connecté",
|
||
"status_logged_out": "Déconnecté",
|
||
"copied": "Copié !",
|
||
"copy_phrase": "Faire faire un double de la clé",
|
||
"enter_recovery": "Saisir la clé de récupération",
|
||
"recovery_fallback_warning": "Ton Passkey a été authentifié avec succès, mais ton appareil ne prend pas en charge la dérivation de clé matérielle. Saisis ta phrase de récupération de 12 mots pour déchiffrer ton journal.",
|
||
"recovery_placeholder": "Saisis ta phrase de récupération composée de 12 mots, séparés par des espaces...",
|
||
"back": "Retour",
|
||
"decrypting": "Décryptage...",
|
||
"decrypt_logbook": "Décrypter le journal de bord",
|
||
"error_incorrect_recovery": "Clé de restauration incorrecte. Échec du déchiffrement.",
|
||
"error_decryption_failed": "Échec du déchiffrement. Vérifie ta clé de récupération.",
|
||
"or_register": "ou S'inscrire",
|
||
"explore_demo": "Découvrir la démo sans créer de compte",
|
||
"username_placeholder": "Nom d'utilisateur / Nom de skipper",
|
||
"processing": "Traitement en cours...",
|
||
"help": "Aide",
|
||
"setup_pin_title": "Configurer un code PIN local (facultatif)",
|
||
"setup_pin_warning": "Comme ton appareil ne prend pas en charge la dérivation directe de la clé Passkey, tu devrais sinon saisir ta clé de 12 mots à chaque connexion sur cet appareil. Configure un code PIN local pour éviter cela.",
|
||
"pin_placeholder": "Par exemple : 123456",
|
||
"pin_label": "Code PIN local (4 à 8 chiffres)",
|
||
"save_pin": "Enregistrer le code PIN et continuer",
|
||
"skip_pin": "Passer et utiliser la fonction de récupération",
|
||
"enter_pin_title": "Décrypter avec un code PIN",
|
||
"enter_pin_warning": "Saisis ton code PIN local pour déverrouiller la clé de déchiffrement sur cet appareil.",
|
||
"enter_pin_placeholder": "Saisis ton code PIN...",
|
||
"decrypt_with_pin": "Décrypter",
|
||
"use_recovery_instead": "Utiliser plutôt la clé de récupération",
|
||
"error_incorrect_pin": "Code PIN incorrect. Échec du décryptage.",
|
||
"error_invalid_host": "Passkey ne fonctionne pas via 127.0.0.1. Veuillez ouvrir l'application via localhost.",
|
||
"use_localhost_link": "Passer à localhost",
|
||
"error_passkey_cancelled": "Passkey - Connexion interrompue ou expirée. Veuillez réessayer.",
|
||
"error_invalid_rp_id": "Le domaine Passkey ne correspond pas (RP ID). En local, utilisez uniquement http://localhost:5173 avec RP_ID=localhost dans le fichier .env.",
|
||
"error_session_incomplete": "Inscription incomplète. Veuillez vous reconnecter avec Passkey.",
|
||
"restore_checking": "La session est en cours de vérification…",
|
||
"restore_title": "Restaurer la session",
|
||
"restore_subtitle": "Ton inscription est toujours active. Déverrouille ton journal de bord avec Passkey ou ton code PIN.",
|
||
"restore_unlocking": "Déverrouillage en cours…",
|
||
"restore_with_passkey": "Déverrouiller avec Passkey ({{name}})",
|
||
"restore_with_pin": "Déverrouiller avec le code PIN",
|
||
"restore_pin_warning": "Saisis ton code PIN local pour déverrouiller ton journal de bord après le redémarrage.",
|
||
"restore_other_account": "Se connecter avec un autre compte"
|
||
},
|
||
"pwa": {
|
||
"title": "Installer l'application",
|
||
"generic_benefit": "Installez Kapteins Daagbok sur votre appareil pour bénéficier d'un accès plus rapide, d'une utilisation hors ligne et d'un stockage permanent des données.",
|
||
"ios_instructions": "Sur le iPad/iPhone : ajoute l'application à l'écran d'accueil afin que tes données de journal de bord restent protégées et que l'application se lance comme une application native.",
|
||
"ios_step_share": "Appuyez sur l'icône de partage dans la barre Safari",
|
||
"ios_step_add": "Sélectionner « Retour à l'écran d'accueil »",
|
||
"install_now": "Installer maintenant",
|
||
"installing": "Installation…",
|
||
"later": "Plus tard",
|
||
"never": "Ne plus afficher",
|
||
"platform_ios": "Installation via Safari",
|
||
"platform_android": "Installation via le navigateur",
|
||
"platform_desktop": "Installation en tant qu'application de bureau",
|
||
"settings_section": "Installation de l'application",
|
||
"update_title": "Mise à jour disponible",
|
||
"update_desc": "Une nouvelle version de Kapteins Daagbok est disponible. Veuillez effectuer la mise à jour pour bénéficier des dernières modifications.",
|
||
"update_now": "Mettre à jour maintenant",
|
||
"update_reloading": "Chargement en cours…",
|
||
"storage_persist_hint": "Le navigateur peut supprimer les données hors ligne. Autorise le stockage permanent afin que ton journal de bord reste protégé (dans les paramètres du navigateur ou lors de la prochaine notification)."
|
||
},
|
||
"sync": {
|
||
"status_synced": "Doublé",
|
||
"status_syncing": "Synchroniser…",
|
||
"status_offline": "Cache hors ligne",
|
||
"status_unsynced": "Modifications non synchronisées",
|
||
"conflict_title": "Conflit de synchronisation",
|
||
"conflict_message": "{{count}} La ou les modifications n'ont pas pu être synchronisées (entrée {{id}}…). Veuillez choisir la version à appliquer.",
|
||
"conflict_use_server": "Appliquer la version du serveur",
|
||
"conflict_keep_local": "Conserver ma version"
|
||
},
|
||
"vessel": {
|
||
"title": "Données de base du navire",
|
||
"name": "Nom du yacht",
|
||
"type": "Type de yacht",
|
||
"type_unset": "— non spécifié —",
|
||
"type_sailing": "voilier",
|
||
"type_motor": "yacht à moteur",
|
||
"length_m": "Longueur (m)",
|
||
"draft_m": "Tirant d'eau (m)",
|
||
"air_draft_m": "Altitude (m)",
|
||
"invalid_metric": "Valeur numérique non valide — veuillez saisir la mesure sous forme de nombre décimal (par exemple 12,5).",
|
||
"port": "port d'attache",
|
||
"owner": "propriétaire",
|
||
"charter": "société de location de bateaux",
|
||
"registration": "Numéro d'immatriculation",
|
||
"callsign": "Indicatif d'appel radio",
|
||
"atis": "N° ATIS",
|
||
"mmsi": "Numéro MMSI",
|
||
"save": "Enregistrer les données du navire",
|
||
"saving": "En cours d'enregistrement...",
|
||
"saved": "Les données du navire ont été enregistrées avec succès !",
|
||
"loading": "Chargement des données du navire...",
|
||
"sails_list": "Gréement (voiles disponibles)",
|
||
"sails_help": "Indique ici les voiles dont dispose ton bateau (par exemple : grand-voile, génois, foc).",
|
||
"add_sail": "Ajouter une voile",
|
||
"sail_name_placeholder": "par exemple, la grand-voile",
|
||
"no_sails": "Aucune voile n'est stockée.",
|
||
"photo_add": "Ajouter une photo",
|
||
"photo_change": "Changer de photo",
|
||
"photo_delete": "Supprimer la photo",
|
||
"tanks_section": "Réservoirs (capacité)",
|
||
"tanks_help": "En option en litres — permet d'afficher un curseur dans le journal lorsque la capacité du réservoir est connue.",
|
||
"freshwater_capacity_l": "Eau potable (litres)",
|
||
"fuel_capacity_l": "Carburant (litres)",
|
||
"greywater_capacity_l": "Eaux grises (litres)",
|
||
"invalid_tank_liters": "Valeur numérique non valide — veuillez saisir le nombre de litres sous forme de chiffre (par exemple, 200)."
|
||
},
|
||
"logs": {
|
||
"title": "Journal de bord",
|
||
"new_entry": "Nouveau jour de voyage",
|
||
"travel_details": "Détails du voyage",
|
||
"add_event": "Ajouter une nouvelle entrée au journal de bord",
|
||
"add_event_btn": "Ajouter un événement",
|
||
"edit_event": "Modifier l'événement",
|
||
"save_event_btn": "Enregistrer la modification",
|
||
"cancel_event_edit": "Annuler",
|
||
"delete_event": "Supprimer l'événement",
|
||
"sign_cleared_skipper_re_sign_title": "Signature du skipper supprimée",
|
||
"sign_cleared_skipper_re_sign": "Le journal des événements a été modifié. La signature du skipper a été supprimée. Veuillez le valider à nouveau.",
|
||
"date": "Date",
|
||
"day_of_travel": "Jour de voyage",
|
||
"travel_day_number": "Jour de voyage {{number}}",
|
||
"departure": "Port de départ (départ de)",
|
||
"destination": "Port de destination (vers)",
|
||
"route": "Voyage depuis/vers",
|
||
"tanks": "Réservoirs",
|
||
"customize_columns": "Ajuster les colonnes",
|
||
"column_selector_title": "Colonnes à afficher",
|
||
"freshwater": "Eau douce (litres)",
|
||
"fuel": "Carburant (litres)",
|
||
"greywater": "Eaux grises (litres)",
|
||
"greywater_level": "niveau de remplissage",
|
||
"tank_slider_of_max": "{{current}} / {{max}} L",
|
||
"tank_capacity_tooltip": "Si les capacités des réservoirs (en litres) sont indiquées dans les données du bateau, tu peux saisir ici les niveaux de remplissage à l'aide du curseur.",
|
||
"morning": "Situation ce matin",
|
||
"refilled": "Réapprovisionné",
|
||
"evening": "Situation en fin de journée",
|
||
"consumption": "consommation quotidienne",
|
||
"signatures": "Signatures / Validation",
|
||
"sign_skipper": "Signature du skipper",
|
||
"sign_crew": "Signature de l'équipe",
|
||
"sign_hint": "Signer avec le doigt, un stylo ou la souris",
|
||
"sign_clear": "Supprimer",
|
||
"sign_export_image": "[Signature]",
|
||
"sign_with_passkey": "Partager avec Passkey",
|
||
"sign_passkey_signing": "Passkey est demandé…",
|
||
"sign_passkey_signed": "Publié par {{username}}",
|
||
"sign_passkey_export": "Passkey : {{username}} ({{date}})",
|
||
"sign_attribution_export": "{{username}} ({{date}})",
|
||
"sign_passkey_clear": "Supprimer l'autorisation Passkey",
|
||
"sign_mode_passkey": "Passkey",
|
||
"sign_mode_classic": "Classique",
|
||
"sign_passkey_failed": "Échec de la validation Passkey",
|
||
"sign_passkey_cancelled": "Passkey - Validation interrompue",
|
||
"sign_invalid": "Signature non valide — Le contenu a été modifié",
|
||
"sign_badge_skipper": "skipper",
|
||
"sign_badge_skipper_invalid": "Non valide",
|
||
"sign_badge_skipper_title_valid": "Skipper a validé",
|
||
"sign_badge_skipper_title_invalid": "Signature du skipper non valide — Le contenu a été modifié",
|
||
"sign_classic_or_passkey": "En option : signature classique ou validation Passkey en haut",
|
||
"sign_crew_passkey_hint": "Les membres de l'équipe disposant d'un accès en écriture peuvent partager via Passkey",
|
||
"sign_offline_hint": "La validation Passkey nécessite une connexion Internet — la signature classique est possible hors ligne",
|
||
"sign_lock_notice": "Une fois le document signé, aucune modification ne peut être apportée à l'inscription dans le journal de bord (à l'exception des photos) sans que le skipper et l'équipage ne doivent à nouveau signer.",
|
||
"sign_lock_active": "Cette entrée est signée. Toute modification apportée au journal de bord (à l'exception des photos) supprime automatiquement les signatures du skipper et de l'équipage.",
|
||
"sign_lock_warning_title": "Confirmer la signature",
|
||
"sign_lock_warning": "Une fois la signature apposée, aucune modification ne peut être apportée à l'entrée du journal de bord (à l'exception des photos) sans que le skipper et l'équipage ne doivent à nouveau signer.\n\nSouhaites-tu continuer ?",
|
||
"sign_proceed": "Signer",
|
||
"sign_cancel": "Annuler",
|
||
"sign_cleared_re_sign_title": "Signatures supprimées",
|
||
"sign_cleared_re_sign": "L'entrée du journal de bord a été modifiée. Les signatures du skipper et de l'équipage ont été supprimées. Veuillez signer à nouveau.",
|
||
"no_entries": "Aucune entrée de journal de bord n'a été trouvée pour ce yacht. Créez votre premier journal de bord !",
|
||
"back_to_list": "Retour à la liste des articles",
|
||
"save": "Enregistrer la page du journal de bord",
|
||
"saving": "En cours d'enregistrement...",
|
||
"saved": "La page du journal de bord a été enregistrée avec succès !",
|
||
"loading": "Le journal est en cours de chargement...",
|
||
"view_mode_label": "Vue",
|
||
"view_list": "Liste",
|
||
"live_mode": "En direct",
|
||
"live_title": "Journal en direct",
|
||
"live_loading": "LiveJournal est en cours de chargement...",
|
||
"live_retry": "Réessayer",
|
||
"live_load_error": "Impossible de charger Live-Journal.",
|
||
"live_action_error": "L'enregistrement n'a pas pu être sauvegardé.",
|
||
"live_open_editor": "Éditeur complet",
|
||
"live_actions_label": "Offres flash",
|
||
"live_stream_label": "Journal des événements",
|
||
"live_stream_title": "Journal",
|
||
"live_no_events": "Pas encore d'entrées — clique sur une action.",
|
||
"live_motor_start": "Démarrage du moteur",
|
||
"live_motor_stop": "Arrêt du moteur",
|
||
"live_cast_off": "Déposer",
|
||
"live_moor": "Créer",
|
||
"live_sails_btn": "voile",
|
||
"live_sails_pick": "Choisir une voile",
|
||
"live_sails_pick_hint": "Appuyez sur plusieurs voiles (appuyez à nouveau pour les désélectionner), puis enregistrez.",
|
||
"live_sails_selected": "Sélection : {{sails}}",
|
||
"live_sails_confirm": "S'inscrire",
|
||
"live_sails_confirm_count": "S'inscrire ({{count}})",
|
||
"live_sails": "Voile : {{sails}}",
|
||
"live_position": "Position",
|
||
"live_position_coords": "Position {{lat}}, {{lng}}",
|
||
"live_position_manual_hint": "GPS indisponible. Saisissez manuellement la latitude et la longitude ou réessayez en appuyant sur le bouton GPS.",
|
||
"live_position_gps_loading": "La position GPS est en cours de calcul…",
|
||
"live_position_invalid": "Veuillez saisir des coordonnées valides (latitude −90…90, longitude −180…180).",
|
||
"live_position_lat_placeholder": "Largeur (Lat)",
|
||
"live_position_lng_placeholder": "Longueur (Lng)",
|
||
"live_photo_btn": "Photo (appareil photo)",
|
||
"live_photo_capture_btn": "Enregistrer",
|
||
"live_photo_save_btn": "Enregistrer",
|
||
"live_photo_retake_btn": "Réenregistrer",
|
||
"live_photo_capture_failed": "Échec de l'enregistrement. Veuillez réessayer.",
|
||
"live_photo_open_camera_btn": "Ouvrir l'appareil photo",
|
||
"live_photo_native_hint": "Prenez une photo avec l'appareil photo de l'appareil, puis enregistrez-la ici.",
|
||
"live_photo_camera_starting": "La caméra démarre…",
|
||
"live_photo_camera_denied": "Accès à la caméra refusé ou indisponible.",
|
||
"live_photo_camera_unavailable": "Ce navigateur ne prend pas en charge la caméra.",
|
||
"live_photo_no_camera": "Cet appareil n'est pas équipé d'un appareil photo.",
|
||
"live_photo_error": "Impossible d'enregistrer la photo.",
|
||
"live_photo_entry": "Photo : {{caption}}",
|
||
"live_photo_entry_plain": "Photo prise",
|
||
"live_undo_photo_hint": "Photo enregistrée",
|
||
"live_voice_btn": "message vocal",
|
||
"live_voice_hint": "Enregistrer un court message vocal (60 secondes maximum).",
|
||
"live_voice_record": "Lancer l'enregistrement",
|
||
"live_voice_stop": "Terminer l'enregistrement",
|
||
"live_voice_recording": "Enregistrement {{time}}",
|
||
"live_voice_save": "Enregistrer",
|
||
"live_voice_saving": "En cours d'enregistrement…",
|
||
"live_voice_retake": "Réenregistrer",
|
||
"live_voice_mic_denied": "Accès au microphone refusé ou indisponible.",
|
||
"live_voice_record_failed": "Échec de l'enregistrement. Veuillez réessayer.",
|
||
"live_voice_unavailable": "Mémorandum vocal indisponible",
|
||
"live_voice_too_large": "L'enregistrement est trop long. Veuillez raccourcir l'enregistrement.",
|
||
"live_voice_error": "Impossible d'enregistrer le message vocal.",
|
||
"live_voice_entry": "Note vocale : {{caption}}",
|
||
"live_voice_entry_plain": "message vocal",
|
||
"live_voice_caption_label": "Inscription (facultative)",
|
||
"live_voice_caption_placeholder": "par exemple, communications radio avec le capitaine du port",
|
||
"live_voice_transcribe_action": "Transcrire",
|
||
"live_voice_transcribing": "Transcris...",
|
||
"live_voice_transcribe_failed": "Le mémo vocal a été enregistré, mais la transcription a échoué.",
|
||
"live_undo_voice_hint": "Note vocale enregistrée",
|
||
"live_comment_btn": "Commentaire",
|
||
"live_comment_placeholder": "Saisir du texte libre…",
|
||
"live_comment_confirm": "S'inscrire",
|
||
"live_gps_error": "Impossible de déterminer la position GPS.",
|
||
"live_gps_start_hint": "Commence toujours ton parcours quotidien par une position.",
|
||
"live_event_generic": "Événement",
|
||
"live_weather_btn": "Météo",
|
||
"live_weather_owm_btn": "OpenWeatherMap Consulter la météo",
|
||
"live_weather_owm_loading": "Chargement de la météo…",
|
||
"live_weather_position_required": "Pour les conditions météo de OpenWeatherMap, commencez par saisir une position (bouton « Position »). La position ne doit pas dater de plus de 6 heures.",
|
||
"live_weather_position_stale": "La dernière position date de plus de 6 heures. Veuillez enregistrer une nouvelle position avant de consulter la météo.",
|
||
"live_wind_btn": "Vent",
|
||
"live_temp_btn": "T °C",
|
||
"live_pressure_btn": "pression atmosphérique",
|
||
"live_precip_btn": "Précipitations",
|
||
"live_sea_state_btn": "état de la mer",
|
||
"live_visibility_btn": "visibilité",
|
||
"live_course_btn": "Cours",
|
||
"live_fuel_btn": "+ Diesel",
|
||
"live_water_btn": "+ Eau",
|
||
"live_wind_entry": "Vent {{value}}",
|
||
"live_temp_entry": "Température {{temp}} °C",
|
||
"live_pressure_entry": "Pression atmosphérique {{value}} hPa",
|
||
"live_precip_entry": "Précipitations {{value}}",
|
||
"live_sea_state_entry": "État de la mer {{value}}",
|
||
"live_visibility_entry": "Portée visuelle {{value}}",
|
||
"live_course_entry": "Cours {{course}}",
|
||
"live_fuel_entry": "Diesel +{{liters}} L",
|
||
"live_water_entry": "Eau +{{liters}} L",
|
||
"live_auto_position": "Position automatique",
|
||
"live_undo_hint": "Entrée enregistrée",
|
||
"live_undo_btn": "Annuler",
|
||
"live_cancel": "Interruption",
|
||
"live_pressure_placeholder": "par exemple 1013",
|
||
"live_temp_placeholder": "par exemple 18",
|
||
"live_precip_placeholder": "par exemple, une pluie légère",
|
||
"live_sea_state_placeholder": "par exemple 3",
|
||
"live_visibility_placeholder": "par exemple 10 km",
|
||
"live_course_placeholder": "par exemple 245",
|
||
"live_fuel_placeholder": "Litres rechargés",
|
||
"live_water_placeholder": "Litres rechargés",
|
||
"live_sog_btn": "SOG",
|
||
"live_stw_btn": "STW",
|
||
"live_sog_entry": "SOG {{speed}} kn",
|
||
"live_stw_entry": "STW {{speed}} kn",
|
||
"live_sog_placeholder": "par exemple 5,2",
|
||
"live_stw_placeholder": "par exemple 4,8",
|
||
"live_sog_hint": "Vitesse par rapport au sol (kn) — La valeur GPS est préremplie si elle est disponible.",
|
||
"delete_entry": "Supprimer la balise",
|
||
"delete_confirm": "Es-tu sûr de vouloir supprimer définitivement cette date de voyage ?",
|
||
"carry_over_tanks_title": "Reprendre les données de la veille ?",
|
||
"carry_over_tanks_confirm": "Reprendre les valeurs de départ du port de départ, d'eau douce, de carburant et d'eaux usées du dernier jour du voyage ?\n\nPort de départ : {{departure}}\nEau douce : {{fw}} L\nCarburant : {{fuel}} L\nEaux usées : {{greywater}} L",
|
||
"carry_over_tanks_yes": "Appliquer",
|
||
"carry_over_tanks_no": "Commencer à zéro",
|
||
"event_title": "Journal chronologique des événements",
|
||
"event_creator": "Publié par",
|
||
"no_events": "Aucun événement n'a encore été enregistré pour cette journée de voyage.",
|
||
"event_time": "Heure",
|
||
"event_mgk": "Cours MgK",
|
||
"event_rwk": "Cours RwK",
|
||
"event_course_section": "Cours",
|
||
"course_dial_hint": "Faire tourner l'anneau ou saisir un angle",
|
||
"course_dial_step_label": "Incrément",
|
||
"course_step_fine": "1°",
|
||
"course_step_medium": "5°",
|
||
"course_step_coarse": "10°",
|
||
"course_tab_mgk": "MgK",
|
||
"course_tab_rwk": "rwK",
|
||
"course_invalid": "Valeur non valide (0–360)",
|
||
"course_placeholder_degrees": "par exemple 180",
|
||
"course_placeholder_cardinal": "par exemple NW",
|
||
"compass_n": "N",
|
||
"compass_e": "O",
|
||
"compass_s": "S",
|
||
"compass_w": "W",
|
||
"wind_mode_cardinal": "cardinal",
|
||
"wind_mode_degrees": "En degrés",
|
||
"event_wind_direction": "Direction du vent",
|
||
"event_wind_strength": "force du vent",
|
||
"event_sea_state": "état de la mer",
|
||
"event_visibility": "visibilité",
|
||
"event_visibility_placeholder": "par exemple 10 km",
|
||
"weather_slider_unset": "—",
|
||
"weather_slider_pressure": "{{value}} hPa",
|
||
"weather_slider_sea_state": "Niveau {{value}}",
|
||
"weather_slider_heel": "{{value}}°",
|
||
"event_weather": "Météo",
|
||
"event_log": "Logge (sm)",
|
||
"event_gps": "Coordonnées GPS",
|
||
"event_location": "Lieu / Port",
|
||
"event_location_placeholder": "par exemple, Kiel",
|
||
"event_remarks": "Remarques / Évènements",
|
||
"gps_btn": "Obtenir les coordonnées GPS",
|
||
"gps_permission_denied": "L'accès à la localisation a été refusé. Veuillez l'autoriser dans les paramètres de votre navigateur ou de votre appareil, puis réessayez.",
|
||
"gps_timeout": "Délai d'attente GPS. Veuillez réessayer, de préférence à l'extérieur, dans un endroit où la réception est bonne.",
|
||
"gps_position_unavailable": "Aucun signal GPS disponible. Veuillez patienter ou saisir les coordonnées manuellement.",
|
||
"gps_unavailable": "Le GPS n'est pas pris en charge par ce navigateur ou cet appareil.",
|
||
"gps_failed": "Impossible de déterminer la position GPS.",
|
||
"gps_fallback_no_location": "Échec de la localisation GPS. Veuillez saisir un lieu dans la rubrique « Lieu / Port », indiquer le port de départ ou d'arrivée, ou saisir les coordonnées manuellement.",
|
||
"gps_fallback_success": "Coordonnées de « {{location}} » déterminées à partir du nom de la localité (et non par GPS).",
|
||
"gps_fallback_failed": "La recherche par GPS et par nom de lieu a échoué. Veuillez saisir les coordonnées manuellement.",
|
||
"gps_quality_excellent": "Réception GPS puissante (±{{accuracy}} m)",
|
||
"gps_quality_good": "Bonne réception GPS (±{{accuracy}} m)",
|
||
"gps_quality_fair": "Réception GPS moyenne (±{{accuracy}} m) – pour une meilleure réception, sortez à l'extérieur.",
|
||
"gps_quality_poor": "Réception GPS faible (±{{accuracy}} m) – probablement peu de satellites. Réessayez à l'extérieur ou vérifiez votre position.",
|
||
"gps_quality_unknown": "Position GPS enregistrée (précision non indiquée par l'appareil).",
|
||
"gps_live_intro_title": "Emplacement du journal en temps réel",
|
||
"gps_live_intro_body": "Pour enregistrer automatiquement ta position et utiliser le bouton GPS, l'application doit pouvoir accéder à ta localisation.\n\nAppuie sur « Autoriser l'accès à la localisation » ; dans la fenêtre suivante, confirme l'autorisation. Tu peux à tout moment saisir manuellement ta position dans la rubrique « Position ».",
|
||
"gps_live_intro_allow": "Autoriser l'accès à la localisation",
|
||
"gps_live_intro_later": "Plus tard",
|
||
"gps_enable_in_settings_hint": "L'accès à la localisation est bloqué. Tu peux autoriser l'accès ultérieurement dans les paramètres du navigateur ou de l'appareil (site web / application → Localisation).",
|
||
"weather_btn": "OpenWeatherMap Consulter la météo",
|
||
"weather_offline": "OpenWeatherMap nécessite une connexion Internet. Tu es actuellement hors ligne.",
|
||
"event_wind_pressure": "Pression atmosphérique (hPa)",
|
||
"event_heel": "Gîte (°)",
|
||
"event_sails": "Voile / Moteur",
|
||
"motor_propulsion": "déplacement de la machine",
|
||
"sails_picker_show_more": "Afficher toutes les voiles",
|
||
"sails_picker_show_less": "Afficher moins",
|
||
"motor_hours": "Heures-machine (total)",
|
||
"fuel_per_motor_hour": "Consommation par heure de fonctionnement",
|
||
"event_distance": "Distance (m)",
|
||
"export_csv": "Télécharger CSV",
|
||
"share_csv": "Partager CSV",
|
||
"export_pdf": "Télécharger PDF",
|
||
"exporting_pdf": "PDF est généré...",
|
||
"ai_summary_title": "Résumé généré par l'IA",
|
||
"ai_summary_read_only": "Créé par le skipper — accessible uniquement à l'équipage.",
|
||
"ai_summary_empty": "Il n'y a pas encore de résumé.",
|
||
"ai_summary_generate": "Générer un résumé",
|
||
"ai_summary_regenerate": "Regénérer",
|
||
"ai_summary_generating": "En cours de génération…",
|
||
"ai_summary_attempts_remaining": "Il reste encore {{remaining}} essais sur {{max}}",
|
||
"ai_summary_error": "Échec du résumé généré par l'IA. Veuillez réessayer plus tard.",
|
||
"ai_summary_error_no_key": "Aucune clé API OpenRouter n'est configurée sur le serveur.",
|
||
"ai_summary_error_rate_limited": "Le nombre maximal de générations pour cette journée de voyage a été atteint.",
|
||
"ai_summary_error_forbidden": "Seul le skipper est autorisé à générer des résumés basés sur l'IA.",
|
||
"ai_summary_offline": "Le résumé généré par l'IA nécessite une connexion Internet. Tu es actuellement hors ligne.",
|
||
"photos_title": "Pièces jointes (photos)",
|
||
"photo_caption_label": "Description de la photo / Étiquette (facultatif)",
|
||
"photo_caption_placeholder": "par exemple, hisser les voiles près de l'entrée du port",
|
||
"photo_btn": "Prendre une photo / Télécharger une photo",
|
||
"photo_camera_btn": "Prendre une photo",
|
||
"photo_gallery_btn": "Sélectionner dans la galerie",
|
||
"photo_processing": "En cours de traitement...",
|
||
"no_photos": "Aucune photo n'a encore été ajoutée pour cette journée de voyage.",
|
||
"photo_delete_confirm": "Es-tu sûr de vouloir supprimer définitivement cette photo ?",
|
||
"confirm_yes": "Oui",
|
||
"confirm_no": "Non",
|
||
"track_upload_title": "Tracé GPS (fichier)",
|
||
"track_upload_points": "Points",
|
||
"gps_tracking_btn_gpx": "Télécharger le fichier de piste",
|
||
"gps_track_upload_help": "Faites glisser un fichier GPX, KML ou GeoJSON ici ou cliquez pour sélectionner",
|
||
"gps_track_upload_btn": "Télécharger un tracé GPS",
|
||
"gps_track_delete": "Supprimer le fichier de piste",
|
||
"gps_track_delete_confirm": "Es-tu sûr de vouloir supprimer définitivement ce fichier audio ?",
|
||
"track_distance": "Parcours GPS (sm)",
|
||
"track_speed_max": "Vitesse maximale (nœuds)",
|
||
"track_speed_avg": "Vitesse moyenne (nœuds)",
|
||
"track_map_title": "Tracé GPS sur OpenSeaMap",
|
||
"track_map_start": "Accueil",
|
||
"track_map_end": "Objectif",
|
||
"track_map_speed_slow": "lentement",
|
||
"track_map_speed_fast": "rapidement",
|
||
"nmea_import_title": "Importer un fichier au format NMEA",
|
||
"nmea_import_intro": "Importe un fichier .nmea depuis l'enregistreur de bord. L'application te propose des entrées de journal — c'est toi qui décides lesquelles sont reprises.",
|
||
"nmea_import_btn": "Importer des données NMEA",
|
||
"nmea_file_label": "Fichier NMEA",
|
||
"nmea_stats": "{{lines}} phrases détectées · Types : {{types}}",
|
||
"nmea_warn_no_position": "Aucune donnée de position trouvée — les champs « Track » et « GPS » peuvent rester vides.",
|
||
"nmea_warn_duplicate_file": "Ce fichier NMEA a déjà été importé. Une nouvelle importation du même fichier entraînerait la création d'entrées en double dans le journal.",
|
||
"nmea_mode_label": "Créer des entrées de journal",
|
||
"nmea_mode_interval": "Par intervalle de temps",
|
||
"nmea_mode_change": "En cas de modification importante",
|
||
"nmea_mode_both": "Les deux (fusionner)",
|
||
"nmea_interval_label": "Intervalle (minutes)",
|
||
"nmea_import_track": "Importer un tracé GPS au format NMEA",
|
||
"nmea_preview": "Aperçu",
|
||
"nmea_preview_hint": "{{count}} Entrées de journal suggérées",
|
||
"nmea_select_all": "Tout sélectionner",
|
||
"nmea_select_none": "Ne rien sélectionner",
|
||
"nmea_source_interval": "Intervalle",
|
||
"nmea_source_change": "Événement",
|
||
"nmea_apply": "Enregistrer dans le journal",
|
||
"nmea_back": "Retour",
|
||
"nmea_cancel": "Annuler",
|
||
"nmea_archive_question": "Archiver le journal brut localement ? (Uniquement sur cet appareil, sans synchronisation.)",
|
||
"nmea_archive_keep": "Archiver",
|
||
"nmea_archive_discard": "Rejeter",
|
||
"nmea_archive_stored": "NMEA archivé : {{name}}",
|
||
"nmea_archive_delete_confirm": "Supprimer le journal NMEA archivé de cet appareil ?",
|
||
"nmea_error_no_samples": "Le fichier ne contient aucun enregistrement NMEA exploitable.",
|
||
"nmea_error_parse": "Impossible de lire le fichier NMEA.",
|
||
"nmea_error_read": "Impossible de lire le fichier.",
|
||
"nmea_error_no_file": "Veuillez d'abord sélectionner un fichier NMEA.",
|
||
"nmea_error_no_selection": "Veuillez sélectionner au moins une entrée du journal.",
|
||
"nmea_remark_interval": "Intervalle NMEA",
|
||
"nmea_remark_uncertain": "incertain",
|
||
"nmea_remark_depth": "Profondeur {{depth}} m",
|
||
"nmea_change_course": "Changement de cap {{from}}° → {{to}}°",
|
||
"nmea_change_wind": "Vent {{from}}° → {{to}}°",
|
||
"nmea_change_wind_speed": "Vent {{from}} → {{to}} nœuds",
|
||
"nmea_change_pressure": "Pression atmosphérique {{from}} → {{to}} hPa",
|
||
"nmea_change_depth": "Profondeur {{from}} → {{to}} m",
|
||
"nmea_change_engine_start": "Moteur en marche ({{rpm}} tr/min)",
|
||
"nmea_change_engine_stop": "Moteur éteint",
|
||
"nmea_change_autopilot_on": "Pilote automatique activé",
|
||
"nmea_change_autopilot_off": "Pilote automatique désactivé",
|
||
"nmea_change_gps_lost": "Perte de la position GPS",
|
||
"nmea_change_gps_regained": "Position GPS rétablie",
|
||
"nmea_change_water_temp": "Température de l'eau {{from}} → {{to}} °C",
|
||
"nmea_change_departure": "Départ / Début du trajet",
|
||
"nmea_change_anchor": "Ancrage / Arrêt",
|
||
"nmea_change_speed": "Vitesse {{from}} → {{to}} nœuds",
|
||
"track_map_error": "Impossible de charger la carte.",
|
||
"exporting": "Exporter...",
|
||
"share_unsupported": "Le partage n'est pas pris en charge sur cet appareil. Le fichier a été téléchargé à la place.",
|
||
"invite_crew": "Inviter l'équipe",
|
||
"invite_link_copied": "Le lien d'invitation a été copié dans le presse-papiers !",
|
||
"invite_link_desc": "Partage ce lien avec les membres de l'équipage pour leur accorder des droits d'écriture sur ce journal de bord.",
|
||
"collaborators_list": "Membres / Équipe",
|
||
"revoke": "Supprimer",
|
||
"revoke_confirm": "Es-tu sûr de vouloir retirer l'accès à ce membre de l'équipe ?",
|
||
"invite_role": "rôle",
|
||
"invite_expires": "Le lien est valable pendant 48 heures"
|
||
},
|
||
"dashboard": {
|
||
"title": "Tes carnets de bord",
|
||
"subtitle": "Choisis un carnet de voyage ou crée-en un nouveau pour gérer tes voyages.",
|
||
"create_btn": "Créer un journal de bord",
|
||
"new_logbook_placeholder": "Nom du journal de bord ou du yacht",
|
||
"logout": "Se déconnecter",
|
||
"logged_in_as": "Connecté en tant que {{name}}",
|
||
"delete_confirm": "Es-tu sûr de vouloir supprimer définitivement ce journal ? Toutes les données locales et les copies sur le serveur seront effacées.\n\nConseil : si tu souhaites conserver ces données ultérieurement, pense à créer au préalable une copie de sauvegarde (.daagbok) dans Réglages → Sauvegarde et restauration.",
|
||
"no_logbooks": "Aucun journal de bord trouvé. Crée ton premier journal de bord pour commencer !",
|
||
"loading": "Chargement des journaux de bord...",
|
||
"status_synced": "Doublé",
|
||
"status_local": "Cache local uniquement",
|
||
"delete_btn": "Effacer le journal de bord",
|
||
"section_owned": "Mes carnets de bord",
|
||
"section_shared": "Journaux de bord partagés",
|
||
"section_shared_hint": "Tu as été invité en tant que membre d'équipage. Le profil du skipper et les paramètres lui appartiennent.",
|
||
"role_owner": "Son propre journal de bord",
|
||
"role_owner_hint": "Tu es le propriétaire et le skipper de ce journal de bord",
|
||
"role_crew": "Accès à l'équipe",
|
||
"role_crew_hint": "Journal de bord ouvert à tous — tu peux y contribuer en tant que membre d'équipage et y apposer ta signature",
|
||
"role_read": "Lecture seule",
|
||
"role_read_hint": "Journal partagé — consultation uniquement, pas de modification",
|
||
"open_profile": "Ouvrir le profil de {{name}}",
|
||
"open_logbook": "Ouvrir le journal de bord « {{title}} »",
|
||
"edit_title": "Renommer le journal de bord",
|
||
"edit_placeholder": "Nouveau nom du journal de bord",
|
||
"edit_success": "Le journal de bord a été renommé avec succès",
|
||
"edit_btn": "Renommer",
|
||
"filter_label": "Filtrer les journaux de bord",
|
||
"filter_placeholder": "Nom, année, date, équipage ou navire…",
|
||
"filter_clear": "Réinitialiser les filtres",
|
||
"filter_results": "{{count}} résultats",
|
||
"filter_no_results": "Aucun journal de bord ne correspond à ta recherche. Essaie un autre nom ou une autre année.",
|
||
"sort_label": "Trier",
|
||
"sort_by_label": "Trier par",
|
||
"sort_by_name": "Nom",
|
||
"sort_by_date": "Date",
|
||
"sort_dir_label": "Ordre",
|
||
"sort_asc": "Par ordre croissant",
|
||
"sort_desc": "Par ordre décroissant",
|
||
"sort_name_asc": "Nom de A à Z",
|
||
"sort_name_desc": "Nom de Z à A",
|
||
"sort_date_asc": "Les plus anciens en premier",
|
||
"sort_date_desc": "Les plus récents en premier"
|
||
},
|
||
"profile": {
|
||
"title": "Profil utilisateur",
|
||
"subtitle": "Compte, Passkeys et statistiques pour {{name}}",
|
||
"back": "Retour au tableau de bord",
|
||
"loading": "Chargement du profil…",
|
||
"load_error": "Impossible de charger le profil.",
|
||
"copy_failed": "Échec de la copie.",
|
||
"processing": "En cours de traitement…",
|
||
"identity_title": "Identifiant du compte",
|
||
"username": "Nom d'utilisateur",
|
||
"user_id": "Identifiant utilisateur",
|
||
"copy_user_id": "Copier l'identifiant utilisateur",
|
||
"account_since": "Compte depuis",
|
||
"prf_status": "Dérivation de clé Passkey (PRF)",
|
||
"prf_active": "Actif",
|
||
"prf_inactive": "Non aménagé",
|
||
"passkeys_title": "Passkeys",
|
||
"passkeys_desc": "Enregistre un identifiant Passkey distinct sur chaque appareil. Tu pourras ainsi te connecter même après avoir changé de plateforme.",
|
||
"passkeys_empty": "Aucun Passkey trouvé.",
|
||
"add_passkey_btn": "Ajouter un nouveau Passkey",
|
||
"add_passkey_success": "Passkey a été ajouté avec succès.",
|
||
"add_passkey_failed": "Passkey n'a pas pu être ajouté.",
|
||
"remove_passkey_btn": "Supprimer Passkey",
|
||
"remove_passkey_last_title": "Dernier Passkey",
|
||
"remove_passkey_last_desc": "Le seul Passkey ne peut pas être supprimé sans perdre l'accès à ton compte. Pour supprimer complètement le compte, utilise la zone de suppression située en bas de cette page.",
|
||
"remove_passkey_failed": "Passkey n'a pas pu être supprimé.",
|
||
"remove_passkey_confirm_title": "Supprimer Passkey ?",
|
||
"remove_passkey_confirm_desc": "Cet appareil ne pourra plus se connecter à ce Passkey par la suite.",
|
||
"remove_passkey_confirm_yes": "Supprimer",
|
||
"remove_passkey_confirm_no": "Annuler",
|
||
"pin_title": "Code PIN local",
|
||
"pin_status": "Statut",
|
||
"pin_active": "Actif sur cet appareil",
|
||
"pin_inactive": "Non aménagé",
|
||
"pin_confirm_label": "Confirmer le code PIN",
|
||
"pin_confirm_placeholder": "Entrez à nouveau votre code PIN",
|
||
"pin_set_btn": "Configurer le code PIN",
|
||
"pin_change_btn": "Modifier le code PIN",
|
||
"pin_remove_btn": "Supprimer le code PIN",
|
||
"pin_saved": "Code PIN enregistré.",
|
||
"pin_save_failed": "Le code PIN n'a pas pu être enregistré.",
|
||
"pin_mismatch": "Les codes PIN saisis ne correspondent pas.",
|
||
"pin_length_error": "Le code PIN doit comporter au moins 4 caractères.",
|
||
"pin_no_session": "La session a expiré — veuillez vous reconnecter.",
|
||
"remove_pin_confirm_title": "Supprimer le code PIN ?",
|
||
"remove_pin_confirm_desc": "Tu dois te reconnecter sur cet appareil à l'aide de Passkey ou de la clé de récupération.",
|
||
"remove_pin_confirm_yes": "Supprimer le code PIN",
|
||
"remove_pin_confirm_no": "Annuler",
|
||
"security_title": "Liste de contrôle de sécurité",
|
||
"security_desc": "Aperçu des principaux mécanismes de sécurité de ton compte.",
|
||
"security_passkeys_ok": "Au moins un Passkey enregistré",
|
||
"security_passkeys_missing": "Aucun Passkey enregistré",
|
||
"security_prf_ok": "Génération de clé PRF activée",
|
||
"security_prf_missing": "PRF non configuré",
|
||
"security_pin_ok": "Code PIN local sur cet appareil",
|
||
"security_pin_missing": "Pas de code PIN local",
|
||
"security_recovery_ok": "Clé de récupération configurée",
|
||
"security_recovery_hint": "Les 12 mots ont été affichés lors de l'inscription. Conserve-les hors ligne et séparément de l'appareil. Tu peux générer une nouvelle clé ci-dessous — l'ancienne sera alors invalidée.",
|
||
"recovery_rotate_btn": "Créer une nouvelle clé de récupération",
|
||
"recovery_rotate_confirm_title": "Créer une nouvelle clé de récupération ?",
|
||
"recovery_rotate_confirm_desc": "L'ancienne clé de 12 mots n'est plus valable à compter de maintenant. Assure-toi de conserver la nouvelle clé en lieu sûr avant de continuer.",
|
||
"recovery_rotate_confirm_yes": "Créer une nouvelle clé",
|
||
"recovery_rotate_confirm_no": "Annuler",
|
||
"recovery_rotate_new_warning": "IMPORTANT : note ces 12 mots et conserve-les hors ligne. L'ancienne clé de récupération n'est plus valable à compter de maintenant.",
|
||
"recovery_rotate_failed": "Impossible de créer la clé de récupération.",
|
||
"recovery_rotate_no_session": "La session de chiffrement a expiré — veuillez vous déconnecter puis vous reconnecter, puis réessayer.",
|
||
"device_title": "Cet appareil",
|
||
"device_desc": "Cache local, état de la synchronisation et connexion rapide sur ce navigateur.",
|
||
"device_sync_pending": "{{count}} entrées de synchronisation en attente",
|
||
"device_sync_ok": "Toutes les modifications locales sont synchronisées",
|
||
"device_remembered": "Compte enregistré sur cet appareil pour une connexion rapide",
|
||
"device_not_remembered": "Compte absent de la liste de connexion rapide",
|
||
"device_forget_btn": "Compte oublié sur cet appareil",
|
||
"device_forget_confirm_title": "Supprimer la connexion rapide ?",
|
||
"device_forget_confirm_desc": "Le compte disparaîtra de la liste de connexion rapide sur cet appareil. Ta session et tes journaux locaux seront conservés.",
|
||
"device_forget_confirm_yes": "Supprimer",
|
||
"device_forget_confirm_no": "Annuler",
|
||
"passkey_label": "Nom du nouveau Passkey (facultatif)",
|
||
"passkey_label_placeholder": "par exemple, MacBook, iPhone",
|
||
"passkey_rename_btn": "Enregistrer le nom",
|
||
"passkey_rename_success": "Nom Passkey enregistré.",
|
||
"passkey_rename_failed": "Impossible d'enregistrer le nom Passkey.",
|
||
"passkey_unnamed": "Anonyme Passkey",
|
||
"stats_title": "Statistiques",
|
||
"stats_subtitle": "Tous tes journaux de bord sur cet appareil",
|
||
"stats_logbooks": "Journaux de bord",
|
||
"stats_account_since": "Compte depuis",
|
||
"stats_shared_logbooks": "Journaux de bord partagés",
|
||
"appearance_title": "Application et présentation",
|
||
"appearance_desc": "Le design et la palette de couleurs s'appliquent à l'ensemble de l'application sur cet appareil.",
|
||
"theme_label": "Style graphique de l'application",
|
||
"theme_auto": "Automatique (détection du système d'exploitation)",
|
||
"theme_ocean": "Océan (morphisme du verre)",
|
||
"theme_material": "Matériau (Android)",
|
||
"theme_cupertino": "Cupertino (iOS)",
|
||
"color_scheme_label": "Mode clair ou mode sombre",
|
||
"color_scheme_auto": "Automatique (système)",
|
||
"color_scheme_light": "Clair",
|
||
"color_scheme_dark": "Sombre",
|
||
"integrations_title": "Intégrations",
|
||
"owm_key": "OpenWeatherMap Clé API",
|
||
"owm_help": "Facultatif : clé API OpenWeatherMap personnalisée. En l'absence de cette entrée, la clé côté serveur issue de la configuration de l'opérateur est utilisée.",
|
||
"ai_title": "Fonctionnalités IA et protection des données",
|
||
"ai_desc": "Autorise l'utilisation de l'intelligence artificielle (intégrations locales/cloud) pour tes journaux de bord.",
|
||
"ai_help": "Cette fonctionnalité permet de résumer automatiquement les récits de voyage et de transcrire les notes vocales. Pour le traitement, les enregistrements vocaux et les entrées du journal de bord sont transmis de manière cryptée à OpenRouter. Les données n'y sont pas stockées de manière permanente.\n\nL'exploitation de ces ressources cloud engendrant des coûts, nous vous serions reconnaissants de bien vouloir nous soutenir volontairement via le lien de don Ko-fi situé en bas de page, afin que nous puissions continuer à offrir ces fonctionnalités gratuitement à tous.",
|
||
"ai_enable_label": "Activer la transcription et les résumés quotidiens",
|
||
"ai_unauthorized_alert_title": "Fonctions d'IA non autorisées",
|
||
"ai_unauthorized_alert_desc": "Pour transcrire des notes vocales ou résumer des récits de voyage, tu dois accepter le transfert de données vers OpenRouter dans ton profil utilisateur, sous « Fonctions IA et protection des données ».",
|
||
"prefs_save": "Enregistrer",
|
||
"prefs_saving": "En cours d'enregistrement…",
|
||
"prefs_saved": "Enregistré",
|
||
"tour_title": "Présentation de l'application",
|
||
"tour_desc": "Laisse-toi guider à nouveau à travers les principales sections de l'application.",
|
||
"tour_restart": "Recommencer le circuit",
|
||
"push_title": "Notifications push",
|
||
"push_desc": "En tant que propriétaire du journal de bord, tu seras averti lorsque les membres d'équipage invités synchroniseront des modifications. Aucun contenu n'est transmis en clair.",
|
||
"push_enable": "M'avertir en cas de changement au sein de l'équipe",
|
||
"push_active": "Les notifications push sont activées sur cet appareil.",
|
||
"push_unsupported": "Les notifications push ne sont pas prises en charge par ce navigateur.",
|
||
"push_denied_hint": "Les notifications sont désactivées. Activez-les dans les paramètres de votre navigateur ou de votre appareil.",
|
||
"push_ios_install_hint": "Sur le iPhone/iPad : ajoutez l'application à l'écran d'accueil (iOS 16.4 et versions ultérieures) pour recevoir des notifications push.",
|
||
"push_error": "Les notifications push n'ont pas pu être activées.",
|
||
"sections": {
|
||
"account": "Compte et paramètres",
|
||
"fleet": "Flotte et équipage",
|
||
"security": "Sécurité et appareil",
|
||
"stats": "Statistiques",
|
||
"danger": "Zone dangereuse"
|
||
}
|
||
},
|
||
"vessel_pool": {
|
||
"title": "flotte de navires",
|
||
"section_title": "Tes vaisseaux",
|
||
"subtitle": "Gère ici tous les navires pour tes journaux de bord. Pour chaque journal de bord, sélectionne le navire actif dans cette liste.",
|
||
"loading": "Chargement de la flotte en cours…",
|
||
"add_vessel": "Ajouter un navire",
|
||
"edit_vessel": "Modifier le navire",
|
||
"no_vessels": "Il n'y a pas encore de navires dans le pool.",
|
||
"delete_confirm": "Voulez-vous vraiment retirer ce navire de la flotte ?",
|
||
"max_vessels": "Le nombre maximal de 20 navires dans la flotte a été atteint."
|
||
},
|
||
"logbook_vessel": {
|
||
"title": "Navire concerné par ce journal de bord",
|
||
"subtitle": "Sélectionne le bateau pour ce journal de bord. Les jours de voyage utilisent les données de navigation et de ravitaillement du bateau sélectionné.",
|
||
"active_vessel": "Navire concerné par ce journal de bord",
|
||
"no_vessels_in_pool": "Aucun navire dans la flotte – veuillez d'abord en créer un dans votre profil utilisateur.",
|
||
"no_vessel": "Aucun navire sélectionné",
|
||
"unnamed": "Sans titre",
|
||
"save": "Enregistrer le navire",
|
||
"saved": "Navire enregistré dans le journal de bord.",
|
||
"selection_only_hint": "Tu vois le bateau choisi par le propriétaire (journal de bord partagé).",
|
||
"manage_in_profile": "Gérer les navires dans le profil utilisateur"
|
||
},
|
||
"person_pool": {
|
||
"title": "Équipage habituel et skipper",
|
||
"subtitle": "Crée ici ton vivier de personnel – skippers et équipage pour tous les carnets de bord. C'est dans ce vivier que tu sélectionneras l'équipage actif pour chaque carnet de bord et chaque jour de voyage.",
|
||
"loading": "Chargement de la liste des personnes…",
|
||
"skippers_section": "Skipper attitré",
|
||
"crew_section": "équipe de base",
|
||
"add_skipper": "Ajouter un skipper",
|
||
"add_crew": "Ajouter un membre de l'équipe",
|
||
"edit_skipper": "Modifier le skipper",
|
||
"no_skippers": "Il n'y a pas encore de skipper dans la liste.",
|
||
"no_crew": "Il n'y a encore aucun membre d'équipage dans la liste.",
|
||
"delete_confirm": "Voulez-vous vraiment supprimer cette personne de la liste ?"
|
||
},
|
||
"logbook_crew": {
|
||
"title": "Équipage de ce journal de bord",
|
||
"subtitle": "Choisis le skipper et l'équipage pour ce journal de bord. Les nouveaux jours de voyage reprendront automatiquement cette sélection.",
|
||
"loading": "Chargement de l'équipage en cours…",
|
||
"active_skipper": "Skipper pour ce journal de bord",
|
||
"active_crew": "Équipage de ce journal de bord",
|
||
"no_skippers_in_pool": "Il n'y a pas de skipper dans la liste – veuillez d'abord le créer dans le profil utilisateur.",
|
||
"no_crew_in_pool": "Aucun équipage dans la liste – veuillez d'abord le créer dans le profil utilisateur.",
|
||
"no_skipper": "Aucun skipper n'a été choisi",
|
||
"unnamed": "Sans titre",
|
||
"save": "Enregistrer l'équipe",
|
||
"saved": "Équipage enregistré dans le journal de bord.",
|
||
"selection_only_hint": "Tu peux voir l'équipage désigné par le propriétaire (journal de bord partagé)."
|
||
},
|
||
"entry_crew": {
|
||
"title": "L'équipe pour cette journée de voyage",
|
||
"subtitle": "Peut différer du format standard du journal de bord. Les jours de voyage suivants reprennent les données de la veille.",
|
||
"day_skipper": "Skipper ce jour-là",
|
||
"day_crew": "L'équipe ce jour-là",
|
||
"no_skipper": "Aucun skipper n'a été choisi",
|
||
"no_crew": "Aucun équipage sélectionné"
|
||
},
|
||
"crew": {
|
||
"title": "Profils des skippers et des équipiers",
|
||
"skipper_section": "Profil du skipper",
|
||
"skipper_read_only_hint": "Seul le propriétaire du journal de bord peut modifier le profil du skipper.",
|
||
"crew_section": "Liste de l'équipe",
|
||
"add_crew": "Ajouter un membre de l'équipe",
|
||
"edit_crew": "Modifier les informations d'un membre de l'équipe",
|
||
"no_crew": "Aucun membre d'équipage n'a encore été ajouté.",
|
||
"max_crew": "Le nombre maximal de 12 membres d'équipage dans le pool a été atteint.",
|
||
"name": "Nom",
|
||
"address": "Adresse",
|
||
"birthdate": "Anniversaire",
|
||
"phone": "Numéro de téléphone",
|
||
"nationality": "Nationalité",
|
||
"passport": "Numéro de passeport / de carte d'identité",
|
||
"bloodtype": "groupe sanguin",
|
||
"allergies": "Allergies",
|
||
"diseases": "Antécédents médicaux / Maladies",
|
||
"save": "Enregistrer les données du skipper",
|
||
"save_member": "Enregistrer le membre",
|
||
"saved": "Le profil du skipper a été enregistré avec succès !",
|
||
"loading": "Chargement des fichiers de l'équipage...",
|
||
"delete_confirm": "Es-tu sûr de vouloir supprimer ce membre de l'équipe ?"
|
||
},
|
||
"deviation": {
|
||
"title": "Tableau des déviations (Compass Deviation)",
|
||
"subtitle": "Indique la déclinaison magnétique (déc.) pour les caps (MgK) de 000° à 360°, par incréments de 10°.",
|
||
"heading": "MgK",
|
||
"deviation": "distraction",
|
||
"save": "Enregistrer la grille d'étalonnage",
|
||
"saving": "En cours d'enregistrement...",
|
||
"saved": "La grille d'étalonnage a été enregistrée avec succès !",
|
||
"loading": "Chargement du tableau d'étalonnage..."
|
||
},
|
||
"settings": {
|
||
"title": "Paramètres du journal de bord",
|
||
"subtitle": "Partage, sauvegarde et collaboration pour ce journal de bord.",
|
||
"select_logbook_hint": "Sélectionne un journal de bord pour modifier ses paramètres.",
|
||
"no_key": "Aucune clé API OpenWeatherMap n'est disponible. Enregistre ta propre clé dans ton profil utilisateur ou contacte l'administrateur.",
|
||
"weather_success": "Les données météorologiques ont été récupérées avec succès !",
|
||
"weather_error": "Échec de la récupération des données météorologiques. Vérifie la clé API et la connexion.",
|
||
"weather_unauthorized": "Échec de la récupération des données météorologiques. La clé API n'est pas valide ou n'est pas autorisée.",
|
||
"weather_not_found": "Échec de la récupération des données météorologiques. La localité ou les coordonnées indiquées n'ont pas été trouvées.",
|
||
"weather_bad_request": "Échec de la récupération des données météorologiques. Aucun lieu ni aucune position GPS n'ont été indiqués.",
|
||
"weather_date_mismatch": "Les données météorologiques ne peuvent être consultées que pour la journée d'aujourd'hui ({{today}}). Cette entrée du journal de bord est datée du {{date}}.",
|
||
"gps_error": "Veuillez indiquer un lieu ou déterminer les coordonnées GPS.",
|
||
"share_title": "Partager le journal de bord (en lecture seule)",
|
||
"share_desc": "Coche cette case pour créer un lien public en lecture seule. Toute personne disposant de ce lien pourra consulter tes voyages, tes profils de yacht et ton équipage. Les clés de chiffrement ne sont jamais transmises au serveur (elles restent dans la partie hachée de l'URL).",
|
||
"share_privacy_warning": "Recommandation : partage ce lien uniquement en privé (par exemple par e-mail ou via une messagerie instantanée), et non sur les réseaux sociaux.",
|
||
"share_enable": "Activer le lien public",
|
||
"share_copied": "Lien copié !",
|
||
"share_copy_btn": "Copier le lien",
|
||
"link_qr_hint": "Code QR à scanner avec un smartphone",
|
||
"link_qr_alt": "Code QR pour le lien",
|
||
"danger_zone_title": "Zone dangereuse",
|
||
"danger_zone_desc": "La suppression de ton compte entraînera la suppression définitive de tous tes Passkey, journaux de bord, données de vaisseau, profils d'équipage, entrées de voyage et clés E2E. Cette action est irréversible.",
|
||
"delete_account_btn": "Supprimer définitivement le compte",
|
||
"delete_account_confirm_title": "Supprimer le compte ?",
|
||
"delete_account_confirm_desc": "Es-tu absolument certain de vouloir supprimer définitivement ton compte ainsi que tous les journaux de bord associés et les données cryptées E2E ?",
|
||
"delete_account_confirm_yes": "Oui, supprimer le compte et toutes les données",
|
||
"delete_account_confirm_no": "Annuler",
|
||
"delete_account_failed": "Impossible de supprimer le compte. Veuillez réessayer.",
|
||
"delete_backup_hint": "Conseil : avant de les supprimer, effectue des sauvegardes de tes journaux (.daagbok) dans les paramètres de chaque journal.",
|
||
"deleting_account": "Le compte est en cours de suppression…",
|
||
"invite_push_prompt_title": "Activer les notifications push ?",
|
||
"invite_push_prompt_message": "Dès que les membres d'équipage invités synchronisent leurs modifications, tu peux être informé par notification push. Aucun contenu du journal de bord n'est envoyé en clair.",
|
||
"invite_push_prompt_ios_message": "Dès que les membres de l'équipe synchronisent des modifications, tu peux recevoir une notification push. Sur le iPhone/iPad : ajoute l'application à l'écran d'accueil (iOS 16.4+), puis active les notifications push dans ton profil utilisateur.",
|
||
"invite_push_prompt_enable": "Activer maintenant",
|
||
"invite_push_prompt_later": "Plus tard",
|
||
"invite_push_prompt_success": "Les notifications push sont activées sur cet appareil.",
|
||
"backup_title": "Sauvegarde et restauration",
|
||
"backup_desc": "Sauvegarde complète et cryptée de ce journal de bord (entrées, photos, notes vocales, traces GPS, équipage, navire). Protégée par un mot de passe de sauvegarde — pour une restauration sur ce compte ou sur un nouveau compte.",
|
||
"backup_export_title": "Effectuer une sauvegarde",
|
||
"backup_export_desc": "Télécharge toutes les données locales sous la forme d'un fichier .daagbok compressé. Conservez le fichier et la phrase de passe séparément et en lieu sûr.",
|
||
"backup_restore_title": "Restaurer une sauvegarde",
|
||
"backup_restore_desc": "Restaure une sauvegarde dans ton compte actuel, même après la création d'un nouveau compte.",
|
||
"backup_passphrase": "Phrase secrète de sauvegarde",
|
||
"backup_passphrase_placeholder": "Au moins 8 caractères",
|
||
"backup_passphrase_confirm": "Confirmer la phrase secrète",
|
||
"backup_passphrase_short": "La phrase de passe de sauvegarde doit comporter au moins 8 caractères.",
|
||
"backup_passphrase_mismatch": "Les phrases de passe ne correspondent pas.",
|
||
"backup_wrong_passphrase": "Mot de passe incorrect ou sauvegarde endommagée.",
|
||
"backup_export_btn": "Télécharger la sauvegarde",
|
||
"backup_exporting": "Sauvegarde en cours…",
|
||
"backup_export_success": "Sauvegarde effectuée ({{count}} jours de voyage).",
|
||
"backup_file_label": "Fichier de sauvegarde (.daagbok)",
|
||
"backup_export_progress": "Compresser les fichiers {{current}} / {{total}}…",
|
||
"backup_invalid_archive": "Ce fichier n'est pas une archive de sauvegarde valide.",
|
||
"backup_version_unsupported": "Ancien format de sauvegarde (v1). Veuillez utiliser une sauvegarde .daagbok récente.",
|
||
"backup_import_size_confirm": "Cette sauvegarde pèse environ {{size}}. La restauration sur l'appareil peut prendre plus de temps et occuper beaucoup d'espace de stockage. Continuer ?",
|
||
"backup_stat_voice": "{{count}} Notes vocales",
|
||
"backup_stat_size": "Non compressé : environ {{size}}",
|
||
"backup_preview_btn": "Vérifier le contenu",
|
||
"backup_previewing": "Vérifie…",
|
||
"backup_restore_btn": "Restaurer",
|
||
"backup_restoring": "En cours de restauration…",
|
||
"backup_restore_success": "Le journal de bord « {{title}} » a été restauré.",
|
||
"backup_restore_cancelled": "Restauration interrompue.",
|
||
"backup_invalid_json": "Ce fichier n'est pas un fichier JSON valide.",
|
||
"backup_invalid_format": "Format de sauvegarde inconnu ou obsolète.",
|
||
"backup_not_owner": "Seul le propriétaire du journal de bord peut créer des sauvegardes.",
|
||
"backup_not_authenticated": "Veuillez vous connecter pour restaurer une sauvegarde.",
|
||
"backup_id_conflict": "Un journal de bord portant cet identifiant existe déjà.",
|
||
"backup_overwrite_confirm": "Le journal existant portant le même identifiant sera remplacé. Voulez-vous continuer ?",
|
||
"backup_new_id_confirm": "Importer la sauvegarde en tant que nouveau journal avec un nouvel identifiant ?",
|
||
"backup_stat_entries": "{{count}} Jours de voyage",
|
||
"backup_stat_photos": "{{count}} Photos",
|
||
"backup_stat_crew": "{{count}} Entrées de l'équipe",
|
||
"backup_stat_tracks": "{{count}} Traces GPS",
|
||
"backup_exported_at": "Exporté : {{date}}"
|
||
},
|
||
"disclaimer": {
|
||
"title": "Remarques importantes",
|
||
"intro": "Veuillez lire les remarques suivantes avant d'utiliser Kapteins Daagbok.",
|
||
"e2e_title": "Chiffrement de bout en bout",
|
||
"e2e_body": "Les données de ton journal de bord sont chiffrées de bout en bout. Seul toi – ou les personnes disposant de ta clé – pouvez en lire le contenu. Seules des données chiffrées sont stockées sur le serveur.",
|
||
"pwa_title": "Application web progressive (PWA)",
|
||
"pwa_body": "Kapteins Daagbok fonctionne comme une application web progressive dans ton navigateur et peut être installée sur ton appareil, un peu comme une application native, mais sans passer par l'App Store.",
|
||
"storage_title": "Stockage local et synchronisation",
|
||
"storage_body": "Tes données sont temporairement enregistrées localement sur ton appareil (IndexedDB). Lorsque tu es connecté à Internet, les modifications sont synchronisées avec le serveur. Tu peux continuer à travailler même sans connexion ; la synchronisation s'effectuera plus tard.",
|
||
"free_title": "Gratuit et sans publicité",
|
||
"free_body": "Kapteins Daagbok est gratuit et ne contient aucune publicité.",
|
||
"liability_title": "Clause de non-responsabilité",
|
||
"liability_body": "L'utilisation se fait sous votre propre responsabilité. Nous déclinons toute responsabilité pour les dommages résultant de l'utilisation de l'application, y compris les entrées de journal de bord erronées ou incomplètes, la perte de données ou les dysfonctionnements techniques.",
|
||
"warranty_title": "Aucune garantie",
|
||
"warranty_body": "Nous ne garantissons ni le bon fonctionnement, ni l'exactitude, ni la disponibilité du service. Son fonctionnement peut être interrompu, limité ou suspendu à tout moment.",
|
||
"copyright": "© 2026 KnorrLabs, Markus F.J. Busche",
|
||
"accept": "Accepter et continuer",
|
||
"close": "Fermer",
|
||
"button_title": "Remarques et clause de non-responsabilité"
|
||
},
|
||
"feedback": {
|
||
"button_title": "Envoyer un commentaire",
|
||
"title": "Commentaires",
|
||
"intro": "Signale-nous des bugs, des idées ou donne-nous ton avis. Ton message sera transmis à l'équipe du projet via un canal de communication sécurisé.",
|
||
"category_label": "Catégorie",
|
||
"category_general": "Généralités",
|
||
"category_bug": "Signaler une erreur",
|
||
"category_feature": "Demande de fonctionnalité",
|
||
"category_translation": "erreur de traduction",
|
||
"contact_label": "E-mail (facultatif)",
|
||
"contact_placeholder": "deine@email.beispiel",
|
||
"message_label": "Message",
|
||
"message_placeholder": "Décris ton avis…",
|
||
"send": "Envoyer",
|
||
"sending": "Envoi en cours…",
|
||
"cancel": "Annuler",
|
||
"success": "Merci beaucoup ! Ton avis a été envoyé.",
|
||
"error_send": "Impossible d'envoyer vos commentaires. Veuillez réessayer plus tard.",
|
||
"error_invalid_email": "Veuillez saisir une adresse e-mail valide.",
|
||
"error_not_configured": "La fonctionnalité de commentaires n'est pas disponible sur ce serveur.",
|
||
"error_rate_limited": "Il y a trop de messages de commentaires en peu de temps. Veuillez patienter quelques minutes.",
|
||
"error_spam": "Ce message n'a pas pu être envoyé. Veuillez le reformuler."
|
||
},
|
||
"demo": {
|
||
"logbook_title": "Journal de bord de la manifestation en mer Baltique",
|
||
"badge": "Démonstration",
|
||
"public_banner": "Mode démo en lecture seule",
|
||
"cta_register": "Créer un compte",
|
||
"back_to_login": "Pour s'inscrire"
|
||
},
|
||
"invitation": {
|
||
"error_invalid_key": "Le lien d'invitation n'est pas valide d'un point de vue cryptographique (clé incorrecte).",
|
||
"error_missing_key": "Le lien d'invitation ne contient pas de clé de déchiffrement (#key=...). Veuillez utiliser le lien complet fourni par le propriétaire.",
|
||
"error_expired": "Cette invitation a expiré (valable 48 heures).",
|
||
"error_invalid_token": "Jeton d'invitation non valide.",
|
||
"error_load_failed": "Les détails de l'invitation n'ont pas pu être chargés.",
|
||
"error_incomplete_session": "Session incomplète — veuillez vous reconnecter (identifiant utilisateur manquant).",
|
||
"error_accept_failed": "Échec de l'inscription.",
|
||
"error_login_failed": "Échec de la connexion à Passkey.",
|
||
"error_username_missing": "Impossible de retrouver votre nom d'utilisateur — veuillez vous reconnecter.",
|
||
"error_register_failed": "Échec de l'enregistrement.",
|
||
"loading_joining": "Adhésion...",
|
||
"loading_checking": "L'invitation est en cours de vérification...",
|
||
"loading_unlocking": "Le journal de bord est en cours d'activation et de synchronisation...",
|
||
"loading_retrieving_key": "Chargement de la clé de chiffrement...",
|
||
"error_title": "Erreur d'invitation",
|
||
"back_to_start": "Retour à la page d'accueil",
|
||
"title": "Invitation au journal de bord",
|
||
"invited_by": "Invitation de",
|
||
"vessel_logbook": "Navire / Journal de bord",
|
||
"signed_in_preparing": "Connecté en tant que {{username}}. Connexion en cours...",
|
||
"join_again": "Se réinscrire",
|
||
"login_or_register_hint": "Connecte-toi ou crée un compte pour rejoindre le journal de bord.",
|
||
"or_sign_up": "OU S'INSCRIRE",
|
||
"register_crew_account": "Créer un nouveau compte d'équipe",
|
||
"username_label": "Nom d'utilisateur",
|
||
"create_passkey": "Créer Passkey",
|
||
"switch_language_en": "Anglais",
|
||
"switch_language_de": "Allemand"
|
||
},
|
||
"stats": {
|
||
"title": "Statistiques",
|
||
"subtitle": "Autonomie, consommation et type de motorisation en un coup d'œil",
|
||
"scope_label": "Domaine d'analyse",
|
||
"scope_logbook": "Ce journal de bord",
|
||
"scope_account": "Tous les journaux de bord",
|
||
"loading": "Les statistiques sont en cours de calcul…",
|
||
"no_data": "Il n'y a pas encore de jours de voyage.",
|
||
"total_distance": "Distance totale",
|
||
"travel_days": "Jours de voyage",
|
||
"sail_distance": "À la voile",
|
||
"motor_distance": "déplacement de la machine",
|
||
"motor_hours_total": "Nombre total d'heures de fonctionnement",
|
||
"daily_motor_hours": "Heures-machine par jour de déplacement",
|
||
"avg_motor_hours": "Ø Heures-machine par jour de déplacement",
|
||
"unknown_propulsion": "Inconnu",
|
||
"fuel_total": "Consommation totale",
|
||
"water_total": "Eau (total)",
|
||
"daily_etmal": "Données journalières",
|
||
"daily_consumption": "consommation quotidienne",
|
||
"route_overview": "Itinéraire",
|
||
"route_map_title": "Aperçu des itinéraires",
|
||
"propulsion_title": "Voile ou moteur",
|
||
"propulsion_hint": "La répartition est basée sur les événements du journal de bord pour chaque jour de voyage, et non sur les segments GPS.",
|
||
"avg_distance": "Ø par jour de voyage",
|
||
"avg_fuel": "Ø Carburant",
|
||
"avg_water": "Ø Eau",
|
||
"fuel_per_nm": "Consommation de carburant par km",
|
||
"fuel_per_motor_hour": "Consommation de carburant par heure de fonctionnement",
|
||
"daily_fuel_per_motor_hour": "Consommation de carburant par heure de fonctionnement et par jour de voyage",
|
||
"fuel_legend": "carburant",
|
||
"water_legend": "Eau",
|
||
"unit_nm": "sm",
|
||
"unit_h": "h",
|
||
"unit_l": "L",
|
||
"day_label": "Jour {{day}}",
|
||
"account_logbooks": "Aperçu des journaux de bord",
|
||
"col_logbook": "Journal de bord",
|
||
"event_series_title": "Historique des événements",
|
||
"event_series_hint": "Valeurs chronologiques issues du journal des événements.",
|
||
"event_series_pressure": "pression atmosphérique",
|
||
"event_series_wind": "Vent",
|
||
"event_series_motor": "Moteur",
|
||
"event_series_empty": "Aucune entrée disponible."
|
||
},
|
||
"tour": {
|
||
"skip": "Passer la visite",
|
||
"back": "Retour",
|
||
"next": "Continuer",
|
||
"finish": "C'est prêt",
|
||
"progress": "Étape {{current}} sur {{total}}",
|
||
"steps": {
|
||
"welcome": {
|
||
"title": "Bienvenue à bord !",
|
||
"body": "Nous avons créé pour toi un journal de bord de démonstration comprenant trois jours de voyage dans la baie de Kiel. Tu peux supprimer les entrées d'exemple à tout moment si tu souhaites commencer à utiliser ton propre journal de bord. Ce petit parcours te présente les principales fonctionnalités."
|
||
},
|
||
"welcome_public": {
|
||
"title": "Bienvenue à bord !",
|
||
"body": "Découvrez notre journal de bord de démonstration, qui retrace trois jours de voyage dans la baie de Kiel, sans avoir besoin de créer de compte. Ce parcours vous présente les entrées du journal de bord ainsi que le choix du bateau et de l'équipage pour ce journal. Vous pourrez gérer votre flotte et votre équipage habituel ultérieurement dans votre profil utilisateur."
|
||
},
|
||
"nav_logs": {
|
||
"title": "Entrées du journal de bord",
|
||
"body": "C'est ici que tu gères tes journées de voyage : départ, destination, météo, niveaux de carburant et traces GPS."
|
||
},
|
||
"entry_list": {
|
||
"title": "Tes jours de voyage",
|
||
"body": "Chaque carte correspond à une journée de voyage. Appuie sur une entrée pour afficher ou modifier les détails."
|
||
},
|
||
"entry_open": {
|
||
"title": "Afficher le jour du voyage",
|
||
"body": "Voici à quoi ressemble une entrée de journal de bord dûment remplie – avec les événements, les niveaux de carburant et bien plus encore."
|
||
},
|
||
"entry_track": {
|
||
"title": "Tracé GPS",
|
||
"body": "Télécharge des fichiers GPX ou consulte les itinéraires déjà enregistrés sur la carte, avec la distance et la vitesse."
|
||
},
|
||
"nav_vessel": {
|
||
"title": "Navire à inscrire dans le journal de bord",
|
||
"body": "Choisis dans ta flotte le vaisseau pour ce journal de bord. Tu peux gérer tes vaisseaux dans ton profil utilisateur, sous « Flotte et équipage »."
|
||
},
|
||
"profile_vessel_pool": {
|
||
"title": "flotte de navires",
|
||
"body": "Dans ton profil utilisateur, tu enregistres tous tes bateaux : yachts de location, bateau personnel, etc. Pour chaque journal de bord, tu sélectionnes ensuite le bateau correspondant."
|
||
},
|
||
"profile_crew_pool": {
|
||
"title": "Équipage habituel et skipper",
|
||
"body": "Dans ton profil utilisateur, tu gères ton vivier de personnes : plusieurs skippers (par exemple pour la location de bateaux) et membres d'équipage pour tous les journaux de bord."
|
||
},
|
||
"nav_logbook_crew": {
|
||
"title": "Équipage par journal de bord",
|
||
"body": "Choisis parmi les membres de l'équipage ceux qui figureront dans ce journal de bord en tant que skipper et équipage. Les jours de voyage reprennent cette sélection par défaut."
|
||
},
|
||
"nav_stats": {
|
||
"title": "Tableau de bord statistique",
|
||
"body": "Tu trouveras ici les distances parcourues, la consommation, les cartes d'itinéraire et la répartition des modes de propulsion – calculés automatiquement à partir des données de ton journal de bord."
|
||
},
|
||
"nav_feedback": {
|
||
"title": "Envoyer un commentaire",
|
||
"body": "Ce formulaire te permet d'envoyer directement des remarques, des suggestions ou des commentaires généraux à l'équipe du projet – même après la visite, à tout moment, en cliquant sur l'icône en haut à droite."
|
||
},
|
||
"nav_profile": {
|
||
"title": "Ton profil utilisateur",
|
||
"body": "En cliquant sur le bouton « Skipper » en haut de la page, tu accèdes à ton profil personnel, quel que soit le journal de bord en cours."
|
||
},
|
||
"profile_preferences": {
|
||
"title": "Compte et présentation",
|
||
"body": "C'est ici que tu peux gérer ton identifiant de compte, ton thème et le mode clair/foncé. Tu peux relancer la visite guidée de l'application à tout moment. Tu trouveras les paramètres de confidentialité et de sécurité plus bas dans ton profil."
|
||
},
|
||
"finish": {
|
||
"title": "D'accord !",
|
||
"body": "Tu vas être redirigé vers le tableau de bord des statistiques. Tu peux relancer la visite à tout moment depuis ton profil utilisateur. Bonne visite !"
|
||
}
|
||
}
|
||
},
|
||
"seo": {
|
||
"title": "Kapteins Daagbok – Journal de bord numérique gratuit pour yacht (sans publicité)",
|
||
"description": "Journal de bord numérique gratuit et sans publicité pour les yachts, avec cryptage de bout en bout et connexion via Passkey. Consignez en toute sécurité vos dates de voyage, vos tracés GPS, les informations sur l'équipage et le navire – même hors ligne en tant que PWA.",
|
||
"keywords": "Journal de bord de yacht, journal de bord de navire, journal de bord, voile, Passkey, cryptage E2E, trace GPS, journal de bord maritime, gratuit, sans publicité, sans frais, sans pub",
|
||
"ogImageAlt": "Logo Kapteins Daagbok"
|
||
}
|
||
}
|
||
}
|