diff --git a/src/components/LocaleSelectorModal.tsx b/src/components/LocaleSelectorModal.tsx
index 750ce18..b0fbc3f 100644
--- a/src/components/LocaleSelectorModal.tsx
+++ b/src/components/LocaleSelectorModal.tsx
@@ -16,6 +16,7 @@ export default function LocaleSelectorModal() {
}}
>
+
diff --git a/src/locales/LocaleTranslations.tsx b/src/locales/LocaleTranslations.tsx
index 151192c..38719d2 100644
--- a/src/locales/LocaleTranslations.tsx
+++ b/src/locales/LocaleTranslations.tsx
@@ -1,6 +1,7 @@
/* Add language here with the corresponding json file, use en.json as reference */
export default {
en: require("./en.json") as Record,
+ es: require("./es.json") as Record,
fr: require("./fr.json") as Record,
ch: require("./ch.json") as Record,
de: require("./de.json") as Record,
diff --git a/src/locales/es.json b/src/locales/es.json
new file mode 100644
index 0000000..50bac76
--- /dev/null
+++ b/src/locales/es.json
@@ -0,0 +1,109 @@
+{
+ "topbar.discord": "Únete a nosotros en Discord",
+ "topbar.beer": "Cómpranos unas cervezas ❤️",
+ "presetButtons.applyPresetTooltip": "El preset se cargará en las pestañas de RyzenAdj y se aplicará",
+ "presetButtons.loadPresetTooltip": "El preset se cargará en las pestañas de RyzenAdj pero no se aplicará",
+ "presetAutoApply.whenSessionResume": "Cuando se reanuda la sesión",
+ "presetAutoApply.whenRCStart": "Cuando se inicia el controlador Ryzen",
+ "presetAutoApply.whenLaptopPluggedIn": "Cuando el portátil está enchufado",
+ "presetAutoApply.whenLaptopPluggedOut": "Cuando la computadora portátil está desconectada",
+ "presetButtons.confirmDeletion": "¿Está seguro de eliminar \"{preset}\"?",
+ "presetButtons.loadedPreset": "Preset {preset} ha sido cargado",
+ "presetButtons.uploadPresetConfirmation": "¿Está seguro de subir el preset {preset}?",
+ "presetListEmpty.youDontHaveAny": "Todavía no tiene ningún preset",
+ "presetListEmpty.sentencePart1": "Puede crear uno utilizando",
+ "presetListEmpty.createPresetBtn": "Crear preset",
+ "presetListEmpty.sentencePart2": "botón disponible en las pestañas de configuración de RyzenAdj (CPU, GPU, ...)",
+ "PresetOnline.listNotLoadedYet": "La lista no se ha cargado o todavía no hay un preajuste en línea",
+ "PresetOnline.loadPresetListBtn": "Cargar lista de preajustes",
+ "PresetOnline.sentencePart1": "Puede compartir su propio preset haciendo clic en",
+ "PresetOnline.uploadBtn": "Cargar",
+ "PresetOnline.sentencePart2": "botón disponible en sus ajustes preestablecidos",
+ "sceneSelector.cpuTitle": "CPU",
+ "sceneSelector.gpuTitle": "GPU",
+ "ryzenAdj.maxGfxclk.label": "Frecuencia máxima de reloj Vega iGPU (Mhz)",
+ "ryzenAdj.stapmTime.desc": "Administración de energía consciente de la temperatura de la piel (STAPM). Esto define el período de refuerzo que se utilizará",
+ "ryzenAdj.slowLimit.desc": "La cantidad de energía que la CPU puede consumir mientras se aumentan los niveles de refuerzo",
+ "appContext.minimizeOnLaunch.name": "Minimizar al iniciar",
+ "appContext.ryzenAdjPath.name": "Ruta RyzenAdj",
+ "sceneSelector.settingsTitle": "Configuración",
+ "sceneSelector.powerTitle": "Poder",
+ "ryzenAdj.slowTime.desc": "Esto define el período que se utilizará fuera del período de refuerzo para entregar una potencia constante que se entregará al socket",
+ "ryzenAdj.slowTime.label": "Seguimiento de energía del paquete (PPT) - Periodo lento",
+ "ryzenAdj.maxFclkFrequency.desc": "Infinity Fabric es el término de marketing de AMD para la conexión del bus que conecta los troqueles del procesador (GPU / CPU). Esto define el límite de reloj máximo del bus",
+ "ryzenAdj.stapmLimit.desc": "Administración de energía consciente de la temperatura de la piel (STAPM). Esto define el límite del paquete de energía del socket que se utiliza para administrar el período de impulso del dispositivo",
+ "ryzenAdj.stapmTime.label": "Período de refuerzo de la CPU",
+ "ryzenAdj.vrmmaxCurrent.desc": "El límite de corriente que dejamos que la placa base entregue a la CPU",
+ "ryzenAdj.vrmmaxCurrent.label": "VRM Current (A)",
+ "appContext.ryzenAdjPath.shortDesc": "La ruta completa al binario RyzenAdj",
+ "ryzenAdj.maxFclkFrequency.label": "Frecuencia máxima de Infinity Fabric (Mhz)",
+ "ryzenAdj.stapmLimit.label": "CPU TDP (W)",
+ "appContext.autoStartOnBoot.shortDesc": "Inicie Ryzen Controller al iniciar la computadora",
+ "sceneSelector.presetsTitle": "Presets",
+ "ryzenAdj.psi0Current.label": "Límite de corriente PSI0 (mA)",
+ "ryzenAdj.maxGfxclk.desc": "La velocidad de reloj máxima a la que se permite que funcione la GPU integrada (Vega)",
+ "ryzenAdj.minFclkFrequency.label": "Frecuencia mínima de Infinity Fabric (Mhz)",
+ "ryzenAdj.slowLimit.label": "CPU Min TDP (W)",
+ "appContext.minimizeOnLaunch.shortDesc": "Iniciar Ryzen Controller minimizado",
+ "ryzenAdj.minGfxclk.label": "Frecuencia mínima de reloj Vega iGPU (Mhz)",
+ "ryzenAdj.fastLimit.desc": "La cantidad de energía que la CPU puede consumir mientras aumentan los niveles",
+ "appContext.minimizeToTray.name": "Minimizar a la bandeja",
+ "ryzenAdj.psi0Current.desc": "El límite de corriente que dejamos que la placa base entregue al PSI0",
+ "ryzenAdj.minGfxclk.desc": "La velocidad de reloj mínima a la que la GPU integrada (Vega) puede funcionar",
+ "ryzenAdj.fastLimit.label": "CPU Boost TDP (W)",
+ "appContext.autoStartOnBoot.name": "Inicio automático al arrancar",
+ "appContext.minimizeToTray.shortDesc": "Minimice el controlador Ryzen a la bandeja en lugar de la barra de tareas",
+ "appContext.reApplyPeriodically.desc": "En algunas computadoras portátiles, el BIOS a veces restablece lo que RyzenAdj está tratando de hacer. Puede usar esto para aplicar la configuración periódicamente",
+ "sceneSelector.releasesTitle": "Lanzamientos",
+ "ryzenAdj.tctlTemp.desc": "La temperatura que la CPU puede alcanzar antes de que se desactiven los niveles de refuerzo",
+ "appContext.reApplyPeriodically.name": "Vuelva a aplicar periódicamente",
+ "ryzenAdj.tctlTemp.label": "Límite de temperatura (° C)",
+ "appContext.reApplyPeriodically.shortDesc": "Le permite volver a aplicar la configuración de RyzenAdj periódicamente (cada X segundos)",
+ "PresetsScene.onlinePresetTitle": "Presets en línea",
+ "PresetsScene.localPresetTitle": "Presets locales",
+ "PresetsScene.autoApplyTitle": "Aplicar preajuste automático",
+ "SettingsScene.settingsTitle": "Configuración",
+ "settingForm.currentPath": "Ruta actual:",
+ "sysInfoCards.biosVersion": "Versión del BIOS:",
+ "sysInfoCards.gpuPerfDesc": "{ram} Mb (vram dinámico: {dyn})",
+ "SettingsScene.sysInfoTitle": "Información del sistema",
+ "sysInfoCards.basicInfoTitle": "Información básica",
+ "settingForm.browseBtn": "Examinar",
+ "SettingsScene.systemHashDesc": "Esto se utilizará para garantizar la compatibilidad de los presets descargados",
+ "sysInfoCards.CPUInfoTitle": "Información de la CPU",
+ "sysInfoCards.cpuPerfDesc": "{speedmax} Ghz en {physicalCores} núcleos, {cores} hilos",
+ "sysInfoCards.GPUInfoTitle": "GPU # {index} Información",
+ "SettingsScene.loadingSysHash": "Cargando ...",
+ "ryzenAdjBottomBar.prompt": "Nuevo nombre preestablecido",
+ "ryzenAdjBottomBar.mustProvideName": "Debe proporcionar un nombre",
+ "ryzenAdjBottomBar.presetCreated": "Preset \"{newPresetName}\" creado",
+ "ryzenAdjBottomBar.presetWithSameNameExist": "Ya existe un preset con el nombre \"{newPresetName}\"",
+ "presetButtons.apply": "Aplicar",
+ "presetButtons.delete": "Eliminar",
+ "presetButtons.load": "Cargar",
+ "presetAutoApply.nonePreset": "Ninguno",
+ "presetButtons.upload": "Cargar",
+ "ryzenAdj.applySuccess": "RyzenAdj se ha ejecutado con éxito",
+ "presetButtons.uploadSucceed": "El preset {preset} ha sido cargado",
+ "presetOnlineBtn.downloadTooltip": "Guardará el preset en su preset local",
+ "presetOnlineBtn.loadTooltip": "Sin guardar el preset, se cargará en las pestañas de RyzenAdj pero no se aplicará",
+ "presetOnlineBtn.download": "Descargar",
+ "presetOnlineBtn.load": "Cargar",
+ "presetButtons.presetWithSameNameAlreadyExistOnline": "Ya existe un preset con el mismo nombre en línea",
+ "presetOnlineBtn.presetDownloaded": "Preset \"{presetName}\" ha sido cargado",
+ "presetOnlineBtn.presetSameNameExist": "Ya tiene un preset con el mismo nombre",
+ "PresetsScene.cantVoteTwiceSamePreset": "No puede votar dos veces por el mismo preset",
+ "PresetsScene.confirmVote": "¿Está seguro de {votar} este preset?",
+ "PresetsScene.updatingVotes": "Actualizando votos ...",
+ "notify.settingsSaveSuccess": "La configuración se ha guardado correctamente",
+ "ryzenAdjBottomBar.apply": "Aplicar",
+ "ryzenAdjBottomBar.createPreset": "Crear preset",
+ "ryzenAdjBottomBar.reset": "Restablecer",
+ "app.localeSelectorModalTitle": "Cambiar idioma",
+ "appContext.newReleaseAvailable": "Hay una nueva versión disponible, consulte la pestaña de versión",
+ "PresetOnline.errorLoadingPresets": "No se pueden cargar presets",
+ "PresetOnline.retryLoadingPresetListBtn": "Reintentar",
+ "PresetOnline.pleaseCheckInternetConnection": "Verifique su conexión a Internet",
+ "presetButtons.uploadError": "Se produjo un error al cargar el preset",
+ "presetLine.compatibility": "Compatibilidad:"
+}