Skip to content

Commit 4197824

Browse files
upupnoahInnei
andauthored
feat(i18n): add French language support (#409)
Added French translations to the application, including localization for app content, common phrases, external resources, language settings, and shortcuts. Co-authored-by: Innei <i@innei.in>
1 parent 0aa8e6f commit 4197824

File tree

11 files changed

+511
-1
lines changed

11 files changed

+511
-1
lines changed

locales/app/fr.json

Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
{
2+
"ai_daily.title": "Actualités Principales - {{title}}",
3+
"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.",
4+
"ai_daily.tooltip.update_schedule": "Mise à jour quotidienne à 8h00 et 20h00.",
5+
"app.app_name": "NOM_APP",
6+
"app.copy_logo_svg": "Copier le logo SVG",
7+
"app.toggle_sidebar": "Afficher/Masquer la barre latérale",
8+
"discover.any_url_or_keyword": "Toute URL ou mot-clé",
9+
"discover.default_option": " (par défaut)",
10+
"discover.feed_description": "La description de ce flux est la suivante, et vous pouvez remplir le formulaire des paramètres avec les informations pertinentes.",
11+
"discover.feed_maintainers": "Ce flux est fourni par RSSHub, avec crédit à <maintainers />",
12+
"discover.import.click_to_upload": "Cliquez pour télécharger un fichier OPML",
13+
"discover.popular": "Populaire",
14+
"discover.preview": "Aperçu",
15+
"discover.rss_hub_route": "Itinéraire RSSHub",
16+
"discover.rss_url": "URL du RSS",
17+
"discover.select_placeholder": "Sélectionner",
18+
"early_access": "Accès Anticipé",
19+
"entry_actions.copy_link": "Copier le lien",
20+
"entry_actions.failed_to_save_to_eagle": "Échec de l'enregistrement sur Eagle.",
21+
"entry_actions.failed_to_save_to_instapaper": "Échec de l'enregistrement sur Instapaper.",
22+
"entry_actions.failed_to_save_to_readwise": "Échec de l'enregistrement sur Readwise.",
23+
"entry_actions.link_copied": "Lien copié dans le presse-papiers.",
24+
"entry_actions.mark_as_read": "Marquer comme lu",
25+
"entry_actions.mark_as_unread": "Marquer comme non lu",
26+
"entry_actions.open_in_browser": "Ouvrir dans le navigateur",
27+
"entry_actions.save_media_to_eagle": "Enregistrer le média sur Eagle",
28+
"entry_actions.save_to_instapaper": "Enregistrer sur Instapaper",
29+
"entry_actions.save_to_readwise": "Enregistrer sur Readwise",
30+
"entry_actions.saved_to_eagle": "Enregistré sur Eagle.",
31+
"entry_actions.saved_to_instapaper": "Enregistré sur Instapaper.",
32+
"entry_actions.saved_to_readwise": "Enregistré sur Readwise.",
33+
"entry_actions.share": "Partager",
34+
"entry_actions.star": "Mettre en favori",
35+
"entry_actions.starred": "Favori.",
36+
"entry_actions.tip": "Pourboire",
37+
"entry_actions.unstar": "Retirer des favoris",
38+
"entry_actions.unstarred": "Retiré des favoris.",
39+
"entry_column.refreshing": "Actualisation des nouvelles entrées...",
40+
"entry_content.ai_summary": "Résumé AI",
41+
"entry_content.fetching_content": "Récupération du contenu original et traitement...",
42+
"entry_content.header.play_tts": "Lire TTS",
43+
"entry_content.header.readability": "Lisibilité",
44+
"entry_content.no_content": "Aucun contenu",
45+
"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.",
46+
"entry_content.render_error": "Erreur de rendu :",
47+
"entry_content.report_issue": "Signaler un problème",
48+
"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.",
49+
"entry_list.zero_unread": "Zéro non lu",
50+
"entry_list_header.daily_report": "Rapport Quotidien",
51+
"entry_list_header.hide_no_image_items": "Masquer les éléments sans images",
52+
"entry_list_header.items": "éléments",
53+
"entry_list_header.new_entries_available": "Nouvelles entrées disponibles",
54+
"entry_list_header.refetch": "Récupérer de nouveau",
55+
"entry_list_header.refresh": "Actualiser",
56+
"entry_list_header.show_all": "Tout afficher",
57+
"entry_list_header.show_all_items": "Afficher tous les éléments",
58+
"entry_list_header.show_unread_only": "Afficher uniquement les non lus",
59+
"entry_list_header.switch_to_grid": "Passer en grille",
60+
"entry_list_header.switch_to_masonry": "Passer en maçonnerie",
61+
"entry_list_header.unread": "non lu",
62+
"feed_claim_modal.choose_verification_method": "Il existe trois méthodes au choix, vous pouvez en choisir une pour vérifier.",
63+
"feed_claim_modal.claim_button": "Réclamer",
64+
"feed_claim_modal.content_instructions": "Copiez le contenu ci-dessous et publiez-le dans votre dernier flux RSS.",
65+
"feed_claim_modal.description_current": "Description actuelle :",
66+
"feed_claim_modal.description_instructions": "Copiez le contenu suivant et collez-le dans le champ <code /> de votre flux RSS.",
67+
"feed_claim_modal.failed_to_load": "Échec du chargement du message de réclamation",
68+
"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.",
69+
"feed_claim_modal.rss_instructions": "Copiez le code ci-dessous et collez-le dans votre générateur RSS.",
70+
"feed_claim_modal.rss_json_format": "Format JSON",
71+
"feed_claim_modal.rss_xml_format": "Format XML",
72+
"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.",
73+
"feed_claim_modal.tab_content": "Contenu",
74+
"feed_claim_modal.tab_description": "Description",
75+
"feed_claim_modal.tab_rss": "Balise RSS",
76+
"feed_claim_modal.verify_ownership": "Pour réclamer ce flux comme le vôtre, vous devez vérifier la propriété.",
77+
"feed_form.add_follow": "Ajouter un abonnement",
78+
"feed_form.category": "Catégorie",
79+
"feed_form.category_description": "Par défaut, vos abonnements seront regroupés par site web.",
80+
"feed_form.error_fetching_feed": "Erreur lors de la récupération du flux.",
81+
"feed_form.feed_not_found": "Flux non trouvé.",
82+
"feed_form.feedback": "Retour d'information",
83+
"feed_form.follow": "Suivre",
84+
"feed_form.followed": "🎉 Suivi.",
85+
"feed_form.private_follow": "Suivi privé",
86+
"feed_form.private_follow_description": "Ce suivi est-il visible publiquement sur votre page de profil ?",
87+
"feed_form.retry": "Réessayer",
88+
"feed_form.title": "Titre",
89+
"feed_form.title_description": "Titre personnalisé pour ce flux. Laisser vide pour utiliser le titre par défaut.",
90+
"feed_form.unfollow": "Se désabonner",
91+
"feed_form.update": "Mettre à jour",
92+
"feed_form.update_follow": "Mettre à jour l'abonnement",
93+
"feed_form.updated": "🎉 Mis à jour.",
94+
"feed_form.view": "Voir",
95+
"feed_item.claimed_by_owner": "Ce flux est réclamé par",
96+
"feed_item.claimed_by_unknown": "son propriétaire.",
97+
"feed_item.claimed_by_you": "Réclamé par vous",
98+
"feed_item.claimed_feed": "Flux Réclamé",
99+
"feed_item.error_since": "Erreur depuis",
100+
"feed_item.not_publicly_visible": "Non visible publiquement sur votre page de profil",
101+
"feed_view_type.articles": "Articles",
102+
"feed_view_type.audios": "Audios",
103+
"feed_view_type.notifications": "Notifications",
104+
"feed_view_type.pictures": "Images",
105+
"feed_view_type.social_media": "Réseaux sociaux",
106+
"feed_view_type.videos": "Vidéos",
107+
"mark_all_read_button.auto_confirm_info": "Sera confirmé automatiquement après 3s.",
108+
"mark_all_read_button.confirm": "Confirmer",
109+
"mark_all_read_button.confirm_mark_all": "Marquer {{which}} comme lu ?",
110+
"mark_all_read_button.confirm_mark_all_info": "Confirmez que vous voulez tout marquer comme lu ?",
111+
"mark_all_read_button.mark_all_as_read": "Tout marquer comme lu",
112+
"mark_all_read_button.mark_as_read": "Marquer {{which}} comme lu",
113+
"mark_all_read_button.undo": "Annuler",
114+
"player.back_10s": "Retour de 10s",
115+
"player.close": "Fermer",
116+
"player.download": "Télécharger",
117+
"player.exit_full_screen": "Quitter le mode plein écran",
118+
"player.forward_10s": "Avancer de 10s",
119+
"player.full_screen": "Plein écran",
120+
"player.mute": "Muet",
121+
"player.open_entry": "Ouvrir l'entrée",
122+
"player.pause": "Pause",
123+
"player.play": "Lecture",
124+
"player.playback_rate": "Vitesse de lecture",
125+
"player.unmute": "Réactiver le son",
126+
"player.volume": "Volume",
127+
"search.empty.no_results": "Aucun résultat trouvé.",
128+
"search.group.entries": "Entrées",
129+
"search.group.feeds": "Flux",
130+
"search.options.all": "Tous",
131+
"search.options.entries": "Entrées",
132+
"search.options.feeds": "Flux",
133+
"search.options.search_type": "Type de recherche",
134+
"search.placeholder": "Rechercher...",
135+
"search.result_count_local_mode": "(Mode local)",
136+
"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.",
137+
"shortcuts.guide.title": "Guide des raccourcis",
138+
"sidebar.category_remove_dialog.cancel": "Annuler",
139+
"sidebar.category_remove_dialog.continue": "Continuer",
140+
"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.",
141+
"sidebar.category_remove_dialog.title": "Supprimer la catégorie",
142+
"sidebar.feed_actions.claim": "Réclamer",
143+
"sidebar.feed_actions.claim_feed": "Réclamer le flux",
144+
"sidebar.feed_actions.copy_feed_id": "Copier l'ID du flux",
145+
"sidebar.feed_actions.copy_feed_url": "Copier l'URL du flux",
146+
"sidebar.feed_actions.edit": "Éditer",
147+
"sidebar.feed_actions.edit_feed": "Éditer le flux",
148+
"sidebar.feed_actions.feed_owned_by_you": "Ce flux vous appartient",
149+
"sidebar.feed_actions.mark_all_as_read": "Tout marquer comme lu",
150+
"sidebar.feed_actions.navigate_to_feed": "Naviguer vers le flux",
151+
"sidebar.feed_actions.open_feed_in_browser": "Ouvrir le flux dans le navigateur",
152+
"sidebar.feed_actions.open_site_in_browser": "Ouvrir le site dans le navigateur",
153+
"sidebar.feed_actions.unfollow": "Se désabonner",
154+
"sidebar.feed_actions.unfollow_feed": "Se désabonner du flux",
155+
"sidebar.feed_column.context_menu.change_to_other_view": "Changer pour une autre vue",
156+
"sidebar.feed_column.context_menu.delete_category": "Supprimer la catégorie",
157+
"sidebar.feed_column.context_menu.delete_category_confirmation": "Supprimer la catégorie {{folderName}} ?",
158+
"sidebar.feed_column.context_menu.mark_as_read": "Marquer comme lu",
159+
"sidebar.feed_column.context_menu.rename_category": "Renommer la catégorie",
160+
"sidebar.select_sort_method": "Sélectionnez une méthode de tri",
161+
"signin.continue_with_github": "Continuer avec GitHub",
162+
"signin.continue_with_google": "Continuer avec Google",
163+
"signin.sign_in_to": "Se connecter à",
164+
"sync_indicator.disabled": "Pour des raisons de sécurité, la synchronisation est désactivée.",
165+
"sync_indicator.offline": "Hors ligne",
166+
"sync_indicator.synced": "Synchronisé avec le serveur",
167+
"tip_modal.amount": "Montant",
168+
"tip_modal.claim_feed": "Réclamer ce flux",
169+
"tip_modal.create_wallet": "Créer gratuitement",
170+
"tip_modal.feed_owner": "Propriétaire du flux",
171+
"tip_modal.low_balance": "Votre solde n'est pas suffisant pour couvrir ce pourboire. Veuillez ajuster le montant.",
172+
"tip_modal.no_wallet": "Vous n'avez pas encore de portefeuille. Veuillez créer un portefeuille pour donner un pourboire.",
173+
"tip_modal.tip_amount_sent": "a été envoyé à l'auteur.",
174+
"tip_modal.tip_now": "Donner un pourboire maintenant",
175+
"tip_modal.tip_sent": "Pourboire envoyé avec succès ! Merci pour votre soutien.",
176+
"tip_modal.tip_support": "⭐ Donnez un pourboire pour montrer votre soutien !",
177+
"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é.",
178+
"user_button.account": "Compte",
179+
"user_button.download_desktop_app": "Télécharger l'application de bureau",
180+
"user_button.log_out": "Se déconnecter",
181+
"user_button.power": "Power",
182+
"user_button.preferences": "Préférences",
183+
"user_button.profile": "Profil",
184+
"user_profile.close": "Fermer",
185+
"user_profile.edit": "Modifier",
186+
"user_profile.loading": "Chargement",
187+
"user_profile.share": "Partager",
188+
"user_profile.toggle_item_style": "Changer le style de l'élément",
189+
"words.add": "Ajouter",
190+
"words.confirm": "Confirmer",
191+
"words.discover": "Découvrir",
192+
"words.email": "Email",
193+
"words.import": "Importer",
194+
"words.items": "Éléments",
195+
"words.language": "Langue",
196+
"words.load_archived_entries": "Charger les entrées archivées",
197+
"words.login": "Connexion",
198+
"words.rss": "RSS",
199+
"words.rss3": "RSS3",
200+
"words.rsshub": "RSSHub",
201+
"words.search": "Rechercher",
202+
"words.starred": "Favoris",
203+
"words.unread": "Non lu",
204+
"words.user": "Utilisateur",
205+
"words.which.all": "tous",
206+
"words.zero_items": "Zéro élément"
207+
}

locales/common/fr.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"app.copied_to_clipboard": "Copié dans le presse-papier",
3+
"cancel": "Annuler",
4+
"confirm": "Confirmer",
5+
"ok": "OK",
6+
"quantifier.piece": "",
7+
"time.last_night": "La nuit dernière",
8+
"time.the_night_before_last": "L'avant-dernière nuit",
9+
"time.today": "Aujourd'hui",
10+
"time.yesterday": "Hier",
11+
"tips.load-lng-error": "Échec du chargement du pack de langue",
12+
"words.back": "Retour",
13+
"words.copy": "Copier",
14+
"words.edit": "Éditer",
15+
"words.entry": "Entrée",
16+
"words.id": "ID",
17+
"words.items_one": "Élément",
18+
"words.items_other": "Éléments",
19+
"words.local": "local",
20+
"words.record": "enregistrement",
21+
"words.record_one": "enregistrement",
22+
"words.record_other": "enregistrements",
23+
"words.result": "résultat",
24+
"words.result_one": "résultat",
25+
"words.result_other": "résultats",
26+
"words.space": " ",
27+
"words.which.all": "Tous"
28+
}

