service.json 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497
  1. {
  2. "page": {
  3. "notFound": "Dossier de service introuvable",
  4. "updated": "Dossier de service mis à jour",
  5. "failedUpdate": "Impossible de mettre à jour le dossier de service",
  6. "deleteTitle": "Supprimer le Dossier de Service",
  7. "deleteDescription": "Cela supprimera définitivement ce dossier de service et toutes les données associées. Cette action ne peut pas être annulée.",
  8. "deleted": "Dossier de service supprimé",
  9. "failedDelete": "Impossible de supprimer",
  10. "datesExpiredTitle": "Dates de facture expirées",
  11. "datesExpiredDescription": "La date de facturation ou la date d'échéance est dépassée. Souhaitez-vous les mettre à jour avant de continuer ?",
  12. "datesExpiredUpdate": "Mettre à jour les dates et continuer",
  13. "datesExpiredProceed": "Continuer sans modifications",
  14. "datesExpiredUseToday": "Mettre à jour à la date du jour",
  15. "datesExpiredCustomize": "Choisir les dates manuellement",
  16. "datesExpiredBack": "Retour",
  17. "datesExpiredSetToday": "Définir à aujourd'hui",
  18. "customFieldsInvalid": "Veuillez remplir tous les champs personnalisés obligatoires",
  19. "customFieldsSaveFailed": "Échec de l'enregistrement des champs personnalisés",
  20. "problems": {
  21. "title": "Le travail doit avoir un titre avant d'être enregistré.",
  22. "negative": "Les quantités, heures, prix et coûts ne peuvent pas être négatifs.",
  23. "partName": "Chaque pièce avec un prix doit avoir un nom.",
  24. "laborDescription": "Chaque ligne de main-d'œuvre avec des heures ou un taux doit avoir une description."
  25. }
  26. },
  27. "header": {
  28. "tabs": {
  29. "details": "Détails",
  30. "images": "Images",
  31. "video": "Vidéo",
  32. "documents": "Documents",
  33. "statusReports": "Rapports d'état"
  34. },
  35. "save": "Enregistrer",
  36. "pdf": "PDF",
  37. "email": "Email",
  38. "share": "Partager",
  39. "notify": "Notifier",
  40. "delete": "Supprimer",
  41. "unpaid": "Non Payé",
  42. "unsavedChanges": "Modifications non enregistrées",
  43. "saved": "Enregistré",
  44. "joinCall": "Rejoindre l'appel vidéo",
  45. "moreActions": "Autres actions",
  46. "designMenu": "Design de la facture",
  47. "designMenuLoading": "Recherche du design avec lequel cette facture s'imprime...",
  48. "designMenuExplain": "Partie au client le {date}, elle s'imprime donc toujours avec le design de l'envoi. En choisir un autre ne change que l'apparence. Ce que dit la facture reste tel qu'envoyé, et l'ancienne apparence n'est pas conservée.",
  49. "designSentWith": "Le design lors de l'envoi",
  50. "designFollow": "Suivre le design par défaut",
  51. "designFollowNamed": "Suivre le design par défaut ({name})",
  52. "designDefaultName": "le design par défaut",
  53. "designPickConfirmTitle": "Passer cette facture à {name} ?",
  54. "designPickConfirmBody": "Seule l'apparence change. Les coordonnées de l'atelier, le client, les conditions de paiement et les montants restent exactement tels qu'ils ont été envoyés. Le design actuel n'est pas conservé, l'action est donc irréversible.",
  55. "designPickConfirm": "Changer le design",
  56. "designPickDone": "La facture s'imprime maintenant avec {name}",
  57. "designPickFailed": "Impossible de changer le design"
  58. },
  59. "basicInfo": {
  60. "title": "Informations de Base",
  61. "invoiceDetails": "Détails de la facture",
  62. "customerInfo": "Client et véhicule",
  63. "paid": "Payé",
  64. "markPaid": "Marquer comme payé",
  65. "markUnpaid": "Marquer comme non payé",
  66. "vehicle": "Véhicule",
  67. "open": "Ouvert",
  68. "customer": "Client",
  69. "titleLabel": "Titre *",
  70. "titlePlaceholder": "Vidange d'Huile",
  71. "date": "Date",
  72. "type": "Type",
  73. "mileage": "Kilométrage",
  74. "mileageMarine": "Heures Moteur",
  75. "status": "Statut",
  76. "technician": "Technicien",
  77. "invoiceNumber": "Numéro de Facture",
  78. "invoiceDate": "Date de facture",
  79. "invoiceDueDate": "Date d'échéance",
  80. "typeOptions": {
  81. "maintenance": "Maintenance",
  82. "repair": "Réparation",
  83. "upgrade": "Mise à Niveau",
  84. "inspection": "Inspection"
  85. },
  86. "statusOptions": {
  87. "pending": "En Attente",
  88. "in_progress": "En Cours",
  89. "waiting_parts": "En Attente de Pièces",
  90. "completed": "Complété"
  91. },
  92. "searchVehicles": "Rechercher des véhicules...",
  93. "noVehicleFound": "Aucun véhicule trouvé.",
  94. "techPicker": {
  95. "placeholder": "Sélectionner ou tapez un nom...",
  96. "searchPlaceholder": "Rechercher ou tapez un nom...",
  97. "useCustom": "Utiliser \"{search}\"",
  98. "typePrompt": "Tapez un nom...",
  99. "boardTechnicians": "Techniciens du Tableau",
  100. "teamMembers": "Membres de l'Équipe"
  101. },
  102. "design": "Design de facture",
  103. "designDefault": "Défaut de l'atelier",
  104. "designFollowing": "Défaut ({name})",
  105. "designPinned": "Cette facture est parvenue au client le {date}, elle conserve donc le design avec lequel elle est partie. Un choix fait ici ne s'applique qu'après déverrouillage et nouvel envoi. Un propriétaire peut changer le design maintenant via Design de la facture dans le menu ⋮ en haut.",
  106. "designSaved": "Design de facture mis à jour",
  107. "designSavedPinned": "Enregistré. Cette facture conserve le design avec lequel elle a été envoyée jusqu'à ce qu'elle soit déverrouillée et renvoyée.",
  108. "designFollowingRule": "Par défaut ({name}, {rule})",
  109. "designRule": {
  110. "parts_sale": "Vente de pièces seule"
  111. },
  112. "designSaveFailed": "Impossible de changer le design de la facture"
  113. },
  114. "parts": {
  115. "title": "Pièces",
  116. "fromInventory": "De l'Inventaire",
  117. "addPart": "Ajouter une Pièce",
  118. "partNumber": "Nº de Pièce",
  119. "name": "Nom",
  120. "qty": "Qté",
  121. "unitCost": "Coût",
  122. "unitCostHint": "Coût fournisseur (interne — non visible par le client)",
  123. "markupPercent": "Marge %",
  124. "markupPercentHint": "Marge appliquée au coût (interne — non visible par le client)",
  125. "applyMarkup": "Appliquer {percent}%",
  126. "applyMarkupHint": "Réappliquer la marge de {percent}% au coût sur chaque ligne",
  127. "unitPrice": "Prix Unitaire",
  128. "total": "Total",
  129. "namePlaceholder": "Nom *",
  130. "subtotal": "Sous-total Pièces: {amount}",
  131. "inventoryTitle": "Sélectionner une Pièce de l'Inventaire",
  132. "searchInventory": "Rechercher l'inventaire...",
  133. "inStock": "{quantity} en stock",
  134. "noInventory": "Aucune pièce d'inventaire trouvée.",
  135. "scanBarcode": "Scanner",
  136. "scanTitle": "Scanner le code-barres",
  137. "partFound": "\"{name}\" ajouté depuis l'inventaire",
  138. "partNotFound": "Aucune pièce trouvée pour le code-barres \"{barcode}\"",
  139. "deleteRow": "Supprimer la ligne",
  140. "outOfStock": "En rupture de stock",
  141. "onBackorder": "En réapprovisionnement ({count})",
  142. "nameMissingHint": "Les lignes sans nom de pièce ne sont pas enregistrées."
  143. },
  144. "labor": {
  145. "title": "Main-d'œuvre",
  146. "addLabor": "Ajouter une Main-d'œuvre",
  147. "fromPresets": "Depuis modèles",
  148. "description": "Description",
  149. "hours": "Heures",
  150. "rate": "Taux ({currency}/h)",
  151. "total": "Total",
  152. "descriptionPlaceholder": "Description *",
  153. "subtotal": "Sous-total Main-d'œuvre: {amount}",
  154. "addService": "Ajouter une Prestation",
  155. "addFinding": "Observation",
  156. "newObservation": "Nouvelle observation",
  157. "addExisting": "Voir existantes ({count})",
  158. "qty": "Qté",
  159. "qtyOrHours": "Unité / Heures",
  160. "hourlyTag": "H",
  161. "serviceTag": "SERV",
  162. "switchToHourlyHint": "À l'heure : facturé selon les heures travaillées (heures × taux/h). Cliquez pour changer.",
  163. "switchToServiceHint": "Forfait : facturé au prix fixe par unité. Cliquez pour changer.",
  164. "deleteRow": "Supprimer la ligne",
  165. "descriptionMissingHint": "Les lignes sans description ne sont pas enregistrées."
  166. },
  167. "totals": {
  168. "title": "Totaux",
  169. "parts": "Pièces",
  170. "labor": "Main-d'œuvre",
  171. "subtotal": "Sous-total",
  172. "subtotalInclTax": "Sous-total (TTC)",
  173. "discount": "Remise",
  174. "discountNone": "Aucune",
  175. "discountPercentage": "Pourcentage",
  176. "discountFixed": "Fixe",
  177. "tax": "Taxe",
  178. "taxIncluded": "Taxe (incl.)",
  179. "total": "Total",
  180. "inclusiveModeHint": "Les prix de ligne sont saisis taxe incluse. Les totaux affichent la répartition net + taxe.",
  181. "partsCost": "Coût des pièces (interne)"
  182. },
  183. "notes": {
  184. "title": "Notes",
  185. "public": "Public",
  186. "internal": "Interne",
  187. "publicPlaceholder": "Notes visibles sur la facture...",
  188. "internalPlaceholder": "Notes internes (non affichées sur la facture)...",
  189. "publicHelper": "Affichées sur la facture et les documents partagés",
  190. "internalHelper": "Visibles uniquement pour votre équipe",
  191. "aiWrite": "AI Rédiger",
  192. "aiGenerated": "Notes AI générées avec succès",
  193. "aiGenerateFailed": "Échec de la génération des notes AI",
  194. "aiDialogTitle": "IA Écrire",
  195. "aiDialogDescription": "L'IA analysera les pièces et la main-d'œuvre de cet enregistrement de service et générera une description professionnelle. Le résultat sera écrit dans le type de note sélectionné.",
  196. "aiGenerate": "Générer",
  197. "aiOverwriteDescription": "Cette note a déjà du contenu. Vous pouvez le remplacer ou ajouter le texte généré par l'IA en dessous.",
  198. "aiOverwriteReplace": "Remplacer",
  199. "aiOverwriteAppend": "Ajouter",
  200. "aiOverwriteCancel": "Annuler",
  201. "aiDontShowAgain": "Ne plus afficher"
  202. },
  203. "invoice": {
  204. "title": "Résumé de la Facture",
  205. "parts": "Pièces",
  206. "labor": "Main-d'œuvre",
  207. "subtotal": "Sous-total",
  208. "subtotalInclTax": "Sous-total (TTC)",
  209. "discount": "Remise",
  210. "tax": "Taxe ({rate}%)",
  211. "taxIncluded": "Taxe (incl., {rate}%)",
  212. "total": "Total",
  213. "paid": "Payé",
  214. "balanceDue": "Solde Dû",
  215. "paidBadge": "PAYÉ",
  216. "entityLabel": "Facture",
  217. "emailSubject": "Confirmation de Paiement",
  218. "statusEmailSubject": "Mise à jour du statut du service",
  219. "markCompletedTitle": "Marquer cette facture comme terminée ?",
  220. "markCompletedDescription": "Elle est partie chez le client mais reste marquée comme non terminée, elle continuera donc d'apparaître sur le tableau.",
  221. "markCompletedConfirm": "Marquer comme terminée",
  222. "lockedFieldsetLabel": "Facture verrouillée, modification désactivée"
  223. },
  224. "payments": {
  225. "title": "Paiements",
  226. "markUnpaid": "Marquer comme Non Payé",
  227. "markPaid": "Marquer comme Payé",
  228. "recordPayment": "Enregistrer un Paiement",
  229. "totalPaid": "Total Payé",
  230. "amount": "Montant",
  231. "date": "Date",
  232. "method": "Méthode",
  233. "note": "Note",
  234. "notePlaceholder": "Note facultative",
  235. "savePayment": "Enregistrer le Paiement",
  236. "methodOptions": {
  237. "cash": "Comptant",
  238. "card": "Carte",
  239. "transfer": "Virement",
  240. "other": "Autre"
  241. },
  242. "recorded": "Paiement enregistré",
  243. "markedPaid": "Marqué comme payé",
  244. "markedUnpaid": "Marqué comme non payé",
  245. "deleted": "Paiement supprimé",
  246. "failedRecord": "Impossible d'enregistrer le paiement",
  247. "failedStatus": "Impossible de mettre à jour le statut du paiement",
  248. "failedDelete": "Impossible de supprimer le paiement",
  249. "deleteTitle": "Supprimer le Paiement",
  250. "deleteDescription": "Cela supprimera ce dossier de paiement.",
  251. "failedPdf": "Impossible de générer la facture PDF"
  252. },
  253. "attachments": {
  254. "deleteTitle": "Supprimer la Pièce Jointe",
  255. "deleteDescription": "Cela supprimera définitivement cette pièce jointe. Cette action ne peut pas être annulée.",
  256. "deleted": "Pièce jointe supprimée",
  257. "failedDelete": "Impossible de supprimer",
  258. "images": "Images ({count})",
  259. "videos": "Vidéos ({count})",
  260. "diagnostics": "Rapports Diagnostiques ({count})",
  261. "documents": "Documents ({count})",
  262. "download": "Télécharger",
  263. "close": "Fermer"
  264. },
  265. "share": {
  266. "title": "Partager la Facture",
  267. "description": "Générer un lien public qui permet à n'importe qui de consulter et télécharger cette facture sans se connecter.",
  268. "notifyTitle": "Notifier {name}",
  269. "email": "Email",
  270. "noEmail": "(pas d'email en dossier)",
  271. "sms": "SMS",
  272. "noPhone": "(pas de numéro en dossier)",
  273. "sendNotification": "Envoyer une Notification",
  274. "revokeLink": "Révoquer le Lien",
  275. "generateLink": "Générer un Lien Public",
  276. "emailSent": "Email envoyé",
  277. "failedEmail": "Impossible d'envoyer l'email",
  278. "smsSent": "SMS envoyé",
  279. "failedSms": "Impossible d'envoyer le SMS",
  280. "copyLink": "Copier le lien"
  281. },
  282. "sidebar": {
  283. "vehicle": "Véhicule",
  284. "customer": "Client",
  285. "vin": "VIN: {vin}",
  286. "mileageAtService": "Kilométrage au service: {mileage} {unit}",
  287. "engineHoursAtService": "Heures moteur au service: {mileage} {unit}",
  288. "sharedLink": {
  289. "title": "Lien partagé",
  290. "sharedOn": "Partagé le {date}",
  291. "notViewed": "Pas encore consulté",
  292. "viewedTimes": "Consulté {count, plural, one {# fois} other {# fois}}",
  293. "lastViewed": "Dernier {date}",
  294. "copyLink": "Copier le lien",
  295. "linkCopied": "Lien copié"
  296. }
  297. },
  298. "images": {
  299. "title": "Images du Service",
  300. "dropzone": "Déposez les images ici ou cliquez pour parcourir",
  301. "uploading": "Téléversement...",
  302. "formats": "JPG, PNG, WebP — max. 10 Mo chacune",
  303. "uploadingImages": "Téléversement des images...",
  304. "limitReached": "Limite d'images atteinte ({count}/{max})",
  305. "upgradePrompt": "Mettez à niveau votre plan pour téléverser plus d'images.",
  306. "onlyAllowed": "Seules les images JPG, PNG et WebP sont autorisées. {names} ignoré(es).",
  307. "onlyUploading": "Seules {count} image(s) seront téléversée(s) pour respecter la limite.",
  308. "uploadingCount": "Téléversement de {count} image(s)...",
  309. "uploadedCount": "{count} image(s) téléversée(s)",
  310. "uploadFailed": "Échec du téléversement",
  311. "deleted": "Image supprimée",
  312. "failedDelete": "Impossible de supprimer l'image",
  313. "failedUpdate": "Impossible de mettre à jour",
  314. "description": "Description...",
  315. "invoice": "Facture"
  316. },
  317. "videos": {
  318. "title": "Vidéos du Service",
  319. "dropzone": "Déposez les vidéos ici ou cliquez pour parcourir",
  320. "uploading": "Téléversement...",
  321. "formats": "MP4, WebM, MOV — max. 10 Mo chacune",
  322. "uploadingVideos": "Téléversement des vidéos...",
  323. "uploadingCount": "Téléversement de {count} vidéo(s)...",
  324. "uploadedCount": "{count} vidéo(s) téléversée(s)",
  325. "uploadFailed": "Échec du téléversement",
  326. "deleted": "Vidéo supprimée",
  327. "failedDelete": "Impossible de supprimer la vidéo",
  328. "failedUpdate": "Impossible de mettre à jour",
  329. "invoice": "Facture"
  330. },
  331. "documents": {
  332. "diagnosticTitle": "Rapports de Diagnostic",
  333. "documentsTitle": "Documents",
  334. "dropzone": "Déposez les fichiers ici ou cliquez pour parcourir",
  335. "uploading": "Téléversement...",
  336. "diagnosticFormats": "PDF, CSV, TXT — max. 10 Mo chacun",
  337. "documentFormats": "PDF, DOCX, XLSX, CSV, TXT — max. 10 Mo chacun",
  338. "uploadingReports": "Téléversement des rapports...",
  339. "uploadingDocuments": "Téléversement des documents...",
  340. "diagnosticLimitReached": "Limite de rapports de diagnostic atteinte ({count}/{max})",
  341. "documentLimitReached": "Limite de documents atteinte ({count}/{max})",
  342. "upgradePrompt": "Mettez à niveau votre plan pour téléverser davantage.",
  343. "diagnosticLabel": "Rapport de diagnostic",
  344. "documentLabel": "Document",
  345. "limitReachedToast": "Limite de {label} atteinte ({count}/{max}). Mettez à niveau votre plan pour plus.",
  346. "onlyUploading": "Seuls {count} fichier(s) seront téléversé(s) pour respecter la limite.",
  347. "uploadingCount": "Téléversement de {count} fichier(s)...",
  348. "uploadedCount": "{count} fichier(s) téléversé(s)",
  349. "uploadFailed": "Échec du téléversement",
  350. "deleted": "Fichier supprimé",
  351. "failedDelete": "Impossible de supprimer le fichier",
  352. "failedUpdate": "Impossible de mettre à jour",
  353. "invoice": "Facture"
  354. },
  355. "schedule": {
  356. "title": "Planification",
  357. "date": "Date",
  358. "startTime": "Heure de début",
  359. "endTime": "Heure de fin",
  360. "technician": "Technicien",
  361. "selectTechnician": "Sélectionner un technicien...",
  362. "searchOrCreate": "Rechercher ou créer un technicien...",
  363. "createTechnician": "Créer \"{name}\"",
  364. "creating": "Création...",
  365. "failedCreate": "Impossible de créer le technicien",
  366. "addNew": "+ Ajouter nouveau",
  367. "add": "Ajouter",
  368. "newTechPlaceholder": "Nom du technicien...",
  369. "assign": "Assigner au tableau",
  370. "assigned": "Assigné au tableau de travail",
  371. "failedAssign": "Échec de l'assignation",
  372. "endBeforeStart": "L'heure de fin doit être après l'heure de début",
  373. "failedUpdate": "Impossible de mettre à jour le planning",
  374. "splitCreated": "Le travail s'étend sur plusieurs jours — suite créée pour le jour suivant",
  375. "customTechnicians": "Personnalisés",
  376. "readMore": "En savoir plus",
  377. "setDefaults": "Paramètres par défaut",
  378. "workBay": "Poste de travail",
  379. "selectWorkBay": "Choisir un poste…",
  380. "noWorkBay": "Aucun poste",
  381. "noTechnician": "Sans technicien",
  382. "technicians": "Techniciens",
  383. "otherTeamMembers": "Autres membres de l’équipe",
  384. "makeTechnician": "En fait un technicien",
  385. "addSomeoneNew": "Ajouter quelqu’un",
  386. "notOnBoard": "Pas encore sur le planning",
  387. "putOnBoard": "Mettre au planning",
  388. "slotTaken": "{count, plural, one {Ce créneau est déjà réservé} other {Ce créneau a # conflits}}",
  389. "anotherJob": "un autre travail",
  390. "clashTechnician": "le technicien est occupé",
  391. "clashBay": "la baie est occupée",
  392. "clashBoth": "les deux sont occupés",
  393. "bookedAnyway": "Enregistré quand même. Changez l'heure ou choisissez le prochain créneau libre.",
  394. "pickNextAvailable": "Choisir le prochain créneau libre",
  395. "findingSlot": "Recherche d'un créneau…",
  396. "slotPicked": "Placé sur le prochain créneau libre",
  397. "noSlotFound": "Aucun créneau libre trouvé dans les prochaines semaines"
  398. },
  399. "notifications": {
  400. "title": "Notifications client",
  401. "viaSms": "par SMS",
  402. "viaEmail": "par e-mail",
  403. "justNow": "À l'instant",
  404. "minutesAgo": "il y a {count}m",
  405. "hoursAgo": "il y a {count}h",
  406. "daysAgo": "il y a {count}j"
  407. },
  408. "table": {
  409. "warranty": "Garantie"
  410. },
  411. "warranty": {
  412. "title": "Garantie",
  413. "months": "Durée (mois)",
  414. "notes": "Conditions de garantie",
  415. "notesPlaceholder": "ex. Garantie de 12 mois sur toutes les pièces et la main-d'œuvre...",
  416. "expiresAt": "Expire",
  417. "presets": {
  418. "3months": "3 m",
  419. "6months": "6 m",
  420. "12months": "12 m",
  421. "24months": "24 m"
  422. },
  423. "status": {
  424. "active": "Active",
  425. "expiring": "Expire bientôt",
  426. "expired": "Expirée",
  427. "none": "Aucune"
  428. },
  429. "statementLabel": "Ce que le client apprend sur la garantie",
  430. "statement": {
  431. "none": "Non précisé",
  432. "included": "Incluse",
  433. "not_included": "Non incluse"
  434. },
  435. "noneHint": "Rien n'est imprimé sur la garantie dans ce document.",
  436. "mileageWithUnit": "Limite de distance ({unit})",
  437. "notIncludedNotes": "Mention pour le client",
  438. "notIncludedPlaceholder": "ex. L'atelier n'offre aucune garantie sur les pièces fournies par le client.",
  439. "printedHint": "Imprimé sous la garantie sur le document.",
  440. "notIncludedHint": "Laissez vide et le document indique que les droits légaux ne sont pas affectés.",
  441. "summaryMonths": "{count} mois"
  442. },
  443. "concerns": {
  444. "title": "Demandes du client",
  445. "hint": "Pourquoi le client est venu, avec ses propres mots. Une ligne par point mentionné.",
  446. "add": "En ajouter un autre",
  447. "placeholder": "Il y a un bruit à l'arrière quand je freine",
  448. "remove": "Retirer ce point",
  449. "notAnswered": "Rien trouvé à ce sujet pour l'instant",
  450. "answered": "{count} constat(s) à ce sujet"
  451. },
  452. "videoCall": {
  453. "title": "Appel vidéo",
  454. "none": "Aucun appel vidéo sur cet ordre de travail.",
  455. "needsSchedule": "Définissez d'abord une heure de début. La réunion suit le planning.",
  456. "add": "Ajouter une réunion {provider}",
  457. "addedHere": "ajouté depuis cet ordre de travail",
  458. "fromCalendar": "depuis l'événement du calendrier",
  459. "join": "Rejoindre",
  460. "copy": "Copier le lien",
  461. "copied": "Lien copié",
  462. "remove": "Supprimer",
  463. "removeTitle": "Supprimer l'appel vidéo ?",
  464. "removeDescription": "La réunion est supprimée chez le fournisseur. Ceux qui ont déjà le lien ne pourront plus rejoindre.",
  465. "created": "Réunion créée. Le lien est sur l'ordre de travail.",
  466. "removed": "Réunion supprimée",
  467. "failed": "Une erreur s'est produite",
  468. "shareHint": "Le client ne reçoit ce lien que si vous l'envoyez.",
  469. "shareHintNoChannel": "Le client ne reçoit ce lien que si vous l'envoyez. Aucun canal de messagerie n'est configuré : copiez-le vous-même dans un message.",
  470. "send": {
  471. "button": "Envoyer au client",
  472. "title": "Envoyer le lien de l'appel vidéo",
  473. "description": "Envoyer le lien de connexion à {name}.",
  474. "messageLabel": "Note (facultatif)",
  475. "messagePlaceholder": "Ce que le client doit savoir avant l'appel...",
  476. "linkAlwaysIncluded": "Le lien de connexion est toujours ajouté sous votre note.",
  477. "sms": "SMS",
  478. "email": "E-mail",
  479. "telegram": "Telegram",
  480. "noPhone": "(pas de téléphone)",
  481. "noEmail": "(pas d'e-mail)",
  482. "noTelegram": "(pas de chat lié)",
  483. "notAvailable": "(non configuré)",
  484. "cancel": "Annuler",
  485. "send": "Envoyer",
  486. "sent": "Lien de l'appel vidéo envoyé",
  487. "partlySent": "Envoyé par {sent} ; pas par {failed}",
  488. "failed": "Impossible d'envoyer le lien"
  489. },
  490. "notify": {
  491. "invitation": "Bonjour {name}, votre appel vidéo concernant le véhicule {vehicle} a lieu le {when}. Rejoignez-le ici : {url}",
  492. "invitationNoTime": "Bonjour {name}, voici le lien de l'appel vidéo concernant le véhicule {vehicle} : {url}",
  493. "joinLine": "Rejoignez l'appel vidéo ici : {url}",
  494. "emailSubject": "Appel vidéo concernant votre {vehicle}"
  495. }
  496. }
  497. }