From d5cbb01c4c0c4758cd0dea2bf4f1d90c174c44a9 Mon Sep 17 00:00:00 2001 From: ZwF <25246962+devzwf@users.noreply.github.com> Date: Tue, 23 Jan 2024 18:35:45 -0500 Subject: [PATCH] Adding french language (#86) --- includes/i18n/fr.php | 195 ++++++++++++++++++++++++++++++++++++ includes/i18n/languages.php | 1 + scripts/i18n/fr.js | 34 +++++++ 3 files changed, 230 insertions(+) create mode 100644 includes/i18n/fr.php create mode 100644 scripts/i18n/fr.js diff --git a/includes/i18n/fr.php b/includes/i18n/fr.php new file mode 100644 index 0000000..21102a2 --- /dev/null +++ b/includes/i18n/fr.php @@ -0,0 +1,195 @@ + "Vous devez créer un compte avant de pouvoir vous connecter", + 'username' => "Nom d'utilisateur", + 'password' => "Mot de passe", + "email" => "Courriel", + "confirm_password" => "Confirmer le mot de passe", + "main_currency" => "Devise principale", + "language" => "Langue", + "passwords_dont_match" => "Les mots de passe ne correspondent pas", + "registration_failed" => "L'inscription a échouée, veuillez réessayer.", + "register" => "S'inscrire", + // Page de connexion + 'please_login' => "Veuillez vous connecter", + 'stay_logged_in' => "Rester connecté (30 jours)", + 'login' => "Se connecter", + 'login_failed' => "Les détails de connexion sont incorrects", + // En-tête + 'subscriptions' => "Abonnements", + 'stats' => "Statistiques", + 'settings' => "Paramètres", + 'about' => "À propos", + 'logout' => "Déconnexion", + // Page d'abonnements + "subscription" => "Abonnement", + "no_subscriptions_yet" => "Vous n'avez pas encore d'abonnement", + "add_first_subscription" => "Ajoutez le premier abonnement", + 'new_subscription' => "Nouvel abonnement", + 'sort' => "Trier", + 'name' => "Nom", + 'last_added' => "Dernier ajouté", + 'price' => "Prix", + 'next_payment' => "Prochain paiement", + 'member' => "Membre", + 'category' => "Catégorie", + 'payment_method' => "Méthode de paiement", + "Daily" => "Quotidien", + "Weekly" => "Hebdomadaire", + "Monthly" => "Mensuel", + "Yearly" => "Annuel", + "days" => "jours", + "weeks" => "semaines", + "months" => "mois", + "years" => "années", + "external_url" => "Visiter l'URL externe", + "empty_page" => "Page vide", + // Formulaire d'abonnement + "add_subscription" => "Ajouter un abonnement", + "edit_subscription" => "Modifier l'abonnement", + "subscription_name" => "Nom de l'abonnement", + "logo_preview" => "Aperçu du logo", + "search_logo" => "Rechercher un logo sur le web", + "web_search" => "Recherche web", + "currency" => "Devise", + "billing_cycle" => "Cycle de facturation", + "frequency" => "Fréquence", + "cycle" => "Cycle", + "next_payment" => "Prochain paiement", + "payment_method" => "Méthode de paiement", + "no_category" => "Pas de catégorie", + "paid_by" => "Payé par", + "url" => "URL", + "notes" => "Notes", + "enable_notifications" => "Activer les notifications pour cet abonnement", + "delete" => "Supprimer", + "cancel" => "Annuler", + "upload_logo" => "Télécharger le logo", + // Page de statistiques + 'general_statistics' => "Statistiques générales", + 'active_subscriptions' => "Abonnements actifs", + 'monthly_cost' => "Coût mensuel", + 'yearly_cost' => "Coût annuel", + 'average_monthly' => "Coût moyen mensuel de l'abonnement", + 'most_expensive' => "Coût d'abonnement le plus élevé", + 'amount_due' => "Montant dû ce mois-ci", + 'split_views' => "Vues partagées", + 'category_split' => "Répartition par catégorie", + 'household_split' => "Répartition du ménage", + // Page À propos + 'about_and_credits' => "À propos et crédits", + 'license' => "Licence", + 'issues_and_requests' => "Problèmes et demandes", + 'the_author' => "L'auteur", + 'icons' => "Icônes", + 'payment_icons' => "Icônes de paiement", + // Page de paramètres + 'user_details' => "Détails de l'utilisateur", + "household" => "Ménage", + "save_member" => "Enregistrer le membre", + "delete_member" => "Supprimer le membre", + "cant_delete_member" => "Impossible de supprimer le membre principal", + "cant_delete_member_in_use" => "Impossible de supprimer le membre utilisé dans l'abonnement", + "notifications" => "Notifications", + "enable_email_notifications" => "Activer les notifications par courriel", + "notify_me" => "Me prevenir", + "day_before" => "jour avant", + "days_before" => "jours avant", + "smtp_address" => "Adresse SMTP", + "port" => "Port", + "smtp_username" => "Nom d'utilisateur SMTP", + "smtp_password" => "Mot de passe SMTP", + "from_email" => "De l'adresse courriel (facultatif)", + "smtp_info" => "Le mot de passe SMTP est transmis et stocké en texte brut. Pour des raisons de sécurité, veuillez créer un compte uniquement à cette fin.", + "categories" => "Catégories", + "save_category" => "Enregistrer la catégorie", + "delete_category" => "Supprimer la catégorie", + "cant_delete_category_in_use" => "Impossible de supprimer la catégorie utilisée dans l'abonnement", + "currencies" => "Devises", + "save_currency" => "Enregistrer la devise", + "delete_currency" => "Supprimer la devise", + "cant_delete_main_currency" => "Impossible de supprimer la devise principale", + "cant_delete_currency_in_use" => "Impossible de supprimer la devise utilisée dans l'abonnement", + "exchange_update" => "Les taux de change ont été mis à jour pour la dernière fois le", + "currency_info" => "Trouvez les devises prises en charge et les codes de devise corrects sur", + "currency_performance" => "Pour des performances améliorées, ne conservez que les devises que vous utilisez.", + "fixer_api_key" => "Clé API de Fixer", + "api_key" => "Clé API", + "fixer_info" => "Si vous utilisez plusieurs devises et souhaitez des statistiques et un tri précis sur les abonnements, une clé API GRATUITE de Fixer est nécessaire.", + "get_key" => "Obtenez votre clé sur", + "display_settings" => "Paramètres d'affichage", + "switch_theme" => "Basculer entre le thème clair et sombre", + "calculate_monthly_price" => "Calculer et afficher le prix mensuel pour tous les abonnements", + "convert_prices" => "Convertir toujours et afficher les prix dans ma devise principale (plus lent)", + "experimental_settings" => "Paramètres expérimentaux", + "remove_background" => "Tenter de supprimer l'arrière-plan des logos de la recherche d'images (expérimental)", + "experimental_info" => "Les paramètres expérimentaux ne fonctionneront probablement pas parfaitement.", + "payment_methods" => "Méthodes de paiement", + "payment_methods_info" => "Cliquez sur une méthode de paiement pour la désactiver / l'activer.", + "cant_delete_payment_method_in_use" => "Impossible de désactiver la méthode de paiement utilisée", + "disable" => "Désactiver", + "enable" => "Activer", + "test" => "Test", + "add" => "Ajouter", + "save" => "Enregistrer", + // Toast + "success" => "Succès", + // Réponses de l'API + "session_expired" => "Votre session a expiré. Veuillez vous reconnecter", + "fields_missing" => "Certains champs manquent", + "fill_all_fields" => "Veuillez remplir tous les champs", + "fill_mandatory_fields" => "Veuillez remplir tous les champs obligatoires", + "error" => "Erreur", + // Catégorie + "failed_add_category" => "Échec de l'ajout de la catégorie", + "failed_edit_category" => "Échec de la modification de la catégorie", + "category_in_use" => "La catégorie est utilisée dans des abonnements et ne peut pas être supprimée", + "failed_remove_category" => "Échec de la suppression de la catégorie", + "category_saved" => "Catégorie enregistrée", + "category_removed" => "Catégorie supprimée", + // Devise + "currency_saved" => "a été enregistrée.", + "error_adding_currency" => "Erreur lors de l'ajout de l'entrée de devise.", + "failed_to_store_currency" => "Échec de l'enregistrement de la devise dans la base de données.", + "currency_in_use" => "La devise est utilisée dans des abonnements et ne peut pas être supprimée.", + "currency_is_main" => "La devise est définie comme devise principale et ne peut pas être supprimée.", + "failed_to_remove_currency" => "Échec de la suppression de la devise de la base de données.", + "failed_to_store_api_key" => "Échec de l'enregistrement de la clé API dans la base de données.", + "invalid_api_key" => "Clé API invalide.", + "api_key_saved" => "Clé API enregistrée avec succès", + "currency_removed" => "Devise supprimée", + // Ménage + "failed_add_household" => "Échec de l'ajout de membre du ménage", + "failed_edit_household" => "Échec de la modification du membre du ménage", + "failed_remove_household" => "Échec de la suppression du membre du ménage", + "household_in_use" => "Le membre du ménage est utilisé dans des abonnements et ne peut pas être supprimé", + "member_saved" => "Membre enregistré", + "member_removed" => "Membre supprimé", + // Notifications + "error_saving_notifications" => "Erreur lors de l'enregistrement des données de notifications.", + "wallos_notification" => "Notification de Wallos", + "test_notification" => "Il s'agit d'une notification de test. Si vous la voyez, la configuration est correcte.", + "email_error" => "Erreur dlors de l'envoi de courriel", + "notification_sent_successfuly" => "Notification envoyée avec succès", + "notifications_settings_saved" => "Paramètres de notifications enregistrés avec succès.", + // Paiements + "payment_in_use" => "Impossible de désactiver la méthode de paiement utilisée", + "failed_update_payment" => "Échec de la mise à jour de la méthode de paiement dans la base de données", + "enabled" => "activé", + "disabled" => "désactivé", + // Abonnement + "error_fetching_image" => "Erreur lors de la récupération de l'image", + "subscription_updated_successfuly" => "Abonnement mis à jour avec succès", + "subscription_added_successfuly" => "Abonnement ajouté avec succès", + "error_deleting_subscription" => "Erreur de suppression de l'abonnement.", + "invalid_request_method" => "Méthode de demande invalide.", + // Utilisateur + "error_updating_user_data" => "Erreur lors de la mise à jour des données utilisateur.", + "user_details_saved" => "Détails de l'utilisateur enregistrés", + +]; + + +?> \ No newline at end of file diff --git a/includes/i18n/languages.php b/includes/i18n/languages.php index 6277c0e..29af3cb 100644 --- a/includes/i18n/languages.php +++ b/includes/i18n/languages.php @@ -4,6 +4,7 @@ $languages = [ "en" => "English", "pt" => "Português", + "fr" => "Français", ] ?> \ No newline at end of file diff --git a/scripts/i18n/fr.js b/scripts/i18n/fr.js new file mode 100644 index 0000000..6efd4d9 --- /dev/null +++ b/scripts/i18n/fr.js @@ -0,0 +1,34 @@ +let i18n = { + // Tableau de bord + 'error_reloading_subscription': 'Erreur lors du rechargement de l\'abonnement :', + 'error_fetching_image_results': 'Erreur lors de la récupération des résultats d\'images :', + 'subscription_deleted': 'Abonnement supprimé', + 'error_deleting_subscription': "Erreur lors de la suppression de l'abonnement", + 'failed_to_load_subscription': "Impossible de charger l'abonnement", + 'edit_subscription': "Modifier l'abonnement", + 'add_subscription': "Ajouter un abonnement", + // Paramètres + 'network_response_error': "La réponse du réseau n'était pas correcte", + 'failed_add_member': 'Échec de l\'ajout du membre', + 'member': 'Membre', + 'save_member': 'Enregistrer le membre', + 'delete_member': 'Supprimer le membre', + 'failed_remove_member': 'Échec de la suppression du membre', + 'failed_save_member': 'Échec de l\'enregistrement du membre', + 'failed_add_category': 'Échec de l\'ajout de la catégorie', + 'category': 'Catégorie', + 'save_category': 'Enregistrer la catégorie', + 'delete_category': 'Supprimer la catégorie', + 'failed_remove_category': 'Échec de la suppression de la catégorie', + 'currency': 'Devise', + 'currency_code': 'Code de devise', + 'save_currency': 'Enregistrer la devise', + 'delete_currency': 'Supprimer la devise', + 'failed_remove_currency': 'Échec de la suppression de la devise', + 'failed_save_currency': 'Échec de l\'enregistrement de la devise', + 'cant_disable_payment_in_use': 'Impossible de désactiver le paiement en cours d\'utilisation', + 'failed_save_payment_method': 'Échec de l\'enregistrement de la méthode de paiement', + 'unknown_error': 'Erreur inconnue, veuillez réessayer.', + 'error_saving_notification_data': 'Erreur lors de l\'enregistrement des données de notification', + 'error_sending_notification': 'Erreur lors de l\'envoi de la notification', +}; \ No newline at end of file