locales/external/fr.json

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
{
2+
"feed": {
3+
"follow_one": "suivi",
4+
"follow_other": "suivis",
5+
"followsAndReads": "{{subscriptionCount}} {{subscriptionNoun}} avec {{readCount}} {{readNoun}} sur {{appName}}",
6+
"read_one": "lecture",
7+
"read_other": "lectures"
8+
},
9+
"header": {
10+
"app": "Application",
11+
"download": "Télécharger"
12+
},
13+
"invitation": {
14+
"activate": "Activer",
15+
"codeOptions": {
16+
"1": "Cherchez un utilisateur de test alpha pour vous inviter.",
17+
"2": "Rejoignez notre serveur Discord pour des cadeaux occasionnels.",
18+
"3": "Suivez notre compte X pour des cadeaux occasionnels."
19+
},
20+
"earlyAccess": "Follow est actuellement en accès anticipé et nécessite un code d'invitation pour être utilisé.",
21+
"earlyAccessMessage": "😰 Désolé, Follow est actuellement en accès anticipé et nécessite un code d'invitation pour être utilisé.",
22+
"generateButton": "Générer un nouveau code",
23+
"generateCost": "Vous pouvez dépenser {{INVITATION_PRICE}} Power pour générer un code d'invitation pour vos amis.",
24+
"getCodeMessage": "Vous pouvez obtenir un code d'invitation de la manière suivante :",
25+
"title": "Code d'invitation"
26+
},
27+
"login": {
28+
"backToWebApp": "Retour à l'application web",
29+
"continueWithGitHub": "Continuer avec GitHub",
30+
"continueWithGoogle": "Continuer avec Google",
31+
"logInTo": "Se connecter à",
32+
"openApp": "Ouvrir l'application",
33+
"redirecting": "Redirection",
34+
"welcomeTo": "Bienvenue sur"
35+
},
36+
"redirect": {
37+
"continueInBrowser": "Continuer dans le navigateur",
38+
"instruction": "Il est maintenant temps d'ouvrir {{APP_NAME}} et de fermer cette page en toute sécurité.",
39+
"openApp": "Ouvrir {{APP_NAME}}",
40+
"successMessage": "Vous vous êtes connecté avec succès à votre compte {{APP_NAME}}."
41+
}
42+
}

locales/lang/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"langs.en": "English",
3+
"langs.fr": "Français",
34
"langs.ja": "日本語",
45
"langs.pt": "Português",
56
"langs.zh-CN": "简体中文",

locales/lang/fr.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"langs.en": "Anglais",
3+
"langs.fr": "Français",
4+
"langs.ja": "Japonais",
5+
"langs.zh-CN": "Chinois simplifié",
6+
"name": "Français"
7+
}

locales/lang/ja.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"langs.en": "English",
3+
"langs.fr": "Français",
34
"langs.ja": "日本語",
45
"langs.pt": "Português",
56
"langs.zh-CN": "简体中文",

locales/lang/zh-CN.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"langs.en": "English",
3+
"langs.fr": "Français",
34
"langs.ja": "日本語",
45
"langs.pt": "Português",
56
"langs.zh-CN": "简体中文",

0 commit comments

Comments
 (0)