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: 'Albums',
album: 'Album',
loading: 'Chargement…',
loadingMore: 'Chargement…',
loadingPlaylists: 'Chargement des listes…',
noAlbums: 'Aucun album trouvé.',
downloading: 'Téléchargement…',
downloadZip: 'Télécharger (ZIP)',
back: 'Retour',
cancel: 'Annuler',
save: 'Enregistrer',
delete: 'Supprimer',
use: 'Utiliser',
add: 'Ajouter',
new: 'Nouveau',
active: 'Actif',
download: 'Télécharger',
chooseDownloadFolder: 'Choisir le dossier de téléchargement',
noFolderSelected: 'Aucun dossier sélectionné',
rememberDownloadFolder: 'Mémoriser ce dossier',
filterGenre: 'Filtre genre',
filterSearchGenres: 'Rechercher des genres…',
filterNoGenres: 'Aucun genre trouvé',
filterClear: 'Effacer',
favorites: 'Favoris',
favoritesTooltipOff: 'Afficher uniquement les favoris',
favoritesTooltipOn: 'Tout afficher',
play: 'Lire',
bulkSelected: '{{count}} sélectionné(s)',
clearSelection: 'Effacer la sélection',
bulkAddToPlaylist: 'Ajouter à la playlist',
bulkRemoveFromPlaylist: 'Retirer de la playlist',
bulkClear: 'Désélectionner',
updaterAvailable: 'Mise à jour disponible',
updaterVersion: 'v{{version}} est disponible',
updaterWebsite: 'Site Web',
updaterModalTitle: 'Nouvelle version disponible',
updaterChangelog: 'Nouveautés',
updaterDownloadBtn: 'Télécharger maintenant',
updaterSkipBtn: 'Ignorer cette version',
updaterRemindBtn: 'Me rappeler plus tard',
updaterDone: 'Téléchargement terminé',
updaterShowFolder: 'Afficher dans le dossier',
updaterInstallHint: 'Fermez Psysonic et lancez le programme d\'installation manuellement.',
updaterAurHint: 'Installer la mise à jour via AUR :',
updaterErrorMsg: 'Échec du téléchargement',
updaterRetryBtn: 'Réessayer',
durationHoursMinutes: '{{hours}} h {{minutes}} min',
durationMinutesOnly: '{{minutes}} min',
updaterOpenGitHub: 'Ouvrir sur GitHub',
filters: 'Filtres',
more: 'plus',
yearRange: 'Plage d\'années',
clearAll: 'Tout effacer',
};