| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987 |
- {
- "catalog": {
- "title": "Intégrations",
- "description": "Connectez les services que votre atelier utilise déjà. Chaque intégration se configure une seule fois et fonctionne en arrière-plan.",
- "all": "Toutes",
- "empty": "Aucune intégration dans cette catégorie pour le moment.",
- "notConnected": "Non connectée",
- "connect": "Connecter",
- "manage": "Gérer",
- "connectedTitle": "Connectés",
- "connectedDescription": "Services configurés par cet atelier. Ouvrez-en un pour vérifier son état, modifier les réglages ou le déconnecter.",
- "noneConnected": "Rien de connecté pour l'instant. Choisissez un service ci-dessous pour commencer.",
- "availableTitle": "Disponibles",
- "availableDescription": "Services que vous pouvez ajouter. Chacun se configure une fois et fonctionne en arrière-plan.",
- "allConnected": "Tous les services disponibles sont connectés.",
- "searchPlaceholder": "Rechercher une intégration",
- "noMatches": "Rien ne correspond à « {query} ».",
- "readMore": "En savoir plus",
- "suggestTitle": "Il manque un service que vous utilisez ?",
- "suggestDescription": "Dites-nous quelle intégration aiderait votre atelier et nous l'étudierons.",
- "suggest": "Suggérer une intégration",
- "suggestSubject": "Suggestion d'intégration"
- },
- "categories": {
- "calendar": "Calendrier",
- "conferencing": "Appels vidéo",
- "accounting": "Comptabilité",
- "messaging": "Messagerie",
- "payments": "Paiements",
- "automation": "Automatisation",
- "storage": "Fichiers",
- "registry": "Registre des véhicules",
- "repair": "Données de réparation",
- "other": "Autre",
- "ai": "IA"
- },
- "capabilities": {
- "calendar": {
- "push": "Ordres de travail vers le calendrier",
- "pull": "Plages occupées du calendrier",
- "conference": "Liens d'appel vidéo"
- },
- "sms": {
- "send": "SMS sortants",
- "receive": "Réponses entrantes"
- },
- "whatsapp": {
- "send": "Messages WhatsApp sortants",
- "receive": "Réponses entrantes"
- },
- "telegram": {
- "send": "Messages Telegram sortants",
- "receive": "Réponses entrantes"
- },
- "email": {
- "send": "E-mails sortants"
- },
- "vehicle": {
- "lookup": "Recherche par plaque et VIN",
- "inspection": "Dates de contrôle technique",
- "safety": "Rappels et plaintes de propriétaires"
- },
- "ai": {
- "chat": "Textes et résumés",
- "transcribe": "Dictée"
- },
- "payments": {
- "checkout": "Payer depuis le lien de la facture"
- },
- "accounting": {
- "invoices": "Factures vers la comptabilité",
- "customers": "Clients vers la comptabilité",
- "payments": "Paiements dans les deux sens"
- },
- "backup": {
- "target": "Destination de sauvegarde"
- },
- "repair": {
- "labor": "Temps de main-d'œuvre sur les ordres de travail et devis",
- "fluids": "Types et capacités de fluides"
- }
- },
- "statuses": {
- "active": "Connectée",
- "error": "Attention requise",
- "pending": "Configuration en cours",
- "disconnected": "Déconnectée",
- "needsSetup": "Configuration inachevée"
- },
- "connection": {
- "back": "Toutes les intégrations",
- "account": "Compte connecté",
- "lastHealth": "Dernière vérification",
- "lastSync": "Dernière synchronisation",
- "lastError": "La dernière exécution a échoué",
- "setupMissingTitle": "Configuration inachevée",
- "setupMissing": "Choisissez {fields} dans les réglages ci-dessous. D'ici là, rien n'est synchronisé.",
- "connected": "{name} est connecté.",
- "connectedShort": "Connecté",
- "connectWith": "Connecter {name}",
- "connect": "Connecter",
- "reconnect": "Reconnecter",
- "disconnect": "Déconnecter",
- "disconnectTitle": "Déconnecter {name} ?",
- "disconnectDescription": "Torqvoice oublie le compte et cesse de l'utiliser. Rien de ce qui a déjà été envoyé à {name} ou stocké dedans n'est touché.",
- "disconnectDescriptionCalendar": "Torqvoice oublie le compte et cesse de synchroniser. Les ordres de travail déjà placés dans {name} y restent. Le temps occupé affiché depuis ce calendrier est retiré du calendrier Torqvoice.",
- "disconnectDescriptionConferencing": "Torqvoice oublie le compte et cesse de créer des réunions. Les réunions déjà créées restent dans {name} et les liens sur les ordres de travail sont conservés.",
- "disconnectDescriptionAccounting": "Torqvoice oublie le compte et cesse d'envoyer et de lire. Les factures, clients et paiements déjà dans {name} y restent.",
- "removeSetup": "Retirer",
- "removeSetupTitle": "Retirer {name} ?",
- "removeSetupDescription": "Rien n'est encore connecté. Torqvoice oublie ce qui a été saisi et {name} revient dans la liste des services disponibles.",
- "removeSetupDone": "{name} retiré",
- "removeSetupHint": "Vous n'allez pas plus loin ? Retirez-le et le service revient dans la liste ci-dessous.",
- "disconnected": "Déconnecté",
- "test": "Tester la connexion",
- "testPassed": "La connexion fonctionne",
- "syncNow": "Synchroniser maintenant",
- "syncQueued": "Synchronisation en file d'attente ; elle démarre d'ici une minute",
- "pullNow": "Récupérer les paiements maintenant",
- "pullQueued": "Récupération des paiements en file d'attente ; elle démarre d'ici une minute",
- "backfill": "Envoyer les ordres de travail planifiés",
- "backfillQueued": "Les ordres de travail planifiés depuis la semaine dernière ont été mis en file d'attente",
- "backfillInvoices": "Envoyer les factures émises",
- "backfillInvoicesQueuedCount": "Mise en file de {count, plural, one {# facture émise} other {# factures émises}} à transmettre",
- "backfillInvoicesNone": "Aucune facture émise à envoyer. Seules les factures envoyées, partagées ou payées sont transmises, à partir de la date de début si vous en avez fixé une.",
- "retryQueued": "Tâche remise en file d'attente",
- "settingsTitle": "Paramètres",
- "settingsDescription": "Ce qu'il faut synchroniser et vers où. Les modifications s'appliquent à la prochaine synchronisation.",
- "settingsSaved": "Paramètres enregistrés",
- "save": "Enregistrer",
- "loading": "Chargement...",
- "choose": "Choisir...",
- "search": "Rechercher...",
- "noMatch": "Aucun résultat",
- "leaveEmpty": "Laisser vide",
- "noLimit": "Sans limite",
- "planLocked": "Les intégrations ne sont pas incluses dans votre forfait.",
- "lockedIntegrations": "Connectez des calendriers, des appels vidéo et d'autres services à votre atelier.",
- "lockedPayments": "Laissez vos clients régler leurs factures en ligne, chaque paiement étant enregistré sur la facture.",
- "lockedAi": "Connectez un fournisseur d'IA pour utiliser les fonctions d'IA dans votre atelier.",
- "ownAppTitle": "Cette installation utilise votre propre application auprès du fournisseur",
- "redirectUri": "URI de redirection à enregistrer auprès du fournisseur :",
- "sendTestEmail": "Envoyer un e-mail de test",
- "testEmailSent": "E-mail de test envoyé à {email}",
- "testEmailHint": "Un e-mail de test part vers votre propre adresse via ce fournisseur. Il valide l'adresse d'expédition et les règles d'envoi, ce qu'une simple vérification des clés ne peut pas faire.",
- "inboundUrl": "URL du webhook entrant",
- "inboundHintSecret": "Collez cette URL dans les réglages des messages entrants du fournisseur. Elle contient un secret qui identifie votre atelier : gardez-la privée.",
- "inboundHintMeta": "Collez cette URL comme URL de rappel dans votre application Meta, avec le jeton de vérification saisi ci-dessus, et abonnez-vous aux messages.",
- "inboundHintStripe": "Ajoutez cette URL dans le tableau de bord Stripe : ouvrez Workbench, puis Webhooks, choisissez Create an event destination et abonnez-la à checkout.session.completed. Stripe affiche ensuite un secret de signature pour ce point de terminaison ; collez-le ici dans le champ du secret de signature pour que chaque notification soit vérifiée par sa signature. En attendant, Torqvoice confirme chaque notification en demandant le checkout à Stripe.",
- "inboundHintVipps": "Saisissez cette URL comme URL de rappel dans le portail Vipps MobilePay. Vipps exige aussi des conditions de vente publiées, à renseigner sous Paramètres, Paiement.",
- "inboundHintPaypal": "Ajoutez cette URL dans le tableau de bord développeur PayPal sous Webhooks, abonnée à PAYMENT.CAPTURE.COMPLETED.",
- "copy": "Copier",
- "copied": "Copié",
- "updateKeys": "Mettre à jour les clés",
- "updateKeysHint": "La dernière vérification a échoué. Saisissez à nouveau les clés pour réessayer.",
- "awaitingKeys": "Connecté, mais il manque encore : {keys}.",
- "awaitingKeysHint": "Le webhook répond déjà au fournisseur, enregistrez-le dès maintenant. Ajoutez ces valeurs ici une fois que le fournisseur vous les a délivrées.",
- "saveKeys": "Enregistrer les clés",
- "keysSaved": "Clés enregistrées",
- "inspectionSync": {
- "title": "Synchronisation des contrôles",
- "vehicles": "{count} véhicules avec plaque dans cet atelier",
- "dueNow": "{count} seraient recherchés à la prochaine exécution",
- "withDate": "{count} ont déjà une date de contrôle",
- "lastPass": "Dernier passage complet {date}",
- "never": "Aucun passage complet pour l'instant",
- "inProgress": "Un passage est en cours",
- "off": "Activez le réglage et enregistrez ; d'ici là, un passage ne vérifie rien.",
- "syncNowHelp": "Synchroniser maintenant lance un passage immédiatement au lieu d'attendre celui de l'heure. Il recherche 25 véhicules à la fois et continue seul jusqu'à ce que tous les véhicules à vérifier soient traités. Le premier passage recherche tous les véhicules qui ont une plaque.",
- "confirmTitle": "Rechercher les véhicules maintenant ?",
- "confirmDescription": "{count} des {total} véhicules qui ont une plaque vont être recherchés dans {name} maintenant, 25 à la fois, et leurs dates de contrôle enregistrées. Les véhicules vérifiés récemment sont ignorés. Si {name} facture chaque recherche, chaque véhicule trouvé est facturé à votre compte.",
- "confirmLabel": "Rechercher {count} véhicules",
- "nothingDue": "Tous les véhicules qui ont une plaque ont été vérifiés récemment, il n'y a encore rien à rechercher."
- },
- "supersedes": "Connecter {next} déconnecte {current}. Un seul peut être actif à la fois : {current} cesse d'être utilisé dès que {next} est en service.",
- "platformHandlesBackupsTitle": "Les sauvegardes sont déjà incluses",
- "platformHandlesBackups": "Torqvoice sauvegarde déjà cet atelier toutes les heures et conserve des points de restauration pendant 30 jours. Connectez un bucket si vous voulez aussi une copie qui vous appartient, lisible sans Torqvoice.",
- "platformHandlesBackupsLink": "Voir vos points de restauration",
- "batchRetried": "{count, plural, =0 {Rien à réessayer} one {# tâche remise en file} other {# tâches remises en file}}",
- "advanced": "Avancé",
- "generate": "Générer",
- "show": "Afficher",
- "hide": "Masquer",
- "generatedPasswordWarning": "Conservez une copie de ce mot de passe en lieu sûr, ailleurs que sur ce serveur. Sans lui, personne ne peut ouvrir ces sauvegardes, pas même Torqvoice.",
- "backup": {
- "title": "Sauvegardes",
- "description": "La dernière sauvegarde réussie vers cette destination, la prochaine exécution et les exécutions les plus récentes.",
- "lastGood": "Dernière sauvegarde réussie",
- "added": "{size} ajoutés",
- "never": "Aucune pour l'instant",
- "nextRun": "Prochaine exécution",
- "notScheduled": "Non planifiée",
- "repositorySize": "Stocké à la destination",
- "runNow": "Sauvegarder maintenant",
- "running": "Sauvegarde en cours",
- "runningHint": "Une sauvegarde est en cours. Cette page se met à jour toute seule jusqu'à la fin.",
- "started": "Sauvegarde lancée",
- "recentTitle": "Exécutions récentes",
- "noRuns": "Aucune sauvegarde n'a encore été effectuée.",
- "addedNote": "La première exécution envoie tout. Chacune des suivantes n’ajoute que les éléments modifiés depuis, c’est pourquoi elle est petite. Chaque sauvegarde reste complète et peut être restaurée ou explorée seule.",
- "notStarted": "Non démarrée",
- "filesNewCount": "{count, plural, one {# nouveau fichier} other {# nouveaux fichiers}}",
- "columns": {
- "status": "Statut",
- "started": "Démarrée",
- "trigger": "Lancée par",
- "duration": "Durée",
- "filesNew": "Nouveaux fichiers",
- "bytesAdded": "Ajouté"
- },
- "trigger": {
- "scheduled": "Planification",
- "manual": "Manuel",
- "restore": "Restauration"
- },
- "status": {
- "queued": "En file d'attente",
- "running": "En cours",
- "done": "Terminée",
- "failed": "Échouée",
- "skipped": "Ignorée"
- },
- "restoring": "Restauration en cours",
- "restoringHint": "Une restauration est en cours : les données de l'atelier sont remplacées par la sauvegarde. Cette page se met à jour toute seule jusqu'à la fin. Ne travaillez pas dans l'atelier d'ici là.",
- "explore": "Explorer",
- "restore": {
- "showAll": "Afficher toutes les sauvegardes",
- "refresh": "Actualiser",
- "loading": "Lecture des sauvegardes à la destination",
- "loadFailed": "Impossible de lister les sauvegardes",
- "empty": "Aucune sauvegarde à cette destination pour l'instant.",
- "needsOwner": "Seul le propriétaire de l'atelier peut restaurer une sauvegarde ici.",
- "needsAdmin": "Seul un propriétaire ou un administrateur peut restaurer une sauvegarde.",
- "filesIncluded": "Photos et fichiers inclus",
- "filesNotIncluded": "Photos et fichiers non inclus",
- "earlierInstall": "Installation précédente",
- "action": "Restaurer",
- "dialogTitle": "Restaurer la sauvegarde du {time} ?",
- "warning": "La restauration <bold>remplace tout ce que cet atelier contient aujourd'hui</bold> : clients, véhicules, ordres de réparation, factures, paramètres et, quand la sauvegarde les inclut, photos et fichiers. Tout ce qui a été ajouté depuis la sauvegarde est perdu. Cette action est irréversible.",
- "secretsNote": "Les clés secrètes que la sauvegarde a laissées de côté conservent les valeurs que cette installation possède aujourd'hui. Les comptes utilisateurs et les mots de passe ne sont pas modifiés.",
- "confirmPrompt": "Saisissez le nom de l'atelier, <bold>{name}</bold>, pour confirmer.",
- "whileRunning": "La restauration s'exécute en arrière-plan et prend quelques minutes quand il y a beaucoup de photos. La page se met à jour toute seule jusqu'à la fin.",
- "cancel": "Annuler",
- "confirm": "Restaurer cette sauvegarde",
- "started": "Restauration lancée"
- }
- },
- "lockedBackups": "Des sauvegardes chiffrées et planifiées de votre atelier vers un stockage qui vous appartient.",
- "searchOrType": "Rechercher ou saisir un nom",
- "useTyped": "Utiliser « {value} »",
- "listNeedsKeys": "Saisissez les clés ci-dessus pour voir la liste",
- "listEmpty": "Rien n'a été listé. Saisissez plutôt un nom.",
- "testing": "Test de la connexion en cours",
- "testOk": "La connexion fonctionne : un objet de test a été écrit puis supprimé.",
- "testFailed": "Le test a échoué",
- "testSteps": {
- "settings": "Vérifiez les paramètres du fournisseur",
- "list": "La clé ne peut pas lister le bucket",
- "write": "La clé ne peut pas écrire dans le bucket",
- "delete": "La clé ne peut pas supprimer d'objets du bucket",
- "folder": "Le dossier ne peut être ni créé ni ouvert"
- },
- "testHint": "Saisissez les clés et le bucket pour les tester avant de connecter. Le test écrit un petit objet puis le supprime."
- },
- "activity": {
- "title": "Activité",
- "description": "Tâches récentes et lignes de journal pour cette connexion.",
- "retry": "Réessayer",
- "jobStatus": {
- "queued": "En file d'attente",
- "running": "En cours",
- "done": "Terminée",
- "failed": "Échec",
- "dead": "Abandonnée"
- },
- "jobs": "{count, plural, one {# tâche} other {# tâches}}",
- "counts": {
- "queued": "{count} en attente",
- "running": "{count} en cours",
- "done": "{count} terminées",
- "failed": "{count} échouées",
- "dead": "{count} abandonnées"
- },
- "noFailures": "Aucun échec.",
- "retryFailed": "Réessayer les échecs",
- "details": "Afficher les détails",
- "loadingMore": "Chargement des tâches plus anciennes",
- "loadFailed": "Impossible de charger les tâches plus anciennes.",
- "cleared": "Les tâches terminées sont supprimées après 7 jours."
- },
- "errors": {
- "generic": "Une erreur s'est produite",
- "demo": "Les intégrations ne peuvent pas être connectées sur la démo.",
- "forbidden": "Seul un administrateur peut connecter des intégrations.",
- "unknown": "Intégration inconnue.",
- "plan": "Cette intégration n'est pas incluse dans votre forfait.",
- "no-client": "Aucun identifiant d'application n'est configuré pour ce fournisseur.",
- "denied": "Vous avez annulé la connexion auprès du fournisseur.",
- "vendor": "Le fournisseur a renvoyé une erreur. Réessayez.",
- "invalid": "La réponse du fournisseur était incomplète. Réessayez.",
- "state": "Cette connexion a expiré ou appartient à une autre session. Recommencez.",
- "exchange": "Le fournisseur a refusé la connexion. Vérifiez les identifiants de l'application et réessayez.",
- "identify": "Connecté, mais le compte n'a pas pu être lu. Essayez de vous reconnecter.",
- "backupRunning": "Une sauvegarde est déjà en cours.",
- "restoreOwnerOnly": "Sur Torqvoice Cloud, seul le propriétaire de l'atelier peut restaurer une sauvegarde.",
- "restoreBusy": "Une sauvegarde ou une restauration est déjà en cours sur ce serveur. Réessayez quand elle sera terminée."
- },
- "meeting": {
- "join": "Rejoindre l'appel vidéo",
- "google-meet": "Google Meet",
- "teams": "Microsoft Teams",
- "zoom": "Zoom"
- },
- "calendar": {
- "external": "Depuis les calendriers connectés",
- "busy": "Occupé"
- },
- "connectors": {
- "google-calendar": {
- "description": "Ajoutez les ordres de travail planifiés à un Google Calendar, joignez un lien Google Meet et consultez les plages occupées du calendrier dans Torqvoice.",
- "tenantHelp": "Créez un client OAuth dans Google Cloud Console (API et services → Identifiants), activez l'API Google Calendar, ajoutez l'URI de redirection ci-dessous, puis collez ici l'identifiant client et le secret.",
- "fields": {
- "clientId": "Identifiant client",
- "clientSecret": "Secret client"
- },
- "settings": {
- "calendarId": "Calendrier",
- "pushEnabled": "Ajouter les ordres de travail planifiés à ce calendrier",
- "includeCustomer": "Inclure le nom et le téléphone du client dans l'événement",
- "addConference": "Ajouter une réunion Google Meet à chaque ordre de travail planifié",
- "addConferenceHelp": "Activé : chaque ordre de travail envoyé au calendrier reçoit une réunion Google Meet, et le lien apparaît sur l'ordre. Désactivé : ajoutez une réunion Google Meet à un ordre précis depuis sa page. Dans les deux cas, le client ne reçoit le lien que lorsque vous l'envoyez.",
- "pullEnabled": "Afficher les plages occupées de ce calendrier dans le calendrier Torqvoice",
- "pullEnabledHelp": "Lecture seule. Actualisé toutes les 15 minutes, une semaine en arrière et deux mois en avant."
- }
- },
- "microsoft-365": {
- "name": "Calendrier Microsoft 365",
- "description": "Ajoutez les ordres de travail planifiés à un calendrier Outlook, joignez un lien Microsoft Teams et consultez les plages occupées du calendrier dans Torqvoice.",
- "tenantHelp": "Enregistrez une application dans Microsoft Entra (Inscriptions d'applications), autorisez les comptes personnels et professionnels, ajoutez l'URI de redirection ci-dessous comme plateforme Web, créez un secret client, puis collez les deux ici.",
- "fields": {
- "clientId": "ID d'application (client)",
- "clientSecret": "Secret client"
- },
- "settings": {
- "calendarId": "Calendrier",
- "pushEnabled": "Ajouter les ordres de travail planifiés à ce calendrier",
- "includeCustomer": "Inclure le nom et le téléphone du client dans l'événement",
- "addConference": "Ajouter une réunion Microsoft Teams à chaque ordre de travail planifié",
- "addConferenceHelp": "Activé : chaque ordre de travail envoyé au calendrier reçoit une réunion Microsoft Teams, et le lien apparaît sur l'ordre. Désactivé : ajoutez une réunion Microsoft Teams à un ordre précis depuis sa page. Dans les deux cas, le client ne reçoit le lien que lorsque vous l'envoyez.",
- "pullEnabled": "Afficher les plages occupées de ce calendrier dans le calendrier Torqvoice",
- "pullEnabledHelp": "Lecture seule. Actualisé toutes les 15 minutes, une semaine en arrière et deux mois en avant."
- }
- },
- "zoom": {
- "description": "Ajoutez une réunion Zoom à un ordre de travail planifié et gardez le lien dessus, pour un diagnostic à distance ou pour présenter des constats au client.",
- "tenantHelp": "Dans Zoom App Marketplace, créez une application General (user-managed), ajoutez l'URI de redirection ci-dessous, ajoutez les scopes meeting:write:meeting, meeting:update:meeting, meeting:delete:meeting, meeting:read:meeting et user:read:user, puis collez ici l'ID client et le secret.",
- "fields": {
- "clientId": "ID client",
- "clientSecret": "Secret client"
- },
- "settings": {
- "autoCreate": "Créer automatiquement une réunion Zoom pour chaque ordre de travail planifié",
- "autoCreateHelp": "Désactivé : vous ajoutez vous-même l'appel vidéo à un ordre de travail, depuis sa page. Activé : chaque ordre avec une heure de début reçoit une réunion, déplacée en cas de report et supprimée en cas d'annulation. Dans les deux cas, le client ne reçoit le lien que si vous l'envoyez.",
- "includeCustomer": "Inclure le nom du client dans le sujet de la réunion",
- "joinBeforeHost": "Laisser le client rejoindre avant vous",
- "waitingRoom": "Utiliser une salle d'attente"
- }
- },
- "twilio-sms": {
- "description": "Envoyez et recevez des SMS via un numéro Twilio. Rappels, messages « prêt à récupérer » et les réponses qui reviennent.",
- "fields": {
- "accountSid": "Account SID",
- "authToken": "Jeton d'authentification"
- },
- "settings": {
- "phoneNumber": "Envoyer depuis ce numéro"
- }
- },
- "vonage-sms": {
- "description": "Envoyez et recevez des SMS via un numéro Vonage.",
- "fields": {
- "apiKey": "Clé API",
- "apiSecret": "Secret API",
- "signatureSecret": "Secret de signature",
- "signatureSecretHelp": "Dans le tableau de bord Vonage, sous API settings. S'il est renseigné, les messages entrants ne sont acceptés que s'ils sont signés par Vonage. Sans lui, seul le secret contenu dans l'URL du webhook est vérifié."
- },
- "settings": {
- "phoneNumber": "Envoyer depuis ce numéro"
- }
- },
- "telnyx-sms": {
- "description": "Envoyez et recevez des SMS via un numéro Telnyx.",
- "fields": {
- "apiKey": "Clé API",
- "webhookPublicKey": "Clé publique du webhook",
- "webhookPublicKeyHelp": "Dans le portail Telnyx, sous Account settings, Keys and credentials, Public key. Si elle est renseignée, les messages entrants ne sont acceptés que s'ils sont signés par Telnyx. Sans elle, seul le secret contenu dans l'URL du webhook est vérifié."
- },
- "settings": {
- "phoneNumber": "Envoyer depuis ce numéro"
- }
- },
- "whatsapp-meta": {
- "description": "Écrivez à vos clients sur WhatsApp directement via Meta. Les photos de ce que vous avez trouvé, et la conversation qui suit.",
- "fields": {
- "phoneNumberId": "ID du numéro de téléphone",
- "accessToken": "Jeton d'accès",
- "verifyToken": "Jeton de vérification du webhook",
- "appSecret": "Secret de l'application",
- "apiVersion": "Version de la Graph API",
- "appSecretHelp": "Meta signe chaque envoi avec ce secret. Tant qu'il n'est pas saisi, les messages envoyés au webhook sont refusés, car sinon toute personne connaissant l'URL pourrait se faire passer pour vos clients.",
- "phoneNumberIdHelp": "Dans WhatsApp Manager, sur le numéro depuis lequel vous envoyez ; ce n'est pas le numéro de téléphone lui-même. Meta ne le délivre qu'après vérification du webhook : laissez le champ vide, connectez, enregistrez le webhook, puis revenez l'ajouter.",
- "accessTokenHelp": "Un jeton permanent d'utilisateur système. Celui que Meta affiche pendant la configuration expire sous 24 heures. Ajoutez-le avec l'ID du numéro de téléphone une fois le webhook vérifié.",
- "verifyTokenHelp": "Une phrase de votre choix. Collez la même dans Meta lors de l'enregistrement du webhook."
- },
- "settings": {
- "enabled": "Envoyer des messages sur ce canal",
- "phoneNumber": "Envoyer depuis ce numéro",
- "templateName": "Modèle pour rouvrir une conversation",
- "templateLanguage": "Langue du modèle",
- "templateVariables": "Valeurs du modèle, dans l'ordre",
- "mediaTemplateName": "Modèle pour un message avec photo",
- "mediaTemplateLanguage": "Langue du modèle avec photo",
- "mediaTemplateVariables": "Valeurs du modèle avec photo, dans l'ordre"
- }
- },
- "whatsapp-twilio": {
- "description": "Écrivez à vos clients sur WhatsApp via un numéro Twilio, si c'est Twilio qui vous l'a fourni.",
- "fields": {
- "accountSid": "Account SID",
- "authToken": "Jeton d'authentification",
- "messagingServiceSid": "SID du service de messagerie"
- },
- "settings": {
- "enabled": "Envoyer des messages sur ce canal",
- "phoneNumber": "Envoyer depuis ce numéro",
- "templateName": "Modèle pour rouvrir une conversation",
- "templateLanguage": "Langue du modèle",
- "templateVariables": "Valeurs du modèle, dans l'ordre",
- "mediaTemplateName": "Modèle pour un message avec photo",
- "mediaTemplateLanguage": "Langue du modèle avec photo",
- "mediaTemplateVariables": "Valeurs du modèle avec photo, dans l'ordre"
- }
- },
- "telegram": {
- "description": "Un bot Telegram qui joint les clients qui l'utilisent et ramène leurs réponses dans la messagerie.",
- "fields": {
- "botToken": "Jeton du bot"
- },
- "settings": {
- "enabled": "Envoyer des messages sur ce canal",
- "botUsername": "Nom d'utilisateur du bot"
- }
- },
- "smtp": {
- "description": "Envoyez factures et rappels via votre propre serveur de messagerie, plutôt que par la messagerie de la plateforme.",
- "fields": {
- "host": "Serveur",
- "port": "Port",
- "user": "Nom d'utilisateur",
- "pass": "Mot de passe"
- },
- "settings": {
- "fromEmail": "Envoyer depuis cette adresse",
- "fromName": "Nom affiché comme expéditeur",
- "secure": "Se connecter en TLS dès le départ",
- "requireTls": "Exiger que le serveur passe en TLS",
- "rejectUnauthorized": "Refuser un certificat qui n'est pas valide"
- }
- },
- "resend": {
- "description": "Envoyez factures et rappels via Resend.",
- "fields": {
- "apiKey": "Clé API"
- },
- "settings": {
- "fromEmail": "Envoyer depuis cette adresse",
- "fromName": "Nom affiché comme expéditeur"
- }
- },
- "postmark": {
- "description": "Envoyez factures et rappels via Postmark.",
- "fields": {
- "apiKey": "Jeton du serveur"
- },
- "settings": {
- "fromEmail": "Envoyer depuis cette adresse",
- "fromName": "Nom affiché comme expéditeur"
- }
- },
- "mailgun": {
- "description": "Envoyez factures et rappels via Mailgun.",
- "fields": {
- "apiKey": "Clé API",
- "domain": "Domaine d'envoi"
- },
- "settings": {
- "fromEmail": "Envoyer depuis cette adresse",
- "fromName": "Nom affiché comme expéditeur",
- "region": "Région du domaine"
- }
- },
- "sendgrid": {
- "description": "Envoyez factures et rappels via SendGrid.",
- "fields": {
- "apiKey": "Clé API"
- },
- "settings": {
- "fromEmail": "Envoyer depuis cette adresse",
- "fromName": "Nom affiché comme expéditeur"
- }
- },
- "amazon-ses": {
- "description": "Envoyez factures et rappels via Amazon SES.",
- "fields": {
- "accessKeyId": "ID de clé d'accès",
- "secretAccessKey": "Clé d'accès secrète",
- "region": "Région"
- },
- "settings": {
- "fromEmail": "Envoyer depuis cette adresse",
- "fromName": "Nom affiché comme expéditeur"
- }
- },
- "vegvesen": {
- "description": "Remplissez un véhicule à partir de sa plaque ou de son VIN norvégien : marque, modèle, année, carburant, boîte de vitesses, moteur, couleur, dimensions des pneus et date du prochain EU-kontroll, directement depuis le registre de Statens vegvesen. Aucune donnée sur le propriétaire n'est renvoyée.",
- "fields": {
- "apiKey": "Clé API",
- "apiKeyHelp": "Gratuite. Commandez la clé sur vegvesen.no, rubrique « API for tekniske kjøretøyopplysninger » : connectez-vous avec BankID, représentez l'atelier, et la clé est délivrée immédiatement. Elle autorise 50 000 recherches par jour."
- },
- "settings": {
- "syncInspections": "Tenir à jour les dates de contrôle de tous les véhicules de cet atelier",
- "syncInspectionsHelp": "Une fois par heure, les véhicules à vérifier sont recherchés par plaque et leur prochaine date de EU-kontroll est enregistrée ; la fréquence de revérification se règle ci-dessous. Seuls les véhicules enregistrés dans cet atelier sont envoyés.",
- "inspectionRecheck": "Revérifier les véhicules qui ont déjà une date",
- "inspectionRecheckHelp": "Une date ne change que lorsqu'un contrôle est passé. Mensuel remarque le plus tôt un contrôle anticipé ; seulement près de l'échéance coûte le moins. Près de l'échéance, chaque véhicule est revérifié chaque semaine, quel que soit ce choix.",
- "recheckMonthly": "Chaque mois",
- "recheckQuarterly": "Tous les trois mois",
- "recheckNearDeadline": "Seulement près de l'échéance",
- "inspectionSoonDays": "Près de l'échéance signifie à moins de",
- "inspectionSoonDaysHelp": "Dans cette fenêtre, un véhicule est revérifié chaque semaine, si bien qu'un contrôle réussi le retire de la liste de rappels en quelques jours. Une fenêtre plus courte signifie moins de recherches.",
- "soon30": "30 jours",
- "soon60": "60 jours",
- "soon90": "90 jours",
- "inspectionOnlyWithCustomer": "Seulement les véhicules avec un client",
- "inspectionOnlyWithCustomerHelp": "Ignorer les véhicules sans client enregistré. Personne ne peut recevoir de rappel à leur sujet, la recherche coûterait donc pour rien."
- }
- },
- "openapi-automotive": {
- "description": "Remplissez un véhicule à partir de sa plaque française, italienne, espagnole, portugaise ou britannique : marque, modèle, année, VIN, carburant, cylindrée et plus, depuis les données d'immatriculation du pays via Openapi.com. Chaque recherche est facturée sur le compte Openapi de l'atelier. Aucune donnée sur le propriétaire n'est renvoyée.",
- "fields": {
- "token": "Jeton d'API",
- "tokenHelp": "Créez un compte sur console.openapi.com, créditez le portefeuille et, dans Automotive, créez un jeton pour l'environnement de production. Chaque recherche aboutie coûte quelques dizaines de centimes ; une recherche sans résultat est gratuite."
- },
- "settings": {
- "country": "Pays",
- "countryHelp": "Le registre à interroger. Les plaques françaises et italiennes ont le même format, le pays ne peut donc pas être déduit de la plaque.",
- "cars": "Rechercher les voitures",
- "carsHelp": "Interroge le registre des voitures. Désactivez-le si vous ne travaillez que sur des motos : la recherche saute alors les voitures et répond plus vite.",
- "bikes": "Rechercher les motos",
- "bikesHelp": "Interroge le registre des motos. Si les voitures sont aussi activées, il n'est interrogé que lorsqu'aucune voiture ne correspond, et une recherche voiture sans résultat est gratuite. Indisponible pour le Portugal."
- }
- },
- "checkcardetails": {
- "description": "Remplissez un véhicule à partir de sa plaque britannique ou de son VIN : marque, modèle, année, couleur, carburant, cylindrée et la date du prochain MOT, à partir des données de la DVLA via Check Car Details. Voitures et motos viennent du même registre. Si UK Vehicle Data est activé sur votre compte, le VIN, la transmission et les poids arrivent aussi. Chaque recherche est facturée au compte Check Car Details de l'atelier. Aucune donnée sur le propriétaire n'est renvoyée.",
- "fields": {
- "apiKey": "Clé API",
- "apiKeyHelp": "Créez un compte sur api.checkcardetails.co.uk et copiez la clé de production sous API Keys. Vehicle Registration est inclus dans tous les comptes. Pour obtenir aussi le VIN, cliquez sur Request Access à côté de UK Vehicle Data sous Your Data Points ; les recherches l'utilisent dès qu'il est activé. Une clé de test ne trouve que les plaques contenant la lettre A."
- },
- "settings": {
- "syncInspections": "Tenir à jour les dates de MOT de tous les véhicules de cet atelier",
- "syncInspectionsHelp": "Quand c'est activé, chaque véhicule avec une plaque est recherché une fois et sa date de MOT enregistrée. Ensuite, les véhicules sont revérifiés selon le réglage ci-dessous. Chaque véhicule trouvé est facturé comme une recherche Vehicle Registration ; les plaques inconnues du registre sont gratuites. Seuls les véhicules enregistrés dans cet atelier sont envoyés.",
- "inspectionRecheck": "Revérifier les véhicules qui ont déjà une date",
- "inspectionRecheckHelp": "Une date ne change que lorsqu'un contrôle est passé. Mensuel remarque le plus tôt un contrôle anticipé ; seulement près de l'échéance coûte le moins. Près de l'échéance, chaque véhicule est revérifié chaque semaine, quel que soit ce choix.",
- "recheckMonthly": "Chaque mois",
- "recheckQuarterly": "Tous les trois mois",
- "recheckNearDeadline": "Seulement près de l'échéance",
- "inspectionSoonDays": "Près de l'échéance signifie à moins de",
- "inspectionSoonDaysHelp": "Dans cette fenêtre, un véhicule est revérifié chaque semaine, si bien qu'un contrôle réussi le retire de la liste de rappels en quelques jours. Une fenêtre plus courte signifie moins de recherches.",
- "soon30": "30 jours",
- "soon60": "60 jours",
- "soon90": "90 jours",
- "inspectionOnlyWithCustomer": "Seulement les véhicules avec un client",
- "inspectionOnlyWithCustomerHelp": "Ignorer les véhicules sans client enregistré. Personne ne peut recevoir de rappel à leur sujet, la recherche coûterait donc pour rien."
- }
- },
- "rdw": {
- "description": "Remplissez un véhicule à partir de sa plaque néerlandaise : marque, modèle, année, carburant, cylindrée, couleur, masses et date du prochain APK, directement depuis le registre ouvert des véhicules de la RDW. Gratuit, sans clé. Ni les données du propriétaire ni le VIN ne sont publiés.",
- "fields": {
- "appToken": "Jeton d'application (facultatif)",
- "appTokenHelp": "Les données ouvertes de la RDW fonctionnent sans clé, mais les requêtes anonymes partagent un quota limité. Pour la synchronisation des contrôles, créez un compte gratuit sur opendata.rdw.nl, ouvrez les paramètres développeur de votre profil et créez un jeton d'application."
- },
- "settings": {
- "syncInspections": "Tenir à jour les dates d'APK de tous les véhicules de cet atelier",
- "syncInspectionsHelp": "Une fois par heure, les véhicules à vérifier sont recherchés par plaque et leur prochaine date de APK est enregistrée ; la fréquence de revérification se règle ci-dessous. Seuls les véhicules enregistrés dans cet atelier sont envoyés.",
- "inspectionRecheck": "Revérifier les véhicules qui ont déjà une date",
- "inspectionRecheckHelp": "Une date ne change que lorsqu'un contrôle est passé. Mensuel remarque le plus tôt un contrôle anticipé ; seulement près de l'échéance coûte le moins. Près de l'échéance, chaque véhicule est revérifié chaque semaine, quel que soit ce choix.",
- "recheckMonthly": "Chaque mois",
- "recheckQuarterly": "Tous les trois mois",
- "recheckNearDeadline": "Seulement près de l'échéance",
- "inspectionSoonDays": "Près de l'échéance signifie à moins de",
- "inspectionSoonDaysHelp": "Dans cette fenêtre, un véhicule est revérifié chaque semaine, si bien qu'un contrôle réussi le retire de la liste de rappels en quelques jours. Une fenêtre plus courte signifie moins de recherches.",
- "soon30": "30 jours",
- "soon60": "60 jours",
- "soon90": "90 jours",
- "inspectionOnlyWithCustomer": "Seulement les véhicules avec un client",
- "inspectionOnlyWithCustomerHelp": "Ignorer les véhicules sans client enregistré. Personne ne peut recevoir de rappel à leur sujet, la recherche coûterait donc pour rien."
- }
- },
- "regcheck": {
- "description": "Remplissez un véhicule à partir de sa plaque en Australie, Nouvelle-Zélande, aux États-Unis, en Irlande, Norvège, Suède, Danemark, Finlande, Estonie, Tchéquie, Slovaquie, Hongrie ou Croatie : marque, modèle, année, VIN, carburant et cylindrée lorsque le pays les publie, via RegCheck. Chaque recherche aboutie consomme un crédit du compte RegCheck de l'atelier. Aucune donnée sur le propriétaire n'est renvoyée.",
- "fields": {
- "username": "Nom d'utilisateur RegCheck",
- "usernameHelp": "Inscrivez-vous sur regcheck.org.uk ; le compte comprend 10 recherches gratuites, les suivantes s'achètent par blocs de 100 depuis le tableau de bord. Seul le nom d'utilisateur est nécessaire ici, jamais le mot de passe. Une plaque introuvable ne coûte rien."
- },
- "settings": {
- "country": "Pays",
- "countryHelp": "Le registre à interroger. Chaque pays a son propre service, la connexion n'en interroge donc qu'un.",
- "auState": "État ou territoire",
- "auStateHelp": "L'Australie immatricule les véhicules par État et le registre doit savoir lequel interroger. Choisissez celui où la plupart des véhicules de vos clients sont immatriculés.",
- "usState": "État",
- "usStateHelp": "Le code à deux lettres de l'État où les véhicules sont immatriculés, comme CA ou TX. Les registres américains sont interrogés par État."
- }
- },
- "openai": {
- "description": "Descriptions de service, résumés d'historique, lecture de documents et assistant, traités par votre propre compte OpenAI. Chaque appel est facturé à ce compte, et vous choisissez le modèle.",
- "fields": {
- "apiKey": "Clé API",
- "apiKeyHelp": "À créer sur platform.openai.com, dans API keys. Le compte doit être approvisionné ; OpenAI facture à l’appel."
- },
- "settings": {
- "model": "Modèle",
- "modelHelp": "Le modèle qui répond. La liste vient de votre compte, les plus récents en premier. Les petits modèles coûtent moins par appel et suffisent à la plupart des textes d'atelier."
- }
- },
- "anthropic": {
- "description": "Descriptions de service, résumés d'historique, lecture de documents et assistant, traités par Claude sur votre propre compte Anthropic. Chaque appel est facturé à ce compte, et vous choisissez le modèle.",
- "fields": {
- "apiKey": "Clé API",
- "apiKeyHelp": "À créer sur console.anthropic.com, dans API keys. Le compte doit être approvisionné ; Anthropic facture à l’appel."
- },
- "settings": {
- "model": "Modèle",
- "modelHelp": "Le modèle qui répond. La liste vient de votre compte, les plus récents en premier. Les petits modèles coûtent moins par appel et suffisent à la plupart des textes d'atelier."
- }
- },
- "openai-compatible": {
- "name": "Compatible OpenAI",
- "description": "Descriptions de service, résumés d'historique, lecture de documents et assistant, fournis par tout serveur parlant l'API de chat d'OpenAI : Ollama, Open WebUI, LocalAI, vLLM, LM Studio, LiteLLM et consorts. Vos données restent sur votre propre matériel.",
- "fields": {
- "baseUrl": "URL de base",
- "baseUrlHelp": "Là où commence l'API façon OpenAI du serveur, chemin compris : /v1 pour Ollama, vLLM, LocalAI et LM Studio, /api pour Open WebUI. Torqvoice y ajoute /models et /chat/completions.",
- "apiKey": "Clé API",
- "apiKeyHelp": "Seulement si le serveur en exige une. Ollama et vLLM tournent généralement sans clé ; Open WebUI en délivre une dans Paramètres, Compte."
- },
- "settings": {
- "model": "Modèle",
- "modelHelp": "Quel modèle répond. La liste reprend tout ce que le serveur annonce, par nom. Choisissez un modèle avec vision pour la lecture de photos."
- }
- },
- "stripe": {
- "description": "Paiements par carte depuis le lien de la facture, sur votre propre compte Stripe. Le client paie, Stripe prévient Torqvoice et la facture se marque payée toute seule.",
- "fields": {
- "secretKey": "Clé secrète",
- "secretKeyHelp": "Depuis le tableau de bord Stripe sous Developers, API keys. Les clés de test ne traitent rien de réel : essayez d'abord un paiement avec elles, puis passez aux clés réelles.",
- "publishableKey": "Clé publiable",
- "webhookSecret": "Secret de signature du webhook",
- "webhookSecretHelp": "Facultatif, et peut être ajouté après la connexion. Stripe l'affiche sous Reveal secret une fois l'URL de notification de cette page ajoutée comme point de terminaison. Avec lui, chaque notification est vérifiée par sa signature ; sans lui, Torqvoice demande le checkout à Stripe avant d'enregistrer un paiement."
- },
- "settings": {
- "enabled": "Proposer sur les liens de facture",
- "enabledHelp": "Désactivez pour retirer le bouton de paiement des factures partagées pendant un temps, sans déconnecter. Les paiements déjà lancés sont toujours enregistrés."
- }
- },
- "vipps": {
- "description": "Vipps MobilePay depuis le lien de la facture. Le client paie dans l'application qu'il a déjà et la facture se marque payée toute seule.",
- "fields": {
- "clientId": "ID client",
- "clientSecret": "Secret client",
- "subscriptionKey": "Clé d'abonnement",
- "subscriptionKeyHelp": "La Ocp-Apim-Subscription-Key du portail Vipps MobilePay, dans les clés API de l'unité de vente.",
- "merchantSerialNumber": "Numéro de série marchand"
- },
- "settings": {
- "enabled": "Proposer sur les liens de facture",
- "enabledHelp": "Désactivez pour retirer le bouton de paiement des factures partagées pendant un temps, sans déconnecter. Les paiements déjà lancés sont toujours enregistrés.",
- "testMode": "Mode test",
- "testModeHelp": "Utiliser l'environnement de test Vipps avec des clés de test. Laissez-le activé jusqu'à ce qu'un paiement complet ait abouti, puis désactivez-le et saisissez les clés réelles."
- }
- },
- "paypal": {
- "description": "Paiement PayPal depuis le lien de la facture, via votre propre application PayPal. Le client paie avec un compte PayPal ou une carte et la facture se marque payée toute seule.",
- "fields": {
- "clientId": "ID client",
- "clientSecret": "Secret client"
- },
- "settings": {
- "enabled": "Proposer sur les liens de facture",
- "enabledHelp": "Désactivez pour retirer le bouton de paiement des factures partagées pendant un temps, sans déconnecter. Les paiements déjà lancés sont toujours enregistrés.",
- "sandbox": "Mode sandbox",
- "sandboxHelp": "Utiliser le sandbox PayPal avec les clés de l'application sandbox. Laissez-le activé jusqu'à ce qu'un paiement complet ait abouti, puis désactivez-le et saisissez les clés de l'application réelle."
- }
- },
- "quickbooks": {
- "description": "Envoyez les factures émises, leurs clients et leurs paiements vers QuickBooks Online, et récupérez les paiements enregistrés là-bas.",
- "tenantHelp": "Créez une application sur le portail développeur Intuit. Copiez le client id et le secret depuis Keys and credentials, et saisissez l'URI de redirection ci-dessous sous Settings, Redirect URIs. Les clés de développement atteignent les entreprises sandbox, les clés de production les vraies.",
- "fields": {
- "clientId": "Identifiant client",
- "clientSecret": "Secret client"
- },
- "settings": {
- "pushInvoices": "Envoyer les factures émises vers QuickBooks",
- "pushOnComplete": "Envoyer aussi les factures quand le travail est marqué terminé",
- "pushOnCompleteHelp": "Sans cette option, une facture part une fois envoyée, partagée ou payée. Avec, un travail terminé part tout de suite et est mis à jour s'il change.",
- "startDate": "Uniquement les factures datées à partir du",
- "startDateHelp": "Laissez vide pour envoyer toutes les factures émises. Utilisez la date où votre comptabilité est passée sur QuickBooks pour ne pas saisir deux fois les anciennes factures.",
- "includeVehicle": "Indiquer le véhicule sur la facture",
- "includeVehicleHelp": "Une ligne de texte au-dessus des lignes facturées avec l'année, la marque, le modèle, la plaque et le kilométrage, pour que la comptabilité sache de quelle voiture il s'agit.",
- "laborItemId": "Article pour les lignes de main-d'œuvre",
- "laborItemIdHelp": "Laissez vide et un article nommé Labour sera créé sous votre compte de produits la première fois.",
- "partsItemId": "Article pour les lignes de pièces",
- "partsItemIdHelp": "Laissez vide et un article nommé Parts sera créé sous votre compte de produits la première fois.",
- "taxAmounts": "Montants de taxe",
- "taxAmountsHelp": "Tel que facturé envoie la taxe exactement telle qu'elle figure sur la facture reçue par le client, pour que les deux systèmes concordent au centime. Calculé par QuickBooks laisse QuickBooks appliquer le taux du code de taxe, ou l'adresse du client aux États-Unis, et le journal signale les totaux différents.",
- "taxAmountsBilled": "Tel que facturé dans Torqvoice",
- "taxAmountsQuickbooks": "Calculé par QuickBooks",
- "taxCodeId": "Code de taxe pour les factures taxables",
- "taxCodeIdHelp": "QuickBooks enregistre la taxe sous un code de taxe. Torqvoice choisit le code dont le taux correspond à chaque facture ; celui-ci sert quand aucun ne correspond. Une société américaine utilise TAX sauf si vous choisissez un autre code.",
- "zeroTaxCodeId": "Code de taxe pour les factures sans taxe",
- "zeroTaxCodeIdHelp": "Utilisé quand la facture n'a pas de taxe ou que le client est exonéré. Une société américaine utilise NON sauf si vous choisissez un autre code.",
- "pushPayments": "Enregistrer les paiements dans QuickBooks",
- "depositAccountId": "Déposer les paiements sur",
- "depositAccountIdHelp": "Laissez vide pour utiliser Undeposited Funds.",
- "manualPaidAsPayment": "Enregistrer un paiement quand une facture est marquée payée à la main",
- "manualPaidAsPaymentHelp": "Une facture marquée payée dans Torqvoice sans écriture de paiement reçoit dans QuickBooks un paiement du montant qu'elle y affiche encore comme dû. Désactivé, elle y reste ouverte jusqu'à l'enregistrement d'un paiement.",
- "pullPayments": "Récupérer les paiements enregistrés dans QuickBooks",
- "pullPaymentsHelp": "Toutes les 30 minutes. Un paiement reçu dans QuickBooks sur une facture Torqvoice est enregistré ici sur la facture."
- }
- },
- "fiken": {
- "description": "Envoyez les factures émises, leurs clients et leurs paiements vers Fiken, et récupérez les paiements enregistrés là-bas.",
- "tenantHelp": "Créez une application dans Fiken sous Rediger konto, API, pour vos propres sociétés. Saisissez l'URI de redirection ci-dessous dans l'application, puis copiez ici son identifiant client et son secret client. La société doit avoir le module API de Fiken.",
- "fields": {
- "clientId": "Identifiant client",
- "clientSecret": "Secret client"
- },
- "settings": {
- "companySlug": "Société dans Fiken",
- "companySlugHelp": "La société dont la comptabilité reçoit les factures. Votre utilisateur Fiken peut avoir accès à plusieurs sociétés.",
- "pushInvoices": "Envoyer les factures émises vers Fiken",
- "pushOnComplete": "Envoyer aussi les factures quand le travail est marqué terminé",
- "pushOnCompleteHelp": "Sans cette option, une facture part une fois envoyée, partagée ou payée. Avec, un travail terminé part tout de suite et est mis à jour s'il change.",
- "startDate": "Uniquement les factures datées à partir du",
- "startDateHelp": "Laissez vide pour envoyer toutes les factures émises. Utilisez la date où votre comptabilité est passée sur Fiken pour ne pas saisir deux fois les anciennes factures.",
- "attachPdf": "Joindre le PDF de la facture",
- "attachPdfHelp": "Une facture entre dans Fiken comme une vente (Annet salg) sous son numéro Torqvoice. Avec cette option, le PDF reçu par le client est classé sur la vente comme pièce justificative.",
- "laborAccount": "Compte de produits pour la main-d'œuvre",
- "laborAccountHelp": "Laissez vide pour utiliser le 3000.",
- "partsAccount": "Compte de produits pour les pièces",
- "partsAccountHelp": "Laissez vide pour utiliser le 3000.",
- "zeroVatType": "Type de TVA pour les factures sans TVA",
- "zeroVatTypeHelp": "Comment Fiken comptabilise une vente sans TVA. Une société non assujettie à la TVA n'a rien à choisir ici. Une société assujettie doit choisir avant l'envoi d'une telle facture ; demandez à votre comptable ce qui s'applique.",
- "vatNone": "Aucun (pas de traitement de TVA)",
- "vatExempt": "Exonéré (fritatt)",
- "vatOutside": "Hors champ de la TVA (utenfor)",
- "vatExport": "Exonéré, exportation",
- "vatReverse": "Exonéré, autoliquidation",
- "zeroAccount": "Compte de produits pour les factures sans TVA",
- "zeroAccountHelp": "Laissez vide pour utiliser les comptes main-d'œuvre et pièces ci-dessus. Si Fiken refuse le compte avec le type de TVA, la raison figure dans le journal d'activité.",
- "pushPayments": "Enregistrer les paiements dans Fiken",
- "paymentAccount": "Déposer les paiements sur",
- "paymentAccountHelp": "Laissez vide pour utiliser le premier compte bancaire de la société.",
- "manualPaidAsPayment": "Enregistrer un paiement quand une facture est marquée payée à la main",
- "manualPaidAsPaymentHelp": "Une facture marquée payée dans Torqvoice sans écriture de paiement reçoit dans Fiken un paiement du montant qu'elle y affiche encore comme dû. Désactivé, elle y reste ouverte jusqu'à l'enregistrement d'un paiement.",
- "pullPayments": "Récupérer les paiements enregistrés dans Fiken",
- "pullPaymentsHelp": "Toutes les 30 minutes. Un paiement reçu dans Fiken sur une facture Torqvoice est enregistré ici sur la facture."
- }
- },
- "nhtsa": {
- "description": "Remplissez un véhicule à partir de son VIN et consultez les rappels, les plaintes de propriétaires et les notes aux crash-tests pour chaque année-modèle, auprès de l'autorité de sécurité américaine. Gratuit, sans clé.",
- "fields": {},
- "settings": {
- "refreshFleet": "Tenir à jour les données de rappels et de plaintes pour chaque véhicule de cet atelier",
- "refreshFleetHelp": "Une fois par jour, les modèles non actualisés depuis une semaine sont récupérés à nouveau, pour que la page du véhicule n'attende jamais et qu'un nouveau rappel apparaisse dans la semaine. Seuls la marque, le modèle et l'année sont envoyés."
- }
- },
- "openlaborproject": {
- "description": "Consultez les temps de main-d’œuvre et les capacités de fluides du véhicule d’un ordre de réparation ou d’un devis, et ajoutez les heures d’une opération comme ligne de main-d’œuvre en un clic. La plupart des données concernent des véhicules du marché américain, et le barème indique à quel marché correspond chaque recherche. Chaque valeur indique la fiabilité estimée par Open Labor Project, et beaucoup sont des estimations générées par IA : vérifiez-les avant de faire un devis au client. Les recherches utilisent la propre clé API de l’atelier. Avec une offre payante d’Open Labor Project, un véhicule consulté une fois est conservé tant que l’offre est active, si bien qu’une nouvelle recherche ne coûte aucun appel.",
- "fields": {
- "apiKey": "Clé API",
- "apiKeyHelp": "Demandez une clé sur openlaborproject.com, rubrique Developers ; elle arrive par e-mail. Une clé gratuite donne 10 appels par jour et affiche les heures une opération à la fois. L'offre Builder et au-delà relèvent la limite et affichent toutes les heures d'un coup.",
- "apiKeyServerHelp": "Laissez ce champ vide pour utiliser la clé fournie par ce serveur, ou collez votre propre clé d’openlaborproject.com pour utiliser votre propre offre."
- },
- "settings": {
- "minConfidence": "Afficher les temps à partir de",
- "minConfidenceHelp": "Écarte les temps dont la source est moins sûre. Beaucoup de temps pour les marques européennes sont des estimations par IA : un choix strict peut laisser peu d’opérations.",
- "confidenceAll": "Tous les niveaux de confiance",
- "confidenceMedium": "Moyenne et plus",
- "confidenceHigh": "Vérifié et plus",
- "confidenceOem": "OEM uniquement",
- "hoursFrom": "Heures à ajouter",
- "hoursFromHelp": "Le chiffre qui va sur l’ordre de réparation : le temps barème, ou le haut de la fourchette donnée par Open Labor Project (par exemple 1,6 h au lieu de 1,2 h). Le haut de la fourchette laisse de la marge pour les opérations qui durent plus longtemps.",
- "hoursBook": "Temps barème",
- "hoursHigh": "Haut de la fourchette",
- "adjustPercent": "Ajuster les temps de (%)",
- "adjustPercentHelp": "Un pourcentage ajouté à chaque temps avant qu’il n’aille sur l’ordre de réparation : 10 fait passer 1,2 h à 1,32 h, -10 le fait passer à 1,08 h. De -50 à 200.",
- "rounding": "Arrondir les heures au supérieur à",
- "roundingHelp": "Arrondit au supérieur les heures de chaque opération, après un éventuel ajustement : avec 0,25, 1,32 h devient 1,5 h. Un temps déjà sur un pas reste tel quel.",
- "roundNone": "Ne pas arrondir",
- "roundTenth": "0,1 heure",
- "roundQuarter": "0,25 heure",
- "roundHalf": "0,5 heure",
- "fluids": "Afficher les fluides",
- "fluidsHelp": "Ajoute un onglet Fluides avec capacités, spécifications et intervalles de remplacement. L’ouvrir utilise un appel à part.",
- "units": "Unités des fluides",
- "unitsHelp": "Les unités dans lesquelles s’affichent capacités et intervalles.",
- "unitsBoth": "Les deux",
- "unitsMetric": "Métrique (L, km)",
- "unitsUs": "US (qt, mi)"
- }
- },
- "speech-to-text": {
- "name": "Transcription vocale",
- "description": "La dictée sur un ordre de travail, transcrite par un modèle vocal plutôt que par le navigateur : bien plus précise, dans toutes les langues, et elle connaît le vocabulaire de l'atelier. Indépendant de votre fournisseur d'IA, que vous pouvez garder tel quel. Utilise votre propre clé OpenAI, ou votre propre serveur compatible avec l'API de transcription d'OpenAI. L'enregistrement est envoyé pour être transcrit et n'est pas conservé.",
- "fields": {
- "apiKey": "Clé API",
- "apiKeyHelp": "Une clé OpenAI, sur platform.openai.com sous API keys ; OpenAI facture l'usage à la minute. Pour votre propre serveur, seulement s'il en demande une.",
- "baseUrl": "Adresse du serveur",
- "baseUrlHelp": "Laissez vide pour utiliser OpenAI. Pour votre propre serveur (un Whisper local, LocalAI, Groq), l'adresse où commence son API de type OpenAI, chemin compris, par exemple /v1. Torqvoice y ajoute /audio/transcriptions."
- },
- "settings": {
- "model": "Modèle",
- "modelHelp": "Le modèle vocal à utiliser. gpt-4o-mini-transcribe est précis et bon marché ; gpt-4o-transcribe est le plus grand. Votre propre serveur répond en général à whisper-1.",
- "mode": "Qui choisit comment la dictée est transcrite",
- "modeHelp": "Le navigateur écrit pendant que vous parlez mais il est moins bon, surtout dans les langues moins répandues. Le modèle vocal écrit quand vous vous arrêtez.",
- "modeAi": "Toujours le modèle vocal",
- "modeChoice": "Chacun choisit : modèle vocal ou navigateur"
- }
- },
- "s3": {
- "name": "Bucket de stockage cloud",
- "description": "Des sauvegardes chiffrées de cet atelier vers un bucket qui vous appartient chez Amazon S3, Cloudflare R2, Backblaze B2, Wasabi, Hetzner Object Storage ou tout autre stockage compatible S3, selon le calendrier de votre choix. Après la première exécution, seules les modifications sont envoyées, si bien que les sauvegardes horaires restent bon marché.",
- "fields": {
- "accessKeyId": "ID de clé d'accès",
- "accessKeyIdHelp": "Une clé de votre fournisseur de stockage autorisée à lister, lire, écrire et supprimer des objets dans le bucket. Créez une clé réservée à Torqvoice, pour pouvoir la révoquer séparément.",
- "secretAccessKey": "Clé d'accès secrète",
- "password": "Mot de passe des sauvegardes",
- "passwordHelp": "Chaque sauvegarde est chiffrée avec ce mot de passe. Inventez-en un ou cliquez sur Générer, et conservez-en une copie ailleurs que sur ce serveur : sans lui, personne ne peut ouvrir ces sauvegardes, pas même Torqvoice. Pour reconnecter un stockage qui contient déjà des sauvegardes Torqvoice, saisissez le mot de passe avec lequel elles ont été créées.",
- "endpoint": "Point de terminaison personnalisé",
- "endpointHelp": "Uniquement pour l'option Autre stockage compatible S3 : l'adresse S3 de votre propre stockage, comme un serveur MinIO, sous forme de nom d'hôte, avec un port si nécessaire."
- },
- "settings": {
- "provider": "Fournisseur",
- "providerAws": "Amazon S3",
- "providerR2": "Cloudflare R2",
- "providerB2": "Backblaze B2",
- "providerWasabi": "Wasabi",
- "providerHetzner": "Hetzner Object Storage",
- "providerOther": "Autre stockage compatible S3",
- "region": "Région",
- "regionHelp": "L'emplacement du bucket. Choisissez la région dans la liste du fournisseur ; pour un autre stockage, saisissez ce qu'il attend, s'il en demande une. Non utilisée par Cloudflare R2.",
- "accountId": "ID de compte Cloudflare",
- "accountIdHelp": "L'identifiant de 32 caractères affiché sur la page de présentation R2 de votre tableau de bord Cloudflare.",
- "bucket": "Bucket",
- "bucketHelp": "La liste vient de la clé dès qu'elle est saisie. Si la clé peut utiliser un bucket sans pouvoir les lister, saisissez son nom.",
- "prefix": "Dossier dans le bucket",
- "prefixHelp": "Les sauvegardes sont rangées dans ce dossier. Utilisez un dossier différent pour chaque atelier qui partage le bucket.",
- "frequency": "Fréquence",
- "frequencyHourly": "Toutes les heures",
- "frequencyEvery4h": "Toutes les 4 heures",
- "frequencyDaily": "Tous les jours",
- "frequencyWeekly": "Toutes les semaines",
- "frequencyMonthly": "Tous les mois",
- "time": "Heure",
- "timeHelp": "Selon l'horloge de l'atelier, au format HH:MM. Utilisée pour les sauvegardes quotidiennes, hebdomadaires et mensuelles.",
- "weekday": "Jour de la semaine",
- "sunday": "Dimanche",
- "monday": "Lundi",
- "tuesday": "Mardi",
- "wednesday": "Mercredi",
- "thursday": "Jeudi",
- "friday": "Vendredi",
- "saturday": "Samedi",
- "monthDay": "Jour du mois",
- "monthDayLast": "Dernier jour",
- "contents": "Contenu",
- "contentsHelp": "Les clés secrètes sont celles que cet atelier a saisies dans Torqvoice : clés de paiement, d'IA et de webhook. Dans tous les cas, chaque sauvegarde est chiffrée avec le mot de passe des sauvegardes. Une sauvegarde contient les données de l'atelier et, si vous le choisissez, ses fichiers. Les comptes utilisateurs et les mots de passe n'en font pas partie : sur un nouveau serveur, vous vous connectez, invitez l'équipe et restaurez les données dans cet atelier.",
- "contentsData": "Données uniquement",
- "contentsDataAndSecrets": "Données et clés secrètes",
- "includeFiles": "Inclure les photos et les fichiers",
- "includeFilesHelp": "Chaque fichier est envoyé une seule fois puis réutilisé par les sauvegardes suivantes, ce qui coûte peu après la première exécution.",
- "keepHourly": "Sauvegardes horaires à conserver",
- "keepHourlyHelp": "Combien des sauvegardes horaires les plus récentes conserver. Ne compte que pour les calendriers toutes les heures et toutes les 4 heures.",
- "keepDaily": "Sauvegardes quotidiennes à conserver",
- "keepWeekly": "Sauvegardes hebdomadaires à conserver",
- "keepMonthly": "Sauvegardes mensuelles à conserver",
- "keepMonthlyHelp": "Les sauvegardes plus anciennes sont supprimées après chaque exécution, en gardant les plus récentes de chaque type. Mettez un nombre à 0 pour n'en garder aucune de ce type."
- }
- },
- "local-folder": {
- "name": "Dossier local",
- "description": "Des sauvegardes chiffrées de cet atelier vers un dossier de ce serveur : le volume de sauvegardes du fichier compose, ou un lecteur réseau monté à cet endroit. Une copie sur le même disque que la base de données n'est pas sûre à elle seule ; associez-la à un stockage situé ailleurs.",
- "fields": {
- "password": "Mot de passe des sauvegardes",
- "passwordHelp": "Chaque sauvegarde est chiffrée avec ce mot de passe. Inventez-en un ou cliquez sur Générer, et conservez-en une copie ailleurs que sur ce serveur : sans lui, personne ne peut ouvrir ces sauvegardes, pas même Torqvoice. Pour reconnecter un stockage qui contient déjà des sauvegardes Torqvoice, saisissez le mot de passe avec lequel elles ont été créées."
- },
- "settings": {
- "folder": "Dossier",
- "folderHelp": "Le dossier, sous la racine des sauvegardes du serveur, qui contient les sauvegardes de cet atelier. Laissez vide pour utiliser un dossier nommé d'après cet atelier. Sur un nouveau serveur, saisissez le nom du dossier utilisé par une installation précédente pour récupérer ses sauvegardes.",
- "frequency": "Fréquence",
- "frequencyHourly": "Toutes les heures",
- "frequencyEvery4h": "Toutes les 4 heures",
- "frequencyDaily": "Tous les jours",
- "frequencyWeekly": "Toutes les semaines",
- "frequencyMonthly": "Tous les mois",
- "time": "Heure",
- "timeHelp": "Selon l'horloge de l'atelier, au format HH:MM. Utilisée pour les sauvegardes quotidiennes, hebdomadaires et mensuelles.",
- "weekday": "Jour de la semaine",
- "sunday": "Dimanche",
- "monday": "Lundi",
- "tuesday": "Mardi",
- "wednesday": "Mercredi",
- "thursday": "Jeudi",
- "friday": "Vendredi",
- "saturday": "Samedi",
- "monthDay": "Jour du mois",
- "monthDayLast": "Dernier jour",
- "contents": "Contenu",
- "contentsHelp": "Les clés secrètes sont celles que cet atelier a saisies dans Torqvoice : clés de paiement, d'IA et de webhook. Dans tous les cas, chaque sauvegarde est chiffrée avec le mot de passe des sauvegardes. Une sauvegarde contient les données de l'atelier et, si vous le choisissez, ses fichiers. Les comptes utilisateurs et les mots de passe n'en font pas partie : sur un nouveau serveur, vous vous connectez, invitez l'équipe et restaurez les données dans cet atelier.",
- "contentsData": "Données uniquement",
- "contentsDataAndSecrets": "Données et clés secrètes",
- "includeFiles": "Inclure les photos et les fichiers",
- "includeFilesHelp": "Chaque fichier est envoyé une seule fois puis réutilisé par les sauvegardes suivantes, ce qui coûte peu après la première exécution.",
- "keepHourly": "Sauvegardes horaires à conserver",
- "keepHourlyHelp": "Combien des sauvegardes horaires les plus récentes conserver. Ne compte que pour les calendriers toutes les heures et toutes les 4 heures.",
- "keepDaily": "Sauvegardes quotidiennes à conserver",
- "keepWeekly": "Sauvegardes hebdomadaires à conserver",
- "keepMonthly": "Sauvegardes mensuelles à conserver",
- "keepMonthlyHelp": "Les sauvegardes plus anciennes sont supprimées après chaque exécution, en gardant les plus récentes de chaque type. Mettez un nombre à 0 pour n'en garder aucune de ce type."
- }
- }
- },
- "jobKinds": {
- "calendar": {
- "push": "Ordres de travail vers l'agenda",
- "pull": "Temps occupé depuis l'agenda"
- },
- "conference": {
- "sync": "Liens de visioconférence"
- },
- "inspection": {
- "refresh": "Mise à jour des dates de contrôle"
- },
- "accounting": {
- "invoice": "Facture vers la comptabilité",
- "payment": "Paiement vers la comptabilité",
- "customer": "Client vers la comptabilité",
- "pull": "Paiements depuis la comptabilité"
- },
- "safety": {
- "refresh": "Actualisation des données de rappel",
- "vehicle": "Vérification des rappels pour un nouveau véhicule"
- },
- "repair": {
- "checkPlan": "Vérifier que les recherches enregistrées peuvent être conservées"
- }
- },
- "backupAlerts": {
- "destination": "destination de sauvegarde",
- "failedTitle": "Échec de la sauvegarde",
- "failedMessage": "La sauvegarde vers {name} n'a pas abouti : {reason}",
- "failedSubject": "Échec de la sauvegarde vers {name}",
- "failedEmailIntro": "La sauvegarde planifiée de votre atelier vers {name} n'a pas abouti.",
- "openToRetry": "Ouvrez Paramètres, Intégrations, {name} pour consulter l'exécution et réessayer.",
- "overdueTitle": "Sauvegarde en retard",
- "overdueSince": "Aucune sauvegarde vers {name} n'a abouti depuis {time}.",
- "overdueNever": "Aucune sauvegarde vers {name} n'a encore abouti.",
- "overdueSubject": "La sauvegarde vers {name} est en retard",
- "openToSee": "Ouvrez Paramètres, Intégrations, {name} pour voir ce qui n'a pas fonctionné.",
- "platformName": "Sauvegardes par Torqvoice",
- "restoredTitle": "Atelier restauré",
- "restoredSubject": "Votre atelier a été restauré à partir d'une sauvegarde",
- "restoredIntro": "{name} : l'atelier a été ramené au point de restauration {snapshot} le {time}. Tout ce qui a été saisi après ce point ne figure plus dans l'atelier.",
- "restoredByMember": "Un membre de votre atelier a demandé cette restauration.",
- "restoredBySupport": "L'assistance Torqvoice l'a fait à votre demande. Motif indiqué : {reason}",
- "noReason": "aucun",
- "restoredUndo": "Une copie de sécurité de l'atelier tel qu'il était juste avant la restauration a d'abord été réalisée et est conservée pendant 90 jours. Contactez l'assistance pour y revenir."
- }
- }
|