- {{ lang.name }}
- {{ locales.length - 1 > index ? $t('math.pipe') : '' }}
+ {{ lang.name }}
+
+
+
+
+ {{ lang.name }}
+
+
+ {{ locales.length - 1 > index ? $t('math.pipe') : '' }}
+
+
+
@@ -68,6 +90,17 @@ export default {
this.currentLanguage = object
},
},
+ computed: {
+ indexOfSelectedLocale() {
+ return this.locales.findIndex((element) => element.code === this.$store.state.language)
+ },
+ indexOfSecondLastLocale() {
+ return this.locales.length - 2
+ },
+ indexOfLastLocale() {
+ return this.locales.length - 1
+ },
+ },
created() {
this.setCurrentLanguage()
},
diff --git a/frontend/src/components/LanguageSwitchSelect.vue b/frontend/src/components/LanguageSwitchSelect.vue
index 5803a6300..109c020ff 100644
--- a/frontend/src/components/LanguageSwitchSelect.vue
+++ b/frontend/src/components/LanguageSwitchSelect.vue
@@ -17,6 +17,8 @@ export default {
{ value: 'de', text: this.$t('settings.language.de') },
{ value: 'en', text: this.$t('settings.language.en') },
{ value: 'es', text: this.$t('settings.language.es') },
+ { value: 'fr', text: this.$t('settings.language.fr') },
+ { value: 'nl', text: this.$t('settings.language.nl') },
],
}
},
diff --git a/frontend/src/i18n.js b/frontend/src/i18n.js
index 488012ce2..243c35a24 100644
--- a/frontend/src/i18n.js
+++ b/frontend/src/i18n.js
@@ -1,10 +1,6 @@
import Vue from 'vue'
import VueI18n from 'vue-i18n'
-import en from 'vee-validate/dist/locale/en'
-import de from 'vee-validate/dist/locale/de'
-import es from 'vee-validate/dist/locale/es'
-
Vue.use(VueI18n)
function loadLocaleMessages() {
@@ -14,24 +10,9 @@ function loadLocaleMessages() {
const matched = key.match(/([A-Za-z0-9-_]+)\./i)
if (matched && matched.length > 1) {
const locale = matched[1]
- messages[locale] = locales(key)
- if (locale === 'de') {
- messages[locale] = {
- validations: de,
- ...messages[locale],
- }
- }
- if (locale === 'en') {
- messages[locale] = {
- validations: en,
- ...messages[locale],
- }
- }
- if (locale === 'es') {
- messages[locale] = {
- validations: es,
- ...messages[locale],
- }
+ messages[locale] = {
+ validations: require(`vee-validate/dist/locale/${locale}`),
+ ...locales(key),
}
}
})
@@ -78,6 +59,32 @@ const numberFormats = {
useGrouping: false,
},
},
+ fr: {
+ decimal: {
+ style: 'decimal',
+ minimumFractionDigits: 2,
+ maximumFractionDigits: 2,
+ },
+ ungroupedDecimal: {
+ style: 'decimal',
+ minimumFractionDigits: 2,
+ maximumFractionDigits: 2,
+ useGrouping: false,
+ },
+ },
+ nl: {
+ decimal: {
+ style: 'decimal',
+ minimumFractionDigits: 2,
+ maximumFractionDigits: 2,
+ },
+ ungroupedDecimal: {
+ style: 'decimal',
+ minimumFractionDigits: 2,
+ maximumFractionDigits: 2,
+ useGrouping: false,
+ },
+ },
}
const dateTimeFormats = {
@@ -165,6 +172,62 @@ const dateTimeFormats = {
year: 'numeric',
},
},
+ fr: {
+ short: {
+ day: 'numeric',
+ month: 'numeric',
+ year: 'numeric',
+ },
+ long: {
+ day: 'numeric',
+ month: 'long',
+ year: 'numeric',
+ weekday: 'long',
+ hour: 'numeric',
+ minute: 'numeric',
+ },
+ monthShort: {
+ month: 'short',
+ },
+ month: {
+ month: 'long',
+ },
+ year: {
+ year: 'numeric',
+ },
+ monthAndYear: {
+ month: 'long',
+ year: 'numeric',
+ },
+ },
+ nl: {
+ short: {
+ day: 'numeric',
+ month: 'numeric',
+ year: 'numeric',
+ },
+ long: {
+ day: 'numeric',
+ month: 'long',
+ year: 'numeric',
+ weekday: 'long',
+ hour: 'numeric',
+ minute: 'numeric',
+ },
+ monthShort: {
+ month: 'short',
+ },
+ month: {
+ month: 'long',
+ },
+ year: {
+ year: 'numeric',
+ },
+ monthAndYear: {
+ month: 'long',
+ year: 'numeric',
+ },
+ },
}
export default new VueI18n({
diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json
index 74c5fca8e..9d63efdc6 100644
--- a/frontend/src/locales/de.json
+++ b/frontend/src/locales/de.json
@@ -254,6 +254,8 @@
"de": "Deutsch",
"en": "English",
"es": "Español",
+ "fr": "Français",
+ "nl": "Dutch",
"success": "Deine Sprache wurde erfolgreich geändert."
},
"name": {
diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json
index d7c745c72..7d90c9683 100644
--- a/frontend/src/locales/en.json
+++ b/frontend/src/locales/en.json
@@ -254,6 +254,8 @@
"de": "Deutsch",
"en": "English",
"es": "Español",
+ "fr": "Français",
+ "nl": "Holandés",
"success": "Your language has been successfully updated."
},
"name": {
diff --git a/frontend/src/locales/es.json b/frontend/src/locales/es.json
index 689f0926e..77a564589 100644
--- a/frontend/src/locales/es.json
+++ b/frontend/src/locales/es.json
@@ -254,6 +254,8 @@
"de": "Deutsch",
"en": "English",
"es": "Español",
+ "fr": "Francés",
+ "nl": "Holandés",
"success": "Tu idioma ha sido cambiado con éxito."
},
"name": {
diff --git a/frontend/src/locales/fr.json b/frontend/src/locales/fr.json
new file mode 100644
index 000000000..81426ffe4
--- /dev/null
+++ b/frontend/src/locales/fr.json
@@ -0,0 +1,341 @@
+{
+ "100": "100%",
+ "1000thanks": "1000 mercis d'être avec nous!",
+ "125": "125%",
+ "85": "85%",
+ "advanced-calculation": "Calcul avancé",
+ "auth": {
+ "left": {
+ "dignity": "Dignité",
+ "donation": "Donation",
+ "gratitude": "Gratitude",
+ "hasAccount": "Avez-vous déjà un compte?",
+ "hereLogin": "Connectez-vous ici",
+ "learnMore": "Pour plus de détails …",
+ "oneDignity": "Nous nous donnons mutuellement et rendons grâce avec Gradido.",
+ "oneDonation": "Vous êtes précieux pour la communauté. 1000 mercis d’être parmi nous.",
+ "oneGratitude": "Les uns pour les autres, pour tout le monde, pour la nature."
+ },
+ "navbar": {
+ "aboutGradido": "À propos de Gradido"
+ }
+ },
+ "back": "Retour",
+ "community": {
+ "choose-another-community": "Choisissez une autre communauté",
+ "community": "Communauté",
+ "continue-to-registration": "Continuez l´inscription",
+ "current-community": "Communauté actuelle",
+ "members": "Membres",
+ "moderators": "Modérateurs",
+ "myContributions": "Mes contributions aux biens communs",
+ "openContributionLinks": "liste de liens de contribution publique",
+ "openContributionLinkText": "Les {count} créations automatiques suivantes sont actuellement fournies par la communauté \"{name}\".",
+ "other-communities": "Autres communautés",
+ "statistic": "Statistiques",
+ "submitContribution": "Donner une contribution",
+ "switch-to-this-community": "Passer à cette communauté"
+ },
+ "contribution": {
+ "activity": "Activité",
+ "alert": {
+ "communityNoteList": "Vous trouverez ci-contre toutes les contributions versées et certifiées de tous les membres de cette communauté.",
+ "confirm": " Approuvé",
+ "myContributionNoteList": "À tout moment vous pouvez éditer ou supprimer les données qui n´ont pas été confirmées.",
+ "myContributionNoteSupport": "Vous aurez bientôt la possibilité de dialoguer avec un médiateur. Si vous rencontrez un problème maintenant, merci de contacter l´aide en ligne.",
+ "pending": "Inscription en attente de validation",
+ "rejected": "supprimé"
+ },
+ "date": "Contribution pour:",
+ "delete": "Supprimer la contribution! Êtes-vous sûr?",
+ "deleted": "La contribution a été supprimée! Mais elle restera visible.",
+ "formText": {
+ "bringYourTalentsTo": "Apportez vos talents à la communauté! Votre participation bénévole sera récompensée de 20 GDD/heure jusqu´à un plafond de 1000 GDD/mois.",
+ "describeYourCommunity": "Décrivez votre activité/service à la communauté en mentionnant le nombre d´heures, et calculez le montant à raison de 20 GDD/heure! Après confirmation par l´un de nos collaborateurs, le montant sera crédité sur votre compte.",
+ "maxGDDforMonth": "Vous pouvez seulement déclarer un montant maximum de (montant) GDD pour le mois sélectionné.",
+ "openAmountForMonth": "Pour