Files
2026-02-05 13:16:05 +08:00

304 lines
14 KiB
TypeScript

import demoFr from "./demo-fr"
import { Translations } from "./en"
const fr: Translations = {
common: {
ok: "OK !",
cancel: "Annuler",
save: "Enregistrer",
back: "Retour",
logOut: "Déconnexion",
copied: "Copié",
},
welcomeScreen: {
postscript:
"psst — Ce n'est probablement pas à quoi ressemble votre application. (À moins que votre designer ne vous ait donné ces écrans, dans ce cas, mettez la en prod !)",
readyForLaunch: "Votre application, presque prête pour le lancement !",
exciting: "(ohh, c'est excitant !)",
letsGo: "Allons-y !",
},
errorScreen: {
title: "Quelque chose s'est mal passé !",
friendlySubtitle:
"C'est l'écran que vos utilisateurs verront en production lorsqu'une erreur sera lancée. Vous voudrez personnaliser ce message (situé dans `app/i18n/fr.ts`) et probablement aussi la mise en page (`app/screens/ErrorScreen`). Si vous voulez le supprimer complètement, vérifiez `app/app.tsx` pour le composant <ErrorBoundary>.",
reset: "RÉINITIALISER L'APPLICATION",
traceTitle: "Erreur depuis %{name}",
},
emptyStateComponent: {
generic: {
heading: "Si vide... si triste",
content:
"Aucune donnée trouvée pour le moment. Essayez de cliquer sur le bouton pour rafraîchir ou recharger l'application.",
button: "Essayons à nouveau",
},
},
errors: {
invalidEmail: "Adresse e-mail invalide.",
},
authErrors: {
timeout: "Délai d'attente dépassé. Veuillez réessayer.",
cannotConnect: "Impossible de se connecter au serveur. Veuillez vérifier votre réseau.",
serverError: "Erreur serveur. Veuillez réessayer plus tard.",
badData: "Réponse invalide du serveur.",
unknownError: "Une erreur inconnue s'est produite.",
E001: "Ce nom d'utilisateur existe déjà.",
E002: "Cet e-mail est déjà enregistré.",
E003: "Code de parrainage invalide.",
E004: "Aucune demande d'inscription en attente.",
E005: "Code de vérification invalide.",
E006: "Code de parrainage déjà lié.",
E007: "Vous ne pouvez pas utiliser votre propre code de parrainage.",
E011: "E-mail ou mot de passe invalide.",
E012: "Compte temporairement verrouillé. Veuillez réessayer plus tard.",
E013: "Aucune demande de connexion en attente.",
E014: "L'utilisateur n'existe pas ou a été désactivé.",
E015: "Code de vérification invalide.",
E016: "Authentification Telegram invalide.",
E017: "Format de données Telegram invalide.",
E018: "Échec de l'authentification Google.",
E019: "Veuillez fournir le token Google.",
E021: "Le mot de passe actuel est incorrect.",
E022: "Le nouveau mot de passe ne peut pas être identique à l'actuel.",
E023: "L'e-mail n'est pas enregistré.",
E024: "Le compte a été désactivé.",
E025: "Aucune demande de réinitialisation de mot de passe en attente.",
E026: "Le code de réinitialisation du mot de passe a expiré.",
E027: "Code de réinitialisation du mot de passe invalide.",
E028: "L'utilisateur n'existe pas.",
E029: "Aucun champ fourni pour la mise à jour.",
E041: "Envoi du code de vérification trop fréquent. Veuillez patienter.",
E042: "Le code de vérification de l'e-mail a expiré.",
E043: "Code de vérification de l'e-mail invalide.",
E044: "L'e-mail est déjà vérifié.",
E045: "L'e-mail est déjà utilisé par un autre utilisateur.",
E046: "Aucune adresse e-mail vérifiée.",
E047: "Veuillez d'abord envoyer le code de vérification à l'e-mail actuel.",
E048: "Veuillez d'abord vérifier l'e-mail actuel.",
E049: "Veuillez d'abord envoyer le code de vérification au nouvel e-mail.",
E050: "Paramètre d'action invalide.",
},
loginScreen: {
logIn: "Se connecter",
enterDetails:
"Entrez vos informations ci-dessous pour débloquer des informations top secrètes. Vous ne devinerez jamais ce que nous avons en attente. Ou peut-être que vous le ferez ; ce n'est pas de la science spatiale ici.",
emailFieldLabel: "E-mail",
passwordFieldLabel: "Mot de passe",
emailFieldPlaceholder: "Entrez votre adresse e-mail",
passwordFieldPlaceholder: "Mot de passe super secret ici",
tapToLogIn: "Appuyez pour vous connecter!",
hint: "Astuce : vous pouvez utiliser n'importe quelle adresse e-mail et votre mot de passe préféré :)",
},
navigator: {
componentsTab: "Composants",
debugTab: "Débogage",
communityTab: "Communauté",
podcastListTab: "Podcasts",
profileTab: "Profil",
},
profileScreen: {
title: "Profil",
guest: "Invité",
uid: "UID",
username: "Nom d'utilisateur",
referralCode: "Code de parrainage",
settings: "Paramètres",
darkMode: "Mode sombre",
notifications: "Notifications",
security: "Sécurité",
account: "Compte",
accountStatus: "Statut du compte",
active: "Actif",
inactive: "Inactif",
regular: "Standard",
emailVerified: "Email vérifié",
verified: "Vérifié",
unverified: "Non vérifié",
loginMethods: "Méthodes de connexion",
version: "Version",
changePassword: "Changer le mot de passe",
changeEmail: "Changer l'email",
editNickname: "Modifier le pseudo",
editProfile: "Modifier le profil",
nicknamePlaceholder: "Entrez votre pseudo",
nickname: "Pseudo",
tapToChangeAvatar: "Appuyez pour changer l'avatar",
about: "À propos",
},
changePasswordScreen: {
title: "Changer le mot de passe",
description: "Entrez votre mot de passe actuel et choisissez un nouveau.",
oldPassword: "Mot de passe actuel",
newPassword: "Nouveau mot de passe",
confirmPassword: "Confirmer le nouveau mot de passe",
logoutOtherDevices: "Déconnecter les autres appareils",
submit: "Changer le mot de passe",
success: "Succès",
successMessage: "Votre mot de passe a été changé avec succès.",
oldPasswordRequired: "Le mot de passe actuel est requis.",
newPasswordRequired: "Le nouveau mot de passe est requis.",
passwordTooShort: "Le mot de passe doit contenir au moins 6 caractères.",
passwordMismatch: "Les mots de passe ne correspondent pas.",
samePassword: "Le nouveau mot de passe ne peut pas être identique à l'actuel.",
},
changeEmailScreen: {
title: "Changer l'email",
step1Label: "Vérifier",
step2Label: "Lier",
step1Title: "Étape 1 : Vérifier l'email actuel",
step1Description: "Nous enverrons un code de vérification à votre email actuel.",
step2Title: "Étape 2 : Lier le nouvel email",
step2Description: "Entrez votre nouvelle adresse email et vérifiez-la.",
currentEmail: "Email actuel",
newEmail: "Nouvelle adresse email",
verificationCode: "Code de vérification",
sendCode: "Envoyer le code de vérification",
sendCodeToNewEmail: "Envoyer le code au nouvel email",
verify: "Vérifier",
confirmNewEmail: "Confirmer le nouvel email",
resendCode: "Renvoyer le code",
success: "Succès",
successMessage: "Votre email a été changé avec succès.",
codeRequired: "Le code de vérification est requis.",
codeInvalid: "Le code de vérification doit contenir 6 chiffres.",
newEmailRequired: "La nouvelle adresse email est requise.",
emailInvalid: "Veuillez entrer une adresse email valide.",
sameEmail: "Le nouvel email ne peut pas être identique à l'actuel.",
},
settingsScreen: {
title: "Paramètres",
appearance: "Apparence",
theme: "Thème",
darkMode: "Mode Sombre",
language: "Langue",
currentLanguage: "Langue",
},
languageScreen: {
title: "Langue",
selectHint: "Sélectionnez votre langue préférée",
},
themeScreen: {
title: "Thème",
selectHint: "Sélectionnez votre thème préféré",
system: "Système",
light: "Clair",
dark: "Sombre",
},
securityScreen: {
title: "Sécurité",
description: "Gérez les paramètres de sécurité de votre compte.",
changePassword: "Changer le Mot de Passe",
changeEmail: "Changer l'Email",
// Session management
activeSessions: "Active Sessions",
activeSessionsDescription: "Devices currently logged into your account",
currentDevice: "Current Device",
lastActive: "Last active",
loginMethod: "Login via",
logoutDevice: "Logout",
logoutAllOther: "Logout All Other Devices",
logoutAllOtherDescription: "This will log out all devices except the current one.",
noOtherSessions: "No other active sessions",
sessionRevoked: "Device has been logged out",
sessionsRevoked: "{{count}} devices have been logged out",
confirmLogout: "Confirm Logout",
confirmLogoutMessage: "Are you sure you want to log out this device?",
confirmLogoutAllMessage: "Are you sure you want to log out all other devices?",
deviceTypes: {
desktop: "Desktop",
mobile: "Mobile",
tablet: "Tablet",
unknown: "Unknown Device",
},
},
aboutScreen: {
title: "À propos",
appInfo: "Informations de l'Application",
appName: "Nom de l'Application",
version: "Version",
buildVersion: "Version de Compilation",
appId: "ID de l'Application",
appVersion: "Version de l'Application",
legal: "Mentions Légales",
privacyPolicy: "Politique de Confidentialité",
termsOfService: "Conditions d'Utilisation",
},
communityScreen: {
title: "Connectez-vous avec la communauté",
tagLine:
"Rejoignez la communauté d'ingénieurs React Native d'Infinite Red et améliorez votre développement d'applications avec nous !",
joinUsOnSlackTitle: "Rejoignez-nous sur Slack",
joinUsOnSlack:
"Vous souhaitez vous connecter avec des ingénieurs React Native du monde entier ? Rejoignez la conversation dans la communauté Slack d'Infinite Red ! Notre communauté en pleine croissance est un espace sûr pour poser des questions, apprendre des autres et développer votre réseau.",
joinSlackLink: "Rejoindre la communauté Slack",
makeIgniteEvenBetterTitle: "Rendre Ignite encore meilleur",
makeIgniteEvenBetter:
"Vous avez une idée pour rendre Ignite encore meilleur ? Nous sommes heureux de l'entendre ! Nous cherchons toujours des personnes qui veulent nous aider à construire les meilleurs outils React Native. Rejoignez-nous sur GitHub pour nous aider à construire l'avenir d'Ignite.",
contributeToIgniteLink: "Contribuer à Ignite",
theLatestInReactNativeTitle: "Les dernières nouvelles de React Native",
theLatestInReactNative:
"Nous sommes là pour vous tenir au courant de tout ce que React Native a à offrir.",
reactNativeRadioLink: "React Native Radio",
reactNativeNewsletterLink: "React Native Newsletter",
reactNativeLiveLink: "React Native Live",
chainReactConferenceLink: "Conférence Chain React",
hireUsTitle: "Engagez Infinite Red pour votre prochain projet",
hireUs:
"Que ce soit pour gérer un projet complet ou pour former des équipes à notre formation pratique, Infinite Red peut vous aider pour presque tous les projets React Native.",
hireUsLink: "Envoyez-nous un message",
},
showroomScreen: {
jumpStart: "Composants pour démarrer votre projet !",
lorem2Sentences:
"Nulla cupidatat deserunt amet quis aliquip nostrud do adipisicing. Adipisicing excepteur elit laborum Lorem adipisicing do duis.",
demoHeaderTxExample: "Yay",
demoViaTxProp: "Via la propriété `tx`",
demoViaSpecifiedTxProp: "Via la propriété `{{prop}}Tx` spécifiée",
},
demoDebugScreen: {
howTo: "COMMENT FAIRE",
title: "Débugage",
tagLine:
"Félicitations, vous avez un modèle d'application React Native très avancé ici. Profitez de cette base de code !",
reactotron: "Envoyer à Reactotron",
reportBugs: "Signaler des bugs",
demoList: "Liste de démonstration",
demoPodcastList: "Liste de podcasts de démonstration",
androidReactotronHint:
"Si cela ne fonctionne pas, assurez-vous que l'application de bureau Reactotron est en cours d'exécution, exécutez adb reverse tcp:9090 tcp:9090 à partir de votre terminal, puis rechargez l'application.",
iosReactotronHint:
"Si cela ne fonctionne pas, assurez-vous que l'application de bureau Reactotron est en cours d'exécution, puis rechargez l'application.",
macosReactotronHint:
"Si cela ne fonctionne pas, assurez-vous que l'application de bureau Reactotron est en cours d'exécution, puis rechargez l'application.",
webReactotronHint:
"Si cela ne fonctionne pas, assurez-vous que l'application de bureau Reactotron est en cours d'exécution, puis rechargez l'application.",
windowsReactotronHint:
"Si cela ne fonctionne pas, assurez-vous que l'application de bureau Reactotron est en cours d'exécution, puis rechargez l'application.",
},
demoPodcastListScreen: {
title: "Épisodes de Radio React Native",
onlyFavorites: "Afficher uniquement les favoris",
favoriteButton: "Favori",
unfavoriteButton: "Non favori",
accessibility: {
cardHint:
"Double-cliquez pour écouter l'épisode. Double-cliquez et maintenez pour {{action}} cet épisode.",
switch: "Activez pour afficher uniquement les favoris",
favoriteAction: "Basculer en favori",
favoriteIcon: "Épisode non favori",
unfavoriteIcon: "Épisode favori",
publishLabel: "Publié le {{date}}",
durationLabel: "Durée : {{hours}} heures {{minutes}} minutes {{seconds}} secondes",
},
noFavoritesEmptyState: {
heading: "C'est un peu vide ici",
content:
"Aucun favori n'a été ajouté pour le moment. Appuyez sur le cœur d'un épisode pour l'ajouter à vos favoris !",
},
},
...demoFr,
}
export default fr