Skip to content

Commit b80ea4d

Browse files
committed
feat: add french localizations
courtesy of @AnthonyDomotique closes #97
1 parent 0d06927 commit b80ea4d

File tree

2 files changed

+150
-1
lines changed

2 files changed

+150
-1
lines changed

src/i18n/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import cze from './locales/cze.json?url';
22
import de from './locales/de.json?url';
33
import en from './locales/en.json?url';
44
import es from './locales/es.json?url';
5+
import fr from './locales/fr.json?url';
56
import hu from './locales/hu.json?url';
67
import it from './locales/it.json?url';
78
import pl from './locales/pl.json?url';
@@ -11,7 +12,7 @@ import tr from './locales/tr.json?url';
1112

1213
import { createI18n, IntlNumberFormat } from 'vue-i18n';
1314

14-
const localeUrls = { de, en, tr, it, 'pt-br': ptbr, cze, hu, pl, ru, es };
15+
const localeUrls = { de, en, tr, it, 'pt-br': ptbr, cze, hu, pl, ru, es, fr };
1516

1617
export const availableLocales = Object.keys(localeUrls);
1718

src/i18n/locales/fr.json

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
{
2+
"navigation": {
3+
"tools": {
4+
"tools": "Outils",
5+
"changePassword": {
6+
"change": "Changer le mot de passe",
7+
"current": "Mot de passe actuel",
8+
"new": "Nouveau mot de passe",
9+
"invalid": "Mot de passe actuel invalide.",
10+
"unknownError": "Quelque chose s'est mal passé, veuillez réessayer plus tard."
11+
},
12+
"copyPaste": {
13+
"copy": "Copier les données de {year}",
14+
"paste": "Coller les données de {from} dans {to}",
15+
"confirm": "Êtes-vous sûr de vouloir copier les données de {from} dans {to}?"
16+
},
17+
"demo": {
18+
"loadDemoData": "Charger les données de démonstration"
19+
},
20+
"deleteYear": {
21+
"delete": "Supprimer {year}",
22+
"confirm": "Êtes-vous sûr de vouloir supprimer {year}?"
23+
},
24+
"export": {
25+
"export": "Exporter en fichier json"
26+
},
27+
"import": {
28+
"import": "Importer depuis un fichier json",
29+
"what": {
30+
"google": "Fichier budgétaire annuel Google-Sheets",
31+
"ocular": "Un fichier précédemment exporté",
32+
"title": "Que souhaitez-vous importer?"
33+
},
34+
"ocular": {
35+
"pickFile": "Sélectionnez votre fichier .json à importer",
36+
"import": "Importer les données ocular"
37+
},
38+
"google": {
39+
"import": "Importer les données google",
40+
"pickFile": "Sélectionnez votre fichier .csv à importer",
41+
"expenses": "Expenses.csv",
42+
"income": "Income.csv"
43+
}
44+
},
45+
"privacyMode": {
46+
"disable": "Passer en mode public",
47+
"enable": "Passer en mode privé"
48+
}
49+
},
50+
"info": {
51+
"about": "À propos d'Ocular",
52+
"github": "Découvrez ce projet sur {link}, envisagez un {donation} pour le maintenir en vie!",
53+
"madeWithLove": "Créé avec ❤️ par Simon",
54+
"meta": "{version} / {date} / {sha}",
55+
"donation": "don"
56+
},
57+
"theme": {
58+
"change": "Changer le thème de couleur"
59+
},
60+
"year": {
61+
"change": "Passer à une autre année"
62+
},
63+
"auth": {
64+
"welcomeBack": "Content de vous revoir!",
65+
"signIn": "Se connecter",
66+
"username": "Nom d'utilisateur",
67+
"password": "Mot de passe",
68+
"loginFailed": "Échec de la connexion, nom d'utilisateur et/ou mot de passe invalide."
69+
},
70+
"admin": {
71+
"settings": "Paramètres administrateur",
72+
"createUser": "Créer un utilisateur",
73+
"username": "Nom d'utilisateur",
74+
"password": "Mot de passe",
75+
"admin": "Administrateur",
76+
"conflict": "Un utilisateur avec ce nom existe déjà.",
77+
"error": "Quelque chose s'est mal passé, veuillez réessayer plus tard.",
78+
"deleteUserConfirmation": "Êtes-vous sûr de vouloir supprimer cet utilisateur?",
79+
"manageUsers": "Gérer les utilisateurs",
80+
"noUsersFound": "Aucun utilisateur trouvé..."
81+
},
82+
"settings": {
83+
"settings": "Paramètres",
84+
"language": "Langue",
85+
"currency": "Devise",
86+
"firstMonthOfYear": "Premier mois de l'année",
87+
"carryOverNetSavings": "Reporter les économies nettes",
88+
"carryOverNetSavingsInfo": "Si activé, les économies nettes de l'année précédente seront reportées à l'année suivante.",
89+
"showAnimationsAndTransitions": "Afficher les animations et transitions"
90+
},
91+
"status": {
92+
"synchronizationFailedDueToNetworkError": "La synchronisation a échoué en raison d'une erreur réseau!",
93+
"retryingPleaseWait": "Nouvelle tentative, veuillez patienter...",
94+
"retrySynchronization": "Réessayer la synchronisation"
95+
}
96+
},
97+
"shared": {
98+
"addGroup": "Ajouter un groupe",
99+
"append": "Déplacer “{from}” après “{to}”",
100+
"average": "Moyenne",
101+
"move": "Déplacer “{from}”",
102+
"moveInto": "Déplacer “{from}” dans “{to}”",
103+
"prepend": "Déplacer “{from}” avant “{to}”",
104+
"fillRow": "Remplir la ligne",
105+
"fillRowToRight": "Remplir vers la droite",
106+
"total": "Total",
107+
"totals": "Totaux",
108+
"placeholder": "Commencez par remplir les onglets revenus / dépenses! :)"
109+
},
110+
"page": {
111+
"income": {
112+
"title": "Revenu",
113+
"incomeFor": "Revenu pour {year}"
114+
},
115+
"expenses": {
116+
"title": "Dépenses",
117+
"expensesFor": "Dépenses pour {year}"
118+
},
119+
"dashboard": {
120+
"title": "Tableau de bord",
121+
"tables": "Tableaux",
122+
"income": "Revenu",
123+
"incomeTrend": "Tendance des revenus",
124+
"allTime": "Aperçu de tous les temps",
125+
"allTimeFromTo": "Tous les temps de {from} à {to}",
126+
"expenses": "Dépenses",
127+
"expensesTrend": "Tendance des dépenses",
128+
"endingBalance": "Solde final",
129+
"budgetFor": "Budget annuel pour {year}",
130+
"remainingBalance": "Solde restant jusqu'à {year}",
131+
"netSavings": "Économies nettes",
132+
"yearInThePast": "L'année est dans le passé",
133+
"yearInTheFuture": "L'année est dans le futur",
134+
"yearEnding": "Cette année touche à sa fin...",
135+
"yoyIncomeGrowth": "Croissance des revenus d'une année sur l'autre",
136+
"yoyExpenseGrowth": "Croissance des dépenses d'une année sur l'autre",
137+
"allTimeIncome": "Revenu total",
138+
"allTimeExpenses": "Dépenses totales",
139+
"allTimeSavings": "Économies totales",
140+
"downloadAsPNG": "Télécharger en PNG",
141+
"downloadAsSVG": "Télécharger en SVG",
142+
"jumpToIncome": "Aller au revenu pour {year}",
143+
"jumpToExpenses": "Aller aux dépenses pour {year}",
144+
"lastYear": "L'année dernière",
145+
"surplus": "Excédent"
146+
}
147+
}
148+
}

0 commit comments

Comments
 (0)