diff --git a/package-lock.json b/package-lock.json index 03d3ceb..abd23cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -120,7 +120,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -1018,7 +1017,6 @@ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-7.1.0.tgz", "integrity": "sha512-fNxRUk1KhjSbnbuBxlWSnBLKLBNun52ZBTcs22H/xEEzM6Ap81ZFTQ4bZBxVQGQgVY0xugKGoRcCbaKjLQ3XZA==", "license": "MIT", - "peer": true, "dependencies": { "@fortawesome/fontawesome-common-types": "7.1.0" }, @@ -3852,7 +3850,6 @@ "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -3862,7 +3859,6 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.5.tgz", "integrity": "sha512-keKxkZMqnDicuvFoJbzrhbtdLSPhj/rZThDlKWCDbgXmUg0rEUFtRssDXKYmtXluZlIqiC5VqkCgRwzuyLHKHw==", "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -3873,7 +3869,6 @@ "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", "devOptional": true, "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "^19.2.0" } @@ -3941,7 +3936,6 @@ "integrity": "sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.46.4", "@typescript-eslint/types": "8.46.4", @@ -4200,7 +4194,6 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "devOptional": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4357,7 +4350,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", @@ -4800,8 +4792,7 @@ "version": "8.6.0", "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/embla-carousel-react": { "version": "8.6.0", @@ -4961,7 +4952,6 @@ "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -5601,7 +5591,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.27.6" }, @@ -6538,7 +6527,6 @@ "version": "10.27.2", "resolved": "https://registry.npmjs.org/preact/-/preact-10.27.2.tgz", "integrity": "sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -6822,7 +6810,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -6853,7 +6840,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -6896,7 +6882,6 @@ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.66.1.tgz", "integrity": "sha512-2KnjpgG2Rhbi+CIiIBQQ9Df6sMGH5ExNyFl4Hw9qO7pIqMBR8Bvu9RQyjl3JM4vehzCh9soiNUM/xYMswb2EiA==", "license": "MIT", - "peer": true, "engines": { "node": ">=18.0.0" }, @@ -7035,7 +7020,6 @@ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.9.6.tgz", "integrity": "sha512-2MkC2XSXq6HjGcihnx1s0DBWQETI4mlis4Ux7YTLvP67xnGxCvq+BcCQSO81qQHVUTM1V53tl4iVVaY5sReCOA==", "license": "MIT", - "peer": true, "dependencies": { "react-router": "7.9.6" }, @@ -7278,7 +7262,6 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.2.tgz", "integrity": "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==", "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -7537,8 +7520,7 @@ "version": "4.1.17", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.17.tgz", "integrity": "sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/tapable": { "version": "2.3.0", @@ -7606,7 +7588,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -7656,8 +7637,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true + "license": "0BSD" }, "node_modules/tsx": { "version": "4.20.6", @@ -7706,7 +7686,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -7900,7 +7879,6 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz", "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -7992,7 +7970,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -8065,7 +8042,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/src/layouts/panel/sidebar/user/language-selector.tsx b/src/layouts/panel/sidebar/user/language-selector.tsx index 78a2192..264657f 100644 --- a/src/layouts/panel/sidebar/user/language-selector.tsx +++ b/src/layouts/panel/sidebar/user/language-selector.tsx @@ -44,6 +44,12 @@ export function SidebarLanguageSelector() { Deutsch + + + 馃嚜馃嚫 + Espa帽ol + + diff --git a/src/locales/i18n.ts b/src/locales/i18n.ts index c5cf147..c7cd742 100644 --- a/src/locales/i18n.ts +++ b/src/locales/i18n.ts @@ -3,6 +3,8 @@ import LanguageDetector from "i18next-browser-languagedetector"; import {initReactI18next} from "react-i18next"; import en_US from "./lang/en_US"; import de_DE from "./lang/de_DE"; +import es_ES from "./lang/es_ES"; + const defaultLng = localStorage.getItem("i18nextLng") || "en_US"; document.documentElement.lang = defaultLng; @@ -20,6 +22,7 @@ i18n resources: { en_US: {translation: en_US}, de_DE: {translation: de_DE}, + es_ES: {translation: es_ES}, }, }); diff --git a/src/locales/lang/es_ES/es_ES.json b/src/locales/lang/es_ES/es_ES.json new file mode 100644 index 0000000..ada5f6a --- /dev/null +++ b/src/locales/lang/es_ES/es_ES.json @@ -0,0 +1,86 @@ +{ + "error": { + "return": "Volver al sitio web", + "403": { + "title": "Acceso denegado", + "description": "No tienes permiso para acceder a este recurso." + }, + "404": { + "title": "隆Ups! P谩gina no encontrada", + "description": "La p谩gina que buscas no existe o ha sido movida." + }, + "500": { + "title": "隆Error interno del servidor!", + "description": "Por favor, disculpa las molestias." + } + }, + "authentication": { + "login": { + "email": "Direcci贸n de correo electr贸nico", + "email.missing": "Por favor introduce una direcci贸n de correo electr贸nico", + "password": "Contrase帽a", + "password.missing": "Por favor introduce una contrase帽a", + "password.forgot": "驴Olvidaste tu contrase帽a?", + "remember": "Mantener sesi贸n iniciada", + "submit": "INICIAR SESI脫N", + "successful": "Has iniciado sesi贸n correctamente", + "failed": "Nombre de usuario o contrase帽a incorrectos." + } + }, + "panel": { + "sidebar": { + "cluster": "Cl煤ster", + "clusters": "Cl煤steres", + "cluster.add": "Agregar cl煤ster", + "overview": "Resumen", + "nodes": "Nodos", + "workload": "Carga de trabajo", + "events": "Eventos", + "units": "Unidades", + "pods": "Pods", + "deployments": "Deployments", + "daemon.sets": "Daemon Sets", + "replica.sets": "Replica Sets", + "stateful.sets": "Stateful Sets", + "jobs": "Jobs", + "cron.jobs": "Cron Jobs", + "config": "Configuraci贸n", + "config.maps": "Config maps", + "secrets": "Secrets", + "network": "Red", + "services": "Servicios", + "storage": "Almacenamiento", + "pv": "PV", + "pvc": "PVC", + "security": "Seguridad", + "updates": "Actualizaciones", + "audits": "Auditor铆as", + "settings": "Configuraci贸n", + "language": "Idioma", + "theme": "Apariencia", + "theme.dark": "Oscuro", + "theme.light": "Claro", + "theme.system": "Sistema", + "logout": "Cerrar sesi贸n" + }, + "header": { + "search": { + "placeholder": "Buscar...", + "ctrl": "CTRL", + "empty": "No se encontraron resultados.", + "popup": { + "placeholder": "Escribe un comando o busca...", + "heading": "Navegaci贸n", + "navigate": "para navegar", + "select": "para seleccionar", + "close": "para cerrar" + } + } + }, + "page": { + "overview": { + "title": "Resumen" + } + } + } +} diff --git a/src/locales/lang/es_ES/index.ts b/src/locales/lang/es_ES/index.ts new file mode 100644 index 0000000..13f0cda --- /dev/null +++ b/src/locales/lang/es_ES/index.ts @@ -0,0 +1,5 @@ +import es_ES from "./es_ES.json"; + +export default { + ...es_ES, +}; \ No newline at end of file