304 lines
14 KiB
TypeScript
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
|