Backend (handlers_catalogue.go):
- POST /api/admin/text-gen/tagline — 1-sentence marketing hook
- POST /api/admin/text-gen/genres + /apply — LLM genre suggestions, editable + persist
- POST /api/admin/text-gen/content-warnings — mature theme detection
- POST /api/admin/text-gen/quality-score — 1–5 description quality rating
- POST /api/admin/catalogue/batch-covers (SSE) — generate covers for books missing one
- POST /api/admin/catalogue/batch-covers/cancel — cancel via in-memory job registry
- POST /api/admin/catalogue/refresh-metadata/{slug} (SSE) — description + cover refresh
Frontend:
- text-gen: 4 new tabs (Tagline, Genres, Warnings, Quality) with book autocomplete
- image-gen: localStorage style presets (save/apply/delete named prompt templates)
- catalogue-tools: new admin page with batch cover SSE progress + cancel
- admin nav: "Catalogue Tools" link added
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
476 lines
22 KiB
JSON
476 lines
22 KiB
JSON
{
|
||
"$schema": "https://inlang.com/schema/inlang-message-format",
|
||
|
||
"nav_library": "Bibliothèque",
|
||
"nav_catalogue": "Catalogue",
|
||
"nav_feed": "Fil",
|
||
"nav_feedback": "Retour",
|
||
"nav_admin": "Admin",
|
||
"nav_profile": "Profil",
|
||
"nav_sign_in": "Connexion",
|
||
"nav_sign_out": "Déconnexion",
|
||
"nav_toggle_menu": "Menu",
|
||
"nav_admin_panel": "Panneau admin",
|
||
|
||
"footer_library": "Bibliothèque",
|
||
"footer_catalogue": "Catalogue",
|
||
"footer_feedback": "Retour",
|
||
"footer_disclaimer": "Avertissement",
|
||
"footer_privacy": "Confidentialité",
|
||
"footer_dmca": "DMCA",
|
||
"footer_copyright": "© {year} libnovel",
|
||
"footer_dev": "dev",
|
||
|
||
"home_title": "libnovel",
|
||
"home_stat_books": "Livres",
|
||
"home_stat_chapters": "Chapitres",
|
||
"home_stat_in_progress": "En cours",
|
||
"home_continue_reading": "Continuer la lecture",
|
||
"home_view_all": "Voir tout",
|
||
"home_recently_updated": "Récemment mis à jour",
|
||
"home_from_following": "Des personnes que vous suivez",
|
||
"home_empty_title": "Votre bibliothèque est vide",
|
||
"home_empty_body": "Découvrez des romans et ajoutez-les à votre bibliothèque.",
|
||
"home_discover_novels": "Découvrir des romans",
|
||
"home_via_reader": "via {username}",
|
||
"home_chapter_badge": "ch.{n}",
|
||
|
||
"player_generating": "Génération… {percent}%",
|
||
"player_loading": "Chargement…",
|
||
"player_chapters": "Chapitres",
|
||
"player_chapter_n": "Chapitre {n}",
|
||
"player_toggle_chapter_list": "Liste des chapitres",
|
||
"player_chapter_list_label": "Liste des chapitres",
|
||
"player_close_chapter_list": "Fermer la liste des chapitres",
|
||
"player_rewind_15": "Reculer de 15 secondes",
|
||
"player_skip_30": "Avancer de 30 secondes",
|
||
"player_back_15": "−15 s",
|
||
"player_forward_30": "+30 s",
|
||
"player_play": "Lecture",
|
||
"player_pause": "Pause",
|
||
"player_speed_label": "Vitesse {speed}x",
|
||
"player_seek_label": "Progression du chapitre",
|
||
"player_change_speed": "Changer la vitesse",
|
||
"player_auto_next_on": "Suivant auto activé",
|
||
"player_auto_next_off": "Suivant auto désactivé",
|
||
"player_auto_next_ready": "Suivant auto — Ch.{n} prêt",
|
||
"player_auto_next_preparing": "Suivant auto — préparation Ch.{n}…",
|
||
"player_auto_next_aria": "Suivant auto {state}",
|
||
"player_go_to_chapter": "Aller au chapitre",
|
||
"player_close": "Fermer le lecteur",
|
||
|
||
"login_page_title": "Connexion — libnovel",
|
||
"login_heading": "Se connecter à libnovel",
|
||
"login_subheading": "Choisissez un fournisseur pour continuer",
|
||
"login_continue_google": "Continuer avec Google",
|
||
"login_continue_github": "Continuer avec GitHub",
|
||
"login_terms_notice": "En vous connectant, vous acceptez nos conditions d'utilisation.",
|
||
"login_error_oauth_state": "Connexion annulée ou expirée. Veuillez réessayer.",
|
||
"login_error_oauth_failed": "Impossible de se connecter au fournisseur. Veuillez réessayer.",
|
||
"login_error_oauth_no_email": "Votre compte n'a pas d'adresse e-mail vérifiée. Ajoutez-en une et réessayez.",
|
||
|
||
"books_page_title": "Bibliothèque — libnovel",
|
||
"books_heading": "Votre bibliothèque",
|
||
"books_empty_title": "Aucun livre pour l'instant",
|
||
"books_empty_body": "Ajoutez des livres à votre bibliothèque en visitant une page de livre.",
|
||
"books_browse_catalogue": "Parcourir le catalogue",
|
||
"books_chapter_count": "{n} chapitres",
|
||
"books_last_read": "Dernier lu : Ch.{n}",
|
||
"books_reading_progress": "Ch.{current} / {total}",
|
||
"books_remove": "Supprimer",
|
||
|
||
"catalogue_page_title": "Catalogue — libnovel",
|
||
"catalogue_heading": "Catalogue",
|
||
"catalogue_search_placeholder": "Rechercher des romans…",
|
||
"catalogue_filter_genre": "Genre",
|
||
"catalogue_filter_status": "Statut",
|
||
"catalogue_filter_sort": "Trier",
|
||
"catalogue_sort_popular": "Populaire",
|
||
"catalogue_sort_new": "Nouveau",
|
||
"catalogue_sort_top_rated": "Mieux notés",
|
||
"catalogue_sort_rank": "Rang",
|
||
"catalogue_status_all": "Tous",
|
||
"catalogue_status_ongoing": "En cours",
|
||
"catalogue_status_completed": "Terminé",
|
||
"catalogue_genre_all": "Tous les genres",
|
||
"catalogue_clear_filters": "Effacer",
|
||
"catalogue_reset": "Réinitialiser",
|
||
"catalogue_no_results": "Aucun roman trouvé.",
|
||
"catalogue_loading": "Chargement…",
|
||
"catalogue_load_more": "Charger plus",
|
||
"catalogue_results_count": "{n} résultats",
|
||
|
||
"book_detail_page_title": "{title} — libnovel",
|
||
"book_detail_signin_to_save": "Connectez-vous pour sauvegarder",
|
||
"book_detail_add_to_library": "Ajouter à la bibliothèque",
|
||
"book_detail_remove_from_library": "Retirer de la bibliothèque",
|
||
"book_detail_read_now": "Lire maintenant",
|
||
"book_detail_continue_reading": "Continuer la lecture",
|
||
"book_detail_start_reading": "Commencer la lecture",
|
||
"book_detail_chapters": "{n} chapitres",
|
||
"book_detail_status": "Statut",
|
||
"book_detail_author": "Auteur",
|
||
"book_detail_genres": "Genres",
|
||
"book_detail_description": "Description",
|
||
"book_detail_source": "Source",
|
||
"book_detail_rescrape": "Réextraire",
|
||
"book_detail_scraping": "Extraction en cours…",
|
||
"book_detail_in_library": "Dans la bibliothèque",
|
||
|
||
"chapters_page_title": "Chapitres — {title}",
|
||
"chapters_heading": "Chapitres",
|
||
"chapters_back_to_book": "Retour au livre",
|
||
"chapters_reading_now": "En cours de lecture",
|
||
"chapters_empty": "Aucun chapitre extrait pour l'instant.",
|
||
|
||
"reader_page_title": "{title} — Ch.{n} — libnovel",
|
||
"reader_play_narration": "Lire la narration",
|
||
"reader_generating_audio": "Génération audio…",
|
||
"reader_signin_for_audio": "Narration audio disponible",
|
||
"reader_signin_audio_desc": "Connectez-vous pour écouter ce chapitre narré par l'IA.",
|
||
"reader_audio_error": "Échec de la génération audio.",
|
||
"reader_prev_chapter": "Chapitre précédent",
|
||
"reader_next_chapter": "Chapitre suivant",
|
||
"reader_back_to_chapters": "Retour aux chapitres",
|
||
"reader_chapter_n": "Chapitre {n}",
|
||
"reader_change_voice": "Changer de voix",
|
||
"reader_voice_panel_title": "Sélectionner une voix",
|
||
"reader_voice_kokoro": "Voix Kokoro",
|
||
"reader_voice_pocket": "Voix Pocket-TTS",
|
||
"reader_voice_play_sample": "Écouter un extrait",
|
||
"reader_voice_stop_sample": "Arrêter l'extrait",
|
||
"reader_voice_selected": "Sélectionné",
|
||
"reader_close_voice_panel": "Fermer le panneau vocal",
|
||
"reader_auto_next": "Suivant auto",
|
||
"reader_speed": "Vitesse",
|
||
"reader_preview_notice": "Aperçu — ce chapitre n'a pas été entièrement extrait.",
|
||
|
||
"profile_page_title": "Profil — libnovel",
|
||
"profile_heading": "Profil",
|
||
"profile_avatar_label": "Avatar",
|
||
"profile_change_avatar": "Changer l'avatar",
|
||
"profile_username": "Nom d'utilisateur",
|
||
"profile_email": "E-mail",
|
||
"profile_change_password": "Changer le mot de passe",
|
||
"profile_current_password": "Mot de passe actuel",
|
||
"profile_new_password": "Nouveau mot de passe",
|
||
"profile_confirm_password": "Confirmer le mot de passe",
|
||
"profile_save_password": "Enregistrer le mot de passe",
|
||
"profile_appearance_heading": "Apparence",
|
||
"profile_theme_label": "Thème",
|
||
"profile_theme_amber": "Ambre",
|
||
"profile_theme_slate": "Ardoise",
|
||
"profile_theme_rose": "Rose",
|
||
"profile_theme_light": "Light",
|
||
"profile_theme_light_slate": "Light Blue",
|
||
"profile_theme_light_rose": "Light Rose",
|
||
"profile_reading_heading": "Paramètres de lecture",
|
||
"profile_voice_label": "Voix par défaut",
|
||
"profile_speed_label": "Vitesse de lecture",
|
||
"profile_auto_next_label": "Chapitre suivant automatique",
|
||
"profile_save_settings": "Enregistrer les paramètres",
|
||
"profile_settings_saved": "Paramètres enregistrés.",
|
||
"profile_settings_error": "Impossible d'enregistrer les paramètres.",
|
||
"profile_password_saved": "Mot de passe modifié.",
|
||
"profile_password_error": "Impossible de modifier le mot de passe.",
|
||
"profile_sessions_heading": "Sessions actives",
|
||
"profile_sign_out_all": "Se déconnecter de tous les autres appareils",
|
||
"profile_joined": "Inscrit le {date}",
|
||
|
||
"user_page_title": "{username} — libnovel",
|
||
"user_library_heading": "Bibliothèque de {username}",
|
||
"user_follow": "Suivre",
|
||
"user_unfollow": "Ne plus suivre",
|
||
"user_followers": "{n} abonnés",
|
||
"user_following": "{n} abonnements",
|
||
"user_library_empty": "Aucun livre dans la bibliothèque.",
|
||
|
||
"error_not_found_title": "Page introuvable",
|
||
"error_not_found_body": "La page que vous cherchez n'existe pas.",
|
||
"error_generic_title": "Une erreur s'est produite",
|
||
"error_go_home": "Accueil",
|
||
"error_status": "Erreur {status}",
|
||
|
||
"admin_scrape_page_title": "Extraction — Admin",
|
||
"admin_scrape_heading": "Extraction",
|
||
"admin_scrape_catalogue": "Extraire le catalogue",
|
||
"admin_scrape_book": "Extraire un livre",
|
||
"admin_scrape_url_placeholder": "URL du livre sur novelfire.net",
|
||
"admin_scrape_range": "Plage de chapitres",
|
||
"admin_scrape_from": "De",
|
||
"admin_scrape_to": "À",
|
||
"admin_scrape_submit": "Extraire",
|
||
"admin_scrape_cancel": "Annuler",
|
||
"admin_scrape_status_pending": "En attente",
|
||
"admin_scrape_status_running": "En cours",
|
||
"admin_scrape_status_done": "Terminé",
|
||
"admin_scrape_status_failed": "Échoué",
|
||
"admin_scrape_status_cancelled": "Annulé",
|
||
"admin_tasks_heading": "Tâches récentes",
|
||
"admin_tasks_empty": "Aucune tâche pour l'instant.",
|
||
|
||
"admin_audio_page_title": "Audio — Admin",
|
||
"admin_audio_heading": "Tâches audio",
|
||
"admin_audio_empty": "Aucune tâche audio.",
|
||
|
||
"admin_changelog_page_title": "Changelog — Admin",
|
||
"admin_changelog_heading": "Changelog",
|
||
|
||
"comments_heading": "Commentaires",
|
||
"comments_empty": "Aucun commentaire pour l'instant. Soyez le premier !",
|
||
"comments_placeholder": "Écrire un commentaire…",
|
||
"comments_submit": "Publier",
|
||
"comments_login_prompt": "Connectez-vous pour commenter.",
|
||
"comments_vote_up": "Vote positif",
|
||
"comments_vote_down": "Vote négatif",
|
||
"comments_delete": "Supprimer",
|
||
"comments_reply": "Répondre",
|
||
"comments_show_replies": "Afficher {n} réponses",
|
||
"comments_hide_replies": "Masquer les réponses",
|
||
"comments_edited": "modifié",
|
||
"comments_deleted": "[supprimé]",
|
||
|
||
"disclaimer_page_title": "Avertissement — libnovel",
|
||
"privacy_page_title": "Politique de confidentialité — libnovel",
|
||
"dmca_page_title": "DMCA — libnovel",
|
||
"terms_page_title": "Conditions d'utilisation — libnovel",
|
||
|
||
"common_loading": "Chargement…",
|
||
"common_error": "Erreur",
|
||
"common_save": "Enregistrer",
|
||
"common_cancel": "Annuler",
|
||
"common_close": "Fermer",
|
||
"common_search": "Rechercher",
|
||
"common_back": "Retour",
|
||
"common_next": "Suivant",
|
||
"common_previous": "Précédent",
|
||
"common_yes": "Oui",
|
||
"common_no": "Non",
|
||
"common_on": "activé",
|
||
"common_off": "désactivé",
|
||
|
||
"locale_switcher_label": "Langue",
|
||
|
||
"books_empty_library": "Votre bibliothèque est vide.",
|
||
"books_empty_discover": "Les livres que vous commencez à lire ou enregistrez depuis",
|
||
"books_empty_discover_link": "Découvrir",
|
||
"books_empty_discover_suffix": "apparaîtront ici.",
|
||
"books_count": "{n} livre{s}",
|
||
|
||
"catalogue_sort_updated": "Mis à jour",
|
||
"catalogue_search_button": "Rechercher",
|
||
"catalogue_refresh": "Actualiser",
|
||
"catalogue_refreshing": "En file d'attente…",
|
||
"catalogue_refresh_mobile": "Actualiser le catalogue",
|
||
"catalogue_all_loaded": "Tous les romans chargés",
|
||
"catalogue_scroll_top": "Retour en haut",
|
||
"catalogue_view_grid": "Vue grille",
|
||
"catalogue_view_list": "Vue liste",
|
||
"catalogue_browse_source": "Parcourir les romans de novelfire.net",
|
||
"catalogue_search_results": "{n} résultat{s} pour « {q} »",
|
||
"catalogue_search_local_count": "({local} local, {remote} depuis novelfire)",
|
||
"catalogue_rank_ranked": "{n} romans classés depuis le dernier scrape du catalogue",
|
||
"catalogue_rank_no_data": "Aucune donnée de classement.",
|
||
"catalogue_rank_no_data_body": "Aucune donnée de classement — lancez un scrape complet du catalogue pour remplir",
|
||
"catalogue_rank_run_scrape_admin": "Cliquez sur Actualiser le catalogue ci-dessus pour déclencher un scrape complet.",
|
||
"catalogue_rank_run_scrape_user": "Demandez à un administrateur d'effectuer un scrape du catalogue.",
|
||
"catalogue_scrape_queued_flash": "Scrape complet du catalogue en file d'attente. La bibliothèque et le classement seront mis à jour au fur et à mesure du traitement des livres.",
|
||
"catalogue_scrape_busy_flash": "Un job de scrape est déjà en cours. Revenez une fois terminé.",
|
||
"catalogue_scrape_error_flash": "Échec de la mise en file d'attente du scrape. Vérifiez que le service de scraper est accessible.",
|
||
"catalogue_filters_label": "Filtres",
|
||
"catalogue_apply": "Appliquer",
|
||
"catalogue_filter_rank_note": "Les filtres genre et statut s'appliquent uniquement à Parcourir",
|
||
"catalogue_no_results_search": "Aucun résultat trouvé.",
|
||
"catalogue_no_results_try": "Essayez un autre terme de recherche.",
|
||
"catalogue_no_results_filters": "Essayez d'autres filtres ou revenez plus tard.",
|
||
"catalogue_scrape_queued_badge": "En file",
|
||
"catalogue_scrape_busy_badge": "Scraper occupé",
|
||
"catalogue_scrape_busy_list": "Occupé",
|
||
"catalogue_scrape_forbidden_badge": "Interdit",
|
||
"catalogue_scrape_novel_button": "Extraire",
|
||
"catalogue_scraping_novel": "Extraction…",
|
||
|
||
"book_detail_not_in_library": "pas dans la bibliothèque",
|
||
"book_detail_continue_ch": "Continuer ch.{n}",
|
||
"book_detail_start_ch1": "Commencer au ch.1",
|
||
"book_detail_preview_ch1": "Aperçu ch.1",
|
||
"book_detail_reading_ch": "Lecture ch.{n} sur {total}",
|
||
"book_detail_n_chapters": "{n} chapitres",
|
||
"book_detail_rescraping": "En file d'attente…",
|
||
"book_detail_from_chapter": "À partir du chapitre",
|
||
"book_detail_to_chapter": "Jusqu'au chapitre (optionnel)",
|
||
"book_detail_range_queuing": "En file d'attente…",
|
||
"book_detail_scrape_range": "Plage d'extraction",
|
||
"book_detail_admin": "Admin",
|
||
"book_detail_admin_book_cover": "Couverture du livre",
|
||
"book_detail_admin_chapter_cover": "Couverture du chapitre",
|
||
"book_detail_admin_chapter_n": "Chapitre n°",
|
||
"book_detail_admin_description": "Description",
|
||
"book_detail_admin_chapter_names": "Noms des chapitres",
|
||
"book_detail_admin_audio_tts": "Audio TTS",
|
||
"book_detail_admin_voice": "Voix",
|
||
"book_detail_admin_generate": "Générer",
|
||
"book_detail_admin_save_cover": "Enregistrer la couverture",
|
||
"book_detail_admin_saving": "Enregistrement…",
|
||
"book_detail_admin_saved": "Enregistré",
|
||
"book_detail_admin_apply": "Appliquer",
|
||
"book_detail_admin_applying": "Application…",
|
||
"book_detail_admin_applied": "Appliqué",
|
||
"book_detail_admin_discard": "Ignorer",
|
||
"book_detail_admin_enqueue_audio": "Mettre en file audio",
|
||
"book_detail_admin_cancel_audio": "Annuler",
|
||
"book_detail_admin_enqueued": "{enqueued} en file, {skipped} ignorés",
|
||
"book_detail_scraping_progress": "Récupération des 20 premiers chapitres. Cette page sera actualisée automatiquement.",
|
||
"book_detail_scraping_home": "← Accueil",
|
||
"book_detail_rescrape_book": "Réextraire le livre",
|
||
"book_detail_less": "Moins",
|
||
"book_detail_more": "Plus",
|
||
|
||
"chapters_search_placeholder": "Rechercher des chapitres…",
|
||
"chapters_jump_to": "Aller au Ch.{n}",
|
||
"chapters_no_match": "Aucun chapitre ne correspond à « {q} »",
|
||
"chapters_none_available": "Aucun chapitre disponible pour l'instant.",
|
||
"chapters_reading_indicator": "en cours",
|
||
"chapters_result_count": "{n} résultats",
|
||
|
||
"reader_fetching_chapter": "Récupération du chapitre…",
|
||
"reader_words": "{n} mots",
|
||
"reader_preview_audio_notice": "Aperçu — audio non disponible pour les livres hors bibliothèque.",
|
||
|
||
"profile_click_to_change": "Cliquez sur l'avatar pour changer la photo",
|
||
"profile_tts_voice": "Voix TTS",
|
||
"profile_auto_advance": "Avancer automatiquement au chapitre suivant",
|
||
"profile_saving": "Enregistrement…",
|
||
"profile_saved": "Enregistré !",
|
||
"profile_session_this": "Cette session",
|
||
"profile_session_signed_in": "Connecté le {date}",
|
||
"profile_session_last_seen": "· Dernière activité {date}",
|
||
"profile_session_sign_out": "Se déconnecter",
|
||
"profile_session_end": "Terminer",
|
||
"profile_session_unrecognised": "Ce sont tous les appareils connectés à votre compte. Terminez toute session que vous ne reconnaissez pas.",
|
||
"profile_no_sessions": "Aucun enregistrement de session trouvé. Les sessions sont suivies dès la prochaine connexion.",
|
||
"profile_change_password_heading": "Changer le mot de passe",
|
||
"profile_update_password": "Mettre à jour le mot de passe",
|
||
"profile_updating": "Mise à jour…",
|
||
"profile_password_changed_ok": "Mot de passe modifié avec succès.",
|
||
"profile_playback_speed": "Vitesse de lecture — {speed}x",
|
||
|
||
"profile_subscription_heading": "Abonnement",
|
||
"profile_plan_pro": "Pro",
|
||
"profile_plan_free": "Gratuit",
|
||
"profile_pro_active": "Votre abonnement Pro est actif.",
|
||
"profile_pro_perks": "Audio illimité, toutes les langues de traduction et la sélection de voix sont activées.",
|
||
"profile_manage_subscription": "Gérer l'abonnement",
|
||
"profile_upgrade_heading": "Passer au Pro",
|
||
"profile_upgrade_desc": "Débloquez l'audio illimité, les traductions en 4 langues et la sélection de voix.",
|
||
"profile_upgrade_monthly": "Mensuel — 6 $ / mois",
|
||
"profile_upgrade_annual": "Annuel — 48 $ / an",
|
||
"profile_free_limits": "Plan gratuit : 3 chapitres audio par jour, lecture en anglais uniquement.",
|
||
"subscribe_page_title": "Passer Pro \u2014 libnovel",
|
||
"subscribe_heading": "Lisez plus. Écoutez plus.",
|
||
"subscribe_subheading": "Passez Pro et débloquez l'expérience libnovel complète.",
|
||
"subscribe_monthly_label": "Mensuel",
|
||
"subscribe_monthly_price": "6 $",
|
||
"subscribe_monthly_period": "par mois",
|
||
"subscribe_annual_label": "Annuel",
|
||
"subscribe_annual_price": "48 $",
|
||
"subscribe_annual_period": "par an",
|
||
"subscribe_annual_save": "Économisez 33 %",
|
||
"subscribe_cta_monthly": "Commencer le plan mensuel",
|
||
"subscribe_cta_annual": "Commencer le plan annuel",
|
||
"subscribe_already_pro": "Vous avez déjà un abonnement Pro.",
|
||
"subscribe_manage": "Gérer l'abonnement",
|
||
"subscribe_benefit_audio": "Chapitres audio illimités par jour",
|
||
"subscribe_benefit_voices": "Sélection de voix pour tous les moteurs TTS",
|
||
"subscribe_benefit_translation": "Lire en français, indonésien, portugais et russe",
|
||
"subscribe_benefit_downloads": "Télécharger des chapitres pour une écoute hors ligne",
|
||
"subscribe_login_prompt": "Connectez-vous pour vous abonner",
|
||
"subscribe_login_cta": "Se connecter",
|
||
|
||
"user_currently_reading": "En cours de lecture",
|
||
"user_library_count": "Bibliothèque ({n})",
|
||
"user_joined": "Inscrit le {date}",
|
||
"user_followers_label": "abonnés",
|
||
"user_following_label": "abonnements",
|
||
"user_no_books": "Aucun livre dans la bibliothèque pour l'instant.",
|
||
|
||
"admin_pages_label": "Pages",
|
||
"admin_tools_label": "Outils",
|
||
"admin_nav_scrape": "Scrape",
|
||
"admin_nav_audio": "Audio",
|
||
"admin_nav_translation": "Traduction",
|
||
"admin_nav_changelog": "Modifications",
|
||
"admin_nav_image_gen": "Image Gen",
|
||
"admin_nav_text_gen": "Text Gen",
|
||
"admin_nav_catalogue_tools": "Catalogue Tools",
|
||
"admin_nav_errors": "Erreurs",
|
||
"admin_nav_analytics": "Analytique",
|
||
"admin_nav_logs": "Journaux",
|
||
"admin_nav_uptime": "Disponibilité",
|
||
"admin_nav_push": "Notifications",
|
||
|
||
"admin_scrape_status_idle": "Inactif",
|
||
"admin_scrape_full_catalogue": "Catalogue complet",
|
||
"admin_scrape_single_book": "Livre unique",
|
||
"admin_scrape_quick_genres": "Genres rapides",
|
||
"admin_scrape_task_history": "Historique des tâches",
|
||
"admin_scrape_filter_placeholder": "Filtrer par type, statut ou URL…",
|
||
"admin_scrape_no_matching": "Aucune tâche correspondante.",
|
||
"admin_scrape_start": "Démarrer l'extraction",
|
||
"admin_scrape_queuing": "En file d'attente…",
|
||
"admin_scrape_running": "En cours…",
|
||
|
||
"admin_audio_filter_jobs": "Filtrer par slug, voix ou statut…",
|
||
"admin_audio_filter_cache": "Filtrer par slug, chapitre ou voix…",
|
||
"admin_audio_no_matching_jobs": "Aucun job correspondant.",
|
||
"admin_audio_no_jobs": "Aucun job audio pour l'instant.",
|
||
"admin_audio_cache_empty": "Cache audio vide.",
|
||
"admin_audio_no_cache_results": "Aucun résultat.",
|
||
|
||
"admin_changelog_gitea": "Releases Gitea",
|
||
"admin_changelog_no_releases": "Aucune release trouvée.",
|
||
"admin_changelog_load_error": "Impossible de charger les releases : {error}",
|
||
|
||
"comments_top": "Les meilleures",
|
||
"comments_new": "Nouvelles",
|
||
"comments_posting": "Publication…",
|
||
"comments_login_link": "Connectez-vous",
|
||
"comments_login_suffix": "pour laisser un commentaire.",
|
||
"comments_anonymous": "Anonyme",
|
||
|
||
"reader_audio_narration": "Narration Audio",
|
||
"reader_playing": "Lecture en cours — contrôles ci-dessous",
|
||
"reader_paused": "En pause — contrôles ci-dessous",
|
||
"reader_ch_ready": "Ch.{n} prêt",
|
||
"reader_ch_preparing": "Préparation Ch.{n}… {percent}%",
|
||
"reader_ch_generate_on_nav": "Ch.{n} sera généré lors de la navigation",
|
||
"reader_now_playing": "En cours : {title}",
|
||
"reader_load_this_chapter": "Charger ce chapitre",
|
||
"reader_generate_samples": "Générer les échantillons manquants",
|
||
"reader_voice_applies_next": "La nouvelle voix s'appliquera au prochain « Lire la narration ».",
|
||
"reader_choose_voice": "Choisir une voix",
|
||
"reader_generating_narration": "Génération de la narration…",
|
||
|
||
"profile_font_family": "Police",
|
||
"profile_font_system": "Système",
|
||
"profile_font_serif": "Serif",
|
||
"profile_font_mono": "Mono",
|
||
"profile_text_size": "Taille du texte",
|
||
"profile_text_size_sm": "Petit",
|
||
"profile_text_size_md": "Normal",
|
||
"profile_text_size_lg": "Grand",
|
||
"profile_text_size_xl": "Très grand",
|
||
|
||
"feed_page_title": "Fil — LibNovel",
|
||
"feed_heading": "Fil d'abonnements",
|
||
"feed_subheading": "Livres lus par vos abonnements",
|
||
"feed_empty_heading": "Rien encore",
|
||
"feed_empty_body": "Suivez d'autres lecteurs pour voir ce qu'ils lisent.",
|
||
"feed_not_logged_in": "Connectez-vous pour voir votre fil.",
|
||
"feed_reader_label": "lit",
|
||
"feed_chapters_label": "{n} chapitres",
|
||
"feed_browse_cta": "Parcourir le catalogue",
|
||
"feed_find_users_cta": "Trouver des lecteurs",
|
||
"admin_nav_gitea": "Gitea"
|
||
}
|