diff --git a/pkg/api/locale.go b/pkg/api/locale.go index 9d8593d7c..e29ffb9ef 100644 --- a/pkg/api/locale.go +++ b/pkg/api/locale.go @@ -13,6 +13,7 @@ var matcher = language.NewMatcher([]language.Tag{ language.MustParse("es-ES"), language.MustParse("de-DE"), language.MustParse("it-IT"), + language.MustParse("fr-FR"), language.MustParse("pt-BR"), language.MustParse("sv-SE"), language.MustParse("zh-CN"), diff --git a/ui/v2.5/src/components/Changelog/versions/v0110.md b/ui/v2.5/src/components/Changelog/versions/v0110.md index 8fc4d2011..886c3ab9e 100644 --- a/ui/v2.5/src/components/Changelog/versions/v0110.md +++ b/ui/v2.5/src/components/Changelog/versions/v0110.md @@ -10,6 +10,7 @@ * Added interface options to disable creating performers/studios/tags from dropdown selectors. ([#1814](https://github.com/stashapp/stash/pull/1814)) ### 🎹 Improvements +* Added fr-FR language option. ([#1967](https://github.com/stashapp/stash/pull/1967/files)) * Added stash-id to scene scrape dialog. ([#1955](https://github.com/stashapp/stash/pull/1955)) * Reworked main navbar and positioned at bottom for mobile devices. ([#1769](https://github.com/stashapp/stash/pull/1769)) * Show files being deleted in the Delete dialogs. ([#1852](https://github.com/stashapp/stash/pull/1852)) diff --git a/ui/v2.5/src/components/Settings/SettingsInterfacePanel/SettingsInterfacePanel.tsx b/ui/v2.5/src/components/Settings/SettingsInterfacePanel/SettingsInterfacePanel.tsx index 0799f94d3..6171d0a89 100644 --- a/ui/v2.5/src/components/Settings/SettingsInterfacePanel/SettingsInterfacePanel.tsx +++ b/ui/v2.5/src/components/Settings/SettingsInterfacePanel/SettingsInterfacePanel.tsx @@ -175,6 +175,7 @@ export const SettingsInterfacePanel: React.FC = () => { + diff --git a/ui/v2.5/src/locales/fr-FR.json b/ui/v2.5/src/locales/fr-FR.json new file mode 100644 index 000000000..c05c15b4a --- /dev/null +++ b/ui/v2.5/src/locales/fr-FR.json @@ -0,0 +1,755 @@ +{ + "actions": { + "add": "Ajouter", + "add_directory": "Ajouter un rĂ©pertoire", + "add_entity": "Ajouter {entityType}", + "add_to_entity": "Ajouter Ă  {entityType}", + "allow": "Autoriser", + "allow_temporarily": "Autoriser temporairement", + "apply": "Appliquer", + "auto_tag": "Taggage automatique", + "backup": "Sauvegarde", + "cancel": "Annuler", + "clean": "Nettoyer", + "clear": "Vider", + "clear_back_image": "Suppr. l'image Verso", + "clear_front_image": "Suppr. l'image Recto", + "clear_image": "Supprimer l'image", + "close": "Fermer", + "create": "CrĂ©er", + "create_entity": "CrĂ©er {entityType}", + "create_marker": "CrĂ©er un Marqueur", + "created_entity": "Créé: {entity_type}: {entity_name}", + "delete": "Supprimer", + "delete_entity": "Supprimer {entityType}", + "delete_file": "Supprimer le fichier", + "delete_generated_supporting_files": "Supprimer les fichiers gĂ©nĂ©rĂ©s", + "disallow": "Refuser", + "download": "TĂ©lĂ©charger", + "download_backup": "TĂ©lĂ©charger une sauvegarde", + "edit": "Editer", + "export": "Exporter
", + "export_all": "Exporter tout
", + "find": "Trouver", + "from_file": "A partir du fichier
", + "from_url": "A partir de l'URL
", + "full_export": "Export Complet", + "full_import": "Import Complet", + "generate": "GĂ©nĂ©rer", + "generate_thumb_default": "GĂ©nĂ©rer la miniature par dĂ©faut", + "generate_thumb_from_current": "GĂ©nĂ©rer une miniature", + "hash_migration": "hash migration", + "hide": "Masquer", + "identify": "Identifier", + "import": "Importer
", + "import_from_file": "Importer Ă  partir d'un fichier", + "merge": "Fusionner", + "merge_from": "Fusionner depuis", + "merge_into": "Fusionner dans", + "not_running": "pas en cours d'exĂ©cution", + "overwrite": "Ecraser", + "play_random": "Lecture alĂ©atoire", + "play_selected": "Lire la sĂ©lection", + "preview": "Aperçu", + "refresh": "Rafraichir", + "reload_plugins": "Recharger les Plugins", + "reload_scrapers": "Recharger les Scrapers", + "remove": "Retirer", + "rename_gen_files": "Renommer les fichiers gĂ©nĂ©rĂ©s", + "rescan": "Scanner Ă  nouveau", + "reshuffle": "MĂ©langer Ă  nouveau", + "running": "en cours d'exĂ©cution", + "save": "Sauvegarder", + "save_delete_settings": "Use these options by default when deleting", + "save_filter": "Sauvegarder le filtre", + "scan": "Scanner", + "scrape": "Scrape", + "scrape_with": "Scrape avec
", + "scrape_query": "RequĂȘte de Scrape", + "scrape_scene_fragment": "Scrape par fragment", + "search": "Chercher", + "select_all": "SĂ©lectionner tout", + "select_none": "Ne rien sĂ©lectionner", + "selective_auto_tag": "Tagging automatique sĂ©lectif", + "selective_scan": "Scan sĂ©lectif", + "set_as_default": "DĂ©finir comme valeur par dĂ©faut", + "set_back_image": "Image Verso
", + "set_front_image": "Image Recto", + "set_image": "Choisir l'image
", + "show": "Montrer", + "skip": "Passer", + "stop": "Stop", + "tasks": { + "clean_confirm_message": "Êtes-vous sĂ»r de vouloir nettoyer ? Cela supprimera les informations de la base de donnĂ©es et le contenu gĂ©nĂ©rĂ© pour toutes les VidĂ©os et Galeries qui ne se trouvent plus dans le systĂšme de fichiers.", + "dry_mode_selected": "Essais Ă  blanc. Aucune suppression n'aura lieu.", + "import_warning": "Êtes-vous sĂ»r de vouloir importer ? Cela supprimera la base de donnĂ©es et rĂ©importera des donnĂ©es Ă  partir de vos mĂ©tadonnĂ©es exportĂ©es." + }, + "temp_disable": "DĂ©sactiver temporairement
", + "temp_enable": "Activer temporairement
", + "view_random": "Visionner au hasard", + "confirm": "Confirmer", + "select_folders": "SĂ©lectionner des rĂ©pertoires", + "browse_for_image": "SĂ©lectionner une image
", + "open_random": "Ouvrir au hasard", + "next_action": "Suivant", + "previous_action": "PrĂ©cĂ©dent", + "finish": "Terminer", + "use_default": "Utiliser la valeur par dĂ©faut", + "ignore": "Ignorer" + }, + "actions_name": "Actions", + "age": "Âge", + "aliases": "Alias", + "all": "tout", + "also_known_as": "Aussi connu sous le nom", + "ascending": "Ascendant", + "average_resolution": "RĂ©solution moyenne", + "birth_year": "AnnĂ©e de naissance", + "birthdate": "Date de naissance", + "bitrate": "BitRate", + "career_length": "DurĂ©e de la carriĂšre", + "subsidiary_studios": "Studios affiliĂ©s/filiales", + "sub_tags": "Sous-Tags", + "sub_tag_count": "Nombre de sous-Tags", + "component_tagger": { + "config": { + "active_instance": "Instance stash-box active:", + "blacklist_desc": "ÉlĂ©ments Ă  exclure de la requĂȘte, sous la forme d'une expression rĂ©guliĂšre insensible Ă  la casse. Certains caractĂšres doivent ĂȘtre Ă©chapĂ©s avec un backslash : {chars_require_escape}", + "blacklist_label": "Exclure", + "query_mode_auto": "Automatique", + "query_mode_auto_desc": "Se base sur les mĂ©tadonnĂ©es du fichier si prĂ©sentes, sinon utilise le nom du fichier", + "query_mode_dir": "RĂ©pertoire parent", + "query_mode_dir_desc": "Se base uniquement sur le nom du rĂ©pertoire parent", + "query_mode_filename": "Nom de fichier", + "query_mode_filename_desc": "Se base uniquement sur le nom du fichier", + "query_mode_label": "Mode", + "query_mode_metadata": "MĂ©tadonnĂ©es", + "query_mode_metadata_desc": "Se base uniquement sur les mĂ©tadonnĂ©es du fichier", + "query_mode_path": "Chemin complet", + "query_mode_path_desc": "Se base sur le chemin complet du fichier", + "set_cover_desc": "Si une vignette a Ă©tĂ© trouvĂ©e, remplace la vignette de la vidĂ©o par la vignette trouvĂ©e.", + "set_cover_label": "Enregistrer la vignette", + "set_tag_desc": "Ajoute les Tags Ă  la vidĂ©o, en fusionnant avec ou en Ă©crasant les Tags existants.", + "set_tag_label": "Enregistrer les Tags", + "source": "Source", + "show_male_desc": "Cochez si vous voulez Taguer Ă©galement les Acteurs (hommes).", + "show_male_label": "Montrer Ă©galement les Acteurs" + }, + "noun_query": "RequĂȘte", + "results": { + "fp_found": "{fpCount, plural, =0 {Aucune empreinte correspondante} other {# nouvelles empreintes correspondantes}}", + "fp_matches": "La durĂ©e correspond !", + "fp_matches_multi": "La durĂ©e correspond Ă  {matchCount}/{durationsLength} empreintes(s)", + "hash_matches": "Correspondance trouvĂ©e : {hash_type}", + "match_failed_already_tagged": "VidĂ©o dĂ©jĂ  TaguĂ©e", + "match_failed_no_result": "Aucun rĂ©sultat trouvĂ©", + "match_success": "ScĂšne TaguĂ©e avec succĂšs", + "unnamed": "Anonyme", + "duration_off": "La durĂ©e diffĂšre d'au moins {number} secondes", + "duration_unknown": "DurĂ©e inconnue", + "phash_matches": "{count} PHashe(s) correspondant(s)" + }, + "verb_match_fp": "Empreintes correspondantes", + "verb_matched": "AssociĂ©", + "verb_scrape_all": "Extraire tout", + "verb_submit_fp": "Soumettre {fpCount, plural, one{# Empreinte} other{# Empreintes}}", + "verb_toggle_config": "{toggle} {configuration}", + "verb_toggle_unmatched": "{toggle} vidĂ©os associĂ©es" + }, + "config": { + "about": { + "build_hash": "Build hash:", + "build_time": "Build time:", + "check_for_new_version": "Rechercher une mise Ă  jour", + "latest_version_build_hash": "Latest Version Build Hash:", + "new_version_notice": "[NEW]", + "stash_discord": "Join our {url} channel", + "stash_home": "Stash home at {url}", + "stash_open_collective": "Support us through {url}", + "stash_wiki": "Stash {url} page", + "version": "Version" + }, + "categories": { + "about": "A propos", + "interface": "Interface", + "logs": "Journaux", + "plugins": "Plugins", + "scraping": "Scraping", + "tasks": "TĂąches", + "tools": "Outils" + }, + "dlna": { + "allow_temp_ip": "Autoriser {tempIP}", + "allowed_ip_addresses": "Adresses IP autorisĂ©es", + "default_ip_whitelist": "Liste blanche d'adresses IP", + "default_ip_whitelist_desc": "Liste d'adresses IP que seront autorisĂ©es par dĂ©faut Ă  accĂ©der au serveur DLNA. Utilisez {wildcard} pour autoriser toutes les adresses.", + "enabled_by_default": "Activer par dĂ©faut", + "network_interfaces": "Interfaces", + "network_interfaces_desc": "Interfaces rĂ©seaux sur lesquelles exposer le serveur DLNA. Si rien n'est spĂ©cifiĂ©, le serveur sera exposĂ© sur toutes les interfaces disponibles. RedĂ©marrez le serveur DLNA pour appliquer la modification.", + "recent_ip_addresses": "Adresses IP rĂ©centes", + "server_display_name": "Nom du serveur DLNA", + "server_display_name_desc": "Nom du serveur DLNA. Si aucun nom n'est spĂ©cifiĂ©, le nom du serveur sera {server_name}.", + "until_restart": "jusqu'au redĂ©marrage" + }, + "general": { + "auth": { + "api_key": "ClĂ© API", + "api_key_desc": "ClĂ© API pour systĂšme tier. Requis uniquement lorsque un nom d'utilisateur et un mot de passe ont Ă©tĂ© spĂ©cifiĂ©s. Le nom d'utilisateur doit avoir Ă©tĂ© enregistrĂ© avant de gĂ©nĂ©rer la clĂ© API.", + "authentication": "Authentification", + "clear_api_key": "Effacer la clĂ© API", + "generate_api_key": "GĂ©nĂ©rer une clĂ© API", + "log_file": "Fichier journal", + "log_file_desc": "Chemin vers le fichier journal. Laissez vide pour dĂ©sactiver la journalisation. NĂ©cĂ©ssite un redĂ©marrage.", + "log_http": "Journaliser les accĂšs HTTP", + "log_http_desc": "Journalise les accĂšs HTTP dans le terminal. NĂ©cĂ©ssite un redĂ©marrage.", + "log_to_terminal": "Journaliser dans le terminal", + "log_to_terminal_desc": "Journalise dans le terminal en plus du fichier journal. Actif par dĂ©faut si la journalisation dans le fichier journal est dĂ©sactivĂ©e. NĂ©cĂ©ssite un redĂ©marrage.", + "maximum_session_age": "DurĂ©e maximum de session", + "maximum_session_age_desc": "Temps d'inactivitĂ© maximum avant la dĂ©connexion automatique de la session.", + "password": "Mot de passe", + "password_desc": "Mot de passe pour accĂ©der Ă  Stash. Laissez vide pour dĂ©sactiver l'authentification.", + "stash-box_integration": "Integration stash-box", + "trusted_proxies": "Proxys de confiance", + "trusted_proxies_desc": "Liste des proxys autorisĂ©s Ă  transfĂ©rer le trafic vers Stash. Laissez vide pour autoriser Ă  partir du rĂ©seau privĂ©. ", + "username": "Nom d'utilisateur", + "username_desc": "Nom d'utilisateur pour accĂ©der Ă  Stash. Laissez vide pour dĂ©sactiver l'authentification." + }, + "cache_location": "Chemin vers le rĂ©pertoire qui sera utilisĂ© pour la mise en cache.", + "cache_path_head": "RĂ©pertorie de mise en cache", + "calculate_md5_and_ohash_desc": "Calculer l'empreinte MD5 en plus de OSHash. Activer cette option rendra plus lent le scan initial des fichiers. Le hachage des nom de fichiers doit ĂȘtre dĂ©fini sur oshash pour dĂ©sactiver le calcul du MD5.", + "calculate_md5_and_ohash_label": "Calculer le MD5 pour les vidĂ©os", + "check_for_insecure_certificates": "VĂ©rifier les certificats non sĂ©curisĂ©s", + "check_for_insecure_certificates_desc": "Certains sites Web utilisent des certificats SSL non sĂ©curisĂ©s. Lorsque cette option est dĂ©cochĂ©e, le Scraper ignore la vĂ©rification des certificats non sĂ©curisĂ©s et permet le Scraping de ces sites. Si vous obtenez une erreur de certificat lors du Scraping, dĂ©cochez cette option.", + "chrome_cdp_path": "Chrome CDP", + "chrome_cdp_path_desc": "Chemin vers l'exĂ©cutable Chrome, ou une adresse distante (commençant par http:// ou https://, par exemple http://localhost:9222/json/version) vers une instance Chrome.", + "create_galleries_from_folders_desc": "Si cochĂ©, crĂ©e des Galeries Ă  partir des dossiers contenant des images.", + "create_galleries_from_folders_label": "CrĂ©er des Galeries Ă  partir des dossiers contenant des fichiers images", + "db_path_head": "Base de donnĂ©es", + "directory_locations_to_your_content": "Emplacements vers vos bibliothĂšques de contenu", + "exclude_image": "Exclure les images", + "exclude_video": "Exclure les vidĂ©os", + "excluded_image_gallery_patterns_desc": "Expressions rĂ©guliĂšres des fichiers ou chemins vers les images ou galeries Ă  exclure de l'analyse et Ă  ajouter au nettoyage.", + "excluded_image_gallery_patterns_head": "Images/galeries Ă  exclure", + "excluded_video_patterns_desc": "Expressions rĂ©guliĂšres des fichiers ou chemins vers les vidĂ©os Ă  exclure de l'analyse et Ă  ajouter au nettoyage.", + "excluded_video_patterns_head": "VidĂ©os Ă  exclure", + "gallery_ext_desc": "Liste des extensions de fichier Archive qui seront considĂ©rĂ©s comme des Galeries d'Images. SĂ©parez les extentions par une virgule.", + "gallery_ext_head": "Extensions de fichiers d'Archive pour les Galeries", + "generated_file_naming_hash_desc": "Utiliser MD5 ou OSHash pour le nommage des fichiers gĂ©nĂ©rĂ©s. Modifier ce rĂ©glage nĂ©cĂ©ssite que le MD5/OSHash ai dĂ©jĂ  Ă©tĂ© gĂ©nĂ©rĂ© pour toutes les VidĂ©os et Images. AprĂšs avoir modifiĂ© ce rĂ©glage, les fichiers gĂ©nĂ©rĂ©s existants devront ĂȘtre migrĂ©s ou rĂ©gĂ©nĂ©rĂ©s. Voir la page TĂąches pour la migration.", + "generated_file_naming_hash_head": "Algorithme de hachage pour le nommage des fichiers gĂ©nĂ©rĂ©s", + "generated_files_location": "Emplacement pour les fichiers gĂ©nĂ©rĂ©s (marqueurs, apercus, sprites, etc)", + "generated_path_head": "Emplacement des fichiers gĂ©nĂ©rĂ©s", + "hashing": "Hachage", + "image_ext_desc": "Liste des extensions de fichiers Images", + "image_ext_head": "Extensions de fichiers Images", + "logging": "Journalisation", + "maximum_streaming_transcode_size_desc": "RĂ©solution maximum pour la conversions des stream", + "maximum_streaming_transcode_size_head": "RĂ©solution maximum de conversion pour les stream", + "maximum_transcode_size_desc": "RĂ©solution maximum pour la conversions des fichiers", + "maximum_transcode_size_head": "RĂ©solution maximum de conversion", + "metadata_path": { + "heading": "Emplacement des fichiers de MĂ©tadonnĂ©es", + "description": "Emplacement du rĂ©pertoire qui sera utilisĂ© pour un export ou un import de mĂ©tadonnĂ©es" + }, + "number_of_parallel_task_for_scan_generation_desc": "0 pour dĂ©tection automatique. Attention: une valeur trop Ă©levĂ©e peut rĂ©duire les performances et causer d'autres problĂšmes.", + "number_of_parallel_task_for_scan_generation_head": "Nombre de tĂąches en parallĂšles pour le scan et la gĂ©nĂ©ration", + "parallel_scan_head": "Scan/GĂ©nĂ©ration en parallĂšle", + "preview_generation": "GĂ©nĂ©rer les aperçus", + "scraper_user_agent": "User-Agent pour les Scraper", + "scraper_user_agent_desc": "ChaĂźne User-Agent utilisĂ©e dans les requĂȘtes http lors du Scraping.", + "scraping": "Scraping", + "sqlite_location": "Emplacement du fichier de base de donnĂ©es SQLite (nĂ©cĂ©ssite un redĂ©marrage)", + "video_ext_desc": "Liste des extensions de fichiers VidĂ©os", + "video_ext_head": "Extensions de fichiers VidĂ©o", + "video_head": "VidĂ©o", + "include_audio_head": "Inclure l'audio", + "include_audio_desc": "Inclure l'audio dans la gĂ©nĂ©ration des aperçus." + }, + "logs": { + "log_level": "Niveau de journalisation" + }, + "plugins": { + "hooks": "Hooks", + "triggers_on": "DĂ©clenche sur" + }, + "scraping": { + "entity_metadata": "{entityType} MĂ©tadonnĂ©es", + "entity_scrapers": "{entityType} scrapers", + "excluded_tag_patterns_desc": "Expressions rĂ©guliĂšres pour l'exclusion de certains Tags des rĂ©sultats de Scraping", + "excluded_tag_patterns_head": "Exclusion de Tags", + "scraper": "Scraper", + "scrapers": "Scrapers", + "search_by_name": "Recherche par nom", + "supported_types": "Types supportĂ©s", + "supported_urls": "URLs" + }, + "stashbox": { + "add_instance": "Ajouter une instance stash-box", + "api_key": "ClĂ© API", + "description": "Stash-box facilite le taggage automatique des vidĂ©os et des acteur.trice.s en se basant sur l'empreinte et le nom des fichiers. Le Endpoint et la ClĂ© API peuvent ĂȘtre trouvĂ© dans votre compte stash-box. Si vous spĂ©cifiez plusieurs instances stash-box, le nom est requis.", + "endpoint": "Endpoint", + "graphql_endpoint": "Endpoint GraphQL", + "name": "Nom", + "title": "Endpoints Stash-box" + }, + "tasks": { + "added_job_to_queue": "{operation_name} ajoutĂ©(e) Ă  la liste des tĂąches", + "auto_tag_based_on_filenames": "Taggage automatique basĂ© sur le nom des fichiers.", + "auto_tagging": "Taggage automatique", + "backing_up_database": "Sauvegarder la base de donnĂ©es", + "backup_and_download": "Sauvegarde la base de donnĂ©es et tĂ©lĂ©charge le fichier de sauvegarde.", + "backup_database": "Sauvegarde la base de donnĂ©es au mĂȘme emplacement que le fichier de base de donnĂ©es. Le fichier se sauvegarde aura le format suivant: {filename_format}", + "cleanup_desc": "Cherche et supprime les fichiers orphelins de la base de donnĂ©es. Cette action est destructive.", + "dont_include_file_extension_as_part_of_the_title": "Ne pas inclure l'extension du fichier dans le titre", + "export_to_json": "Exporte la base de donnĂ©es au format JSON dans le dossier metadata", + "generate_desc": "GĂ©nĂšre les fichiers images, sprite, vidĂ©o, vtt autres fichiers.", + "generate_phashes_during_scan": "GĂ©nĂ©rer les PHashes pendant le scan (pour la dĂ©duplication et l'identification des vidĂ©os)", + "generate_previews_during_scan": "GĂ©nĂ©rer Ă©galement les aperçus image pendant le scan (WebP animĂ©, requis seulement si le Type d'apercu est dĂ©finis sur Image AnimĂ©e)", + "generate_sprites_during_scan": "GĂ©nĂ©rer les Sprites pendant le scan (pour l'aperçu sur la barre de progression)", + "generate_video_previews_during_scan": "GĂ©nĂ©rer les aperçus pendant le scan (courte vidĂ©o d'aperçu jouĂ©e lorsque vous surlovez une VidĂ©o)", + "generate_thumbnails_during_scan": "GĂ©nĂ©rer les miniatures pour les Images pendant le scan.", + "generated_content": "Contenu gĂ©nĂ©rĂ©", + "identify": { + "and_create_missing": "et crĂ©er si manquant", + "create_missing": "CrĂ©er si manquant", + "heading": "Identifier", + "description": "Associe automatiquement les mĂ©tadonnĂ©es aux VidĂ©os en utilisant stash-box et les Scrapers", + "default_options": "Options par dĂ©faut", + "explicit_set_description": "Ces options seront utilisĂ©es par dĂ©faut Ă  moins qu'une Source ne les dĂ©finissent autrement.", + "field_behaviour": "{strategy} {field}", + "field_options": "options pour les champs", + "identifying_scenes": "Identifier {num} {scene}", + "identifying_from_paths": "Identifier les vidĂ©os Ă  partir des emplacements suivants", + "include_male_performers": "Inclure les acteurs hommes", + "set_cover_images": "Enregistrer l'image de couverture", + "set_organized": "Marquer comme OrganisĂ©", + "source_options": "Options pour {source}", + "source": "Source", + "sources": "Sources", + "field": "Champ", + "strategy": "StratĂ©gie" + }, + "import_from_exported_json": "Import from exported JSON in the metadata directory. Wipes the existing database.", + "incremental_import": "Incremental import from a supplied export zip file.", + "job_queue": "File d'attente des tĂąches", + "maintenance": "Maintenance", + "migrate_hash_files": "A utiliser si vous avez modifiĂ© l'algorithme de hachage pour le nommage des fichiers gĂ©nĂ©rĂ©s. Renomme les fichiers gĂ©nĂ©rĂ©s en fonction de l'algorithme de hachage sĂ©lectionnĂ©.", + "migrations": "Migrations", + "only_dry_run": "Effectuer un essai Ă  blanc. Ne supprime rien du tout.", + "plugin_tasks": "TĂąches des Plugins", + "scan_for_content_desc": "Scanner pour des nouveaux contenus et les ajouter Ă  la base de donnĂ©es.", + "set_name_date_details_from_metadata_if_present": "Enregistre le titre, la date et autres dĂ©tails Ă  partir des mĂ©tadonnĂ©es du fichier (si prĂ©sentes)" + }, + "tools": { + "scene_duplicate_checker": "VĂ©rificateur de doublons VidĂ©os", + "scene_filename_parser": { + "add_field": "Ajouter un champ", + "capitalize_title": "Titre en majuscule", + "display_fields": "Afficher les champs", + "escape_chars": "Utilisez \\ pour Ă©chapper les caractĂšres littĂ©raux", + "filename": "Nom du fichier", + "filename_pattern": "Pattern des noms de fichier", + "ignore_organized": "Ignorer les VidĂ©os dĂ©jĂ  OrganisĂ©es", + "ignored_words": "Mots Ă  ignorer", + "matches_with": "Matches with {i}", + "select_parser_recipe": "SĂ©lectionner une recette d'analyse", + "title": "Analyseur de nom de fichier VidĂ©os", + "whitespace_chars": "Espaces", + "whitespace_chars_desc": "Ces caractĂšres seront remplacĂ©s par un espace dans le titre" + }, + "scene_tools": "Outils VidĂ©os" + }, + "ui": { + "custom_css": { + "description": "La page doit ĂȘtre rafraichie pour que les changements prennent effet.", + "heading": "CSS personalisĂ©", + "option_label": "Activer le CSS personalisĂ©" + }, + "delete_options": { + "description": "RĂ©glages par dĂ©faut lors de la suppression des VidĂ©o, Images et Galeries.", + "heading": "Options de suppression", + "options": { + "delete_file": "Par dĂ©faut, effacer les fichiers", + "delete_generated_supporting_files": "Par dĂ©faut, effacer les fichiers gĂ©nĂ©rĂ©s" + } + }, + "desktop_integration": { + "desktop_integration": "IntĂ©gration avec le Bureau", + "skip_opening_browser": "Ne pas ouvrir de navigateur", + "skip_opening_browser_on_startup": "ne pas ouvrir de navigateur au dĂ©marrage de l'application" + }, + "editing": { + "disable_dropdown_create": { + "heading": "DĂ©sactiver la crĂ©ation depuis la liste dĂ©roulante.", + "description": "DĂ©sactive la possibilitĂ© de crĂ©er des nouveaux Actrices/Acteurs, Studio et Tags depuis la liste dĂ©roulante." + }, + "heading": "Edition" + }, + "handy_connection_key": { + "description": "ClĂ© de connexion Handy pour les VidĂ©os interactives", + "heading": "ClĂ© de connexion Handy" + }, + "funscript_offset": { + "description": "DĂ©calage temporel (en millisecondes) Ă  appliquer lors de la lecture des scripts interactifs.", + "heading": "DĂ©calage Funscript (ms)" + }, + "images": { + "options": { + "write_image_thumbnails": { + "heading": "Write image thumbnails", + "description": "Write image thumbnails to disk when generated on-the-fly" + } + } + }, + "language": { + "heading": "Langue" + }, + "max_loop_duration": { + "description": "DurĂ©e maximum de la vidĂ©o pendant laquelle le lecteur rebouclera la vidĂ©o - 0 pour dĂ©sactiver", + "heading": "DurĂ©e maximum de rebouclage" + }, + "menu_items": { + "description": "Afficher ou masquer diffĂ©rents types de contenus dans la barre de navigation", + "heading": "ÉlĂ©ments de la barre de navigation" + }, + "performers": { + "options": { + "image_location": { + "heading": "Image par dĂ©faut personalisĂ©e pour les actrices/acteurs", + "description": "Chemin vers l'image Ă  utiliser pour les Actrices/Acteurs qui n'ont pas d'image. Laissez vide pour utiliser l'image par dĂ©faut de Stash." + } + } + }, + "preview_type": { + "description": "Configuration des Ă©lĂ©ments du Mur", + "heading": "Type d'aperçu", + "options": { + "animated": "Image animĂ©e", + "static": "Image fixe", + "video": "VidĂ©o" + } + }, + "scene_list": { + "heading": "Liste VidĂ©o", + "options": { + "show_studio_as_text": "Afficher les Studios en tant que texte" + } + }, + "scene_player": { + "heading": "Lecteur VidĂ©o", + "options": { + "auto_start_video": "Lecture automatique" + } + }, + "scene_wall": { + "heading": "Scene / Marker Wall", + "options": { + "display_title": "Display title and tags", + "toggle_sound": "Enable sound" + } + }, + "slideshow_delay": { + "description": "Diaporama disponible dans Galeries en mode de visionnage Mur", + "heading": "DurĂ©e de dĂ©filement du diaporama" + }, + "title": "Interface utilisateur" + } + }, + "configuration": "Configuration", + "countables": { + "galleries": "{count, plural, one {Galerie} other {Galeries}}", + "images": "{count, plural, one {Image} other {Images}}", + "markers": "{count, plural, one {Marqueur} other {Marqueurs}}", + "movies": "{count, plural, one {Film} other {Films}}", + "performers": "{count, plural, one {Actrice/Acteur} other {Actrices/Acteurs}}", + "scenes": "{count, plural, one {VidĂ©o} other {VidĂ©os}}", + "studios": "{count, plural, one {Studio} other {Studios}}", + "tags": "{count, plural, one {Tag} other {Tags}}", + "files": "{count, plural, one {Fichier} other {Fichiers}}" + }, + "country": "Pays", + "cover_image": "Image de couverture", + "created_at": "Date de crĂ©ation", + "criterion": { + "greater_than": "SupĂ©rieur Ă ", + "less_than": "InfĂ©rieur Ă ", + "value": "Valeur" + }, + "criterion_modifier": { + "equals": "est Ă©gal Ă ", + "excludes": "ne contient pas", + "format_string": "{criterion} {modifierString} {valueString}", + "greater_than": "est plus grand que", + "includes": "contient", + "includes_all": "contient tout", + "is_null": "est null", + "less_than": "est plus petit que", + "matches_regex": "match l'expression rĂ©guliĂšre", + "not_equals": "n'est pas Ă©gal Ă ", + "not_matches_regex": "ne match pas l'expression rĂ©guliĂšre", + "not_null": "n'est pas null", + "between": "entre", + "not_between": "en dehors" + }, + "custom": "PersonalisĂ©", + "date": "Date", + "death_date": "Date de dĂ©cĂšs", + "death_year": "AnnĂ©e de dĂ©cĂšs", + "descending": "Descendant", + "detail": "DĂ©tail", + "details": "DĂ©tails", + "developmentVersion": "Version de DĂ©veloppement", + "dialogs": { + "delete_alert": "{count, plural, one {Ce/Cette {singularEntity} sera supprimĂ©(e)} other {Ces {pluralEntity} seront supprimĂ©(e)s}} dĂ©finitivement:", + "delete_confirm": "Êtes-vous sĂ»r de vouloir supprimer {entityName} ?", + "delete_entity_desc": "{count, plural, one {Êtes-vous sĂ»r de vouloir supprimer cette {singularEntity} ? À moins que le fichier ne soit Ă©galement supprimĂ©, cette {singularEntity} sera ajoutĂ©e Ă  nouveau lors du prochain Scan.} other {Êtes-vous sĂ»r de vouloir supprimer ces {pluralEntity} ? À moins que les fichiers ne soient Ă©galement supprimĂ©s, ces {pluralEntity} seront ajoutĂ©es Ă  nouveau lors du prochain Scan.}}", + "delete_entity_title": "{count, plural, one {Delete {singularEntity}} other {Delete {pluralEntity}}}", + "delete_object_desc": "Êtes-vous sĂ»r de vouloir supprimer :", + "delete_object_overflow": "
et {count} {count, plural, one {autre {singularEntity}} other {autres {pluralEntity}}}.", + "delete_object_title": "Supprimer {count, plural, one {{singularEntity}} other {{pluralEntity}}}", + "delete_galleries_extra": "
ainsi que tout fichier image non-associĂ© Ă  une autre Galerie.", + "edit_entity_title": "Editer {count, plural, one {{singularEntity}} other {{pluralEntity}}}", + "export_include_related_objects": "Inclure les entitĂ©s liĂ©es", + "export_title": "Export", + "lightbox": { + "delay": "DĂ©lais (Secondes)", + "display_mode": { + "label": "Mode d'affichage", + "original": "Original", + "fit_to_screen": "Adapter Ă  l'Ă©cran", + "fit_horizontally": "Adapter horizontalement" + }, + "options": "Options", + "reset_zoom_on_nav": "Remise Ă  zero du niveau de zoom au changement d'image", + "scale_up": { + "label": "Adapter Ă  l'Ă©cran", + "description": "Agrandir l'image pour adapter Ă  l'Ă©cran" + }, + "scroll_mode": { + "label": "Mode de dĂ©filement", + "zoom": "Zoom", + "pan_y": "Pan Y", + "description": "Maintenir MAJ pour utiliser temporairement l'autre mode" + } + }, + "merge_tags": { + "destination": "Destination", + "source": "Source" + }, + "overwrite_filter_confirm": "Êtes-vous sĂ»r de vouloir Ă©craser le filtre sauvegardĂ© {entityName} ?", + "scene_gen": { + "image_previews": "Aperçus image (Image WebP animĂ©e. Requis seulement si le type d'Aperçu est dĂ©fini sur Image AnimĂ©e)", + "markers": "Marqueurs (vidĂ©o de 20 secondes qui dĂ©marre au Timecode courant)", + "marker_image_previews": "Aperçus Marqueurs (Image WebP animĂ©e. Requis seulement si le type d'aperçu est dĂ©fini sur Image AnimĂ©e)", + "marker_screenshots": "Capture d'Ă©cran Marqueurs (Image JPG fixe. Requis seulement si le type d'Aperçu est dĂ©fini sur Image Fixe)", + "overwrite": "Ecraser les fichiers gĂ©nĂ©rĂ©s existants", + "phash": "Hachage perceptif (pour la dĂ©duplication)", + "preview_exclude_end_time_desc": "Exclure les x derniĂšres secondes de la vidĂ©o pour la gĂ©nĂ©ration de l'aperçu. La valeur peut-ĂȘtre exprimĂ©e en secondes ou bien en pourcentage (ex: 2%) de la durĂ©e totale de la vidĂ©o.", + "preview_exclude_end_time_head": "Exclure Ă  la fin", + "preview_exclude_start_time_desc": "Exclure les x premiĂšres secondes de la vidĂ©o pour la gĂ©nĂ©ration de l'aperçu. La valeur peut-ĂȘtre exprimĂ©e en secondes ou bien en pourcentage (ex: 2%) de la durĂ©e totale de la vidĂ©o.", + "preview_exclude_start_time_head": "Exclure au dĂ©but", + "preview_options": "Options d'Aperçus", + "preview_preset_desc": "Le Preset d'encodage rĂ©gule la taille, la qualitĂ© et le temps d'encodage des aperçus. Les Preset plus bas que “slow” n'apportent pas de gain significatif et ne sont pas recommandĂ©s.", + "preview_preset_head": "Preset d'encodage de l'aperçu", + "preview_seg_count_desc": "Nombre total de segments dans un aperçu.", + "preview_seg_count_head": "Nombre de segments dans un aperçu", + "preview_seg_duration_desc": "DurĂ©e de chaque segment d'aperçu (en secondes).", + "preview_seg_duration_head": "DurĂ©e d'un segment d'aperçu", + "sprites": "Sprites (pour l'aperçu sur la barre de progression)", + "transcodes": "Transcodages (conversion au format MP4 des fichiers vidĂ©o dont le format n'est pas supportĂ© par le lecteur vidĂ©o)", + "video_previews": "Aperçus (courte vidĂ©o jouĂ©e lorsque vous survolez une VidĂ©o)" + }, + "scenes_found": "{count} VidĂ©o(s) trouvĂ©e(s)", + "scrape_entity_query": "RequĂȘte de Scrape {entity_type}", + "scrape_entity_title": "RĂ©sultat du Scraping {entity_type}", + "scrape_results_existing": "Existant", + "scrape_results_scraped": "Scraped", + "set_image_url_title": "URL de l'image", + "unsaved_changes": "Changements non-sauvegardĂ©s. Êtes-vous sĂ»r de vouloir quitter ?", + "aliases_must_be_unique": "Les alias doivent ĂȘtre uniques", + "delete_gallery_files": "Supprime le dossier ou l'archive de la galerie, ainsi que toute image non associĂ©es Ă  une autre galerie." + }, + "dimensions": "Dimensions de l'image", + "director": "RĂ©alisateur", + "display_mode": { + "grid": "Grille", + "list": "Liste", + "tagger": "Taggueur", + "unknown": "Inconnu", + "wall": "Mur" + }, + "donate": "Faire un don", + "dupe_check": { + "description": "Les prĂ©cisions plus faibles que 'Exacte' peuvent prendre plus de temps Ă  ĂȘtre calculĂ©es. Les niveaux de prĂ©cisions faibles peuvent Ă©galement mener Ă  des rĂ©sultats faux-positifs.", + "found_sets": "{setCount, plural, one{# ensemble de doublons trouvĂ©.} other {# ensembles de doublons trouvĂ©s.}}", + "options": { + "exact": "Exacte", + "high": "Haute", + "low": "Basse", + "medium": "Moyenne" + }, + "search_accuracy_label": "PrĂ©cision", + "title": "ScĂšnes en double" + }, + "duration": "DurĂ©e", + "effect_filters": { + "aspect": "Aspect", + "blue": "Bleu", + "blur": "Flou", + "brightness": "LuminositĂ©", + "contrast": "Contraste", + "gamma": "Gamma", + "green": "Vert", + "hue": "Teinte", + "name": "Filtres", + "name_transforms": "Transformations", + "red": "Red", + "reset_filters": "Annuler les filtres", + "reset_transforms": "Annuler les transformations", + "rotate": "Rotation", + "rotate_left_and_scale": "Rotation Gauche & Dimensionnement", + "rotate_right_and_scale": "Rotation Droite & Dimensionnement", + "saturation": "Saturation", + "scale": "Dimension", + "warmth": "Chaleur" + }, + "ethnicity": "EthnicitĂ©", + "eye_color": "Couleur des yeux", + "fake_tits": "Implants mammaires", + "false": "Faux", + "favourite": "Favoris", + "file": "fichier", + "files": "fichier", + "file_info": "Infos fichier", + "file_mod_time": "Date de modification fichier", + "filesize": "Taille du fichier", + "filter": "Filtre", + "filter_name": "Nom du filtre", + "filters": "Filtres", + "framerate": "FrĂ©quence d'images", + "frames_per_second": "{value} ips", + "galleries": "Galeries", + "gallery": "Galerie", + "gallery_count": "Nombre de Galeries", + "gender": "Genre", + "hair_color": "Couleur des cheveux", + "hasMarkers": "PossĂšde des marqueurs", + "height": "Taille", + "help": "Aide", + "image": "Image", + "image_count": "Nombre d'Images", + "images": "Images", + "include_parent_tags": "Inclure les Tags parents", + "include_sub_studios": "Inclure les studios affiliĂ©s / filiales", + "include_sub_tags": "Inclure les sous-Tags", + "instagram": "Instagram", + "interactive": "Interactif", + "isMissing": "Manquant", + "library": "BibliothĂšque", + "loading": { + "generic": "Chargement
" + }, + "marker_count": "Nombre de Marqueurs", + "markers": "Marqueurs", + "measurements": "Mensurations", + "media_info": { + "audio_codec": "Codec Audio", + "checksum": "Checksum", + "downloaded_from": "TĂ©lĂ©chargĂ© de", + "hash": "Hachage", + "performer_card": { + "age": "{age} {years_old}", + "age_context": "{age} {years_old} in this scene" + }, + "phash": "PHash", + "stream": "Stream", + "video_codec": "Codec vidĂ©o" + }, + "megabits_per_second": "{value} Mbps", + "metadata": "MĂ©tadonnĂ©es", + "movie": "Film", + "movie_scene_number": "Nombre de ScĂšnes de films", + "movies": "Films", + "name": "Nom", + "new": "Nouveau", + "none": "Aucun", + "o_counter": "O-mĂštre", + "operations": "OpĂ©rations", + "organized": "OrganisĂ©", + "pagination": { + "first": "PremiĂšre", + "last": "DerniĂšre", + "next": "Suivante", + "previous": "PrĂ©cĂ©dente" + }, + "parent_of": "Parent de {children}", + "parent_studios": "Studio parent", + "parent_tags": "Tag parent", + "parent_tag_count": "Nombre de Tags Parents", + "part_of": "Fait partie de {parent}", + "path": "Chemin", + "performer": "Actrice/Acteur", + "performer_count": "Nombre d'Actrices/Acteurs", + "performer_image": "Photo", + "performers": "Actrices/Acteurs", + "performerTags": "Tags d'Actrice/Acteur", + "piercings": "Piercings", + "queue": "File de lecture", + "random": "AlĂ©atoire", + "rating": "Note", + "resolution": "RĂ©solution", + "scene": "VidĂ©o", + "scene_count": "Nombre de VidĂ©os", + "scene_id": "VidĂ©o ID", + "scenes": "VidĂ©os", + "scenes_updated_at": "ScĂšne modifiĂ©e le", + "sceneTagger": "Taggueur de ScĂšne", + "sceneTags": "Tags de ScĂšne", + "search_filter": { + "add_filter": "Ajouter un filtre", + "name": "Filtres", + "saved_filters": "Filtres sauvegardĂ©s", + "update_filter": "Mise Ă  jour du filtre" + }, + "seconds": "Secondes", + "settings": "ParamĂštres", + "sub_tag_of": "Sous-Tag de {parent}", + "stash_id": "Stash ID", + "stash_ids": "Stash IDs", + "status": "Statut: {statusText}", + "studio": "Studio", + "studio_depth": "Niveaux (empty for all)", + "studios": "Studios", + "synopsis": "Synopsis", + "tag": "Tag", + "tag_count": "Nombre de Tags", + "tags": "Tags", + "tattoos": "Tattoos", + "title": "Titre", + "toast": { + "added_entity": "{entity} ajoutĂ©(e)", + "added_generation_job_to_queue": "TĂąche de gĂ©nĂ©ration ajoutĂ©e dans la file des tĂąches", + "create_entity": "Créé(e) {entity}", + "default_filter_set": "Filtre par dĂ©faut enregistrĂ©", + "delete_entity": "Suppression de {count, plural, one {{singularEntity}} other {{pluralEntity}}}", + "delete_past_tense": "{count, plural, one {{singularEntity}} other {{pluralEntity}}} supprimĂ©(e)(s)", + "generating_screenshot": "GĂ©nĂ©ration de la capture d'Ă©cran
", + "merged_tags": "Tags fusionnĂ©s", + "rescanning_entity": "Rescan de {count, plural, one {{singularEntity}} other {{pluralEntity}}}
", + "started_auto_tagging": "DĂ©marrage du Taggage automatique", + "saved_entity": "{entity} sauvegardĂ©(e)", + "updated_entity": "{entity} mis(e) Ă  jour" + }, + "total": "Total", + "true": "Vrai", + "twitter": "Twitter", + "up-dir": "Remonter d'un rĂ©pertoire", + "updated_at": "Date de modification", + "url": "URL", + "weight": "Poids", + "years_old": "ans", + "stats": { + "image_size": "Taille Images", + "scenes_size": "Taille VidĂ©os", + "scenes_duration": "DurĂ©e VidĂ©os" + } +} diff --git a/ui/v2.5/src/locales/index.ts b/ui/v2.5/src/locales/index.ts index 6a3534d8d..ed9505b7b 100644 --- a/ui/v2.5/src/locales/index.ts +++ b/ui/v2.5/src/locales/index.ts @@ -3,6 +3,7 @@ import enGB from "./en-GB.json"; import enUS from "./en-US.json"; import esES from "./es-ES.json"; import ptBR from "./pt-BR.json"; +import frFR from "./fr-FR.json"; import itIT from "./it-IT.json"; import svSE from "./sv-SE.json"; import zhTW from "./zh-TW.json"; @@ -14,6 +15,7 @@ export default { enUS, esES, ptBR, + frFR, itIT, svSE, zhTW,