mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-18 21:16:47 +00:00
b56f335978
On a trip with dates the reorder dialog and the days sheet on a phone now offer two ways to add a day: a day without a date at the end as before, or the calendar day after the last date, named on its button, which extends the trip by one day. The new day goes right behind the last dated day, so the days without a date move one place back with their plans, and no existing day or booking changes its date. The server does it in one transaction behind a new dated flag on the day create contract, used by REST, the create_day tool and the plugin RPC alike. It moves the road trip boundaries of the days behind the new one, and announces the day with day:reordered and the grown trip with trip:updated; an insert at a position announces its trip now as well. The next date and the day limit come from one shared rule, so the button never promises a date the server would not give. On the client the add is online only and runs one at a time, so a double click cannot grow the trip by two days. A wiring test that picked the stay question by its position now finds it by its handler, since the delete question sits in front of it.
123 lines
6.5 KiB
TypeScript
123 lines
6.5 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
|
|
|
const dayplan: TranslationStrings = {
|
|
'dayplan.icsTooltip': 'Exporter le calendrier (ICS)',
|
|
'dayplan.emptyDay': 'Aucun lieu prévu pour ce jour',
|
|
'dayplan.addPlaceHere': 'Ajouter un lieu à ce jour',
|
|
'dayplan.addNote': 'Ajouter une note',
|
|
'dayplan.editNote': 'Modifier la note',
|
|
'dayplan.noteAdd': 'Ajouter une note',
|
|
'dayplan.noteEdit': 'Modifier la note',
|
|
'dayplan.noteDelete': 'Supprimer la note',
|
|
'dayplan.noteTitle': 'Note',
|
|
'dayplan.noteSubtitle': 'Note du jour',
|
|
'dayplan.noteIcon': 'Icône',
|
|
'notes.appearance': 'Apparence',
|
|
'notes.preview': 'Aperçu',
|
|
'notes.bodyPlaceholder': 'Détails, liens, rappels…',
|
|
'notes.markdownHint': 'Markdown pris en charge',
|
|
'notes.format.toolbar': 'Mise en forme',
|
|
'notes.format.bold': 'Gras',
|
|
'notes.format.italic': 'Italique',
|
|
'notes.format.strike': 'Barré',
|
|
'notes.format.code': 'Code',
|
|
'notes.format.link': 'Lien',
|
|
'notes.format.list': 'Liste à puces',
|
|
'notes.format.orderedList': 'Liste numérotée',
|
|
'notes.format.quote': 'Citation',
|
|
'notes.color.label': 'Couleur',
|
|
'notes.color.none': 'Aucune couleur',
|
|
'notes.color.red': 'Rouge',
|
|
'notes.color.orange': 'Orange',
|
|
'notes.color.amber': 'Ambre',
|
|
'notes.color.green': 'Vert',
|
|
'notes.color.cyan': 'Cyan',
|
|
'notes.color.blue': 'Bleu',
|
|
'notes.color.purple': 'Violet',
|
|
'dayplan.totalCost': 'Coût total',
|
|
'dayplan.days': 'Jours',
|
|
'dayplan.dayN': 'Jour {n}',
|
|
'dayplan.calculating': 'Calcul en cours…',
|
|
'dayplan.route': 'Itinéraire',
|
|
'dayplan.optimize': 'Optimiser',
|
|
'dayplan.transportMode.change': 'Changer de mode de transport',
|
|
'dayplan.transportMode.useDefault': 'Utiliser le mode du jour',
|
|
'dayplan.optimized': 'Itinéraire optimisé',
|
|
'dayplan.routeError': "Impossible de calculer l'itinéraire",
|
|
'dayplan.toast.needTwoPlaces': "Au moins deux lieux nécessaires pour optimiser l'itinéraire",
|
|
'dayplan.toast.routeOptimized': 'Itinéraire optimisé',
|
|
'dayplan.toast.routeOptimizedFromHotel': 'Itinéraire optimisé depuis votre hébergement',
|
|
'dayplan.toast.noGeoPlaces': "Aucun lieu avec des coordonnées trouvé pour le calcul d'itinéraire",
|
|
'dayplan.confirmed': 'Confirmé',
|
|
'dayplan.pendingRes': 'En attente',
|
|
'dayplan.export': 'Exporter',
|
|
'dayplan.exportIntro': 'Emportez votre plan : en document, dans votre agenda ou sur votre GPS.',
|
|
'dayplan.exportDocument': 'Document',
|
|
'dayplan.exportCalendar': 'Agenda',
|
|
'dayplan.exportMaps': 'Cartes et GPS',
|
|
'dayplan.pdf': 'PDF',
|
|
'dayplan.pdfTooltip': 'Exporter le plan du jour en PDF',
|
|
'dayplan.gpxTooltip': 'Exporter en GPX pour les cartes hors ligne et les GPS',
|
|
'dayplan.gpxAll': 'Tout le voyage',
|
|
'dayplan.gpxPlaces': 'Lieux uniquement',
|
|
'dayplan.gpxDays': 'Journées en itinéraires',
|
|
'dayplan.gpxEmpty': "Il n'y a encore rien à exporter",
|
|
'dayplan.gpxFailed': "Échec de l'export GPX",
|
|
'dayplan.pdfError': "Échec de l'export PDF",
|
|
'dayplan.cannotReorderTransport': 'Les réservations avec une heure fixe ne peuvent pas être réorganisées',
|
|
'dayplan.confirmRemoveTimeTitle': "Supprimer l'heure ?",
|
|
'dayplan.confirmRemoveTimeBody':
|
|
"Ce lieu a une heure fixe ({time}). Le déplacer supprimera l'heure et permettra un tri libre.",
|
|
'dayplan.confirmRemoveTimeAction': "Supprimer l'heure et déplacer",
|
|
'dayplan.confirmDeleteNoteTitle': 'Supprimer la note ?',
|
|
'dayplan.confirmDeleteNoteBody': 'Cette note sera définitivement supprimée.',
|
|
'dayplan.cannotDropOnTimed': 'Les éléments ne peuvent pas être placés entre des entrées à heure fixe',
|
|
'dayplan.cannotBreakChronology': "Cela briserait l'ordre chronologique des éléments et réservations planifiés",
|
|
'dayplan.mobile.addPlace': 'Ajouter un lieu',
|
|
'dayplan.mobile.searchPlaces': 'Rechercher des lieux...',
|
|
'dayplan.mobile.allAssigned': 'Tous les lieux attribués',
|
|
'dayplan.mobile.noMatch': 'Aucun résultat',
|
|
'dayplan.mobile.createNew': 'Créer un nouveau lieu',
|
|
'dayplan.expandAll': 'Expand all days', // en-fallback
|
|
'dayplan.collapseAll': 'Collapse all days', // en-fallback
|
|
'dayplan.reorderDays': 'Réorganiser les jours',
|
|
'dayplan.reorderTitle': 'Réorganiser les jours',
|
|
'dayplan.reorderHint': "Les lieux, notes et réservations d'un jour le suivent.",
|
|
'dayplan.addDay': 'Ajouter un jour',
|
|
'dayplan.moveUp': 'Monter',
|
|
'dayplan.moveDown': 'Descendre',
|
|
'dayplan.reorderUndo': 'Réorganiser les jours',
|
|
'dayplan.reorderError': 'Échec de la réorganisation des jours',
|
|
'dayplan.addDayError': "Échec de l'ajout du jour",
|
|
'dayplan.deleteDay': 'Supprimer le jour',
|
|
'dayplan.deleteDayTitle': 'Supprimer {day} ?',
|
|
'dayplan.deleteDayBody': 'Le jour est retiré du voyage. Cette action est irréversible.',
|
|
'dayplan.deleteDayEmpty': "Rien n'est prévu ce jour-là.",
|
|
'dayplan.impactPlaces': 'Lieux prévus : {count}',
|
|
'dayplan.impactPlacesHint': 'Ils restent dans la liste des lieux.',
|
|
'dayplan.impactNotes': 'Notes : {count}',
|
|
'dayplan.impactTexts': 'Titres et descriptions du jour : {count}',
|
|
'dayplan.impactDeletedHint': 'Supprimés également.',
|
|
'dayplan.impactBookings': 'Réservations : {count}',
|
|
'dayplan.impactStay': 'Séjour à {name}',
|
|
'dayplan.deleteDayBookingsHint': 'Elles restent dans Réservations, sans jour.',
|
|
'dayplan.deleteDayStayHint': "L'arrivée ou le départ a lieu ce jour-là, le séjour est donc annulé.",
|
|
'dayplan.deleteDayStayBookedHint':
|
|
"L'arrivée ou le départ a lieu ce jour-là, le séjour est donc annulé, ainsi que la réservation « {booking} » et sa dépense.",
|
|
'dayplan.deleteDayShift': 'Jours suivants : {count}',
|
|
'dayplan.deleteDayShiftHint': 'Chacun passe à la date précédente.',
|
|
'dayplan.deleteDayShiftBookingsHint': 'Chacun passe à la date précédente. Réservations déplacées avec eux : {count}',
|
|
'dayplan.deleteDayShrink': 'Le voyage se termine désormais le {date}',
|
|
'dayplan.deleteDayShrinkHint': 'Aucun jour sans date ne peut reprendre la dernière date.',
|
|
'dayplan.deleteDayLast': 'Un voyage doit compter au moins un jour',
|
|
'dayplan.daysOffline': 'Modifier les jours nécessite une connexion',
|
|
'dayplan.deleteDaySuccess': 'Jour supprimé',
|
|
'dayplan.deleteDayError': 'Échec de la suppression du jour',
|
|
'dayplan.addUndatedDay': 'Ajouter un jour sans date',
|
|
'dayplan.addUndatedDayHint': 'Ajoute un jour sans date à la fin. Les dates du voyage ne changent pas.',
|
|
'dayplan.addDatedDay': 'Ajouter {date}',
|
|
'dayplan.addDatedDayHint': "Prolonge le voyage d'un jour, jusqu'au {date}.",
|
|
'dayplan.tripExtended': 'Jour ajouté. Le voyage se termine désormais le {date}.',
|
|
};
|
|
export default dayplan;
|