mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-08-07 13:06:45 +00:00
feat(i18n): translate missing keys across all 12 language files
This commit is contained in:
@@ -491,8 +491,8 @@ const fr: Record<string, string> = {
|
||||
'admin.addons.catalog.memories.description': 'Partagez vos photos de voyage via votre instance Immich',
|
||||
'admin.addons.catalog.mcp.name': 'MCP',
|
||||
'admin.addons.catalog.mcp.description': 'Protocole de contexte de modèle pour l\'intégration d\'assistants IA',
|
||||
'admin.addons.catalog.packing.name': 'Lists',
|
||||
'admin.addons.catalog.packing.description': 'Packing lists and to-do tasks for your trips',
|
||||
'admin.addons.catalog.packing.name': 'Listes',
|
||||
'admin.addons.catalog.packing.description': 'Listes de bagages et tâches à faire pour vos voyages',
|
||||
'admin.addons.catalog.budget.name': 'Budget',
|
||||
'admin.addons.catalog.budget.description': 'Suivez les dépenses et planifiez votre budget de voyage',
|
||||
'admin.addons.catalog.documents.name': 'Documents',
|
||||
@@ -740,8 +740,8 @@ const fr: Record<string, string> = {
|
||||
'trip.tabs.reservationsShort': 'Résa',
|
||||
'trip.tabs.packing': 'Liste de bagages',
|
||||
'trip.tabs.packingShort': 'Bagages',
|
||||
'trip.tabs.lists': 'Lists',
|
||||
'trip.tabs.listsShort': 'Lists',
|
||||
'trip.tabs.lists': 'Listes',
|
||||
'trip.tabs.listsShort': 'Listes',
|
||||
'trip.tabs.budget': 'Budget',
|
||||
'trip.tabs.files': 'Fichiers',
|
||||
'trip.loading': 'Chargement du voyage…',
|
||||
@@ -936,11 +936,11 @@ const fr: Record<string, string> = {
|
||||
'reservations.linkAssignment': 'Lier à l\'affectation du jour',
|
||||
'reservations.pickAssignment': 'Sélectionnez une affectation de votre plan…',
|
||||
'reservations.noAssignment': 'Aucun lien (autonome)',
|
||||
'reservations.price': 'Price',
|
||||
'reservations.budgetCategory': 'Budget category',
|
||||
'reservations.budgetCategoryPlaceholder': 'e.g. Transport, Accommodation',
|
||||
'reservations.budgetCategoryAuto': 'Auto (from booking type)',
|
||||
'reservations.budgetHint': 'A budget entry will be created automatically when saving.',
|
||||
'reservations.price': 'Prix',
|
||||
'reservations.budgetCategory': 'Catégorie budgétaire',
|
||||
'reservations.budgetCategoryPlaceholder': 'ex. Transport, Hébergement',
|
||||
'reservations.budgetCategoryAuto': 'Auto (selon le type de réservation)',
|
||||
'reservations.budgetHint': 'Une entrée budgétaire sera créée automatiquement lors de l\'enregistrement.',
|
||||
'reservations.departureDate': 'Départ',
|
||||
'reservations.arrivalDate': 'Arrivée',
|
||||
'reservations.departureTime': 'Heure dép.',
|
||||
@@ -1572,42 +1572,42 @@ const fr: Record<string, string> = {
|
||||
'notifications.test.tripText': 'Notification de test pour le voyage "{trip}".',
|
||||
|
||||
// Todo
|
||||
'todo.subtab.packing': 'Packing List',
|
||||
'todo.subtab.todo': 'To-Do',
|
||||
'todo.completed': 'completed',
|
||||
'todo.filter.all': 'All',
|
||||
'todo.filter.open': 'Open',
|
||||
'todo.filter.done': 'Done',
|
||||
'todo.uncategorized': 'Uncategorized',
|
||||
'todo.namePlaceholder': 'Task name',
|
||||
'todo.descriptionPlaceholder': 'Description (optional)',
|
||||
'todo.unassigned': 'Unassigned',
|
||||
'todo.noCategory': 'No category',
|
||||
'todo.hasDescription': 'Has description',
|
||||
'todo.addItem': 'Add new task...',
|
||||
'todo.newCategory': 'Category name',
|
||||
'todo.addCategory': 'Add category',
|
||||
'todo.newItem': 'New task',
|
||||
'todo.empty': 'No tasks yet. Add a task to get started!',
|
||||
'todo.filter.my': 'My Tasks',
|
||||
'todo.filter.overdue': 'Overdue',
|
||||
'todo.sidebar.tasks': 'Tasks',
|
||||
'todo.sidebar.categories': 'Categories',
|
||||
'todo.detail.title': 'Task',
|
||||
'todo.subtab.packing': 'Liste de bagages',
|
||||
'todo.subtab.todo': 'À faire',
|
||||
'todo.completed': 'terminé(s)',
|
||||
'todo.filter.all': 'Tout',
|
||||
'todo.filter.open': 'En cours',
|
||||
'todo.filter.done': 'Terminé',
|
||||
'todo.uncategorized': 'Sans catégorie',
|
||||
'todo.namePlaceholder': 'Nom de la tâche',
|
||||
'todo.descriptionPlaceholder': 'Description (facultative)',
|
||||
'todo.unassigned': 'Non assigné',
|
||||
'todo.noCategory': 'Aucune catégorie',
|
||||
'todo.hasDescription': 'Avec description',
|
||||
'todo.addItem': 'Ajouter une tâche...',
|
||||
'todo.newCategory': 'Nom de la catégorie',
|
||||
'todo.addCategory': 'Ajouter une catégorie',
|
||||
'todo.newItem': 'Nouvelle tâche',
|
||||
'todo.empty': 'Aucune tâche pour l\'instant. Ajoutez une tâche pour commencer !',
|
||||
'todo.filter.my': 'Mes tâches',
|
||||
'todo.filter.overdue': 'En retard',
|
||||
'todo.sidebar.tasks': 'Tâches',
|
||||
'todo.sidebar.categories': 'Catégories',
|
||||
'todo.detail.title': 'Tâche',
|
||||
'todo.detail.description': 'Description',
|
||||
'todo.detail.category': 'Category',
|
||||
'todo.detail.dueDate': 'Due date',
|
||||
'todo.detail.assignedTo': 'Assigned to',
|
||||
'todo.detail.delete': 'Delete',
|
||||
'todo.detail.save': 'Save changes',
|
||||
'todo.detail.create': 'Create task',
|
||||
'todo.detail.priority': 'Priority',
|
||||
'todo.detail.noPriority': 'None',
|
||||
'todo.sortByPrio': 'Priority',
|
||||
'todo.detail.category': 'Catégorie',
|
||||
'todo.detail.dueDate': 'Date d\'échéance',
|
||||
'todo.detail.assignedTo': 'Assigné à',
|
||||
'todo.detail.delete': 'Supprimer',
|
||||
'todo.detail.save': 'Enregistrer les modifications',
|
||||
'todo.detail.create': 'Créer la tâche',
|
||||
'todo.detail.priority': 'Priorité',
|
||||
'todo.detail.noPriority': 'Aucune',
|
||||
'todo.sortByPrio': 'Priorité',
|
||||
|
||||
// Notification system (added from feat/notification-system)
|
||||
'settings.notifyVersionAvailable': 'New version available',
|
||||
'settings.notificationPreferences.noChannels': 'No notification channels are configured. Ask an admin to set up email or webhook notifications.',
|
||||
'settings.notifyVersionAvailable': 'Nouvelle version disponible',
|
||||
'settings.notificationPreferences.noChannels': 'Aucun canal de notification n\'est configuré. Demandez à un administrateur de configurer les notifications par e-mail ou webhook.',
|
||||
'settings.webhookUrl.label': 'URL du webhook',
|
||||
'settings.webhookUrl.placeholder': 'https://discord.com/api/webhooks/...',
|
||||
'settings.webhookUrl.hint': 'Entrez votre URL de webhook Discord, Slack ou personnalisée pour recevoir des notifications.',
|
||||
@@ -1622,7 +1622,7 @@ const fr: Record<string, string> = {
|
||||
'admin.notifications.emailPanel.title': 'Email (SMTP)',
|
||||
'admin.notifications.webhookPanel.title': 'Webhook',
|
||||
'admin.notifications.inappPanel.title': 'In-App',
|
||||
'admin.notifications.inappPanel.hint': 'In-app notifications are always active and cannot be disabled globally.',
|
||||
'admin.notifications.inappPanel.hint': 'Les notifications in-app sont toujours actives et ne peuvent pas être désactivées globalement.',
|
||||
'admin.notifications.adminWebhookPanel.title': 'Webhook admin',
|
||||
'admin.notifications.adminWebhookPanel.hint': 'Ce webhook est utilisé exclusivement pour les notifications admin (ex. alertes de version). Il est séparé des webhooks utilisateur et s\'active automatiquement si une URL est configurée.',
|
||||
'admin.notifications.adminWebhookPanel.saved': 'URL du webhook admin enregistrée',
|
||||
@@ -1633,13 +1633,13 @@ const fr: Record<string, string> = {
|
||||
'admin.tabs.notifications': 'Notifications',
|
||||
'admin.tabs.notificationChannels': 'Canaux de notification',
|
||||
'admin.tabs.adminNotifications': 'Notifications admin',
|
||||
'notifications.versionAvailable.title': 'Update Available',
|
||||
'notifications.versionAvailable.text': 'TREK {version} is now available.',
|
||||
'notifications.versionAvailable.button': 'View Details',
|
||||
'notifications.versionAvailable.title': 'Mise à jour disponible',
|
||||
'notifications.versionAvailable.text': 'TREK {version} est maintenant disponible.',
|
||||
'notifications.versionAvailable.button': 'Voir les détails',
|
||||
'notif.test.title': '[Test] Notification',
|
||||
'notif.test.simple.text': 'This is a simple test notification.',
|
||||
'notif.test.boolean.text': 'Do you accept this test notification?',
|
||||
'notif.test.navigate.text': 'Click below to navigate to the dashboard.',
|
||||
'notif.test.simple.text': 'Ceci est une simple notification de test.',
|
||||
'notif.test.boolean.text': 'Acceptez-vous cette notification de test ?',
|
||||
'notif.test.navigate.text': 'Cliquez ci-dessous pour accéder au tableau de bord.',
|
||||
|
||||
// Notifications
|
||||
'notif.trip_invite.title': 'Invitation au voyage',
|
||||
@@ -1669,8 +1669,8 @@ const fr: Record<string, string> = {
|
||||
'notif.action.decline': 'Refuser',
|
||||
'notif.generic.title': 'Notification',
|
||||
'notif.generic.text': 'Vous avez une nouvelle notification',
|
||||
'notif.dev.unknown_event.title': '[DEV] Unknown Event',
|
||||
'notif.dev.unknown_event.text': 'Event type "{event}" is not registered in EVENT_NOTIFICATION_CONFIG',
|
||||
'notif.dev.unknown_event.title': '[DEV] Événement inconnu',
|
||||
'notif.dev.unknown_event.text': 'Le type d\'événement "{event}" n\'est pas enregistré dans EVENT_NOTIFICATION_CONFIG',
|
||||
}
|
||||
|
||||
export default fr
|
||||
|
||||
Reference in New Issue
Block a user