feat(i18n): add French language support and enhance localization
All checks were successful
Deploy to production / deploy (push) Successful in 2m48s

- 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 f715c6125d
commit f7030bbabe
56 changed files with 5220 additions and 175 deletions

View File

@@ -0,0 +1,158 @@
{
"chat": {
"multichat": {
"title": "Chat multiple",
"eroticTitle": "Chat érotique",
"autoscroll": "Défilement automatique",
"options": "Possibilités",
"send": "Senden",
"shout": "Schreien",
"action": "action",
"roll": "Würfeln",
"colorpicker": "Choisissez la couleur",
"colorpicker_preview": "Aperçu : ce message utilise la couleur sélectionnée.",
"hex": "HEX",
"invalid_hex": "Ungültiger Hex-Wert",
"hue": "Farbton",
"saturation": "Sättigung",
"lightness": "Helligkeit",
"ok": "Ok",
"cancel": "Annuler",
"placeholder": "Nachricht eingeben...",
"action_select_user": "Bitte Benutzer auswählen",
"action_to": "Aktion an {to}",
"action_phrases": {
"left_room": "wechselt zu Raum",
"leaves_room": "verlässt Raum",
"left_chat": "hat den Chat verlassen."
},
"system": {
"room_entered": "Du hast den Raum \"{room}\" betreten.",
"user_entered_room": "{user} hat den Raum betreten.",
"user_left_room": "{user} hat den Raum verlassen.",
"color_changed_self": "Du hast deine Farbe zu {color} geändert.",
"color_changed_user": "{user} hat seine/ihre Farbe zu {color} geändert."
},
"status": {
"connecting": "Verbinden…",
"connected": "Attachés ensemble",
"disconnected": "Getrennt",
"error": "Fehler bei der Verbindung"
},
"reloadRooms": "Räume neu laden",
"createRoom": {
"toggleShowChat": "Chat anzeigen",
"toggleCreateRoom": "Raum anlegen",
"title": "Neuen Raum erstellen",
"commandPrefix": "Kommando",
"labels": {
"roomName": "Raumname",
"visibility": "Sichtbarkeit",
"gender": "Geschlecht",
"minAge": "Mindestalter",
"maxAge": "Höchstalter",
"password": "Passwort",
"rightId": "Benötigtes Recht",
"typeId": "Raumtyp",
"friendsOnly": "friends_only=true"
},
"placeholders": {
"roomName": "z. B. Lounge",
"password": "ohne Leerzeichen"
},
"options": {
"none": "(keine)",
"visibilityPublic": "Öffentlich",
"visibilityPrivate": "Privat",
"genderMale": "Männlich",
"genderFemale": "Weiblich",
"genderAny": "Alle / Keine Einschränkung"
},
"actions": {
"create": "Raum erstellen",
"reset": "Zurücksetzen"
},
"validation": {
"roomNameRequired": "Raumname ist erforderlich.",
"minAgeInvalid": "min_age muss >= 0 sein.",
"maxAgeInvalid": "max_age muss >= 0 sein.",
"ageRangeInvalid": "min_age ne peut pas être supérieur à max_age.",
"passwordSpaces": "Le mot de passe ne peut pas contenir d'espaces.",
"rightIdInvalid": "right_id doit être > 0.",
"typeIdInvalid": "type_id doit être > 0."
},
"messages": {
"noConnection": "Aucune connexion au serveur de chat.",
"invalidForm": "Veuillez corriger vos entrées dans le formulaire de chambre.",
"roomNameMissing": "Veuillez fournir un nom de chambre.",
"sent": "Création de salle envoyée : {commande}",
"created": "La salle \"{room}\" a été créée avec succès.",
"createNotConfirmed": "La chambre \"{room}\" n'a pas encore été confirmée. Veuillez consulter la liste des chambres."
},
"ownedRooms": {
"title": "Mes pièces créées",
"hint": "Löschen per Daemon-Befehl: /dr <raumname> (Alias: /delete_room <raumname>)",
"empty": "Du hast noch keine eigenen Räume.",
"public": "public",
"private": "private",
"confirmDelete": "Soll der Raum \"{room}\" wirklich gelöscht werden?",
"deleteSent": "Löschbefehl gesendet: /dr {room}",
"deleteError": "Raum konnte nicht gelöscht werden."
},
"rights": {
"mainadmin": "Hauptadministrator",
"contactrequests": "Kontaktanfragen",
"users": "Benutzer",
"userrights": "Benutzerrechte",
"forum": "Forum",
"interests": "Interessen",
"falukant": "Falukant",
"minigames": "Minispiele",
"match3": "Match3",
"taxiTools": "Outils de taxi",
"chatrooms": "Chaträume",
"servicesStatus": "Statut des services"
},
"types": {}
},
"password": {
"title": "Passwort erforderlich",
"inputLabel": "Entrez le mot de passe",
"submit": "Rejoindre",
"cancel": "Annuler",
"requiredPrompt": "La salle \"{room}\" est protégée par mot de passe. Veuillez entrer le mot de passe :",
"invalidPrompt": "Mot de passe incorrect pour \"{room}\". Veuillez saisir à nouveau :",
"cancelled": "Rejoindre \"{room}\" annulé.",
"empty": "Le mot de passe ne peut pas être vide."
}
},
"randomchat": {
"title": "Discussion aléatoire",
"age": "Alter",
"gender": {
"title": "Votre sexe",
"male": "Männlich",
"female": "Weiblich"
},
"start": "Commencer",
"agerange": "Alter",
"gendersearch": "Genres",
"camonly": "Uniquement avec caméra",
"showcam": "Montrez votre propre caméra",
"addfriend": "Zu Freunden hinzufügen",
"close": "Chat beenden",
"autosearch": "Automatisch suchen",
"input": "Ihr Text",
"waitingForMatch": "Warten auf einen Teilnehmer...",
"chatpartner": "Du chattest jetzt mit einer <gender> Person im Alter von <age> Jahren.",
"partnergenderm": "männlichen",
"partnergenderf": "weiblichen",
"self": "Du",
"partner": "Partner",
"jumptonext": "Diesen Chat beenden",
"userleftchat": "Der Gesprächstpartner hat den Chat verlassen.",
"startsearch": "Suche nächstes Gespräch",
"selfstopped": "Du hast das Gespräch verlassen."
}
}
}