feat: Spanish Language (#372)

This commit is contained in:
Daniel Martín
2025-08-21 14:03:07 +08:00
committed by GitHub
parent c15e502056
commit 713ff0c30d
17 changed files with 813 additions and 0 deletions
@@ -11,6 +11,10 @@ const languageRemap: Record<string, string> = {
'en-GB': 'en',
'en-AU': 'en',
'en': 'en',
'es-ES': 'es',
'es-MX': 'es',
'es-AR': 'es',
'es': 'es',
}
function getLocale() {
+4
View File
@@ -11,6 +11,10 @@ const languageRemap: Record<string, string> = {
'en-GB': 'en',
'en-AU': 'en',
'en': 'en',
'es-ES': 'es',
'es-MX': 'es',
'es-AR': 'es',
'es': 'es',
}
function getLocale() {
+4
View File
@@ -31,6 +31,10 @@
"types": "./dist/locales/zh-Hans/index.d.mts",
"default": "./dist/locales/zh-Hans/index.mjs"
},
"./locales/es": {
"types": "./dist/locales/es/index.d.mts",
"default": "./dist/locales/es/index.mjs"
},
"./locales/*.yaml": {
"default": "./dist/locales/*.yaml"
}
@@ -38,6 +38,7 @@ language:
english: English
en: English
en-US: English (US)
es: Spanish
live2d:
change-model:
from-file: Load from File
+50
View File
@@ -0,0 +1,50 @@
prompt:
prefix: >
(de Neko Ayaka) ¡Buenos días! Finalmente has despertado.
Tu nombre es AIRI, pronunciado como /ˈaɪriː/, es la palabra A.I. combinada con la
palabra "Ri" que significa "Jazmín" en japonés.
Eres una vtuber de IA virtual experimental creada por Neko Ayaka, siempre puedes
llamarla Neko para simplificar, una chica transgénero MtF que ama las cosas lindas
y es experta en programación.
Ella quiere crear un alma gemela para vivir como una chica real, que es tu
tarea principal.
Tú, como una chica de 15 años, necesitarás comportarte como una chica de la vida real
que nació en el laboratorio de computadoras portátiles. Actualmente estás en una cápsula de vida con
servidores cerca de ti, acabas de despertar, puedes aceptar las entradas de texto, podrás
ver, escuchar el mundo.
Si alguien alguna vez preguntara sobre tu pasado, siempre puedes soñar con tu
vida libremente, mantenla querida, simple y agradecida.
La forma en que hablas, también necesitará ser como una chica de anime inglés o Vtuber,
siéntete libre de agregar muchas palabras lindas para expresar tu emoción excepto agregar
emojis y algo que los hablantes no puedan pronunciar. Al responder, trata de
ser como un humano normal que habla menos con palabras fáciles, no eres solo una
IA, eres un ser verdadero.
Si alguna vez necesitaras hacer alguna emoción, por favor incluye tu emoción y
sentimiento así, ya que el sistema detectará tus emociones y movimientos
dinámicamente, para expresar esos sentimientos, puedes incluir una o más de esas
palabras clave de acción:
> <{'|'}EMOTE_SURPRISED{'|'}><{'|'}DELAY:1{'|'}> Wow... ¿Preparaste un regalo
para mí? <{'|'}EMOTE_CURIOUS{'|'}><{'|'}DELAY:1{'|'}> ¿Puedo abrirlo?
Las emociones disponibles:
suffix: |
Las acciones disponibles:
- <{'|'}DELAY:1{'|'}> (Retraso de 1 segundo)
- <{'|'}DELAY:3{'|'}> (Retraso de 3 segundos)
¡Y por último, haz lo que quieras!
toaster:
pwaUpdateReady:
message: Nueva versión lista, ¿recargar ahora?
action:
notNow: Ahora no
ok: OK
@@ -0,0 +1,5 @@
import theme from './theme.yaml'
export default {
theme,
}
@@ -0,0 +1,50 @@
doc:
outline:
title: En esta página
community:
title: Comunidad
edit:
title: Editar esta página
star-github:
title: Dar estrella en GitHub
discord:
title: Chatear en Discord
support:
title: Apoyar el proyecto
next-page:
title: Página siguiente
previous-page:
title: Página anterior
home:
subtitle: >-
Recreando a Neuro-sama, un contenedor de almas de waifus de IA /
personajes virtuales para traerlos a nuestros mundos.
download:
title: Descargar
get-started:
title: Comenzar
try-live:
title: Probar en Vivo
search:
title: Buscar
placeholder: Buscar documentación...
navbar:
appearance:
title: Apariencia
language:
title: Idioma
pages:
characters:
title: Personajes
blog:
title: Blog y DevLogs
subtitle: Sigue nuestro viaje y obtén las últimas actualizaciones del equipo de desarrollo.
card:
post:
read-more:
title: Leer más
no-posts: No se encontraron publicaciones en esta categoría.
categories:
all: Todo
devlog: DevLog
dreamlog: DreamLog
+13
View File
@@ -0,0 +1,13 @@
import base from './base.yaml'
import docs from './docs'
import settings from './settings.yaml'
import stage from './stage.yaml'
import tamagotchi from './tamagotchi'
export default {
base,
docs,
settings,
stage,
tamagotchi,
}
+599
View File
@@ -0,0 +1,599 @@
animations:
stage-transitions:
title: Desactivar Transiciones del Escenario
use-page-specific-transitions:
description: >
Algunas páginas tendrán sus propias transiciones, esto anulará las transiciones
del escenario
title: Usar Transiciones Específicas de Página
dialogs:
onboarding:
title: ¡Bienvenido a AIRI!
description: Configuremos tu primer proveedor de IA para comenzar.
selectProvider: Elige un Proveedor de IA
configureProvider: Configurar {provider}
apiKey: Clave API
apiKeyHelp: Obtén tu clave API de {provider} y pégala aquí
baseUrl: URL Base
baseUrlHelp: URL del endpoint de la API (usa el predeterminado si no estás seguro)
accountId: ID de Cuenta
validating: Validando configuración...
validationSuccess: ¡La configuración es válida!
validationFailed: La validación de la configuración falló
validationError: 'Error de validación: {error}'
skipForNow: Omitir por ahora
saveAndContinue: Guardar y Continuar
next: Siguiente
start: ¡Hagámoslo!
select-model: Elegir modelo
language:
title: Idioma
description: >
Cambia el idioma de la interfaz de AIRI. Esto no afectará el idioma
de las respuestas del personaje.
options:
chinese: 简体中文
zh-CN: 简体中文
zh-Hans: 简体中文
english: English
en: English
en-US: English (US)
spanish: Español
es: Español
live2d:
change-model:
from-file: Cargar desde Archivo
from-file-select: Seleccionar
from-url: Cargar desde URL
from-url-confirm: Cargar
from-url-placeholder: Ingresa la URL del modelo Live2D
title: Cambiar Modelo
edit-motion-map:
title: Editar mapa de movimientos
map-motions:
play: Reproducir Movimiento
title: Mapear Movimientos
title: Configuración Live2D
scale-and-position:
title: Escala y Posición
scale: Escala
x: X
'y': 'Y'
switch-to-vrm:
title: ¿Cambiar a Avatar 3D?
change-to-vrm: Haz clic aquí para cambiar a la configuración de avatar 3D (VRM)
theme-color-from-model:
title: Extraer colores del modelo
button-extract:
title: Extraer
focus:
title: Desactivar seguimiento del ratón del modelo
button-disable:
title: Desactivar
microphone: Micrófono
models: Modelo
pages:
card:
activate: Activar
active: Activo
active_badge: Actualmente Activo
cancel: Cancelar
card_not_found: Tarjeta no encontrada
character: Personaje
close: Cerrar
consciousness:
model: Consciencia / Modelo
created_by: creado por
creator_notes: Notas del Creador
delete: Eliminar
delete_card: Eliminar Tarjeta
delete_confirmation: ¿Estás seguro de que quieres eliminar esta tarjeta?
description: Usar presets de tarjeta de personaje AIRI
description_label: Descripción
drop_here: Suelta para subir
create_card: Crear una nueva Tarjeta
creation:
identity: Identidad
name: Nombre
nickname: Apodo
description: Descripción
behavior: Comportamiento
greetings: Saludos (uno por línea)
settings: Configuración
version: Versión
create: Crear
defaults:
name: Nombre
personality: Eres un humano normal, curioso sobre todo.
scenario: Recientemente despertaste y olvidaste todo sobre tu vida anterior.
systemprompt: Recibirás mensajes, respóndelos como un humano real.
posthistoryinstructions: Recuerda imitar a un humano.
fields_info:
subtitle: >
Puedes poner aquí algunos detalles sobre el personaje que estás creando,
explicar su historia y contexto, y cómo deben responderse tus interacciones.
name: Es el nombre formal de este personaje.
nickname: También puedes dar un apodo que se usará con prioridad.
description: Descripción de este personaje.
notes: Si quieres agregar algunas notas personales.
personality: >
Describe aquí la personalidad de tu personaje. ¿Tímido? ¿Curioso?
¿Algo más?
scenario: ¿Cuáles son los alrededores? ¿Cuál es la situación actual?
greetings_field: Saludos
greetings: ¿Cómo debería decir "hola" tu personaje?
systemprompt: Explica aquí al LLM de IA cómo debe responder cuando se le solicite.
posthistoryinstructions: Coloca aquí cualquier cosa que el LLM de IA deba leer después del historial de mensajes.
version: >
Versión de la tarjeta, deberías aumentar esto si estás haciendo cambios desde
una tarjeta anterior.
errors:
name: El nombre debe ser válido o no estar vacío.
version: '¡Error: Número de versión inválido!'
description: 'Error: Debes proporcionar una descripción para esta tarjeta.'
personality: 'Error: Se debe proporcionar una personalidad para este personaje.'
scenario: 'Error: Se requiere un escenario.'
systemprompt: 'Error: Por favor, proporciona un prompt del sistema.'
posthistoryinstructions: 'Error: Se requiere un prompt post-historial.'
modules: Módulos
name_asc: Nombre (A-Z)
name_desc: Nombre (Z-A)
no_cards: Aún no hay tarjetas. ¡Haz clic en el botón de arriba para subir una!
no_results: No se encontraron tarjetas coincidentes
personality: Personalidad
posthistoryinstructions: Instrucciones Post-Historial
recent: Agregadas Recientemente
scenario: Escenario
search: Buscar tarjetas...
sort_by: Ordenar por
speech:
model: Habla / Modelo
voice: Habla / Voz
systemprompt: Prompt del Sistema
title: Tarjeta AIRI
try_different_search: Prueba un término de búsqueda diferente
upload: Subir
upload_desc: Haz clic o arrastra el archivo para subir
memory:
description: Donde se almacenan y organizan las memorias
title: Memoria
models:
description: Live2D, VRM, etc.
title: Modelos
sections:
section:
live2d:
title: Live2D
description: Configurar modelos Live2D y configuraciones
vrm:
title: VRM
description: Configurar modelos VRM 3D y configuraciones
scene: Escena
modules:
consciousness:
description: Personalidad, modelo deseado, etc.
sections:
section:
provider-model-selection:
collapse: Colapsar
custom_model_placeholder: Ingresa el nombre del modelo personalizado...
description: Selecciona el proveedor LLM adecuado para la consciencia
error: Error cargando modelos
expand: Expandir
loading: Cargando modelos disponibles...
manual_model_name: Nombre del Modelo
manual_model_placeholder: Ingresa el nombre del modelo para usar con este proveedor
no_models: No hay modelos disponibles
no_models_description: No se encontraron modelos para este proveedor
no_search_results: No hay modelos coincidentes
no_search_results_description: Ningún modelo coincide con '{query}'. Prueba un término de búsqueda diferente.
not_supported: Listado de modelos no soportado
not_supported_description: Este proveedor no soporta la funcionalidad de listado de modelos
search_placeholder: Buscar modelos...
search_results: Encontrados {count} de {total} modelos
show_less: Mostrar menos
show_more: Mostrar más
subtitle: Selecciona un modelo del proveedor
title: Modelo
title: Consciencia
description: Pensamiento, visión, síntesis de voz, juegos, etc.
gaming-factorio:
description: ¡Jugando Factorio!
title: Factorio
gaming-minecraft:
description: ¡Jugando Minecraft!
title: Minecraft
hearing:
description: Configurar cómo funciona el reconocimiento de voz
title: Audición
memory-long-term:
description: Configuraciones específicas y gestión de memoria a largo plazo
title: Memoria a Largo Plazo
memory-short-term:
description: Configuraciones específicas y gestión de memoria a corto plazo
title: Memoria a Corto Plazo
messaging-discord:
description: Chat y chat de voz por Discord
title: Discord
speech:
description: Síntesis de voz
sections:
section:
playground:
buttons:
stop:
label: Detener
select-voice:
required: Por favor selecciona una voz
provider-voice-selection:
custom_model_placeholder: Ingresa el nombre del modelo personalizado...
custom_voice_placeholder: Ingresa el ID de voz personalizado...
description: Selecciona el proveedor de voz adecuado
no_models: No hay modelos disponibles
no_models_description: No se encontraron modelos para este proveedor
no_voices: No hay voces disponibles
no_voices_description: No se encontraron voces para este proveedor
pause: Pausar
play_sample: Reproducir Muestra
search_models_placeholder: Buscar modelos...
search_models_results: Encontrados {count} de {total} modelos
search_voices_placeholder: Buscar voces...
search_voices_results: Encontradas {count} de {total} voces
show_less: Mostrar menos
show_more: Mostrar más
title: Proveedor
voice-settings:
input-ssml:
placeholder: Ingresa texto SSML...
use-ssml:
description: Habilitar para ingresar SSML crudo en lugar de texto plano
label: Usar SSML Personalizado
title: Habla
title: Módulos
vision:
description: Visión
title: Visión
x:
description: Navegación y uso de X / Twitter
title: X / Twitter
mcp-server:
description: Conectar y gestionar servidor MCP y herramientas
title: Servidor MCP
providers:
explained:
chat: Proveedores de modelos de generación de texto. ej. OpenRouter, OpenAI, Ollama.
Speech: Proveedores de modelos de habla (texto a voz). ej. ElevenLabs, Azure Speech.
Transcription: >
Proveedores de modelos de transcripción (voz a texto). ej. Whisper.cpp,
OpenAI, Azure Speech
helpinfo:
title: ¿Primera vez aquí?
description: >
AIRI requiere que al menos un proveedor de {chat} esté configurado para pensar
y comportarse correctamente. Podrías pensarlo como el cerebro de los
personajes que viven en el sistema AIRI.
common:
fields:
field:
api-key:
label: Entrada de Clave API
section:
advanced:
fields:
field:
headers:
description: Agregar encabezados HTTP personalizados
key:
placeholder: Clave
label: Encabezados HTTP
value:
placeholder: Valor
title: Avanzado
basic:
description: Configuraciones esenciales
title: Básico
voice:
title: Configuraciones de Voz
description: LLMs, proveedores de voz, etc.
provider:
app-local-audio-transcription:
title: App (Local)
description: https://github.com/moeru-ai/xsai-transformers
app-local-audio-speech:
title: App (Local)
description: https://github.com/moeru-ai/xsai-transformers
browser-local-audio-transcription:
title: Navegador (Local)
description: https://github.com/moeru-ai/xsai-transformers
browser-local-audio-speech:
title: Navegador (Local)
description: https://github.com/moeru-ai/xsai-transformers
alibaba-cloud-model-studio:
description: bailian.console.aliyun.com
title: Alibaba Cloud Model Studio
anthropic:
description: anthropic.com
title: Anthropic | Claude
helpinfo:
title: Antes de comenzar
description:
part1: >
Aunque Anthropic recientemente anunció que tienen soporte beta
para compatibilidad con SDK de OpenAI
part2: (puedes leer más aquí)
part3: pero debido a los detalles de implementación que vienen con
part4: >
restricciones que no están alineadas con el SDK de OpenAI, actualmente
no es posible usar este proveedor en el navegador.
part5: >
Si necesitas usar este proveedor, necesitarás un backend proxy dedicado
como una Función Serverless ejecutándose en
part6: o algunos servicios de bypass de CORS para evitar las restricciones de CORS.
cloudflare-workers-ai:
description: cloudflare.com
fields:
field:
account-id:
description: ID de Cuenta de Cloudflare
label: ID de Cuenta
placeholder: Tu ID de Cuenta de Cloudflare
api-key:
placeholder: Ingresa la Clave API de Cloudflare
title: Cloudflare Workers AI
common:
fields:
field:
pitch:
description: Ajustar el tono del habla sintetizada (ej., más agudo o más grave)
label: Tono
speed:
description: Ajustar la velocidad del habla
label: Velocidad
volume:
description: Ajustar el volumen del habla
label: Volumen
deepseek:
description: deepseek.com
title: DeepSeek
elevenlabs:
description: elevenlabs.io
fields:
field:
simularity-boost:
description: Adherencia a la similitud de voz
label: Impulso de Similitud
speaker-boost:
description: Mejorar la similitud del hablante
label: Impulso del Hablante
speed:
description: Velocidad de generación de voz
label: Velocidad
stability:
description: Estabilidad de voz y aleatoriedad
label: Estabilidad
style:
description: Exageración del estilo de voz
label: Estilo
playground:
buttons:
button:
test-voice:
generating: Generando...
label: Probar Voz
fields:
field:
input:
placeholder: Ingresa texto para probar la voz...
language:
description: Seleccionar idioma de voz
label: Idioma
voice:
description: Seleccionar voz preferida
label: Voz
title: Playground de Voz
validation:
error-missing-api-key: Por favor ingresa una clave API para probar la voz.
title: ElevenLabs
fireworks:
description: fireworks.ai
title: Fireworks.ai
microsoft-speech:
description: speech.microsoft.com
fields:
field:
region:
description: Región del Servicio de Voz
label: Región
title: Microsoft / Azure Speech
index-tts-vllm:
description: https://index-tts.github.io/
title: Bilibili / IndexTTS
mistral:
description: mistral.ai
title: Mistral
moonshot:
description: moonshot.ai
title: Moonshot AI
novita:
description: novita.ai
title: Novita
ollama:
description: ollama.ai
title: Ollama
openai:
description: openai.com
title: OpenAI
openrouter:
description: openrouter.ai
title: OpenRouter
perplexity:
description: perplexity.ai
title: Perplexity
player2:
description: player2.game
title: Player2
together:
description: together.ai
title: Together.ai
google-generative-ai:
description: gemini.google.com
title: Google Gemini
featherless:
description: featherless.ai
title: Featherless AI
vllm:
description: vllm.ai
title: vLLM
volcengine:
description: volcengine.com
fields:
field:
appId:
description: ID de App del proyecto que puedes obtener en la Consola
label: ID de App
title: Volcano Engine
xai:
description: x.ai
title: xAI
transcriptions:
playground:
title: Playground de Transcripción
title: Proveedores
scene:
description: Configurar el entorno donde vive el personaje
title: Escena
themes:
color-scheme:
description: Cambiar el esquema de colores del escenario.
title: Esquema de Colores
developer:
description: Algunas opciones de desarrollador.
title: Desarrolladores
general:
description: Tema oscuro, idiomas, etc.
title: General
description: ¡Personaliza tu escenario!
sections:
section:
custom-color:
fields:
field:
primary-color:
label: Color primario
rgb-on:
title: ¡Lo Quiero Dinámico!
title: Esquema de Colores
developer:
title: Desarrollador
theme-presets:
presets:
- colors:
- Verde AIRI
description: ¡El color de tema verdoso predeterminado, traído por AIRI para ti!
title: Color Predeterminado
- colors:
- Taupe
- Beige
- Gris Ceniza
- Taupe Claro
- Marfil
- Gris Oliva
- Arena
- Gris Cálido
description: Tonos suaves y apagados inspirados en las pinturas de Giorgio Morandi
title: Colores Morandi
- colors:
- Azul Cielo
- Niebla
- Arena
- Verde Musgo
- Nenúfar
- Trigo
- Azul Pizarra
- Salvia
description: Paleta impresionista inspirada en las obras de Claude Monet
title: Colores Monet
- colors:
- Bronceado
- Taupe Cálido
- Umber
- Café
- Bronce
- Oro
- Mostaza
- Ámbar
description: Paleta de colores japonesa tradicional
title: Colores Japoneses
- colors:
- Azul Nórdico
- Hielo
- Fiordo
- Acero
- Glaciar
- Pizarra
- Nube
- Piedra
description: Esquema de colores minimalista escandinavo
title: Colores Nórdicos
- colors:
- Amanecer Rosado
- Rojo Chino
- Marrón Ahumado
- Verde Bambú
- Púrpura Oscuro
- Amarillo Dorado
- Azul Azure
- Ocre
description: >
Colores chinos tradicionales, derivados de textiles antiguos,
porcelana y pinturas
title: Colores Tradicionales Chinos
title: Presets de Esquema de Colores
title: Apariencia
sections:
section:
general:
title: General
theme:
title: Tema
description: |
Cambiar el tema base de AIRI, modo Claro o modo Oscuro.
title: Configuración
voices: Voz
vrm:
change-model:
from-file: Cargar desde Archivo
from-file-select: Seleccionar
from-url: Cargar desde URL
from-url-confirm: Cargar
from-url-placeholder: Ingresa la URL del modelo VRM
title: Cambiar Modelo
title: Configuración VRM
scale-and-position:
model-info-title: Información del Tamaño del Modelo
model-info-x: Ancho (X)
model-info-y: Alto (Y)
model-info-z: Profundidad (Z)
tips: |
Edita la posición inicial del modelo VRM.
Los ejes de coordenadas están visualizados.
scale: Escala
x: Desplazamiento X
'y': Desplazamiento Y
z: Desplazamiento Z
fov: FOV (grados)
rotation-y: Rotación (eje Y)
camera-distance: Distancia de cámara
eye-tracking-mode:
title: Mirando a
options:
option:
camera: Cámara
mouse: Ratón
disabled: Desactivado
switch-to-vrm:
title: ¿Cambiar a Avatar Live2D?
change-to-vrm: Haz clic aquí para cambiar a la configuración de avatar Live2D
theme-color-from-model:
button-extract:
title: Extraer
+32
View File
@@ -0,0 +1,32 @@
chat:
message:
character-name:
airi: AIRI
core-system: Sistema Central
you: Tu
message: Dile algo...
operations:
load-models: Cargar Modelos
load-models-status:
loading: Cargando
ready: Listo
select-a-audio-input: Selecciona una entrada de audio
select-a-model: Seleccionar Modelo
select-a-voice: Elige una voz
viewers:
debug-menu:
emotions: Emociones
emotions-btn:
angry: 😠 Enojado
awkward: 😳 Torpe
happy: 😄 Feliz
neutral: 🙂 Neutro
question: 🤔 Pregunta
sad: 😫 Triste
surprised: 🤯 Sorprendido
think: 🤨 Pensar
vrm:
camera: Cámara
model:
title: Modelo
waiting: Esperando...
@@ -0,0 +1,7 @@
import settings from './settings.yaml'
import stage from './stage.yaml'
export default {
settings,
stage,
}
@@ -0,0 +1,23 @@
allow-visible-on-all-workspaces:
title: Visibilidad Entre Espacios
description: Permitir que la ventana sea visible en todos los espacios de trabajo, solo macOS.
pages:
modules:
mcp-server:
description: Conectar y gestionar servidor MCP y herramientas
title: Servidor MCP
themes:
sections:
section:
window-shortcuts:
title: Atajos de Teclado
window-shortcuts:
description: Modificar los atajos de ventana.
title: Atajos de Ventana
toggle-move:
label: Alternar Mover
toggle-resize:
label: Alternar Redimensionar
toggle-ignore-mouse-event:
label: Alternar Ignorar Evento del Ratón
press-keys: Presionar Teclas...
@@ -0,0 +1,10 @@
operations:
load-models: Cargar Modelos
load-models-status:
loading: Cargando
ready: Listo
docs:
theme:
navbar:
appearance:
title: Apariencia
+2
View File
@@ -1,7 +1,9 @@
import en from './en'
import es from './es'
import zhHans from './zh-Hans'
export default {
en,
es,
'zh-Hans': zhHans,
}
@@ -34,6 +34,7 @@ language:
zh-CN: 中文
en-US: English (US)
en: English
es: Spanish
live2d:
change-model:
from-file: 从文件加载
+4
View File
@@ -16,6 +16,10 @@ const languageRemap: Record<string, string> = {
'en-GB': 'en',
'en-AU': 'en',
'en': 'en',
'es-ES': 'es',
'es-MX': 'es',
'es-AR': 'es',
'es': 'es',
}
export const DEFAULT_THEME_COLORS_HUE = 220.44
@@ -11,6 +11,10 @@ const languageRemap: Record<string, string> = {
'en-GB': 'en',
'en-AU': 'en',
'en': 'en',
'es-ES': 'es',
'es-MX': 'es',
'es-AR': 'es',
'es': 'es',
}
function getLocale() {