fr.ts 20 KB

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