diff --git a/src/components/LocaleSelector.tsx b/src/components/LocaleSelector.tsx index 151019d..cb49b61 100644 --- a/src/components/LocaleSelector.tsx +++ b/src/components/LocaleSelector.tsx @@ -16,6 +16,10 @@ const localeItemList: LocaleItem[] = [ value: "zh", label: "中文", }, + { + value: "es", + label: "Español", + }, ]; const LocaleSelector = () => { diff --git a/src/components/LocaleSwitch.tsx b/src/components/LocaleSwitch.tsx index 3be9c6b..d09383b 100644 --- a/src/components/LocaleSwitch.tsx +++ b/src/components/LocaleSwitch.tsx @@ -8,6 +8,8 @@ const LocaleSwitch = () => { const handleLocaleChange = () => { if (locale === "en") { settingStore.setLocale("zh"); + } else if (locale === "zh") { + settingStore.setLocale("es"); } else { settingStore.setLocale("en"); } diff --git a/src/locales/es.json b/src/locales/es.json new file mode 100644 index 0000000..6a94127 --- /dev/null +++ b/src/locales/es.json @@ -0,0 +1,60 @@ +{ + "common": { + "clear": "Limpiar", + "close": "Cerrar", + "confirm": "Confirmar", + "save": "Guardar", + "loading": "Cargando", + "setting": "Configuración", + "copy": "Copiar", + "delete": "Borrar" + }, + "conversation": { + "new-chat": "Nuevo Chat", + "conversation-title": "Titulo de conversación", + "edit-title": "Editar Titulo de conversación" + }, + "connection": { + "self": "Conexión", + "new": "Crear Conexión", + "select-database": "Selecciona tu base de datos" + }, + "execution": { + "title": "Ejecutar consulta", + "message": { + "executing": "Ejecutando consulta...", + "no-connection": "No se ha seleccionado una conexión", + "no-data": "No hay datos para mostrar" + } + }, + "editor": { + "placeholder": "Ingresa tu pregunta aquí..." + }, + "setting": { + "self": "Configuración", + "basic": { + "self": "Básico", + "language": "Idioma" + }, + "theme": { + "self": "Tema", + "system": "Usar tema del sistema", + "light": "Claro", + "dark": "Oscuro" + }, + "openai-api-configuration": { + "self": "Configuración del API de OpenAI" + }, + "data": { + "self": "Datos", + "clear-all-data": "Limpiar todos los datos" + } + }, + "social": { + "join-discord-channel": "Unirse al canal de Discord", + "join-wechat-group": "Unirse al grupo de WeChat" + }, + "banner": { + "data-storage": "Las configuraciones de conexión y las consultas se almacenan en tu navegador." + } +} diff --git a/src/locales/i18n.ts b/src/locales/i18n.ts index e72c79d..3c4fd4b 100644 --- a/src/locales/i18n.ts +++ b/src/locales/i18n.ts @@ -2,6 +2,7 @@ import i18n from "i18next"; import { initReactI18next } from "react-i18next"; import enLocale from "./en.json"; import zhLocale from "./zh.json"; +import esLocale from "./es.json"; i18n.use(initReactI18next).init({ resources: { @@ -11,6 +12,9 @@ i18n.use(initReactI18next).init({ zh: { translation: zhLocale, }, + es: { + translation: esLocale, + }, }, fallbackLng: "en", }); diff --git a/src/types/setting.ts b/src/types/setting.ts index cc2c97c..56a9ef1 100644 --- a/src/types/setting.ts +++ b/src/types/setting.ts @@ -1,4 +1,4 @@ -export type Locale = "en" | "zh"; +export type Locale = "en" | "zh" | "es"; export type Theme = "light" | "dark" | "system";