mirror of
https://github.com/navidrome/navidrome.git
synced 2025-04-24 07:30:57 +03:00
Add French localization
This commit is contained in:
parent
6cf4b81de9
commit
05958f5195
103
ui/package-lock.json
generated
103
ui/package-lock.json
generated
@ -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",
|
||||
|
@ -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",
|
||||
|
112
ui/src/i18n/fr.js
Normal file
112
ui/src/i18n/fr.js
Normal file
@ -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'
|
||||
}
|
||||
}
|
||||
})
|
@ -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(
|
||||
|
Loading…
x
Reference in New Issue
Block a user