Skip to content

Commit 4657ce8

Browse files
authored
Merge pull request #46 from levante-hub/feature/v1.2.0-beta.1
feat: Multi-language system (ES/EN) - Phase 1-4 Complete
2 parents a22fae5 + 61ef891 commit 4657ce8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+2118
-426
lines changed

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "Levante",
3-
"version": "1.1.1-beta.1",
3+
"version": "1.2.0-beta.1",
44
"description": "A friendly, private desktop chat app with AI and MCP integration",
55
"main": ".vite/build/main.js",
66
"homepage": "https://github.com/minte-community/levante",
@@ -74,6 +74,7 @@
7474
"dotenv": "^17.2.1",
7575
"electron-store": "^10.1.0",
7676
"embla-carousel-react": "^8.6.0",
77+
"i18next": "^25.6.0",
7778
"input-otp": "^1.4.2",
7879
"katex": "^0.16.22",
7980
"keytar": "^7.9.0",
@@ -84,6 +85,7 @@
8485
"react-day-picker": "^9.9.0",
8586
"react-dom": "^19.1.1",
8687
"react-hook-form": "^7.62.0",
88+
"react-i18next": "^16.1.4",
8789
"react-markdown": "^10.1.0",
8890
"react-resizable-panels": "^3.0.4",
8991
"react-syntax-highlighter": "^15.6.6",

pnpm-lock.yaml

Lines changed: 59 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/locales/en/dialogs.json

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
{
2+
"update": {
3+
"available": {
4+
"title": "Update Available",
5+
"message": "A new version of Levante ({{version}}) is available. Would you like to download it now?",
6+
"detail": "Current version: {{currentVersion}}",
7+
"buttons": {
8+
"download": "Download",
9+
"later": "Later",
10+
"skip": "Skip This Version"
11+
}
12+
},
13+
"downloading": {
14+
"title": "Downloading Update",
15+
"message": "Downloading Levante {{version}}...",
16+
"progress": "{{percent}}% complete"
17+
},
18+
"downloaded": {
19+
"title": "Update Ready",
20+
"message": "Levante {{version}} has been downloaded and is ready to install.",
21+
"detail": "The application will restart to apply the update.",
22+
"buttons": {
23+
"restart": "Restart Now",
24+
"later": "Later"
25+
}
26+
},
27+
"error": {
28+
"title": "Update Error",
29+
"message": "An error occurred while checking for updates.",
30+
"detail": "{{error}}",
31+
"button": "OK"
32+
},
33+
"not_available": {
34+
"title": "No Updates Available",
35+
"message": "You're using the latest version of Levante ({{version}}).",
36+
"button": "OK"
37+
}
38+
},
39+
"restart": {
40+
"title": "Restart Required",
41+
"message": "Language will change to {{language}} after restarting.",
42+
"detail": "Would you like to restart the application now?",
43+
"buttons": {
44+
"restart": "Restart Now",
45+
"later": "Later"
46+
}
47+
},
48+
"error": {
49+
"title": "Error",
50+
"message": "An error occurred",
51+
"button": "OK"
52+
},
53+
"confirm": {
54+
"title": "Confirm",
55+
"message": "Are you sure?",
56+
"buttons": {
57+
"yes": "Yes",
58+
"no": "No",
59+
"cancel": "Cancel"
60+
}
61+
}
62+
}

src/main/locales/en/menu.json

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
{
2+
"app": {
3+
"about": "About Levante",
4+
"services": "Services",
5+
"hide": "Hide Levante",
6+
"hide_others": "Hide Others",
7+
"show_all": "Show All",
8+
"quit": "Quit Levante"
9+
},
10+
"file": {
11+
"label": "File",
12+
"new_chat": "New Chat",
13+
"close": "Close Window"
14+
},
15+
"edit": {
16+
"label": "Edit",
17+
"undo": "Undo",
18+
"redo": "Redo",
19+
"cut": "Cut",
20+
"copy": "Copy",
21+
"paste": "Paste",
22+
"select_all": "Select All"
23+
},
24+
"view": {
25+
"label": "View",
26+
"reload": "Reload",
27+
"force_reload": "Force Reload",
28+
"toggle_devtools": "Toggle Developer Tools",
29+
"actual_size": "Actual Size",
30+
"zoom_in": "Zoom In",
31+
"zoom_out": "Zoom Out",
32+
"toggle_fullscreen": "Toggle Full Screen"
33+
},
34+
"window": {
35+
"label": "Window",
36+
"minimize": "Minimize",
37+
"zoom": "Zoom",
38+
"close": "Close",
39+
"bring_all_to_front": "Bring All to Front"
40+
},
41+
"help": {
42+
"label": "Help",
43+
"learn_more": "Learn More",
44+
"documentation": "Documentation",
45+
"search_issues": "Search Issues",
46+
"check_updates": "Check for Updates..."
47+
}
48+
}

