Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(i18n): add French language support #409

Merged
merged 2 commits into from
Sep 15, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
feat(i18n): add French language support
Added French translations to the application, including localization for app content, common phrases, external resources, language settings, and shortcuts.
  • Loading branch information
upupnoah committed Sep 14, 2024
commit 09aebb73a62bc09168544580187f08dd0d46d89f
207 changes: 207 additions & 0 deletions locales/app/fr.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
{
"ai_daily.title": "Actualités Principales - {{title}}",
"ai_daily.tooltip.content": "Voici des nouvelles sélectionnées par l'IA à partir de votre chronologie (<From /> - <To />) qui peuvent être importantes pour vous.",
"ai_daily.tooltip.update_schedule": "Mise à jour quotidienne à 8h00 et 20h00.",
"app.app_name": "NOM_APP",
"app.copy_logo_svg": "Copier le logo SVG",
"app.toggle_sidebar": "Afficher/Masquer la barre latérale",
"discover.any_url_or_keyword": "Toute URL ou mot-clé",
"discover.default_option": " (par défaut)",
"discover.feed_description": "La description de ce flux est la suivante, et vous pouvez remplir le formulaire des paramètres avec les informations pertinentes.",
"discover.feed_maintainers": "Ce flux est fourni par RSSHub, avec crédit à <maintainers />",
"discover.import.click_to_upload": "Cliquez pour télécharger un fichier OPML",
"discover.popular": "Populaire",
"discover.preview": "Aperçu",
"discover.rss_hub_route": "Itinéraire RSSHub",
"discover.rss_url": "URL du RSS",
"discover.select_placeholder": "Sélectionner",
"early_access": "Accès Anticipé",
"entry_actions.copy_link": "Copier le lien",
"entry_actions.failed_to_save_to_eagle": "Échec de l'enregistrement sur Eagle.",
"entry_actions.failed_to_save_to_instapaper": "Échec de l'enregistrement sur Instapaper.",
"entry_actions.failed_to_save_to_readwise": "Échec de l'enregistrement sur Readwise.",
"entry_actions.link_copied": "Lien copié dans le presse-papiers.",
"entry_actions.mark_as_read": "Marquer comme lu",
"entry_actions.mark_as_unread": "Marquer comme non lu",
"entry_actions.open_in_browser": "Ouvrir dans le navigateur",
"entry_actions.save_media_to_eagle": "Enregistrer le média sur Eagle",
"entry_actions.save_to_instapaper": "Enregistrer sur Instapaper",
"entry_actions.save_to_readwise": "Enregistrer sur Readwise",
"entry_actions.saved_to_eagle": "Enregistré sur Eagle.",
"entry_actions.saved_to_instapaper": "Enregistré sur Instapaper.",
"entry_actions.saved_to_readwise": "Enregistré sur Readwise.",
"entry_actions.share": "Partager",
"entry_actions.star": "Mettre en favori",
"entry_actions.starred": "Favori.",
"entry_actions.tip": "Pourboire",
"entry_actions.unstar": "Retirer des favoris",
"entry_actions.unstarred": "Retiré des favoris.",
"entry_column.refreshing": "Actualisation des nouvelles entrées...",
"entry_content.ai_summary": "Résumé AI",
"entry_content.fetching_content": "Récupération du contenu original et traitement...",
"entry_content.header.play_tts": "Lire TTS",
"entry_content.header.readability": "Lisibilité",
"entry_content.no_content": "Aucun contenu",
"entry_content.readability_notice": "Ce contenu est fourni par Readability. Si vous remarquez des anomalies typographiques, veuillez visiter le site source pour voir le contenu original.",
"entry_content.render_error": "Erreur de rendu :",
"entry_content.report_issue": "Signaler un problème",
"entry_content.web_app_notice": "Peut-être que l'application web ne prend pas en charge ce type de contenu. Mais vous pouvez télécharger l'application de bureau.",
"entry_list.zero_unread": "Zéro non lu",
"entry_list_header.daily_report": "Rapport Quotidien",
"entry_list_header.hide_no_image_items": "Masquer les éléments sans images",
"entry_list_header.items": "éléments",
"entry_list_header.new_entries_available": "Nouvelles entrées disponibles",
"entry_list_header.refetch": "Récupérer de nouveau",
"entry_list_header.refresh": "Actualiser",
"entry_list_header.show_all": "Tout afficher",
"entry_list_header.show_all_items": "Afficher tous les éléments",
"entry_list_header.show_unread_only": "Afficher uniquement les non lus",
"entry_list_header.switch_to_grid": "Passer en grille",
"entry_list_header.switch_to_masonry": "Passer en maçonnerie",
"entry_list_header.unread": "non lu",
"feed_claim_modal.choose_verification_method": "Il existe trois méthodes au choix, vous pouvez en choisir une pour vérifier.",
"feed_claim_modal.claim_button": "Réclamer",
"feed_claim_modal.content_instructions": "Copiez le contenu ci-dessous et publiez-le dans votre dernier flux RSS.",
"feed_claim_modal.description_current": "Description actuelle :",
"feed_claim_modal.description_instructions": "Copiez le contenu suivant et collez-le dans le champ <code /> de votre flux RSS.",
"feed_claim_modal.failed_to_load": "Échec du chargement du message de réclamation",
"feed_claim_modal.rss_format_choice": "Les générateurs RSS offrent généralement deux formats au choix. Veuillez copier les formats XML et JSON ci-dessous selon vos besoins.",
"feed_claim_modal.rss_instructions": "Copiez le code ci-dessous et collez-le dans votre générateur RSS.",
"feed_claim_modal.rss_json_format": "Format JSON",
"feed_claim_modal.rss_xml_format": "Format XML",
"feed_claim_modal.rsshub_notice": "Ce flux est fourni par RSSHub avec un cache d'une heure. Veuillez prévoir jusqu'à 1 heure pour que les modifications apparaissent après la publication du contenu.",
"feed_claim_modal.tab_content": "Contenu",
"feed_claim_modal.tab_description": "Description",
"feed_claim_modal.tab_rss": "Balise RSS",
"feed_claim_modal.verify_ownership": "Pour réclamer ce flux comme le vôtre, vous devez vérifier la propriété.",
"feed_form.add_follow": "Ajouter un abonnement",
"feed_form.category": "Catégorie",
"feed_form.category_description": "Par défaut, vos abonnements seront regroupés par site web.",
"feed_form.error_fetching_feed": "Erreur lors de la récupération du flux.",
"feed_form.feed_not_found": "Flux non trouvé.",
"feed_form.feedback": "Retour d'information",
"feed_form.follow": "Suivre",
"feed_form.followed": "🎉 Suivi.",
"feed_form.private_follow": "Suivi privé",
"feed_form.private_follow_description": "Ce suivi est-il visible publiquement sur votre page de profil ?",
"feed_form.retry": "Réessayer",
"feed_form.title": "Titre",
"feed_form.title_description": "Titre personnalisé pour ce flux. Laisser vide pour utiliser le titre par défaut.",
"feed_form.unfollow": "Se désabonner",
"feed_form.update": "Mettre à jour",
"feed_form.update_follow": "Mettre à jour l'abonnement",
"feed_form.updated": "🎉 Mis à jour.",
"feed_form.view": "Voir",
"feed_item.claimed_by_owner": "Ce flux est réclamé par",
"feed_item.claimed_by_unknown": "son propriétaire.",
"feed_item.claimed_by_you": "Réclamé par vous",
"feed_item.claimed_feed": "Flux Réclamé",
"feed_item.error_since": "Erreur depuis",
"feed_item.not_publicly_visible": "Non visible publiquement sur votre page de profil",
"feed_view_type.articles": "Articles",
"feed_view_type.audios": "Audios",
"feed_view_type.notifications": "Notifications",
"feed_view_type.pictures": "Images",
"feed_view_type.social_media": "Réseaux sociaux",
"feed_view_type.videos": "Vidéos",
"mark_all_read_button.auto_confirm_info": "Sera confirmé automatiquement après 3s.",
"mark_all_read_button.confirm": "Confirmer",
"mark_all_read_button.confirm_mark_all": "Marquer {{which}} comme lu ?",
"mark_all_read_button.confirm_mark_all_info": "Confirmez que vous voulez tout marquer comme lu ?",
"mark_all_read_button.mark_all_as_read": "Tout marquer comme lu",
"mark_all_read_button.mark_as_read": "Marquer {{which}} comme lu",
"mark_all_read_button.undo": "Annuler",
"player.back_10s": "Retour de 10s",
"player.close": "Fermer",
"player.download": "Télécharger",
"player.exit_full_screen": "Quitter le mode plein écran",
"player.forward_10s": "Avancer de 10s",
"player.full_screen": "Plein écran",
"player.mute": "Muet",
"player.open_entry": "Ouvrir l'entrée",
"player.pause": "Pause",
"player.play": "Lecture",
"player.playback_rate": "Vitesse de lecture",
"player.unmute": "Réactiver le son",
"player.volume": "Volume",
"search.empty.no_results": "Aucun résultat trouvé.",
"search.group.entries": "Entrées",
"search.group.feeds": "Flux",
"search.options.all": "Tous",
"search.options.entries": "Entrées",
"search.options.feeds": "Flux",
"search.options.search_type": "Type de recherche",
"search.placeholder": "Rechercher...",
"search.result_count_local_mode": "(Mode local)",
"search.tooltip.local_search": "Cette recherche couvre les données disponibles localement. Essayez de récupérer de nouveau pour inclure les dernières données.",
"shortcuts.guide.title": "Guide des raccourcis",
"sidebar.category_remove_dialog.cancel": "Annuler",
"sidebar.category_remove_dialog.continue": "Continuer",
"sidebar.category_remove_dialog.description": "Cette opération supprimera votre catégorie, mais les flux qu'elle contient seront conservés et regroupés par site Web.",
"sidebar.category_remove_dialog.title": "Supprimer la catégorie",
"sidebar.feed_actions.claim": "Réclamer",
"sidebar.feed_actions.claim_feed": "Réclamer le flux",
"sidebar.feed_actions.copy_feed_id": "Copier l'ID du flux",
"sidebar.feed_actions.copy_feed_url": "Copier l'URL du flux",
"sidebar.feed_actions.edit": "Éditer",
"sidebar.feed_actions.edit_feed": "Éditer le flux",
"sidebar.feed_actions.feed_owned_by_you": "Ce flux vous appartient",
"sidebar.feed_actions.mark_all_as_read": "Tout marquer comme lu",
"sidebar.feed_actions.navigate_to_feed": "Naviguer vers le flux",
"sidebar.feed_actions.open_feed_in_browser": "Ouvrir le flux dans le navigateur",
"sidebar.feed_actions.open_site_in_browser": "Ouvrir le site dans le navigateur",
"sidebar.feed_actions.unfollow": "Se désabonner",
"sidebar.feed_actions.unfollow_feed": "Se désabonner du flux",
"sidebar.feed_column.context_menu.change_to_other_view": "Changer pour une autre vue",
"sidebar.feed_column.context_menu.delete_category": "Supprimer la catégorie",
"sidebar.feed_column.context_menu.delete_category_confirmation": "Supprimer la catégorie {{folderName}} ?",
"sidebar.feed_column.context_menu.mark_as_read": "Marquer comme lu",
"sidebar.feed_column.context_menu.rename_category": "Renommer la catégorie",
"sidebar.select_sort_method": "Sélectionnez une méthode de tri",
"signin.continue_with_github": "Continuer avec GitHub",
"signin.continue_with_google": "Continuer avec Google",
"signin.sign_in_to": "Se connecter à",
"sync_indicator.disabled": "Pour des raisons de sécurité, la synchronisation est désactivée.",
"sync_indicator.offline": "Hors ligne",
"sync_indicator.synced": "Synchronisé avec le serveur",
"tip_modal.amount": "Montant",
"tip_modal.claim_feed": "Réclamer ce flux",
"tip_modal.create_wallet": "Créer gratuitement",
"tip_modal.feed_owner": "Propriétaire du flux",
"tip_modal.low_balance": "Votre solde n'est pas suffisant pour couvrir ce pourboire. Veuillez ajuster le montant.",
"tip_modal.no_wallet": "Vous n'avez pas encore de portefeuille. Veuillez créer un portefeuille pour donner un pourboire.",
"tip_modal.tip_amount_sent": "a été envoyé à l'auteur.",
"tip_modal.tip_now": "Donner un pourboire maintenant",
"tip_modal.tip_sent": "Pourboire envoyé avec succès ! Merci pour votre soutien.",
"tip_modal.tip_support": "⭐ Donnez un pourboire pour montrer votre soutien !",
"tip_modal.unclaimed_feed": "Personne n'a encore réclamé ce flux. Le Power reçu sera conservé en toute sécurité dans le contrat blockchain jusqu'à ce qu'il soit réclamé.",
"user_button.account": "Compte",
"user_button.download_desktop_app": "Télécharger l'application de bureau",
"user_button.log_out": "Se déconnecter",
"user_button.power": "Power",
"user_button.preferences": "Préférences",
"user_button.profile": "Profil",
"user_profile.close": "Fermer",
"user_profile.edit": "Modifier",
"user_profile.loading": "Chargement",
"user_profile.share": "Partager",
"user_profile.toggle_item_style": "Changer le style de l'élément",
"words.add": "Ajouter",
"words.confirm": "Confirmer",
"words.discover": "Découvrir",
"words.email": "Email",
"words.import": "Importer",
"words.items": "Éléments",
"words.language": "Langue",
"words.load_archived_entries": "Charger les entrées archivées",
"words.login": "Connexion",
"words.rss": "RSS",
"words.rss3": "RSS3",
"words.rsshub": "RSSHub",
"words.search": "Rechercher",
"words.starred": "Favoris",
"words.unread": "Non lu",
"words.user": "Utilisateur",
"words.which.all": "tous",
"words.zero_items": "Zéro élément"
}
28 changes: 28 additions & 0 deletions locales/common/fr.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"app.copied_to_clipboard": "Copié dans le presse-papier",
"cancel": "Annuler",
"confirm": "Confirmer",
"ok": "OK",
"quantifier.piece": "",
"time.last_night": "La nuit dernière",
"time.the_night_before_last": "L'avant-dernière nuit",
"time.today": "Aujourd'hui",
"time.yesterday": "Hier",
"tips.load-lng-error": "Échec du chargement du pack de langue",
"words.back": "Retour",
"words.copy": "Copier",
"words.edit": "Éditer",
"words.entry": "Entrée",
"words.id": "ID",
"words.items_one": "Élément",
"words.items_other": "Éléments",
"words.local": "local",
"words.record": "enregistrement",
"words.record_one": "enregistrement",
"words.record_other": "enregistrements",
"words.result": "résultat",
"words.result_one": "résultat",
"words.result_other": "résultats",
"words.space": " ",
"words.which.all": "Tous"
}
42 changes: 42 additions & 0 deletions locales/external/fr.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"feed": {
"follow_one": "suivi",
"follow_other": "suivis",
"followsAndReads": "{{subscriptionCount}} {{subscriptionNoun}} avec {{readCount}} {{readNoun}} sur {{appName}}",
"read_one": "lecture",
"read_other": "lectures"
},
"header": {
"app": "Application",
"download": "Télécharger"
},
"invitation": {
"activate": "Activer",
"codeOptions": {
"1": "Cherchez un utilisateur de test alpha pour vous inviter.",
"2": "Rejoignez notre serveur Discord pour des cadeaux occasionnels.",
"3": "Suivez notre compte X pour des cadeaux occasionnels."
},
"earlyAccess": "Follow est actuellement en accès anticipé et nécessite un code d'invitation pour être utilisé.",
"earlyAccessMessage": "😰 Désolé, Follow est actuellement en accès anticipé et nécessite un code d'invitation pour être utilisé.",
"generateButton": "Générer un nouveau code",
"generateCost": "Vous pouvez dépenser {{INVITATION_PRICE}} Power pour générer un code d'invitation pour vos amis.",
"getCodeMessage": "Vous pouvez obtenir un code d'invitation de la manière suivante :",
"title": "Code d'invitation"
},
"login": {
"backToWebApp": "Retour à l'application web",
"continueWithGitHub": "Continuer avec GitHub",
"continueWithGoogle": "Continuer avec Google",
"logInTo": "Se connecter à",
"openApp": "Ouvrir l'application",
"redirecting": "Redirection",
"welcomeTo": "Bienvenue sur"
},
"redirect": {
"continueInBrowser": "Continuer dans le navigateur",
"instruction": "Il est maintenant temps d'ouvrir {{APP_NAME}} et de fermer cette page en toute sécurité.",
"openApp": "Ouvrir {{APP_NAME}}",
"successMessage": "Vous vous êtes connecté avec succès à votre compte {{APP_NAME}}."
}
}
1 change: 1 addition & 0 deletions locales/lang/en.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"langs.en": "English",
"langs.fr": "Français",
"langs.ja": "日本語",
"langs.zh-CN": "简体中文",
"name": "English"
Expand Down
7 changes: 7 additions & 0 deletions locales/lang/fr.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"langs.en": "Anglais",
"langs.fr": "Français",
"langs.ja": "Japonais",
"langs.zh-CN": "Chinois simplifié",
"name": "Français"
}
1 change: 1 addition & 0 deletions locales/lang/ja.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"langs.en": "English",
"langs.fr": "Français",
"langs.ja": "日本語",
"langs.zh-CN": "简体中文",
"name": "日本語"
Expand Down
1 change: 1 addition & 0 deletions locales/lang/zh-CN.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"langs.en": "English",
"langs.fr": "Français",
"langs.ja": "日本語",
"langs.zh-CN": "简体中文",
"name": "简体中文"
Expand Down
Loading