integrations.json 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605
  1. {
  2. "catalog": {
  3. "title": "Intégrations",
  4. "description": "Connectez les services que votre atelier utilise déjà. Chaque intégration se configure une seule fois et fonctionne en arrière-plan.",
  5. "all": "Toutes",
  6. "empty": "Aucune intégration dans cette catégorie pour le moment.",
  7. "notConnected": "Non connectée",
  8. "connect": "Connecter",
  9. "manage": "Gérer",
  10. "connectedTitle": "Connectés",
  11. "connectedDescription": "Services configurés par cet atelier. Ouvrez-en un pour vérifier son état, modifier les réglages ou le déconnecter.",
  12. "noneConnected": "Rien de connecté pour l'instant. Choisissez un service ci-dessous pour commencer.",
  13. "availableTitle": "Disponibles",
  14. "availableDescription": "Services que vous pouvez ajouter. Chacun se configure une fois et fonctionne en arrière-plan.",
  15. "allConnected": "Tous les services disponibles sont connectés.",
  16. "searchPlaceholder": "Rechercher une intégration",
  17. "noMatches": "Rien ne correspond à « {query} ».",
  18. "readMore": "En savoir plus",
  19. "suggestTitle": "Il manque un service que vous utilisez ?",
  20. "suggestDescription": "Dites-nous quelle intégration aiderait votre atelier et nous l'étudierons.",
  21. "suggest": "Suggérer une intégration",
  22. "suggestSubject": "Suggestion d'intégration"
  23. },
  24. "categories": {
  25. "calendar": "Calendrier",
  26. "conferencing": "Appels vidéo",
  27. "accounting": "Comptabilité",
  28. "messaging": "Messagerie",
  29. "payments": "Paiements",
  30. "automation": "Automatisation",
  31. "storage": "Fichiers",
  32. "registry": "Registre des véhicules",
  33. "other": "Autre",
  34. "ai": "IA"
  35. },
  36. "capabilities": {
  37. "calendar": {
  38. "push": "Ordres de travail vers le calendrier",
  39. "pull": "Plages occupées du calendrier",
  40. "conference": "Liens d'appel vidéo"
  41. },
  42. "sms": {
  43. "send": "Text messages out",
  44. "receive": "Replies back in"
  45. },
  46. "whatsapp": {
  47. "send": "WhatsApp messages out",
  48. "receive": "Replies back in"
  49. },
  50. "telegram": {
  51. "send": "Telegram messages out",
  52. "receive": "Replies back in"
  53. },
  54. "email": {
  55. "send": "Email out"
  56. },
  57. "vehicle": {
  58. "lookup": "Recherche par plaque et VIN",
  59. "inspection": "Dates de contrôle technique",
  60. "safety": "Rappels et plaintes de propriétaires"
  61. },
  62. "ai": {
  63. "chat": "Textes et résumés"
  64. },
  65. "payments": {
  66. "checkout": "Payer depuis le lien de la facture"
  67. },
  68. "accounting": {
  69. "invoices": "Factures vers la comptabilité",
  70. "customers": "Clients vers la comptabilité",
  71. "payments": "Paiements dans les deux sens"
  72. }
  73. },
  74. "statuses": {
  75. "active": "Connectée",
  76. "error": "Attention requise",
  77. "pending": "Configuration en cours",
  78. "disconnected": "Déconnectée",
  79. "needsSetup": "Configuration inachevée"
  80. },
  81. "connection": {
  82. "back": "Toutes les intégrations",
  83. "account": "Compte connecté",
  84. "lastHealth": "Dernière vérification",
  85. "lastSync": "Dernière synchronisation",
  86. "lastError": "La dernière exécution a échoué",
  87. "setupMissingTitle": "Configuration inachevée",
  88. "setupMissing": "Choisissez {fields} dans les réglages ci-dessous. D'ici là, rien n'est synchronisé.",
  89. "connected": "{name} est connecté.",
  90. "connectedShort": "Connecté",
  91. "connectWith": "Connecter {name}",
  92. "connect": "Connecter",
  93. "reconnect": "Reconnecter",
  94. "disconnect": "Déconnecter",
  95. "disconnectTitle": "Déconnecter {name} ?",
  96. "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é.",
  97. "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.",
  98. "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.",
  99. "disconnectDescriptionAccounting": "Torqvoice oublie le compte et cesse d'envoyer et de lire. Les factures, clients et paiements déjà dans {name} y restent.",
  100. "removeSetup": "Retirer",
  101. "removeSetupTitle": "Retirer {name} ?",
  102. "removeSetupDescription": "Rien n'est encore connecté. Torqvoice oublie ce qui a été saisi et {name} revient dans la liste des services disponibles.",
  103. "removeSetupDone": "{name} retiré",
  104. "removeSetupHint": "Vous n'allez pas plus loin ? Retirez-le et le service revient dans la liste ci-dessous.",
  105. "disconnected": "Déconnecté",
  106. "test": "Tester la connexion",
  107. "testPassed": "La connexion fonctionne",
  108. "syncNow": "Synchroniser maintenant",
  109. "syncQueued": "Synchronisation en file d'attente ; elle démarre d'ici une minute",
  110. "pullNow": "Récupérer les paiements maintenant",
  111. "pullQueued": "Récupération des paiements en file d'attente ; elle démarre d'ici une minute",
  112. "backfill": "Envoyer les ordres de travail planifiés",
  113. "backfillQueued": "Les ordres de travail planifiés depuis la semaine dernière ont été mis en file d'attente",
  114. "backfillInvoices": "Envoyer les factures émises",
  115. "backfillInvoicesQueuedCount": "Mise en file de {count, plural, one {# facture émise} other {# factures émises}} à transmettre",
  116. "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.",
  117. "retryQueued": "Tâche remise en file d'attente",
  118. "settingsTitle": "Paramètres",
  119. "settingsDescription": "Ce qu'il faut synchroniser et vers où. Les modifications s'appliquent à la prochaine synchronisation.",
  120. "settingsSaved": "Paramètres enregistrés",
  121. "save": "Enregistrer",
  122. "loading": "Chargement...",
  123. "choose": "Choisir...",
  124. "search": "Rechercher...",
  125. "noMatch": "Aucun résultat",
  126. "leaveEmpty": "Laisser vide",
  127. "noLimit": "Sans limite",
  128. "planLocked": "Les intégrations ne sont pas incluses dans votre forfait.",
  129. "lockedIntegrations": "Connectez des calendriers, des appels vidéo et d'autres services à votre atelier.",
  130. "lockedPayments": "Laissez vos clients régler leurs factures en ligne, chaque paiement étant enregistré sur la facture.",
  131. "lockedAi": "Connectez un fournisseur d'IA pour utiliser les fonctions d'IA dans votre atelier.",
  132. "ownAppTitle": "Cette installation utilise votre propre application auprès du fournisseur",
  133. "redirectUri": "URI de redirection à enregistrer auprès du fournisseur :",
  134. "sendTestEmail": "Send test email",
  135. "testEmailSent": "Test email sent to {email}",
  136. "testEmailHint": "A test email goes to your own address through this vendor, which proves the from address and the sending rules a key check cannot.",
  137. "inboundUrl": "Inbound webhook URL",
  138. "inboundHintSecret": "Paste this URL into the vendor's inbound message settings. It carries a secret that identifies your workshop, so keep it private.",
  139. "inboundHintMeta": "Paste this URL as the callback URL in your Meta app, with the verify token you entered above, and subscribe to messages.",
  140. "inboundHintStripe": "Ajoutez cette URL dans le tableau de bord Stripe sous Developers, Webhooks, abonnée à checkout.session.completed. Collez ensuite le secret de signature affiché par Stripe dans le champ secret du webhook ici, pour que les notifications puissent être vérifiées.",
  141. "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.",
  142. "inboundHintPaypal": "Ajoutez cette URL dans le tableau de bord développeur PayPal sous Webhooks, abonnée à PAYMENT.CAPTURE.COMPLETED.",
  143. "copy": "Copy",
  144. "copied": "Copied",
  145. "updateKeys": "Update keys",
  146. "updateKeysHint": "The last check failed. Enter the keys again to try once more.",
  147. "inspectionSync": {
  148. "title": "Synchronisation des contrôles",
  149. "vehicles": "{count} véhicules avec plaque dans cet atelier",
  150. "dueNow": "{count} seraient recherchés à la prochaine exécution",
  151. "withDate": "{count} ont déjà une date de contrôle",
  152. "lastPass": "Dernier passage complet {date}",
  153. "never": "Aucun passage complet pour l'instant",
  154. "inProgress": "Un passage est en cours",
  155. "off": "Activez le réglage et enregistrez ; d'ici là, un passage ne vérifie rien.",
  156. "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."
  157. },
  158. "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.",
  159. "batchRetried": "{count, plural, =0 {Rien à réessayer} one {# tâche remise en file} other {# tâches remises en file}}"
  160. },
  161. "activity": {
  162. "title": "Activité",
  163. "description": "Tâches récentes et lignes de journal pour cette connexion.",
  164. "retry": "Réessayer",
  165. "jobStatus": {
  166. "queued": "En file d'attente",
  167. "running": "En cours",
  168. "done": "Terminée",
  169. "failed": "Échec",
  170. "dead": "Abandonnée"
  171. },
  172. "jobs": "{count, plural, one {# tâche} other {# tâches}}",
  173. "counts": {
  174. "queued": "{count} en attente",
  175. "running": "{count} en cours",
  176. "done": "{count} terminées",
  177. "failed": "{count} échouées",
  178. "dead": "{count} abandonnées"
  179. },
  180. "noFailures": "Aucun échec.",
  181. "retryFailed": "Réessayer les échecs",
  182. "details": "Afficher les détails"
  183. },
  184. "errors": {
  185. "generic": "Une erreur s'est produite",
  186. "demo": "Les intégrations ne peuvent pas être connectées sur la démo.",
  187. "forbidden": "Seul un administrateur peut connecter des intégrations.",
  188. "unknown": "Intégration inconnue.",
  189. "plan": "Cette intégration n'est pas incluse dans votre forfait.",
  190. "no-client": "Aucun identifiant d'application n'est configuré pour ce fournisseur.",
  191. "denied": "Vous avez annulé la connexion auprès du fournisseur.",
  192. "vendor": "Le fournisseur a renvoyé une erreur. Réessayez.",
  193. "invalid": "La réponse du fournisseur était incomplète. Réessayez.",
  194. "state": "Cette connexion a expiré ou appartient à une autre session. Recommencez.",
  195. "exchange": "Le fournisseur a refusé la connexion. Vérifiez les identifiants de l'application et réessayez.",
  196. "identify": "Connecté, mais le compte n'a pas pu être lu. Essayez de vous reconnecter."
  197. },
  198. "meeting": {
  199. "join": "Rejoindre l'appel vidéo",
  200. "google-meet": "Google Meet",
  201. "teams": "Microsoft Teams",
  202. "zoom": "Zoom"
  203. },
  204. "calendar": {
  205. "external": "Depuis les calendriers connectés",
  206. "busy": "Occupé"
  207. },
  208. "connectors": {
  209. "google-calendar": {
  210. "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.",
  211. "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.",
  212. "fields": {
  213. "clientId": "Identifiant client",
  214. "clientSecret": "Secret client"
  215. },
  216. "settings": {
  217. "calendarId": "Calendrier",
  218. "pushEnabled": "Ajouter les ordres de travail planifiés à ce calendrier",
  219. "includeCustomer": "Inclure le nom et le téléphone du client dans l'événement",
  220. "addConference": "Ajouter une réunion Google Meet à chaque ordre de travail planifié",
  221. "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.",
  222. "pullEnabled": "Afficher les plages occupées de ce calendrier dans le calendrier Torqvoice",
  223. "pullEnabledHelp": "Lecture seule. Actualisé toutes les 15 minutes, une semaine en arrière et deux mois en avant."
  224. }
  225. },
  226. "microsoft-365": {
  227. "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.",
  228. "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.",
  229. "fields": {
  230. "clientId": "ID d'application (client)",
  231. "clientSecret": "Secret client"
  232. },
  233. "settings": {
  234. "calendarId": "Calendrier",
  235. "pushEnabled": "Ajouter les ordres de travail planifiés à ce calendrier",
  236. "includeCustomer": "Inclure le nom et le téléphone du client dans l'événement",
  237. "addConference": "Ajouter une réunion Microsoft Teams à chaque ordre de travail planifié",
  238. "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.",
  239. "pullEnabled": "Afficher les plages occupées de ce calendrier dans le calendrier Torqvoice",
  240. "pullEnabledHelp": "Lecture seule. Actualisé toutes les 15 minutes, une semaine en arrière et deux mois en avant."
  241. }
  242. },
  243. "zoom": {
  244. "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.",
  245. "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.",
  246. "fields": {
  247. "clientId": "ID client",
  248. "clientSecret": "Secret client"
  249. },
  250. "settings": {
  251. "autoCreate": "Créer automatiquement une réunion Zoom pour chaque ordre de travail planifié",
  252. "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.",
  253. "includeCustomer": "Inclure le nom du client dans le sujet de la réunion",
  254. "joinBeforeHost": "Laisser le client rejoindre avant vous",
  255. "waitingRoom": "Utiliser une salle d'attente"
  256. }
  257. },
  258. "twilio-sms": {
  259. "description": "Send and receive text messages through a Twilio number. Reminders, ready-for-pickup messages and the replies that come back.",
  260. "fields": {
  261. "accountSid": "Account SID",
  262. "authToken": "Auth token"
  263. },
  264. "settings": {
  265. "phoneNumber": "Send from this number"
  266. }
  267. },
  268. "vonage-sms": {
  269. "description": "Send and receive text messages through a Vonage number.",
  270. "fields": {
  271. "apiKey": "API key",
  272. "apiSecret": "API secret",
  273. "signatureSecret": "Signature secret",
  274. "signatureSecretHelp": "From the Vonage dashboard, under API settings. When set, inbound messages are only accepted when Vonage signed them. Without it, only the secret in the webhook URL is checked."
  275. },
  276. "settings": {
  277. "phoneNumber": "Send from this number"
  278. }
  279. },
  280. "telnyx-sms": {
  281. "description": "Send and receive text messages through a Telnyx number.",
  282. "fields": {
  283. "apiKey": "API key",
  284. "webhookPublicKey": "Webhook public key",
  285. "webhookPublicKeyHelp": "From the Telnyx portal, under Account settings, Keys and credentials, Public key. When set, inbound messages are only accepted when Telnyx signed them. Without it, only the secret in the webhook URL is checked."
  286. },
  287. "settings": {
  288. "phoneNumber": "Send from this number"
  289. }
  290. },
  291. "whatsapp-meta": {
  292. "description": "Message customers on WhatsApp through Meta directly. Photos of what you found, and the conversation that follows.",
  293. "fields": {
  294. "phoneNumberId": "Phone number ID",
  295. "accessToken": "Access token",
  296. "verifyToken": "Webhook verify token",
  297. "appSecret": "App secret",
  298. "apiVersion": "Graph API version",
  299. "appSecretHelp": "Meta signs every delivery with it. Until it is entered, messages posted to the webhook are refused, since anyone who learns the URL could otherwise post as your customers."
  300. },
  301. "settings": {
  302. "enabled": "Send messages on this channel",
  303. "phoneNumber": "Send from this number",
  304. "templateName": "Template for reopening a conversation",
  305. "templateLanguage": "Template language",
  306. "templateVariables": "Template values, in order",
  307. "mediaTemplateName": "Template for a message with a photo",
  308. "mediaTemplateLanguage": "Photo template language",
  309. "mediaTemplateVariables": "Photo template values, in order"
  310. }
  311. },
  312. "whatsapp-twilio": {
  313. "description": "Message customers on WhatsApp through a Twilio number, if Twilio is who sold you one.",
  314. "fields": {
  315. "accountSid": "Account SID",
  316. "authToken": "Auth token",
  317. "messagingServiceSid": "Messaging service SID"
  318. },
  319. "settings": {
  320. "enabled": "Send messages on this channel",
  321. "phoneNumber": "Send from this number",
  322. "templateName": "Template for reopening a conversation",
  323. "templateLanguage": "Template language",
  324. "templateVariables": "Template values, in order",
  325. "mediaTemplateName": "Template for a message with a photo",
  326. "mediaTemplateLanguage": "Photo template language",
  327. "mediaTemplateVariables": "Photo template values, in order"
  328. }
  329. },
  330. "telegram": {
  331. "description": "A Telegram bot that reaches customers who use it, and brings their replies into the inbox.",
  332. "fields": {
  333. "botToken": "Bot token"
  334. },
  335. "settings": {
  336. "enabled": "Send messages on this channel",
  337. "botUsername": "Bot username"
  338. }
  339. },
  340. "smtp": {
  341. "description": "Send invoices and reminders through your own mail server, rather than the platform mail.",
  342. "fields": {
  343. "host": "Server",
  344. "port": "Port",
  345. "user": "Username",
  346. "pass": "Password"
  347. },
  348. "settings": {
  349. "fromEmail": "Send from this address",
  350. "fromName": "Name shown as the sender",
  351. "secure": "Connect over TLS from the start",
  352. "requireTls": "Require the server to upgrade to TLS",
  353. "rejectUnauthorized": "Reject a certificate that does not check out"
  354. }
  355. },
  356. "resend": {
  357. "description": "Send invoices and reminders through Resend.",
  358. "fields": {
  359. "apiKey": "API key"
  360. },
  361. "settings": {
  362. "fromEmail": "Send from this address",
  363. "fromName": "Name shown as the sender"
  364. }
  365. },
  366. "postmark": {
  367. "description": "Send invoices and reminders through Postmark.",
  368. "fields": {
  369. "apiKey": "Server token"
  370. },
  371. "settings": {
  372. "fromEmail": "Send from this address",
  373. "fromName": "Name shown as the sender"
  374. }
  375. },
  376. "mailgun": {
  377. "description": "Send invoices and reminders through Mailgun.",
  378. "fields": {
  379. "apiKey": "API key",
  380. "domain": "Sending domain"
  381. },
  382. "settings": {
  383. "fromEmail": "Send from this address",
  384. "fromName": "Name shown as the sender",
  385. "region": "Region the domain is in"
  386. }
  387. },
  388. "sendgrid": {
  389. "description": "Send invoices and reminders through SendGrid.",
  390. "fields": {
  391. "apiKey": "API key"
  392. },
  393. "settings": {
  394. "fromEmail": "Send from this address",
  395. "fromName": "Name shown as the sender"
  396. }
  397. },
  398. "amazon-ses": {
  399. "description": "Send invoices and reminders through Amazon SES.",
  400. "fields": {
  401. "accessKeyId": "Access key ID",
  402. "secretAccessKey": "Secret access key",
  403. "region": "Region"
  404. },
  405. "settings": {
  406. "fromEmail": "Send from this address",
  407. "fromName": "Name shown as the sender"
  408. }
  409. },
  410. "vegvesen": {
  411. "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.",
  412. "fields": {
  413. "apiKey": "Clé API",
  414. "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."
  415. },
  416. "settings": {
  417. "syncInspections": "Tenir à jour les dates de contrôle de tous les véhicules de cet atelier",
  418. "syncInspectionsHelp": "Une fois par heure, les véhicules non vérifiés récemment sont recherchés par plaque et la date du prochain EU-kontroll est enregistrée. Seuls les véhicules de cet atelier sont envoyés. Un véhicule est revérifié chaque mois, et chaque semaine lorsque l'échéance est à moins de deux mois."
  419. }
  420. },
  421. "openapi-automotive": {
  422. "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.",
  423. "fields": {
  424. "token": "Jeton d'API",
  425. "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."
  426. },
  427. "settings": {
  428. "country": "Pays",
  429. "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.",
  430. "bikes": "Rechercher aussi les motos",
  431. "bikesHelp": "Quand une plaque n'est pas celle d'une voiture, le registre des motos est interrogé à son tour. Une recherche voiture sans résultat est gratuite, cela ne coûte donc rien de plus sauf si une moto est trouvée. Indisponible pour le Portugal."
  432. }
  433. },
  434. "rdw": {
  435. "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.",
  436. "fields": {
  437. "appToken": "Jeton d'application (facultatif)",
  438. "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."
  439. },
  440. "settings": {
  441. "syncInspections": "Tenir à jour les dates d'APK de tous les véhicules de cet atelier",
  442. "syncInspectionsHelp": "Une fois par heure, les véhicules non vérifiés récemment sont recherchés par plaque et la date du prochain APK est enregistrée. Seuls les véhicules de cet atelier sont envoyés. Un véhicule est revérifié chaque mois, et chaque semaine lorsque l'échéance est à moins de deux mois."
  443. }
  444. },
  445. "regcheck": {
  446. "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.",
  447. "fields": {
  448. "username": "Nom d'utilisateur RegCheck",
  449. "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."
  450. },
  451. "settings": {
  452. "country": "Pays",
  453. "countryHelp": "Le registre à interroger. Chaque pays a son propre service, la connexion n'en interroge donc qu'un.",
  454. "auState": "État ou territoire",
  455. "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.",
  456. "usState": "État",
  457. "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."
  458. }
  459. },
  460. "openai": {
  461. "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.",
  462. "fields": {
  463. "apiKey": "Clé API",
  464. "apiKeyHelp": "À créer sur platform.openai.com, dans API keys. Le compte doit être approvisionné ; OpenAI facture à l’appel."
  465. },
  466. "settings": {
  467. "model": "Modèle",
  468. "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."
  469. }
  470. },
  471. "anthropic": {
  472. "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.",
  473. "fields": {
  474. "apiKey": "Clé API",
  475. "apiKeyHelp": "À créer sur console.anthropic.com, dans API keys. Le compte doit être approvisionné ; Anthropic facture à l’appel."
  476. },
  477. "settings": {
  478. "model": "Modèle",
  479. "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."
  480. }
  481. },
  482. "openai-compatible": {
  483. "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.",
  484. "fields": {
  485. "baseUrl": "URL de base",
  486. "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.",
  487. "apiKey": "Clé API",
  488. "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."
  489. },
  490. "settings": {
  491. "model": "Modèle",
  492. "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."
  493. }
  494. },
  495. "stripe": {
  496. "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.",
  497. "fields": {
  498. "secretKey": "Clé secrète",
  499. "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.",
  500. "publishableKey": "Clé publiable",
  501. "webhookSecret": "Secret de signature du webhook",
  502. "webhookSecretHelp": "Affiché par Stripe une fois l'URL de notification de cette page ajoutée comme webhook. Avec lui, chaque notification est vérifiée avant qu'un paiement soit enregistré."
  503. },
  504. "settings": {
  505. "enabled": "Proposer sur les liens de facture",
  506. "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."
  507. }
  508. },
  509. "vipps": {
  510. "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.",
  511. "fields": {
  512. "clientId": "ID client",
  513. "clientSecret": "Secret client",
  514. "subscriptionKey": "Clé d'abonnement",
  515. "subscriptionKeyHelp": "La Ocp-Apim-Subscription-Key du portail Vipps MobilePay, dans les clés API de l'unité de vente.",
  516. "merchantSerialNumber": "Numéro de série marchand"
  517. },
  518. "settings": {
  519. "enabled": "Proposer sur les liens de facture",
  520. "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.",
  521. "testMode": "Mode test",
  522. "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."
  523. }
  524. },
  525. "paypal": {
  526. "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.",
  527. "fields": {
  528. "clientId": "ID client",
  529. "clientSecret": "Secret client"
  530. },
  531. "settings": {
  532. "enabled": "Proposer sur les liens de facture",
  533. "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.",
  534. "sandbox": "Mode sandbox",
  535. "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."
  536. }
  537. },
  538. "quickbooks": {
  539. "description": "Envoyez les factures émises, leurs clients et leurs paiements vers QuickBooks Online, et récupérez les paiements enregistrés là-bas.",
  540. "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.",
  541. "fields": {
  542. "clientId": "Identifiant client",
  543. "clientSecret": "Secret client"
  544. },
  545. "settings": {
  546. "pushInvoices": "Envoyer les factures émises vers QuickBooks",
  547. "pushOnComplete": "Envoyer aussi les factures quand le travail est marqué terminé",
  548. "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.",
  549. "startDate": "Uniquement les factures datées à partir du",
  550. "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.",
  551. "includeVehicle": "Indiquer le véhicule sur la facture",
  552. "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.",
  553. "laborItemId": "Article pour les lignes de main-d'œuvre",
  554. "laborItemIdHelp": "Laissez vide et un article nommé Labour sera créé sous votre compte de produits la première fois.",
  555. "partsItemId": "Article pour les lignes de pièces",
  556. "partsItemIdHelp": "Laissez vide et un article nommé Parts sera créé sous votre compte de produits la première fois.",
  557. "taxAmounts": "Montants de taxe",
  558. "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.",
  559. "taxAmountsBilled": "Tel que facturé dans Torqvoice",
  560. "taxAmountsQuickbooks": "Calculé par QuickBooks",
  561. "taxCodeId": "Code de taxe pour les factures taxables",
  562. "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.",
  563. "zeroTaxCodeId": "Code de taxe pour les factures sans taxe",
  564. "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.",
  565. "pushPayments": "Enregistrer les paiements dans QuickBooks",
  566. "depositAccountId": "Déposer les paiements sur",
  567. "depositAccountIdHelp": "Laissez vide pour utiliser Undeposited Funds.",
  568. "manualPaidAsPayment": "Enregistrer un paiement quand une facture est marquée payée à la main",
  569. "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.",
  570. "pullPayments": "Récupérer les paiements enregistrés dans QuickBooks",
  571. "pullPaymentsHelp": "Toutes les 30 minutes. Un paiement reçu dans QuickBooks sur une facture Torqvoice est enregistré ici sur la facture."
  572. }
  573. },
  574. "nhtsa": {
  575. "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é.",
  576. "fields": {},
  577. "settings": {
  578. "refreshFleet": "Tenir à jour les données de rappels et de plaintes pour chaque véhicule de cet atelier",
  579. "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."
  580. }
  581. }
  582. },
  583. "jobKinds": {
  584. "calendar": {
  585. "push": "Ordres de travail vers l'agenda",
  586. "pull": "Temps occupé depuis l'agenda"
  587. },
  588. "conference": {
  589. "sync": "Liens de visioconférence"
  590. },
  591. "inspection": {
  592. "refresh": "Mise à jour des dates de contrôle"
  593. },
  594. "accounting": {
  595. "invoice": "Facture vers la comptabilité",
  596. "payment": "Paiement vers la comptabilité",
  597. "customer": "Client vers la comptabilité",
  598. "pull": "Paiements depuis la comptabilité"
  599. },
  600. "safety": {
  601. "refresh": "Actualisation des données de rappel",
  602. "vehicle": "Vérification des rappels pour un nouveau véhicule"
  603. }
  604. }
  605. }