src/main/locales/es/dialogs.json

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
{
2+
"update": {
3+
"available": {
4+
"title": "Actualización Disponible",
5+
"message": "Una nueva versión de Levante ({{version}}) está disponible. ¿Deseas descargarla ahora?",
6+
"detail": "Versión actual: {{currentVersion}}",
7+
"buttons": {
8+
"download": "Descargar",
9+
"later": "Más Tarde",
10+
"skip": "Omitir Esta Versión"
11+
}
12+
},
13+
"downloading": {
14+
"title": "Descargando Actualización",
15+
"message": "Descargando Levante {{version}}...",
16+
"progress": "{{percent}}% completado"
17+
},
18+
"downloaded": {
19+
"title": "Actualización Lista",
20+
"message": "Levante {{version}} se ha descargado y está listo para instalar.",
21+
"detail": "La aplicación se reiniciará para aplicar la actualización.",
22+
"buttons": {
23+
"restart": "Reiniciar Ahora",
24+
"later": "Más Tarde"
25+
}
26+
},
27+
"error": {
28+
"title": "Error de Actualización",
29+
"message": "Ocurrió un error al buscar actualizaciones.",
30+
"detail": "{{error}}",
31+
"button": "OK"
32+
},
33+
"not_available": {
34+
"title": "No Hay Actualizaciones Disponibles",
35+
"message": "Estás usando la última versión de Levante ({{version}}).",
36+
"button": "OK"
37+
}
38+
},
39+
"restart": {
40+
"title": "Reinicio Requerido",
41+
"message": "El idioma cambiará a {{language}} después de reiniciar.",
42+
"detail": "¿Deseas reiniciar la aplicación ahora?",
43+
"buttons": {
44+
"restart": "Reiniciar Ahora",
45+
"later": "Más Tarde"
46+
}
47+
},
48+
"error": {
49+
"title": "Error",
50+
"message": "Ocurrió un error",
51+
"button": "OK"
52+
},
53+
"confirm": {
54+
"title": "Confirmar",
55+
"message": "¿Estás seguro?",
56+
"buttons": {
57+
"yes": "",
58+
"no": "No",
59+
"cancel": "Cancelar"
60+
}
61+
}
62+
}

src/main/locales/es/menu.json

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
{
2+
"app": {
3+
"about": "Acerca de Levante",
4+
"services": "Servicios",
5+
"hide": "Ocultar Levante",
6+
"hide_others": "Ocultar Otros",
7+
"show_all": "Mostrar Todo",
8+
"quit": "Salir de Levante"
9+
},
10+
"file": {
11+
"label": "Archivo",
12+
"new_chat": "Nuevo Chat",
13+
"close": "Cerrar Ventana"
14+
},
15+
"edit": {
16+
"label": "Editar",
17+
"undo": "Deshacer",
18+
"redo": "Rehacer",
19+
"cut": "Cortar",
20+
"copy": "Copiar",
21+
"paste": "Pegar",
22+
"select_all": "Seleccionar Todo"
23+
},
24+
"view": {
25+
"label": "Ver",
26+
"reload": "Recargar",
27+
"force_reload": "Forzar Recarga",
28+
"toggle_devtools": "Alternar Herramientas de Desarrollo",
29+
"actual_size": "Tamaño Real",
30+
"zoom_in": "Ampliar",
31+
"zoom_out": "Reducir",
32+
"toggle_fullscreen": "Alternar Pantalla Completa"
33+
},
34+
"window": {
35+
"label": "Ventana",
36+
"minimize": "Minimizar",
37+
"zoom": "Ampliar",
38+
"close": "Cerrar",
39+
"bring_all_to_front": "Traer Todo al Frente"
40+
},
41+
"help": {
42+
"label": "Ayuda",
43+
"learn_more": "Aprender Más",
44+
"documentation": "Documentación",
45+
"search_issues": "Buscar Problemas",
46+
"check_updates": "Buscar Actualizaciones..."
47+
}
48+
}

src/main/services/aiService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ export class AIService {
160160
case "openrouter":
161161
if (!providerWithModel.apiKey) {
162162
throw new Error(
163-
`OpenRouter API key missing for provider ${providerWithModel.name}`
163+
`OpenRouter API key is required. Get your free API key at https://openrouter.ai/keys`
164164
);
165165
}
166166

0 commit comments

Comments
 (0)