diff --git a/README-es.md b/README-es.md
new file mode 100644
index 00000000..29b0eed3
--- /dev/null
+++ b/README-es.md
@@ -0,0 +1,206 @@
+
+
+
+
+
+
+
+ Inteligencia para Kubernetes
+
+
+
+ 🎮 Demo en Vivo •
+ 🌐 Sitio Web •
+ ⚡️ Inicio Rápido •
+ 📚 Documentación •
+ 💬 Discusiones
+ [English]
+ [中文]
+ [Português]
+ [日本語]
+ [Español]
+ [Français]
+
+
+[](https://github.com/KusionStack/karpor/releases)
+[](https://goreportcard.com/report/github.com/KusionStack/karpor)
+[](https://coveralls.io/github/KusionStack/karpor)
+[](https://pkg.go.dev/github.com/KusionStack/karpor)
+[](https://github.com/KusionStack/karpor/blob/main/LICENSE)
+[](https://artifacthub.io/packages/helm/kusionstack/karpor)
+[](https://landscape.cncf.io/?item=provisioning--automation-configuration--kusionstack)
+[](https://app.fossa.com/projects/git%2Bgithub.com%2FKusionStack%2Fkarpor?ref=badge_shield)
+[](https://gitpod.io/#https://github.com/KusionStack/karpor)
+[](https://medium.com/@kusionstack)
+[](https://cloud-native.slack.com/archives/C07U0395UG0)
+
+

+
+
+
+## ¿Qué es Karpor?
+
+Karpor es Inteligencia para Kubernetes. Proporciona **Búsqueda** avanzada, **Insights** e **IA** para Kubernetes. Es esencialmente una **Herramienta de Visualización de Kubernetes**. Con Karpor, puedes obtener una visibilidad crucial de tus clústeres de Kubernetes en cualquier nube.
+
+¡Esperamos convertirnos en un proyecto de código abierto **pequeño y hermoso, neutral con respecto al proveedor, amigable para desarrolladores y dirigido por la comunidad**!
+
+**Estado Actual**: Estamos iterando [v0.7.0](https://github.com/KusionStack/karpor/issues/723), bienvenido a unirte a la [discusión](https://github.com/KusionStack/karpor/discussions/737).
+
+https://github.com/user-attachments/assets/44ecb3b6-e76b-4003-9546-25c6b5f8b949
+
+## ¿Por qué Karpor?
+
+🔍 Búsqueda
+
+
+
+
+ Sincronización Automática Sincroniza automáticamente tus recursos en todos los clústeres gestionados por la plataforma multi-nube.
+ Consultas potentes y flexibles Recupera y localiza eficazmente los recursos en múltiples clústeres que estás buscando de forma rápida y sencilla.
+ |
+
+
+ |
+
+
+
+💡 Insights
+
+
+
+
+
+ |
+
+ Gobernanza de Cumplimiento Comprende tu estado de cumplimiento en múltiples clústeres y estándares de cumplimiento.
+ Topología de Recursos Vistas lógicas y topológicas de recursos relevantes dentro de su contexto operativo.
+ Optimización de Costos Próximamente.
+ |
+
+
+
+✨ IA
+
+
+
+
+ Operaciones en Lenguaje Natural Interactúa con Kubernetes usando lenguaje natural para operaciones más intuitivas.
+ Respuestas IA Contextuales Obtén asistencia inteligente y contextual que entiende tus necesidades.
+ AIOps para Kubernetes Automatiza y optimiza la gestión de Kubernetes con insights potenciados por IA.
+ |
+
+
+ |
+
+
+
+
+
+## 🌈 Nuestra Visión
+
+La creciente complejidad del ecosistema de Kubernetes es una tendencia innegable que se está volviendo cada vez más difícil de gestionar. Esta complejidad no solo implica una mayor carga en las operaciones y el mantenimiento, sino que también ralentiza la adopción de nuevas tecnologías por parte de los usuarios, limitando su capacidad para aprovechar plenamente el potencial de Kubernetes.
+
+En general, deseamos que Karpor se centre en la búsqueda, los insights y la IA, para **romper el laberinto cada vez más complejo de Kubernetes**, logrando la siguiente **propuesta de valor**:
+
+
+
+## ⚙️ Instalación
+
+### Instalar con Helm
+
+Karpor se puede instalar fácilmente con helm v3.5+, que es una herramienta de línea de comandos simple y puedes obtenerla [aquí](https://helm.sh/docs/intro/install/).
+
+Si estás interesado, también puedes ver directamente el [Repositorio de Charts de Karpor](https://github.com/KusionStack/charts).
+
+```bash
+$ helm repo add kusionstack https://kusionstack.github.io/charts
+$ helm repo update
+$ helm install karpor kusionstack/karpor
+```
+
+Para más información sobre la instalación, consulta la [Guía de Instalación](https://kusionstack.io/karpor/getting-started/installation) en el sitio web oficial.
+
+## 📖 Documentación
+
+La documentación detallada está disponible en el [Sitio Web de Karpor](https://kusionstack.io/karpor).
+
+## 🤝 Cómo contribuir
+
+Karpor todavía está en la etapa inicial, y hay muchas capacidades que necesitan ser completadas, por lo que damos la bienvenida a todos a participar en la construcción con nosotros.
+
+- Si no sabes cómo **comenzar a contribuir**, puedes leer la [Guía de Contribución](https://kusionstack.io/karpor/developer-guide/contribution-guide), conocerás todos los detalles.
+- Si no sabes **por qué problemas empezar**, hemos preparado una [Lista de tareas de la comunidad | Lista de tareas para principiantes 🎖︎](https://github.com/KusionStack/karpor/issues/463), puedes elegir el problema que te guste.
+- Si tienes **cualquier pregunta**, por favor [Envía un Issue](https://github.com/KusionStack/karpor/issues) o [Publica en las discusiones](https://github.com/KusionStack/karpor/discussions/new/choose), responderemos lo antes posible.
+
+## 🎖︎ Contribuidores
+
+¡Gracias a estas maravillosas personas! ¡Ven y [únete a nosotros](https://kusionstack.io/karpor/developer-guide/contribution-guide)!
+
+
+
+
+
+
+
+
+
+
+
+## ☎️ Contacto
+
+Si tienes alguna pregunta, no dudes en contactarnos de las siguientes maneras:
+
+- **Canales de Slack:**
+ - [#kusion](https://cloud-native.slack.com/archives/C07U0395UG0) - Discusiones técnicas sobre Karpor y KusionStack
+ - [#kusion-general](https://cloud-native.slack.com/archives/C07T4LBDB7G) - Discusiones generales, anuncios y actualizaciones de la comunidad
+- [Grupo de DingTalk](https://page.dingtalk.com/wow/dingtalk/act/en-home): `42753001` (Chino)
+- Grupo de WeChat (Chino): Añade al asistente de WeChat para llevarte al grupo de usuarios.
+
+
+
+
+## Licencia
+[](https://app.fossa.com/projects/git%2Bgithub.com%2FKusionStack%2Fkarpor?ref=badge_large)
diff --git a/README-fr.md b/README-fr.md
new file mode 100644
index 00000000..e1cb2328
--- /dev/null
+++ b/README-fr.md
@@ -0,0 +1,206 @@
+
+
+
+
+
+
+
+ Intelligence pour Kubernetes
+
+
+
+ 🎮 Démo en Direct •
+ 🌐 Site Web •
+ ⚡️ Démarrage Rapide •
+ 📚 Documentation •
+ 💬 Discussions
+ [English]
+ [中文]
+ [Português]
+ [日本語]
+ [Español]
+ [Français]
+
+
+[](https://github.com/KusionStack/karpor/releases)
+[](https://goreportcard.com/report/github.com/KusionStack/karpor)
+[](https://coveralls.io/github/KusionStack/karpor)
+[](https://pkg.go.dev/github.com/KusionStack/karpor)
+[](https://github.com/KusionStack/karpor/blob/main/LICENSE)
+[](https://artifacthub.io/packages/helm/kusionstack/karpor)
+[](https://landscape.cncf.io/?item=provisioning--automation-configuration--kusionstack)
+[](https://app.fossa.com/projects/git%2Bgithub.com%2FKusionStack%2Fkarpor?ref=badge_shield)
+[](https://gitpod.io/#https://github.com/KusionStack/karpor)
+[](https://medium.com/@kusionstack)
+[](https://cloud-native.slack.com/archives/C07U0395UG0)
+
+

+
+
+
+## Qu'est-ce que Karpor ?
+
+Karpor est l'Intelligence pour Kubernetes. Il apporte une **Recherche** avancée, des **Insights** et l'**IA** à Kubernetes. C'est essentiellement un **Outil de Visualisation Kubernetes**. Avec Karpor, vous pouvez obtenir une visibilité cruciale sur vos clusters Kubernetes à travers n'importe quel cloud.
+
+Nous espérons devenir un projet open-source **petit et beau, neutre vis-à-vis des fournisseurs, convivial pour les développeurs et dirigé par la communauté** !
+
+**État Actuel**: Nous itérons sur [v0.7.0](https://github.com/KusionStack/karpor/issues/723), bienvenue pour rejoindre la [discussion](https://github.com/KusionStack/karpor/discussions/737).
+
+https://github.com/user-attachments/assets/44ecb3b6-e76b-4003-9546-25c6b5f8b949
+
+## Pourquoi Karpor ?
+
+🔍 Recherche
+
+
+
+
+ Synchronisation Automatique Synchronise automatiquement vos ressources à travers tous les clusters gérés par la plateforme multi-cloud.
+ Requêtes puissantes et flexibles Récupère et localise efficacement les ressources dans plusieurs clusters que vous recherchez de manière rapide et simple.
+ |
+
+
+ |
+
+
+
+💡 Insights
+
+
+
+
+
+ |
+
+ Gouvernance de la Conformité Comprenez votre état de conformité à travers plusieurs clusters et normes de conformité.
+ Topologie des Ressources Vues logiques et topologiques des ressources pertinentes dans leur contexte opérationnel.
+ Optimisation des Coûts Bientôt disponible.
+ |
+
+
+
+✨ IA
+
+
+
+
+ Opérations en Langage Naturel Interagissez avec Kubernetes en utilisant le langage naturel pour des opérations plus intuitives.
+ Réponses IA Contextuelles Obtenez une assistance intelligente et contextuelle qui comprend vos besoins.
+ AIOps pour Kubernetes Automatisez et optimisez la gestion de Kubernetes avec des insights alimentés par l'IA.
+ |
+
+
+ |
+
+
+
+
+
+## 🌈 Notre Vision
+
+La complexité croissante de l'écosystème Kubernetes est une tendance indéniable qui devient de plus en plus difficile à gérer. Cette complexité n'entraîne pas seulement une charge plus lourde sur les opérations et la maintenance, mais ralentit également l'adoption de nouvelles technologies par les utilisateurs, limitant leur capacité à exploiter pleinement le potentiel de Kubernetes.
+
+En général, nous souhaitons que Karpor se concentre sur la recherche, les insights et l'IA, pour **percer le labyrinthe de plus en plus complexe de Kubernetes**, atteignant la **proposition de valeur** suivante :
+
+
+
+## ⚙️ Installation
+
+### Installer avec Helm
+
+Karpor peut être simplement installé avec helm v3.5+, qui est un outil en ligne de commande simple et vous pouvez l'obtenir [ici](https://helm.sh/docs/intro/install/).
+
+Si vous êtes intéressé, vous pouvez également consulter directement le [Dépôt de Charts Karpor](https://github.com/KusionStack/charts).
+
+```bash
+$ helm repo add kusionstack https://kusionstack.github.io/charts
+$ helm repo update
+$ helm install karpor kusionstack/karpor
+```
+
+Pour plus d'informations sur l'installation, veuillez consulter le [Guide d'Installation](https://kusionstack.io/karpor/getting-started/installation) sur le site web officiel.
+
+## 📖 Documentation
+
+La documentation détaillée est disponible sur le [Site Web de Karpor](https://kusionstack.io/karpor).
+
+## 🤝 Comment contribuer
+
+Karpor est encore au stade initial, et il y a de nombreuses capacités qui doivent être complétées, donc nous accueillons tous ceux qui souhaitent participer à la construction avec nous.
+
+- Si vous ne savez pas comment **commencer à contribuer**, vous pouvez lire le [Guide de Contribution](https://kusionstack.io/karpor/developer-guide/contribution-guide), vous connaîtrez tous les détails.
+- Si vous ne savez pas **par quels problèmes commencer**, nous avons préparé une [Liste des tâches communautaires | Liste des tâches pour débutants 🎖︎](https://github.com/KusionStack/karpor/issues/463), vous pouvez choisir le problème qui vous plaît.
+- Si vous avez **des questions**, veuillez [Soumettre un Issue](https://github.com/KusionStack/karpor/issues) ou [Publier dans les discussions](https://github.com/KusionStack/karpor/discussions/new/choose), nous répondrons dès que possible.
+
+## 🎖︎ Contributeurs
+
+Merci à ces merveilleuses personnes ! Venez [nous rejoindre](https://kusionstack.io/karpor/developer-guide/contribution-guide) !
+
+
+
+
+
+
+
+
+
+
+
+## ☎️ Contact
+
+Si vous avez des questions, n'hésitez pas à nous contacter de la manière suivante :
+
+- **Canaux Slack :**
+ - [#kusion](https://cloud-native.slack.com/archives/C07U0395UG0) - Discussions techniques sur Karpor et KusionStack
+ - [#kusion-general](https://cloud-native.slack.com/archives/C07T4LBDB7G) - Discussions générales, annonces et mises à jour de la communauté
+- [Groupe DingTalk](https://page.dingtalk.com/wow/dingtalk/act/en-home) : `42753001` (Chinois)
+- Groupe WeChat (Chinois) : Ajoutez l'assistant WeChat pour vous faire entrer dans le groupe d'utilisateurs.
+
+
+
+
+## Licence
+[](https://app.fossa.com/projects/git%2Bgithub.com%2FKusionStack%2Fkarpor?ref=badge_large)
diff --git a/README-ja.md b/README-ja.md
index 05f428aa..0f849fc7 100644
--- a/README-ja.md
+++ b/README-ja.md
@@ -18,6 +18,8 @@
[中文]
[Português]
[日本語]
+ [Español]
+ [Français]
[](https://github.com/KusionStack/karpor/releases)
diff --git a/README-pt.md b/README-pt.md
index d802f3b3..00656a71 100644
--- a/README-pt.md
+++ b/README-pt.md
@@ -17,8 +17,10 @@
📚 Documentação
[English]
[中文]
- [日本語]
[Português]
+ [日本語]
+ [Español]
+ [Français]
[](https://github.com/KusionStack/karpor/releases)
@@ -39,7 +41,7 @@
## O que é o Karpor?
-O Karpor é um **Explorador de Kubernetes** Moderno focado em **Pesquisa**, **Insights** e **Inteligência**. Ele tem palavras-chave como `auto-hospedado`, `não invasivo`, `somente leitura`, `em conforme com a segurança`, `suporte multi-nuvem/multi-cluster`, `visualização lógica personalizada`, e pode servir como um **Plano de Dados Kubernetes** para reduzir o custo de descoberta e compreensão dos recursos do Kubernetes.
+O Karpor é um **Explorador de Kubernetes** Moderno focado em **Pesquisa**, **Insights** e **Inteligência**. Ele tem palavras-chave como `auto-hospedado`, `não invasivo`, `somente leitura`, `em conforme com a segurança`, `suporte multi-nuvem/multi-cluster`, `visualização lógica personalizada`, e pode servir como um **Plano de Dados Kubernetes** para reduzir o custo de descoberta e compreensão dos recursos do Kubernetes.
https://github.com/user-attachments/assets/44ecb3b6-e76b-4003-9546-25c6b5f8b949
diff --git a/README-zh.md b/README-zh.md
index 2291ff3b..3903cd18 100644
--- a/README-zh.md
+++ b/README-zh.md
@@ -18,6 +18,8 @@
[中文]
[Português]
[日本語]
+ [Español]
+ [Français]
[](https://github.com/KusionStack/karpor/releases)
diff --git a/README.md b/README.md
index f185f4d7..28d8d20e 100644
--- a/README.md
+++ b/README.md
@@ -18,6 +18,8 @@
[中文]
[Português]
[日本語]
+ [Español]
+ [Français]
[](https://github.com/KusionStack/karpor/releases)
@@ -38,7 +40,7 @@
## What is Karpor?
-Karpor is Intelligence for Kubernetes. It brings advanced **Search**, **Insight** and **AI** to Kubernetes. It is essentially a **Kubernetes Visualization Tool**. With Karpor, you can gain crucial visibility into your Kubernetes clusters across any clouds.
+Karpor is Intelligence for Kubernetes. It brings advanced **Search**, **Insight** and **AI** to Kubernetes. It is essentially a **Kubernetes Visualization Tool**. With Karpor, you can gain crucial visibility into your Kubernetes clusters across any clouds.
We hope to become a **small and beautiful, vendor-neutral, developer-friendly, community-driven** open-source project!
@@ -127,7 +129,7 @@ Detailed documentation is available at [Karpor Website](https://kusionstack.io/k
Karpor is still in the initial stage, and there are many capabilities that need to be made up, so we welcome everyone to participate in construction with us.
- If you don't know how to **start contributing**, you can read the [Contribution Guide](https://kusionstack.io/karpor/developer-guide/contribution-guide), you will know all the details.
-- If you don’t know **what issues start**, we have prepared a [Community tasks | 新手任务清单 🎖︎](https://github.com/KusionStack/karpor/issues/463), you can choose the issue you like.
+- If you don't know **what issues start**, we have prepared a [Community tasks | 新手任务清单 🎖︎](https://github.com/KusionStack/karpor/issues/463), you can choose the issue you like.
- If you have **any questions**, please [Submit the Issue](https://github.com/KusionStack/karpor/issues) or [Post on the discussions](https://github.com/KusionStack/karpor/discussions/new/choose), we will answer as soon as possible.
## 🎖︎ Contributors
diff --git a/SECURITY-es.md b/SECURITY-es.md
new file mode 100644
index 00000000..5e4af351
--- /dev/null
+++ b/SECURITY-es.md
@@ -0,0 +1,20 @@
+# Política de Seguridad
+
+## Reportar una Vulnerabilidad
+
+Si ha encontrado un problema de seguridad que le gustaría divulgar confidencialmente, envíe un correo electrónico a kusionstack@gmail.commailto:kusionstack@gmail.com
+
+### ¿Quién lee los correos enviados a kusionstack@gmail.com?
+
+Solo un grupo restringido y cuidadosamente seleccionado de mantenedores de Karpor tendrá acceso al material enviado a la dirección kusionstack@gmail.commailto:kusionstack@gmail.com.
+Ningún usuario externo puede suscribirse a esta lista.
+
+### Qué enviar a kusionstack@gmail.com
+
+Por favor, proporcione tanta información como sea posible sobre su sistema y el problema al contactar con la lista.
+
+## Cómo Respondemos
+
+Los correos enviados a kusionstack@gmail.commailto:kusionstack@gmail.com son leídos y confirmados con una respuesta no automatizada dentro de tres días hábiles.
+Para problemas que son complicados y requieren atención significativa,
+abriremos una investigación y le proporcionaremos un mecanismo para verificar el estado de nuestro progreso en cualquier momento.
\ No newline at end of file
diff --git a/SECURITY-fr.md b/SECURITY-fr.md
new file mode 100644
index 00000000..04fd145c
--- /dev/null
+++ b/SECURITY-fr.md
@@ -0,0 +1,20 @@
+# Politique de Sécurité
+
+## Signaler une Vulnérabilité
+
+Si vous avez trouvé un problème de sécurité que vous souhaitez divulguer confidentiellement, envoyez un e-mail à kusionstack@gmail.commailto:kusionstack@gmail.com
+
+### Qui lit les e-mails envoyés à kusionstack@gmail.com ?
+
+Seul un groupe restreint et soigneusement choisi de mainteneurs de Karpor aura accès au matériel envoyé à l'adresse kusionstack@gmail.commailto:kusionstack@gmail.com.
+Aucun utilisateur externe ne peut s'abonner à cette liste.
+
+### Que envoyer à kusionstack@gmail.com
+
+Veuillez fournir autant d'informations que possible sur votre système et le problème lors du contact avec la liste.
+
+## Comment Nous Répondons
+
+Les e-mails envoyés à kusionstack@gmail.commailto:kusionstack@gmail.com sont lus et accusés de réception avec une réponse non automatisée dans les trois jours ouvrables.
+Pour les problèmes qui sont compliqués et nécessitent une attention significative,
+nous ouvrirons une enquête et vous fournirons un mécanisme pour vérifier l'état de nos progrès à tout moment.
\ No newline at end of file
diff --git a/SECURITY-zh.md b/SECURITY-zh.md
new file mode 100644
index 00000000..782e1511
--- /dev/null
+++ b/SECURITY-zh.md
@@ -0,0 +1,20 @@
+# 安全政策
+
+## 报告漏洞
+
+如果您发现了安全漏洞并希望保密披露,请发送邮件至 kusionstack@gmail.commailto:kusionstack@gmail.com
+
+### 谁可以阅读发送到 kusionstack@gmail.com 的邮件?
+
+只有经过严格筛选的 Karpor 维护者小组才能访问发送到 kusionstack@gmail.commailto:kusionstack@gmail.com 地址的材料。
+外部用户无法订阅此列表。
+
+### 发送到 kusionstack@gmail.com 的内容
+
+联系列表时,请尽可能提供有关您的系统和问题的详细信息。
+
+## 我们的响应方式
+
+发送到 kusionstack@gmail.commailto:kusionstack@gmail.com 的邮件将在三个工作日内被阅读并得到非自动回复。
+对于复杂且需要大量关注的问题,
+我们将展开调查,并为您提供随时查看我们进度的机制。
\ No newline at end of file
diff --git a/ui/src/i18n.js b/ui/src/i18n.js
index 133d1aeb..d94c2654 100644
--- a/ui/src/i18n.js
+++ b/ui/src/i18n.js
@@ -1,29 +1,14 @@
import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
import LanguageDetector from 'i18next-browser-languagedetector'
-import en from './locales/en.json'
-import zh from './locales/zh.json'
-import de from './locales/de.json'
-import pt from './locales/pt.json'
-import ko from './locales/ko.json'
-
-const resources = {
- en: {
- translation: en,
- },
- zh: {
- translation: zh,
- },
- de: {
- translation: de,
- },
- pt: {
- translation: pt,
- },
- ko: {
- translation: ko,
- },
-}
+import enTranslation from './locales/en.json'
+import zhTranslation from './locales/zh.json'
+import deTranslation from './locales/de.json'
+import ptTranslation from './locales/pt.json'
+import koTranslation from './locales/ko.json'
+import jaTranslation from './locales/ja.json'
+import frTranslation from './locales/fr.json'
+import esTranslation from './locales/es.json'
const currentLocale = localStorage.getItem('lang') || 'en'
@@ -31,7 +16,32 @@ i18n
.use(LanguageDetector)
.use(initReactI18next)
.init({
- resources,
+ resources: {
+ en: {
+ translation: enTranslation,
+ },
+ zh: {
+ translation: zhTranslation,
+ },
+ de: {
+ translation: deTranslation,
+ },
+ pt: {
+ translation: ptTranslation,
+ },
+ ko: {
+ translation: koTranslation,
+ },
+ ja: {
+ translation: jaTranslation,
+ },
+ fr: {
+ translation: frTranslation,
+ },
+ es: {
+ translation: esTranslation,
+ },
+ },
fallbackLng: currentLocale,
lng: currentLocale,
debug: true,
diff --git a/ui/src/index.tsx b/ui/src/index.tsx
index 9eb5a73c..aac6e672 100644
--- a/ui/src/index.tsx
+++ b/ui/src/index.tsx
@@ -10,6 +10,9 @@ import enUS from 'antd/locale/en_US'
import deDE from 'antd/locale/de_DE'
import ptBR from 'antd/locale/pt_BR'
import koKR from 'antd/locale/ko_KR'
+import jaJP from 'antd/locale/ja_JP'
+import frFR from 'antd/locale/fr_FR'
+import esES from 'antd/locale/es_ES'
import { BrowserRouter } from 'react-router-dom'
import WrappedRoutes from '@/router'
import store from '@/store'
@@ -36,6 +39,9 @@ function App() {
de: deDE,
pt: ptBR,
ko: koKR,
+ ja: jaJP,
+ fr: frFR,
+ es: esES,
}
return (
diff --git a/ui/src/locales/es.json b/ui/src/locales/es.json
new file mode 100644
index 00000000..aa75a4bc
--- /dev/null
+++ b/ui/src/locales/es.json
@@ -0,0 +1,224 @@
+{
+ "Help": "Ayuda",
+ "ReadOnlyMode": "Modo de Solo Lectura",
+ "Search": "Buscar",
+ "Cluster": "Cluster",
+ "Insight": "Visión General",
+ "KeywordSearch": "Búsqueda por Palabras Clave",
+ "SQLSearch": "Búsqueda por SQL",
+ "SearchUsingSQL": "Buscar usando SQL",
+ "PopularQueries": "Consultas Populares",
+ "ClusterManagement": "Gestión de Clusters",
+ "AllClusters": "Todos los Clusters",
+ "HealthyClusters": "Clusters Saludables",
+ "UnhealthyClusters": "Clusters No Saludables",
+ "SortByName": "Ordenar por Nombre",
+ "SortByTime": "Ordenar por Tiempo",
+ "RegisterCluster": "Registrar Cluster",
+ "Edit": "Editar",
+ "RotateCertificate": "Rotar Certificado",
+ "Delete": "Eliminar",
+ "AboutInSearchResult": "Acerca de",
+ "SearchResult": "Resultados de Búsqueda",
+ "AllIssues": "Todos los Problemas",
+ "HighRisk": "Alto",
+ "MediumRisk": "Medio",
+ "LowRisk": "Bajo",
+ "Rescan": "Reescanear",
+ "CheckAllIssues": "Verificar Todos los Problemas",
+ "ResourceTopology": "Topología de Recursos",
+ "LogAggregator": "Registros",
+ "LogAggregator.SelectContainer": "Seleccionar Contenedor",
+ "LogAggregator.ResumeLogs": "Reanudar registros",
+ "LogAggregator.PauseLogs": "Pausar registros",
+ "LogAggregator.ClearLogs": "Limpiar registros",
+ "LogAggregator.DiagnoseLogs": "Diagnóstico IA",
+ "LogAggregator.Connected": "Conectado",
+ "LogAggregator.Disconnected": "Desconectado",
+ "LogAggregator.ConnectedTip": "Conectado al contenedor {{container}}",
+ "LogAggregator.DisconnectedTip": "Conexión perdida. Reconectando...",
+ "LogAggregator.DiagnosisResult": "Resultado del Diagnóstico IA",
+ "LogAggregator.PreparingDiagnosis": "Analizando...",
+ "LogAggregator.DiagnosisError": "Error en el diagnóstico",
+ "LogAggregator.TryAgainLater": "Por favor, intente más tarde",
+ "LogAggregator.DiagnosisConnectionError": "Error de conexión al diagnóstico",
+ "LogAggregator.FailedToStartDiagnosis": "Error al iniciar el diagnóstico",
+ "LogAggregator.FailedToDiagnoseLogs": "Error al diagnosticar los registros",
+ "LogAggregator.StopDiagnosis": "Detener diagnóstico",
+ "LogAggregator.DownloadLogs": "Descargar registros",
+ "LogAggregator.DownloadError": "Error al descargar registros",
+ "LogAggregator.Settings": "Configuración de registros",
+ "LogAggregator.Since": "Mostrar registros desde",
+ "LogAggregator.SinceTime": "Mostrar registros desde la hora",
+ "LogAggregator.TailLines": "Número de líneas a mostrar",
+ "LogAggregator.ShowTimestamps": "Mostrar marcas de tiempo",
+ "LogAggregator.NoLogsSelected": "No hay registros seleccionados",
+ "LogAggregator.SearchPlaceholder": "Buscar en registros...",
+ "LogAggregator.SearchModeHighlight": "Modo Resaltado",
+ "LogAggregator.SearchModeFilter": "Modo Filtro",
+ "LogAggregator.FullScreen": "Pantalla Completa",
+ "EventAggregator": "Eventos",
+ "EventAggregator.Type": "Tipo de Evento",
+ "EventAggregator.Normal": "Normal",
+ "EventAggregator.Warning": "Advertencia",
+ "EventAggregator.NoEvents": "Sin Eventos",
+ "EventAggregator.SearchEvents": "Buscar eventos...",
+ "EventAggregator.ColumnType": "Tipo",
+ "EventAggregator.ColumnReason": "Razón",
+ "EventAggregator.ColumnMessage": "Mensaje",
+ "EventAggregator.ColumnTimes": "Veces",
+ "EventAggregator.ColumnFirstSeen": "Primera Vez",
+ "EventAggregator.ColumnLastSeen": "Última Vez",
+ "EventAggregator.Diagnose": "Diagnóstico IA",
+ "EventAggregator.DiagnosisResult": "Resultado del Diagnóstico IA",
+ "EventAggregator.StopDiagnosis": "Detener Diagnóstico",
+ "EventAggregator.DiagnosisInProgress": "Analizando...",
+ "EventAggregator.DiagnosisFailed": "Diagnóstico Fallido",
+ "EventAggregator.TryAgainLater": "Por favor, intente más tarde",
+ "EventAggregator.DiagnosisConnectionError": "Error de conexión al diagnóstico",
+ "Name": "Nombre",
+ "Times": "Veces",
+ "FilterByName": "Filtrar por Nombre",
+ "SelectResourcesAboveToSeeDetailsHere": "Seleccione recursos arriba para ver detalles aquí",
+ "Issues": "Problemas",
+ "Critical": "Crítico",
+ "High": "Alto",
+ "Medium": "Medio",
+ "Low": "Bajo",
+ "Safe": "Seguro",
+ "IssueSource": "Fuente del Problema",
+ "NumberOfOccurrences": "Número de Ocurrencias",
+ "Description": "Descripción",
+ "RelatedResources": "Recursos Relacionados",
+ "More": "Más",
+ "Less": "Ocultar",
+ "Capacity": "Capacidad",
+ "Memory": "Memoria",
+ "MemoryCapacity": "Capacidad de Memoria",
+ "Version": "Versión",
+ "SorryThePageYouVisitedDoesNotExist": "Lo sentimos, la página que visitó no existe",
+ "BackToHome": "Volver al Inicio",
+ "Cancel": "Cancelar",
+ "Submit": "Enviar",
+ "OK": "OK",
+ "DisplayName": "Nombre para Mostrar",
+ "ClusterName": "Nombre del Cluster",
+ "ClusterDetail": "Detalles del Cluster",
+ "DataSyncConfiguration": "Configuración de Sincronización de Datos",
+ "VerifiedSuccessfullyAndSubmitted": "Verificado y enviado exitosamente",
+ "VerificationSuccessfulButSubmissionFailed": "Verificación exitosa pero envío fallido",
+ "KubeConfigDoesNotMeetTheRequirements": "El archivo KubeConfig no cumple con los requisitos. Por favor, suba un certificado válido",
+ "UploadSuccessful": "Subida exitosa",
+ "TheFileMustBeIn": "El archivo debe estar en formato",
+ "TheKubeConfigFileCannotBeEmpty": "El archivo KubeConfig no puede estar vacío",
+ "Upload": "Subir",
+ "ConfigurationFile": "Archivo de Configuración",
+ "VerifyAndSubmit": "Verificar y Enviar",
+ "ExistingConfigurations": "Configuraciones Existentes",
+ "NewConfiguration": "Nuevas Configuraciones",
+ "PleaseUploadNewKubeConfigFile": "Por favor, suba un nuevo archivo KubeConfig",
+ "SubmitAnd3STOClusterPage": "Verificado y enviado exitosamente. Redirigiendo a la página de gestión de clusters en 3 segundos",
+ "SubmitAndValidate": "Validando",
+ "SubmitAndUpdate": "Verificar y Actualizar",
+ "DeleteAndNoLongUpdateResources": "Después de eliminar, este cluster no será visible y sus recursos no se sincronizarán",
+ "UpdateSuccess": "Actualización exitosa",
+ "RequestFailedAndTry": "Error en la solicitud, por favor intente de nuevo",
+ "DeletedSuccess": "Eliminación exitosa",
+ "EmptyCluster": "No hay clusters registrados",
+ "ClusterRequiresKubeConfigConfigurationFileAccess": "Para registrar un nuevo cluster, haga clic en el botón de abajo y suba el archivo KubeConfig",
+ "PleaseEnterKeywords": "Por favor, ingrese palabras clave",
+ "IssuesDetail": "Detalles del Problema",
+ "Close": "Cerrar",
+ "Total": "Total",
+ "ViewIssueDetail": "Ver Detalles del Problema",
+ "Occur": "Ocurre",
+ "CollectedFrom": "Recolectado de",
+ "Tool": "Herramienta",
+ "NoIssuesFound": "No se encontraron problemas",
+ "HealthScore": "Puntuación de Salud",
+ "TriggeredTimestamp": "Marca de Tiempo Activada",
+ "Exception": "Excepción",
+ "Warning": "Advertencia",
+ "Normal": "Normal",
+ "CreateTime": "Tiempo de Creación",
+ "InDevelopment": "En Desarrollo",
+ "InputClusterName": "Ingrese el Nombre del Cluster",
+ "YAML": {
+ "NoContent": "No hay contenido para interpretar",
+ "Interpret": "Interpretación IA",
+ "InterpretResult": "Resultado de la Interpretación",
+ "InterpretInProgress": "Interpretando...",
+ "StopInterpret": "Detener Interpretación",
+ "InterpretConnectionError": "Error de conexión a la interpretación",
+ "FailedToStartInterpret": "Error al iniciar la interpretación",
+ "FailedToInterpret": "Error en la interpretación",
+ "TabName": "YAML"
+ },
+ "Yesterday": "Ayer",
+ "Collapse": "Colapsar",
+ "Expand": "Expandir",
+ "Detail": "Detalle",
+ "View": "Ver",
+ "AllTags": "Todas las Etiquetas",
+ "DuplicateData": "Datos duplicados, por favor verifique",
+ "AreYouSureDeleteResourceGroupRule": "¿Está seguro de que desea eliminar esta regla de grupo de recursos?",
+ "Copy": "Copiar",
+ "CopySuccess": "Copiado exitosamente",
+ "TotalResourceGroupRules": "Total de Reglas de Grupo de Recursos",
+ "TotalResources": "Total de Recursos",
+ "ClusterCount": "Número de Clusters",
+ "UnableCreateResourceGroupInReadOnly": "No se pueden crear reglas de grupo de recursos en modo de solo lectura",
+ "PleaseEnterValidSQLStatement": "Por favor, ingrese una declaración SQL válida",
+ "NoClusterAndJumpToClusterPage": "No hay clusters conectados. Por favor, registre un cluster primero",
+ "Logout": "Cerrar Sesión",
+ "TokenCreationGuide": "El Token es necesario para acceder al Cluster Hub. Más información: [Cómo crear un Token]",
+ "LoginFailedAndCheck": "Error de inicio de sesión, por favor verifique la validez del token",
+ "UnLoginAndTokenLogin": "No ha iniciado sesión, por favor ingrese el token para iniciar sesión",
+ "LoginSuccess": "Inicio de sesión exitoso",
+ "Login": "Iniciar Sesión",
+ "LogoutSuccess": "Cierre de sesión exitoso",
+ "InputToken": "Ingrese el Token",
+ "SearchByNaturalLanguage": "Búsqueda en Lenguaje Natural",
+ "CannotBeEmpty": "No puede estar vacío",
+ "DefaultTag": "Etiqueta predeterminada",
+ "FailedToParsePodDetails": "Error al analizar los detalles del Pod",
+ "CopiedToClipboard": "Copiado al portapapeles",
+ "Metrics": {
+ "Tooltips": {
+ "NodeCount": "Número total de nodos en el cluster",
+ "ServerVersion": "Versión del servidor Kubernetes",
+ "ReadyNodes": "Número de nodos en estado Ready",
+ "Pods": "Pods actuales vs máximo",
+ "CPU": "Uso de CPU / CPU Total",
+ "Memory": "Uso de Memoria / Memoria Total",
+ "MetricsServer": "Metrics Server recopila métricas de recursos de los Kubelets"
+ }
+ },
+ "Enabled": "Habilitado",
+ "Disabled": "Deshabilitado",
+ "ExceptionList": {
+ "NoIssues": "No se encontraron problemas",
+ "NoIssuesFound": "No se encontraron problemas",
+ "InterpretConnectionError": "Error de conexión a la interpretación",
+ "FailedToInterpretLogs": "Error al interpretar los registros",
+ "Interpret": "Interpretación IA",
+ "InterpretResult": "Resultado de la Interpretación IA",
+ "StopInterpret": "Detener Interpretación",
+ "InterpretInProgress": "Analizando...",
+ "InterpretFailed": "Error en la Interpretación",
+ "TryAgainLater": "Por favor, intente más tarde",
+ "Rescan": "Reescanear",
+ "Collapse": "Colapsar",
+ "Expand": "Expandir",
+ "CheckAllIssues": "Verificar Todos los Problemas",
+ "ViewIssueDetail": "Ver Detalles del Problema",
+ "Occur": "Ocurre",
+ "Times": "veces",
+ "CollectedFrom": "Recolectado de",
+ "Tool": "Herramienta",
+ "Description": "Descripción",
+ "High": "Alto",
+ "Medium": "Medio",
+ "Low": "Bajo"
+ }
+}
\ No newline at end of file
diff --git a/ui/src/locales/fr.json b/ui/src/locales/fr.json
new file mode 100644
index 00000000..371dd9a3
--- /dev/null
+++ b/ui/src/locales/fr.json
@@ -0,0 +1,224 @@
+{
+ "Help": "Aide",
+ "ReadOnlyMode": "Mode Lecture Seule",
+ "Search": "Rechercher",
+ "Cluster": "Cluster",
+ "Insight": "Aperçu",
+ "KeywordSearch": "Recherche par Mots-clés",
+ "SQLSearch": "Recherche par SQL",
+ "SearchUsingSQL": "Rechercher avec SQL",
+ "PopularQueries": "Requêtes Populaires",
+ "ClusterManagement": "Gestion des Clusters",
+ "AllClusters": "Tous les Clusters",
+ "HealthyClusters": "Clusters Sains",
+ "UnhealthyClusters": "Clusters Non Sains",
+ "SortByName": "Trier par Nom",
+ "SortByTime": "Trier par Date",
+ "RegisterCluster": "Enregistrer un Cluster",
+ "Edit": "Modifier",
+ "RotateCertificate": "Rotation du Certificat",
+ "Delete": "Supprimer",
+ "AboutInSearchResult": "À propos",
+ "SearchResult": "Résultats de Recherche",
+ "AllIssues": "Tous les Problèmes",
+ "HighRisk": "Élevé",
+ "MediumRisk": "Moyen",
+ "LowRisk": "Faible",
+ "Rescan": "Rescanner",
+ "CheckAllIssues": "Vérifier Tous les Problèmes",
+ "ResourceTopology": "Topologie des Ressources",
+ "LogAggregator": "Journaux",
+ "LogAggregator.SelectContainer": "Sélectionner un Conteneur",
+ "LogAggregator.ResumeLogs": "Reprendre les journaux",
+ "LogAggregator.PauseLogs": "Pause des journaux",
+ "LogAggregator.ClearLogs": "Effacer les journaux",
+ "LogAggregator.DiagnoseLogs": "Diagnostic IA",
+ "LogAggregator.Connected": "Connecté",
+ "LogAggregator.Disconnected": "Déconnecté",
+ "LogAggregator.ConnectedTip": "Connecté au conteneur {{container}}",
+ "LogAggregator.DisconnectedTip": "Connexion perdue. Reconnexion en cours...",
+ "LogAggregator.DiagnosisResult": "Résultat du Diagnostic IA",
+ "LogAggregator.PreparingDiagnosis": "Analyse en cours...",
+ "LogAggregator.DiagnosisError": "Échec du diagnostic",
+ "LogAggregator.TryAgainLater": "Veuillez réessayer plus tard",
+ "LogAggregator.DiagnosisConnectionError": "Échec de la connexion au diagnostic",
+ "LogAggregator.FailedToStartDiagnosis": "Échec du démarrage du diagnostic",
+ "LogAggregator.FailedToDiagnoseLogs": "Échec du diagnostic des journaux",
+ "LogAggregator.StopDiagnosis": "Arrêter le diagnostic",
+ "LogAggregator.DownloadLogs": "Télécharger les journaux",
+ "LogAggregator.DownloadError": "Échec du téléchargement des journaux",
+ "LogAggregator.Settings": "Paramètres des journaux",
+ "LogAggregator.Since": "Afficher les journaux depuis",
+ "LogAggregator.SinceTime": "Afficher les journaux à partir de",
+ "LogAggregator.TailLines": "Nombre de lignes à afficher",
+ "LogAggregator.ShowTimestamps": "Afficher les horodatages",
+ "LogAggregator.NoLogsSelected": "Aucun journal sélectionné",
+ "LogAggregator.SearchPlaceholder": "Rechercher dans les journaux...",
+ "LogAggregator.SearchModeHighlight": "Mode Surbrillance",
+ "LogAggregator.SearchModeFilter": "Mode Filtre",
+ "LogAggregator.FullScreen": "Plein Écran",
+ "EventAggregator": "Événements",
+ "EventAggregator.Type": "Type d'Événement",
+ "EventAggregator.Normal": "Normal",
+ "EventAggregator.Warning": "Avertissement",
+ "EventAggregator.NoEvents": "Aucun Événement",
+ "EventAggregator.SearchEvents": "Rechercher des événements...",
+ "EventAggregator.ColumnType": "Type",
+ "EventAggregator.ColumnReason": "Raison",
+ "EventAggregator.ColumnMessage": "Message",
+ "EventAggregator.ColumnTimes": "Occurrences",
+ "EventAggregator.ColumnFirstSeen": "Première Vue",
+ "EventAggregator.ColumnLastSeen": "Dernière Vue",
+ "EventAggregator.Diagnose": "Diagnostic IA",
+ "EventAggregator.DiagnosisResult": "Résultat du Diagnostic IA",
+ "EventAggregator.StopDiagnosis": "Arrêter le Diagnostic",
+ "EventAggregator.DiagnosisInProgress": "Analyse en cours...",
+ "EventAggregator.DiagnosisFailed": "Échec du Diagnostic",
+ "EventAggregator.TryAgainLater": "Veuillez réessayer plus tard",
+ "EventAggregator.DiagnosisConnectionError": "Échec de la connexion au diagnostic",
+ "Name": "Nom",
+ "Times": "Fois",
+ "FilterByName": "Filtrer par Nom",
+ "SelectResourcesAboveToSeeDetailsHere": "Sélectionnez des ressources ci-dessus pour voir les détails ici",
+ "Issues": "Problèmes",
+ "Critical": "Critique",
+ "High": "Élevé",
+ "Medium": "Moyen",
+ "Low": "Faible",
+ "Safe": "Sûr",
+ "IssueSource": "Source du Problème",
+ "NumberOfOccurrences": "Nombre d'Occurrences",
+ "Description": "Description",
+ "RelatedResources": "Ressources Associées",
+ "More": "Plus",
+ "Less": "Masquer",
+ "Capacity": "Capacité",
+ "Memory": "Mémoire",
+ "MemoryCapacity": "Capacité Mémoire",
+ "Version": "Version",
+ "SorryThePageYouVisitedDoesNotExist": "Désolé, la page que vous avez visitée n'existe pas",
+ "BackToHome": "Retour à l'Accueil",
+ "Cancel": "Annuler",
+ "Submit": "Soumettre",
+ "OK": "OK",
+ "DisplayName": "Nom d'Affichage",
+ "ClusterName": "Nom du Cluster",
+ "ClusterDetail": "Détails du Cluster",
+ "DataSyncConfiguration": "Configuration de Synchronisation des Données",
+ "VerifiedSuccessfullyAndSubmitted": "Vérifié et soumis avec succès",
+ "VerificationSuccessfulButSubmissionFailed": "Vérification réussie mais soumission échouée",
+ "KubeConfigDoesNotMeetTheRequirements": "Le fichier KubeConfig ne répond pas aux exigences. Veuillez télécharger un certificat valide",
+ "UploadSuccessful": "Téléchargement réussi",
+ "TheFileMustBeIn": "Le fichier doit être au format",
+ "TheKubeConfigFileCannotBeEmpty": "Le fichier KubeConfig ne peut pas être vide",
+ "Upload": "Télécharger",
+ "ConfigurationFile": "Fichier de Configuration",
+ "VerifyAndSubmit": "Vérifier et Soumettre",
+ "ExistingConfigurations": "Configurations Existantes",
+ "NewConfiguration": "Nouvelles Configurations",
+ "PleaseUploadNewKubeConfigFile": "Veuillez télécharger un nouveau fichier KubeConfig",
+ "SubmitAnd3STOClusterPage": "Vérifié et soumis avec succès. Redirection vers la page de gestion des clusters dans 3 secondes",
+ "SubmitAndValidate": "Validation en cours",
+ "SubmitAndUpdate": "Vérifier et Mettre à jour",
+ "DeleteAndNoLongUpdateResources": "Après la suppression, ce cluster ne sera plus visible et ses ressources ne seront plus synchronisées",
+ "UpdateSuccess": "Mise à jour réussie",
+ "RequestFailedAndTry": "Échec de la requête, veuillez réessayer",
+ "DeletedSuccess": "Suppression réussie",
+ "EmptyCluster": "Aucun cluster enregistré",
+ "ClusterRequiresKubeConfigConfigurationFileAccess": "Pour enregistrer un nouveau cluster, cliquez sur le bouton ci-dessous et téléchargez le fichier KubeConfig",
+ "PleaseEnterKeywords": "Veuillez entrer des mots-clés",
+ "IssuesDetail": "Détails du Problème",
+ "Close": "Fermer",
+ "Total": "Total",
+ "ViewIssueDetail": "Voir les Détails du Problème",
+ "Occur": "Se produit",
+ "CollectedFrom": "Collecté depuis",
+ "Tool": "Outil",
+ "NoIssuesFound": "Aucun problème trouvé",
+ "HealthScore": "Score de Santé",
+ "TriggeredTimestamp": "Horodatage Déclenché",
+ "Exception": "Exception",
+ "Warning": "Avertissement",
+ "Normal": "Normal",
+ "CreateTime": "Date de Création",
+ "InDevelopment": "En Développement",
+ "InputClusterName": "Entrez le Nom du Cluster",
+ "YAML": {
+ "NoContent": "Pas de contenu à interpréter",
+ "Interpret": "Interprétation IA",
+ "InterpretResult": "Résultat de l'Interprétation",
+ "InterpretInProgress": "Interprétation en cours...",
+ "StopInterpret": "Arrêter l'Interprétation",
+ "InterpretConnectionError": "Erreur de connexion à l'interprétation",
+ "FailedToStartInterpret": "Échec du démarrage de l'interprétation",
+ "FailedToInterpret": "Échec de l'interprétation",
+ "TabName": "YAML"
+ },
+ "Yesterday": "Hier",
+ "Collapse": "Réduire",
+ "Expand": "Développer",
+ "Detail": "Détail",
+ "View": "Voir",
+ "AllTags": "Tous les Tags",
+ "DuplicateData": "Données en double, veuillez vérifier",
+ "AreYouSureDeleteResourceGroupRule": "Êtes-vous sûr de vouloir supprimer cette règle de groupe de ressources ?",
+ "Copy": "Copier",
+ "CopySuccess": "Copié avec succès",
+ "TotalResourceGroupRules": "Total des Règles de Groupe de Ressources",
+ "TotalResources": "Total des Ressources",
+ "ClusterCount": "Nombre de Clusters",
+ "UnableCreateResourceGroupInReadOnly": "Impossible de créer des règles de groupe de ressources en mode lecture seule",
+ "PleaseEnterValidSQLStatement": "Veuillez entrer une instruction SQL valide",
+ "NoClusterAndJumpToClusterPage": "Aucun cluster connecté. Veuillez d'abord enregistrer un cluster",
+ "Logout": "Déconnexion",
+ "TokenCreationGuide": "Le Token est requis pour accéder au Cluster Hub. En savoir plus : [Comment créer un Token]",
+ "LoginFailedAndCheck": "Échec de la connexion, veuillez vérifier la validité du token",
+ "UnLoginAndTokenLogin": "Non connecté, veuillez entrer le token pour vous connecter",
+ "LoginSuccess": "Connexion réussie",
+ "Login": "Connexion",
+ "LogoutSuccess": "Déconnexion réussie",
+ "InputToken": "Entrez le Token",
+ "SearchByNaturalLanguage": "Recherche en Langage Naturel",
+ "CannotBeEmpty": "Ne peut pas être vide",
+ "DefaultTag": "Tag par défaut",
+ "FailedToParsePodDetails": "Échec de l'analyse des détails du Pod",
+ "CopiedToClipboard": "Copié dans le presse-papiers",
+ "Metrics": {
+ "Tooltips": {
+ "NodeCount": "Nombre total de nœuds dans le cluster",
+ "ServerVersion": "Version du serveur Kubernetes",
+ "ReadyNodes": "Nombre de nœuds en état Ready",
+ "Pods": "Pods actuels vs maximum",
+ "CPU": "Utilisation CPU / CPU Total",
+ "Memory": "Utilisation Mémoire / Mémoire Totale",
+ "MetricsServer": "Metrics Server collecte les métriques de ressources des Kubelets"
+ }
+ },
+ "Enabled": "Activé",
+ "Disabled": "Désactivé",
+ "ExceptionList": {
+ "NoIssues": "Aucun problème trouvé",
+ "NoIssuesFound": "Aucun problème trouvé",
+ "InterpretConnectionError": "Erreur de connexion à l'interprétation",
+ "FailedToInterpretLogs": "Échec de l'interprétation des journaux",
+ "Interpret": "Interprétation IA",
+ "InterpretResult": "Résultat de l'Interprétation IA",
+ "StopInterpret": "Arrêter l'Interprétation",
+ "InterpretInProgress": "Analyse en cours...",
+ "InterpretFailed": "Échec de l'Interprétation",
+ "TryAgainLater": "Veuillez réessayer plus tard",
+ "Rescan": "Rescanner",
+ "Collapse": "Réduire",
+ "Expand": "Développer",
+ "CheckAllIssues": "Vérifier Tous les Problèmes",
+ "ViewIssueDetail": "Voir les Détails du Problème",
+ "Occur": "Se produit",
+ "Times": "fois",
+ "CollectedFrom": "Collecté depuis",
+ "Tool": "Outil",
+ "Description": "Description",
+ "High": "Élevé",
+ "Medium": "Moyen",
+ "Low": "Faible"
+ }
+}
\ No newline at end of file
diff --git a/ui/src/locales/ja.json b/ui/src/locales/ja.json
new file mode 100644
index 00000000..19177fb4
--- /dev/null
+++ b/ui/src/locales/ja.json
@@ -0,0 +1,224 @@
+{
+ "Help": "ヘルプ",
+ "ReadOnlyMode": "読み取り専用モード",
+ "Search": "検索",
+ "Cluster": "クラスター",
+ "Insight": "インサイト",
+ "KeywordSearch": "キーワード検索",
+ "SQLSearch": "SQL検索",
+ "SearchUsingSQL": "SQLを使用して検索",
+ "PopularQueries": "人気のクエリ",
+ "ClusterManagement": "クラスター管理",
+ "AllClusters": "すべてのクラスター",
+ "HealthyClusters": "正常なクラスター",
+ "UnhealthyClusters": "異常なクラスター",
+ "SortByName": "名前で並べ替え",
+ "SortByTime": "時間で並べ替え",
+ "RegisterCluster": "クラスター登録",
+ "Edit": "編集",
+ "RotateCertificate": "証明書のローテーション",
+ "Delete": "削除",
+ "AboutInSearchResult": "概要",
+ "SearchResult": "検索結果",
+ "AllIssues": "すべての問題",
+ "HighRisk": "高",
+ "MediumRisk": "中",
+ "LowRisk": "低",
+ "Rescan": "再スキャン",
+ "CheckAllIssues": "すべての問題を確認",
+ "ResourceTopology": "リソーストポロジー",
+ "LogAggregator": "ログ",
+ "LogAggregator.SelectContainer": "コンテナを選択",
+ "LogAggregator.ResumeLogs": "ログを再開",
+ "LogAggregator.PauseLogs": "ログを一時停止",
+ "LogAggregator.ClearLogs": "ログをクリア",
+ "LogAggregator.DiagnoseLogs": "AI診断",
+ "LogAggregator.Connected": "接続済み",
+ "LogAggregator.Disconnected": "切断",
+ "LogAggregator.ConnectedTip": "コンテナ {{container}} に接続しました",
+ "LogAggregator.DisconnectedTip": "接続が切れました。再接続中...",
+ "LogAggregator.DiagnosisResult": "AI診断結果",
+ "LogAggregator.PreparingDiagnosis": "分析中...",
+ "LogAggregator.DiagnosisError": "診断に失敗しました",
+ "LogAggregator.TryAgainLater": "後でもう一度お試しください",
+ "LogAggregator.DiagnosisConnectionError": "診断接続に失敗しました",
+ "LogAggregator.FailedToStartDiagnosis": "診断を開始できませんでした",
+ "LogAggregator.FailedToDiagnoseLogs": "ログの診断に失敗しました",
+ "LogAggregator.StopDiagnosis": "診断を停止",
+ "LogAggregator.DownloadLogs": "ログをダウンロード",
+ "LogAggregator.DownloadError": "ログのダウンロードに失敗しました",
+ "LogAggregator.Settings": "ログ設定",
+ "LogAggregator.Since": "ログの表示開始時間",
+ "LogAggregator.SinceTime": "ログの表示開始時刻",
+ "LogAggregator.TailLines": "表示する行数",
+ "LogAggregator.ShowTimestamps": "タイムスタンプを表示",
+ "LogAggregator.NoLogsSelected": "ログが選択されていません",
+ "LogAggregator.SearchPlaceholder": "ログを検索...",
+ "LogAggregator.SearchModeHighlight": "ハイライトモード",
+ "LogAggregator.SearchModeFilter": "フィルターモード",
+ "LogAggregator.FullScreen": "全画面表示",
+ "EventAggregator": "イベント",
+ "EventAggregator.Type": "イベントタイプ",
+ "EventAggregator.Normal": "通常",
+ "EventAggregator.Warning": "警告",
+ "EventAggregator.NoEvents": "イベントなし",
+ "EventAggregator.SearchEvents": "イベントを検索...",
+ "EventAggregator.ColumnType": "タイプ",
+ "EventAggregator.ColumnReason": "理由",
+ "EventAggregator.ColumnMessage": "メッセージ",
+ "EventAggregator.ColumnTimes": "回数",
+ "EventAggregator.ColumnFirstSeen": "初回発生",
+ "EventAggregator.ColumnLastSeen": "最終発生",
+ "EventAggregator.Diagnose": "AI診断",
+ "EventAggregator.DiagnosisResult": "AI診断結果",
+ "EventAggregator.StopDiagnosis": "診断を停止",
+ "EventAggregator.DiagnosisInProgress": "分析中...",
+ "EventAggregator.DiagnosisFailed": "診断に失敗しました",
+ "EventAggregator.TryAgainLater": "後でもう一度お試しください",
+ "EventAggregator.DiagnosisConnectionError": "診断接続に失敗しました",
+ "Name": "名前",
+ "Times": "回",
+ "FilterByName": "名前でフィルター",
+ "SelectResourcesAboveToSeeDetailsHere": "リソースを選択して詳細を表示",
+ "Issues": "問題",
+ "Critical": "重大",
+ "High": "高",
+ "Medium": "中",
+ "Low": "低",
+ "Safe": "安全",
+ "IssueSource": "問題の発生源",
+ "NumberOfOccurrences": "発生回数",
+ "Description": "説明",
+ "RelatedResources": "関連リソース",
+ "More": "もっと見る",
+ "Less": "隠す",
+ "Capacity": "容量",
+ "Memory": "メモリ",
+ "MemoryCapacity": "メモリ容量",
+ "Version": "バージョン",
+ "SorryThePageYouVisitedDoesNotExist": "お探しのページは存在しません",
+ "BackToHome": "ホームに戻る",
+ "Cancel": "キャンセル",
+ "Submit": "送信",
+ "OK": "OK",
+ "DisplayName": "表示名",
+ "ClusterName": "クラスター名",
+ "ClusterDetail": "クラスター詳細",
+ "DataSyncConfiguration": "データ同期設定",
+ "VerifiedSuccessfullyAndSubmitted": "検証成功、送信完了",
+ "VerificationSuccessfulButSubmissionFailed": "検証成功、送信失敗",
+ "KubeConfigDoesNotMeetTheRequirements": "KubeConfigが要件を満たしていません。有効な証明書をアップロードしてください",
+ "UploadSuccessful": "アップロード成功",
+ "TheFileMustBeIn": "ファイルは以下の形式である必要があります",
+ "TheKubeConfigFileCannotBeEmpty": "KubeConfigファイルは空にできません",
+ "Upload": "アップロード",
+ "ConfigurationFile": "設定ファイル",
+ "VerifyAndSubmit": "検証して送信",
+ "ExistingConfigurations": "既存の設定",
+ "NewConfiguration": "新しい設定",
+ "PleaseUploadNewKubeConfigFile": "新しいKubeConfigファイルをアップロードしてください",
+ "SubmitAnd3STOClusterPage": "検証成功、送信完了。3秒後にクラスター管理ページに移動します",
+ "SubmitAndValidate": "検証中",
+ "SubmitAndUpdate": "検証して更新",
+ "DeleteAndNoLongUpdateResources": "削除後、このクラスターは表示されなくなり、リソースの更新も停止します",
+ "UpdateSuccess": "更新成功",
+ "RequestFailedAndTry": "リクエスト失敗、再試行してください",
+ "DeletedSuccess": "削除成功",
+ "EmptyCluster": "登録されたクラスターがありません",
+ "ClusterRequiresKubeConfigConfigurationFileAccess": "新しいクラスターを登録するには、KubeConfigファイルをアップロードしてください",
+ "PleaseEnterKeywords": "キーワードを入力してください",
+ "IssuesDetail": "問題の詳細",
+ "Close": "閉じる",
+ "Total": "合計",
+ "ViewIssueDetail": "問題の詳細を表示",
+ "Occur": "発生",
+ "CollectedFrom": "収集元",
+ "Tool": "ツール",
+ "NoIssuesFound": "問題は見つかりませんでした",
+ "HealthScore": "健全性スコア",
+ "TriggeredTimestamp": "トリガー時刻",
+ "Exception": "例外",
+ "Warning": "警告",
+ "Normal": "通常",
+ "CreateTime": "作成時刻",
+ "InDevelopment": "開発中",
+ "InputClusterName": "クラスター名を入力",
+ "YAML": {
+ "NoContent": "解釈するコンテンツがありません",
+ "Interpret": "AI解釈",
+ "InterpretResult": "解釈結果",
+ "InterpretInProgress": "解釈中...",
+ "StopInterpret": "解釈を停止",
+ "InterpretConnectionError": "解釈接続エラー",
+ "FailedToStartInterpret": "解釈を開始できませんでした",
+ "FailedToInterpret": "解釈に失敗しました",
+ "TabName": "YAML"
+ },
+ "Yesterday": "昨日",
+ "Collapse": "折りたたむ",
+ "Expand": "展開",
+ "Detail": "詳細",
+ "View": "表示",
+ "AllTags": "すべてのタグ",
+ "DuplicateData": "重複データ、再確認してください",
+ "AreYouSureDeleteResourceGroupRule": "このリソースグループルールを削除してもよろしいですか?",
+ "Copy": "コピー",
+ "CopySuccess": "コピー成功",
+ "TotalResourceGroupRules": "リソースグループルールの合計",
+ "TotalResources": "リソースの合計",
+ "ClusterCount": "クラスター数",
+ "UnableCreateResourceGroupInReadOnly": "読み取り専用モードではリソースグループルールを作成できません",
+ "PleaseEnterValidSQLStatement": "有効なSQLステートメントを入力してください",
+ "NoClusterAndJumpToClusterPage": "クラスターが接続されていません。先にクラスターを登録してください",
+ "Logout": "ログアウト",
+ "TokenCreationGuide": "TokenはHubクラスターにアクセスするための認証情報です。詳細: [Tokenの作成方法]",
+ "LoginFailedAndCheck": "ログイン失敗、Tokenが有効か確認してください",
+ "UnLoginAndTokenLogin": "ログインしていません、Tokenを入力してログインしてください",
+ "LoginSuccess": "ログイン成功",
+ "Login": "ログイン",
+ "LogoutSuccess": "ログアウト成功",
+ "InputToken": "Tokenを入力してください",
+ "SearchByNaturalLanguage": "自然言語検索",
+ "CannotBeEmpty": "空にできません",
+ "DefaultTag": "デフォルトタグ",
+ "FailedToParsePodDetails": "Podの詳細の解析に失敗しました",
+ "CopiedToClipboard": "クリップボードにコピーしました",
+ "Metrics": {
+ "Tooltips": {
+ "NodeCount": "クラスター内のノード総数",
+ "ServerVersion": "Kubernetesサーバーバージョン",
+ "ReadyNodes": "Ready状態のノード数",
+ "Pods": "現在のPod数/最大Pod数",
+ "CPU": "CPU使用率/総CPU",
+ "Memory": "メモリ使用率/総メモリ",
+ "MetricsServer": "Metrics ServerはKubeletからリソースメトリクスを収集します"
+ }
+ },
+ "Enabled": "有効",
+ "Disabled": "無効",
+ "ExceptionList": {
+ "NoIssues": "問題は見つかりませんでした",
+ "NoIssuesFound": "問題は見つかりませんでした",
+ "InterpretConnectionError": "解釈接続エラー",
+ "FailedToInterpretLogs": "ログの解釈に失敗しました",
+ "Interpret": "AI解釈",
+ "InterpretResult": "AI解釈結果",
+ "StopInterpret": "解釈を停止",
+ "InterpretInProgress": "分析中...",
+ "InterpretFailed": "解釈に失敗しました",
+ "TryAgainLater": "後でもう一度お試しください",
+ "Rescan": "再スキャン",
+ "Collapse": "折りたたむ",
+ "Expand": "展開",
+ "CheckAllIssues": "すべての問題を確認",
+ "ViewIssueDetail": "問題の詳細を表示",
+ "Occur": "発生",
+ "Times": "回",
+ "CollectedFrom": "収集元",
+ "Tool": "ツール",
+ "Description": "説明",
+ "High": "高",
+ "Medium": "中",
+ "Low": "低"
+ }
+}
\ No newline at end of file
diff --git a/ui/src/utils/constants.ts b/ui/src/utils/constants.ts
index 82dd9bb7..6f384a91 100644
--- a/ui/src/utils/constants.ts
+++ b/ui/src/utils/constants.ts
@@ -110,28 +110,16 @@ export const defaultSqlExamples = [
export const DEFALUT_PAGE_SIZE_10 = 10
-export const Languages = [
- {
- label: 'English',
- value: 'en',
- },
- {
- label: '中文',
- value: 'zh',
- },
- {
- label: 'Deutsch',
- value: 'de',
- },
- {
- label: 'Português',
- value: 'pt',
- },
- {
- label: '한국어',
- value: 'ko',
- },
-]
+export const SUPPORTED_LANGUAGES = [
+ { label: 'English', value: 'en' },
+ { label: '中文', value: 'zh' },
+ { label: 'Deutsch', value: 'de' },
+ { label: 'Português', value: 'pt' },
+ { label: '한국어', value: 'ko' },
+ { label: '日本語', value: 'ja' },
+ { label: 'Français', value: 'fr' },
+ { label: 'Español', value: 'es' },
+];
export const LanguagesMap = {
zh: '简体中文',