From 05958f5195d36e7aa0e0af858c6588c2f5386124 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Thu, 16 Apr 2020 13:59:51 +0200 Subject: [PATCH] Add French localization --- ui/package-lock.json | 103 +++++++++++++++++++++++++++++++++++++++ ui/package.json | 1 + ui/src/i18n/fr.js | 112 +++++++++++++++++++++++++++++++++++++++++++ ui/src/i18n/index.js | 3 +- 4 files changed, 218 insertions(+), 1 deletion(-) create mode 100644 ui/src/i18n/fr.js diff --git a/ui/package-lock.json b/ui/package-lock.json index ff5fb4ad5..9fdd51956 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -13132,6 +13132,109 @@ "resolved": "https://registry.npmjs.org/ra-language-english/-/ra-language-english-3.2.0.tgz", "integrity": "sha512-/XmwYWoQoB4MBkkzBCbg/ykCuRGjHQOHLk2ik6n1aM10AWHxiiJNyRw2aoLzH7Vc5rcp4BBJQCuhT+DgfYIJ2Q==" }, + "ra-language-french": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ra-language-french/-/ra-language-french-3.4.1.tgz", + "integrity": "sha512-PZh9+n0FDw2VTNQR/H+Q3FXD49J4FAynTxZ1Zp8z3uCVHtlUySJwPQDp/pTbSmLIfGZ5DWfJltK4IqUkikY+0w==", + "requires": { + "ra-core": "^3.4.1" + }, + "dependencies": { + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@testing-library/dom": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-5.6.1.tgz", + "integrity": "sha512-Y1T2bjtvQMewffn1CJ28kpgnuvPYKsBcZMagEH0ppfEMZPDc8AkkEnTk4smrGZKw0cblNB3lhM2FMnpfLExlHg==", + "requires": { + "@babel/runtime": "^7.5.5", + "@sheerun/mutationobserver-shim": "^0.3.2", + "aria-query": "3.0.0", + "pretty-format": "^24.8.0", + "wait-for-expect": "^1.2.0" + } + }, + "@testing-library/react": { + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-8.0.9.tgz", + "integrity": "sha512-I7zd+MW5wk8rQA5VopZgBfxGKUd91jgZ6Vzj2gMqFf2iGGtKwvI5SVTrIJcSFaOXK88T2EUsbsIKugDtoqOcZQ==", + "requires": { + "@babel/runtime": "^7.5.5", + "@testing-library/dom": "^5.6.1" + } + }, + "@types/yargs": { + "version": "13.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", + "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "ra-core": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ra-core/-/ra-core-3.4.1.tgz", + "integrity": "sha512-XHcYAU36aMhIAmspdQ299SLCclu7qMmPS/IXN1VPVlRJHAIurK5tgRUMStAgDRO05qIkU5Xnb9C9PA63VmlPwA==", + "requires": { + "@testing-library/react": "^8.0.7", + "classnames": "~2.2.5", + "date-fns": "^1.29.0", + "eventemitter3": "^3.0.0", + "inflection": "~1.12.0", + "lodash": "~4.17.5", + "prop-types": "^15.6.1", + "query-string": "^5.1.1", + "recompose": "~0.26.0", + "reselect": "~3.0.0" + } + } + } + }, "ra-language-italian": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ra-language-italian/-/ra-language-italian-3.0.0.tgz", diff --git a/ui/package.json b/ui/package.json index 7beaa789c..0fda1d26f 100644 --- a/ui/package.json +++ b/ui/package.json @@ -13,6 +13,7 @@ "prop-types": "^15.7.2", "ra-data-json-server": "^3.3.3", "ra-language-chinese": "^2.0.5", + "ra-language-french": "^3.4.1", "ra-language-italian": "^3.0.0", "ra-language-portuguese": "^1.6.0", "react": "^16.13.1", diff --git a/ui/src/i18n/fr.js b/ui/src/i18n/fr.js new file mode 100644 index 000000000..c7c5e1187 --- /dev/null +++ b/ui/src/i18n/fr.js @@ -0,0 +1,112 @@ +import deepmerge from 'deepmerge' +import frenchMessages from 'ra-language-french' + +export default deepmerge(frenchMessages, { + languageName: 'Français', + resources: { + song: { + name: 'Piste |||| Pistes', + fields: { + title: 'Titre', + artist: 'Artiste', + album: 'Album', + path: 'Chemin', + genre: 'Genre', + compilation: 'Compilation', + duration: 'Durée', + year: 'Année', + playCount: 'Nombre d\'écoutes', + trackNumber: '#', + size: 'Taille', + updatedAt: 'Mise à jour' + }, + bulk: { + addToQueue: 'Ajouter à la file' + } + }, + album: { + name: 'Album |||| Albums', + fields: { + name: 'Nom', + artist: 'Artiste', + songCount: 'Numéro de piste', + genre: 'Genre', + playCount: 'Numbre d\'écoutes', + compilation: 'Compilation', + duration: 'Durée', + year: 'Année' + }, + actions: { + playAll: 'Lire', + playNext: 'Lire ensuite', + addToQueue: 'Ajouter à la file', + shuffle: 'Mélanger' + } + }, + artist: { + name: 'Artiste |||| Artistes', + fields: { + name: 'Nom', + albumCount: 'Nombre d\'albums' + } + }, + user: { + name: 'Utilisateur |||| Utilisateurs', + fields: { + name: 'Nom' + } + }, + transcoding: { + name: 'Conversion |||| Conversions', + fields: { + name: 'Nom' + } + }, + player: { + name: 'Lecteur |||| Lecteurs', + fields: { + name: 'Nom' + } + } + }, + ra: { + auth: { + welcome1: 'Merci d\'avoir installé Navidrome !', + welcome2: 'Pour commencer, créez un compte administrateur', + confirmPassword: 'Confirmer votre mot de passe', + buttonCreateAdmin: 'Créer un compte administrateur' + }, + validation: { + invalidChars: 'Merci d\'utiliser uniquement des chiffres et des lettres', + passwordDoesNotMatch: 'Les mots de passes ne correspondent pas' + } + }, + menu: { + library: 'Bibliothèque', + settings: 'Paramètres', + version: 'Version%{version}', + personal: { + name: 'Paramètres personel', + options: { + theme: 'Thème', + language: 'Langue' + } + } + }, + player: { + playListsText: 'File de lecture', + openText: 'Ouvrir', + closeText: 'Fermer', + clickToPlayText: 'Cliquer pour lire', + clickToPauseText: 'Cliquer pour mettre en pause', + nextTrackText: 'Morceau suivant', + previousTrackText: 'Morceau précédent', + clickToDeleteText: `Cliquer pour supprimer %{name}`, + playModeText: { + order: 'Ordonner', + orderLoop: 'Tout répéter', + singleLoop: 'Repéter', + shufflePlay: 'Aleatoire' + } + } +}) diff --git a/ui/src/i18n/index.js b/ui/src/i18n/index.js index 9412f7994..864699a78 100644 --- a/ui/src/i18n/index.js +++ b/ui/src/i18n/index.js @@ -1,5 +1,6 @@ import deepmerge from 'deepmerge' import en from './en' +import fr from './fr' import it from './it' import pt from './pt' import cn from './cn' @@ -10,7 +11,7 @@ const addLanguages = (lang) => { const languages = { en } // Add new languages to the object bellow -addLanguages({ cn, it, pt }) +addLanguages({ cn, fr, it, pt }) // "Hack" to make "albumSongs" resource use the same translations as "song" Object.keys(languages).forEach(