refactor(i18n): split locale files into per-namespace modules (Phase K) (#688)

Each src/locales/<lang>.ts (~1800 LOC) becomes a folder src/locales/<lang>/
with one module per i18n namespace (44 each) plus an index.ts barrel that
reassembles <lang>Translation in the original key order.

Mechanical, script-driven split with a JSON round-trip check: every
locale object is byte-identical to its pre-split form. i18n.ts is
unchanged — './locales/<lang>' now resolves to the folder index.

The per-namespace settings.ts files land ~440-460 LOC; a single i18n
namespace is the natural, non-arbitrary split unit for a flat string
table, so they are intentionally left whole.
This commit is contained in:
Frank Stellmacher
2026-05-14 14:06:31 +02:00
committed by GitHub
parent ec112922a2
commit 2409a1fec8
414 changed files with 17424 additions and 16624 deletions
+56
View File
@@ -0,0 +1,56 @@
export const common = {
albums: 'Álbumes',
album: 'Álbum',
loading: 'Cargando…',
loadingMore: 'Cargando…',
loadingPlaylists: 'Cargando Listas…',
noAlbums: 'No se encontraron álbumes.',
downloading: 'Descargando…',
downloadZip: 'Descargar (ZIP)',
back: 'Volver',
cancel: 'Cancelar',
save: 'Guardar',
delete: 'Eliminar',
use: 'Usar',
add: 'Agregar',
new: 'Nuevo',
active: 'Activo',
download: 'Descargar',
chooseDownloadFolder: 'Elegir carpeta de descarga',
noFolderSelected: 'Ninguna carpeta seleccionada',
rememberDownloadFolder: 'Recordar esta carpeta',
filterGenre: 'Filtro de Género',
filterSearchGenres: 'Buscar géneros…',
filterNoGenres: 'Ningún género coincide',
filterClear: 'Limpiar',
favorites: 'Favoritos',
favoritesTooltipOff: 'Mostrar solo favoritos',
favoritesTooltipOn: 'Mostrar todo',
play: 'Reproducir',
bulkSelected: '{{count}} seleccionados',
clearSelection: 'Limpiar selección',
bulkAddToPlaylist: 'Agregar a Lista',
bulkRemoveFromPlaylist: 'Quitar de Lista',
bulkClear: 'Limpiar selección',
updaterAvailable: 'Actualización disponible',
updaterVersion: 'v{{version}} está disponible',
updaterWebsite: 'Sitio web',
updaterModalTitle: 'Nueva Versión Disponible',
updaterChangelog: 'Novedades',
updaterDownloadBtn: 'Descargar Ahora',
updaterSkipBtn: 'Omitir esta Versión',
updaterRemindBtn: 'Recordarme Después',
updaterDone: 'Descarga completada',
updaterShowFolder: 'Mostrar en Carpeta',
updaterInstallHint: 'Cierra Psysonic y ejecuta el instalador manualmente.',
updaterAurHint: 'Instala la actualización vía AUR:',
updaterErrorMsg: 'Error de descarga',
updaterRetryBtn: 'Reintentar',
durationHoursMinutes: '{{hours}}h {{minutes}}m',
durationMinutesOnly: '{{minutes}}m',
updaterOpenGitHub: 'Abrir en GitHub',
filters: 'Filtros',
more: 'más',
yearRange: 'Rango de años',
clearAll: 'Limpiar todo',
};