diff --git a/static/webui/script.js b/static/webui/script.js
index a73097db..1750f511 100644
--- a/static/webui/script.js
+++ b/static/webui/script.js
@@ -128,7 +128,7 @@ function setActiveLanguage(lang) {
document.querySelector("[data-lang=" + lang + "]").classList.add("active");
window.dictPromise = new Promise(resolve => {
- const webui_lang = ["en", "ru"].indexOf(lang) == -1 ? "en" : lang;
+ const webui_lang = ["en", "ru", "fr"].indexOf(lang) == -1 ? "en" : lang;
const script = document.createElement("script");
script.src = "/translations/" + webui_lang + ".js";
script.onload = function () {
diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js
new file mode 100644
index 00000000..678758ab
--- /dev/null
+++ b/static/webui/translations/fr.js
@@ -0,0 +1,135 @@
+dict = {
+ general_inventoryUpdateNote: `Note : Les changements effectués ici seront appliqués lors de la syncrhonisation. Visiter la navigation appliquera les changements apportés à l'inventaire.`,
+ general_addButton: `Ajouter`,
+ general_bulkActions: `Action groupée`,
+ code_nonValidAuthz: `Informations de connexion invalides`,
+ code_changeNameConfirm: `Nouveau nom du compte :`,
+ code_deleteAccountConfirm: `Supprimer |DISPLAYNAME| (|EMAIL|) ? Cette action est irreversible.`,
+ code_archgun: `Archgun`,
+ code_melee: `Melee`,
+ code_pistol: `Pistolet`,
+ code_rifle: `Fusil`,
+ code_shotgun: `Fusil à Pompe`,
+ code_kitgun: `Kitgun`,
+ code_zaw: `Zaw`,
+ code_moteAmp: `Amplificateur Faible`,
+ code_amp: `Amplificateur`,
+ code_sirocco: `Sirocco`,
+ code_kDrive: `K-Drive`,
+ code_legendaryCore: `Coeur Légendaire`,
+ code_traumaticPeculiar: `Traumatisme Atypique`,
+ code_starter: `|MOD| (Défectueux)`,
+ code_badItem: `(Imposteur)`,
+ code_maxRank: `Rang Max`,
+ code_rename: `Renommer`,
+ code_renamePrompt: `Nouveau nom :`,
+ code_remove: `Retirer`,
+ code_addItemsConfirm: `Ajouter |COUNT| items à l'inventaire ?`,
+ code_noEquipmentToRankUp: `No equipment to rank up.`,
+ code_succAdded: `Ajouté.`,
+ code_buffsNumber: `Nombre de buffs`,
+ code_cursesNumber: `Nombre de débuffs`,
+ code_rerollsNumber: `Nombre de rerolls`,
+ code_viewStats: `Voir les stats`,
+ code_rank: `Rang`,
+ code_count: `Quantité`,
+ code_focusAllUnlocked: `Les écoles de Focus sont déjà déverrouillées.`,
+ code_focusUnlocked: `|COUNT| écoles de Focus déverrouillées ! Synchronisation de l'inventaire nécessaire.`,
+ code_addModsConfirm: `Ajouter |COUNT| mods à l'inventaire ?`,
+ code_succImport: `Importé.`,
+ login_description: `Connexion avec les informations de connexion OpenWF.`,
+ login_emailLabel: `Email`,
+ login_passwordLabel: `Mot de passe`,
+ login_loginButton: `Connexion`,
+ navbar_logout: `Déconnexion`,
+ navbar_renameAccount: `Renommer le compte`,
+ navbar_deleteAccount: `Supprimer le compte`,
+ navbar_inventory: `Inventaire`,
+ navbar_mods: `Mods`,
+ navbar_quests: `Quêtes`,
+ navbar_cheats: `Cheats`,
+ navbar_import: `Importer`,
+ inventory_addItems: `Ajouter des items`,
+ inventory_suits: `Warframes`,
+ inventory_longGuns: `Armes principales`,
+ inventory_pistols: `Armes secondaires`,
+ inventory_melee: `Armes de melee`,
+ inventory_spaceSuits: `Archwings`,
+ inventory_spaceGuns: `Archguns`,
+ inventory_spaceMelee: `Archmelee`,
+ inventory_mechSuits: `Necramechs`,
+ inventory_sentinels: `Sentinelles`,
+ inventory_sentinelWeapons: `Armes de sentinelles`,
+ inventory_operatorAmps: `Amplificateurs`,
+ inventory_hoverboards: `K-Drives`,
+ inventory_bulkAddSuits: `Ajouter les Warframes manquantes`,
+ inventory_bulkAddWeapons: `Ajouter les armes manquantes`,
+ inventory_bulkAddSpaceSuits: `Ajouter les Archwings manquants`,
+ inventory_bulkAddSpaceWeapons: `Ajouter les armes d'Archwing manquantes`,
+ inventory_bulkAddSentinels: `Ajouter les Sentinelles manquantes`,
+ inventory_bulkAddSentinelWeapons: `Ajouter les armes de Sentinelles manquantes`,
+ inventory_bulkRankUpSuits: `Toutes les Warframes rang max`,
+ inventory_bulkRankUpWeapons: `Toutes les armes rang max`,
+ inventory_bulkRankUpSpaceSuits: `Tous les Archwings rang max`,
+ inventory_bulkRankUpSpaceWeapons: `Toutes les armes d'Archwing rang max`,
+ inventory_bulkRankUpSentinels: `Toutes les Sentinelles rang max`,
+ inventory_bulkRankUpSentinelWeapons: `Toutes les armes de Sentinelles rang max`,
+
+ currency_RegularCredits: `Crédits`,
+ currency_PremiumCredits: `Platinum`,
+ currency_FusionPoints: `Endo`,
+ currency_PrimeTokens: `Aya Raffiné`,
+ currency_owned: `|COUNT| possédés.`,
+ powersuit_archonShardsLabel: `Emplacements de fragments d'Archonte`,
+ powersuit_archonShardsDescription: `Slots illimités pour appliquer plusieurs améliorations.`,
+ mods_addRiven: `Ajouter un riven`,
+ mods_fingerprint: `Empreinte`,
+ mods_fingerprintHelp: `Besoin d'aide pour l'empreinte ?`,
+ mods_rivens: `Rivens`,
+ mods_mods: `Mods`,
+ mods_bulkAddMods: `Ajouter les mods manquants`,
+ cheats_administratorRequirement: `Rôle d'administrateur requis pour cette fonctionnalité. Ajoutez |DISPLAYNAME|
à la ligne administratorNames
dans le fichier config.json.`,
+ cheats_server: `Serveur`,
+ cheats_skipTutorial: `Passer le tutoriel`,
+ cheats_skipAllDialogue: `Passer les dialogues`,
+ cheats_unlockAllScans: `Débloquer tous les scans`,
+ cheats_unlockAllMissions: `Débloquer toutes les missions`,
+ cheats_unlockAllQuests: `Débloquer toutes les quêtes`,
+ cheats_completeAllQuests: `Compléter toutes les quêtes`,
+ cheats_infiniteCredits: `Crédits infinis`,
+ cheats_infinitePlatinum: `Platinum infini`,
+ cheats_infiniteEndo: `Endo infini`,
+ cheats_infiniteRegalAya: `Aya Raffiné infini`,
+ cheats_infiniteHelminthMaterials: `Ressources d'Helminth infinies`,
+ cheats_unlockAllShipFeatures: `Débloquer tous les segments du vaisseau`,
+ cheats_unlockAllShipDecorations: `Débloquer toutes les décorations du vaisseau`,
+ cheats_unlockAllFlavourItems: `Débloquer tous les Flavor Items`,
+ cheats_unlockAllSkins: `Débloquer tous les skins`,
+ cheats_unlockAllCapturaScenes: `Débloquer toutes les scènes captura`,
+ cheats_universalPolarityEverywhere: `Polarités universelles partout`,
+ cheats_unlockDoubleCapacityPotatoesEverywhere: `Réacteurs et Catalyseurs partout`,
+ cheats_unlockExilusEverywhere: `Adaptateurs Exilus partout`,
+ cheats_unlockArcanesEverywhere: `Adaptateur d'Arcanes partout`,
+ cheats_noDailyStandingLimits: `Pas de limite de réputation journalière`,
+ cheats_instantResourceExtractorDrones: `Ressources de drone d'extraction instantannées`,
+ cheats_noDojoRoomBuildStage: `No Dojo Room Build Stage`,
+ cheats_noDojoResearchCosts: `Aucun coût de recherche (Dojo)`,
+ cheats_noDojoResearchTime: `Aucun temps de recherche (Dojo)`,
+ cheats_spoofMasteryRank: `Spoofed Mastery Rank (-1 to disable)`,
+ cheats_saveSettings: `Sauvegarder les paramètres`,
+ cheats_account: `Compte`,
+ cheats_unlockAllFocusSchools: `Débloquer toutes les écoles de focus`,
+ cheats_helminthUnlockAll: `Helminth niveau max`,
+ cheats_changeSupportedSyndicate: `Allégeance`,
+ cheats_changeButton: `Changer`,
+ cheats_none: `Aucun`,
+ cheats_quests: `Quêtes`,
+ cheats_quests_unlockAll: `Débloquer toutes les quêtes`,
+ cheats_quests_completeAll: `Compléter toutes les quêtes`,
+ cheats_quests_completeAllUnlocked: `Compléter toutes les quêtes déverrouillées`,
+ cheats_quests_resetAll: `Réinitialiser toutes les quêtes`,
+ cheats_quests_giveAll: `Obtenir toutes les quêtes`,
+ import_importNote: `Import manuel. Toutes les modifcations supportées par l'inventaire écraseront celles présentes dans la base de données.`,
+ import_submit: `Soumettre`,
+ prettier_sucks_ass: ``
+};