// French translations. Reviewed for UI register (informal vous-vouvoiement is
// standard for software UIs in France; tu would feel underdressed for a B2B tool).
// Native review recommended before publicizing as fully supported.
export default {
  'nav.members': 'Membres',
  'common.close': 'Fermer',
  'switcher.manage_members': 'Gérer les membres',
  'switcher.rename': 'Renommer l\'espace de travail',
  'wall.rename': 'Renommer le mur',
  'wall.remove_from_wall': 'Retirer du mur',
  'dashboard.select_for_wall': 'Sélectionner pour le mur d\'images',
  'team.unavailable_desc': 'Cette fonctionnalité est indisponible pendant sa refonte pour fonctionner avec les espaces de travail. Les données des équipes existantes sont conservées.',
  'team.unavailable_title': 'Les équipes sont en cours de refonte',
  'settings.help_tip': 'Votre profil, votre mot de passe et la double authentification, ainsi que les jetons d\'API pour les intégrations et les outils d\'export ou d\'import de vos données.',
  'activity.help_tip': 'Journal de ce qui a changé et par qui : connexions, envois de contenu, commandes aux appareils et alertes. Utile pour comprendre pourquoi un écran a changé d\'affichage.',
  'playlist.help_tip': 'Une playlist est l\'ordre de lecture qu\'un écran répète en boucle. Ajoutez des contenus, définissez la durée de chacun, puis affectez la playlist à un écran ou à un groupe. Un écran lit une seule playlist à la fois, sauf si une programmation la remplace.',
  // #zone-orphan dashboard warnings
  'device.pl_item.orphan_zone': 'Zone d\'une autre mise en page — réattribuer',
  'device.pl_item.orphan_zone_tip': 'La zone de cet élément ne fait pas partie de la mise en page actuelle de l\'appareil. Il continue de s\'afficher (récupéré dans la plus grande zone), mais réattribuez-le à une zone de cette mise en page.',
  'dashboard.device_orphan_tip_one': '{n} élément attribué à une zone absente de la mise en page de cet appareil — ouvrez l\'appareil pour le réattribuer',
  'dashboard.device_orphan_tip_other': '{n} éléments attribués à une zone absente de la mise en page de cet appareil — ouvrez l\'appareil pour les réattribuer',
  // Nav
  'nav.displays': 'Écrans',
  'nav.content': 'Contenu',
  'nav.playlists': 'Listes de lecture',
  'nav.layouts': 'Mises en page',
  'nav.widgets': 'Widgets',
  'nav.schedule': 'Calendrier',
  'nav.walls': 'Murs vidéo',
  'nav.reports': 'Rapports',
  'nav.kiosk': 'Kiosque',
  'nav.designer': 'Concepteur',
  'nav.activity': 'Activité',
  'nav.teams': 'Équipes',
  'nav.help': 'Aide',
  'nav.settings': 'Paramètres',
  'nav.subscription': 'Abonnement',
  'nav.admin': 'Admin',

  // Common
  'common.save': 'Enregistrer',
  'common.cancel': 'Annuler',
  'common.delete': 'Supprimer',
  'common.edit': 'Modifier',
  'common.done': 'Terminé',
  'common.loading': 'Chargement...',
  'common.connected': 'Connecté',
  'common.disconnected': 'Déconnecté',
  'common.never': 'Jamais',
  'common.just_now': 'À l\'instant',
  'common.minutes_ago': 'il y a {n}m',
  'common.hours_ago': 'il y a {n}h',
  'common.days_ago': 'il y a {n}j',
  'common.unknown': 'Inconnu',

  // Auth
  'auth.sign_in': 'Se connecter',
  'auth.sign_out': 'Se déconnecter',
  'auth.create_account': 'Créer un compte',
  'auth.create_admin_account': 'Créer un compte administrateur',
  'auth.email': 'E-mail',
  'auth.password': 'Mot de passe',
  'auth.name': 'Nom',
  'auth.placeholder_email': 'vous@exemple.com',
  'auth.placeholder_password': '••••••••',
  'auth.placeholder_name': 'Votre nom',
  'auth.placeholder_register_password': 'Au moins 6 caractères',
  'auth.subtitle_setup': 'Créez votre compte administrateur pour commencer',
  'auth.subtitle_signin': 'Connectez-vous pour gérer vos écrans',
  'auth.trial_notice': 'Les nouveaux comptes obtiennent un essai Pro gratuit de 14 jours',
  'auth.divider_or': 'OU',
  'auth.signin_google': 'Se connecter avec Google',
  'auth.signin_microsoft': 'Se connecter avec Microsoft',
  'auth.back_to_signin': 'Retour à la connexion',
  'auth.support_access': 'Accès au support',
  'auth.support_token_placeholder': 'Collez le jeton de support',
  'auth.support_authenticate': 'Authentifier avec le jeton de support',
  'auth.terms': 'Conditions d\'utilisation',
  'auth.privacy': 'Politique de confidentialité',
  'auth.error_email_password_required': 'E-mail et mot de passe requis',
  'auth.error_password_min_6': 'Le mot de passe doit comporter au moins 6 caractères',
  'auth.error_login_failed': 'Échec de la connexion',
  'auth.error_registration_failed': 'Échec de l\'inscription',
  'auth.error_paste_support_token': 'Collez un jeton de support',
  'auth.error_support_failed': 'Échec de la connexion de support',
  'auth.error_google_failed': 'Échec de la connexion Google',
  'auth.error_microsoft_failed': 'Échec de la connexion Microsoft',

  // Dashboard
  'dashboard.title': 'Écrans',
  'dashboard.subtitle': 'Gérez vos écrans distants',
  'dashboard.help_tip': 'Vos écrans appariés. Vert = en ligne, rouge = hors ligne. Cliquez sur un écran pour gérer sa liste de lecture, voir la télémétrie ou utiliser le contrôle à distance.',
  'dashboard.add': 'Ajouter un écran',
  'dashboard.create_group': '+ Groupe',
  'dashboard.search': 'Rechercher des écrans...',
  'dashboard.all_status': 'Tous les statuts',
  'dashboard.online': 'En ligne',
  'dashboard.offline': 'Hors ligne',
  'dashboard.awaiting_pairing': 'En attente d\'appairage',
  'dashboard.no_preview': 'Aperçu indisponible',
  'dashboard.total_displays': 'Écrans totaux',
  'dashboard.ungrouped': 'Sans groupe',
  'dashboard.no_displays': 'Aucun écran pour le moment',
  'dashboard.no_displays_desc': 'Installez l\'application ScreenTinker sur votre TV et appariez-la avec le bouton ci-dessus.',
  'dashboard.failed_to_load': 'Échec du chargement des écrans',
  'dashboard.unknown_playlist': 'Liste de lecture inconnue',
  'dashboard.mixed_playlists': 'Listes mixtes',
  'dashboard.playlist_label': 'Liste : {name}',
  'dashboard.devices_count_one': '{n} appareil',
  'dashboard.devices_count_other': '{n} appareils',
  'dashboard.online_count': '{n} en ligne',
  'dashboard.set_playlist_placeholder': 'Définir la liste...',
  'dashboard.send_command_placeholder': 'Envoyer une commande...',
  'dashboard.manage': 'Gérer',
  'dashboard.manage_tooltip': 'Ajouter/retirer des appareils',
  'dashboard.delete_group_tooltip': 'Supprimer le groupe',
  'dashboard.no_devices_in_group': 'Aucun appareil dans ce groupe. Cliquez sur Gérer pour en ajouter.',
  'dashboard.manage_group_subtitle': 'Cochez les appareils à ajouter à ce groupe',
  'dashboard.draft_suffix': '(brouillon)',
  'dashboard.cmd.screen_on': 'Allumer l\'écran',
  'dashboard.cmd.screen_off': 'Éteindre l\'écran',
  'dashboard.cmd.restart_app': 'Redémarrer l\'app',
  'dashboard.cmd.check_update': 'Vérifier la mise à jour',
  'dashboard.cmd.reboot': 'Redémarrer',
  'dashboard.cmd.shutdown': 'Arrêter',
  'dashboard.prompt_group_name': 'Nom du groupe :',
  'dashboard.error_pairing_code': 'Saisissez un code d\'appairage valide à 6 chiffres',
  'dashboard.confirm_add_to_group': '{name} est déjà dans : {groups}\n\nL\'ajouter aussi à « {target} » ?',
  'dashboard.confirm_move_to_group': '{name} est actuellement dans : {groups}\n\nLe déplacer vers "{target}" ?',
  'dashboard.toast.move_partial': 'Impossible de le retirer de {group} — il est encore dans les deux',
  'dashboard.confirm_assign_playlist': 'Attribuer la liste « {playlist} » à tous les appareils de « {group} » ?',
  'dashboard.confirm_destructive_command': '{cmd} les {n} appareils de « {group} » ?\n\nCette action est irréversible.',
  'dashboard.confirm_delete_group': 'Supprimer ce groupe ? Les appareils ne seront pas affectés.',
  'dashboard.toast.display_paired': 'Écran appairé avec succès !',
  'dashboard.toast.group_created': 'Groupe créé',
  'dashboard.toast.group_deleted': 'Groupe supprimé',
  'dashboard.toast.already_in_group': '{name} est déjà dans {group}',
  'dashboard.toast.moved_device': '{name} déplacé vers {group}',
  'dashboard.toast.removed_device_one': '{name} retiré de 1 groupe',
  'dashboard.toast.removed_device_other': '{name} retiré de {n} groupes',
  'dashboard.toast.playlist_assigned_one': 'Liste attribuée à 1 appareil',
  'dashboard.toast.playlist_assigned_other': 'Liste attribuée à {n} appareils',
  'dashboard.toast.command_sent': '{cmd} envoyé à {sent}/{total} appareils',
  'dashboard.toast.command_sent_with_offline': '{cmd} envoyé à {sent}/{total} appareils ({offline} hors ligne)',

  // Content library
  'content.title': 'Bibliothèque de contenu',
  'content.subtitle': 'Téléversez et gérez vos fichiers multimédias',
  'content.help_tip': 'Téléversez des vidéos et des images ici. Sélectionnez plusieurs fichiers pour un envoi groupé. Utilisez l\'URL distante pour diffuser depuis des sources externes. Cliquez sur une miniature pour prévisualiser.',
  'content.drop': 'Déposez les fichiers ici ou cliquez pour téléverser',
  'content.upload_hint': 'Prend en charge MP4, WebM, AVI, MKV, JPEG, PNG, GIF, WebP',
  'content.upload_progress': 'Téléversement...',
  'content.upload_progress_named': 'Téléversement de {name}...',
  'content.upload_progress_named_pct': 'Téléversement de {name}... {pct}%',
  'content.remote_url': 'URL distante',
  'content.remote_desc': 'Diffusez directement depuis une URL. Économise la bande passante locale.',
  'content.remote_url_placeholder': 'https://exemple.com/video.mp4',
  'content.remote_name_placeholder': 'Nom à afficher (facultatif)',
  'content.remote_add_btn': 'Ajouter une URL distante',
  'content.youtube': 'YouTube',
  'content.youtube_desc': 'Intégrez une vidéo YouTube sur vos écrans.',
  'content.youtube_url_placeholder': 'https://youtube.com/watch?v=...',
  'content.youtube_name_placeholder': 'Nom à afficher (facultatif)',
  'content.youtube_add_btn': 'Ajouter une vidéo YouTube',
  'content.search_placeholder': 'Rechercher du contenu...',
  'content.new_folder_btn': '+ Nouveau dossier',
  'content.breadcrumb_root': 'Tout le contenu',
  'content.rename_btn': 'Renommer',
  'content.delete_folder_btn': 'Supprimer le dossier',
  'content.prompt_folder_name': 'Nom du dossier :',
  'content.prompt_rename_folder': 'Renommer le dossier :',
  'content.confirm_delete_folder': 'Supprimer ce dossier ? Le contenu retournera à la racine. Les sous-dossiers seront aussi supprimés.',
  'content.empty_folder_title': 'Ce dossier est vide',
  'content.empty_folder_desc': 'Glissez du contenu ici ou utilisez l\'action Déplacer.',
  'content.no_content': 'Pas encore de contenu',
  'content.no_content_desc': 'Téléversez des vidéos et des images pour commencer.',
  'content.failed_to_load': 'Échec du chargement du contenu',
  'content.type_youtube': 'YouTube',
  'content.type_remote': 'URL distante',
  'content.type_remote_short': 'Distant',
  'content.type_video': 'Vidéo',
  'content.type_image': 'Image',
  'content.btn_edit': 'Modifier',
  'content.btn_delete': 'Supprimer',
  'content.btn_confirm_delete': 'Confirmer la suppression ?',
  'content.btn_deleting': 'Suppression...',
  'content.edit_modal_title': 'Modifier le contenu',
  'content.label_filename': 'Nom du fichier / Affichage',
  'content.label_remote_url_field': 'URL distante',
  'content.label_mime_type': 'Type MIME',
  'content.label_folder': 'Dossier',
  'content.label_replace_file': 'Remplacer le fichier',
  'content.replace_file_hint': 'Laissez vide pour conserver le fichier actuel',
  'content.folder_root_option': '— Racine —',
  'content.save_changes': 'Enregistrer les modifications',
  'content.mime.video_mp4': 'Vidéo (MP4)',
  'content.mime.video_webm': 'Vidéo (WebM)',
  'content.mime.image_jpeg': 'Image (JPEG)',
  'content.mime.image_png': 'Image (PNG)',
  'content.mime.image_gif': 'Image (GIF)',
  'content.mime.image_webp': 'Image (WebP)',
  'content.error_enter_url': 'Saisissez une URL',
  'content.error_enter_youtube_url': 'Saisissez une URL YouTube',
  'content.error_update_failed': 'Échec de la mise à jour',
  'content.toast.remote_added': 'Contenu distant ajouté',
  'content.toast.youtube_added': 'Vidéo YouTube ajoutée',
  'content.toast.deleted': 'Contenu supprimé',
  'content.toast.updated': 'Contenu mis à jour',
  'content.toast.uploaded_named': '{name} téléversé avec succès',
  'content.toast.upload_failed_named': 'Échec du téléversement de {name} : {error}',
  'content.toast.folder_created_named': 'Dossier « {name} » créé',
  'content.toast.folder_renamed': 'Dossier renommé',
  'content.toast.folder_deleted': 'Dossier supprimé',
  'content.toast.moved': 'Déplacé',
  'content.toast.moved_to_root': 'Déplacé à la racine',

  // Device detail
  'device.back': 'Retour aux écrans',
  'device.owner_label': 'Propriétaire : {owner}',
  'device.rename': 'Renommer',
  'device.preview_btn': 'Aperçu',
  'device.screenshot_btn': 'Capture',
  'device.remove': 'Retirer',
  'device.click_to_confirm': 'Cliquez à nouveau pour confirmer',
  'device.prompt_new_name': 'Saisissez le nouveau nom :',
  'device.confirm_discard_draft': 'Annuler toutes les modifications non publiées et revenir à la dernière version publiée ?',
  'device.failed_load': 'Échec du chargement de l\'appareil',
  'device.no_screenshot': 'Aucune capture disponible. Cliquez sur « Capture » pour en prendre une.',
  'device.no_content_assigned': 'Aucun contenu attribué',
  'device.now_playing_id': 'En lecture : {id}',
  'device.playlist_count_one': '1 élément dans la liste',
  'device.playlist_count_other': '{n} éléments dans la liste',
  'device.tab.now_playing': 'En cours de lecture',
  'device.tab.now_playing_tip': 'Capture en direct de ce qui s\'affiche sur cet appareil.',
  'device.tab.playlist': 'Liste de lecture',
  'device.tab.playlist_tip': 'Contenu attribué à cet appareil. Glissez pour réorganiser. Ajoutez des médias, widgets ou pages kiosque.',
  'device.tab.info': 'Infos appareil',
  'device.tab.info_tip': 'Télémétrie matérielle, orientation, notes et contrôles de l\'appareil.',
  'device.tab.remote': 'Contrôle à distance',
  'device.tab.remote_tip': 'Visualisez l\'écran en temps réel et envoyez des touches. Fonctionne sur l\'APK Android et le lecteur web.',
  'device.draft.banner_title': 'Modifications non publiées',
  'device.draft.devices_showing_published': 'Les appareils affichent encore la dernière version publiée.',
  'device.draft.never_published': 'Cette liste n\'a jamais été publiée. Les appareils n\'afficheront rien jusqu\'à publication.',
  'device.draft.discard': 'Annuler',
  'device.draft.publish': 'Publier',
  'device.draft.publishing': 'Publication...',
  'device.layout.label': 'Mise en page',
  'device.layout.fullscreen_default': 'Plein écran (par défaut)',
  'device.layout.zones_count': '{name} ({n} zones)',
  'device.layout.template_zones_count': '[Modèle] {name} ({n} zones)',
  'device.layout.apply': 'Appliquer',
  'device.playlist.label': 'Liste de lecture',
  'device.playlist.no_playlist': 'Aucune liste',
  'device.playlist.copy_to_btn': 'Copier vers...',
  'device.playlist.add_content_btn': 'Ajouter du contenu',
  'device.playlist.empty_title': 'Aucun contenu attribué',
  'device.playlist.empty_desc': 'Ajoutez du contenu de votre bibliothèque à la liste de cet écran.',
  'device.playlist_picker.with_count': '{name} — {n} éléments',
  'device.playlist_picker.with_auto': '{name} (auto) — {n} éléments',
  'device.info.status': 'Statut',
  'device.info.ip_address': 'Adresse IP',
  'device.info.local_ip': 'IP locale',
  'device.info.local_ip6': 'IPv6 locale',
  'device.info.wifi_needs_location': 'Autorisation de localisation requise',
  'device.info.battery': 'Batterie',
  'device.info.storage': 'Stockage',
  'device.info.size_free': '{size} libres',
  'device.info.player_type': 'Type de lecteur',
  'device.info.web_player': 'Lecteur web',
  'device.info.wifi': 'WiFi',
  'device.info.uptime': 'Disponibilité',
  'device.info.android_version': 'Version d\'Android',
  'device.info.app_version': 'Version de l\'app',
  'device.info.settings_pin': 'Code PIN des réglages',
  'device.info.settings_pin_hint': 'Menu des réglages sur l\'appareil (2× Retour)',
  'device.info.screen_resolution': 'Résolution',
  'device.info.ram': 'RAM',
  'device.info.cpu_usage': 'Utilisation CPU',
  'device.timeline.title': 'Disponibilité (24 dernières heures)',
  'device.timeline.h24_ago': 'il y a 24h',
  'device.timeline.now': 'Maintenant',
  'device.timeline.online': 'En ligne',
  'device.timeline.offline': 'Hors ligne',
  'device.timeline.no_data': 'Aucune donnée',
  'device.timeline.uptime_pct_tracked': '{pct}% disponible ({n}min suivies)',
  'device.timeline.uptime_pct_no_data': '{pct}% disponible (aucune donnée)',
  'device.form.orientation_label': 'Orientation / Rotation',
  'device.form.orientation.landscape': 'Paysage (0°)',
  'device.form.orientation.portrait': 'Portrait (90° SH)',
  'device.form.orientation.landscape_flipped': 'Paysage retourné (180°)',
  'device.form.orientation.portrait_flipped': 'Portrait retourné (270° SH)',
  'device.form.default_content_label': 'Contenu par défaut',
  'device.form.default_content_none': 'Aucun (afficher « En attente... »)',
  'device.form.notes_label': 'Notes',
  'device.form.notes_placeholder': 'Emplacement, détails d\'installation, etc.',
  'device.form.save_settings': 'Enregistrer les paramètres',
  'device.ctl.reboot_device': 'Redémarrer l\'appareil',
  'device.ctl.screen_off': 'Éteindre l\'écran',
  'device.ctl.screen_on': 'Allumer l\'écran',
  'device.ctl.launch_player': 'Lancer le lecteur',
  'device.ctl.force_update': 'Forcer la mise à jour',
  'device.ctl.shutdown': 'Arrêter',
  'device.remote.start_prompt': 'Cliquez sur « Démarrer » pour commencer',
  'device.remote.start': 'Démarrer',
  'device.remote.stop': 'Arrêter',
  'device.remote.vol_up': 'Vol +',
  'device.remote.vol_down': 'Vol -',
  'device.remote.home': 'Accueil',
  'device.remote.back': 'Retour',
  'device.remote.recents': 'Récents',
  'device.remote.power': 'Marche',
  'device.remote.ok': 'OK',
  'device.remote.settings': 'Paramètres',
  'device.remote.scrn_off': 'Écr. off',
  'device.remote.scrn_on': 'Écr. on',
  'device.remote.enable_system_view': 'Activer la vue système',
  'device.remote.system_view_tooltip': 'Demande à l\'utilisateur d\'autoriser la capture plein écran - permet de voir l\'écran d\'accueil, les paramètres et d\'autres apps',
  'device.remote.system_view_hint': 'Approbation unique requise sur l\'appareil',
  'device.remote.waiting_for_approval': 'Attente de l\'approbation de l\'appareil...',
  'device.remote.system_view_enabled': 'Vue système activée',
  'device.remote.unlocked_hint': 'Navigation et contrôles système débloqués',
  'device.pl_item.widget_with_type': 'Widget ({type})',
  'device.pl_item.youtube': 'YouTube',
  'device.pl_item.video': 'Vidéo',
  'device.pl_item.image': 'Image',
  'device.pl_item.zone_label': 'Zone : {id}',
  'device.pl_item.no_zone': 'Aucune zone',
  'device.pl_item.mute': 'Muet',
  'device.pl_item.unmute': 'Réactiver le son',
  'device.pl_item.remove': 'Retirer',
  'device.copy.no_other_devices': 'Aucun autre appareil vers lequel copier',
  'device.copy.prompt': 'Copier la liste vers quel appareil ?\n\n{list}\n\nSaisissez le numéro :',
  'device.copy.invalid_selection': 'Sélection invalide',
  'device.copy.toast': '{n} éléments copiés vers {device}',
  'device.assign.empty_all': 'Pas encore de contenu, widgets ou pages kiosque. Créez-en un d\'abord !',
  'device.assign.modal_title': 'Ajouter à la liste',
  'device.assign.zone_label': 'Zone',
  'device.assign.zone_default': 'Par défaut (plein écran)',
  'device.assign.duration_label': 'Durée (secondes, pour images/widgets)',
  'device.assign.tab.media': 'Médias ({n})',
  'device.assign.tab.widgets': 'Widgets ({n})',
  'device.assign.tab.kiosk': 'Kiosque ({n})',
  'device.assign.no_media': 'Aucun média téléversé',
  'device.assign.no_widgets': 'Aucun widget créé.',
  'device.assign.no_kiosk': 'Aucune page kiosque.',
  'device.assign.create_one': 'Créez-en un',
  'device.assign.add_selected': 'Ajouter la sélection',
  'device.assign.select_first': 'Sélectionnez d\'abord un élément',
  'device.assign.kiosk_widget_name': 'Kiosque : {name}',
  'device.toast.screenshot_requested': 'Capture demandée',
  'device.toast.screenshot_unsupported': 'Le lecteur de cet écran ne prend pas en charge les captures d\'écran',
  'device.toast.screenshot_offline': 'Écran hors ligne — capture non demandée',
  'device.toast.screenshot_failed': 'Échec de la demande de capture — pas de réponse du serveur',
  'device.toast.renamed': 'Écran renommé',
  'device.toast.removing': 'Suppression...',
  'device.toast.removed': 'Écran retiré',
  'device.toast.settings_saved': 'Paramètres enregistrés',
  'device.toast.published': 'Liste publiée — appareils mis à jour',
  'device.toast.draft_discarded': 'Modifications du brouillon annulées',
  'device.toast.playlist_changed': 'Liste modifiée',
  'device.toast.layout_applied': 'Mise en page appliquée',
  'device.toast.switched_to_fullscreen': 'Passé en plein écran',
  'device.toast.added_to_playlist': 'Ajouté à la liste',
  'device.toast.unmuted': 'Son réactivé',
  'device.toast.muted': 'Son coupé',
  'device.toast.zone_updated': 'Zone mise à jour',
  'device.toast.removed_from_playlist': 'Contenu retiré de la liste',
  'device.toast.playlist_reordered': 'Liste réorganisée',
  'device.toast.reboot_sent': 'Commande de redémarrage envoyée',
  'device.toast.shutdown_sent': 'Commande d\'arrêt envoyée',
  'device.toast.screen_off_sent': 'Commande d\'extinction de l\'écran envoyée',
  'device.toast.screen_on_sent': 'Commande d\'allumage de l\'écran envoyée',
  'device.toast.launch_sent': 'Commande de lancement envoyée',
  'device.toast.update_triggered': 'Vérification de mise à jour déclenchée',
  'device.toast.remote_started': 'Session de contrôle à distance démarrée',

  // Settings
  'settings.title': 'Paramètres',
  'settings.subtitle': 'Configuration du serveur et informations d\'installation',
  'settings.account': 'Compte',
  // Jetons d'API
  'apitoken.title': "Jetons d'API",
  'apitoken.desc': "Jetons d'accès personnels pour l'API publique, limités à cet espace de travail. Traitez-les comme des mots de passe : toute personne disposant du jeton peut agir en votre nom ici.",
  'apitoken.docs_link': "Nouveau sur l'API ? Voir la documentation complète →",
  'apitoken.portal_url_label': 'URL du portail agence',
  'apitoken.invite_label': "Invitation à copier — envoyez-la à l'agence :",
  'apitoken.invite_text': "Allez sur {url} et collez cette clé d'accès : {key}",
  'apitoken.copy_invite': "Copier l'invitation",
  'apitoken.name_placeholder': 'p. ex. Intégration agence',
  'apitoken.scope_read': 'Lecture seule',
  'apitoken.scope_write': 'Lecture et écriture',
  'apitoken.scope_full': 'Complet (cmd. appareils incluses)',
  'apitoken.scope_agency': 'Agence (téléverser uniquement vers les listes choisies)',
  'apitoken.agency_playlists_label': 'Listes vers lesquelles ce jeton d\'agence peut publier',
  'apitoken.agency_playlists_hint': 'Le jeton peut uniquement téléverser et ajouter des éléments datés à ces listes. Les ajouts restent en brouillon pour que vous les publiiez.',
  'apitoken.agency_needs_playlists': 'Sélectionnez au moins une liste pour un jeton d\'agence.',
  'apitoken.agency_no_playlists': 'Créez d\'abord une liste : un jeton d\'agence doit en cibler une.',
  'apitoken.targets_label': 'Assignées :',
  'apitoken.edit_targets': 'Modifier les listes',
  'apitoken.zoned_playlist_reason': 'Affectée à une zone — les agences ont besoin d\'une liste plein écran',
  'apitoken.targets_updated': 'Désignations mises à jour',
  'apitoken.auto_publish_label': 'Publication automatique (ignorer mon approbation)',
  'apitoken.auto_publish_hint': 'Désactivé (par défaut) : les ajouts attendent en brouillon votre publication. Activé : ils sont diffusés immédiatement, uniquement pour les agences de pleine confiance.',
  'apitoken.auto_publish_on': 'publication automatique activée',
  'apitoken.agency_folder_label': 'Dossier de téléversement',
  'apitoken.agency_folder_hint': "Où atterrissent les téléversements de cette agence. Laissez sur automatique pour créer un dossier nommé d'après le jeton ; l'agence peut cibler ses sous-dossiers, mais rien d'autre.",
  'apitoken.agency_folder_auto': 'En créer un automatiquement (Agency — <nom>)',
  'apitoken.folder_label': 'Dossier :',
  'apitoken.folder_root': 'Racine de la bibliothèque',
  'apitoken.edit_folder': 'Dossier',
  'apitoken.folder_updated': 'Dossier de téléversement mis à jour',
  'apitoken.create': 'Créer un jeton',
  'apitoken.none': 'Aucun jeton pour le moment.',
  'apitoken.col_token': 'Jeton',
  'apitoken.col_name': 'Nom',
  'apitoken.col_scope': 'Portée',
  'apitoken.col_created': 'Créé',
  'apitoken.col_last_used': 'Dernière utilisation',
  'apitoken.never': 'Jamais',
  'apitoken.revoke': 'Révoquer',
  'apitoken.revoked': 'Révoqué',
  'apitoken.secret_title': 'Copiez votre jeton maintenant',
  'apitoken.secret_warning': "C'est la seule fois où le jeton complet est affiché. Conservez-le en lieu sûr : vous ne pourrez plus le revoir.",
  'apitoken.copy': 'Copier',
  'apitoken.copied': 'Copié dans le presse-papiers',
  'apitoken.created_toast': 'Jeton créé',
  'apitoken.revoked_toast': 'Jeton révoqué',
  'apitoken.revoke_confirm': "Révoquer ce jeton ? Toute intégration qui l'utilise cessera de fonctionner immédiatement.",
  'settings.save_profile': 'Enregistrer le profil',
  'settings.change_password': 'Changer le mot de passe',
  'settings.password_min_8': 'Doit contenir au moins 8 caractères.',
  'settings.current_password': 'Mot de passe actuel',
  'settings.new_password': 'Nouveau mot de passe',
  'settings.confirm_new_password': 'Confirmer le nouveau mot de passe',
  'settings.sso_note': 'Vous vous connectez via {provider}. Gérez votre mot de passe là-bas.',
  'settings.license': 'Licence',
  'settings.license_mit': 'Licence MIT - toutes les fonctionnalités incluses.',
  'settings.platform_admin_link': 'Les outils d\'administration sont sur la page',
  'settings.platform_admin_page_suffix': '.',
  'settings.user_management': 'Gestion des utilisateurs',
  'settings.loading_users': 'Chargement des utilisateurs...',
  'settings.white_label': 'Marque blanche / Branding',
  'settings.white_label_desc': 'Personnalisez l\'apparence du tableau de bord et du lecteur pour vos clients.',
  'settings.brand_name': 'Nom de la marque',
  'settings.logo_url': 'URL du logo',
  'settings.primary_color': 'Couleur principale',
  'settings.bg_color': 'Couleur de fond',
  'settings.custom_domain': 'Domaine personnalisé',
  'settings.favicon_url': 'URL du favicon',
  'settings.custom_css': 'CSS personnalisé (facultatif)',
  'settings.hide_branding': 'Masquer la marque « ScreenTinker »',
  'settings.save_branding': 'Enregistrer le branding',
  'settings.preview': 'Aperçu',
  'settings.white_label_enterprise_only': 'Le branding personnalisé est disponible sur le plan Enterprise',
  'settings.view_plans': 'Voir les plans',
  'settings.server_info': 'Informations du serveur',
  'settings.server_url': 'URL du serveur',
  'settings.api_endpoint': 'Point de terminaison API',
  'settings.server_url_hint': 'Utilisez cette URL pour configurer l\'app Android',
  'settings.setup_guide': 'Guide d\'installation',
  'settings.setup_step_1': 'Installez l\'APK ScreenTinker sur votre TV via le sideloading',
  'settings.setup_step_2_prefix': 'Ouvrez l\'app et saisissez cette URL du serveur :',
  'settings.setup_step_3': 'L\'app affichera un code d\'appairage à 6 chiffres',
  'settings.setup_step_4': 'Cliquez sur « Ajouter un écran » et saisissez le code',
  'settings.setup_step_5': 'Téléversez du contenu dans la Bibliothèque',
  'settings.setup_step_6': 'Attribuez du contenu à la liste de l\'écran',
  'settings.your_data': 'Vos données',
  'settings.your_data_desc': 'Exportez ou importez vos appareils, contenu, mises en page, calendriers et tous les paramètres. Utilisez cela pour migrer entre cloud et auto-hébergé.',
  'settings.export_my_data': 'Exporter mes données',
  'settings.include_media_zip': 'Inclure les fichiers médias (ZIP)',
  'settings.import_data': 'Importer des données',
  'settings.language': 'Langue',
  'settings.about': 'À propos',
  'settings.about_tagline': 'Système de gestion d\'affichage dynamique.',
  'settings.third_party_licenses': 'Licences tierces',
  'settings.import.reading_file': 'Lecture du fichier...',
  'settings.import.zip_detected': 'Export ZIP détecté : <strong>{name}</strong> ({size} Mo)<br>Contient données + fichiers médias.',
  'settings.import.confirm': 'Confirmer l\'import',
  'settings.import.invalid_file': 'Fichier invalide. Doit être un JSON ou ZIP d\'export ScreenTinker.',
  'settings.import.summary_devices': '{n} appareils',
  'settings.import.summary_content': '{n} contenus',
  'settings.import.summary_widgets': '{n} widgets',
  'settings.import.summary_layouts': '{n} mises en page',
  'settings.import.summary_schedules': '{n} calendriers',
  'settings.import.summary_walls': '{n} murs vidéo',
  'settings.import.summary_kiosk': '{n} pages kiosque',
  'settings.import.found_summary': 'Trouvé : {summary}.<br>De : {email} (exporté {date})',
  'settings.import.empty_export': 'export vide',
  'settings.import.uploading_zip': 'Téléversement et import... Cela peut prendre du temps pour les gros fichiers.',
  'settings.import.importing': 'Import...',
  'settings.import.complete': 'Import terminé : {imported}.',
  'settings.import.pairing_codes_title': 'Codes d\'appairage :',
  'settings.import.pairing_codes_hint': 'Saisissez ces codes sur chaque appareil pour les relier. Les attributions et calendriers seront préservés.',
  'settings.import.failed': 'Échec de l\'import',
  'settings.import.failed_with_error': 'Échec de l\'import : {error}',
  'settings.import.read_failed': 'Échec de lecture du fichier : {error}',
  'settings.toast.support_token_generated': 'Jeton de support généré (valide {hours}h)',
  'settings.toast.import_success': 'Données importées avec succès',
  'settings.toast.name_required': 'Le nom ne peut pas être vide',
  'settings.toast.profile_saved': 'Profil enregistré',
  'settings.toast.current_password_required': 'Saisissez votre mot de passe actuel',
  'settings.toast.new_password_min_8': 'Le nouveau mot de passe doit comporter au moins 8 caractères',
  'settings.toast.passwords_dont_match': 'Les nouveaux mots de passe ne correspondent pas',
  'settings.toast.password_changed': 'Mot de passe changé',
  'settings.toast.branding_saved': 'Branding enregistré',
  'settings.toast.preview_applied': 'Aperçu appliqué (rechargez pour réinitialiser)',
  'settings.toast.plan_updated': 'Plan mis à jour',
  'settings.toast.user_removed': 'Utilisateur retiré',
  'settings.user.col_user': 'Utilisateur',
  'settings.user.col_auth': 'Auth',
  'settings.user.col_role': 'Rôle',
  'settings.user.col_plan': 'Plan',
  'settings.user.col_actions': 'Actions',
  'settings.user.remove': 'Retirer',
  'settings.user.you': 'Vous',
  'settings.user.confirm': 'Confirmer ?',
  'settings.user.count_one': '1 utilisateur inscrit',
  'settings.user.count_other': '{n} utilisateurs inscrits',
  'settings.user.reset_password': 'Réinitialiser le mot de passe',
  'settings.user.prompt_reset_password': 'Saisissez un nouveau mot de passe pour {email} (8 caractères minimum) :',
  'settings.toast.password_reset_for_user': 'Mot de passe réinitialisé',

  // Widgets
  'widget.title': 'Widgets',
  'widget.subtitle': 'Ajoutez du contenu dynamique à vos mises en page',
  'widget.help_tip': 'Éléments de contenu dynamique : horloges, météo, tickers RSS, texte, pages web et flux sociaux. Créez un widget puis attribuez-le à la liste d\'un appareil.',
  'widget.new_widget': 'Nouveau widget',
  'widget.configure': 'Configurer le widget',
  'widget.preview': 'Aperçu',
  'widget.preview_title': 'Aperçu',
  'widget.webpage_blocked_note': 'Si cette zone est vide, le site bloque l’intégration et ne s’affichera pas non plus sur l’appareil. Essayez une page qui l’autorise.',
  'widget.close': 'Fermer',
  'widget.edit_x': 'Modifier {type}',
  'widget.new_x': 'Nouveau {type}',
  'widget.empty_title': 'Aucun widget pour le moment',
  'widget.empty_desc': 'Créez un widget pour ajouter du contenu dynamique à vos mises en page.',
  'widget.this_widget': 'ce widget',
  'widget.confirm_delete': 'Supprimer « {name} » ? Cette action est irréversible.',
  'widget.toast.saved': 'Widget enregistré',
  'widget.toast.deleted': 'Widget supprimé',
  'widget.toast.preview_failed': 'Échec de l\'aperçu',
  'widget.type.clock.name': 'Horloge',
  'widget.type.clock.desc': 'Horloge numérique avec date',
  'widget.type.weather.name': 'Météo',
  'widget.type.weather.desc': 'Conditions météo actuelles',
  'widget.type.rss.name': 'Bandeau d\'actualités',
  'widget.type.rss.desc': 'Flux RSS défilant',
  'widget.type.text.name': 'Texte/HTML',
  'widget.type.text.desc': 'Texte ou contenu HTML personnalisé',
  'widget.type.webpage.name': 'Page web',
  'widget.type.webpage.desc': 'Intégrer une page web',
  'widget.type.social.name': 'Flux social',
  'widget.type.social.desc': 'Flux de réseaux sociaux',
  'widget.type.directory_board.name': 'Annuaire',
  'widget.type.directory_board.desc': 'Annuaire défilant des locataires/salles pour halls',
  'widget.type.directory_search.name': 'Recherche d’annuaire',
  'widget.type.directory_search.desc': 'Recherche interactive d’un panneau d’annuaire',
  // directory-search widget
  'widget.dirsearch.source_label': 'Panneau d’annuaire',
  'widget.dirsearch.source_hint': 'Lit les entrées en direct depuis le panneau sélectionné ; rien n’est copié.',
  'widget.dirsearch.source_empty': 'Créez d’abord un panneau d’annuaire : ce widget recherche dans un panneau existant.',
  'widget.dirsearch.title_label': 'Titre',
  'widget.dirsearch.title_placeholder': 'Trouver un locataire',
  'widget.dirsearch.logo_label': 'Logo (facultatif)',
  'widget.dirsearch.placeholder_label': 'Texte du champ de recherche',
  'widget.dirsearch.placeholder_hint': 'Saisissez un nom, un bureau ou un service…',
  'widget.dirsearch.theme': 'Thème',
  'widget.dirsearch.keyboard_label': 'Afficher le clavier à l’écran',
  'widget.dirsearch.no_matches': 'Aucun résultat',
  'widget.dirsearch.hint': 'Commencez à taper pour rechercher dans l’annuaire…',
  'widget.field.name': 'Nom du widget',
  'widget.field.format': 'Format',
  'widget.field.format_12h': '12 heures',
  'widget.field.format_24h': '24 heures',
  'widget.field.timezone': 'Fuseau horaire',
  'widget.field.font_size': 'Taille de police',
  'widget.field.font_size_px': 'Taille de police (px)',
  'widget.field.color': 'Couleur',
  'widget.field.background': 'Fond',
  'widget.field.location': 'Emplacement',
  'widget.field.location_placeholder': 'Ville, Région',
  'widget.field.units': 'Unités',
  'widget.field.units_imperial': 'Impérial (°F)',
  'widget.field.units_metric': 'Métrique (°C)',
  'widget.field.feed_url': 'URL du flux',
  'widget.field.scroll_speed_seconds': 'Vitesse de défilement (secondes)',
  'widget.field.max_items': 'Éléments max',
  'widget.field.html_content': 'Contenu HTML',
  'widget.field.css_optional': 'CSS (facultatif)',
  'widget.field.url': 'URL',
  'widget.field.zoom_pct': 'Zoom (%)',
  'widget.field.refresh_interval': 'Intervalle d\'actualisation (secondes, 0 = jamais)',
  'widget.field.platform': 'Plateforme',
  'widget.field.platform_twitter': 'Twitter/X',
  'widget.field.platform_instagram': 'Instagram',
  'widget.field.query': 'Requête',
  'widget.field.query_placeholder': '@compte ou #hashtag',
  'widget.picker.default_title': 'Sélectionner une image',
  'widget.picker.select_logo': 'Sélectionner un logo',
  'widget.picker.select_bg_images': 'Sélectionner des images de fond',
  'widget.picker.search': 'Rechercher des images...',
  'widget.picker.no_matches': 'Aucun résultat.',
  'widget.picker.no_images': 'Aucune image dans votre bibliothèque. Téléversez d\'abord des images depuis la Bibliothèque.',
  'widget.picker.selected_count': '{n} sélectionnées',
  'widget.dir.title_label': 'Titre',
  'widget.dir.title_placeholder': 'Entrepôt Lincoln',
  'widget.dir.logo_label': 'Logo (facultatif)',
  'widget.dir.footer_text_label': 'Texte de pied',
  'widget.dir.footer_placeholder': 'Demandes de location : Contact...',
  'widget.dir.bg_images_label': 'Images de fond (facultatif)',
  'widget.dir.bg_images_hint': 'Les images alternent toutes les 15 secondes à 30 % d\'opacité. Ajoutez-en plusieurs pour la rotation.',
  'widget.dir.add_bg_image': '+ Ajouter une image de fond',
  'widget.dir.theme': 'Thème',
  'widget.dir.theme_dark': 'Sombre',
  'widget.dir.theme_light': 'Clair',
  'widget.dir.scroll_speed': 'Vitesse de défilement',
  'widget.dir.speed_slow': 'Lente',
  'widget.dir.speed_medium': 'Moyenne',
  'widget.dir.speed_fast': 'Rapide',
  'widget.dir.columns': 'Colonnes',
  'widget.dir.columns_auto': 'Auto',
  'widget.dir.categories': 'Catégories',
  'widget.dir.add_category': '+ Ajouter une catégorie',
  'widget.dir.add_entry': '+ Ajouter une entrée',
  'widget.dir.empty_categories': 'Ajoutez votre premier étage ou département pour commencer',
  'widget.dir.no_entries': 'Pas encore d\'entrées',
  'widget.dir.entry': 'entrée',
  'widget.dir.entries': 'entrées',
  'widget.dir.collapse': 'Réduire',
  'widget.dir.expand': 'Développer',
  'widget.dir.move_up': 'Monter',
  'widget.dir.move_down': 'Descendre',
  'widget.dir.delete_category': 'Supprimer la catégorie',
  'widget.dir.delete_entry': 'Supprimer l\'entrée',
  'widget.dir.unnamed': '(sans nom)',
  'widget.dir.confirm_delete_category': 'Supprimer la catégorie « {name} » et toutes ses entrées ?',
  'widget.dir.category_name_placeholder': 'ex. Premier étage',
  'widget.dir.entry_id_placeholder': '101',
  'widget.dir.entry_name_placeholder': 'Nom du locataire',
  'widget.dir.entry_subtitle_placeholder': 'Détails (facultatif)',
  'widget.dir.available': 'Disponible',
  'widget.dir.change': 'Changer',
  'widget.dir.choose_logo': 'Choisir un logo',
  'widget.dir.remove_logo': 'Retirer',
  'widget.dir.no_bg_images': 'Aucune image de fond sélectionnée',
  'widget.dir.remove_bg': 'Retirer',

  // Designer
  'designer.title': 'Concepteur de contenu',
  'designer.subtitle': 'Créez du contenu d\'affichage dynamique',
  'designer.help_tip': 'Créez de l\'affichage personnalisé avec des éléments en direct : horloges, météo, tickers RSS, comptes à rebours, codes QR. Publiez comme widget ou exportez en PNG.',
  'designer.load_design': 'Charger un design',
  'designer.export_png': 'Exporter PNG',
  'designer.publish': 'Publier dans la bibliothèque',
  'designer.preview_hint': 'Cliquez sur les éléments pour les sélectionner. Glissez pour les repositionner. L\'aperçu se met à jour en temps réel.',
  'designer.add_element': 'Ajouter un élément',
  'designer.background': 'Fond',
  'designer.bg_image': 'Image',
  'designer.properties': 'Propriétés',
  'designer.layers': 'Calques',
  'designer.no_elements': 'Pas encore d\'éléments',
  'designer.save_design_file': 'Enregistrer le fichier de design',
  'designer.qr_label': 'CODE QR',
  'designer.loading_news': 'Chargement des actualités...',
  'designer.no_items': 'Aucun élément',
  'designer.feed_unavailable': 'Flux indisponible',
  'designer.countdown_now': 'MAINTENANT !',
  'designer.widget_name': 'Design {date}',
  'designer.el.text': 'Texte',
  'designer.el.heading': 'Titre',
  'designer.el.image': 'Image',
  'designer.el.video': 'Vidéo',
  'designer.el.clock': 'Horloge',
  'designer.el.date': 'Date',
  'designer.el.weather': 'Météo',
  'designer.el.ticker': 'Bandeau',
  'designer.el.shape': 'Forme',
  'designer.el.qr': 'Code QR',
  'designer.el.countdown': 'Compte à rebours',
  'designer.el.webpage': 'Page web',
  'designer.bg.black': 'Noir',
  'designer.bg.dark_blue': 'Bleu sombre',
  'designer.bg.dark_gradient': 'Dégradé sombre',
  'designer.bg.blue_gradient': 'Dégradé bleu',
  'designer.bg.sunset': 'Coucher de soleil',
  'designer.bg.ocean': 'Océan',
  'designer.bg.forest': 'Forêt',
  'designer.bg.dark_red': 'Rouge sombre',
  'designer.bg.white': 'Blanc',
  'designer.default.text': 'Votre texte ici',
  'designer.default.heading': 'TITRE',
  'designer.default.coming_soon': 'Bientôt',
  'designer.prompt.video_url': 'URL de la vidéo (MP4) :',
  'designer.prompt.weather_location': 'Ville, Région :',
  'designer.prompt.rss_url': 'URL du flux RSS :',
  'designer.prompt.qr_url': 'URL du code QR :',
  'designer.prompt.countdown_date': 'Date cible (AAAA-MM-JJ) :',
  'designer.prompt.webpage_url': 'URL de la page web :',
  'designer.prop.text': 'Texte',
  'designer.prop.size': 'Taille',
  'designer.prop.font': 'Police',
  'designer.prop.color': 'Couleur',
  'designer.prop.bold': 'Gras',
  'designer.prop.shadow': 'Ombre',
  'designer.prop.format': 'Format',
  'designer.prop.show_seconds': 'Afficher les secondes',
  'designer.prop.muted': 'Muet',
  'designer.prop.loop': 'Boucle',
  'designer.prop.opacity': 'Opacité',
  'designer.prop.shape': 'Forme',
  'designer.prop.location': 'Emplacement',
  'designer.prop.feed_url': 'URL du flux',
  'designer.prop.speed': 'Vitesse (secondes)',
  'designer.prop.text_color': 'Couleur du texte',
  'designer.prop.bg_color': 'Couleur de fond',
  'designer.prop.target_date': 'Date cible',
  'designer.prop.label': 'Étiquette',
  'designer.toast.published': 'Publié comme widget ! Attribuez-le à une zone de mise en page.',
  'designer.toast.publish_failed': 'Échec de la publication',
  'designer.toast.export_failed': 'Échec de l\'export : {error}',
  'designer.toast.loaded': 'Design chargé',
  'designer.toast.invalid_file': 'Fichier de design invalide',

  // Playlists
  'playlist.title': 'Listes de lecture',
  'playlist.subtitle': 'Créez et gérez des listes de contenu',
  'playlist.show_auto_generated': 'Afficher les listes auto',
  'playlist.new_playlist_btn': '+ Nouvelle liste',
  'playlist.new_playlist': 'Nouvelle liste',
  'playlist.empty_title': 'Pas encore de listes',
  'playlist.empty_desc': 'Créez votre première liste pour organiser le contenu de vos écrans.',
  'playlist.all_auto_generated': 'Toutes les listes sont auto-générées. Cochez « Afficher les listes auto » pour les voir.',
  'playlist.tag_auto': 'auto',
  'playlist.tag_draft': 'brouillon',
  'playlist.item_count_one': '1 élément',
  'playlist.item_count_other': '{n} éléments',
  'playlist.created_at': 'Créée {date}',
  'playlist.display_count_one': '1 écran',
  'playlist.display_count_other': '{n} écrans',
  'playlist.assigned_to_one': 'Attribuée à 1 écran',
  'playlist.assigned_to_other': 'Attribuée à {n} écrans',
  'playlist.load_failed': 'Échec du chargement des listes : {error}',
  'playlist.back_to_playlists': 'Retour aux listes',
  'playlist.name_placeholder': 'Nom de la liste',
  'playlist.desc_placeholder': 'Description (facultatif)',
  'playlist.create_btn': 'Créer',
  'playlist.add_desc_placeholder': 'Ajouter une description...',
  'playlist.click_to_rename': 'Cliquer pour renommer',
  'playlist.click_to_edit_desc': 'Cliquer pour modifier la description',
  'playlist.add_content': '+ Ajouter du contenu',
  'playlist.delete_playlist': 'Supprimer la liste',
  'playlist.back': 'Retour',
  'playlist.items_empty': 'Cette liste est vide',
  'playlist.items_empty_hint': 'Cliquez sur « Ajouter du contenu » pour ajouter des éléments.',
  'playlist.duration': 'Durée',
  'playlist.sec': 'sec',
  'playlist.move_up': 'Monter',
  'playlist.move_down': 'Descendre',
  'playlist.remove_item': 'Retirer l\'élément',
  'playlist.item_widget': 'Widget',
  'playlist.unknown_type': 'Type inconnu',
  'playlist.confirm_delete': 'Supprimer « {name} » ? Cette action est irréversible.',
  'playlist.confirm_discard_draft': 'Annuler toutes les modifications non publiées et revenir à la dernière version publiée ?',
  'playlist.draft.banner_title': 'Modifications non publiées',
  'playlist.draft.devices_showing_published': 'Les appareils affichent encore la dernière version publiée.',
  'playlist.draft.never_published': 'Cette liste n\'a jamais été publiée. Les appareils n\'afficheront rien jusqu\'à publication.',
  'playlist.draft.discard_changes': 'Annuler les modifications',
  'playlist.draft.publish': 'Publier',
  'playlist.draft.publishing': 'Publication...',
  'playlist.preview_prev': 'Précédent',
  'playlist.preview_next': 'Suivant',
  'playlist.preview_position': '{current} sur {total}',
  'playlist.preview_zoned': 'Les zones jouent ensemble',
  'playlist.toast.created': 'Liste créée',
  'playlist.toast.deleted': 'Liste supprimée',
  'playlist.toast.published': 'Liste publiée — appareils mis à jour',
  'playlist.toast.draft_discarded': 'Modifications du brouillon annulées',
  'playlist.toast.item_removed': 'Élément retiré',
  'playlist.add_modal_title': 'Ajouter du contenu à la liste',
  'playlist.tab_content': 'Contenu',
  'playlist.tab_widgets': 'Widgets',
  'playlist.search_placeholder': 'Rechercher...',
  'playlist.close': 'Fermer',
  'playlist.no_content_found': 'Aucun contenu trouvé',
  'playlist.no_widgets_found': 'Aucun widget trouvé',
  'playlist.add_btn': 'Ajouter',
  'playlist.replace_item': 'Remplacer le contenu',
  'playlist.duplicate_item': 'Dupliquer l’élément',
  'playlist.replace_modal_title': 'Remplacer le contenu',
  'playlist.replace_btn': 'Remplacer',
  'playlist.replacing': 'Remplacement…',
  'playlist.toast.item_duplicated': 'Élément dupliqué',
  'playlist.toast.item_replaced': 'Contenu remplacé',
  'playlist.adding': 'Ajout...',
  'playlist.added': 'Ajouté',

  // Per-item schedule editor (#74/#75)
  'itemsched.title': 'Programmation',
  'itemsched.hint': 'Les éléments sans programmation sont toujours diffusés. Ajoutez des blocs pour limiter quand cet élément apparaît — évalué dans l’heure locale de chaque écran.',
  'itemsched.none': 'Aucune programmation — cet élément est toujours diffusé.',
  'itemsched.block': 'Bloc {n}',
  'itemsched.remove_block': 'Supprimer le bloc',
  'itemsched.from': 'De',
  'itemsched.to': 'À',
  'itemsched.end_of_day': 'fin de journée',
  'itemsched.starts': 'Début',
  'itemsched.ends': 'Fin',
  'itemsched.dates_hint': '(dates facultatives, incluses)',
  'itemsched.add_block': '+ Ajouter un bloc de programmation',
  'itemsched.cancel': 'Annuler',
  'itemsched.save': 'Enregistrer la programmation',
  'itemsched.toast.saved': 'Programmation enregistrée — publiez la playlist pour l’envoyer aux appareils',
  'itemsched.toast.cleared': 'Programmation effacée — publiez pour mettre à jour les appareils',
  'itemsched.every_day': 'Tous les jours',
  'itemsched.mon_fri': 'Lun-Ven',
  'itemsched.sat_sun': 'Sam-Dim',
  'itemsched.dow_short': 'Dim,Lun,Mar,Mer,Jeu,Ven,Sam',
  'itemsched.err.days': 'Chaque bloc de programmation nécessite au moins un jour actif',
  'itemsched.err.start': 'L’heure de début doit être HH:MM',
  'itemsched.err.end': 'L’heure de fin doit être HH:MM (ou fin de journée)',
  'itemsched.err.start_date': 'La date de début doit être AAAA-MM-JJ',
  'itemsched.err.end_date': 'La date de fin doit être AAAA-MM-JJ',
  'device.clock.label': 'Horloge de l’appareil',
  'device.clock.reported': '{time} signalé',
  'device.clock.skew': '⚠ horloge décalée de {amount} — les programmations peuvent se déclencher à la mauvaise heure locale',

  // Onboarding
  'onboarding.back': 'Retour',
  'onboarding.next': 'Suivant',
  'onboarding.skip': 'Ignorer l\'assistant',
  'onboarding.go_to_dashboard': 'Aller au tableau de bord',
  'onboarding.pair_display': 'Apparier l\'écran',
  'onboarding.step.welcome.title': 'Bienvenue sur ScreenTinker !',
  'onboarding.step.welcome.intro': 'Configurons tout en moins de 5 minutes.',
  'onboarding.step.welcome.guide_through': 'Cet assistant vous guidera à travers :',
  'onboarding.step.welcome.bullet_download': 'Télécharger l\'app du lecteur',
  'onboarding.step.welcome.bullet_pair': 'Apparier votre premier écran',
  'onboarding.step.welcome.bullet_upload': 'Téléverser et attribuer du contenu',
  'onboarding.step.player.title': 'Étape 1 : Obtenez l\'app du lecteur',
  'onboarding.step.player.intro': 'Installez le lecteur sur votre appareil d\'affichage.',
  'onboarding.step.player.android_label': 'APK Android',
  'onboarding.step.player.android_desc': 'Boîtiers TV, tablettes, Fire TV',
  'onboarding.step.player.web_label': 'Lecteur web',
  'onboarding.step.player.web_desc': 'Tout navigateur, Pi, ChromeOS',
  'onboarding.step.player.url_hint': 'Ouvrez l\'app sur votre écran et saisissez cette URL du serveur :',
  'onboarding.step.pair.title': 'Étape 2 : Appariez votre écran',
  'onboarding.step.pair.intro': 'Saisissez le code à 6 chiffres affiché sur votre écran.',
  'onboarding.step.pair.name_placeholder': 'Nom (ex. TV du hall)',
  'onboarding.step.upload.title': 'Étape 3 : Téléversez du contenu',
  'onboarding.step.upload.intro': 'Téléversez une vidéo ou une image à afficher.',
  'onboarding.step.upload.click_to_select': 'Cliquez pour sélectionner un fichier',
  'onboarding.step.upload.formats': 'MP4, WebM, JPEG, PNG, GIF',
  'onboarding.step.upload.uploading': 'Téléversement...',
  'onboarding.step.done.title': 'Tout est prêt !',
  'onboarding.step.done.intro': 'Votre écran est apparié et le contenu est en lecture !',
  'onboarding.step.done.whats_next': 'Et après ?',
  'onboarding.step.done.next_content': 'Ajoutez plus de contenu dans la <strong>Bibliothèque</strong>',
  'onboarding.step.done.next_layouts': 'Créez des mises en page multi-zones dans <strong>Mises en page</strong>',
  'onboarding.step.done.next_schedule': 'Configurez un calendrier dans <strong>Calendrier</strong>',
  'onboarding.step.done.next_widgets': 'Ajoutez des widgets en direct (horloge, météo, ticker) dans <strong>Widgets</strong>',
  'onboarding.step.done.next_kiosk': 'Créez des écrans interactifs dans <strong>Kiosque</strong>',
  'onboarding.step.done.next_designer': 'Concevez du contenu personnalisé dans le <strong>Concepteur</strong>',
  'onboarding.toast.invalid_code': 'Saisissez un code valide à 6 chiffres',
  'onboarding.toast.pairing': 'Appairage...',
  'onboarding.toast.pair_failed': 'Échec de l\'appairage',
  'onboarding.toast.pair_failed_with_error': 'Échec de l\'appairage : {error}',
  'onboarding.toast.paired': 'Écran apparié !',
  'onboarding.toast.uploaded_assigning': 'Téléversé ! Attribution à l\'écran...',
  'onboarding.toast.content_assigned': 'Contenu téléversé et attribué !',
  'onboarding.toast.upload_failed': 'Échec du téléversement',
  'onboarding.toast.error_with_error': 'Erreur : {error}',

  // Admin
  'admin.title': 'Administration de la plateforme',
  'admin.subtitle': 'Contrôles superadmin - vous seul pouvez voir ceci',
  'admin.access_denied': 'Accès refusé',
  'admin.access_denied_desc': 'Accès administrateur plateforme requis.',
  'admin.all_users': 'Tous les utilisateurs',
  'admin.plans': 'Plans d\'abonnement',
  'admin.col.accounts': 'Comptes',
  'admin.col.screens': 'Écrans',
  'admin.plan_hidden': 'masqué',
  'admin.plan_orphaned': "Comptes sur un forfait qui n'existe plus",
  'admin.system': 'Système',
  'admin.col.user': 'Utilisateur',
  'admin.col.auth': 'Auth',
  'admin.col.last_login': 'Dernière connexion',
  'admin.col.role': 'Rôle',
  'admin.col.plan': 'Plan',
  'admin.col.actions': 'Actions',
  'admin.col.devices': 'Appareils',
  'admin.col.storage': 'Stockage',
  'admin.col.monthly': 'Mensuel',
  'admin.col.yearly': 'Annuel',
  'admin.role.user': 'Utilisateur',
  'admin.role.admin': 'Admin',
  'admin.role.superadmin': 'Superadmin',
  'admin.remove': 'Retirer',
  'admin.owner': 'Propriétaire',
  'admin.confirm': 'Confirmer ?',
  'admin.total_users': '{n} utilisateurs au total',
  'admin.unlimited': 'Illimité',
  'admin.free': 'Gratuit',
  'admin.version': 'Version',
  'admin.frontend_hash': 'Hash du frontend',
  'admin.download_db_backup': 'Télécharger la sauvegarde BDD',
  'admin.server_status': 'État du serveur',
  'admin.toast.role_updated': 'Rôle mis à jour',
  'admin.toast.plan_updated': 'Plan mis à jour',
  'admin.toast.user_removed': 'Utilisateur retiré',
  'admin.reset_password': 'Réinitialiser le mot de passe',
  'admin.prompt_reset_password': 'Saisissez un nouveau mot de passe pour {email} (8 caractères minimum) :',
  'admin.toast.password_min_8': 'Le mot de passe doit comporter au moins 8 caractères',
  'admin.toast.password_reset': 'Mot de passe réinitialisé',

  // Schedule
  'schedule.title': 'Calendrier',
  'schedule.subtitle': 'Calendrier de programmation du contenu',
  'schedule.help_tip': 'Calendrier hebdomadaire. Faites glisser sur une plage horaire pour créer une programmation, déplacez un bloc pour le décaler, tirez son bord inférieur pour changer sa fin, ou faites un clic droit pour plus d\'options. La priorité la plus élevée l\'emporte, et la programmation propre à un écran remplace celle de son groupe.',
  'schedule.prev_week': '< Préc',
  'schedule.next_week': 'Suiv >',
  'schedule.add_schedule': 'Ajouter une plage',
  'schedule.edit_schedule': 'Modifier la plage',
  'schedule.apply_to': 'Appliquer à',
  'schedule.target_device': 'Appareil',
  'schedule.target_group': 'Groupe',
  'schedule.group_devices_count': '{n} appareils',
  'schedule.no_groups_msg': 'Aucun groupe créé. Créez-en sur la page Écrans.',
  'schedule.zone_note': 'Note : les plages par zone dépendent de la mise en page. Assurez-vous que tous les appareils du groupe utilisent la même.',
  'schedule.playlist_override': 'Liste prioritaire',
  'schedule.no_playlist_override': '— Pas de liste prioritaire —',
  'schedule.draft_suffix': '(brouillon)',
  'schedule.layout_override': 'Mise en page prioritaire',
  'schedule.no_layout_override': '— Pas de mise en page prioritaire —',
  'schedule.content_label': 'Contenu',
  'schedule.content_hint': '(élément unique, facultatif)',
  'schedule.content_none': '— Aucun —',
  'schedule.title_label': 'Titre (facultatif)',
  'schedule.title_placeholder': 'ex. Liste matin',
  'schedule.start_time': 'Début',
  'schedule.end_time': 'Fin',
  'schedule.repeat': 'Répéter',
  'schedule.repeat_none': 'Ne pas répéter',
  'schedule.repeat_daily': 'Quotidien',
  'schedule.repeat_weekdays': 'Jours ouvrables',
  'schedule.repeat_weekends': 'Week-ends',
  'schedule.repeat_weekly': 'Hebdomadaire',
  'schedule.priority': 'Priorité',
  'schedule.color': 'Couleur',
  'schedule.scheduled_label': 'Programmé',
  'schedule.tooltip_group_prefix': 'Groupe : ',
  'schedule.tooltip_priority': 'Priorité : {n}',
  'schedule.day.sun': 'Dim',
  'schedule.day.mon': 'Lun',
  'schedule.day.tue': 'Mar',
  'schedule.day.wed': 'Mer',
  'schedule.day.thu': 'Jeu',
  'schedule.day.fri': 'Ven',
  'schedule.day.sat': 'Sam',
  'schedule.hour_12am': '00h',
  'schedule.hour_am': 'h',
  'schedule.hour_12pm': '12h',
  'schedule.hour_pm': 'h',
  'schedule.toast.no_groups': 'Aucun groupe disponible. Créez-en un d\'abord.',
  'schedule.toast.saved': 'Plage enregistrée',

  // Reports
  'report.title': 'Rapports',
  'report.subtitle': 'Analyses de lecture et disponibilité des appareils',
  'report.help_tip': 'Analyses de lecture. Voyez ce qui a été lu, quand et sur quel appareil. Filtrez par période et appareil. Export CSV pour vérification.',
  'report.export_csv': 'Exporter CSV',
  'report.device': 'Appareil',
  'report.all_devices': 'Tous les appareils',
  'report.start_date': 'Date de début',
  'report.end_date': 'Date de fin',
  'report.load_report': 'Charger le rapport',
  'report.select_range': 'Sélectionnez une période et cliquez sur Charger le rapport',
  'report.error': 'Erreur',
  'report.total_plays': 'Lectures totales',
  'report.total_hours': 'Heures totales',
  'report.unique_content': 'Contenu unique',
  'report.active_devices': 'Appareils actifs',
  'report.avg_duration': 'Durée moyenne',
  'report.plays_per_day': 'Lectures par jour',
  'report.plays_by_hour': 'Lectures par heure',
  'report.top_content': 'Contenu le plus lu',
  'report.by_device': 'Par appareil',
  'report.no_data': 'Aucune donnée',
  'report.col.content': 'Contenu',
  'report.col.device': 'Appareil',
  'report.col.plays': 'Lectures',
  'report.col.total_hours': 'Heures totales',
  'report.col.completion': 'Achèvement',

  // Kiosk
  'kiosk.title': 'Pages kiosque',
  'kiosk.subtitle': 'Créez des interfaces tactiles interactives',
  'kiosk.help_tip': 'Créez des interfaces tactiles interactives. Ajoutez des boutons avec icônes et actions. Inclut un écran d\'attente après inactivité. Attribuez aux appareils comme widget.',
  'kiosk.new_page': 'Nouvelle page kiosque',
  'kiosk.prompt_name': 'Nom de la page kiosque :',
  'kiosk.empty_title': 'Aucune page kiosque',
  'kiosk.empty_desc': 'Créez une interface tactile interactive pour vos écrans.',
  'kiosk.label': 'Page kiosque',
  'kiosk.preview': 'Aperçu',
  'kiosk.confirm_delete': 'Supprimer la page « {name} » ? Cette action est irréversible.',
  'kiosk.toast.deleted': 'Page supprimée',
  'kiosk.toast.delete_failed': 'Échec de la suppression',
  'kiosk.toast.saved': 'Page enregistrée',
  'kiosk.not_found': 'Page introuvable',
  'kiosk.back': 'Retour aux pages',
  'kiosk.page_settings': 'Paramètres de la page',
  'kiosk.title_label': 'Titre',
  'kiosk.subtitle_label': 'Sous-titre',
  'kiosk.logo_url': 'URL du logo',
  'kiosk.footer_text': 'Texte de pied',
  'kiosk.idle_title': 'Titre écran d\'attente',
  'kiosk.idle_default': 'Touchez pour commencer',
  'kiosk.idle_timeout': 'Délai d\'inactivité (secondes)',
  'kiosk.style': 'Style',
  'kiosk.background': 'Fond',
  'kiosk.text_color': 'Couleur du texte',
  'kiosk.columns': 'Colonnes',
  'kiosk.button_color': 'Couleur des boutons',
  'kiosk.button_hover': 'Couleur survol',
  'kiosk.buttons': 'Boutons',
  'kiosk.add_btn': '+ Ajouter',
  'kiosk.icon_placeholder': 'Emoji',
  'kiosk.label_placeholder': 'Étiquette',
  'kiosk.sublabel_placeholder': 'Sous-étiquette',
  'kiosk.action_none': 'Aucune action',
  'kiosk.action_url': 'Ouvrir l\'URL',
  'kiosk.action_page': 'Aller à la page',
  'kiosk.url_placeholder': 'URL ou page',
  'kiosk.no_buttons': 'Aucun bouton',
  'kiosk.new_button': 'Nouveau bouton',

  // Layout editor
  'layout.title': 'Mises en page',
  'layout.subtitle': 'Mises en page d\'écran et modèles',
  'layout.help_tip': 'Créez des mises en page multi-zones. Utilisez des modèles ou créez les vôtres. Glissez les zones pour positionner, redimensionnez avec la poignée. Attribuez les mises en page aux appareils depuis l\'onglet Liste.',
  'layout.new_layout': 'Nouvelle mise en page',
  'layout.templates': 'Modèles',
  'layout.my_layouts': 'Mes mises en page',
  'layout.empty_custom': 'Aucune mise en page personnalisée',
  'layout.prompt_name': 'Nom de la mise en page :',
  'layout.default_zone_name': 'Principal',
  'layout.template_label': 'Modèle',
  'layout.use_template': 'Utiliser le modèle',
  'layout.zone_count_one': '1 zone',
  'layout.zone_count_other': '{n} zones',
  'layout.confirm_delete': 'Supprimer la mise en page « {name} » ? Cette action est irréversible.',
  'layout.toast.deleted': 'Mise en page supprimée',
  'layout.toast.delete_failed': 'Échec de la suppression',
  'layout.toast.saved': 'Mise en page enregistrée',
  'layout.not_found': 'Mise en page introuvable',
  'layout.back': 'Retour aux mises en page',
  'layout.add_zone': 'Ajouter une zone',
  'layout.zones': 'Zones',
  'layout.properties': 'Propriétés',
  'layout.delete_zone': 'Supprimer la zone',
  'layout.zone_n': 'Zone {n}',
  'layout.prop.name': 'Nom',
  'layout.prop.x': 'X (%)',
  'layout.prop.y': 'Y (%)',
  'layout.prop.width': 'Largeur (%)',
  'layout.prop.height': 'Hauteur (%)',
  'layout.prop.type': 'Type',
  'layout.type_content': 'Contenu',
  'layout.type_widget': 'Widget',

  // Video walls
  'wall.title': 'Murs vidéo',
  'wall.subtitle': 'Combinez plusieurs écrans en un seul grand',
  'wall.help_tip': 'Combinez plusieurs écrans en un seul grand. Définissez la grille, glissez les appareils, ajustez la compensation de cadre. Attribuez du contenu pour la lecture sur tous les appareils.',
  'wall.new_wall': 'Nouveau mur vidéo',
  'wall.prompt_name': 'Nom du mur vidéo :',
  'wall.empty_title': 'Aucun mur vidéo',
  'wall.empty_desc': 'Créez un mur vidéo pour combiner plusieurs écrans.',
  'wall.grid_summary': 'Grille {cols}x{rows} • {n} appareils',
  'wall.not_found': 'Mur introuvable',
  'wall.back': 'Retour aux murs',
  'wall.delete_wall': 'Supprimer le mur',
  'wall.grid_config': 'Configuration de la grille',
  'wall.columns': 'Colonnes',
  'wall.rows': 'Lignes',
  'wall.h_bezel': 'Cadre H (px)',
  'wall.v_bezel': 'Cadre V (px)',
  'wall.update': 'Mettre à jour',
  'wall.content': 'Contenu',
  'wall.no_content': 'Aucun contenu',
  'wall.set_content': 'Définir le contenu',
  'wall.available_displays': 'Écrans disponibles',
  'wall.all_assigned': 'Tous les appareils attribués',
  'wall.drop_here': 'Déposer ici',
  'wall.toast.placed': '{name} placé en [{col},{row}]',
  'wall.toast.grid_updated': 'Grille mise à jour',
  'wall.toast.content_updated': 'Contenu mis à jour',
  'wall.toast.deleted': 'Mur supprimé',

  // Billing
  'billing.title': 'Abonnement',
  'billing.subtitle': 'Gérez votre plan et votre facturation',
  'billing.current_plan': 'Plan actuel',
  'billing.self_hosted': 'Auto-hébergé',
  'billing.trial_days_left': 'Essai - {n} jours restants',
  'billing.trial_ends': 'Votre essai {plan} se termine dans {n} jours',
  'billing.trial_after': 'Après l\'essai, vous passerez au plan Gratuit (1 appareil). Mettez à niveau maintenant pour conserver vos appareils et fonctionnalités.',
  'billing.devices': 'Appareils',
  'billing.devices_lc': 'appareils',
  'billing.storage': 'Stockage',
  'billing.storage_lc': 'stockage',
  'billing.features': 'Fonctionnalités',
  'billing.feat.remote_control': 'Contrôle à distance',
  'billing.feat.remote_urls': 'URLs distantes',
  'billing.feat.priority_support': 'Support prioritaire',
  'billing.available_plans': 'Plans disponibles',
  'billing.current': 'Actuel',
  'billing.unlimited': 'Illimité',
  'billing.free': 'Gratuit',
  'billing.per_month': '/mois',
  'billing.yearly_save': 'ou {price} $/an (économisez {pct} %)',
  'billing.monthly': 'Mensuel',
  'billing.yearly': 'Annuel',
  'billing.manage_subscription': 'Gérer l\'abonnement',
  'billing.self_hosted_note': 'Mode auto-hébergé : les plans peuvent être attribués par les administrateurs sans facturation.',
  'billing.failed_to_load': 'Échec du chargement',
  'billing.toast.checkout_failed': 'Échec du paiement : {error}',
  'billing.toast.portal_failed': 'Échec d\'ouverture du portail : {error}',
  'billing.toast.payment_success': 'Paiement réussi ! Votre plan a été mis à niveau.',

  // Teams
  'team.title': 'Équipes',
  'team.subtitle': 'Gérez les équipes et l\'accès partagé',
  'team.help_tip': 'Créez des équipes pour partager des appareils. Les propriétaires gèrent l\'équipe, les éditeurs modifient le contenu/listes, les spectateurs ne font que surveiller.',
  'team.new_team': 'Nouvelle équipe',
  'team.prompt_name': 'Nom de l\'équipe :',
  'team.empty_title': 'Aucune équipe',
  'team.empty_desc': 'Créez une équipe pour partager des appareils avec d\'autres utilisateurs.',
  'team.your_role': 'Votre rôle : {role}',
  'team.member_count_one': '1 membre',
  'team.member_count_other': '{n} membres',
  'team.not_found': 'Équipe introuvable',
  'team.back': 'Retour aux équipes',
  'team.delete_team': 'Supprimer l\'équipe',
  'team.members_count': 'Membres ({n})',
  'team.invite': '+ Inviter',
  'team.role_viewer': 'Spectateur',
  'team.role_editor': 'Éditeur',
  'team.role_owner': 'Propriétaire',
  'team.remove': 'Retirer',
  'team.remove_from_team': 'Retirer de l\'équipe',
  'team.no_members': 'Aucun membre',
  'team.shared_devices': 'Appareils partagés ({n})',
  'team.add_device': '+ Ajouter un appareil...',
  'team.no_devices': 'Aucun appareil partagé avec cette équipe',
  'team.prompt_email': 'E-mail à inviter :',
  'team.prompt_role': 'Rôle (viewer, editor ou owner) :',
  'team.toast.invalid_role': 'Rôle invalide',
  'team.toast.invitation_sent': 'Invitation envoyée',
  'team.toast.role_updated': 'Rôle mis à jour',
  'team.toast.member_removed': 'Membre retiré',
  'team.toast.device_added': 'Appareil ajouté à l\'équipe',
  'team.toast.device_removed': 'Appareil retiré de l\'équipe',
  'team.toast.deleted': 'Équipe supprimée',

  // Activity
  'activity.title': 'Journal d\'activité',
  'activity.subtitle': 'Audit de toutes les actions',
  'activity.load_more': 'Charger plus',
  'activity.empty_title': 'Aucune activité',
  'activity.empty_desc': 'Les actions apparaîtront ici au fur et à mesure de votre utilisation.',
  'activity.system': 'Système',
  'activity.verb_created': 'a créé',
  'activity.verb_updated': 'a mis à jour',
  'activity.verb_deleted': 'a supprimé',
  'activity.action_paired_device': 'a apparié un appareil',
  'activity.action_added_remote_content': 'a ajouté du contenu distant',
  'activity.noun_content': 'contenu',
  'activity.noun_device': 'appareil',
  'activity.noun_playlist_assignment': 'attribution de liste',
  'activity.noun_assignment': 'attribution',
  'activity.noun_layout': 'mise en page',
  'activity.noun_widget': 'widget',
  'activity.noun_schedule': 'plage horaire',
  'activity.noun_video_wall': 'mur vidéo',
  'activity.alert_device_offline': 'alerte : appareil hors ligne',

  // Help
  'help.title': 'Centre d\'aide',
  'help.subtitle': 'Guides rapides et FAQ',
  'help.faq': 'Questions fréquentes',
  'help.shortcuts': 'Raccourcis clavier',
  'help.shortcut_esc': 'Réinitialiser le lecteur web (sur la page du lecteur)',
  'help.shortcut_f': 'Basculer le plein écran (lecteur web)',

  // Add Display modal
  'add_display.title': 'Ajouter un écran',
  'add_display.intro': 'Saisissez le code d\'appairage à 6 chiffres affiché sur l\'écran.',
  'add_display.pairing_code': 'Code d\'appairage',
  'add_display.display_name': 'Nom (facultatif)',
  'add_display.name_placeholder': 'ex. TV du hall',
  'add_display.need_player': 'Besoin d\'une app de lecture ? Installez-en une pour obtenir un code :',
  'add_display.android_apk': 'APK Android',
  'add_display.web_player': 'Lecteur web',
  'add_display.raspberry_pi': 'Raspberry Pi',
  'add_display.windows': 'Windows',
  'add_display.smart_tv_note': 'Smart TVs (LG/Samsung) : ouvrez le navigateur intégré et allez à <code style="background:var(--bg-input,#0f172a);padding:1px 4px;border-radius:3px">/player</code>',
  'add_display.pair_btn': 'Apparier l\'écran',
};
