From df1ee637ff50978ee662e62b262042db34f1e8fb Mon Sep 17 00:00:00 2001 From: neoapps-dev Date: Tue, 1 Sep 2026 02:43:55 +0300 Subject: [PATCH] feat: add french translation (thanks dydymiku!!) --- src/components/views/SettingsView.tsx | 3 +- src/i18n/config.ts | 4 +- src/i18n/locales/fr.json | 773 ++++++++++++++++++++++++++ 3 files changed, 778 insertions(+), 2 deletions(-) create mode 100644 src/i18n/locales/fr.json diff --git a/src/components/views/SettingsView.tsx b/src/components/views/SettingsView.tsx index 0c09a7f..e039505 100644 --- a/src/components/views/SettingsView.tsx +++ b/src/components/views/SettingsView.tsx @@ -589,12 +589,13 @@ const SettingsView = memo(function SettingsView() { const availableLanguages = [ //neo: here goes the list, dont ask why its here { code: "en", label: "English" }, + { code: "fr", label: "Français (French)" }, // by Dydymiku (thanks!!) ]; for (const lang of availableLanguages) { const isCurrent = i18n.resolvedLanguage?.startsWith(lang.code); items.push({ id: `lang_${lang.code}`, - label: `${lang.label}${isCurrent ? ` (${t("common.enabled")})` : ""}`, + label: `${lang.label}:${isCurrent ? ` ${t("common.on")}` : ` ${t("common.off")}`}`, type: "button", onClick: () => { playPressSound(); diff --git a/src/i18n/config.ts b/src/i18n/config.ts index 3d665f3..a160580 100644 --- a/src/i18n/config.ts +++ b/src/i18n/config.ts @@ -2,19 +2,21 @@ import i18n from "i18next"; import { initReactI18next } from "react-i18next"; import LanguageDetector from "i18next-browser-languagedetector"; import en from "./locales/en.json"; +import fr from "./locales/fr.json"; i18n .use(LanguageDetector) .use(initReactI18next) .init({ resources: { en: { translation: en }, + fr: { translation: fr }, }, fallbackLng: "en", interpolation: { escapeValue: false, }, detection: { - order: ["navigator", "localStorage"], + order: ["localStorage", "navigator"], //neo: localStorage goes first as i18next's changeLanguage stores in there which is what we use for SettingsView, then fall back to browser detection. caches: ["localStorage"], }, }); diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json new file mode 100644 index 0000000..06e8f80 --- /dev/null +++ b/src/i18n/locales/fr.json @@ -0,0 +1,773 @@ +{ + "common": { + "back": "Retour", + "done": "Complet", + "cancel": "Annuler", + "save": "Sauvegarder", + "delete": "Supprimer", + "ok": "OK", + "next": "Suivant", + "finish": "Fini", + "error": "Erreur!", + "on": "ON", + "off": "OFF", + "enabled": "Activé", + "disabled": "Désactivé", + "none": "Aucune", + "unknown": "Inconnu", + "all": "Tous", + "noResults": "Aucun résultat", + "set": "placer" + }, + "header": { + "title": "Lanceur Emerald Legacy" + }, + "download": { + "title": "Téléchargements", + "gameFiles": "Fichiers du jeu", + "updateAvailable": "Mise à jour disponible!", + "gameUpdateAvailable": "Mise à jour du jeu disponible!", + "steamIntegration": "Intégration Steam", + "friendRequest": "Requête d'ami", + "gameInvite": "Invitation de jeu" + }, + "app": { + "day": "Jour", + "night": "Nuit", + "toggleTime": "Changer l'heure", + "swfEditor": "Editeur SWF", + "controllerConnected": "MANETTE CONNEXTE", + "welcome": "Bienvenue {{name}}!", + "version": "Version: {{version}}" + }, + "home": { + "installVersion": "Installer une version", + "stopGame": "Arreter le jeu", + "installing": "Installation en cours...", + "playGame": "Lancer le jeu", + "downloadVersion": "Télecharger {{name}}", + "helpAndOptions": "Aide et options", + "versions": "Versions", + "workshop": "Workshop", + "developerTools": "Outils de developper" + }, + "settings": { + "audio": "Audio", + "video": "Vidéo", + "launcher": "Lanceur", + "game": "Jeu", + "controls": "Contrôles", + "plugins": "Plugins", + "android": "Android", + "credits": "Crédits", + "music": "Musique: {{value}}%", + "sound": "Bruits: {{value}}%", + "clickEffects": "Effets de click", + "animations": "Animations", + "appleSiliconPerfBoost": "Boost de performances Apple silicon", + "extraLaunchArgs": "Lancement sup. d'arguments", + "extraLaunchArgsDesc": "Arguments d'espace séparées passé à l'éxecutable du jeu", + "launchPrefix": "Lancement de préfixes", + "launchPrefixDesc": "Commande qui entoure le lancement entier (exemple: gamemoderun)", + "launchEnvVars": "Lancement Env Vars", + "launchEnvVarsDesc": "Une KEY=VALUE par ligne", + "startInFullscreen": "Lancer en plein écran", + "discordRpc": "Présence Discord", + "skipIntro": "Sauter l'intro", + "legacyMode": "Mode Legacy", + "runner": "Runner", + "mangohud": "MangoHud", + "downloadRunner": "Télecharger GE-Proton (Recommander)", + "downloadingRunner": "Télécharge Runner... {{progress}}%", + "exportSettings": "Exporter les paramètres", + "importSettings": "Importer les paramètres", + "resetSetup": "Réinitialliser", + "languages": "Langues", + "stopGameButton": "Arreter le jeu", + "noPluginsInstalled": "Aucun plugins installé", + "byAuthor": "par {{author}}", + "containerSettings": "paramètres de conteneur", + "openContainer": "Ouvrir le conteneur", + "androidAudio": "Audio: {{backend}}", + "reset": { + "title": "Réinitialliser", + "confirm": "Êtes vous sure de réinitialliser les paramètres du lanceur?", + "confirmTitle": "CONFIRMER", + "warning": "⚠️ Celà va:", + "clearAllSettings": "Supprimer les paramètres du lanceur", + "resetUsername": "Réinitialliser votre pseudo", + "showSetupAgain": "Montrer l'écran de démarage", + "requireReconfiguration": "Besoin de reconfigurer", + "cannotBeUndone": "Cette action ne peux pas être annulé!" + } + }, + "setup": { + "letsConfigure": "Configurons votre lanceur", + "compatibilityRuntime": "Compatibilité d'éxecutable", + "choosePreferredOptions": "Choisisez vos paramètres et comportements", + "username": "Pseudo", + "enterUsername": "Entrer votre pseudo", + "usernameRequired": "Un pseudo est requis", + "runtimeDetected": "Exécutable Détectée", + "runtimeNotDetected": "Executable non détectée", + "gptInstalled": "Game Porting Toolkit 3 et Wine installés", + "mustInstallRuntime": "Vous devez installer l'éxecutable avant de procéder.", + "installRuntime": "Installer l'éxecutable", + "reinstallRuntime": "Reinstaller l'éxecutable", + "noCompatibleRunners": "Aucune compatibilité de coureur trouvé. Installez Wine ou Proton.", + "changeLaterInSettings": "Vous pouvez le changer dans les paramètres", + "windowsNativeSupport": "Suport Native Windows", + "windowsNativeDesc": "Emerald Legacy marche nativement sur Windows sans aucune addition requise.", + "diamondRuntimeSupport": "Support DiamondRuntime", + "diamondRuntimeDesc": "Emerald Launcher marche nativement sur Android sans aucune addition requise. Fonctionne grâce à notre éxecutable DiamondRuntime.", + "setupComplete": "Emerald Launcher est maintenant configuré et prêt!", + "discordRpc": "Présence Discord", + "animations": "Animations", + "changeTheseLater": "Vous pouvez le changer dans les paramètres", + "ready": "Prêt", + "installing": "Installation...", + "runtime": "Runtime", + "runner": "Runner", + "macosPreparing": "Preparation de la configuration d'éxecutable macOS...", + "macosCompleted": "Configuration réusie!", + "macosFailed": "Configuration échoué: {{error}}" + }, + "versions": { + "title": "Versions", + "custom": "Modifié", + "updateAvailable": "Mise à jour disponible!", + "downloadToCustomPath": "Téléchargement pour le chemin designé", + "downloadDlc": "Télecharger DLC", + "options": "Options", + "channel": "Chaîne", + "latest": "Dernière", + "openFolder": "Ouvrir le fichier", + "addToSteam": "Ajouté à Steam", + "importWorld": "Importer le monde", + "backup": "Backup", + "restore": "Restaurer", + "customize": "Customizer", + "setUid": "Placer l'UID", + "editCustom": "Modifier la modification", + "removeCustom": "Enlever la modification", + "uninstall": "Désinstaller", + "viewPlaytime": "Guetter l'éxecutable", + "invalidDirectory": "Directive invalide", + "selectEmptyDirectory": "Selectioner une directive vide pour l'installation.", + "deleteTitle": "Supprimer {{name}}?", + "deleteWarning": "Attention: Toutes vos sauvegardes et mondes pour cette version vont être supprimés pour toujours!" + }, + "lceOnline": { + "hostGame": "Héberger le jeu", + "stopHosting": "Arreter d'héberger", + "addFriend": "Ajouter un ami", + "signOut": "Se déconnecter", + "awaitingAuthentication": "En attente de l'autentification...", + "friends": "Amis", + "invites": "Invitations", + "requests": "Requêtes", + "pendingRequests": "Requêtes en suspens", + "noneAvailable": "Aucune disponibilité", + "invite": "Inviter", + "remove": "Supprimer", + "cancel": "Annuler", + "accept": "Accepter", + "decline": "Decliner", + "username": "Pseudo", + "send": "Envoyer", + "error": "Erreur", + "ok": "OK", + "failedToStartHosting": "Hébergement échoué", + "anErrorOccurred": "Une erreur s'est produite" + }, + "devtools": { + "comingSoon": "Bientôt", + "tools": { + "guides": "Guides communautaires", + "pck": "Editeur PCK", + "arc": "Editeur ARC", + "loc": "Editeur LOC", + "grf": "Editeur GRF", + "col": "Editeur COL", + "options": "Editeur d'options", + "model": "Editeur de modèles" + } + }, + "guides": { + "communityGuides": "Guides communautaires", + "loadingGuide": "Chargement du guide...", + "backToGuides": "← Retour aux guides", + "loadingGuides": "Chargement de guides...", + "failedToLoadGuides": "Chargement de guides échouées", + "noGuidesFound": "Aucun guides trouvée" + }, + "skins": { + "skinLibrary": "Librairie de skins", + "capeLibrary": "Librairie de capes", + "importSkin": "Importer un skin", + "importCape": "Importer une cape", + "deleteSkin": "Supprimer le skin", + "deleteCape": "Supprimer la cape", + "editSkin": "Modifier le skin", + "switchToCape": "Changer à la cape", + "switchToSkin": "Changer au skin", + "failedToFetch": "Impossible de la recherche", + "active": "Active", + "slim": "Slim", + "noCape": "Sans Cape", + "fromFile": "Du fichier", + "fromUsername": "du psuedo", + "minecraftUsername": "Pseudo Minecraft", + "fetching": "Recherhe...", + "fetch": "Chercher {{type}}", + "chooseModelType": "Choisiser le type du joueur pour ce skin", + "normalWideArms": "Normal (Bras larges)", + "slimThinArms": "Slim (Bras minces)" + }, + "skinEditor": { + "title": "Editeur de skin", + "pencil": "Crayon", + "eraser": "Effaceur", + "pick": "Pipette", + "fill": "Remplir", + "color": "Couleur", + "alpha": "Oppacité", + "alex": "Alex", + "steve": "Steve", + "grid": "Grillage", + "undo": "Revenir", + "save": "Sauver", + "export": "Exporter", + "back": "Retour", + "customSkin": "Skin customisé", + "exportSkin": "Exporter le Skin" + }, + "goldMapper": { + "controller": "Manette", + "mouse": "Souris", + "keyboard": "Clavier", + "leftClick": "Click gauche", + "middleClick": "Click de molette", + "rightClick": "Click droit", + "resetToDefaults": "Remttre à défaut", + "enableGoldMapper": "Activer GoldMapper", + "back": "Retour", + "assign": "Assigner {{name}}", + "typeKeyName": "Appuiez sur une touche et tapez Entrée", + "unknownKeyName": "Nom de touche inconnu", + "cancel": "Annuler" + }, + "locEditor": { + "title": "Editeur LOC", + "editingLoadedLoc": "édition du loc chargé", + "openLoc": "Ouvrir LOC", + "saveLoc": "Sauver LOC", + "openToBegin": "Ouvrir un fichier LOC pour commencer à éditer", + "loaded": "{{name}} chargé", + "failedToParse": "Analyse du LOC échoué", + "savedSuccessfully": "LOC sauvé avec succès", + "stringAdded": "Ficelle ajouté", + "stringUpdated": "Ficelle mis à jour", + "stringDeleted": "Ficelle supprimé", + "static": "Statique", + "keyed": "Touché", + "searchStrings": "Chercher les ficelles...", + "addString": "Ajouter une ficelle", + "keyOrIndex": "Touche / Indèxe", + "value": "Valeur", + "actions": "Actions", + "edit": "Editer", + "back": "Retour", + "stringTitle": "Ficelle", + "add": "Ajouter", + "stringKey": "Touche ficelle", + "staticEntry": "Entrée statique - Indèxe: {{index}}", + "stringValue": "Valeur ficelle", + "cancel": "Annuler", + "save": "Sauver" + }, + "grfEditor": { + "title": "Editeur GRF", + "editing": "edition:", + "newGrf": "Nouveau GRF", + "openGrf": "Ouvrir GRF", + "saveGrf": "Sauver GRF", + "openToBegin": "Ouvrir un fichier GRF pour commencer à éditer", + "gameRules": "Règles de jeu", + "files": "Fichiers ({{count}})", + "noRulesFound": "Aucune règle trouvé", + "addFile": "Ajouter fichier", + "filename": "Nom de fichier", + "size": "Taille", + "actions": "Actions", + "noFilesInGrf": "Aucun fichier dans le GRF", + "delete": "Supprimer", + "back": "Retour", + "loaded": "{{name}} chargé", + "failedToParse": "Analyse du GRF échoué", + "newGrfCreated": "Nouveau GRF crée", + "added": "{{name}} ajouté", + "removed": "{{name}} supprimé", + "savedSuccessfully": "GRF sauvé avec succès", + "failedToSave": "Sauvegarde GRF échoué", + "props": "[{{count}} objets]" + }, + "optionsEditor": { + "title": "Editeur d'options", + "openSettings": "Ovrir settings.dat", + "saveSettings": "Sauver settings.dat", + "openToBegin": "Ouvrez settings.dat pour commencer", + "tabSettings": "Paramètres", + "tabSkins": "Skins", + "tabActions": "Actions", + "chosenSkinId": "ID de Skin choisi", + "playerCapeId": "Cape de joueur", + "favoriteSkins": "Skin favoris", + "back": "Retour", + "loaded": "Chargé options.dat", + "failedToParse": "Erreur d'analyse d'options", + "saved": "Options sauvés", + "failedToSave": "Sauvegarde échoué" + }, + "swfEditor": { + "title": "Editeur SWF", + "openSwf": "Ouvrir SWF", + "saveSwf": "Sauver SWF", + "openToBegin": "Ouvrez un fichier SWF pour commencer à éditer", + "searchAssets": "Recherche d'actifs...", + "selectImageViewDetails": "Selectionner une image pour voir les détails", + "characterId": "ID de personnage:", + "type": "Type:", + "size": "Taille:", + "loadingPreview": "Aperçu en chargement...", + "exportBitmap": "Exporter le bitmap", + "replaceBitmap": "Remplaver le bitmap", + "back": "Retour", + "loaded": "Charger {{name}}", + "failedToProcess": "Procédé du SWF echoué", + "exported": "Exporté: {{name}}", + "imageReplaced": "Image remplacé", + "savedSuccessfully": "SWF sauvé avec succès" + }, + "colEditor": { + "title": "Editeur COL", + "version": "Version:", + "openCol": "Ouvrir COL", + "saveCol": "Sauver COL", + "openToBegin": "Ouvrez un fichier COL pour commencer à éditer", + "colors": "Couleur ({{count}})", + "worldColors": "Couleur du monde ({{count}})", + "searchColors": "Recherche de couleurs...", + "addColor": "Ajouter des couleurs", + "addWorldColor": "Ajouter une couleur du monde", + "name": "Nom", + "color": "Couleur (ARGB)", + "water": "Eau (ARGB)", + "underwater": "Sous l'eau (ARGB)", + "fog": "Brouilard (ARGB)", + "remove": "Retirer", + "back": "Retour", + "loaded": "Chargé {{name}}", + "failedToParse": "Analyse de COL échoué", + "savedSuccessfully": "COL sauvé avec succès", + "failedToSave": "Erreur de sauvegarde COL", + "colorAdded": "Couleur ajouté", + "worldColorAdded": "Coleur de monde ajouté" + }, + "workshop": { + "tabs": { + "skin": "Skin", + "texture": "Texture", + "world": "Monde", + "mod": "Mod", + "dlc": "DLC", + "plugins": "Plugins", + "versions": "Versions", + "installed": "Installées", + "search": "Recherche", + "server": "Serveur", + "serverPlugins": "Plugins de Serveur" + }, + "filterInstalled": "FILTRER INSTALLEES...", + "filterVersions": "FILTRER VERSIONS...", + "filterPlugins": "FILTRER PLUGINS...", + "filterServers": "FILTRER SERVEURS...", + "enterKeywords": "ENTRER MOTS CLES...", + "startTypingToSearch": "Commencer à écire pour chercher...", + "searchingArchives": "Recherche d'archives...", + "nothingInstalled": "Rien d'installé", + "noPluginsAvailable": "Aucun plugin disponible", + "noServersAvailable": "Aucun serveur disponible", + "emptyCategory": "Categorie vide", + "noImage": "Aucune image", + "updateAll": "Tout mettre à jour ({{count}})", + "reinstallAll": "Tout reinstaller ({{count}})", + "update": "Mis à jour", + "installed": "Installé", + "added": "Ajouté", + "install": "INSTALLER", + "reinstall": "REINSTALLER", + "add": "AJOUTER", + "download": "TELECHARGER", + "remove": "RETIRER", + "byAuthor": "Par {{author}}", + "updateAvailable": "Mis à jour disponible", + "saved": "Sauvé", + "back": "Retour", + "failedToLoadRegistry": "Erreur du chargement du registre", + "saveServerPlugin": "Sauver le plugin de serveur", + "details": "Détails", + "metadata": "Métadata", + "address": "Addresse:", + "type": "Type:", + "version": "Version:", + "owner": "Propriétaire:", + "discordServer": "Serveur Discord:", + "downloads": "Téléchargement:", + "likes": "Likes:", + "serverType": "Type de serveur:", + "file": "Fichier:", + "fileSize": "Taile du fichier:", + "github": "GitHub:", + "packageId": "ID du paquet:", + "outdated": " (obsolète)", + "categories": "Categories", + "requiredDependencies": "Dépendances requises", + "installedSuffix": " (installed)", + "requiredEditions": "Editions requises", + "files": "Fichiers", + "splitArchive": "Diviser l'archive en · {{count}} parties", + "dependenciesRequired": "Dépendances requises", + "dependenciesRequiredDesc": "Ce paquet à besoin d'installer en premier temps", + "dependenciesAutoInstall": "Ceci va être installé avant le paquet principal.", + "installPluginTitle": "INSTALLER PLUGIN", + "installContentTitle": "INSTALLER LE CONTENU", + "installingPackage": "Installation \"{{name}}\"", + "targetEdition": "Edition ciblé pour \"{{name}}\"", + "installingDependencies": "Dépendances en Installation...", + "installing": "Installation...", + "downloadingPluginFiles": "Téléchargement des fichiers du plugin", + "downloadingDependencies": "Téléchargement et extraction des dependences requises", + "downloadingAssets": "Téléchargement et extraction des actifs", + "requestedPermissions": "Permissions requises", + "installedSuccessfully": "Installation réusie!", + "pressAnyKeyToContinue": "Touchez n'importe quel bouton pour commencer", + "installationFailed": "Installation échoué", + "retry": "Recommencer", + "noInstalledEditions": "Aucune editions installé trouvés", + "removePluginTitle": "RETIRER PLUGIN", + "removeContentTitle": "RETIRER CONTENU", + "removePackage": "Retirer \"{{name}}\"", + "selectEditionToRemove": "Select edition to remove \"{{name}}\"", + "removing": "Retrait...", + "deletingFiles": "Fichiers supprimé avec succès", + "removedSuccessfully": "Retiré avec succès!", + "removalFailed": "Retrait échoué" + }, + "screenshots": { + "title": "Capture d'écran", + "noScreenshots": "Aucune capture d'écran trouvé", + "takeInGameWithF2": "Prenez une capture avec la touche F2", + "openFolder": "OUVRIR FICHIER", + "delete": "SUPPRIMER", + "close": "FERMER", + "scanning": "Scan d'archives...", + "capturedOn": "Capturé le {{date}}", + "deleteConfirm": "Etes vous sure de retirer cette capture d'écran?" + }, + "pckEditor": { + "openPck": "Ouvrir PCK", + "newPck": "Nouveau PCK", + "exportAll": "Tout exporter", + "savePck": "Sauver PCK", + "searchAssets": "Recherche d'actifs...", + "addAsset": "Ajouter un actif", + "selectAsset": "Selectioner un actif pour plus de détails", + "metadataProperties": "Propriétes Métadata", + "addProperty": "+ Ajouter une proprieté", + "remove": "Retirer", + "export": "Exporter", + "replace": "Remplacer", + "renameAsset": "Renomer l'actif (Path)", + "deleteAsset": "Enlever cet actif", + "selectAssetType": "Selectioner le type d'actif", + "rename": "Renomer", + "assetRenamed": "Actif renomée", + "exportingAllAssets": "Exportation de tout actifs...", + "allAssetsExported": "Tous les actifs exportés", + "exportFailed": "Exportation échoué", + "pckSaved": "PCK sauvé avec succès", + "newPckCreated": "Nouveau PCK crée", + "title": "Editeur PCK", + "openToBegin": "Ouvrir un fichier PCK pour commencer à éditer", + "endianness": "Endianité:", + "xmlSupport": "Support XML:", + "enabled": "Activé", + "disabled": "Désactivé", + "version": "Version:", + "exportAssetDialog": "Export d'actifs", + "savePckDialog": "Sauver PCK", + "failedToParse": "Analyse du PCK échoué", + "exported": "{{name}} exporté", + "deleted": "{{name}} supprimé", + "assetReplaced": "Actif remplacé", + "assetAdded": "Actif ajouté", + "noMetadataProperties": "Aucune propriété Metadata", + "view3dSkin": "Vue 3D du Skin", + "view3dCape": "Vue 3D de Cape", + "texturePreview": "Aperçu de texture", + "back": "Retour", + "renameTitle": "Renomer l'actif", + "newAssetPath": "Nouveau chemin d'actif", + "cancel": "Retour" + }, + "modelEditor": { + "title": "Editeur de modèle", + "import": "Importer", + "export": "Exporter", + "save": "Sauver", + "bounds": "Bonds", + "importToBegin": "Importer un ficher .bbmodel ou .json pour commencer", + "startDefaultModel": "Commencer avec un modèle par défaut", + "models": "Modèles ({{count}})", + "add": "+ Ajouter", + "remove": "Retirer", + "edit": "Editer", + "parts": "Parts ({{count}})", + "boxes": "Boîtes ({{count}})", + "box": "Boite {{index}}", + "textures": "Textures ({{count}})", + "noTextures": "Aucune textures", + "selectModel": "Selectioner un modèle pour apercevoir", + "back": "Retour", + "editPart": "Editer la part", + "name": "Nom", + "translation": "Traduction", + "editBox": "Editer Boîte", + "position": "Position", + "size": "Taile", + "uvOffset": "Décalage UV", + "inflate": "Gonfle", + "mirrorUv": "Refléter UV", + "cancel": "Retour", + "save": "Sauver", + "imported": "Importer: {{name}}", + "loadedModels": "Chargé {{count}} modèle(s)", + "failedToParse": "Echec de l'analyse", + "addedTexture": "Texture ajouté: {{name}}", + "created": "Crée: {{name}}", + "exported": "Exporté: {{name}}", + "exportFailed": "Exportation écoué", + "modelDeleted": "Modèle supprimé" + }, + "arcEditor": { + "openArc": "Ouvrir ARC", + "exportAll": "Tout exporter", + "saveArc": "Sauver l'ARC", + "openArcFile": "Ouvrez un fichier ARC pour commencer à editer", + "archive": "Archive", + "languagesLoc": "Langues (LOC)", + "searchEntries": "Recherche d'entrées...", + "addEntry": "Ajouter une entrée", + "entryDetails": "Détails d'entrée", + "exportFile": "Exporter fichier", + "replaceData": "Remplacer les données", + "renamePath": "Renomer / Chemin", + "deleteEntry": "Supprimer l'entrée", + "zlibCompressed": "ZLIB compressé", + "uncompressed": "Décompressé", + "noLocFound": "Aucun languages.loc trouvé dans l'archive", + "createLoc": "Créer languages.loc", + "writeToArc": "Ecrire en ARC", + "addString": "Ajouter une ficelle", + "title": "Editeur ARC", + "size": "Taile", + "format": "Format", + "compressed": "Compressé", + "raw": "Brut", + "selectEntry": "Selectioner une entrée pour plus de détails", + "zlib": "ZLIB", + "searchStrings": "Chercher des ficelles...", + "keyOrIndex": "Touche / Indèxe", + "value": "Valeur", + "actions": "Actions", + "edit": "Modifié", + "static": "Statique", + "keyed": "Appuié", + "back": "Retour", + "saveArcDialog": "Sauver ARC", + "exportAssetDialog": "Exporter l'actif", + "loaded": " {{name}} Chargé", + "failedToParse": "Analyse de l'ARC échoué", + "arcSaved": "ARC sauvé avec succès", + "saveFailed": "Sauvegarde échoué", + "extracted": "{{name}} Extrait", + "extractionFailed": "Extraction échoué", + "deleted": "{{name}} supprimé", + "locUpdatedInArchive": "languages.loc mis à jour dans l'archive", + "locAddedToArchive": "languages.loc ajouté dans l'archive", + "entryAdded": "Entrée ajouté", + "entryReplaced": "Entrée remplacé", + "entryRenamed": "Entrée renommé", + "stringAdded": "Ficelle ajouté", + "stringUpdated": "Ficelle à jour", + "stringDeleted": "Ficelle", + "exportingAll": "Exportation de toutes les entrées d'archive...", + "allEntriesExported": "Toutes les entrées exportés", + "exportFailed": "Exportation échoué", + "compressionEnabled": "Compression activé", + "compressionDisabled": "Compression désactivé", + "createdNewLocaleStructure": "Crée une nouvelle structure locale", + "addFileToArchive": "Ajouter un fichier dans l'archive", + "selectSourceFile": "Selectioner le fichier source", + "cancel": "Annuler", + "replaceFileData": "Replacer les donées fichiers", + "selectNewFile": "Selectioner un nouveau fichier", + "renameEntry": "Renomer l'entrée", + "newArchivePath": "Nouveau chemin d'archive", + "markAsCompressed": "Marqué en tant que compressé (zlib)", + "rename": "Renomer", + "stringTitle": "Ficelle", + "add": "Ajouter", + "stringKey": "Touche ficelle", + "staticEntry": "Entrée statique - Indèxe: {{index}}", + "stringValue": "Valeur ficelle", + "save": "Sauver" + }, + "credits": { + "backToMenu": "Retour au menu" + }, + "modals": { + "downloadDlc": { + "title": "Telecharger DLC", + "loading": "Chargement des DLC disponibles...", + "noneFound": "Aucun dossier DLC trouvé dans le repositoire.", + "available": "{{count}} disponible", + "all": "Tous", + "none": "Aucun", + "download": "Télecharger ({{count}})", + "done": "Fait", + "close": "Fermer", + "downloaded": "Télecharger {{downloaded}}/{{selected}}", + "failedToDownload": "Téléchargement échoué de: {{name}}: {{reason}}" + }, + "gameLog": { + "title": "Logs de crash du jeu", + "saveDialog": "Sauver les logs de crash", + "saveAsFile": "Sauver en tant que fichier", + "copy": "Copier", + "close": "Fermer", + "saved": "Sauvé!", + "failedToSave": "Sauvegarde échoué", + "copied": "Copié au presse-papiers!", + "failedToCopy": "Copie échoué.", + "showingLast": "Montrer {{shown}} lignes de {{total}}." + }, + "setUid": { + "title": "Mettre l'UID", + "manual": "Manuel", + "copy": "Copier", + "enterUid": "Entrer l'UID", + "selectInstance": "Selectioner l'instance installée", + "selectPlaceholder": "-- Selectioner une instance --", + "noInstances": "Aucune autre instances installées disponible.", + "selectToCopy": "Selectionner une instance à copier dupuis.", + "sourceNoUid": "La source installé n'a aucune uid.dat ou ne peut pas être lu.", + "uidEmpty": "L'UID ne peut pas être vide.", + "cancel": "Annuler", + "save": "Sauver" + }, + "playtime": { + "title": "Temps de jeu", + "loading": "Chargement...", + "total": "Total", + "thisWeek": "Cette semaine", + "today": "Aujourd'hui", + "dailyBreakdown": "Répartition quotidienne", + "failedToLoad": "Chargement des données de temps de jeu échoué.", + "close": "Fermer" + }, + "customize": { + "title": "Personaliser", + "titleImage": "Image titre", + "panoramaBackground": "Image de paranorma", + "changeImage": "Changer l'image", + "pickImage": "Prendre l'image", + "reset": "Reinstaurer", + "preview": "Aperçu", + "selectTitleImage": "Selectioner l'image titre", + "selectPanorama": "Selectionner l'arrière plan paranorma", + "cancel": "Annuler", + "save": "Sauver" + }, + "chooseInstance": { + "title": "Rejoindre le jeu", + "joiningTitle": "Rejoindre...", + "joinPrompt": "Connexion dans le monde de {{name}}. Choisisez une instance:", + "join": "Rejoindre", + "cancel": "Annuler", + "noInstances": "Aucune instance installé trouvé. Selectioner une version en premier.", + "launching": "Lancement du jeu...", + "connectingRelay": "Connection via relais..." + }, + "importWorld": { + "title": "Importer un monde", + "importingTitle": "Importation de mondes", + "importInto": "Introduction:", + "importMsPrompt": "Importer une sauvegarde existante en .ms:", + "selectMsFile": "Selectionner un fichier .ms", + "convertConsolePrompt": "Convertir une sauvegarde Xbox 360 ou PS3:", + "xbox360": "Xbox 360 (.bin)", + "ps3Folder": "PS3 (Folder)", + "javaConversionPrompt": "Conversion de monde Java Edition:", + "javaToLce": "Java → LCE", + "lceToJava": "LCE → Java", + "cancel": "Annuler", + "selectingSource": "Selection de la source...", + "selectingMsFile": "Selection du fichier saveData.ms...", + "copyingLceSave": "Copy de la sauvegarde LCE...", + "worldImported": "Monde importé dans \"{{name}}\"!", + "selectingXboxSave": "Selection d'une sauvegarde Xbox 360 (.bin)...", + "convertingXbox": "Convertion de la sauvegarde Xbox 360...", + "xboxConverted": "Sauvegarde Xbox 360 converti en \"{{name}}\"!", + "selectingPs3Folder": "Selection du dossier sauvegarde PS3...", + "convertingPs3": "Convertion de sauvegarde PS3...", + "ps3Converted": "Sauvegarde PS3 converti en \"{{name}}\"!", + "selectingJavaFolder": "Selecting du dossier monde Java...", + "convertingJava": "Convertion de Java à LCE...", + "javaConverted": "Monde Java converti en \"{{name}}\"!", + "selectingOutputFolder": "Selection du fichier de sortie pour le monde Java...", + "convertingLceToJava": "Convertion de sauvegarde LCE en monde Java...", + "javaExported": "Monde Java exporté dans \"{{path}}\"!" + }, + "customTu": { + "importTitle": "Importer une TU personalisé", + "editTitle": "Editer la TU personalisé", + "tuName": "Nom de TU", + "description": "Description (Optionelle)", + "downloadUrl": "URL de télechargement (.zip)", + "localPath": "Chemin local", + "namePlaceholder": "ex: Mon chouette Mod!", + "descPlaceholder": "Une petite description...", + "urlPlaceholder": "Optionel si le chemin est en place", + "nameRequired": "Nom requis", + "urlOrPathRequired": "URL ou chemin requis", + "invalidUrl": "URL invalide", + "defaultDesc": "TU importé personalisé", + "cancel": "Annuler", + "save": "Sauver", + "import": "Importer" + }, + "options": { + "title": "Options", + "general": "General", + "loading": "Option de chargement...", + "reset": "Reinstaurer", + "cancel": "Annuler", + "save": "Sauver", + "ok": "OK", + "noSchema": "Cette instance ne contient pas un schéma d'options de lancement.", + "invalidSchema": "L'option de lancement du schéma est invalide ou non suporté." + } + } +}