diff options
| author | Ariel Costas Guerrero <ariel@costas.dev> | 2025-06-24 16:14:28 +0200 |
|---|---|---|
| committer | Ariel Costas Guerrero <ariel@costas.dev> | 2025-06-24 16:14:28 +0200 |
| commit | ecb73e1684b42265af3f8d93541600e4d0f9c414 (patch) | |
| tree | 26e413973b32de0367aa06cfc0df329c67733821 /src/frontend/app/i18n | |
| parent | f65b4e1e0d5648038823962349279be4badc68ed (diff) | |
Implement i18n
Closes #18
Diffstat (limited to 'src/frontend/app/i18n')
| -rw-r--r-- | src/frontend/app/i18n/index.ts | 31 | ||||
| -rw-r--r-- | src/frontend/app/i18n/locales/en-GB.json | 46 | ||||
| -rw-r--r-- | src/frontend/app/i18n/locales/es-ES.json | 46 | ||||
| -rw-r--r-- | src/frontend/app/i18n/locales/gl-ES.json | 46 |
4 files changed, 169 insertions, 0 deletions
diff --git a/src/frontend/app/i18n/index.ts b/src/frontend/app/i18n/index.ts new file mode 100644 index 0000000..a7ba6aa --- /dev/null +++ b/src/frontend/app/i18n/index.ts @@ -0,0 +1,31 @@ +import i18n from 'i18next'; +import { initReactI18next } from 'react-i18next'; +import LanguageDetector from 'i18next-browser-languagedetector'; +import esES from './locales/es-ES.json'; +import glES from './locales/gl-ES.json'; +import enGB from './locales/en-GB.json'; + +// Add more languages as needed +const resources = { + 'es-ES': { translation: esES }, + 'gl-ES': { translation: glES }, + 'en-GB': { translation: enGB }, +}; + +i18n + .use(LanguageDetector) + .use(initReactI18next) + .init({ + resources, + fallbackLng: 'es-ES', + interpolation: { + escapeValue: false, + }, + supportedLngs: ['es-ES', 'gl-ES', 'en-GB'], + detection: { + order: ['querystring', 'cookie', 'localStorage', 'navigator', 'htmlTag'], + caches: ['localStorage', 'cookie'], + }, + }); + +export default i18n; diff --git a/src/frontend/app/i18n/locales/en-GB.json b/src/frontend/app/i18n/locales/en-GB.json new file mode 100644 index 0000000..f53a802 --- /dev/null +++ b/src/frontend/app/i18n/locales/en-GB.json @@ -0,0 +1,46 @@ +{ + "about": { + "title": "About UrbanoVigo Web", + "description": "Web app to find stops and arrival times for Vigo's urban buses, Spain.", + "credits": "Credits", + "github": "Code on GitHub", + "developed_by": "Developed by", + "data_source_prefix": "Data from", + "data_source_middle": "under license", + "settings": "Settings", + "theme": "Mode:", + "theme_light": "Light", + "theme_dark": "Dark", + "table_style": "Table style:", + "table_style_regular": "Show in order", + "table_style_grouped": "Group by line", + "map_position_mode": "Map position:", + "map_position_gps": "GPS position", + "map_position_last": "Where I left it", + "details_summary": "What does this mean?", + "details_table": "The timetable can be shown in two ways:", + "details_regular": "Stops are shown in the order they are visited. Apps like Infobus (Vitrasa) use this style.", + "details_grouped": "Stops are grouped by bus line. Apps like iTranvias (A Coruña) or Moovit (more or less) use this style." + }, + "stoplist": { + "search_placeholder": "Search stop...", + "favourites": "Favourites", + "recents": "Recent" + }, + "estimates": { + "minutes": "min", + "meters": "m", + "edit": "Edit name", + "favourite": "Favourite", + "not_found": "Stop not found" + }, + "map": { + "popup_title": "Stop", + "lines": "Lines" + }, + "common": { + "loading": "Loading...", + "error": "An unexpected error occurred.", + "404": "The requested page could not be found." + } +} diff --git a/src/frontend/app/i18n/locales/es-ES.json b/src/frontend/app/i18n/locales/es-ES.json new file mode 100644 index 0000000..814019e --- /dev/null +++ b/src/frontend/app/i18n/locales/es-ES.json @@ -0,0 +1,46 @@ +{ + "about": { + "title": "Sobre UrbanoVigo Web", + "description": "Aplicación web para encontrar paradas y tiempos de llegada de los autobuses urbanos de Vigo, España.", + "credits": "Créditos", + "github": "Código en GitHub", + "developed_by": "Desarrollado por", + "data_source_prefix": "Datos obtenidos de", + "data_source_middle": "bajo licencia", + "settings": "Ajustes", + "theme": "Modo:", + "theme_light": "Claro", + "theme_dark": "Oscuro", + "table_style": "Estilo de tabla:", + "table_style_regular": "Mostrar por orden", + "table_style_grouped": "Agrupar por línea", + "map_position_mode": "Posición del mapa:", + "map_position_gps": "Posición GPS", + "map_position_last": "Donde lo dejé", + "details_summary": "¿Qué significa esto?", + "details_table": "La tabla de horarios puede mostrarse de dos formas:", + "details_regular": "Las paradas se muestran en el orden en que se visitan. Aplicaciones como Infobus (Vitrasa) usan este estilo.", + "details_grouped": "Las paradas se agrupan por la línea de autobús. Aplicaciones como iTranvias (A Coruña) o Moovit (más o menos) usan este estilo." + }, + "stoplist": { + "search_placeholder": "Buscar parada...", + "favourites": "Favoritas", + "recents": "Recientes" + }, + "estimates": { + "minutes": "min", + "meters": "m", + "edit": "Editar nombre", + "favourite": "Favorito", + "not_found": "No se encontró la parada" + }, + "map": { + "popup_title": "Parada", + "lines": "Líneas" + }, + "common": { + "loading": "Cargando...", + "error": "Ha ocurrido un error inesperado.", + "404": "La página solicitada no se pudo encontrar." + } +} diff --git a/src/frontend/app/i18n/locales/gl-ES.json b/src/frontend/app/i18n/locales/gl-ES.json new file mode 100644 index 0000000..3c0c2fc --- /dev/null +++ b/src/frontend/app/i18n/locales/gl-ES.json @@ -0,0 +1,46 @@ +{ + "about": { + "title": "Sobre UrbanoVigo Web", + "description": "Aplicación web para atopar paradas e tempos de chegada dos autobuses urbanos de Vigo, España.", + "credits": "Créditos", + "github": "Código en GitHub", + "developed_by": "Desenvolvido por", + "data_source_prefix": "Datos obtidos de", + "data_source_middle": "baixo licenza", + "settings": "Axustes", + "theme": "Modo:", + "theme_light": "Claro", + "theme_dark": "Escuro", + "table_style": "Estilo de táboa:", + "table_style_regular": "Mostrar por orde", + "table_style_grouped": "Agrupar por liña", + "map_position_mode": "Posición do mapa:", + "map_position_gps": "Posición GPS", + "map_position_last": "Onde o deixei", + "details_summary": "Que significa isto?", + "details_table": "A táboa de horarios pode mostrarse de dúas formas:", + "details_regular": "As paradas móstranse na orde na que se visitan. Aplicacións como Infobus (Vitrasa) usan este estilo.", + "details_grouped": "As paradas agrúpanse pola liña de autobús. Aplicacións como iTranvias (A Coruña) ou Moovit (máis ou menos) usan este estilo." + }, + "stoplist": { + "search_placeholder": "Buscar parada...", + "favourites": "Favoritas", + "recents": "Recentes" + }, + "estimates": { + "minutes": "min", + "meters": "m", + "edit": "Editar nome", + "favourite": "Favorita", + "not_found": "Non se atopou a parada" + }, + "map": { + "popup_title": "Parada", + "lines": "Liñas" + }, + "common": { + "loading": "Cargando...", + "error": "Produciuse un erro inesperado.", + "404": "Non se puido atopar a páxina solicitada." + } +} |
