fr.ts 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608
  1. import { SubmitKey } from "../store/config";
  2. import type { PartialLocaleType } from "./index";
  3. import { getClientConfig } from "../config/client";
  4. import { SAAS_CHAT_URL } from "@/app/constant";
  5. const SAAS_CHAT_URL_WITH_PARAM = `${SAAS_CHAT_URL}?data=chat`;
  6. const isApp = !!getClientConfig()?.isApp;
  7. const fr: PartialLocaleType = {
  8. WIP: "Prochainement...",
  9. Error: {
  10. Unauthorized: isApp
  11. ? `😆 La conversation a rencontré quelques problèmes, pas de panique :
  12. \\ 1️⃣ Si vous souhaitez commencer sans configuration, [cliquez ici pour démarrer la conversation immédiatement 🚀](${SAAS_CHAT_URL_WITH_PARAM})
  13. \\ 2️⃣ Si vous souhaitez utiliser vos propres ressources OpenAI, cliquez [ici](/#/settings) pour modifier les paramètres ⚙️`
  14. : `😆 La conversation a rencontré quelques problèmes, pas de panique :
  15. \ 1️⃣ Si vous souhaitez commencer sans configuration, [cliquez ici pour démarrer la conversation immédiatement 🚀](${SAAS_CHAT_URL_WITH_PARAM})
  16. \ 2️⃣ Si vous utilisez une version déployée privée, cliquez [ici](/#/auth) pour entrer la clé d'accès 🔑
  17. \ 3️⃣ Si vous souhaitez utiliser vos propres ressources OpenAI, cliquez [ici](/#/settings) pour modifier les paramètres ⚙️
  18. `,
  19. },
  20. Auth: {
  21. Title: "Mot de passe requis",
  22. Tips: "L'administrateur a activé la vérification par mot de passe. Veuillez entrer le code d'accès ci-dessous",
  23. SubTips: "Ou entrez votre clé API OpenAI ou Google",
  24. Input: "Entrez le code d'accès ici",
  25. Confirm: "Confirmer",
  26. Later: "Plus tard",
  27. Return: "Retour",
  28. SaasTips:
  29. "La configuration est trop compliquée, je veux l'utiliser immédiatement",
  30. TopTips:
  31. "🥳 Offre de lancement NextChat AI, débloquez OpenAI o1, GPT-4o, Claude-3.5 et les derniers grands modèles",
  32. },
  33. ChatItem: {
  34. ChatItemCount: (count: number) => `${count} conversations`,
  35. },
  36. Chat: {
  37. SubTitle: (count: number) => `Total de ${count} conversations`,
  38. EditMessage: {
  39. Title: "Modifier l'historique des messages",
  40. Topic: {
  41. Title: "Sujet de la discussion",
  42. SubTitle: "Modifier le sujet de la discussion actuel",
  43. },
  44. },
  45. Actions: {
  46. ChatList: "Voir la liste des messages",
  47. CompressedHistory: "Voir l'historique des prompts compressés",
  48. Export: "Exporter l'historique de la discussion",
  49. Copy: "Copier",
  50. Stop: "Arrêter",
  51. Retry: "Réessayer",
  52. Pin: "Épingler",
  53. PinToastContent: "1 conversation épinglée aux prompts prédéfinis",
  54. PinToastAction: "Voir",
  55. Delete: "Supprimer",
  56. Edit: "Modifier",
  57. RefreshTitle: "Actualiser le titre",
  58. RefreshToast: "Demande d'actualisation du titre envoyée",
  59. },
  60. Commands: {
  61. new: "Nouvelle discussion",
  62. newm: "Créer une discussion à partir du masque",
  63. next: "Discussion suivante",
  64. prev: "Discussion précédente",
  65. clear: "Effacer le contexte",
  66. del: "Supprimer la discussion",
  67. },
  68. InputActions: {
  69. Stop: "Arrêter la réponse",
  70. ToBottom: "Aller au plus récent",
  71. Theme: {
  72. auto: "Thème automatique",
  73. light: "Mode clair",
  74. dark: "Mode sombre",
  75. },
  76. Prompt: "Commandes rapides",
  77. Masks: "Tous les masques",
  78. Clear: "Effacer la discussion",
  79. Settings: "Paramètres de la discussion",
  80. UploadImage: "Télécharger une image",
  81. },
  82. Rename: "Renommer la discussion",
  83. Typing: "En train d'écrire…",
  84. Input: (submitKey: string) => {
  85. var inputHints = `${submitKey} pour envoyer`;
  86. if (submitKey === String(SubmitKey.Enter)) {
  87. inputHints += ",Shift + Enter pour passer à la ligne";
  88. }
  89. return inputHints + ",/ pour compléter, : pour déclencher des commandes";
  90. },
  91. Send: "Envoyer",
  92. Config: {
  93. Reset: "Effacer la mémoire",
  94. SaveAs: "Enregistrer comme masque",
  95. },
  96. IsContext: "Prompt prédéfini",
  97. },
  98. Export: {
  99. Title: "Partager l'historique des discussions",
  100. Copy: "Tout copier",
  101. Download: "Télécharger le fichier",
  102. Share: "Partager sur ShareGPT",
  103. MessageFromYou: "Utilisateur",
  104. MessageFromChatGPT: "ChatGPT",
  105. Format: {
  106. Title: "Format d'exportation",
  107. SubTitle: "Vous pouvez exporter en texte Markdown ou en image PNG",
  108. },
  109. IncludeContext: {
  110. Title: "Inclure le contexte du masque",
  111. SubTitle: "Afficher le contexte du masque dans les messages",
  112. },
  113. Steps: {
  114. Select: "Sélectionner",
  115. Preview: "Aperçu",
  116. },
  117. Image: {
  118. Toast: "Génération de la capture d'écran",
  119. Modal:
  120. "Appuyez longuement ou faites un clic droit pour enregistrer l'image",
  121. },
  122. },
  123. Select: {
  124. Search: "Rechercher des messages",
  125. All: "Tout sélectionner",
  126. Latest: "Derniers messages",
  127. Clear: "Effacer la sélection",
  128. },
  129. Memory: {
  130. Title: "Résumé historique",
  131. EmptyContent: "Le contenu de la discussion est trop court pour être résumé",
  132. Send: "Compresser automatiquement l'historique des discussions et l'envoyer comme contexte",
  133. Copy: "Copier le résumé",
  134. Reset: "[unused]",
  135. ResetConfirm: "Confirmer la suppression du résumé historique ?",
  136. },
  137. Home: {
  138. NewChat: "Nouvelle discussion",
  139. DeleteChat: "Confirmer la suppression de la discussion sélectionnée ?",
  140. DeleteToast: "Discussion supprimée",
  141. Revert: "Annuler",
  142. },
  143. Settings: {
  144. Title: "Paramètres",
  145. SubTitle: "Toutes les options de configuration",
  146. Danger: {
  147. Reset: {
  148. Title: "Réinitialiser tous les paramètres",
  149. SubTitle:
  150. "Réinitialiser toutes les options de configuration aux valeurs par défaut",
  151. Action: "Réinitialiser maintenant",
  152. Confirm: "Confirmer la réinitialisation de tous les paramètres ?",
  153. },
  154. Clear: {
  155. Title: "Effacer toutes les données",
  156. SubTitle:
  157. "Effacer toutes les discussions et les données de configuration",
  158. Action: "Effacer maintenant",
  159. Confirm:
  160. "Confirmer l'effacement de toutes les discussions et données de configuration ?",
  161. },
  162. },
  163. Lang: {
  164. Name: "Language", // ATTENTION: if you wanna add a new translation, please do not translate this value, leave it as `Language`
  165. All: "Toutes les langues",
  166. },
  167. Avatar: "Avatar",
  168. FontSize: {
  169. Title: "Taille de la police",
  170. SubTitle: "Taille de la police pour le contenu des discussions",
  171. },
  172. FontFamily: {
  173. Title: "Police de Chat",
  174. SubTitle:
  175. "Police du contenu du chat, laissez vide pour appliquer la police par défaut globale",
  176. Placeholder: "Nom de la Police",
  177. },
  178. InjectSystemPrompts: {
  179. Title: "Injecter des invites système",
  180. SubTitle:
  181. "Ajouter de manière forcée une invite système simulée de ChatGPT au début de chaque liste de messages",
  182. },
  183. InputTemplate: {
  184. Title: "Prétraitement des entrées utilisateur",
  185. SubTitle:
  186. "Le dernier message de l'utilisateur sera intégré dans ce modèle",
  187. },
  188. Update: {
  189. Version: (x: string) => `Version actuelle : ${x}`,
  190. IsLatest: "Vous avez la dernière version",
  191. CheckUpdate: "Vérifier les mises à jour",
  192. IsChecking: "Vérification des mises à jour en cours...",
  193. FoundUpdate: (x: string) => `Nouvelle version trouvée : ${x}`,
  194. GoToUpdate: "Aller à la mise à jour",
  195. },
  196. SendKey: "Touche d'envoi",
  197. Theme: "Thème",
  198. TightBorder: "Mode sans bordure",
  199. SendPreviewBubble: {
  200. Title: "Bulle d'aperçu",
  201. SubTitle: "Aperçu du contenu Markdown dans la bulle d'aperçu",
  202. },
  203. AutoGenerateTitle: {
  204. Title: "Génération automatique de titres",
  205. SubTitle:
  206. "Générer un titre approprié en fonction du contenu de la discussion",
  207. },
  208. Sync: {
  209. CloudState: "Données cloud",
  210. NotSyncYet: "Pas encore synchronisé",
  211. Success: "Synchronisation réussie",
  212. Fail: "Échec de la synchronisation",
  213. Config: {
  214. Modal: {
  215. Title: "Configurer la synchronisation cloud",
  216. Check: "Vérifier la disponibilité",
  217. },
  218. SyncType: {
  219. Title: "Type de synchronisation",
  220. SubTitle: "Choisissez le serveur de synchronisation préféré",
  221. },
  222. Proxy: {
  223. Title: "Activer le proxy",
  224. SubTitle:
  225. "Lors de la synchronisation dans le navigateur, le proxy doit être activé pour éviter les restrictions de domaine croisé",
  226. },
  227. ProxyUrl: {
  228. Title: "Adresse du proxy",
  229. SubTitle:
  230. "Uniquement pour le proxy de domaine croisé fourni par le projet",
  231. },
  232. WebDav: {
  233. Endpoint: "Adresse WebDAV",
  234. UserName: "Nom d'utilisateur",
  235. Password: "Mot de passe",
  236. },
  237. UpStash: {
  238. Endpoint: "URL REST Redis UpStash",
  239. UserName: "Nom de sauvegarde",
  240. Password: "Token REST Redis UpStash",
  241. },
  242. },
  243. LocalState: "Données locales",
  244. Overview: (overview: any) => {
  245. return `${overview.chat} discussions, ${overview.message} messages, ${overview.prompt} invites, ${overview.mask} masques`;
  246. },
  247. ImportFailed: "Échec de l'importation",
  248. },
  249. Mask: {
  250. Splash: {
  251. Title: "Page de démarrage du masque",
  252. SubTitle:
  253. "Afficher la page de démarrage du masque lors de la création d'une nouvelle discussion",
  254. },
  255. Builtin: {
  256. Title: "Masquer les masques intégrés",
  257. SubTitle:
  258. "Masquer les masques intégrés dans toutes les listes de masques",
  259. },
  260. },
  261. Prompt: {
  262. Disable: {
  263. Title: "Désactiver la complétion automatique des invites",
  264. SubTitle:
  265. "Saisir / au début de la zone de texte pour déclencher la complétion automatique",
  266. },
  267. List: "Liste des invites personnalisées",
  268. ListCount: (builtin: number, custom: number) =>
  269. `${builtin} intégrées, ${custom} définies par l'utilisateur`,
  270. Edit: "Modifier",
  271. Modal: {
  272. Title: "Liste des invites",
  273. Add: "Créer",
  274. Search: "Rechercher des invites",
  275. },
  276. EditModal: {
  277. Title: "Modifier les invites",
  278. },
  279. },
  280. HistoryCount: {
  281. Title: "Nombre de messages historiques",
  282. SubTitle: "Nombre de messages historiques envoyés avec chaque demande",
  283. },
  284. CompressThreshold: {
  285. Title: "Seuil de compression des messages historiques",
  286. SubTitle:
  287. "Compresser les messages historiques lorsque leur longueur dépasse cette valeur",
  288. },
  289. Usage: {
  290. Title: "Vérification du solde",
  291. SubTitle(used: any, total: any) {
  292. return `Utilisé ce mois-ci : $${used}, Total d'abonnement : $${total}`;
  293. },
  294. IsChecking: "Vérification en cours…",
  295. Check: "Re-vérifier",
  296. NoAccess:
  297. "Entrez la clé API ou le mot de passe d'accès pour vérifier le solde",
  298. },
  299. Access: {
  300. SaasStart: {
  301. Title: "Utiliser NextChat AI",
  302. Label: "(La solution la plus rentable)",
  303. SubTitle:
  304. "Officiellement maintenu par NextChat, prêt à l'emploi sans configuration, prend en charge les derniers grands modèles comme OpenAI o1, GPT-4o et Claude-3.5",
  305. ChatNow: "Discuter maintenant",
  306. },
  307. AccessCode: {
  308. Title: "Mot de passe d'accès",
  309. SubTitle: "L'administrateur a activé l'accès sécurisé",
  310. Placeholder: "Veuillez entrer le mot de passe d'accès",
  311. },
  312. CustomEndpoint: {
  313. Title: "Interface personnalisée",
  314. SubTitle: "Utiliser un service Azure ou OpenAI personnalisé",
  315. },
  316. Provider: {
  317. Title: "Fournisseur de modèle",
  318. SubTitle: "Changer de fournisseur de service",
  319. },
  320. OpenAI: {
  321. ApiKey: {
  322. Title: "Clé API",
  323. SubTitle:
  324. "Utiliser une clé OpenAI personnalisée pour contourner les restrictions d'accès par mot de passe",
  325. Placeholder: "Clé API OpenAI",
  326. },
  327. Endpoint: {
  328. Title: "Adresse de l'interface",
  329. SubTitle: "Doit inclure http(s):// en dehors de l'adresse par défaut",
  330. },
  331. },
  332. Azure: {
  333. ApiKey: {
  334. Title: "Clé d'interface",
  335. SubTitle:
  336. "Utiliser une clé Azure personnalisée pour contourner les restrictions d'accès par mot de passe",
  337. Placeholder: "Clé API Azure",
  338. },
  339. Endpoint: {
  340. Title: "Adresse de l'interface",
  341. SubTitle: "Exemple :",
  342. },
  343. ApiVerion: {
  344. Title: "Version de l'interface (version API azure)",
  345. SubTitle: "Choisissez une version spécifique",
  346. },
  347. },
  348. Anthropic: {
  349. ApiKey: {
  350. Title: "Clé d'interface",
  351. SubTitle:
  352. "Utiliser une clé Anthropic personnalisée pour contourner les restrictions d'accès par mot de passe",
  353. Placeholder: "Clé API Anthropic",
  354. },
  355. Endpoint: {
  356. Title: "Adresse de l'interface",
  357. SubTitle: "Exemple :",
  358. },
  359. ApiVerion: {
  360. Title: "Version de l'interface (version API claude)",
  361. SubTitle: "Choisissez une version spécifique de l'API",
  362. },
  363. },
  364. Google: {
  365. ApiKey: {
  366. Title: "Clé API",
  367. SubTitle: "Obtenez votre clé API Google AI",
  368. Placeholder: "Entrez votre clé API Google AI Studio",
  369. },
  370. Endpoint: {
  371. Title: "Adresse de l'interface",
  372. SubTitle: "Exemple :",
  373. },
  374. ApiVersion: {
  375. Title: "Version de l'API (pour gemini-pro uniquement)",
  376. SubTitle: "Choisissez une version spécifique de l'API",
  377. },
  378. GoogleSafetySettings: {
  379. Title: "Niveau de filtrage de sécurité Google",
  380. SubTitle: "Définir le niveau de filtrage du contenu",
  381. },
  382. },
  383. Baidu: {
  384. ApiKey: {
  385. Title: "Clé API",
  386. SubTitle: "Utiliser une clé API Baidu personnalisée",
  387. Placeholder: "Clé API Baidu",
  388. },
  389. SecretKey: {
  390. Title: "Clé secrète",
  391. SubTitle: "Utiliser une clé secrète Baidu personnalisée",
  392. Placeholder: "Clé secrète Baidu",
  393. },
  394. Endpoint: {
  395. Title: "Adresse de l'interface",
  396. SubTitle:
  397. "Non pris en charge pour les configurations personnalisées dans .env",
  398. },
  399. },
  400. ByteDance: {
  401. ApiKey: {
  402. Title: "Clé d'interface",
  403. SubTitle: "Utiliser une clé API ByteDance personnalisée",
  404. Placeholder: "Clé API ByteDance",
  405. },
  406. Endpoint: {
  407. Title: "Adresse de l'interface",
  408. SubTitle: "Exemple :",
  409. },
  410. },
  411. Alibaba: {
  412. ApiKey: {
  413. Title: "Clé d'interface",
  414. SubTitle: "Utiliser une clé API Alibaba Cloud personnalisée",
  415. Placeholder: "Clé API Alibaba Cloud",
  416. },
  417. Endpoint: {
  418. Title: "Adresse de l'interface",
  419. SubTitle: "Exemple :",
  420. },
  421. },
  422. CustomModel: {
  423. Title: "Nom du modèle personnalisé",
  424. SubTitle:
  425. "Ajouter des options de modèles personnalisés, séparées par des virgules",
  426. },
  427. },
  428. Model: "Modèle",
  429. CompressModel: {
  430. Title: "Modèle de compression",
  431. SubTitle: "Modèle utilisé pour compresser l'historique",
  432. },
  433. Temperature: {
  434. Title: "Aléatoire (temperature)",
  435. SubTitle: "Plus la valeur est élevée, plus les réponses sont aléatoires",
  436. },
  437. TopP: {
  438. Title: "Échantillonnage par noyau (top_p)",
  439. SubTitle:
  440. "Semblable à l'aléatoire, mais ne pas modifier en même temps que l'aléatoire",
  441. },
  442. MaxTokens: {
  443. Title: "Limite de réponse unique (max_tokens)",
  444. SubTitle: "Nombre maximal de tokens utilisés pour une interaction unique",
  445. },
  446. PresencePenalty: {
  447. Title: "Nouveauté du sujet (presence_penalty)",
  448. SubTitle:
  449. "Plus la valeur est élevée, plus il est probable d'élargir aux nouveaux sujets",
  450. },
  451. FrequencyPenalty: {
  452. Title: "Pénalité de fréquence (frequency_penalty)",
  453. SubTitle:
  454. "Plus la valeur est élevée, plus il est probable de réduire les répétitions",
  455. },
  456. },
  457. Store: {
  458. DefaultTopic: "Nouvelle discussion",
  459. BotHello: "Comment puis-je vous aider ?",
  460. Error: "Une erreur est survenue, veuillez réessayer plus tard",
  461. Prompt: {
  462. History: (content: string) =>
  463. "Voici le résumé de la discussion précédente : " + content,
  464. Topic:
  465. "Utilisez quatre à cinq mots pour retourner le sujet succinct de cette phrase, sans explication, sans ponctuation, sans interjections, sans texte superflu, sans gras. Si aucun sujet, retournez simplement « discussion informelle »",
  466. Summarize:
  467. "Faites un résumé succinct de la discussion, à utiliser comme prompt de contexte ultérieur, en moins de 200 mots",
  468. },
  469. },
  470. Copy: {
  471. Success: "Copié dans le presse-papiers",
  472. Failed: "Échec de la copie, veuillez autoriser l'accès au presse-papiers",
  473. },
  474. Download: {
  475. Success: "Le contenu a été téléchargé dans votre répertoire.",
  476. Failed: "Échec du téléchargement.",
  477. },
  478. Context: {
  479. Toast: (x: any) => `Contient ${x} invites prédéfinies`,
  480. Edit: "Paramètres de la discussion actuelle",
  481. Add: "Ajouter une discussion",
  482. Clear: "Contexte effacé",
  483. Revert: "Restaurer le contexte",
  484. },
  485. Plugin: {
  486. Name: "Plugin",
  487. },
  488. FineTuned: {
  489. Sysmessage: "Vous êtes un assistant",
  490. },
  491. SearchChat: {
  492. Name: "Recherche",
  493. Page: {
  494. Title: "Rechercher dans l'historique des discussions",
  495. Search: "Entrez le mot-clé de recherche",
  496. NoResult: "Aucun résultat trouvé",
  497. NoData: "Aucune donnée",
  498. Loading: "Chargement",
  499. SubTitle: (count: number) => `${count} résultats trouvés`,
  500. },
  501. Item: {
  502. View: "Voir",
  503. },
  504. },
  505. Mask: {
  506. Name: "Masque",
  507. Page: {
  508. Title: "Masques de rôle prédéfinis",
  509. SubTitle: (count: number) => `${count} définitions de rôle prédéfinies`,
  510. Search: "Rechercher des masques de rôle",
  511. Create: "Créer",
  512. },
  513. Item: {
  514. Info: (count: number) => `Contient ${count} discussions prédéfinies`,
  515. Chat: "Discussion",
  516. View: "Voir",
  517. Edit: "Modifier",
  518. Delete: "Supprimer",
  519. DeleteConfirm: "Confirmer la suppression ?",
  520. },
  521. EditModal: {
  522. Title: (readonly: boolean) =>
  523. `Modifier le masque prédéfini ${readonly ? " (lecture seule)" : ""}`,
  524. Download: "Télécharger le masque",
  525. Clone: "Cloner le masque",
  526. },
  527. Config: {
  528. Avatar: "Avatar du rôle",
  529. Name: "Nom du rôle",
  530. Sync: {
  531. Title: "Utiliser les paramètres globaux",
  532. SubTitle:
  533. "Cette discussion utilise-t-elle les paramètres du modèle globaux ?",
  534. Confirm:
  535. "Les paramètres personnalisés de cette discussion seront automatiquement remplacés. Confirmer l'activation des paramètres globaux ?",
  536. },
  537. HideContext: {
  538. Title: "Masquer les discussions prédéfinies",
  539. SubTitle:
  540. "Les discussions prédéfinies ne seront pas affichées dans l'interface de discussion après masquage",
  541. },
  542. Share: {
  543. Title: "Partager ce masque",
  544. SubTitle: "Générer un lien direct pour ce masque",
  545. Action: "Copier le lien",
  546. },
  547. },
  548. },
  549. NewChat: {
  550. Return: "Retour",
  551. Skip: "Commencer directement",
  552. NotShow: "Ne plus afficher",
  553. ConfirmNoShow:
  554. "Confirmer la désactivation ? Vous pourrez réactiver cette option à tout moment dans les paramètres.",
  555. Title: "Choisir un masque",
  556. SubTitle: "Commencez maintenant, rencontrez les pensées derrière le masque",
  557. More: "Voir tout",
  558. },
  559. URLCommand: {
  560. Code: "Code d'accès détecté dans le lien, souhaitez-vous le remplir automatiquement ?",
  561. Settings:
  562. "Paramètres prédéfinis détectés dans le lien, souhaitez-vous les remplir automatiquement ?",
  563. },
  564. UI: {
  565. Confirm: "Confirmer",
  566. Cancel: "Annuler",
  567. Close: "Fermer",
  568. Create: "Créer",
  569. Edit: "Modifier",
  570. Export: "Exporter",
  571. Import: "Importer",
  572. Sync: "Synchroniser",
  573. Config: "Configurer",
  574. },
  575. Exporter: {
  576. Description: {
  577. Title:
  578. "Seuls les messages après avoir effacé le contexte seront affichés",
  579. },
  580. Model: "Modèle",
  581. Messages: "Messages",
  582. Topic: "Sujet",
  583. Time: "Temps",
  584. },
  585. };
  586. export default fr;