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 player = {
regionLabel: 'Musikplayer',
openFullscreen: 'Vollbild-Player öffnen',
fullscreen: 'Vollbild-Player',
closeFullscreen: 'Vollbild schließen',
closeTooltip: 'Schließen (Esc)',
noTitle: 'Kein Titel',
stop: 'Stop',
prev: 'Vorheriger Titel',
play: 'Play',
pause: 'Pause',
previewActive: 'Vorschau läuft',
previewLabel: 'Vorschau',
delayModalTitle: 'Timer',
delayPauseSection: 'Pause nach',
delayStartSection: 'Start nach',
delayPreviewPause: 'Pause um',
delayPreviewStart: 'Start um',
delaySchedulePause: 'Pause planen',
delayScheduleStart: 'Start planen',
delayCancelPause: 'Pause-Timer abbrechen',
delayCancelStart: 'Start-Timer abbrechen',
delayInactivePause: 'Nur während der Wiedergabe verfügbar.',
delayInactiveStart: 'Nur in Pause mit geladenem Titel oder Radio.',
delayCustomMinutes: 'Eigene Dauer (Minuten)',
delayCustomPlaceholder: 'z. B. 2,5',
closeDelayModal: 'Schließen',
delayIn: 'in',
delayFmtSec: '{{n}} s',
delayFmtMin: '{{n}} Min',
delayFmtHr: '{{n}} Std',
delayCancel: 'Abbrechen',
delayApply: 'Übernehmen',
next: 'Nächster Titel',
repeat: 'Wiederholen',
repeatOff: 'Aus',
repeatAll: 'Alle',
repeatOne: 'Einen',
progress: 'Songfortschritt',
volume: 'Lautstärke',
toggleQueue: 'Warteschlange umschalten',
collapseQueueResize: 'Warteschlange einklappen, Breite ändern',
moreOptions: 'Weitere Optionen',
equalizer: 'Equalizer',
miniPlayer: 'Mini-Player',
lyrics: 'Lyrics',
fsLyricsToggle: 'Lyrics im Vollbild',
lyricsLoading: 'Lyrics werden geladen…',
lyricsNotFound: 'Keine Lyrics für diesen Titel gefunden',
lyricsSourceServer: 'Quelle: Server',
lyricsSourceLrclib: 'Quelle: LRCLIB',
lyricsSourceNetease: 'Quelle: Netease',
lyricsSourceLyricsplus: 'Quelle: YouLyPlus',
showDuration: 'Dauer anzeigen',
showRemainingTime: 'Verbleibende Zeit anzeigen',
};