Initial commit: SmoothSchedule multi-tenant scheduling platform

This commit includes:
- Django backend with multi-tenancy (django-tenants)
- React + TypeScript frontend with Vite
- Platform administration API with role-based access control
- Authentication system with token-based auth
- Quick login dev tools for testing different user roles
- CORS and CSRF configuration for local development
- Docker development environment setup

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
poduck
2025-11-27 01:43:20 -05:00
commit 2e111364a2
567 changed files with 96410 additions and 0 deletions

View File

@@ -0,0 +1,688 @@
{
"common": {
"loading": "Chargement...",
"error": "Erreur",
"success": "Succès",
"save": "Enregistrer",
"saveChanges": "Enregistrer les modifications",
"cancel": "Annuler",
"delete": "Supprimer",
"edit": "Modifier",
"create": "Créer",
"update": "Mettre à jour",
"close": "Fermer",
"confirm": "Confirmer",
"back": "Retour",
"next": "Suivant",
"search": "Rechercher",
"filter": "Filtrer",
"actions": "Actions",
"settings": "Paramètres",
"reload": "Recharger",
"viewAll": "Voir Tout",
"learnMore": "En Savoir Plus",
"poweredBy": "Propulsé par",
"required": "Requis",
"optional": "Optionnel",
"masquerade": "Usurper",
"masqueradeAsUser": "Usurper l'identité de l'Utilisateur"
},
"auth": {
"signIn": "Se connecter",
"signOut": "Déconnexion",
"signingIn": "Connexion en cours...",
"username": "Nom d'utilisateur",
"password": "Mot de passe",
"enterUsername": "Entrez votre nom d'utilisateur",
"enterPassword": "Entrez votre mot de passe",
"welcomeBack": "Bon retour",
"pleaseEnterDetails": "Veuillez entrer vos informations pour vous connecter.",
"authError": "Erreur d'Authentification",
"invalidCredentials": "Identifiants invalides",
"orContinueWith": "Ou continuer avec",
"loginAtSubdomain": "Veuillez vous connecter sur le sous-domaine de votre entreprise. Le personnel et les clients ne peuvent pas se connecter depuis le site principal.",
"forgotPassword": "Mot de passe oublié ?",
"rememberMe": "Se souvenir de moi",
"twoFactorRequired": "Authentification à deux facteurs requise",
"enterCode": "Entrez le code de vérification",
"verifyCode": "Vérifier le Code"
},
"nav": {
"dashboard": "Tableau de Bord",
"scheduler": "Planificateur",
"customers": "Clients",
"resources": "Ressources",
"payments": "Paiements",
"messages": "Messages",
"staff": "Personnel",
"businessSettings": "Paramètres de l'Entreprise",
"profile": "Profil",
"platformDashboard": "Tableau de Bord Plateforme",
"businesses": "Entreprises",
"users": "Utilisateurs",
"support": "Support",
"platformSettings": "Paramètres Plateforme"
},
"dashboard": {
"title": "Tableau de Bord",
"welcome": "Bienvenue, {{name}} !",
"todayOverview": "Aperçu du Jour",
"upcomingAppointments": "Rendez-vous à Venir",
"recentActivity": "Activité Récente",
"quickActions": "Actions Rapides",
"totalRevenue": "Revenus Totaux",
"totalAppointments": "Total des Rendez-vous",
"newCustomers": "Nouveaux Clients",
"pendingPayments": "Paiements en Attente"
},
"scheduler": {
"title": "Planificateur",
"newAppointment": "Nouveau Rendez-vous",
"editAppointment": "Modifier le Rendez-vous",
"deleteAppointment": "Supprimer le Rendez-vous",
"selectResource": "Sélectionner la Ressource",
"selectService": "Sélectionner le Service",
"selectCustomer": "Sélectionner le Client",
"selectDate": "Sélectionner la Date",
"selectTime": "Sélectionner l'Heure",
"duration": "Durée",
"notes": "Notes",
"status": "Statut",
"confirmed": "Confirmé",
"pending": "En Attente",
"cancelled": "Annulé",
"completed": "Terminé",
"noShow": "Absent",
"today": "Aujourd'hui",
"week": "Semaine",
"month": "Mois",
"day": "Jour",
"timeline": "Chronologie",
"agenda": "Agenda",
"allResources": "Toutes les Ressources"
},
"customers": {
"title": "Clients",
"description": "Gérez votre base clients et consultez l'historique.",
"addCustomer": "Ajouter un Client",
"editCustomer": "Modifier le Client",
"customerDetails": "Détails du Client",
"name": "Nom",
"fullName": "Nom Complet",
"email": "Email",
"emailAddress": "Adresse Email",
"phone": "Téléphone",
"phoneNumber": "Numéro de Téléphone",
"address": "Adresse",
"city": "Ville",
"state": "État",
"zipCode": "Code Postal",
"tags": "Tags",
"tagsPlaceholder": "ex. VIP, Parrainage",
"tagsCommaSeparated": "Tags (séparés par des virgules)",
"appointmentHistory": "Historique des Rendez-vous",
"noAppointments": "Aucun rendez-vous pour l'instant",
"totalSpent": "Total Dépensé",
"totalSpend": "Dépenses Totales",
"lastVisit": "Dernière Visite",
"nextAppointment": "Prochain Rendez-vous",
"contactInfo": "Informations de Contact",
"status": "Statut",
"active": "Actif",
"inactive": "Inactif",
"never": "Jamais",
"customer": "Client",
"searchPlaceholder": "Rechercher par nom, email ou téléphone...",
"filters": "Filtres",
"noCustomersFound": "Aucun client trouvé correspondant à votre recherche.",
"addNewCustomer": "Ajouter un Nouveau Client",
"createCustomer": "Créer le Client",
"errorLoading": "Erreur lors du chargement des clients"
},
"staff": {
"title": "Personnel et Direction",
"description": "Gérez les comptes utilisateurs et les permissions.",
"inviteStaff": "Inviter du Personnel",
"name": "Nom",
"role": "Rôle",
"bookableResource": "Ressource Réservable",
"makeBookable": "Rendre Réservable",
"yes": "Oui",
"errorLoading": "Erreur lors du chargement du personnel",
"inviteModalTitle": "Inviter du Personnel",
"inviteModalDescription": "Le flux d'invitation utilisateur irait ici."
},
"resources": {
"title": "Ressources",
"description": "Gérez votre personnel, salles et équipements.",
"addResource": "Ajouter une Ressource",
"editResource": "Modifier la Ressource",
"resourceDetails": "Détails de la Ressource",
"resourceName": "Nom de la Ressource",
"name": "Nom",
"type": "Type",
"resourceType": "Type de Ressource",
"availability": "Disponibilité",
"services": "Services",
"schedule": "Horaire",
"active": "Actif",
"inactive": "Inactif",
"upcoming": "À Venir",
"appointments": "rdv",
"viewCalendar": "Voir le Calendrier",
"noResourcesFound": "Aucune ressource trouvée.",
"addNewResource": "Ajouter une Nouvelle Ressource",
"createResource": "Créer la Ressource",
"staffMember": "Membre du Personnel",
"room": "Salle",
"equipment": "Équipement",
"resourceNote": "Les ressources sont des espaces réservés pour la planification. Le personnel peut être assigné aux rendez-vous séparément.",
"errorLoading": "Erreur lors du chargement des ressources"
},
"services": {
"title": "Services",
"addService": "Ajouter un Service",
"editService": "Modifier le Service",
"name": "Nom",
"description": "Description",
"duration": "Durée",
"price": "Prix",
"category": "Catégorie",
"active": "Actif"
},
"payments": {
"title": "Paiements",
"transactions": "Transactions",
"invoices": "Factures",
"amount": "Montant",
"status": "Statut",
"date": "Date",
"method": "Méthode",
"paid": "Payé",
"unpaid": "Non Payé",
"refunded": "Remboursé",
"pending": "En Attente",
"viewDetails": "Voir les Détails",
"issueRefund": "Émettre un Remboursement",
"sendReminder": "Envoyer un Rappel",
"paymentSettings": "Paramètres de Paiement",
"stripeConnect": "Stripe Connect",
"apiKeys": "Clés API"
},
"settings": {
"title": "Paramètres",
"businessSettings": "Paramètres de l'Entreprise",
"businessSettingsDescription": "Gérez votre image de marque, domaine et politiques.",
"domainIdentity": "Domaine et Identité",
"bookingPolicy": "Politique de Réservation et d'Annulation",
"savedSuccessfully": "Paramètres enregistrés avec succès",
"general": "Général",
"branding": "Image de Marque",
"notifications": "Notifications",
"security": "Sécurité",
"integrations": "Intégrations",
"billing": "Facturation",
"businessName": "Nom de l'Entreprise",
"subdomain": "Sous-domaine",
"primaryColor": "Couleur Principale",
"secondaryColor": "Couleur Secondaire",
"logo": "Logo",
"uploadLogo": "Télécharger le Logo",
"timezone": "Fuseau Horaire",
"language": "Langue",
"currency": "Devise",
"dateFormat": "Format de Date",
"timeFormat": "Format d'Heure",
"oauth": {
"title": "Paramètres OAuth",
"enabledProviders": "Fournisseurs Activés",
"allowRegistration": "Autoriser l'Inscription via OAuth",
"autoLinkByEmail": "Lier automatiquement les comptes par email",
"customCredentials": "Identifiants OAuth Personnalisés",
"customCredentialsDesc": "Utilisez vos propres identifiants OAuth pour une expérience en marque blanche",
"platformCredentials": "Identifiants Plateforme",
"platformCredentialsDesc": "Utilisation des identifiants OAuth fournis par la plateforme",
"clientId": "ID Client",
"clientSecret": "Secret Client",
"paidTierOnly": "Les identifiants OAuth personnalisés ne sont disponibles que pour les forfaits payants"
}
},
"profile": {
"title": "Paramètres du Profil",
"personalInfo": "Informations Personnelles",
"changePassword": "Changer le Mot de Passe",
"twoFactor": "Authentification à Deux Facteurs",
"sessions": "Sessions Actives",
"emails": "Adresses Email",
"preferences": "Préférences",
"currentPassword": "Mot de Passe Actuel",
"newPassword": "Nouveau Mot de Passe",
"confirmPassword": "Confirmer le Mot de Passe",
"passwordChanged": "Mot de passe changé avec succès",
"enable2FA": "Activer l'Authentification à Deux Facteurs",
"disable2FA": "Désactiver l'Authentification à Deux Facteurs",
"scanQRCode": "Scanner le Code QR",
"enterBackupCode": "Entrer le Code de Secours",
"recoveryCodes": "Codes de Récupération"
},
"platform": {
"title": "Administration Plateforme",
"dashboard": "Tableau de Bord Plateforme",
"overview": "Aperçu de la Plateforme",
"overviewDescription": "Métriques globales pour tous les locataires.",
"mrrGrowth": "Croissance MRR",
"totalBusinesses": "Total des Entreprises",
"totalUsers": "Total des Utilisateurs",
"monthlyRevenue": "Revenus Mensuels",
"activeSubscriptions": "Abonnements Actifs",
"recentSignups": "Inscriptions Récentes",
"supportTickets": "Tickets Support",
"supportDescription": "Résoudre les problèmes signalés par les locataires.",
"reportedBy": "Signalé par",
"priority": "Priorité",
"businessManagement": "Gestion des Entreprises",
"userManagement": "Gestion des Utilisateurs",
"masquerade": "Usurper",
"masqueradeAs": "Usurper l'identité de",
"exitMasquerade": "Quitter l'Usurpation",
"businesses": "Entreprises",
"businessesDescription": "Gérer les locataires, les plans et les accès.",
"addNewTenant": "Ajouter un Nouveau Locataire",
"searchBusinesses": "Rechercher des entreprises...",
"businessName": "Nom de l'Entreprise",
"subdomain": "Sous-domaine",
"plan": "Plan",
"status": "Statut",
"joined": "Inscrit le",
"userDirectory": "Répertoire des Utilisateurs",
"userDirectoryDescription": "Voir et gérer tous les utilisateurs de la plateforme.",
"searchUsers": "Rechercher des utilisateurs par nom ou email...",
"allRoles": "Tous les Rôles",
"user": "Utilisateur",
"role": "Rôle",
"email": "Email",
"noUsersFound": "Aucun utilisateur trouvé correspondant à vos filtres.",
"roles": {
"superuser": "Super Utilisateur",
"platformManager": "Gestionnaire de Plateforme",
"businessOwner": "Propriétaire d'Entreprise",
"staff": "Personnel",
"customer": "Client"
},
"settings": {
"title": "Paramètres Plateforme",
"description": "Configurer les paramètres et intégrations de la plateforme",
"tiersPricing": "Niveaux et Tarification",
"oauthProviders": "Fournisseurs OAuth",
"general": "Général",
"oauth": "Fournisseurs OAuth",
"payments": "Paiements",
"email": "Email",
"branding": "Image de Marque"
}
},
"errors": {
"generic": "Une erreur s'est produite. Veuillez réessayer.",
"networkError": "Erreur réseau. Veuillez vérifier votre connexion.",
"unauthorized": "Vous n'êtes pas autorisé à effectuer cette action.",
"notFound": "La ressource demandée n'a pas été trouvée.",
"validation": "Veuillez vérifier vos données et réessayer.",
"businessNotFound": "Entreprise Non Trouvée",
"wrongLocation": "Mauvais Emplacement",
"accessDenied": "Accès Refusé"
},
"validation": {
"required": "Ce champ est requis",
"email": "Veuillez entrer une adresse email valide",
"minLength": "Doit contenir au moins {{min}} caractères",
"maxLength": "Doit contenir au maximum {{max}} caractères",
"passwordMatch": "Les mots de passe ne correspondent pas",
"invalidPhone": "Veuillez entrer un numéro de téléphone valide"
},
"time": {
"minutes": "minutes",
"hours": "heures",
"days": "jours",
"today": "Aujourd'hui",
"tomorrow": "Demain",
"yesterday": "Hier",
"thisWeek": "Cette Semaine",
"thisMonth": "Ce Mois",
"am": "AM",
"pm": "PM"
},
"marketing": {
"tagline": "Orchestrez votre entreprise avec précision.",
"description": "La plateforme de planification tout-en-un pour les entreprises de toutes tailles. Gérez les ressources, le personnel et les réservations sans effort.",
"copyright": "Smooth Schedule Inc.",
"nav": {
"features": "Fonctionnalités",
"pricing": "Tarifs",
"about": "À propos",
"contact": "Contact",
"login": "Connexion",
"getStarted": "Commencer",
"startFreeTrial": "Essai Gratuit"
},
"hero": {
"headline": "Planification Simplifiée",
"subheadline": "La plateforme tout-en-un pour gérer les rendez-vous, ressources et clients. Commencez gratuitement, évoluez selon vos besoins.",
"cta": "Commencer l'Essai Gratuit",
"secondaryCta": "Voir la Démo",
"trustedBy": "Plus de 1 000 entreprises nous font confiance"
},
"features": {
"title": "Tout ce dont Vous Avez Besoin",
"subtitle": "Des fonctionnalités puissantes pour votre entreprise de services",
"scheduling": {
"title": "Planification Intelligente",
"description": "Calendrier glisser-déposer avec disponibilité en temps réel, rappels automatiques et détection des conflits."
},
"resources": {
"title": "Gestion des Ressources",
"description": "Gérez le personnel, les salles et l'équipement. Configurez la disponibilité, les compétences et les règles de réservation."
},
"customers": {
"title": "Portail Client",
"description": "Portail en libre-service pour les clients. Consultez l'historique, gérez les rendez-vous et enregistrez les moyens de paiement."
},
"payments": {
"title": "Paiements Intégrés",
"description": "Acceptez les paiements en ligne avec Stripe. Acomptes, paiements complets et facturation automatique."
},
"multiTenant": {
"title": "Support Multi-Sites",
"description": "Gérez plusieurs sites ou marques depuis un seul tableau de bord avec des données isolées."
},
"whiteLabel": {
"title": "Marque Blanche",
"description": "Domaine personnalisé, branding et suppression de la marque SmoothSchedule pour une expérience fluide."
},
"analytics": {
"title": "Analyses et Rapports",
"description": "Suivez les revenus, rendez-vous et tendances clients avec de beaux tableaux de bord."
},
"integrations": {
"title": "Intégrations Puissantes",
"description": "Connectez-vous à Google Calendar, Zoom, Stripe et plus. Accès API pour des intégrations personnalisées."
}
},
"howItWorks": {
"title": "Commencez en Quelques Minutes",
"subtitle": "Trois étapes simples pour transformer votre planification",
"step1": {
"title": "Créez Votre Compte",
"description": "Inscrivez-vous gratuitement et configurez votre profil d'entreprise en quelques minutes."
},
"step2": {
"title": "Ajoutez Vos Services",
"description": "Configurez vos services, tarifs et ressources disponibles."
},
"step3": {
"title": "Commencez à Réserver",
"description": "Partagez votre lien de réservation et laissez les clients prendre rendez-vous instantanément."
}
},
"pricing": {
"title": "Tarifs Simples et Transparents",
"subtitle": "Commencez gratuitement, évoluez selon vos besoins. Pas de frais cachés.",
"monthly": "Mensuel",
"annual": "Annuel",
"annualSave": "Économisez 20%",
"perMonth": "/mois",
"period": "mois",
"popular": "Plus Populaire",
"mostPopular": "Plus Populaire",
"getStarted": "Commencer",
"contactSales": "Contacter les Ventes",
"freeTrial": "14 jours d'essai gratuit",
"noCredit": "Pas de carte de crédit requise",
"features": "Fonctionnalités",
"tiers": {
"free": {
"name": "Gratuit",
"description": "Parfait pour commencer",
"price": "0",
"features": [
"Jusqu'à 2 ressources",
"Planification de base",
"Gestion des clients",
"Intégration Stripe directe",
"Sous-domaine (entreprise.smoothschedule.com)",
"Support communautaire"
],
"transactionFee": "2,5% + 0,30€ par transaction"
},
"professional": {
"name": "Professionnel",
"description": "Pour les entreprises en croissance",
"price": "29",
"annualPrice": "290",
"features": [
"Jusqu'à 10 ressources",
"Domaine personnalisé",
"Stripe Connect (frais réduits)",
"Marque blanche",
"Rappels par email",
"Support email prioritaire"
],
"transactionFee": "1,5% + 0,25€ par transaction"
},
"business": {
"name": "Business",
"description": "Pour les équipes établies",
"price": "79",
"annualPrice": "790",
"features": [
"Ressources illimitées",
"Toutes les fonctionnalités Pro",
"Gestion d'équipe",
"Analyses avancées",
"Accès API",
"Support téléphonique"
],
"transactionFee": "0,5% + 0,20€ par transaction"
},
"enterprise": {
"name": "Entreprise",
"description": "Pour les grandes organisations",
"price": "Personnalisé",
"features": [
"Toutes les fonctionnalités Business",
"Intégrations personnalisées",
"Gestionnaire de succès dédié",
"Garanties SLA",
"Contrats personnalisés",
"Option sur site"
],
"transactionFee": "Frais de transaction personnalisés"
}
}
},
"testimonials": {
"title": "Apprécié par les Entreprises Partout",
"subtitle": "Découvrez ce que disent nos clients"
},
"stats": {
"appointments": "Rendez-vous Planifiés",
"businesses": "Entreprises",
"countries": "Pays",
"uptime": "Disponibilité"
},
"signup": {
"title": "Créez Votre Compte",
"subtitle": "Commencez votre essai gratuit aujourd'hui. Pas de carte de crédit requise.",
"steps": {
"business": "Entreprise",
"account": "Compte",
"plan": "Plan",
"confirm": "Confirmer"
},
"businessInfo": {
"title": "Parlez-nous de votre entreprise",
"name": "Nom de l'Entreprise",
"namePlaceholder": "ex., Salon & Spa Acme",
"subdomain": "Choisissez Votre Sous-domaine",
"checking": "Vérification de la disponibilité...",
"available": "Disponible !",
"taken": "Déjà pris"
},
"accountInfo": {
"title": "Créez votre compte administrateur",
"firstName": "Prénom",
"lastName": "Nom",
"email": "Adresse Email",
"password": "Mot de Passe",
"confirmPassword": "Confirmer le Mot de Passe"
},
"planSelection": {
"title": "Choisissez Votre Plan"
},
"confirm": {
"title": "Vérifiez Vos Informations",
"business": "Entreprise",
"account": "Compte",
"plan": "Plan Sélectionné",
"terms": "En créant votre compte, vous acceptez nos Conditions d'Utilisation et Politique de Confidentialité."
},
"errors": {
"businessNameRequired": "Le nom de l'entreprise est requis",
"subdomainRequired": "Le sous-domaine est requis",
"subdomainTooShort": "Le sous-domaine doit contenir au moins 3 caractères",
"subdomainInvalid": "Le sous-domaine ne peut contenir que des lettres minuscules, des chiffres et des tirets",
"subdomainTaken": "Ce sous-domaine est déjà pris",
"firstNameRequired": "Le prénom est requis",
"lastNameRequired": "Le nom est requis",
"emailRequired": "L'adresse email est requise",
"emailInvalid": "Veuillez entrer une adresse email valide",
"passwordRequired": "Le mot de passe est requis",
"passwordTooShort": "Le mot de passe doit contenir au moins 8 caractères",
"passwordMismatch": "Les mots de passe ne correspondent pas",
"generic": "Une erreur s'est produite. Veuillez réessayer."
},
"success": {
"title": "Bienvenue sur Smooth Schedule !",
"message": "Votre compte a été créé avec succès.",
"yourUrl": "Votre URL de réservation",
"checkEmail": "Nous vous avons envoyé un email de vérification. Veuillez vérifier votre email pour activer toutes les fonctionnalités.",
"goToLogin": "Aller à la Connexion"
},
"back": "Retour",
"next": "Suivant",
"creating": "Création du compte...",
"createAccount": "Créer le Compte",
"haveAccount": "Vous avez déjà un compte ?",
"signIn": "Se connecter"
},
"faq": {
"title": "Questions Fréquentes",
"subtitle": "Des questions ? Nous avons les réponses.",
"questions": {
"trial": {
"question": "Proposez-vous un essai gratuit ?",
"answer": "Oui ! Tous les plans payants incluent 14 jours d'essai gratuit. Pas de carte de crédit requise pour commencer."
},
"cancel": {
"question": "Puis-je annuler à tout moment ?",
"answer": "Absolument. Vous pouvez annuler votre abonnement à tout moment sans frais d'annulation."
},
"payment": {
"question": "Quels moyens de paiement acceptez-vous ?",
"answer": "Nous acceptons toutes les principales cartes de crédit via Stripe, y compris Visa, Mastercard et American Express."
},
"migrate": {
"question": "Puis-je migrer depuis une autre plateforme ?",
"answer": "Oui ! Notre équipe peut vous aider à migrer vos données existantes depuis d'autres plateformes de planification."
},
"support": {
"question": "Quel type de support proposez-vous ?",
"answer": "Le plan gratuit inclut le support communautaire. Professionnel et supérieur ont le support email, et Business/Entreprise ont le support téléphonique."
},
"customDomain": {
"question": "Comment fonctionnent les domaines personnalisés ?",
"answer": "Les plans Professionnel et supérieur peuvent utiliser votre propre domaine (ex., reservations.votreentreprise.com) au lieu de notre sous-domaine."
}
}
},
"about": {
"title": "À propos de Smooth Schedule",
"subtitle": "Notre mission est de simplifier la planification pour les entreprises partout.",
"story": {
"title": "Notre Histoire",
"content": "Smooth Schedule a été fondé avec une conviction simple : la planification ne devrait pas être compliquée. Nous avons construit une plateforme qui facilite la gestion des rendez-vous, ressources et clients pour les entreprises de toutes tailles."
},
"mission": {
"title": "Notre Mission",
"content": "Donner aux entreprises de services les outils dont elles ont besoin pour croître, tout en offrant à leurs clients une expérience de réservation fluide."
},
"values": {
"title": "Nos Valeurs",
"simplicity": {
"title": "Simplicité",
"description": "Nous croyons qu'un logiciel puissant peut aussi être simple à utiliser."
},
"reliability": {
"title": "Fiabilité",
"description": "Votre entreprise dépend de nous, nous ne compromettons jamais la disponibilité."
},
"transparency": {
"title": "Transparence",
"description": "Pas de frais cachés, pas de surprises. Ce que vous voyez est ce que vous obtenez."
},
"support": {
"title": "Support",
"description": "Nous sommes là pour vous aider à réussir, à chaque étape."
}
}
},
"contact": {
"title": "Contactez-nous",
"subtitle": "Des questions ? Nous serions ravis de vous entendre.",
"form": {
"name": "Votre Nom",
"namePlaceholder": "Jean Dupont",
"email": "Adresse Email",
"emailPlaceholder": "vous@exemple.com",
"subject": "Sujet",
"subjectPlaceholder": "Comment pouvons-nous vous aider ?",
"message": "Message",
"messagePlaceholder": "Parlez-nous de vos besoins...",
"submit": "Envoyer le Message",
"sending": "Envoi en cours...",
"success": "Merci de nous avoir contactés ! Nous vous répondrons bientôt.",
"error": "Une erreur s'est produite. Veuillez réessayer."
},
"info": {
"email": "support@smoothschedule.com",
"phone": "+1 (555) 123-4567",
"address": "123 Schedule Street, San Francisco, CA 94102"
},
"sales": {
"title": "Parler aux Ventes",
"description": "Intéressé par notre plan Entreprise ? Notre équipe commerciale serait ravie d'échanger."
}
},
"cta": {
"ready": "Prêt à commencer ?",
"readySubtitle": "Rejoignez des milliers d'entreprises qui utilisent déjà SmoothSchedule.",
"startFree": "Commencer l'Essai Gratuit",
"noCredit": "Pas de carte de crédit requise"
},
"footer": {
"product": "Produit",
"company": "Entreprise",
"legal": "Légal",
"features": "Fonctionnalités",
"pricing": "Tarifs",
"integrations": "Intégrations",
"about": "À propos",
"blog": "Blog",
"careers": "Carrières",
"contact": "Contact",
"terms": "Conditions",
"privacy": "Confidentialité",
"cookies": "Cookies",
"allRightsReserved": "Tous droits réservés."
}
}
}