feat(i18n): add French language support and enhance localization

- Introduced French as a supported language across the application, updating locale files and adding translations for various components.
- Enhanced language handling logic to accommodate French, ensuring proper detection and fallback mechanisms.
- Updated UI elements to include French language options, improving accessibility for French-speaking users.
- Refactored SEO handling to include French in hreflang links, enhancing search engine indexing for multilingual content.
- Added new scripts for managing French translations and ensuring consistency across language files.
This commit is contained in:
Torsten Schulz (local)
2026-04-07 18:04:03 +02:00
parent 545357e008
commit 3e74ae47f4
56 changed files with 5220 additions and 175 deletions

View File

@@ -0,0 +1,191 @@
{
"welcome": "Bienvenue sur YourPart",
"imprint": {
"title": "Mentions légales",
"button": "Mentions légales"
},
"dataPrivacy": {
"title": "Politique de confidentialité",
"button": "Politique de confidentialité"
},
"contact": {
"title": "Contact",
"button": "Contact"
},
"error-title": "Erreur",
"warning-title": "Avertissement",
"info-title": "Information",
"dialog": {
"contact": {
"email": "Adresse e-mail",
"name": "Nom",
"message": "Votre message pour nous",
"accept": "Votre adresse e-mail sera temporairement stockée dans notre système. Une fois votre demande traitée, l'adresse e-mail sera supprimée du système.",
"acceptdatasave": "J'accepte le stockage temporaire de mon adresse e-mail.",
"accept2": "Malheureusement, nous ne pouvons pas vous répondre sans ce consentement."
}
},
"general": {
"datetimelong": "dd.MM.yyyy HH:mm:ss",
"loading": "Chargement...",
"back": "Retour",
"cancel": "Annuler",
"ok": "OK",
"yes": "Oui",
"no": "Non"
},
"OK": "OK",
"Cancel": "Annuler",
"yes": "Oui",
"no": "Non",
"message": {
"close": "Fermer"
},
"appShell": {
"header": {
"tagline": "Plateforme communautaire",
"beta": "Bêta",
"backend": "Backend",
"daemon": "Daemon",
"language": "Langue"
},
"footer": {
"systemLabel": "Système",
"noOpenDialogs": "Pas de dialogues ouverts",
"activeWindows": "{count} fenêtre(s) active(s)",
"systemReady": "Système prêt",
"systemStatusUnavailable": "L'état du système n'est actuellement pas directement disponible dans cette vue."
}
},
"widgets": {
"dashboard": {
"dragHandle": "Déplacer",
"loading": "Chargement..."
},
"birthdays": {
"today": "Aujourd'hui!",
"tomorrow": "Demain",
"turningAge": "(aura {age})",
"inDays": "{count} jours",
"empty": "Aucun anniversaire d'ami visible"
},
"upcoming": {
"today": "Aujourd'hui",
"tomorrow": "Demain",
"timeAt": "{time} h",
"allDay": "Toute la journée",
"empty": "Aucun rendez-vous à venir"
},
"appointments": {
"title": "📅 Rendez-vous",
"loading": "Chargement des rendez-vous...",
"empty": "Aucune date à venir",
"loadError": "Les rendez-vous n'ont pas pu être chargés"
},
"list": {
"noEntries": "Aucune entrée",
"entriesCount": "({count} entrées)",
"fieldsCount": "({count} champs)"
},
"news": {
"emptyValue": "—"
},
"falukant": {
"emptyValue": "—"
},
"vocabCourses": {
"empty": "Vous n'êtes pas actuellement inscrit à un cours de vocabulaire.",
"browseCourses": "Découvrez les cours",
"unnamedCourse": "Cours sans titre",
"lessonLine": "Leçon n° {number} : {title}",
"noLessons": "Pas encore de cours dans ce cours.",
"allDone": "Terminé toutes les leçons",
"openLesson": "À la leçon",
"openCourse": "Au cours"
}
},
"gender": {
"male": "Männlich",
"female": "Weiblich",
"transmale": "Homme trans",
"transfemale": "Femme trans",
"nonbinary": "Non binaire"
},
"common": {
"edit": "Modifier",
"delete": "Supprimer",
"create": "Créer",
"update": "Mise à jour",
"save": "Sauvegarder",
"add": "Ajouter",
"cancel": "Annuler",
"yes": "Ja",
"no": "Nein"
},
"sectionBar": {
"sections": {
"default": "Zone",
"falukant": "Falukant",
"vocab": "Entraîneur de vocabulaire",
"forum": "Forum",
"community": "Communauté",
"settings": "Paramètres",
"administration": "administration",
"minigames": "Minispiele",
"personal": "Personnel",
"blog": "Blogue"
},
"titles": {
"friends": "Amis",
"guestbook": "Livre d'or",
"search": "Recherche",
"gallery": "galerie",
"forum": "Forum",
"topic": "Thème",
"diary": "agenda",
"languages": "Langues",
"newLanguage": "Nouvelle langue",
"subscribeLanguage": "Abonnez-vous à la langue",
"language": "Langue",
"chapter": "Chapitre",
"courses": "Cours",
"course": "Kurs",
"lesson": "Lektion",
"createCharacter": "Créer un personnage",
"overview": "Übersicht",
"branch": "bifurquer",
"moneyHistory": "Histoire de l'argent",
"family": "Familie",
"house": "Maison",
"nobility": "Noblesse",
"reputation": "Ansehen",
"church": "Kirche",
"education": "Éducation",
"bank": "banque",
"directors": "Directeurs",
"health": "Santé",
"politics": "politique",
"underground": "souterrain",
"personalSettings": "Données personnelles",
"viewSettings": "Avis",
"sexualitySettings": "sexualité",
"flirtSettings": "flirter",
"accountSettings": "compte",
"languageAssistantSettings": "Assistant vocal",
"interests": "Interessen",
"adminInterests": "Gestion des intérêts",
"adminUsers": "Benutzer",
"adminUserStatistics": "Statistiques des utilisateurs",
"adminContacts": "Kontaktanfragen",
"adminUserRights": "droite",
"adminForums": "Gestion des forums",
"adminChatRooms": "Chaträume",
"adminFalukantUsers": "Utilisateur Falukant",
"adminFalukantMap": "Carte de Falukant",
"adminCreateNpc": "Créer un PNJ",
"adminMinigames": "Gestion des Match3",
"adminTaxiTools": "Outils de taxi",
"adminServicesStatus": "Statut des services"
}
}
}