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
+66
View File
@@ -0,0 +1,66 @@
export const common = {
albums: 'Albume',
album: 'Album',
loading: 'Se încarcă…',
loadingMore: 'Se încarcă…',
loadingPlaylists: 'Se încarcă Playlisturi…',
noAlbums: 'Niciun album găsit.',
downloading: 'Se descarcă…',
downloadZip: 'Descarcă (ZIP)',
back: 'Înapoi',
cancel: 'Anulează',
close: 'Închide',
save: 'Salvează',
delete: 'Șterge',
use: 'Folosește',
add: 'Adaugă',
new: 'Nou',
active: 'Activ',
download: 'Descarcă',
chooseDownloadFolder: 'Alege folderul de descărcare',
noFolderSelected: 'Niciun folder selectat',
rememberDownloadFolder: 'Ține minte acest folder',
filterGenre: 'Filtru de gen',
filterSearchGenres: 'Caută genuri…',
filterNoGenres: 'Niciun gen nu corespunde',
filterClear: 'Golește',
favorites: 'Favorite',
favoritesTooltipOff: 'Arată doar favorite',
favoritesTooltipOn: 'Arată tot',
play: 'Redă',
bulkSelected: '{{count}} selectate',
clearSelection: 'Golește selecția',
bulkAddToPlaylist: 'Adaugă la Playlist',
bulkRemoveFromPlaylist: 'Șterge din Playlist',
bulkClear: 'Golește selecția',
updaterAvailable: 'Update disponibil',
updaterVersion: 'v{{version}} este disponibil',
updaterWebsite: 'Website',
updaterModalTitle: 'Nouă versiune disponibilă',
updaterChangelog: "Ce este nou",
updaterDownloadBtn: 'Descarcă acum',
updaterSkipBtn: 'Sari peste această Versiune',
updaterRemindBtn: 'Amintește-mi mai târziu',
updaterDone: 'Descărcare finalizată',
updaterShowFolder: 'Arată în Folder',
updaterInstallHint: 'Închide Psysonic și rulează programul de instalare manual.',
updaterAurHint: 'Instalează update-ul prin AUR:',
updaterErrorMsg: 'Descărcare eșuată',
updaterRetryBtn: 'Reîncearcă',
updaterInstallNow: 'Instalează acum',
updaterMacReadyTitle: 'Pregătit de instalare',
updaterMacReady: 'Acest update descarcă, verifică și este aplicat în loc — nu este nevoie de DMG. Aplicația își dă restart automat când e gata.',
updaterTrustNotarized: 'Notarizat de Apple',
updaterTrustSignature: 'Semnătură verificată',
updaterMacDoneTitle: 'Update instalat',
updaterRestartingIn: 'Se restartează în {{n}}s…',
updaterRestarting: 'Se restartează…',
updaterRestartNow: 'Restart acum',
durationHoursMinutes: '{{hours}}h {{minutes}}m',
durationMinutesOnly: '{{minutes}}m',
updaterOpenGitHub: 'Deschide în GitHub',
filters: 'Filtre',
more: 'mai mult',
yearRange: 'Interval de an',
clearAll: 'Golește tot',
};