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
+45
View File
@@ -0,0 +1,45 @@
export const queue = {
title: 'Wachtrij',
savePlaylist: 'Afspeellijst opslaan',
updatePlaylist: 'Afspeellijst bijwerken',
filterPlaylists: 'Afspeellijsten filteren…',
playlistName: 'Naam afspeellijst',
cancel: 'Annuleren',
save: 'Opslaan',
loadPlaylist: 'Afspeellijst laden',
loading: 'Laden…',
noPlaylists: 'Geen afspeellijsten gevonden.',
load: 'Wachtrij vervangen & afspelen',
appendToQueue: 'Toevoegen aan wachtrij',
delete: 'Verwijderen',
deleteConfirm: 'Afspeellijst "{{name}}" verwijderen?',
clear: 'Leegmaken',
shuffle: 'Wachtrij shufflen',
gapless: 'Naadloos',
crossfade: 'Overgang',
infiniteQueue: 'Oneindige wachtrij',
autoAdded: '— Automatisch toegevoegd —',
radioAdded: '— Radio —',
hide: 'Verbergen',
hideNowPlaying: 'Now playing info verbergen',
showNowPlaying: 'Now playing info weergeven',
close: 'Sluiten',
nextTracks: 'Volgende nummers',
shareQueue: 'Wachtrij-deellink kopiëren',
shareQueueEmpty: 'De wachtrij is leeg — niets om te delen.',
emptyQueue: 'De wachtrij is leeg.',
trackSingular: 'nummer',
trackPlural: 'nummers',
showRemaining: 'Resterende tijd tonen',
showTotal: 'Totale tijd tonen',
showEta: 'Geschatte eindtijd tonen',
replayGain: 'ReplayGain',
rgTrack: 'T {{db}} dB',
rgAlbum: 'A {{db}} dB',
rgPeak: 'Piek {{pk}}',
sourceOffline: 'Afspelen vanuit offlinebibliotheek',
sourceHot: 'Afspelen vanuit cache',
sourceStream: 'Afspelen vanuit netwerkstream',
clearCachedLoudnessWaveform: 'Clear cached loudness and waveform, then re-analyze this track',
recalculatingLoudnessWaveform: 'Recalculating loudness and waveform for this track…',
};