@rebasepro/app 0.25.0 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/RlsSimulatorPanel-DOfmVgM3.js +403 -0
- package/dist/RlsSimulatorPanel-DOfmVgM3.js.map +1 -0
- package/dist/collections/form-layout.d.ts +30 -27
- package/dist/components/LanguageToggle.d.ts +9 -0
- package/dist/components/LoginView/index.d.ts +7 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/studio/RlsSimulatorBar.d.ts +39 -0
- package/dist/components/studio/RlsSimulatorPanel.d.ts +29 -0
- package/dist/contexts/RlsSimulationContext.d.ts +47 -0
- package/dist/contexts/index.d.ts +1 -0
- package/dist/core/effective_role_state.d.ts +9 -0
- package/dist/{de-BMgOgwue.js → de-3yzzpuZj.js} +175 -1
- package/dist/de-3yzzpuZj.js.map +1 -0
- package/dist/debug.js +96 -46
- package/dist/{es-DSOOSgPW.js → es-mnyTaRkK.js} +175 -1
- package/dist/es-mnyTaRkK.js.map +1 -0
- package/dist/{fr-CnXidmZf.js → fr-nJHADzlI.js} +175 -1
- package/dist/fr-nJHADzlI.js.map +1 -0
- package/dist/{hi-lTvNsFMr.js → hi-B9_iunnL.js} +175 -1
- package/dist/hi-B9_iunnL.js.map +1 -0
- package/dist/hooks/useBuildEffectiveRoleController.d.ts +9 -3
- package/dist/hooks/usePermissions.d.ts +4 -0
- package/dist/hooks/useUnsavedChangesDialog.d.ts +7 -1
- package/dist/i18n/RebaseI18nProvider.d.ts +11 -0
- package/dist/index.es.js +2814 -2555
- package/dist/index.es.js.map +1 -1
- package/dist/{it-BoT_vBlx.js → it-DoEtz-OK.js} +175 -1
- package/dist/it-DoEtz-OK.js.map +1 -0
- package/dist/{pt-D9mSchbY.js → pt-DT26AmBU.js} +175 -1
- package/dist/pt-DT26AmBU.js.map +1 -0
- package/package.json +7 -7
- package/dist/de-BMgOgwue.js.map +0 -1
- package/dist/es-DSOOSgPW.js.map +0 -1
- package/dist/fr-CnXidmZf.js.map +0 -1
- package/dist/hi-lTvNsFMr.js.map +0 -1
- package/dist/it-BoT_vBlx.js.map +0 -1
- package/dist/pt-D9mSchbY.js.map +0 -1
package/dist/fr-CnXidmZf.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fr-CnXidmZf.js","names":[],"sources":["../src/locales/fr.ts"],"sourcesContent":["import { RebaseTranslations } from \"@rebasepro/cms-types\";\n\nexport const fr: RebaseTranslations = {\n // ─── Form actions ────────────────────────────────────────────\n save: \"Enregistrer\",\n create: \"Créer\",\n create_copy: \"Créer une copie\",\n save_and_close: \"Enregistrer et fermer\",\n create_copy_and_close: \"Créer une copie et fermer\",\n create_and_close: \"Créer et fermer\",\n discard: \"Ignorer\",\n clear: \"Effacer\",\n cancel: \"Annuler\",\n\n // ─── Entity actions ──────────────────────────────────────────\n edit: \"Modifier\",\n copy: \"Copier\",\n delete: \"Supprimer\",\n delete_not_allowed: \"Vous avez sélectionné au moins une entité que vous ne pouvez pas supprimer\",\n edit_entity: \"Modifier\",\n back_to_detail: \"Retour aux détails\",\n\n // ─── Delete dialog ───────────────────────────────────────────\n delete_confirmation_title: \"Supprimer ?\",\n delete_confirmation_body: \"Cela supprimera l'entité. Êtes-vous sûr ?\",\n delete_multiple_confirmation_body: \"Cela supprimera les entités sélectionnées. Êtes-vous sûr ?\",\n\n // ─── Unsaved-changes dialog ───────────────────────────────────\n unsaved_changes_title: \"Modifications non enregistrées\",\n unsaved_changes_body: \"Vous avez des modifications non enregistrées. Voulez-vous les ignorer ?\",\n discard_changes: \"Ignorer les modifications\",\n keep_editing: \"Continuer l'édition\",\n clear_form: \"Vider le formulaire ?\",\n discard_changes_confirmation: \"Toutes les modifications non enregistrées seront perdues. Cette action est irréversible.\",\n clear_form_confirmation: \"Toutes les valeurs saisies seront effacées. Cette action est irréversible.\",\n\n // ─── Collection table / toolbar ──────────────────────────────\n search: \"Rechercher\",\n find_by_id: \"Rechercher par ID\",\n find_entity_by_id: \"Rechercher l'entité par ID\",\n filter: \"Filtrer\",\n filters: \"Filtres\",\n records_in_view: \"Enregistrements dans cette vue\",\n clear_filter: \"Effacer le filtre\",\n clear_filter_sort: \"Effacer le filtre/tri\",\n clear_sort: \"Effacer le tri\",\n sort: \"Trier\",\n sort_by: \"Trier par\",\n sort_then_by: \"Puis par\",\n sort_ascending: \"Trier par ordre croissant\",\n sort_descending: \"Trier par ordre décroissant\",\n sort_remove: \"Supprimer le tri\",\n sort_move_up: \"Rendre cette clé plus importante\",\n sort_move_down: \"Rendre cette clé moins importante\",\n sort_remove_key: \"Supprimer cette clé de tri\",\n sort_key_position: \"Clé de tri {{position}}\",\n sort_shift_click_hint: \"Maj+clic pour ajouter une colonne sous le tri actuel\",\n save_entity_before_subcollections: \"Enregistrez cet enregistrement avant d'y ajouter des enregistrements liés.\",\n clear_all: \"Tout effacer\",\n no_items: \"Aucun élément\",\n no_entries_found: \"Aucune entrée trouvée\",\n all_entries_loaded: \"Toutes les {{count}} entrées chargées\",\n error_loading_data_message: \"Erreur lors du chargement des données : {{message}}\",\n clear_search: \"Effacer la recherche\",\n open_time_picker: \"Ouvrir le sélecteur d'heure\",\n relative_just_now: \"à l'instant\",\n relative_in_a_moment: \"dans un instant\",\n relative_minutes_ago: \"il y a {{count}} min\",\n relative_in_minutes: \"dans {{count}} min\",\n relative_hours_ago: \"il y a {{count}} h\",\n relative_in_hours: \"dans {{count}} h\",\n relative_days_ago: \"il y a {{count}} j\",\n relative_in_days: \"dans {{count}} j\",\n create_your_first_entry: \"Créez votre première entrée\",\n no_results_filter_sort: \"Aucun résultat avec le filtre/tri appliqué\",\n no_results_filter: \"Aucun résultat avec les filtres appliqués\",\n no_results_search: \"Aucun résultat trouvé pour \\\"{{search}}\\\"\",\n add: \"Ajouter\",\n remove: \"Supprimer\",\n multiple_entities: \"Entités multiples\",\n unsaved_changes: \"Vous avez des modifications non enregistrées dans {{collectionName}}.\",\n so_empty: \"C'est bien vide...\",\n no_results: \"Aucun résultat avec le filtre/tri appliqué\",\n refresh_data: \"Actualiser les données\",\n dark_mode: \"Sombre\",\n light_mode: \"Clair\",\n system_mode: \"Système\",\n join_newsletter: \"Rejoignez la newsletter, pas de spam\",\n ok: \"Ok\",\n save_collection_config: \"Enregistrer la structure de la collection\",\n search_for_more_icons: \"Rechercher d'autres icônes…\",\n ai_modified: \"Modifié par l'IA\",\n size_label: \"Taille\",\n group_by: \"Grouper par\",\n initialize_kanban_order: \"Initialiser l'ordre Kanban\",\n copy_id: \"Copier l'ID\",\n add_specific: \"Ajouter {{name}}\",\n add_named: \"Ajouter « {{name}} »\",\n select_specific: \"Sélectionner {{name}}\",\n select_from: \"Sélectionner depuis {{name}}\",\n done: \"Terminé\",\n log_out: \"Se déconnecter\",\n column_cannot_be_edited: \"Cette colonne ne peut pas être modifiée directement\",\n close: \"Fermer\",\n hide_list: \"Masquer la liste\",\n show_list: \"Afficher la liste\",\n unsaved_local_changes: \"Modifications locales non enregistrées\",\n unsaved_local_changes_description: \"Ce document a été modifié localement et contient des modifications non enregistrées. Ces modifications locales seront perdues si vous ne les appliquez pas.\",\n preview_changes: \"Aperçu des modifications\",\n apply_changes: \"Appliquer les modifications\",\n discard_local_changes: \"Ignorer les modifications locales\",\n preview_local_changes: \"Aperçu des modifications locales\",\n preview_local_changes_description: \"Voici les modifications locales qui seront appliquées au formulaire.\",\n type: \"Type\",\n string: \"chaîne de caractères\",\n number: \"nombre\",\n boolean: \"booléen\",\n date: \"date\",\n map: \"carte (map)\",\n array: \"tableau\",\n arrays_of_arrays_not_supported: \"Les tableaux de tableaux ne sont pas pris en charge.\",\n data_type_not_supported: \"Type de données {{dataType}} non pris en charge pour le moment\",\n passkey_error_unsupported: \"Votre appareil ou navigateur ne prend pas en charge les passkeys.\",\n\n // ─── Entity form feedback ─────────────────────────────────────\n saved_correctly: \"Enregistré avec succès\",\n error_before_saving: \"Erreur lors de la préparation des données\",\n error_after_saving: \"Erreur dans le traitement post-sauvegarde\",\n error_saving_entity: \"Erreur lors de l'enregistrement de l'entité\",\n error_record_changed_elsewhere: \"Cet enregistrement a été modifié depuis que vous l'avez ouvert. Vos modifications sont conservées : vérifiez les champs marqués comme mis à jour ailleurs, puis enregistrez à nouveau.\",\n entity_does_not_exist: \"Cette entité n'existe pas dans la base de données\",\n form_modified: \"Ce formulaire a été modifié\",\n form_in_sync: \"Le formulaire actuel est synchronisé avec la base de données\",\n fix_errors_before_saving: \"Corrigez les erreurs signalées avant d'enregistrer\",\n form_predating_rule_violations: \"Certains champs que vous n'avez pas modifiés ne respectent pas leurs règles actuelles. Ils n'empêchent pas l'enregistrement :\",\n\n admin: \"Admin\",\n home: \"Accueil\",\n this_form_has_errors: \"Ce formulaire contient des erreurs\",\n error_loading_navigation: \"Erreur lors du chargement de la navigation\",\n error_loading_auth: \"Erreur lors du chargement de l'authentification\",\n this_form_has_been_modified: \"Ce formulaire a été modifié\",\n current_form_in_sync: \"Le formulaire actuel est synchronisé avec la base de données\",\n open_in_console: \"Ouvrir dans la console\",\n collection_does_not_exist: \"La collection spécifiée n'existe pas. Vérifiez la console\",\n unexpected_value: \"Valeur inattendue\",\n unexpected_value_click_to_edit: \"Valeur inattendue. Cliquez pour modifier\",\n unexpected_reference_value: \"Valeur de référence inattendue. Cliquez pour modifier\",\n copy_url_to_clipboard: \"Copier l'URL dans le presse-papiers\",\n open_image_in_new_tab: \"Ouvrir l'image dans un nouvel onglet\",\n reference_not_set: \"Référence non définie\",\n reference_does_not_exist: \"La référence n'existe pas\",\n entity_not_found: \"Entité non trouvée\",\n entity_not_found_body: \"Cet enregistrement n'existe pas, ou il vous est masqué par la sécurité au niveau des lignes.\",\n collection_not_found: \"Collection introuvable\",\n collection_not_found_body: \"Rien n'est enregistré pour \\\"{{path}}\\\".\",\n collection_not_found_hint: \"L'URL nomme une collection que le panneau ne connaît pas. Elle a peut-être été renommée ou retirée du tableau des collections, ou le slug ne correspond pas au chemin.\",\n back_to_collection: \"Retour à {{name}}\",\n file_not_found: \"Fichier non trouvé\",\n unsaved_changes_in_entity: \"Vous avez des modifications non enregistrées dans cette entité.\",\n delete_this_role: \"Supprimer ce rôle\",\n no_roles_yet: \"Vous n'avez pas encore de rôles.\",\n create_default_roles: \"Créer les rôles par défaut\",\n delete_role_confirmation: \"Êtes-vous sûr de vouloir supprimer ce rôle ?\",\n delete_this_user: \"Supprimer cet utilisateur\",\n no_users_yet: \"Il n'y a pas encore d'utilisateurs\",\n add_logged_user_as_admin: \"Ajouter l'utilisateur connecté en tant qu'administrateur\",\n add_current_user_as_admin: \"Ajouter l'utilisateur actuel en tant qu'administrateur\",\n create_default_roles_and_add_admin: \"Créer les rôles par défaut et ajouter l'utilisateur actuel en tant qu'administrateur\",\n delete_user_confirmation: \"Êtes-vous sûr de vouloir supprimer cet utilisateur ?\",\n create_your_users_and_roles: \"Créez vos utilisateurs et rôles\",\n no_users_or_roles_defined: \"Vous n'avez défini aucun utilisateur ni rôle. Vous pouvez créer les rôles par défaut et ajouter l'utilisateur actuel en tant qu'administrateur.\",\n save_before_changing_schema: \"Vous devez enregistrer le document avant de modifier le schéma\",\n edit_schema_for_this_form: \"Modifier le schéma de ce formulaire\",\n no_permissions_to_edit_collection: \"Vous n'avez pas l'autorisation de modifier cette collection\",\n browser_does_not_support_audio: \"Votre navigateur ne prend pas en charge l'élément audio.\",\n user_not_found: \"Utilisateur introuvable : {{value}}\",\n\n // ─── Collection view actions ──────────────────────────────────\n delete_selected: \"Supprimer la sélection\",\n cannot_delete_selected: \"Vous avez sélectionné au moins une entité que vous ne pouvez pas supprimer\",\n\n // ─── Array / field containers ─────────────────────────────────\n add_entry: \"Ajouter\",\n add_on_top: \"Ajouter en haut\",\n add_below: \"Ajouter en dessous\",\n add_to_field: \"Ajouter à {{fieldName}}\",\n value: \"Valeur\",\n key: \"Clé\",\n drag_drop_multiple: \"Faites glisser et déposez des fichiers ici, ou cliquez pour sélectionner des fichiers. Faites glisser pour réorganiser.\",\n drag_drop_single: \"Faites glisser et déposez un fichier ici, ou cliquez pour en sélectionner un\",\n\n // ─── Navigation / scaffold ────────────────────────────────────\n open_menu: \"Ouvrir le menu\",\n close_drawer: \"Fermer le menu latéral\",\n navigation_drawer: \"Tiroir de navigation\",\n collapse: \"Réduire\",\n expand: \"Développer\",\n change_language: \"Changer de langue\",\n toggle_theme: \"Changer de thème\",\n user_menu: \"Menu utilisateur\",\n resize_sidebar: \"Redimensionner la barre latérale\",\n resize_editor: \"Redimensionner l'éditeur\",\n resize_list: \"Redimensionner la liste\",\n panel_mode: \"Mode du panneau\",\n\n // ─── Error states ─────────────────────────────────────────────\n error: \"Erreur\",\n error_loading_data: \"Impossible de charger les données\",\n error_check_server_logs: \"Consultez les journaux du serveur pour plus de détails.\",\n error_technical_details: \"Détails techniques\",\n error_uploading_file: \"Erreur lors du téléchargement du fichier\",\n error_deleting: \"Erreur lors de la suppression\",\n error_before_delete: \"Erreur avant la suppression\",\n error_updating_asset: \"Erreur lors de la mise à jour de l'actif\",\n error_deleting_asset: \"Erreur lors de la suppression de l'actif\",\n error_firestore_index: \"Un index Firestore est requis pour cette requête.\",\n realtime_connection_lost_title: \"Mises à jour en direct suspendues\",\n realtime_connection_lost_body: \"La connexion au serveur a été perdue : ce que vous voyez n'est peut-être plus à jour. L'affichage se mettra à jour dès le retour de la connexion.\",\n create_index: \"Créer un index\",\n value_is_not_reference: \"La valeur n'est pas une référence.\",\n click_to_edit: \"Cliquez pour modifier\",\n data_is_not_array_of_references: \"Les données ne sont pas un tableau de références\",\n\n // ─── Misc ─────────────────────────────────────────────────────\n loading: \"Chargement...\",\n local_changes_applied: \"Modifications locales appliquées au formulaire\",\n local_changes_discarded: \"Modifications locales ignorées\",\n are_you_sure_leave: \"Êtes-vous sûr de vouloir quitter cette page ?\",\n see_console_details: \"Consultez la console pour plus de détails.\",\n drop_here_create_group: \"Déposez ici pour créer un nouveau groupe\",\n filter_for_null_values: \"Filtrer les valeurs nulles\",\n value_updated_elsewhere: \"Cette valeur a été mise à jour ailleurs\",\n entity_deleted_elsewhere: \"Cet enregistrement a été supprimé ailleurs. Ce qui s'affiche ici n'a pas été enregistré ; enregistrez-le comme nouvel enregistrement pour le conserver.\",\n save_as_new: \"Enregistrer comme nouveau\",\n add_property: \"Ajouter une propriété\",\n edit_name: \"Modifier {{name}}\",\n this_entity_not_exist: \"Cette entité n'existe pas dans la base de données\",\n internal_error: \"ERREUR interne\",\n\n // ─── Rename group dialog ──────────────────────────────────────\n rename_group: \"Renommer le groupe\",\n group_name_label: \"Nom du groupe\",\n group_name_empty_error: \"Le nom du groupe ne peut pas être vide.\",\n group_name_exists_error: \"Ce nom de groupe existe déjà.\",\n\n // ─── Search ───────────────────────────────────────────────────\n search_collections: \"Rechercher dans les collections\",\n\n // ─── Navigation groups ────────────────────────────────────────\n views_group: \"Vues\",\n\n // ─── Entity Edit View ─────────────────────────────────────────\n youd_need_to_save_before_additional_collections: \"Enregistrez cet enregistrement avant d'y ajouter des enregistrements liés.\",\n\n // ─── Not Found Page ───────────────────────────────────────────\n page_not_found: \"Page introuvable\",\n page_not_found_body: \"Cette page n'existe pas ou vous n'y avez peut-être pas accès\",\n back_to_home: \"Retour à l'accueil\",\n\n // ─── Collection Editor ─────────────────────────────────────────\n default_collection_view: \"Vue de collection par défaut\",\n table_view: \"Tableau\",\n cards_view: \"Cartes\",\n kanban_view: \"Kanban\",\n choose_how_entities_displayed_default: \"Choisissez comment les entités doivent être affichées par défaut\",\n\n document_view: \"Vue de document\",\n side_panel: \"Panneau latéral\",\n full_screen: \"Plein écran\",\n should_documents_opened_full_screen: \"Les documents doivent-ils être ouverts en plein écran ou dans une boîte de dialogue latérale intégrée\",\n\n select_custom_view: \"Sélectionner une vue personnalisée\",\n no_custom_views_defined: \"Aucune vue personnalisée n'est définie. Définissez vos vues personnalisées dans les paramètres de personnalisation, avant d'utiliser cette boîte de dialogue.\",\n\n select_custom_action: \"Sélectionner une action personnalisée\",\n no_custom_actions_defined: \"Aucune action personnalisée définie. Définissez vos actions personnalisées dans les paramètres de personnalisation, avant d'utiliser cette boîte de dialogue.\",\n\n no_collections_found: \"Aucune collection trouvée\",\n start_building_collections: \"Commencez à créer des collections dans Rebase facilement. Mappez-les à vos données de base de données existantes, importez-les à partir de fichiers ou utilisez nos modèles.\",\n create_first_collection: \"Créez votre première collection\",\n define_collections_programmatically: \"Vous pouvez également définir des collections par programmation.\",\n edit_collection: \"Modifier la collection\",\n no_permissions_edit_collection: \"Vous n'avez pas les autorisations pour modifier cette collection\",\n no_permissions_create_collection: \"Vous n'avez pas les autorisations pour créer des collections\",\n create_collection: \"Créer une collection\",\n update_collection: \"Mettre à jour la collection\",\n\n new_collection: \"Nouvelle collection\",\n add_new_collection: \"Ajouter une nouvelle collection\",\n collection_with_name: \"Collection {{name}}\",\n change_icon: \"Changer l'icône\",\n is_subcollection_of: \"Ceci est une sous-collection de\",\n name: \"Nom\",\n collection_name_description: \"Nom de cette collection, généralement un nom au pluriel (par ex., Produits)\",\n path: \"Chemin\",\n relative_path_to_parent: \"Chemin relatif vers le parent (il n'est pas nécessaire d'inclure le chemin parent)\",\n path_in_database: \"Chemin dans lequel cette collection est stockée, dans la base de données\",\n singular_name: \"Nom au singulier\",\n singular_name_description: \"Définissez éventuellement un nom au singulier pour vos entités\",\n description: \"Description\",\n description_of_collection: \"Description de la collection, vous pouvez utiliser le format markdown\",\n collection_id: \"ID de la collection\",\n collection_id_description: \"Cet ID identifie cette collection. Généralement le même que le chemin.\",\n collection_group: \"Groupe de collections\",\n collection_group_description: \"Un groupe de collections se compose de toutes les collections ayant le même chemin. Cela vous permet d'effectuer des requêtes sur plusieurs collections à la fois.\",\n advanced_settings: \"Paramètres avancés\",\n doc_history_global: \"Révisions de l'historique des documents activées si activées globalement\",\n doc_history_enabled: \"Révisions de l'historique des documents ACTIVÉES\",\n doc_history_not_enabled: \"Révisions de l'historique des documents NON activées\",\n doc_history_description: \"Lorsqu'il est activé, chaque document de cette collection conservera un historique des modifications. Ceci est utile à des fins d'audit. Les données sont stockées dans une sous-collection du document dans votre base de données, appelée __history.\",\n document_id_generation: \"Génération des ID de document\",\n code_defined: \"Défini par le code\",\n users_must_define_id: \"Les utilisateurs doivent définir un ID\",\n users_can_define_id: \"Les utilisateurs peuvent définir un ID, mais ce n'est pas obligatoire\",\n doc_id_auto_generated: \"L'ID du document est généré automatiquement\",\n config_doc_id_generation: \"Configurez comment les ID de document sont générés lors de la création de nouvelles entités.\",\n enable_text_search: \"Activer la recherche de texte pour cette collection\",\n text_search_description: \"Autoriser la recherche de texte pour cette collection. Si vous n'avez pas spécifié de délégué de recherche de texte, la recherche de texte locale intégrée sera utilisée. Ceci n'est pas recommandé pour les grandes collections, car cela peut entraîner des problèmes de performances et de coûts.\",\n database_id: \"ID de base de données\",\n default_text: \"(par défaut)\",\n\n custom_actions: \"Actions personnalisées\",\n more_info: \"Plus d'informations\",\n define_custom_actions_cli: \"Définissez vos propres actions personnalisées en les téléchargeant via la CLI.\",\n action_defined_in_code: \"Cette action est définie dans le code avec la clé\",\n add_custom_entity_action: \"Ajouter une action d'entité personnalisée\",\n remove_this_action: \"Supprimer cette action ?\",\n remove_action_warning: \"Cela ne supprimera aucune donnée, uniquement l'action dans le panneau d'administration\",\n\n subcollections_of: \"Sous-collections de\",\n add_subcollection: \"Ajouter une sous-collection\",\n custom_views: \"Vues personnalisées\",\n define_custom_views_cli: \"Définissez vos propres vues personnalisées en les téléchargeant via la CLI.\",\n view_defined_in_code: \"Cette vue est définie dans le code avec la clé\",\n add_custom_entity_view: \"Ajouter une vue d'entité personnalisée\",\n delete_this_subcollection: \"Supprimer cette sous-collection ?\",\n remove_collection_warning: \"Cela ne supprimera aucune donnée, uniquement la collection dans le panneau d'administration\",\n remove_this_view: \"Supprimer cette vue ?\",\n remove_view_warning: \"Cela ne supprimera aucune donnée, uniquement la vue dans le panneau d'administration\",\n\n no_collection_selected: \"Aucune collection sélectionnée\",\n code_for_collection: \"Code pour\",\n use_config_define_json: \"Utilisez cette configuration pour définir la collection au format JSON.\",\n customise_collection_code: \"Si vous souhaitez personnaliser la collection dans le code, vous pouvez ajouter ce code de collection à la configuration de votre application d'administration.\",\n copied: \"Copié\",\n\n property_cant_be_edited: \"Cette propriété ne peut pas être modifiée\",\n property_not_editable_description: \"Vous n'avez peut-être pas l'autorisation de la modifier ou elle est définie dans le code et ne peut pas être modifiée.\",\n delete_this_property: \"Supprimer cette propriété ?\",\n delete_property_warning: \"Cela ne supprimera aucune donnée, mais modifiera uniquement la collection.\",\n error_must_specify_id: \"Vous devez spécifier un ID pour le champ\",\n error_id_format: \"L'ID ne peut contenir que des lettres, des chiffres et des traits de soulignement (_), et ne doit pas commencer par un chiffre\",\n error_id_already_exists: \"Il existe déjà un autre champ avec cet ID\",\n error_must_specify_title: \"Vous devez spécifier un titre pour le champ\",\n custom_or_other: \"Personnalisé/Autre\",\n select_property_widget: \"Sélectionnez un widget de propriété\",\n error_changing_data_type: \"Ce widget utilise un type de données différent de celui initialement sélectionné. Cela peut provoquer des erreurs avec les données existantes.\",\n required: \"Requis\",\n\n enum_form_dialog: \"Boîte de dialogue du formulaire Enum\",\n imported_data_preview: \"Aperçu des données importées\",\n entities_with_same_id_overwritten: \"Les entités avec le même identifiant seront écrasées\",\n collection_editor: \"Éditeur de collection\",\n properties_in_this_group: \"Propriétés de ce groupe\",\n data_property_mapping: \"Mappage de propriétés de données\",\n property_edit_view: \"Vue d'édition de propriété\",\n all_of_these: \"Tous ces éléments\",\n any_of_these: \"N'importe lequel de ces éléments\",\n\n only_admins_edit_roles: \"Seuls les administrateurs peuvent modifier les rôles\",\n error_user_not_found: \"Utilisateur introuvable\",\n all_roles: \"Tous les rôles\",\n role: \"Rôle\",\n name_of_this_role: \"Nom de ce rôle\",\n id_of_this_role: \"ID de ce rôle\",\n create_entities: \"Créer des entités\",\n read_entities: \"Lire des entités\",\n update_entities: \"Mettre à jour des entités\",\n delete_entities: \"Supprimer des entités\",\n all_collections: \"Toutes les collections\",\n create_entities_in_collections: \"Créer des entités dans les collections\",\n access_all_data_in_every_collection: \"Accéder à toutes les données de chaque collection\",\n update_data_in_any_collection: \"Mettre à jour les données dans n'importe quelle collection\",\n delete_data_in_any_collection: \"Supprimer des données dans n'importe quelle collection\",\n allow_all_permissions_in_this_collections: \"Autoriser toutes les autorisations dans ces collections\",\n all: \"Tout\",\n customise_permissions_description: \"Vous pouvez personnaliser les autorisations que les utilisateurs liés à ce rôle peuvent exécuter dans les entités de chaque collection\",\n create_collections: \"Créer des collections\",\n yes: \"Oui\",\n no: \"Non\",\n can_user_create_collections: \"L'utilisateur peut-il créer des collections\",\n edit_collections: \"Modifier les collections\",\n only_own_collections: \"Uniquement les siennes\",\n own: \"Propre\",\n can_user_edit_collections: \"L'utilisateur peut-il modifier les collections\",\n delete_collections: \"Supprimer les collections\",\n can_user_delete_collections: \"L'utilisateur peut-il supprimer des collections\",\n error_saving_role: \"Une erreur s'est produite lors de l'enregistrement de ce rôle\",\n create_role: \"Créer un rôle\",\n update: \"Mettre à jour\",\n\n only_admins_change_roles: \"Seuls les administrateurs peuvent modifier les rôles\",\n must_be_at_least_one_admin: \"Il doit y avoir au moins un administrateur\",\n logged_user_not_found: \"Utilisateur connecté introuvable\",\n user: \"Utilisateur\",\n user_id: \"ID de l'utilisateur\",\n name_of_this_user: \"Nom de cet utilisateur\",\n email_of_this_user: \"Email de cet utilisateur\",\n roles: \"Rôles\",\n create_user: \"Créer un utilisateur\",\n\n users: \"Utilisateurs\",\n add_user: \"Ajouter un utilisateur\",\n add_role: \"Ajouter un rôle\",\n is_admin: \"Est Admin\",\n default_permissions: \"Autorisations par défaut\",\n created_on: \"Créé le\",\n email: \"E-mail\",\n id: \"ID\",\n read: \"Lire\",\n\n column_in_file: \"Colonne dans le fichier\",\n map_to_property: \"Mappage à la propriété\",\n default_values: \"Valeurs par défaut\",\n default_values_description: \"Vous pouvez sélectionner une valeur par défaut pour les colonnes non mappées et les valeurs vides :\",\n property: \"Propriété\",\n default_value: \"Valeur par défaut\",\n autogenerate_id: \"Générer automatiquement l'ID\",\n id_column_description: \"Colonne qui sera utilisée comme ID pour chaque document\",\n do_not_set_value: \"Ne pas définir de valeur\",\n set_value_to_true: \"Définir la valeur sur Vrai (true)\",\n set_value_to_false: \"Définir la valeur sur Faux (false)\",\n drag_and_drop_file: \"Glissez et déposez un fichier ici ou cliquez pour télécharger\",\n error_saving_data: \"Erreur lors de l'enregistrement des données\",\n retry: \"Réessayer\",\n saving_data: \"Enregistrement des données\",\n entities_saved: \"entités enregistrées\",\n do_not_close_tab: \"Ne fermez pas cet onglet, sinon l'importation sera interrompue\",\n import: \"Importer\",\n import_data: \"Importer des données\",\n upload_file_description: \"Téléchargez un fichier CSV, Excel ou JSON et mappez-le à votre schéma existant\",\n back: \"Retour\",\n next: \"Suivant\",\n save_data: \"Enregistrer les données\",\n use_column_as_id: \"Utiliser cette colonne comme ID\",\n do_not_import_property: \"Ne pas importer cette propriété\",\n import_problems_title: \"Valeurs impossibles à importer : {{count}}\",\n import_problems_description: \"Ces cellules ne peuvent pas être converties dans le type du champ auquel elles sont associées ; elles resteront donc vides. Revenez en arrière pour associer la colonne à un champ texte, ou corrigez le fichier et importez-le à nouveau.\",\n import_problems_column: \"{{column}} → {{property}} ({{type}}) : {{count}} non importées\",\n import_problems_example: \"Ligne {{row}} : « {{value}} », {{reason}}\",\n import_problems_more: \"…et {{count}} de plus\",\n import_problem_not_a_number: \"n'est pas un nombre\",\n import_problem_number_leading_zero: \"en nombre, le zéro initial serait perdu\",\n import_problem_number_too_precise: \"plus de chiffres qu'un nombre n'en conserve exactement\",\n import_problem_not_a_boolean: \"ni oui ni non\",\n import_problem_not_a_date: \"n'est pas une date\",\n import_problem_ambiguous_date: \"peut être jour/mois ou mois/jour\",\n import_problem_not_a_vector: \"n'est pas une liste de nombres\",\n import_problem_not_a_map: \"n'est pas une map (le JSON d'un objet était attendu)\",\n import_problem_not_a_geopoint: \"n'est pas un géopoint ({\\\"latitude\\\": …, \\\"longitude\\\": …} était attendu)\",\n entities_will_be_overwritten: \"Les entités avec le même identifiant seront écrasées\",\n data_imported_successfully: \"Données importées avec succès\",\n export: \"Exporter\",\n export_data: \"Exporter des données\",\n download_table_csv: \"Télécharger le contenu de cette table au format CSV\",\n csv: \"CSV\",\n json: \"JSON\",\n dates_as_timestamps: \"Dates sous forme d'horodatages\",\n dates_as_strings: \"Dates sous forme de chaînes\",\n flatten_arrays: \"Aplatir les tableaux\",\n download: \"Télécharger\",\n large_number_of_documents: \"Cette collection contient un grand nombre de documents ({{count}}).\",\n too_many_documents_to_export: \"Cette collection contient plus de documents ({{count}}) que le navigateur ne peut en exporter dans un seul fichier (limite {{limit}}). Filtrez-la avant d'exporter.\",\n include_undefined_values: \"Inclure les valeurs non définies\",\n submit: \"Soumettre\",\n\n no_filterable_properties: \"Aucune propriété filtrable disponible\",\n apply_filters: \"Appliquer les filtres\",\n\n // ─── Filter Presets ──────────────────────────────────────────\n filter_presets: \"Préréglages\",\n filter_preset_apply: \"Appliquer le préréglage\",\n filter_preset_active: \"Actif : {{label}}\",\n\n list: \"Liste\",\n table_view_mode: \"Tableau\",\n cards: \"Cartes\",\n board: \"Tableau\",\n initialize_kanban_order_desc: \"Ceci attribuera des valeurs d'ordre séquentiel à tous les éléments qui n'en ont pas. Les articles conserveront leur ordre actuel dans chaque colonne.\",\n kanban_view_not_available: \"La vue Kanban n'est pas disponible\",\n kanban_view_requires_enum: \"La vue Kanban requiert une propriété de chaîne de caractères avec des valeurs Enumération (enum) pour regrouper les entités en colonnes. Veuillez ajouter une propriété Enum à votre schéma de collection pour utiliser cette vue.\",\n no_enum_values_configured: \"Aucune valeur enum configurée pour la propriété \\\"{{property}}\\\"\",\n items_need_backfill: \"Certains éléments n'ont pas de valeurs d'ordre. Initialisez-les pour permettre la réorganisation par glisser-déposer.\",\n kanban_order_not_configured: \"L'ordonnancement par glisser-déposer n'est pas configuré. Définissez une propriété d'ordre dans les paramètres de la collection pour conserver les positions des cartes.\",\n initialize: \"Initialiser\",\n confirm_multiple_delete: \"Confirmez la suppression multiple ?\",\n delete_entity_confirm_title: \"Souhaitez-vous supprimer {{entityName}} ?\",\n add_existing: \"Ajouter un existant\",\n unlink_entity_confirm_title: \"Retirer ce/cette {{entityName}} de cet enregistrement ?\",\n unlink_entity_confirm_body: \"Il reste dans {{collectionName}} et disponible pour d'autres enregistrements.\",\n confirm_multiple_unlink: \"les retirer de cet enregistrement ?\",\n remove_from_record: \"Retirer de cet enregistrement\",\n removed_from_record: \"Retiré de cet enregistrement\",\n no_filter: \"Aucun filtre\",\n is_true: \"est vrai\",\n is_false: \"est faux\",\n error_uploading_file_size: \"Erreur lors de l'envoi : le fichier dépasse {{maxSize}} octets\",\n error_uploading_file_type: \"Erreur lors de l'envoi : ce type de fichier n'est pas pris en charge\",\n drag_drop_files: \"Glissez-déposez des fichiers ici, ou cliquez pour les modifier\",\n drag_drop_file: \"Glissez-déposez un fichier ici, ou cliquez pour le modifier\",\n multiple_deleted: \"Suppression multiple terminée\",\n some_entities_deleted: \"Certaines des entités ont été supprimées, mais pas toutes\",\n error_deleting_entities: \"Erreur lors de la suppression des entités\",\n delete_rows_failed: \"{{failed}} sur {{total}} non supprimés. {{reason}}\",\n deleted: \"supprimé\",\n selection_options: \"Options de sélection\",\n selection_menu_all_loaded: \"Tout sur cette page\",\n selection_menu_all_matching: \"Les {{total}} {{collection}}\",\n selection_menu_none: \"Aucun\",\n selection_select_all_loaded: \"Sélectionner les lignes chargées\",\n selection_deselect_all: \"Tout désélectionner\",\n selection_reading_rows: \"Lecture des lignes… {{loaded}} sur {{total}}\",\n selection_reading_rows_unknown: \"Lecture des lignes… {{loaded}} jusqu’à présent\",\n selection_deleting_progress: \"{{completed}} supprimés sur {{total}}\",\n confirm_delete_selection: \"Supprimer {{total}} {{collection}} ?\",\n confirm_delete_selection_unknown: \"Supprimer toutes les lignes correspondant au filtre actuel ?\",\n confirm_delete_selection_body: \"Cette action est irréversible. Chaque ligne est supprimée séparément, l’opération peut donc prendre du temps.\",\n\n export_selection_count: \"Télécharger les {{total}} lignes sélectionnées au format {{format}}\",\n export_selection_all_matching: \"Télécharger tous les {{collection}} correspondant au filtre actuel\",\n\n select_reference: \"Sélectionner une référence\",\n select_references: \"Sélectionner des références\",\n account_settings: \"Paramètres du compte\",\n profile: \"Profile\",\n security: \"Sécurité\",\n sessions: \"Sessions\",\n change_password: \"Changer le mot de passe\",\n current_password: \"Mot de passe actuel\",\n new_password: \"Nouveau mot de passe\",\n confirm_password: \"Confirmer le nouveau mot de passe\",\n password_changed: \"Mot de passe modifié. Vos autres appareils ont été déconnectés.\",\n passwords_dont_match: \"Les mots de passe ne correspondent pas\",\n password_too_short: \"Le mot de passe doit comporter au moins 8 caractères\",\n password_change_not_available: \"Le changement de mot de passe n'est pas disponible pour les comptes utilisant un fournisseur de connexion externe.\",\n changing_password: \"Modification…\",\n display_name: \"Nom affiché\",\n photo_url: \"URL de la photo\",\n save_profile: \"Enregistrer le profil\",\n saving: \"Saving...\",\n no_active_sessions: \"Aucune session active trouvée.\",\n revoking: \"Revoking...\",\n revoke_all_sessions: \"Révoquer toutes les sessions\",\n unknown_device: \"Appareil inconnu\",\n unknown_address: \"Inconnue\",\n session_details: \"IP : {{ip}} • Créée : {{created}}\",\n revoke_session: \"Révoquer la session\",\n current: \"Current\",\n role_id: \"ID du rôle\",\n role_name: \"Nom du rôle\",\n add_reference: \"Ajouter une référence\",\n add_reference_to: \"Ajouter une référence à {{name}}\",\n\n /** RolesView — table & permissions */\n role_deleted_successfully: \"Rôle supprimé\",\n error_deleting_role: \"Erreur lors de la suppression du rôle\",\n collection_permissions: \"Permissions de la collection\",\n collection: \"Collection\",\n no_collections_configured: \"Aucune collection configurée\",\n no_security_rules_defined: \"Aucune règle de sécurité définie — toutes les opérations sont autorisées\",\n no_rules: \"aucune règle\",\n\n /** UsersView — snackbar */\n bootstrap_admin_success: \"Vous êtes désormais administrateur ! Actualisation…\",\n failed_to_bootstrap_admin: \"Impossible de créer l'administrateur initial\",\n user_deleted_successfully: \"Utilisateur supprimé\",\n error_deleting_user: \"Erreur lors de la suppression de l'utilisateur\",\n user_created_successfully: \"Utilisateur créé\",\n invitation_sent: \"Un e-mail d'invitation a été envoyé à {{email}}. Le lien permet de définir le mot de passe.\",\n invitation_sent_title: \"Invitation envoyée\",\n temporary_password: \"Mot de passe temporaire\",\n temporary_password_description: \"L'e-mail n'est pas configuré. Transmettez ce mot de passe temporaire à l'utilisateur de manière sécurisée. Il ne sera plus affiché.\",\n temporary_password_email_failed_description: \"L'e-mail n'a pas pu être remis. Transmettez ce mot de passe temporaire à l'utilisateur de manière sécurisée. Il ne sera plus affiché.\",\n copy_password: \"Copier le mot de passe\",\n password_copied: \"Mot de passe copié dans le presse-papiers\",\n\n /** UsersView — pagination & search */\n search_users: \"Rechercher des utilisateurs\",\n created: \"Créé le\",\n actions: \"Actions\",\n no_users_found: \"Aucun utilisateur trouvé\",\n reset_password: \"Réinitialiser le mot de passe\",\n reset_password_success: \"Mot de passe réinitialisé\",\n reset_password_confirmation: \"Voulez-vous vraiment réinitialiser le mot de passe de cet utilisateur ?\",\n reset_password_send_email: \"Envoyer un e-mail de réinitialisation\",\n reset_password_set_manually: \"Définir un mot de passe manuellement\",\n reset_password_set_manually_description: \"Le mot de passe est mis à jour immédiatement et aucun e-mail n'est envoyé. Transmettez-le à l'utilisateur de manière sécurisée.\",\n\n /** Permission-denied empty states */\n no_permission_to_view_users: \"Vous n'avez pas la permission de voir les utilisateurs\",\n no_permission_to_view_roles: \"Vous n'avez pas la permission de voir les rôles\",\n no_permission_description: \"Contactez un administrateur si vous avez besoin d'accéder à cette section.\",\n error_resetting_password: \"Erreur lors de la réinitialisation du mot de passe\",\n\n /** Editor table-bubble */\n add_row_before: \"Insérer une ligne avant\",\n add_row_after: \"Insérer une ligne après\",\n delete_row: \"Supprimer la ligne\",\n add_column_before: \"Insérer une colonne avant\",\n add_column_after: \"Insérer une colonne après\",\n delete_column: \"Supprimer la colonne\",\n delete_table: \"Supprimer le tableau\",\n\n /** Editor image-bubble */\n alt_text: \"Texte alternatif\",\n title: \"Title\",\n\n /** MapFieldBinding */\n a_property_of_this_map_has_error: \"Une propriété de cette table d'association contient une erreur\",\n\n /** AI Collection Generator Popover */\n generate_collection_with_ai: \"Générer une collection avec l'IA\",\n modify_collection_with_ai: \"Modifier la collection avec l'IA\",\n describe_collection_to_create: \"Décrivez la collection que vous souhaitez créer.\",\n describe_changes_to_make: \"Décrivez les modifications que vous souhaitez apporter à cette collection.\",\n ai_placeholder_create: \"ex. : Créer une collection de produits avec nom, prix, description et catégorie...\",\n ai_placeholder_modify: \"ex. : Ajouter un champ d'image miniature avec stockage, rendre le prix obligatoire...\",\n ai_assist: \"Assistance IA\",\n generating: \"Génération en cours...\",\n\n /** Recently extracted strings for collection editor */\n this_is_subcollection_of: \"Ceci est une sous-collection de\",\n use_existing_paths_database: \"Utiliser l'un des chemins existants dans votre base de données :\",\n describe_collection_ai: \"Décrivez votre collection à l'IA :\",\n generate_with_ai: \"Générer avec l'IA\",\n create_from_json_config: \"Créer à partir d'une configuration JSON :\",\n paste_json_config: \"Coller la configuration JSON\",\n create_collection_from_file_formats: \"Créer une collection à partir d'un fichier (csv, json, xls, xslx...)\",\n select_template: \"Sélectionner un modèle :\",\n products: \"Produits\",\n collection_products_subtitle: \"Une collection de produits avec images, prix et stock\",\n collection_users_subtitle: \"Une collection d'utilisateurs avec e-mails, noms et rôles\",\n blog_posts: \"Articles de blog\",\n collection_blog_posts_subtitle: \"Une collection d'articles de blog avec images, auteurs et contenu complexe\",\n pages: \"Pages\",\n collection_pages_subtitle: \"Une collection de pages avec images, auteurs et contenu complexe\",\n continue_from_scratch: \"Continuer à partir de zéro\",\n\n /** Admin views config */\n admin_users: \"Utilisateurs du panneau d'administration\",\n roles_menu: \"Rôles\",\n project_settings: \"Paramètres du projet\",\n\n by_signing_in_you_agree_to_our: \"En vous connectant, vous acceptez nos\",\n terms_and_conditions: \"Conditions générales\",\n and_our: \"et notre\",\n privacy_policy: \"Politique de confidentialité\",\n email_password: \"E-mail/Mot de passe\",\n sign_in_with_google: \"Se connecter avec Google\",\n\n // --- Auth error messages ---\n auth_user_not_found: \"Utilisateur non trouvé\",\n auth_wrong_password: \"Mot de passe erroné. Veuillez réessayer.\",\n auth_user_disabled: \"Utilisateur désactivé. Veuillez contacter le support.\",\n auth_account_exists_with_different_credential: \"Un compte existe déjà avec cet e-mail. Connectez-vous comme la dernière fois.\",\n auth_account_exists_sign_in_with_password: \"Un compte existe déjà avec cet e-mail. Connectez-vous plutôt avec votre e-mail et votre mot de passe.\",\n auth_email_already_in_use: \"L'e-mail est déjà utilisé\",\n auth_google_permissions_required: \"Vous devez accorder des autorisations supplémentaires afin de gérer vos projets Google Cloud\",\n auth_invalid_email_password: \"Veuillez entrer l'e-mail et le mot de passe\",\n auth_enter_email_first: \"Veuillez d'abord entrer votre e-mail\",\n auth_password_reset_sent: \"E-mail de réinitialisation du mot de passe envoyé\",\n auth_sign_in_account: \"Connectez-vous à votre compte\",\n auth_create_new_account: \"Créer un nouveau compte\",\n auth_password: \"Mot de passe\",\n auth_reset_password: \"Réinitialiser le mot de passe\",\n auth_new_user: \"Nouvel utilisateur ?\",\n auth_have_account: \"Vous avez déjà un compte ?\",\n auth_sign_in: \"Se connecter\",\n auth_sign_up: \"S'inscrire\",\n auth_new_password_title: \"Définir un nouveau mot de passe\",\n auth_new_password_subtitle: \"Choisissez le mot de passe avec lequel vous vous connecterez désormais.\",\n auth_password_requirements: \"Le mot de passe doit comporter au moins 8 caractères, avec des majuscules, des minuscules et un chiffre\",\n auth_set_password: \"Définir le mot de passe\",\n auth_password_changed_title: \"Mot de passe modifié\",\n auth_password_changed_body: \"Connectez-vous avec votre nouveau mot de passe.\",\n auth_continue_to_sign_in: \"Continuer vers la connexion\",\n auth_link_invalid_or_expired: \"Ce lien est invalide ou a expiré. Demandez-en un nouveau depuis l'écran de connexion.\",\n auth_password_reset_unavailable: \"La réinitialisation du mot de passe n'est pas disponible sur ce backend.\",\n auth_verifying_email: \"Confirmation de votre adresse e-mail…\",\n auth_email_verified_title: \"E-mail confirmé\",\n auth_email_verified_body: \"Votre adresse e-mail est confirmée. Vous pouvez maintenant vous connecter.\",\n auth_email_verification_failed_title: \"E-mail non confirmé\",\n auth_email_verification_unavailable: \"La vérification de l'e-mail n'est pas disponible sur ce backend.\",\n auth_verify_email_proof_title: \"Confirmez qu'il s'agit de votre compte\",\n auth_verify_email_proof_body: \"Ce compte a un mot de passe. Saisissez-le pour le conserver et vous connecter. Si vous n'en avez jamais défini, quelqu'un d'autre a peut-être enregistré votre adresse : confirmez-la sans mot de passe, et le sien sera supprimé.\",\n auth_verify_email_password_label: \"Le mot de passe que vous avez choisi\",\n auth_verify_email_with_password: \"Confirmer et se connecter\",\n auth_verify_email_without_password: \"Je n'ai pas défini de mot de passe\",\n auth_verify_email_wrong_password: \"Ce n'est pas le mot de passe de ce compte.\",\n auth_email_verified_password_removed_body: \"Votre adresse e-mail est confirmée. Un mot de passe avait été défini sur ce compte avant la confirmation de l'adresse, il a donc été supprimé. Connectez-vous avec un lien ou définissez-en un nouveau via « Mot de passe oublié ».\",\n auth_confirm_email_sent_title: \"Consultez votre boîte de réception\",\n auth_confirm_email_sent_body: \"Nous avons envoyé un lien à votre adresse e-mail. Suivez-le pour confirmer votre adresse, puis connectez-vous.\",\n auth_email_not_confirmed: \"Confirmez d'abord votre adresse e-mail. Nous y avons envoyé un nouveau lien.\",\n auth_mfa_title: \"Validation en deux étapes\",\n auth_mfa_subtitle: \"Saisissez le code de votre application d'authentification, ou l'un de vos codes de récupération.\",\n auth_mfa_factor_label: \"Valider avec\",\n auth_mfa_factor_totp: \"Application d'authentification\",\n auth_mfa_code_label: \"Code de vérification\",\n auth_mfa_verify: \"Valider\",\n auth_mfa_code_invalid: \"Ce code n'est pas le bon. Essayez le code actuel de votre application d'authentification, ou un code de récupération.\",\n auth_mfa_challenge_exhausted: \"Trop de codes erronés. Saisissez un nouveau code de votre application d'authentification pour réessayer.\",\n auth_mfa_expired: \"Cette connexion a expiré. Reconnectez-vous pour continuer.\",\n auth_mfa_sign_in_again: \"Se reconnecter\",\n email_address: \"Adresse e-mail\",\n email_change_description: \"Nous envoyons un lien à la nouvelle adresse. Votre compte l'adopte dès que le lien est ouvert.\",\n email_change_button: \"Modifier l'e-mail\",\n email_change_pending: \"Nous avons envoyé un lien à {{email}}. Votre adresse e-mail change dès qu'il est ouvert.\",\n email_change_taken: \"Un autre compte utilise déjà cette adresse.\",\n email_change_undeliverable: \"Aucun e-mail ne peut atteindre cette adresse.\",\n email_change_unchanged: \"C'est déjà votre adresse e-mail.\",\n email_change_needs_second_factor: \"Reconnectez-vous avec votre second facteur avant de modifier votre adresse e-mail.\",\n auth_confirming_email_change: \"Modification de votre adresse e-mail…\",\n auth_email_change_confirmed_title: \"Adresse e-mail modifiée\",\n auth_email_change_confirmed_body: \"Votre compte utilise désormais {{email}}.\",\n auth_email_change_providers_removed: \"La connexion avec {{providers}} a été retirée, car elle était liée à votre ancienne adresse.\",\n auth_email_change_failed_title: \"Adresse e-mail non modifiée\",\n auth_email_change_continue: \"Continuer\",\n auth_email_change_unavailable: \"La modification de l'adresse e-mail n'est pas disponible sur ce backend.\",\n auth_signing_in_with_link: \"Connexion en cours…\",\n auth_magic_link_failed_title: \"Lien de connexion refusé\",\n auth_magic_link_unavailable: \"Les liens de connexion ne sont pas disponibles sur ce backend.\",\n reset_mfa_title: \"Réinitialiser la validation en deux étapes\",\n reset_mfa_description: \"Retire les applications d'authentification et les codes de récupération de cet utilisateur et le déconnecte partout. Il se connecte ensuite avec son seul mot de passe et peut reconfigurer la validation en deux étapes.\",\n reset_mfa_confirm: \"Réinitialiser\",\n reset_mfa_success: \"Validation en deux étapes réinitialisée\",\n account_access_title: \"Accès au compte\",\n account_access_action: \"Désactiver ou activer le compte\",\n account_disabled_label: \"Compte désactivé\",\n account_disabled_description: \"Un compte désactivé ne peut pas se connecter, et toutes ses sessions et tous ses jetons cessent aussitôt de fonctionner. Ses données sont conservées ; réactivez-le pour rétablir l'accès.\",\n account_disabled_success: \"Compte désactivé\",\n account_enabled_success: \"Compte activé\",\n\n\n auto_setup_collections_button: \"Configurer les collections automatiquement\",\n auto_setup_collections_title: \"Configurer les collections automatiquement ?\",\n auto_setup_collections_desc: \"Cela créera automatiquement des configurations de collection pour les collections qui ne sont <b>PAS</b> déjà mappées\",\n this_can_take_a_minute: \"Cela peut prendre une minute\",\n no_collections_found_to_setup: \"Aucune collection à configurer trouvée\",\n collections_have_been_setup: \"Les collections ont été configurées\",\n error_setting_up_collections: \"Erreur lors de la configuration des collections\",\n\n // --- Home Suggestions ---\n\n admin_panel_ready_bring_data: \"Votre panneau d'administration est prêt. Ajoutons vos données.\",\n admin_panel_ready_get_started: \"Votre panneau d'administration est prêt. Voici comment démarrer.\",\n auto_detect_collections: \"Détecter automatiquement les collections\",\n auto_detect_collections_desc: \"Laissez l'IA analyser votre base de données et générer automatiquement des schémas de collection.\",\n create_a_collection: \"Créer une collection\",\n create_collection_desc: \"Définissez manuellement votre première collection à partir de zéro à l'aide de l'éditeur visuel.\",\n read_the_docs: \"Lire la documentation\",\n read_the_docs_desc: \"Apprenez à personnaliser les champs, les vues, les actions et bien plus encore.\",\n explore_docs: \"Explorer la documentation\",\n want_to_customize_with_code: \"Vous souhaitez personnaliser avec du code ? Exécutez\",\n to_scaffold_a_local_project: \"pour générer un projet local.\",\n\n // ─── Collection Editor — Validation ──────────────────────────\n validation: \"Validation\",\n unique: \"Unique\",\n required_message: \"Message de champ obligatoire\",\n required_tooltip: \"Vous ne pourrez pas enregistrer cette entité si cette valeur n'est pas définie\",\n unique_tooltip: \"Il ne peut pas y avoir plusieurs entités avec la même valeur\",\n lowercase: \"Minuscules\",\n uppercase: \"Majuscules\",\n trim: \"Supprimer les espaces\",\n exact_length: \"Longueur exacte\",\n min_length: \"Longueur min.\",\n max_length: \"Longueur max.\",\n varchar_narrowing_warning: \"L'enregistrement réduit cette colonne {{columnType}} à {{max}} caractères. rebase db push demande confirmation avant de réduire une colonne, et la modification échoue tant qu'une valeur enregistrée est plus longue.\",\n matches_regex: \"Correspond à une regex\",\n not_valid_regexp: \"Expression régulière non valide\",\n regex_helper: \"ex. /^\\\\d+$/ pour les chiffres uniquement\",\n min_value: \"Valeur min.\",\n max_value: \"Valeur max.\",\n less_than: \"Inférieur à\",\n more_than: \"Supérieur à\",\n positive_value: \"Valeur positive\",\n negative_value: \"Valeur négative\",\n integer_value: \"Valeur entière\",\n\n // ─── Collection Editor — Property Edit ───────────────────────\n invalid_regular_expression: \"Expression régulière non valide\",\n must_specify_target_collection: \"Vous devez spécifier une collection cible pour le champ\",\n need_specify_repeat_field: \"Vous devez spécifier un champ de répétition\",\n need_specify_block_properties: \"Vous devez spécifier les propriétés de ce bloc\",\n incomplete_condition: \"Condition incomplète - veuillez sélectionner un champ\",\n field_name: \"Nom du champ\",\n\n // ─── Collection Editor — Display & Config ────────────────────\n kanban_column_property: \"Propriété de colonne Kanban\",\n select_a_property: \"Sélectionner une propriété\",\n kanban_property_not_found: \"La propriété \\\"{{property}}\\\" n'existe pas ou n'est pas une propriété de type string avec enum. Veuillez sélectionner une propriété valide ou effacer la sélection.\",\n no_enum_string_properties: \"Aucune propriété de type string avec enum trouvée. Ajoutez une propriété string avec enumValues pour utiliser la vue Kanban.\",\n kanban_column_description: \"Sélectionnez une propriété de type string avec des valeurs enum pour regrouper les entités en colonnes\",\n create_property: \"+ Créer la propriété \\\"{{property}}\\\"\",\n order_property: \"Propriété d'ordre\",\n order_property_not_found: \"La propriété \\\"{{property}}\\\" n'existe pas ou n'est pas une propriété numérique. Veuillez sélectionner une propriété valide ou effacer la sélection.\",\n no_number_properties: \"Aucune propriété numérique trouvée. Ajoutez une propriété numérique pour activer le tri.\",\n order_property_description: \"Sélectionnez une propriété numérique pour conserver l'ordre des éléments\",\n display_settings: \"Paramètres d'affichage\",\n default_row_size: \"Taille de ligne par défaut\",\n side_dialog_width: \"Largeur du dialogue latéral\",\n side_dialog_width_description: \"Définissez optionnellement la largeur (en pixels) du dialogue latéral des entités. La valeur par défaut est 768px\",\n inline_editing_enabled: \"Les données peuvent être modifiées directement dans la vue tableau\",\n inline_editing_disabled: \"Les données ne peuvent être modifiées que dans la vue formulaire\",\n inline_editing_description: \"Autoriser la modification des données directement dans la vue tableau, sans ouvrir la vue formulaire.\",\n include_json_view: \"Inclure la vue JSON\",\n no_json_view: \"Ne pas inclure la vue JSON\",\n json_view_description: \"Inclure la représentation JSON du document.\",\n not_found_suffix: \"introuvable\",\n\n // ─── Editor ─────────────────────────────────────────────────\n editor_text: \"Texte\",\n editor_text_description: \"Commencez simplement à taper du texte brut.\",\n editor_heading_1: \"Titre 1\",\n editor_heading_1_description: \"Grand titre de section.\",\n editor_heading_2: \"Titre 2\",\n editor_heading_2_description: \"Titre de section moyen.\",\n editor_heading_3: \"Titre 3\",\n editor_heading_3_description: \"Petit titre de section.\",\n editor_todo_list: \"Liste de tâches\",\n editor_todo_list_description: \"Suivez les tâches avec une liste de tâches.\",\n editor_bullet_list: \"Liste à puces\",\n editor_bullet_list_description: \"Créez une simple liste à puces.\",\n editor_numbered_list: \"Liste numérotée\",\n editor_numbered_list_description: \"Créez une liste avec numérotation.\",\n editor_quote: \"Citation\",\n editor_quote_description: \"Capturez une citation.\",\n editor_code: \"Code\",\n editor_code_description: \"Capturez un extrait de code.\",\n editor_image: \"Image\",\n editor_image_description: \"Téléchargez une image depuis votre ordinateur.\",\n editor_multiple: \"Multiple\",\n editor_link: \"Lien\",\n editor_save: \"Enregistrer\",\n editor_cancel: \"Annuler\",\n editor_remove_link: \"Supprimer le lien\",\n editor_paste_or_type_link: \"Coller ou taper le lien\",\n editor_invalid_url: \"Ce n'est pas un lien — essayez une adresse complète comme example.com\",\n editor_open_in_new_window: \"Ouvrir dans une nouvelle fenêtre\",\n editor_bold: \"Gras\",\n editor_italic: \"Italique\",\n editor_underline: \"Souligné\",\n editor_strikethrough: \"Barré\",\n editor_autocomplete: \"Saisie automatique\",\n editor_autocomplete_description: \"Ajoutez du texte basé sur le contexte.\",\n\n // ─── Text Search Dialog ─────────────────────────────────────\n text_search_dialog_title: \"Activer la recherche de texte\",\n text_search_local_not_recommended: \"La recherche de texte locale n'est pas recommandée pour les grandes collections.\",\n text_search_local_fetch_warning: \"Notez que l'activation de la recherche de texte locale nécessite de récupérer tous les documents de votre collection et de les stocker dans le navigateur. Cela peut être inefficace pour les grandes collections et entraîner des coûts supplémentaires.\",\n text_search_external_suggestion: \"Pour les collections plus grandes, il est recommandé d'utiliser un moteur de recherche externe comme Algolia ou Elastic Search, et d'attribuer un délégué de recherche à votre configuration.\",\n text_search_local_description: \"La recherche de texte locale est le moyen le plus simple d'activer la recherche de texte dans votre collection. Elle charge tous les documents de la collection dans le navigateur et effectue la recherche localement. C'est l'option recommandée pour les petites collections.\",\n text_search_own_implementation: \"Vous avez implémenté votre propre contrôleur de recherche de texte. Vous pouvez activer la recherche de texte pour votre collection.\",\n text_search_enable_for_collection: \"Activer pour cette collection\",\n text_search_enable_for_project: \"Activer pour le projet\",\n text_search_enabled_snackbar: \"Recherche de texte locale activée\",\n\n settings_heading: \"Paramètres\",\n settings_project_name: \"Nom du projet\",\n settings_default_language: \"Langue par défaut\",\n settings_default_language_caption: \"Sélectionnez la langue de base pour ce projet. Les utilisateurs peuvent modifier cette préférence dans leurs paramètres personnels.\",\n settings_enable_local_text_search: \"Activer la recherche de texte locale\",\n settings_local_text_search_caption: \"Activez la recherche de texte locale pour toutes les collections. Cela vous permettra de rechercher des champs textuels à l'aide de la barre de recherche Rebase. Notez que cette fonctionnalité peut entraîner un nombre de lectures plus élevé, car tous les champs textuels de vos collections seront indexés.\",\n settings_doc_history_all_collections: \"Historique des documents activé pour toutes les collections\",\n settings_doc_history_caption: \"Lorsque activé, toutes les collections auront l'historique activé par défaut. Vous pouvez modifier ce paramètre pour chaque collection. L'historique sera enregistré dans la sous-collection __history de chaque document.\",\n settings_theme: \"Thème\",\n settings_primary_color: \"Couleur primaire\",\n settings_secondary_color: \"Couleur secondaire\",\n settings_sample_theme_components: \"Exemples de composants du thème\",\n settings_drag_drop_logo: \"Glissez-déposez votre logo ici\",\n settings_security_rules: \"Règles de sécurité\",\n settings_security_rules_description: \"Rebase utilise les règles de sécurité Firebase pour restreindre l'accès aux données. Lors de la création d'un utilisateur via Rebase, l'attribut personnalisé rebaseUser est ajouté à l'utilisateur dans le projet client. En ajoutant les règles de sécurité suivantes, vous garantissez que les utilisateurs Rebase peuvent accéder aux données via Rebase.\",\n settings_security_rules_add_domain: \"N'oubliez pas d'ajouter le domaine {{domain}} aux domaines autorisés de votre fournisseur\",\n settings_security_rules_caption: \"Ces règles restreignent l'accès aux données aux seuls utilisateurs Rebase, mais n'appliquent pas les permissions au niveau de la base de données. Les permissions sont appliquées côté frontend, ce qui convient à la plupart des projets. Si vous devez appliquer les permissions au niveau de la base de données, vous pouvez modifier ces règles de sécurité. Les rôles attribués à un utilisateur sont définis comme attributs personnalisés dans le jeton d'authentification Firebase, vous pouvez donc les utiliser dans vos règles de sécurité.\",\n\n // ─── Studio: SQL Editor ─────────────────────────────────────\n studio_sql_executing_query: \"EXÉCUTION DE LA REQUÊTE…\",\n studio_sql_query_error: \"Erreur de requête\",\n studio_sql_run_query_placeholder: \"Exécutez une requête pour voir les résultats\",\n studio_sql_visual_execution_plan: \"Plan d'exécution visuel\",\n studio_sql_success: \"SUCCESS\",\n studio_sql_no_results: \"La requête s'est exécutée correctement mais n'a renvoyé aucun résultat.\",\n studio_sql_rows: \"Rows:\",\n studio_sql_time: \"Time:\",\n studio_sql_copy_markdown: \"Copier en Markdown\",\n studio_sql_export_json: \"Exporter en JSON\",\n studio_sql_export_json_typed: \"Exporter en JSON typé\",\n studio_sql_export_csv: \"Exporter en CSV\",\n studio_sql_format_sql: \"Formater le SQL\",\n studio_sql_explain: \"Explain\",\n studio_sql_limit_1000: \"Limit 1000\",\n studio_sql_remove_from_favorites: \"Retirer des favoris\",\n studio_sql_add_to_favorites: \"Ajouter aux favoris\",\n studio_sql_save: \"Save\",\n studio_sql_run: \"Run\",\n studio_sql_cancel_run: \"Annuler l'exécution\",\n studio_sql_run_cancelled: \"Exécution annulée.\",\n studio_sql_database: \"Database\",\n studio_sql_role: \"Role\",\n studio_sql_admin: \"(Admin)\",\n studio_sql_select_db: \"Choisir la base\",\n studio_sql_query_results: \"Résultats de la requête\",\n studio_sql_save_snippet: \"Enregistrer l'extrait SQL\",\n studio_sql_snippet_name: \"Nom de l'extrait\",\n studio_sql_snippet_name_placeholder: \"p. ex. Récupérer tous les utilisateurs\",\n studio_sql_snippet_saved_local: \"Cet extrait sera enregistré dans votre stockage local.\",\n studio_sql_cancel: \"Cancel\",\n studio_sql_dangerous_operation: \"Opération dangereuse détectée\",\n studio_sql_dangerous_operation_body: \"La requête que vous allez exécuter contient des opérations potentiellement destructrices (DELETE, DROP, TRUNCATE ou UPDATE sans WHERE). Voulez-vous vraiment continuer ?\",\n studio_sql_snippet_saved: \"Extrait « {{name}} » enregistré.\",\n studio_sql_markdown_copied: \"Résultats copiés en Markdown !\",\n studio_sql_markdown_copy_failed: \"Impossible de copier le Markdown dans le presse-papiers.\",\n studio_sql_row_updated: \"Ligne mise à jour.\",\n studio_sql_cannot_edit_missing_query: \"Impossible de modifier les lignes : la requête sous-jacente est absente.\",\n studio_sql_edit_unreadable_query: \"La console n'a pas pu lire cette requête et ne peut donc pas savoir de quelle ligne provient une cellule. Les cellules de ce résultat ne peuvent pas être modifiées.\",\n studio_sql_edit_not_a_select: \"Seules les lignes d'un SELECT unique peuvent être modifiées ici.\",\n studio_sql_edit_duplicate_column: \"Le résultat contient plusieurs colonnes nommées \\\"{{column}}\\\". Donnez à chacune son propre alias pour la modifier.\",\n studio_sql_edit_computed_column: \"\\\"{{column}}\\\" n'est pas lue depuis une colonne de table (elle est calculée, littérale ou agrégée) : il n'y a nulle part où réécrire la valeur.\",\n studio_sql_edit_not_a_table: \"\\\"{{column}}\\\" provient de {{table}}, qui n'est pas une table. Seules les lignes d'une table peuvent être modifiées ici.\",\n studio_sql_edit_inherited_table: \"D'autres tables héritent de {{table}} : sa clé primaire peut donc correspondre à une ligne dans chacune d'elles. Modifiez la ligne dans la table qui la contient.\",\n studio_sql_edit_no_primary_key: \"{{table}} n'a pas de clé primaire : une de ses lignes ne peut pas être retrouvée pour la mettre à jour.\",\n studio_sql_edit_key_missing: \"Pour modifier les colonnes de {{table}}, sélectionnez sa clé primaire ({{columns}}) sous un nom qu'aucune autre colonne du résultat ne porte.\",\n studio_sql_edit_table_read_twice: \"La requête lit {{table}} plus d'une fois : la clé d'une ligne et cette cellule peuvent provenir de lignes différentes.\",\n studio_sql_missing_pk: \"La ligne n'a pas les colonnes de clé primaire : {{columns}}. Mise à jour impossible en toute sécurité.\",\n studio_sql_cannot_edit_other_connection: \"Ces lignes ont été lues dans une autre base de données ou avec un autre rôle. Exécutez à nouveau la requête pour les modifier.\",\n studio_sql_update_failed: \"Échec de la mise à jour : {{message}}\",\n studio_sql_update_no_row: \"Aucune ligne n'a été mise à jour : la ligne a été modifiée ou supprimée depuis sa lecture, ou le rôle sélectionné ne peut pas la modifier. Exécutez à nouveau la requête pour voir ce qui est enregistré.\",\n studio_sql_ran_as_other_role: \"Ces lignes ont été lues en tant que {{ranAs}}, et non {{role}} : le changement de rôle est désactivé sur ce serveur (DISABLE_DB_ROLE_SWITCHING), donc chaque instruction s'exécute en tant que propriétaire de la connexion.\",\n studio_sql_result_truncated: \"Affichage des {{shown}} premières lignes sur {{total}} : la console conserve au plus 10 000 lignes, ou 32 Mo de valeurs, d'un résultat. Restreignez la requête, ou parcourez-la par pages avec LIMIT et OFFSET, pour voir le reste. La copie et l'export ne contiennent que les lignes affichées.\",\n studio_sql_download_full_csv: \"Télécharger le résultat complet en CSV\",\n studio_sql_downloading_full_csv: \"Téléchargement…\",\n studio_sql_download_full_failed: \"Impossible de télécharger le résultat complet : {{message}}\",\n studio_sql_role_switching_disabled: \"Le changement de rôle est désactivé sur ce serveur : chaque instruction s'exécute en tant que {{role}}, quel que soit le rôle choisi ici.\",\n studio_sql_execution_not_supported: \"La source de données actuelle ne prend pas en charge l'exécution de SQL.\",\n studio_sql_error_executing: \"Une erreur s'est produite lors de l'exécution de la requête.\",\n studio_sql_error_explaining: \"Une erreur s'est produite lors de l'analyse de la requête.\",\n studio_sql_explain_single_statement: \"Explain ne traite qu'une instruction à la fois. Sélectionnez l'instruction à expliquer et réessayez.\",\n studio_sql_save_first_to_favorite: \"Enregistrez l'extrait avant de l'ajouter aux favoris.\",\n studio_sql_collections_label: \"Collections:\",\n studio_sql_admin_collections_tooltip: \"Tables in this query that are mapped as admin collections\",\n studio_sql_edit_entity: \"Edit {{name}} #{{id}}\",\n studio_sql_sql_not_supported: \"Cette source de données ne prend pas en charge l'exécution de SQL\",\n studio_sql_fetch_error: \"Impossible de récupérer les options de connexion : {{message}}\",\n studio_sql_unexpected_format: \"Format de données inattendu : {{type}}\",\n studio_sql_no_tables: \"Aucune table trouvée dans cette base de données.\",\n studio_sql_schema_fetch_error: \"Impossible de récupérer le schéma : {{message}}\",\n\n // ─── Studio: SQL Editor Sidebar ──────────────────────────────\n studio_sql_sidebar_snippets: \"Snippets\",\n studio_sql_sidebar_history: \"History\",\n studio_sql_sidebar_schema: \"Schema\",\n studio_sql_sidebar_no_snippets: \"Aucun extrait enregistré\",\n studio_sql_sidebar_save_snippet_hint: \"Enregistrez une requête pour la retrouver ici.\",\n studio_sql_sidebar_no_history: \"Aucun historique\",\n studio_sql_sidebar_history_hint: \"Les requêtes exécutées apparaîtront ici.\",\n studio_sql_sidebar_delete_snippet: \"Supprimer l'extrait\",\n studio_sql_close_tab: \"Fermer cet onglet de requête\",\n studio_sql_new_tab: \"Nouvel onglet de requête\",\n\n // ─── Studio: Schema Browser ──────────────────────────────────\n studio_schema_tables: \"Tables\",\n studio_schema_loading: \"Chargement du schéma…\",\n studio_schema_no_tables: \"Aucune table trouvée\",\n studio_schema_retry: \"Retry\",\n studio_schema_primary_key: \"Clé primaire\",\n studio_schema_select_all: \"SELECT * FROM\",\n studio_schema_insert_into: \"INSERT INTO\",\n studio_schema_update: \"UPDATE\",\n studio_schema_delete_from: \"DELETE FROM\",\n studio_schema_columns: \"{{count}} colonnes\",\n\n // ─── Studio: RLS Editor ──────────────────────────────────────\n studio_rls_title: \"Sécurité au niveau des lignes\",\n studio_rls_description: \"Gérez les politiques RLS de vos tables\",\n studio_rls_enabled: \"RLS activée\",\n studio_rls_disabled: \"RLS désactivée\",\n studio_rls_no_rls: \"Sans RLS\",\n studio_rls_enable_rls: \"Activer la RLS\",\n studio_rls_disable_rls: \"Désactiver la RLS\",\n studio_rls_create_policy: \"Créer une politique\",\n studio_rls_policies: \"Policies\",\n studio_rls_no_policies: \"Aucune politique définie\",\n studio_rls_no_policies_desc: \"Cette table n'a aucune politique RLS. L'accès à toutes les lignes dépend de l'état de la RLS.\",\n studio_rls_add_first_policy: \"Ajouter votre première politique\",\n studio_rls_force_rls: \"Forcer la RLS\",\n studio_rls_force_rls_desc: \"Une fois activé, les politiques RLS s'appliquent aussi au propriétaire de la table.\",\n studio_rls_enable_force_rls: \"Activer la RLS forcée\",\n studio_rls_disable_force_rls: \"Désactiver la RLS forcée\",\n studio_rls_edit: \"Edit\",\n studio_rls_edit_generated: \"{{policy}} est générée par Rebase pour chaque collection : aucune règle à vous n'est à modifier. Ajoutez plutôt votre propre politique.\",\n studio_rls_edit_not_declared: \"{{policy}} n'existe que dans la base de données : aucune règle de votre code n'est à modifier. Importez-la d'abord dans le code.\",\n studio_rls_edit_several_operations: \"{{policy}} fait partie des politiques qu'une seule règle produit, une par opération. Modifiez cette règle dans le fichier source de la collection.\",\n studio_rls_delete: \"Delete\",\n studio_rls_confirm_delete_title: \"Supprimer la politique\",\n studio_rls_confirm_delete_body: \"Voulez-vous vraiment supprimer cette politique ? Cette action est irréversible.\",\n studio_rls_confirm_enable_title: \"Activer la sécurité au niveau des lignes\",\n studio_rls_confirm_enable_body: \"Activer la RLS restreindra l'accès aux lignes de cette table selon vos politiques. Assurez-vous d'avoir des politiques appropriées.\",\n studio_rls_confirm_disable_title: \"Désactiver la sécurité au niveau des lignes\",\n studio_rls_confirm_disable_body: \"Désactiver la RLS rendra toutes les lignes accessibles à tous les rôles. Voulez-vous vraiment continuer ?\",\n studio_rls_select_table: \"Sélectionnez une table\",\n studio_rls_no_tables: \"Aucune table disponible\",\n studio_rls_error: \"Erreur lors du chargement des politiques\",\n studio_rls_retry: \"Retry\",\n studio_rls_loading: \"Chargement des politiques…\",\n\n // ─── Studio: Policy Editor ───────────────────────────────────\n studio_policy_edit: \"Modifier la politique\",\n studio_policy_create: \"Créer une nouvelle politique\",\n studio_policy_defining_rules: \"Définition des règles d'accès pour\",\n studio_policy_cancel: \"Cancel\",\n studio_policy_save: \"Enregistrer la politique\",\n studio_policy_template: \"Partir d'un modèle (facultatif)\",\n studio_policy_select_template: \"Sélectionnez un modèle…\",\n studio_policy_name: \"Nom de la politique\",\n studio_policy_name_placeholder: \"Donnez à votre politique un nom explicite\",\n studio_policy_behavior: \"Comportement de la politique\",\n studio_policy_permissive: \"Permissive\",\n studio_policy_permissive_desc: \"Combinée avec « OR »\",\n studio_policy_restrictive: \"Restrictive\",\n studio_policy_restrictive_desc: \"Combinée avec « AND »\",\n studio_policy_command: \"Commande de la politique\",\n studio_policy_target_roles: \"Rôles ciblés\",\n studio_policy_roles_placeholder: \"Sélectionnez des rôles (public par défaut)\",\n studio_policy_using_expr: \"Expression USING\",\n studio_policy_using_expr_desc: \"S'applique aux lignes existantes (SELECT, UPDATE, DELETE)\",\n studio_policy_check_expr: \"Expression WITH CHECK\",\n studio_policy_check_expr_desc: \"S'applique aux lignes nouvelles ou modifiées (INSERT, UPDATE)\",\n studio_policy_help_title: \"Guide de la sécurité au niveau des lignes (RLS)\",\n studio_policy_help_intro: \"La sécurité au niveau des lignes (RLS) permet de restreindre les lignes qu'un utilisateur peut consulter ou modifier selon son état d'authentification ou ses rôles.\",\n studio_policy_help_step1_title: \"1. Sélectionnez un modèle\",\n studio_policy_help_step1_desc: \"Si vous débutez avec la RLS, le plus simple est de choisir un modèle prédéfini dans la liste. Il configure automatiquement la politique pour des cas courants comme « les utilisateurs peuvent modifier leurs propres lignes ».\",\n studio_policy_help_step2_title: \"2. Rôles ciblés\",\n studio_policy_help_step2_desc: \"Choisissez les rôles de base de données auxquels la politique s'applique. Chaque requête API s'exécute sous le même rôle, connecté ou non : qui est l'appelant se vérifie donc dans l'expression USING :\",\n studio_policy_help_role_public: \"Tous les rôles, donc toutes les requêtes. C'est ce que ciblent les modèles et les politiques propres à Rebase.\",\n studio_policy_help_role_rebase_user: \"Le rôle sous lequel s'exécutent les requêtes API. Il ne diffère de public que pour les connexions ouvertes directement sous un autre rôle.\",\n studio_policy_help_roles_not_users: \"Les utilisateurs connectés, les visiteurs anonymes et les administrateurs ne sont pas des rôles de base de données ici. Ciblez public et vérifiez rebase.uid() ou rebase.roles() dans l'expression, comme le font les modèles.\",\n studio_policy_help_step3_title: \"3. Expression USING\",\n studio_policy_help_step3_desc: \"Une condition SQL qui doit être vraie pour que les lignes existantes soient visibles ou modifiables (SELECT, UPDATE, DELETE).\",\n studio_policy_help_step3_example: \"Garantit que les utilisateurs ne voient que les lignes dont ils sont propriétaires.\",\n studio_policy_help_step4_title: \"4. Expression WITH CHECK\",\n studio_policy_help_step4_desc: \"Une condition SQL qui doit être vraie pour que les lignes nouvelles ou modifiées soient enregistrées (INSERT, UPDATE).\",\n studio_policy_help_step4_example: \"Généralement identique à l'expression USING lorsque les utilisateurs ne peuvent insérer ou modifier que leurs propres données.\",\n studio_policy_help_auth_vars_title: \"Variables d'authentification Rebase\",\n studio_policy_help_auth_vars_desc: \"Rebase fournit des fonctions natives que vous pouvez utiliser dans vos expressions :\",\n studio_policy_help_auth_uid: \"Renvoie l'identifiant de l'utilisateur courant sous forme de texte. Exemple :\",\n studio_policy_help_auth_jwt: \"Renvoie l'intégralité de la charge utile du JWT en JSONB, ce qui permet de vérifier des revendications personnalisées. Exemple :\",\n studio_policy_help_auth_roles: \"Renvoie les identifiants de rôle de l'utilisateur sous forme de chaîne séparée par des virgules. À utiliser de préférence avec :\",\n studio_policy_help_docs_cta: \"Pour en savoir plus sur les politiques Postgres, consultez la documentation officielle.\",\n studio_policy_help_read_docs: \"Lire la documentation\",\n studio_policy_help_got_it: \"J'ai compris !\",\n\n // ─── Studio: UI Actions ──────────────────────────────────────\n studio_add_kanban_column: \"Ajouter une colonne\",\n studio_add_kanban_column_title: \"Ajouter une colonne Kanban\",\n studio_add_kanban_column_name: \"Nom de la colonne\",\n studio_add_kanban_column_name_placeholder: \"Nom de la nouvelle colonne\",\n studio_add_kanban_column_add: \"Add\",\n studio_add_kanban_column_cancel: \"Cancel\",\n studio_collection_view_sql: \"Éditeur SQL\",\n studio_collection_view_admin: \"Vue d'administration\",\n studio_editor_collection_tooltip: \"Modifier le schéma de la collection\",\n studio_editor_collection_no_permission: \"Vous n'avez pas la permission de modifier cette collection\",\n studio_editor_collection_start_tooltip: \"Copier le chemin ou modifier le schéma\",\n studio_editor_collection_start_no_permission: \"Vous n'avez pas la permission de modifier cette collection\",\n studio_editor_collection_start_copied: \"Copied!\",\n studio_editor_entity_tooltip: \"Modifier le schéma de l'entité\",\n studio_editor_entity_no_permission: \"Vous n'avez pas la permission de modifier cette entité\",\n studio_home_edit_collection: \"Modifier la collection\",\n studio_home_delete_collection: \"Supprimer la collection\",\n studio_home_confirm_delete_title: \"Supprimer la collection ?\",\n studio_home_confirm_delete_body: \"Voulez-vous vraiment supprimer la collection « {{name}} » ? Cette action est irréversible.\",\n studio_kanban_setup: \"Configuration du Kanban\",\n studio_missing_reference: \"Référence manquante : {{path}}\",\n studio_missing_reference_create: \"Create\",\n studio_new_collection: \"Nouvelle collection\",\n studio_new_collection_card: \"Nouvelle collection\",\n studio_new_collection_no_permission: \"Vous n'avez pas les permissions pour créer des collections\",\n studio_property_add_column: \"Ajouter une nouvelle propriété\",\n studio_property_add_column_no_permission: \"Vous n'avez pas la permission d'ajouter de nouvelles propriétés\",\n studio_add_kanban_column_desc: \"Ajoute une nouvelle option à la propriété « {{property}} ». Une nouvelle colonne apparaîtra dans le tableau Kanban.\",\n studio_add_kanban_column_adding: \"Adding...\",\n studio_add_kanban_column_exists: \"Une colonne « {{label}} » existe déjà sur le tableau.\",\n studio_add_kanban_column_not_enum: \"« {{property}} » n’est pas une propriété à options : impossible d’y ajouter une colonne.\",\n studio_collection_view_edit: \"Edit\",\n studio_editor_collection_disabled: \"La modification des collections est désactivée\",\n studio_editor_collection_edit: \"Modifier la collection\",\n studio_editor_entity_save_first: \"Vous devez enregistrer le document avant de modifier le schéma\",\n studio_editor_entity_edit_schema: \"Modifier le schéma de ce formulaire\",\n studio_editor_collection_start_save_filter: \"Enregistrer le filtre et le tri par défaut\",\n studio_editor_collection_start_clear_filter: \"Effacer le filtre et le tri par défaut\",\n studio_editor_collection_start_reset_filter: \"Rétablir le filtre et le tri par défaut\",\n studio_editor_collection_start_saved: \"Configuration par défaut enregistrée\",\n studio_home_duplicate_collection: \"Duplicate\",\n studio_home_delete: \"Delete\",\n studio_home_confirm_delete_no_data: \"Supprime le fichier de la collection et son entrée dans index.ts, puis en fait un commit. La table et ses lignes restent dans la base de données. Refusé tant qu'une autre collection pointe vers celle-ci.\",\n studio_home_collection_deleted: \"Collection supprimée\",\n studio_kanban_configure: \"Configurer le Kanban\",\n studio_missing_reference_error: \"Aucune collection pour le chemin : {{path}}\",\n studio_new_collection_add: \"Ajouter une nouvelle collection\",\n studio_tool_schema: \"Collections\",\n studio_js_collections_tab: \"Collections\",\n studio_tool_schema_description: \"Définissez et gérez votre modèle de données et les schémas de vos collections\",\n studio_collections_editor_empty: \"Aucune collection pour l’instant.\",\n studio_collections_editor_pick: \"Sélectionnez une collection ou créez-en une pour commencer à la modifier.\",\n studio_collections_editor_read_only: \"Les collections ne peuvent pas être modifiées sur ce serveur.\",\n studio_collections_editor_unsaved: \"Cette collection a des modifications non enregistrées.\",\n\n // ─── Property field labels ──────────────────────────────────\n db_column_type: \"Type de colonne de base de données\",\n primary_key_unique_id: \"Clé primaire / ID unique\",\n spread_children_as_columns: \"Étendre les enfants en colonnes\",\n mode: \"Mode\",\n timezone: \"Fuseau horaire\",\n target_collection: \"Collection cible\",\n\n // ─── Storage property ───────────────────────────────────────\n storage_file_name: \"Nom du fichier\",\n storage_path: \"Chemin de stockage\",\n storage_max_size: \"Taille maximale (en octets)\",\n storage_resize_mode: \"Mode de redimensionnement\",\n storage_output_format: \"Format de sortie\",\n storage_max_width: \"Largeur maximale (px)\",\n storage_max_height: \"Hauteur maximale (px)\",\n storage_quality: \"Qualité (0-100)\",\n storage_file_upload_config: \"Configuration de téléchargement de fichier\",\n storage_image_resize_config: \"Configuration du redimensionnement d'image\",\n storage_all_file_types: \"Tous les types de fichiers autorisés\",\n storage_allowed_file_types: \"Types de fichiers autorisés\",\n storage_include_bucket_url: \"Inclure l'URL du bucket (s3://...) dans la valeur enregistrée\",\n storage_save_url: \"Enregistrer l'URL au lieu du chemin de stockage\",\n\n // ─── DateTime property ──────────────────────────────────────\n datetime_automatic_value: \"Valeur automatique\",\n\n // ─── Markdown property ──────────────────────────────────────\n markdown_paste_behavior: \"Comportement au collage\",\n\n // ─── Entity identity bar and inspector ──────────────────────\n entity_saved: \"Enregistré\",\n more_actions: \"Plus d'actions\",\n record_history: \"Historique\",\n inspect_record: \"Inspecter l'enregistrement\",\n inspect: \"Inspecter\",\n close_inspector: \"Fermer l'inspecteur\",\n open_in_live_site: \"Ouvrir sur le site en ligne\",\n\n // ─── Revision history ───────────────────────────────────────\n history_revert: \"Revenir à cette version\",\n history_revert_title: \"Revenir à cette version des données ?\",\n history_reverted: \"Retour à la version sélectionnée\",\n history_revert_error: \"Erreur lors du retour en arrière\",\n history_revert_dirty: \"Enregistrez ou annulez vos modifications avant de revenir en arrière\",\n history_empty: \"Aucun historique disponible\",\n history_empty_description: \"À chaque enregistrement, une nouvelle version est créée et conservée dans l'historique.\",\n history_new_entity: \"L'historique n'est disponible que pour les enregistrements existants\",\n history_no_more: \"Plus d'historique\",\n\n // ─── Studio: tools, groups and empty states ─────────────────\n // The admin's own three groups, read by `useNavigationGroupLabel` the same\n // way as the Studio ones below — the group *name* is an identifier the\n // ordering and the icons key off, and only the heading is translated.\n studio_group_views: \"Vues\",\n studio_group_admin: \"Administration\",\n studio_group_settings: \"Paramètres\",\n studio_group_database: \"Base de données\",\n studio_group_compute: \"Calcul\",\n studio_group_storage: \"Stockage\",\n studio_group_api: \"API\",\n studio_group_access_control: \"Contrôle d'accès\",\n studio_tool_sql: \"Console SQL\",\n studio_tool_sql_description: \"Exécuter des requêtes SQL\",\n studio_tool_js: \"Console JS\",\n studio_tool_js_description: \"Exécuter du JavaScript\",\n studio_tool_rls: \"Politiques RLS\",\n studio_tool_rls_description: \"Sécurité au niveau des lignes\",\n studio_tool_storage: \"Stockage\",\n studio_tool_storage_description: \"Gérer les fichiers de stockage\",\n studio_tool_cron: \"Tâches cron\",\n studio_tool_cron_description: \"Gérer les tâches planifiées\",\n studio_tool_schema_visualizer: \"Visualiseur de schéma\",\n studio_tool_schema_visualizer_description: \"Diagramme des entités de vos collections\",\n studio_tool_branches: \"Branches\",\n studio_tool_branches_description: \"Créer et gérer des branches de base de données\",\n studio_tool_backups: \"Sauvegardes\",\n studio_tool_backups_description: \"Télécharger les sauvegardes de la base de données\",\n studio_tool_api: \"Explorateur d'API\",\n studio_tool_api_description: \"Documentation d'API interactive et tests\",\n studio_tool_logs: \"Explorateur de journaux\",\n studio_tool_logs_description: \"Journaux système et de requêtes en temps réel\",\n studio_tool_api_keys: \"Clés d'API\",\n studio_tool_api_keys_description: \"Créer et gérer des clés d'API à portée limitée\",\n studio_backups_denied_title: \"Vous ne pouvez pas lister les sauvegardes de ce projet\",\n studio_backups_denied_hint: \"Le projet n'a rien d'anormal. Lister les sauvegardes nécessite une connexion administrateur, et le compte connecté a été refusé.\",\n studio_backups_read_failed: \"Impossible de lire les sauvegardes de ce projet\",\n studio_backups_downloading: \"Téléchargement…\",\n studio_backups_roles_file: \"Fichier des rôles\",\n studio_backups_roles_file_hint: \"Le .globals.sql enregistré avec cette sauvegarde. Il recrée les rôles de base de données auxquels se réfèrent les autorisations et la sécurité au niveau des lignes du dump, et `rebase db restore` le lit à côté du .dump : gardez les deux fichiers ensemble.\",\n studio_backups_no_roles_file: \"Aucun fichier des rôles\",\n studio_backups_no_roles_file_hint: \"Aucun .globals.sql n'a été enregistré avec cette sauvegarde. Une restauration dans un nouveau Postgres s'arrête à la première autorisation accordée à un rôle de base de données qui n'y existe pas.\",\n studio_backups_empty: \"Aucune sauvegarde pour l'instant.\",\n studio_backups_empty_hint: \"Créez-en une avec `rebase db backup`, ou planifiez-les avec un fichier cron qui exporte createBackupCron.\",\n studio_backups_last_run_failed: \"La dernière sauvegarde planifiée a échoué ({{when}})\",\n studio_backups_last_run_ok: \"Dernière sauvegarde planifiée : {{when}}\",\n studio_backups_never_ran: \"La sauvegarde planifiée ne s'est pas encore exécutée\",\n studio_backups_next_run: \"Prochaine exécution : {{when}}\",\n studio_backups_schedule_paused: \"Les sauvegardes planifiées sont en pause. Reprenez la tâche {{job}} dans Tâches cron.\",\n studio_backups_schedule_off_in_code: \"Les sauvegardes planifiées sont désactivées : la tâche {{job}} est déclarée désactivée dans son fichier cron. Avec le fichier cron de sauvegarde documenté, définir BACKUP_SCHEDULE les active.\",\n studio_backups_manual_run_ok: \"Dernière exécution manuelle : {{when}}\",\n studio_backups_manual_run_failed: \"La dernière exécution manuelle a échoué ({{when}})\",\n studio_backups_history_unreadable: \"Impossible de lire l'historique d'exécution de la sauvegarde planifiée : on ne sait donc pas si elle s'est exécutée. La raison figure dans le journal du serveur.\",\n studio_backups_job_refused: \"Les sauvegardes planifiées ne s'exécutent jamais : le planificateur a refusé la tâche {{job}}. Corrigez-la dans son fichier cron.\",\n studio_backups_local_disk_of_this_process: \"Voici les sauvegardes présentes sur le disque de ce processus serveur. Les sauvegardes planifiées s'exécutent dans un autre processus et écrivent sur son disque : elles n'apparaissent ici que si les deux partagent ce répertoire. Une destination s3:// ou gs:// se lit de la même façon depuis chaque processus.\",\n studio_backups_unavailable_title: \"Sauvegardes indisponibles\",\n studio_backups_unavailable_body: \"Ce backend n'expose pas l'API des sauvegardes.\",\n studio_cron_denied_title: \"Vous ne pouvez pas lister les tâches cron de ce projet\",\n studio_cron_denied_hint: \"Le projet n'a rien d'anormal. L'API cron est réservée aux administrateurs, et le compte connecté a été refusé.\",\n studio_cron_read_failed: \"Impossible de lire les tâches cron de ce projet\",\n studio_cron_logs_read_failed: \"Impossible de lire les exécutions de cette tâche\",\n studio_cron_logs_denied_title: \"Vous ne pouvez pas lire les exécutions de cette tâche\",\n studio_cron_run_succeeded: \"L'exécution de {{job}} a réussi\",\n studio_cron_last_error: \"Dernière erreur\",\n studio_cron_no_executions: \"Aucune exécution pour l’instant\",\n studio_cron_manual_run: \"manuelle\",\n studio_cron_job_enabled: \"Tâche activée\",\n studio_cron_job_paused: \"Tâche en pause\",\n studio_cron_refresh: \"Actualiser\",\n studio_cron_select_job: \"Sélectionnez une tâche cron pour voir ses détails\",\n studio_cron_pause_job: \"Mettre la tâche en pause\",\n studio_cron_enable_job: \"Activer la tâche\",\n studio_cron_run_now: \"Exécuter maintenant\",\n studio_cron_schedule: \"Planification\",\n studio_cron_last_run: \"Dernière exécution\",\n studio_cron_next_run: \"Prochaine exécution\",\n studio_cron_paused: \"En pause\",\n studio_cron_duration: \"Durée\",\n studio_cron_status: \"Statut\",\n studio_cron_total_runs: \"Exécutions au total\",\n studio_cron_failures: \"Échecs\",\n studio_cron_execution_history: \"Historique des exécutions\",\n studio_cron_refresh_logs: \"Actualiser les exécutions\",\n studio_cron_run_failed: \"L'exécution de {{job}} a échoué : {{error}}\",\n studio_cron_job_refused: \"La tâche {{job}} n'est pas planifiée : le planificateur l'a refusée\",\n studio_cron_files_failed: \"{{count}} fichiers cron n'ont pas pu être chargés et ne sont pas planifiés. La raison figure dans le journal du serveur.\",\n studio_cron_files_failed_one: \"{{count}} fichier cron n'a pas pu être chargé et n'est pas planifié. La raison figure dans le journal du serveur.\",\n studio_api_keys_denied_title: \"Vous ne pouvez pas lister les clés d'API de ce projet\",\n studio_api_keys_denied_hint: \"Le projet n'a rien d'anormal. Lister les clés de service requiert la portée keys:read, que le compte connecté ne détient pas.\",\n studio_api_keys_read_failed: \"Impossible de lire les clés d'API de ce projet\",\n studio_api_keys_empty_title: \"Aucune clé d'API pour l'instant\",\n studio_api_keys_empty_hint: \"Créez une clé pour permettre l'authentification de service à service\",\n studio_api_keys_revoke: \"Révoquer\",\n studio_api_keys_select_hint: \"Sélectionnez une clé d'API pour voir les détails\",\n studio_api_keys_revoke_confirmation: \"Confirmation de révocation\",\n studio_api_keys_name_label: \"Nom :\",\n studio_api_keys_access_label: \"Accès :\",\n studio_api_keys_admin_granted: \"Rôle d'administrateur accordé\",\n studio_api_keys_admin_granted_hint: \"la sécurité au niveau des lignes ne la limite pas : elle peut lire, modifier et supprimer toutes les lignes que ses portées atteignent, et passe les contrôles d'administrateur dans les fonctions et le stockage\",\n studio_api_keys_done: \"Terminé\",\n studio_api_keys_status_active: \"Active\",\n studio_api_keys_status_expired: \"Expirée\",\n studio_api_keys_status_revoked: \"Révoquée\",\n studio_api_keys_inactive_heading: \"Révoquées / Expirées\",\n studio_api_keys_stat_status: \"Statut\",\n studio_api_keys_stat_last_used: \"Dernière utilisation\",\n studio_api_keys_stat_expires: \"Expire\",\n studio_api_keys_never: \"Jamais\",\n studio_api_keys_stat_rate_limit: \"Limite de débit\",\n studio_api_keys_rate_limit_default: \"Par défaut (1000/15 min)\",\n studio_api_keys_stat_created_by: \"Créée par\",\n studio_api_keys_copy_failed: \"La copie a échoué\",\n studio_api_keys_tab_service: \"Clés de service\",\n studio_api_keys_tab_personal: \"Mes clés\",\n studio_api_keys_refresh: \"Actualiser\",\n studio_api_keys_new: \"Nouvelle\",\n studio_api_keys_personal_empty_title: \"Vous n'avez aucune clé personnelle\",\n studio_api_keys_personal_empty_hint: \"Une clé personnelle agit en tant que votre compte, pour les scripts et outils que vous exécutez vous-même\",\n studio_api_keys_personal_read_failed: \"Impossible de lire vos clés d'API\",\n studio_api_keys_personal_denied_title: \"Cette session ne peut pas avoir de clés personnelles\",\n studio_api_keys_personal_denied_hint: \"Une clé personnelle agit en tant que compte connecté. Les clés d'API, la clé de service et les sessions invitées n'ont pas de compte au nom duquel agir.\",\n studio_api_keys_personal_off_title: \"Les clés personnelles sont désactivées\",\n studio_api_keys_personal_off_body: \"Une clé personnelle agit en tant que votre propre compte et ne détient jamais plus que vous. Pour permettre aux comptes d'en créer, ajoutez ceci au bloc auth de la collection des utilisateurs :\",\n studio_api_keys_kind_service: \"Service\",\n studio_api_keys_kind_personal: \"Personnelle\",\n studio_api_keys_stat_kind: \"Type\",\n studio_api_keys_stat_owner: \"Propriétaire\",\n studio_api_keys_rate_limit_value: \"{{limit}}/15 min\",\n studio_api_keys_scopes: \"Portées\",\n studio_api_keys_no_scopes: \"Cette clé n'a aucune portée\",\n studio_api_keys_scopes_count: \"{{count}} portées\",\n studio_api_keys_plane_data: \"Données\",\n studio_api_keys_plane_data_hint: \"Lignes, fichiers et fonctions ; la sécurité au niveau des lignes décide toujours quelles lignes\",\n studio_api_keys_plane_admin: \"Administration\",\n studio_api_keys_plane_admin_hint: \"Utilisateurs, schéma, base de données, sauvegardes, cron et journaux\",\n studio_api_keys_plane_app: \"Application\",\n studio_api_keys_plane_app_hint: \"Déclarées par cette application dans auth.scopes\",\n studio_api_keys_target_all_collection: \"Toutes les collections\",\n studio_api_keys_target_all_bucket: \"Toutes les sources de stockage\",\n studio_api_keys_target_all_function: \"Toutes les fonctions\",\n studio_api_keys_target_all_other: \"Toute cible ({{kind}})\",\n studio_api_keys_target_some: \"Seulement celles que je choisis\",\n studio_api_keys_target_mode: \"Cibles\",\n studio_api_keys_target_pick: \"Choisir…\",\n studio_api_keys_target_typed_placeholder: \"Identifiants {{kind}}, séparés par des virgules\",\n studio_api_keys_target_missing: \"Choisissez au moins une cible pour « {{scope}} », ou passez à toutes.\",\n studio_api_keys_bucket_default: \"Bucket par défaut\",\n studio_api_keys_roles: \"Rôles RLS\",\n studio_api_keys_roles_rows_hint: \"Quelles lignes la clé peut lire, modifier et supprimer\",\n studio_api_keys_roles_service_only: \"S'exécute uniquement en tant que service. La sécurité au niveau des lignes ne lui accorde rien, sauf si une politique nomme ce rôle.\",\n studio_api_keys_roles_service_plus: \"S'exécute en tant que service plus ces rôles ; toute politique de sécurité au niveau des lignes qui en nomme un s'applique.\",\n studio_api_keys_admin_bypasses_rls: \"S'exécute en tant qu'admin : la sécurité au niveau des lignes ne la limite pas, elle peut donc lire, modifier et supprimer toutes les lignes que ses portées atteignent, et passe les contrôles d'administrateur dans les fonctions personnalisées et le stockage. Ses portées décident toujours des endpoints qu'elle peut appeler.\",\n studio_api_keys_admin_chip_tooltip: \"S'exécute avec le rôle admin : la sécurité au niveau des lignes ne limite ni ses lectures, ni ses écritures, ni ses suppressions\",\n studio_api_keys_personal_roles: \"S'exécute en tant que son propriétaire, avec les rôles de celui-ci au moment de chaque utilisation. Elle ne conserve jamais une portée que son propriétaire a perdue.\",\n studio_api_keys_revoke_title: \"Révoquer « {{name}} » ?\",\n studio_api_keys_revoke_body: \"Les requêtes authentifiées avec cette clé cessent immédiatement de fonctionner. Cette action est irréversible.\",\n studio_api_keys_revoked: \"Clé d'API révoquée\",\n studio_api_keys_created_title: \"Clé d'API créée\",\n studio_api_keys_copy_now: \"Copiez votre clé maintenant : elle ne sera plus affichée\",\n studio_api_keys_copy_now_hint: \"C'est la seule fois que la clé complète est affichée. Conservez-la en lieu sûr.\",\n studio_api_keys_copied: \"Clé d'API copiée dans le presse-papiers\",\n studio_api_keys_create_title: \"Créer une clé de service\",\n studio_api_keys_create_personal_title: \"Créer une clé personnelle\",\n studio_api_keys_create_intro: \"Une clé pour les scripts, les tâches cron et les agents. Elle agit en tant qu'identité de service du projet, pas en tant que personne, et n'atteint que les portées accordées ici.\",\n studio_api_keys_create_personal_intro: \"Une clé pour les scripts et outils que vous exécutez vous-même. Elle agit en tant que votre compte et ne peut jamais faire plus que vous.\",\n studio_api_keys_field_name: \"Nom\",\n studio_api_keys_field_name_placeholder: \"p. ex. Pipeline d'analyse\",\n studio_api_keys_section_scopes_hint: \"Quels endpoints la clé peut appeler\",\n studio_api_keys_scopes_read_failed: \"Impossible de lire les portées proposées par ce backend\",\n studio_api_keys_scopes_offered_note: \"Seules les portées que détient votre compte sont proposées. La gestion des clés (keys:read, keys:write) ne peut jamais figurer sur une clé.\",\n studio_api_keys_roles_explainer: \"Les portées décident des endpoints que la clé peut appeler ; les rôles décident des lignes qu'elle peut lire, modifier et supprimer. Toute clé de service s'exécute en tant que service, plus les rôles ajoutés ici. Laissez vide sauf si une politique de sécurité au niveau des lignes nomme un rôle dont la clé a besoin.\",\n studio_api_keys_roles_other: \"Autres rôles\",\n studio_api_keys_roles_other_placeholder: \"Noms de rôles séparés par des virgules\",\n studio_api_keys_roles_unavailable: \"Impossible de lister les rôles du projet ; saisissez les noms de rôles.\",\n studio_api_keys_roles_admin_warning: \"Avec admin, la sécurité au niveau des lignes ne limite pas la clé : elle peut lire, modifier et supprimer toutes les lignes que ses portées atteignent, et passe les contrôles d'administrateur dans les fonctions personnalisées et le stockage. Ses portées décident toujours des endpoints qu'elle peut appeler.\",\n studio_api_keys_section_limits: \"Limites\",\n studio_api_keys_expiry_7d: \"Dans 7 jours\",\n studio_api_keys_expiry_30d: \"Dans 30 jours\",\n studio_api_keys_expiry_90d: \"Dans 90 jours\",\n studio_api_keys_expiry_1y: \"Dans 1 an\",\n studio_api_keys_rate_limit_unit: \"par 15 min\",\n studio_api_keys_rate_limit_hint: \"Laissez vide pour la valeur par défaut du serveur : 1000 requêtes par fenêtre de 15 minutes.\",\n studio_api_keys_rate_limit_scope: \"La limite compte les requêtes de données, de fichiers et de fonctions de la clé via HTTP, le socket temps réel et MCP. Les opérations d'administration ne sont pas limitées.\",\n studio_api_keys_summary_title: \"Cette clé pourra\",\n studio_api_keys_summary_empty: \"Rien pour l'instant : choisissez au moins une portée.\",\n studio_api_keys_summary_roles: \"La sécurité au niveau des lignes la traite en tant que {{roles}}\",\n studio_api_keys_block_name: \"Nommez d'abord la clé\",\n studio_api_keys_block_scopes: \"Choisissez au moins une portée\",\n studio_api_keys_block_targets: \"Terminez le choix des cibles\",\n studio_api_keys_creating: \"Création…\",\n studio_api_keys_create: \"Créer la clé\",\n studio_api_keys_unsupported: \"Ce client ne peut pas créer de clés d'API.\",\n studio_api_keys_error_invalid_scopes: \"Certaines portées ne sont pas valides\",\n studio_api_keys_error_scope_exceeds_creator: \"Une clé ne peut pas détenir plus que votre compte\",\n studio_api_keys_error_role_exceeds_creator: \"Une clé ne peut pas s'exécuter avec un rôle que vous ne détenez pas\",\n studio_api_keys_error_unknown_scope_target: \"Une cible n'existe pas sur ce backend\",\n studio_api_keys_error_key_management_scope: \"La gestion des clés ne peut pas figurer sur une clé\",\n studio_api_keys_error_generic: \"La clé n'a pas été créée\",\n studio_scope_data_read_label: \"Lire les données\",\n studio_scope_data_read_description: \"Lire les lignes des collections, à travers la sécurité au niveau des lignes de l'appelant.\",\n studio_scope_data_write_label: \"Créer et modifier des données\",\n studio_scope_data_write_description: \"Créer et modifier des lignes dans les collections, à travers la sécurité au niveau des lignes de l'appelant.\",\n studio_scope_data_delete_label: \"Supprimer des données\",\n studio_scope_data_delete_description: \"Supprimer des lignes des collections, à travers la sécurité au niveau des lignes de l'appelant.\",\n studio_scope_storage_read_label: \"Lire les fichiers\",\n studio_scope_storage_read_description: \"Lister et télécharger les fichiers stockés.\",\n studio_scope_storage_write_label: \"Téléverser des fichiers\",\n studio_scope_storage_write_description: \"Téléverser des fichiers et créer des dossiers.\",\n studio_scope_storage_delete_label: \"Supprimer des fichiers\",\n studio_scope_storage_delete_description: \"Supprimer les fichiers stockés.\",\n studio_scope_functions_invoke_label: \"Appeler des fonctions\",\n studio_scope_functions_invoke_description: \"Appeler les fonctions personnalisées du backend. Une fonction peut faire tout ce que fait son code.\",\n studio_scope_users_read_label: \"Voir les utilisateurs\",\n studio_scope_users_read_description: \"Lister les comptes utilisateur et leurs rôles.\",\n studio_scope_users_write_label: \"Gérer les utilisateurs\",\n studio_scope_users_write_description: \"Créer, modifier et supprimer des comptes, réinitialiser des mots de passe et des seconds facteurs, et attribuer des rôles jusqu'à ceux du détenteur.\",\n studio_scope_schema_read_label: \"Voir le schéma\",\n studio_scope_schema_read_description: \"Lire le schéma des collections, planifier des changements de schéma et lancer l'audit RLS.\",\n studio_scope_schema_write_label: \"Modifier le schéma\",\n studio_scope_schema_write_description: \"Appliquer des changements de schéma : modifie les fichiers de collections et altère la base de données.\",\n studio_scope_database_read_label: \"Inspecter la base de données\",\n studio_scope_database_read_description: \"Lister les bases de données, les tables, les rôles Postgres et les branches.\",\n studio_scope_database_write_label: \"Exécuter du SQL\",\n studio_scope_database_write_description: \"Exécuter du SQL en tant que propriétaire de la base, hors de la sécurité au niveau des lignes, et créer ou supprimer des branches.\",\n studio_scope_backups_read_label: \"Télécharger les sauvegardes\",\n studio_scope_backups_read_description: \"Lister et télécharger les sauvegardes de la base de données — toutes les lignes, hors de la sécurité au niveau des lignes.\",\n studio_scope_cron_read_label: \"Voir les tâches cron\",\n studio_scope_cron_read_description: \"Lister les tâches cron et lire leur historique d'exécution.\",\n studio_scope_cron_write_label: \"Exécuter les tâches cron\",\n studio_scope_cron_write_description: \"Déclencher les tâches cron et les activer ou les désactiver.\",\n studio_scope_logs_read_label: \"Lire les journaux du serveur\",\n studio_scope_logs_read_description: \"Lire les journaux de requêtes et d'application du serveur.\",\n studio_scope_keys_read_label: \"Voir les clés de service\",\n studio_scope_keys_read_description: \"Lister les clés de service du projet. Jamais attribuable à une clé.\",\n studio_scope_keys_write_label: \"Gérer les clés de service\",\n studio_scope_keys_write_description: \"Créer, modifier et révoquer les clés de service du projet. Jamais attribuable à une clé.\",\n studio_branches_denied_title: \"Vous ne pouvez pas lister les branches de ce projet\",\n studio_branches_denied_hint: \"Le projet n'a rien d'anormal. Le branchement passe par la connexion administrateur, et le compte connecté a été refusé.\",\n studio_branches_read_failed: \"Impossible de lire les branches de ce projet\",\n studio_schema_no_collections: \"Aucune collection déclarée\",\n studio_schema_no_collections_body: \"Il n'y a encore rien à dessiner. Ajoutez une collection dans config/collections/, ou ouvrez « Modifier les collections » pour en ajouter une ici.\",\n studio_schema_introspect_hint: \"Sur une base de données qui a déjà des tables, rebase schema introspect écrit les fichiers de collection pour vous.\",\n studio_schema_visualizer_source: \"Dessiné à partir de vos collections : tables, colonnes, types et relations tels qu'elles les déclarent. Seuls les indicateurs RLS sont lus dans la base de données.\",\n studio_schema_laying_out: \"Disposition du diagramme…\",\n studio_schema_neighbourhood: \"{{shown}} tables sur {{total}} affichées : {{table}} et les tables autour. Choisissez-en une autre dans la liste pour vous déplacer.\",\n studio_schema_neighbourhood_depth_1: \"À 1 relation\",\n studio_schema_neighbourhood_depth_2: \"À 2 relations\",\n\n\n // ─── Studio: RLS editor confirmations ───────────────────────\n studio_rls_enable_confirm_title: \"Activer la sécurité au niveau des lignes ?\",\n studio_rls_enable_confirm_body: \"Tant qu'aucune politique ne l'autorise, aucune ligne de {{table}} n'est lisible. Postgres refuse par défaut.\",\n studio_rls_disable_confirm_title: \"Désactiver la sécurité au niveau des lignes ?\",\n studio_rls_disable_confirm_body: \"Toutes les politiques de {{table}} cessent de s'appliquer. Quiconque atteint la table peut lire et écrire chaque ligne.\",\n studio_rls_drop_policy_title: \"Supprimer cette politique ?\",\n studio_rls_drop_policy_body: \"{{policy}} est retirée de {{table}} dans la base de données. Rien n'est écrit dans votre code, un déploiement peut donc la rétablir.\",\n studio_rls_unapplied: \"Non appliquée\",\n studio_rls_unapplied_tooltip: \"Déclarée dans votre code, pas encore dans la base de données. Rebase l'applique au prochain démarrage du serveur ou au prochain `rebase db push` ; si elle manque toujours ensuite, le journal du serveur indique pourquoi.\",\n studio_rls_drift: \"Diffère du code\",\n studio_rls_drift_tooltip: \"Dans la base de données, {{fields}} diffèrent de ce que le projet déclare pour cette politique. La version déclarée revient au prochain démarrage du serveur ou au prochain `rebase db push`.\",\n studio_rls_reapplied_on_start: \"Rebase gère les politiques de {{table}}. À chaque démarrage du serveur, et à chaque `rebase db push`, il réactive la sécurité au niveau des lignes sur cette table et recrée chaque politique que le projet déclare pour elle. Une modification faite ici à l'une de ces politiques, ou à l'interrupteur RLS, ne dure que jusque-là. Une politique que vous ajoutez sous un nom à vous est conservée.\",\n studio_rls_disable_reapplied: \"Rebase gère {{table}} : la sécurité au niveau des lignes est réactivée au prochain démarrage du serveur ou au prochain `rebase db push`.\",\n studio_rls_nothing_changed: \"Rien n'a changé, donc rien n'a été enregistré.\",\n\n\n // ─── Studio: empty states that name a remedy ────────────────\n studio_branches_unavailable_title: \"Le branchement de base de données n'est pas disponible\",\n studio_branches_unavailable_body: \"Le branchement requiert un backend Postgres avec une connexion administrateur. Définissez ADMIN_CONNECTION_STRING dans l'environnement du backend.\",\n studio_backups_not_configured_title: \"Les sauvegardes ne sont pas configurées\",\n studio_backups_not_configured_body: \"Définissez BACKUP_DESTINATION sur un chemin local ou une URL s3:// ou gs://, puis créez une sauvegarde avec `rebase db backup` ou un cron planifié.\",\n studio_cron_empty_title: \"Aucune tâche cron enregistrée\",\n studio_cron_empty_body: \"Ajoutez un fichier dans backend/crons/ qui exporte par défaut une CronJobDefinition.\",\n studio_read_the_docs: \"Consulter la documentation\",\n\n\n // ─── Studio: storage browser ────────────────────────────────\n studio_storage_root: \"Racine\",\n studio_storage_root_folder: \"racine\",\n studio_storage_loading: \"Chargement…\",\n studio_storage_denied_title: \"Les règles de stockage de ce projet ont refusé ce listage\",\n studio_storage_denied_hint: \"Le projet n'a rien d'anormal. Son hook storageAuthorize décide qui peut lire quelles clés, et il a refusé ce chemin pour le compte connecté — généralement parce qu'un listage doit nommer un préfixe que la règle reconnaît plutôt que la racine du bucket.\",\n studio_storage_read_failed: \"Impossible de lire le stockage de ce projet\",\n studio_storage_empty: \"Ce dossier est vide\",\n studio_storage_new_folder: \"Nouveau dossier\",\n studio_storage_upload_files: \"Téléverser des fichiers\",\n studio_storage_upload: \"Téléverser\",\n studio_storage_upload_count: \"Téléverser ({{count}})\",\n studio_storage_uploading: \"Téléversement…\",\n studio_storage_upload_failed: \"Échec du téléversement\",\n studio_storage_upload_dialog_title: \"Téléverser des fichiers\",\n studio_storage_upload_to: \"vers\",\n studio_storage_drop_or_browse: \"Déposez des fichiers ici ou cliquez pour parcourir\",\n studio_storage_any_file_type: \"Tous les types de fichiers sont pris en charge\",\n studio_storage_selected_files: \"Fichiers sélectionnés ({{count}})\",\n studio_storage_drop_to_upload: \"Déposez les fichiers pour les téléverser\",\n studio_storage_files_uploaded: \"{{count}} fichiers téléversés avec succès\",\n studio_storage_files_uploaded_one: \"{{count}} fichier téléversé avec succès\",\n studio_storage_cancel: \"Annuler\",\n studio_storage_create: \"Créer\",\n studio_storage_download: \"Télécharger\",\n studio_storage_delete: \"Supprimer\",\n studio_storage_deselect: \"Désélectionner\",\n studio_storage_refresh: \"Actualiser\",\n studio_storage_go_up: \"Remonter d'un niveau\",\n studio_storage_grid_view: \"Vue grille\",\n studio_storage_list_view: \"Vue liste\",\n studio_storage_default_source: \"Par défaut\",\n studio_storage_name: \"Nom\",\n studio_storage_type: \"Type\",\n studio_storage_type_unknown: \"Inconnu\",\n studio_storage_size: \"Taille\",\n studio_storage_extension: \"Extension\",\n studio_storage_path: \"Chemin\",\n studio_storage_url: \"URL\",\n studio_storage_copy_url: \"Copier l'URL\",\n studio_storage_url_copied: \"Copié !\",\n studio_storage_url_temporary: \"Lien temporaire : toute personne qui l'a peut ouvrir ce fichier pendant {{minutes}} min au plus. Télécharger et Copier l'URL en génèrent un nouveau.\",\n studio_storage_url_public: \"Lien public : tout le monde peut ouvrir ce fichier, et le lien n'expire pas.\",\n studio_storage_folder: \"Dossier\",\n studio_storage_folders: \"Dossiers\",\n studio_storage_files_heading: \"Fichiers ({{count}})\",\n studio_storage_file_count: \"{{count}} fichiers\",\n studio_storage_file_count_one: \"{{count}} fichier\",\n studio_storage_folder_count: \"{{count}} dossiers\",\n studio_storage_folder_count_one: \"{{count}} dossier\",\n studio_storage_selected_count: \"{{count}} sélectionnés\",\n studio_storage_selected_count_one: \"{{count}} sélectionné\",\n studio_storage_items_selected: \"{{count}} éléments sélectionnés\",\n studio_storage_items_selected_one: \"{{count}} élément sélectionné\",\n studio_storage_selected_label: \"Sélectionné :\",\n studio_storage_no_preview: \"Aucun aperçu disponible\",\n studio_storage_file_info: \"Informations sur le fichier\",\n studio_storage_delete_file_title: \"Supprimer le fichier\",\n studio_storage_delete_file_question: \"Supprimer le fichier ?\",\n studio_storage_delete_file_body: \"Voulez-vous vraiment supprimer « {{name}} » ? Cette action est irréversible.\",\n studio_storage_delete_confirmation_title: \"Confirmer la suppression\",\n studio_storage_delete_question: \"Supprimer ?\",\n studio_storage_delete_items_question: \"Supprimer {{count}} éléments ?\",\n studio_storage_delete_items_question_one: \"Supprimer {{count}} élément ?\",\n studio_storage_delete_folder_question: \"Supprimer le dossier « {{name}} » ?\",\n studio_storage_delete_selection_body: \"Tous les fichiers et dossiers sélectionnés seront définitivement supprimés, y compris leur contenu. Cette action est irréversible.\",\n studio_storage_delete_folder_body: \"Le dossier et tout son contenu seront définitivement supprimés. Cette action est irréversible.\",\n studio_storage_file_deleted: \"« {{name}} » supprimé\",\n studio_storage_folder_deleted: \"Dossier « {{name}} » supprimé\",\n studio_storage_items_deleted: \"{{count}} éléments supprimés\",\n studio_storage_items_deleted_one: \"{{count}} élément supprimé\",\n studio_storage_delete_incomplete: \"{{count}} éléments sont toujours là après la suppression : {{names}}\",\n studio_storage_delete_incomplete_one: \"« {{names}} » est toujours là après la suppression\",\n studio_storage_replace_title: \"Remplacer des fichiers\",\n studio_storage_replace_question: \"Remplacer {{count}} fichiers ?\",\n studio_storage_replace_question_one: \"Remplacer {{count}} fichier ?\",\n studio_storage_replace_body: \"{{names}} sont déjà dans ce dossier. L’envoi les remplace, et les fichiers actuels sont perdus.\",\n studio_storage_replace_body_one: \"« {{names}} » est déjà dans ce dossier. L’envoi le remplace, et le fichier actuel est perdu.\",\n studio_storage_replace: \"Remplacer\",\n studio_storage_new_folder_title: \"Nouveau dossier\",\n studio_storage_folder_name: \"Nom du dossier\",\n studio_storage_folder_name_placeholder: \"Saisissez le nom du dossier\",\n studio_storage_created_in: \"Sera créé dans\",\n studio_storage_folder_name_has_slash: \"Le nom du dossier ne peut pas contenir de barres obliques\",\n studio_storage_folder_exists: \"Le dossier « {{name}} » existe déjà\",\n studio_storage_folder_created: \"Dossier « {{name}} » créé\",\n studio_storage_create_folder_failed: \"Impossible de créer le dossier\",\n\n // ─── Insights plugin ─────────────────────────────────────────\n insights_period_last_days: \"{{count}} derniers jours\",\n insights_period_last_days_one: \"Dernier jour\",\n insights_previous_period_value: \"{{count}} jours précédents : {{value}}\",\n insights_previous_period_value_one: \"Jour précédent : {{value}}\",\n insights_change_up: \"Hausse : {{change}}\",\n insights_change_down: \"Baisse : {{change}}\",\n insights_change_none: \"Aucun changement\",\n\n // ─── Icon button names ───────────────────────────────────────\n add_to_favourites: \"Ajouter aux favoris\",\n remove_from_favourites: \"Retirer des favoris\",\n change_value_type: \"Changer le type\",\n refresh: \"Actualiser\",\n create_branch: \"Créer une branche\",\n new_tab: \"Nouvel onglet\",\n close_tab: \"Fermer l'onglet\",\n help: \"Aide\",\n copy_table_name: \"Copier le nom de la table\",\n copy_column_name: \"Copier le nom de la colonne\",\n generate_sql_templates: \"Générer des modèles SQL\",\n select_row: \"Sélectionner {{id}}\",\n select: \"Sélectionner\",\n open_view: \"Ouvrir la vue\"\n};\n"],"mappings":"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"}
|