diff --git a/static/webui/script.js b/static/webui/script.js
index d6216a08..fd997bbb 100644
--- a/static/webui/script.js
+++ b/static/webui/script.js
@@ -131,7 +131,7 @@ function setActiveLanguage(lang) {
document.querySelector("[data-lang=" + lang + "]").classList.add("active");
window.dictPromise = new Promise(resolve => {
- const webui_lang = ["en", "ru", "fr", "de", "zh"].indexOf(lang) == -1 ? "en" : lang;
+ const webui_lang = ["en", "ru", "fr", "de", "zh", "es"].indexOf(lang) == -1 ? "en" : lang;
let script = document.getElementById("translations");
if (script) document.documentElement.removeChild(script);
diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js
new file mode 100644
index 00000000..2a3f8a2e
--- /dev/null
+++ b/static/webui/translations/es.js
@@ -0,0 +1,158 @@
+// Spanish translation by hxedcl
+dict = {
+ general_inventoryUpdateNote: `Nota: Los cambios realizados aquí se reflejarán en el juego cuando este sincronice el inventario. Usar la navegación debería ser la forma más sencilla de activar esto.`,
+ general_addButton: `Agregar`,
+ general_bulkActions: `Acciones masivas`,
+ code_nonValidAuthz: `Tus credenciales no son válidas.`,
+ code_changeNameConfirm: `¿Qué nombre te gustaría ponerle a tu cuenta?`,
+ code_deleteAccountConfirm: `¿Estás seguro de que deseas eliminar tu cuenta |DISPLAYNAME| (|EMAIL|)? Esta acción es permanente.`,
+ code_archgun: `Archcañón`,
+ code_melee: `Cuerpo a cuerpo`,
+ code_pistol: `Pistola`,
+ code_rifle: `Rifle`,
+ code_shotgun: `Escopeta`,
+ code_kitgun: `Kitgun`,
+ code_zaw: `Zaw`,
+ code_moteAmp: `Amp Mota`,
+ code_amp: `Amp`,
+ code_kDrive: `K-Drive`,
+ code_legendaryCore: `Núcleo legendario`,
+ code_traumaticPeculiar: `Traumatismo peculiar`,
+ code_starter: `|MOD| (Defectuoso)`,
+ code_badItem: `(Impostor)`,
+ code_maxRank: `Rango máximo`,
+ code_rename: `Renombrar`,
+ code_renamePrompt: `Escribe tu nuevo nombre personalizado:`,
+ code_remove: `Quitar`,
+ code_addItemsConfirm: `¿Estás seguro de que deseas agregar |COUNT| objetos a tu cuenta?`,
+ code_succRankUp: `Ascenso exitoso.`,
+ code_noEquipmentToRankUp: `No hay equipo para ascender.`,
+ code_succAdded: `Agregado exitosamente.`,
+ code_succRemoved: `Eliminado exitosamente.`,
+ code_buffsNumber: `Cantidad de mejoras`,
+ code_cursesNumber: `Cantidad de maldiciones`,
+ code_rerollsNumber: `Cantidad de reintentos`,
+ code_viewStats: `Ver estadísticas`,
+ code_rank: `Rango`,
+ code_count: `Cantidad`,
+ code_focusAllUnlocked: `Todas las escuelas de enfoque ya están desbloqueadas.`,
+ code_focusUnlocked: `¡Desbloqueadas |COUNT| nuevas escuelas de enfoque! Se necesita una actualización del inventario para reflejar los cambios en el juego. Visitar la navegación debería ser la forma más sencilla de activarlo.`,
+ code_addModsConfirm: `¿Estás seguro de que deseas agregar |COUNT| modificadores a tu cuenta?`,
+ code_succImport: `Importación exitosa.`,
+ code_gild: `Refinar`,
+ code_moa: `Moa`,
+ code_zanuka: `Sabueso`,
+ code_zanukaA: `Sabueso Dorma`,
+ code_zanukaB: `Sabueso Bhaira`,
+ code_zanukaC: `Sabueso Hec`,
+ code_stage: `Etapa`,
+ code_complete: `Completa`,
+ code_nextStage: `Siguiente etapa`,
+ code_prevStage: `Etapa anterior`,
+ code_reset: `Reiniciar`,
+ code_setInactive: `Marcar la misión como inactiva`,
+ code_completed: `Completada`,
+ code_active: `Activa`,
+ code_pigment: `Pigmento`,
+ login_description: `Inicia sesión con las credenciales de tu cuenta OpenWF (las mismas que usas en el juego al conectarte a este servidor).`,
+ login_emailLabel: `Dirección de correo electrónico`,
+ login_passwordLabel: `Contraseña`,
+ login_loginButton: `Iniciar sesión`,
+ navbar_logout: `Cerrar sesión`,
+ navbar_renameAccount: `Renombrar cuenta`,
+ navbar_deleteAccount: `Eliminar cuenta`,
+ navbar_inventory: `Inventario`,
+ navbar_mods: `Mods`,
+ navbar_quests: `Misiones`,
+ navbar_cheats: `Trucos`,
+ navbar_import: `Importar`,
+ inventory_addItems: `Agregar objetos`,
+ inventory_suits: `Warframes`,
+ inventory_longGuns: `Armas primarias`,
+ inventory_pistols: `Armas secundarias`,
+ inventory_melee: `Armas cuerpo a cuerpo`,
+ inventory_spaceSuits: `Archwings`,
+ inventory_spaceGuns: `Armas primarias Archwing`,
+ inventory_spaceMelee: `Armas cuerpo a cuerpo Archwing`,
+ inventory_mechSuits: `Necramechs`,
+ inventory_sentinels: `Centinelas`,
+ inventory_sentinelWeapons: `Armas de centinela`,
+ inventory_operatorAmps: `Amps`,
+ inventory_hoverboards: `K-Drives`,
+ inventory_moaPets: `Moa`,
+ inventory_bulkAddSuits: `Agregar Warframes faltantes`,
+ inventory_bulkAddWeapons: `Agregar armas faltantes`,
+ inventory_bulkAddSpaceSuits: `Agregar Archwings faltantes`,
+ inventory_bulkAddSpaceWeapons: `Agregar armas Archwing faltantes`,
+ inventory_bulkAddSentinels: `Agregar centinelas faltantes`,
+ inventory_bulkAddSentinelWeapons: `Agregar armas de centinela faltantes`,
+ inventory_bulkRankUpSuits: `Maximizar rango de todos los Warframes`,
+ inventory_bulkRankUpWeapons: `Maximizar rango de todas las armas`,
+ inventory_bulkRankUpSpaceSuits: `Maximizar rango de todos los Archwings`,
+ inventory_bulkRankUpSpaceWeapons: `Maximizar rango de todas las armas Archwing`,
+ inventory_bulkRankUpSentinels: `Maximizar rango de todos los centinelas`,
+ inventory_bulkRankUpSentinelWeapons: `Maximizar rango de todas las armas de centinela`,
+
+ quests_list: `Misiones`,
+ quests_completeAll: `Completar todas las misiones`,
+ quests_resetAll: `Reiniciar todas las misiones`,
+ quests_giveAll: `Otorgar todas las misiones`,
+
+ currency_RegularCredits: `Créditos`,
+ currency_PremiumCredits: `Platino`,
+ currency_FusionPoints: `Endo`,
+ currency_PrimeTokens: `Aya Real`,
+ currency_owned: `Tienes |COUNT|.`,
+ powersuit_archonShardsLabel: `Ranuras de Fragmento de Archón`,
+ powersuit_archonShardsDescription: `Puedes usar estas ranuras ilimitadas para aplicar una amplia variedad de mejoras`,
+ mods_addRiven: `Agregar Agrietado`,
+ mods_fingerprint: `Huella digital`,
+ mods_fingerprintHelp: `¿Necesitas ayuda con la huella digital?`,
+ mods_rivens: `Agrietados`,
+ mods_mods: `Mods`,
+ mods_bulkAddMods: `Agregar mods faltantes`,
+ cheats_administratorRequirement: `Debes ser administrador para usar esta función. Para convertirte en administrador, agrega |DISPLAYNAME|
a administratorNames
en el archivo config.json.`,
+ cheats_server: `Servidor`,
+ cheats_skipTutorial: `Omitir tutorial`,
+ cheats_skipAllDialogue: `Omitir todos los diálogos`,
+ cheats_unlockAllScans: `Desbloquear todos los escaneos`,
+ cheats_unlockAllMissions: `Desbloquear todas las misiones`,
+ cheats_infiniteCredits: `Créditos infinitos`,
+ cheats_infinitePlatinum: `Platino infinito`,
+ cheats_infiniteEndo: `Endo infinito`,
+ cheats_infiniteRegalAya: `Aya Real infinita`,
+ cheats_infiniteHelminthMaterials: `Materiales Helminto infinitos`,
+ cheats_unlockAllShipFeatures: `Desbloquear todas las funciones de nave`,
+ cheats_unlockAllShipDecorations: `Desbloquear todas las decoraciones de nave`,
+ cheats_unlockAllFlavourItems: `Desbloquear todos los ítems estéticos`,
+ cheats_unlockAllSkins: `Desbloquear todas las apariencias`,
+ cheats_unlockAllCapturaScenes: `Desbloquear todas las escenas Captura`,
+ cheats_unlockAllDecoRecipes: `Desbloquear todas las recetas decorativas del dojo`,
+ cheats_universalPolarityEverywhere: `Polaridad universal en todas partes`,
+ cheats_unlockDoubleCapacityPotatoesEverywhere: `Patatas en todas partes`,
+ cheats_unlockExilusEverywhere: `Adaptadores Exilus en todas partes`,
+ cheats_unlockArcanesEverywhere: `Adaptadores de Arcanos en todas partes`,
+ cheats_noDailyStandingLimits: `Sin límite diario de reputación`,
+ cheats_noArgonCrystalDecay: `Sin descomposición de cristal de Argón`,
+ cheats_noMasteryRankUpCooldown: `Sin tiempo de espera para rango de maestría`,
+ cheats_noVendorPurchaseLimits: `Sin límite de compras de vendedores`,
+ cheats_instantResourceExtractorDrones: `Drones de extracción de recursos instantáneos`,
+ cheats_noDojoRoomBuildStage: `Sin etapa de construcción de sala del dojo`,
+ cheats_noDojoDecoBuildStage: `Sin etapa de construcción de decoraciones del dojo`,
+ cheats_fastDojoRoomDestruction: `Destrucción rápida de salas del dojo`,
+ cheats_noDojoResearchCosts: `Sin costo de investigación del dojo`,
+ cheats_noDojoResearchTime: `Sin tiempo de investigación del dojo`,
+ cheats_fastClanAscension: `Ascenso rápido del clan`,
+ cheats_spoofMasteryRank: `Rango de maestría simulado (-1 para desactivar)`,
+ cheats_saveSettings: `Guardar configuración`,
+ cheats_account: `Cuenta`,
+ cheats_unlockAllFocusSchools: `Desbloquear todas las escuelas de enfoque`,
+ cheats_helminthUnlockAll: `Subir al máximo el Helminto`,
+ cheats_intrinsicsUnlockAll: `Maximizar todos los intrínsecos`,
+ cheats_changeSupportedSyndicate: `Sindicatos disponibles`,
+ cheats_changeButton: `Cambiar`,
+ cheats_none: `Ninguno`,
+ import_importNote: `Puedes proporcionar una respuesta de inventario completa o parcial (representación del cliente) aquí. Todos los campos compatibles con el importador serán sobrescritos en tu cuenta.`,
+ import_submit: `Enviar`,
+ prettier_sucks_ass: ``
+};