quotes.json 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. {
  2. "list": {
  3. "statusAll": "Tous",
  4. "statusAttention": "À traiter",
  5. "statusDraft": "Brouillon",
  6. "statusSent": "Envoyé",
  7. "statusAccepted": "Accepté",
  8. "statusRejected": "Rejeté",
  9. "statusConverted": "Converti",
  10. "searchPlaceholder": "Rechercher des devis...",
  11. "newQuote": "Nouveau devis",
  12. "columnQuoteNumber": "Devis N°",
  13. "columnTitle": "Titre",
  14. "columnCustomer": "Client",
  15. "columnVehicle": "Véhicule",
  16. "columnStatus": "Statut",
  17. "columnDate": "Date",
  18. "columnTotal": "Total",
  19. "noQuotes": "Aucun devis trouvé."
  20. },
  21. "page": {
  22. "quote": "Devis",
  23. "save": "Enregistrer",
  24. "pdf": "PDF",
  25. "email": "E-mail",
  26. "share": "Partager",
  27. "delete": "Supprimer",
  28. "deleteTitle": "Supprimer le devis",
  29. "deleteDescription": "Ce devis sera définitivement supprimé.",
  30. "saved": "Devis enregistré",
  31. "unsavedChanges": "Modifications non enregistrées",
  32. "saveFirst": "Veuillez d'abord enregistrer vos modifications",
  33. "failedSave": "Échec de l'enregistrement du devis",
  34. "failedDelete": "Échec de la suppression",
  35. "failedPdf": "Échec de la génération du PDF",
  36. "selectVehicle": "Veuillez sélectionner un véhicule",
  37. "convertTitle": "Convertir le devis en ordre de travail",
  38. "convertDescription": "Un nouveau dossier de service (ordre de travail) sera créé à partir de ce devis. Sélectionnez un véhicule pour l'ordre de travail.",
  39. "convertChoiceDescription": "Sélectionnez un véhicule, puis créez un nouvel ordre de travail à partir de ce devis ou ajoutez-le à un ordre déjà ouvert.",
  40. "convertNew": "Créer un nouvel ordre de travail",
  41. "convertExisting": "Ajouter à un ordre de travail existant",
  42. "convertExistingHint": "Les pièces, la main-d'œuvre et les fichiers du devis sont ajoutés à l'ordre de travail. Ce qui s'y trouve déjà reste inchangé.",
  43. "convertNoOpenWorkOrders": "Ce véhicule n'a aucun ordre de travail ouvert.",
  44. "convertSelectWorkOrder": "Sélectionnez un ordre de travail",
  45. "convertAdd": "Ajouter à l'ordre de travail",
  46. "convertConflicts": {
  47. "heading": "Avant d'ajouter, décidez ce que l'ordre de travail conserve",
  48. "checking": "Comparaison du devis avec l'ordre de travail...",
  49. "unanswered": "Choisissez ce que l'ordre de travail conserve avant d'ajouter le devis.",
  50. "discount": {
  51. "title": "Remise",
  52. "summary": "L'ordre de travail a une remise de {percent} %, soit {jobAmount} à ce jour. Le devis comporte une remise de {quoteAmount}.",
  53. "keepJob": "Conserver la remise de {percent} % et abandonner les {quoteAmount} du devis",
  54. "combine": "Convertir les {percent} % en {jobAmount} et ajouter les {quoteAmount} du devis, soit {total} au total"
  55. },
  56. "tax": {
  57. "title": "Taxe",
  58. "summary": "L'ordre de travail est établi avec {job}. Le devis a été établi avec {quote}.",
  59. "keepJob": "Conserver la taxe de l'ordre de travail. Les lignes du devis sont reprises aux montants devisés.",
  60. "useQuote": "Passer l'ordre de travail à la taxe du devis. Tout son contenu est recalculé.",
  61. "inclusive": "{rate} % de taxe inclus dans les lignes",
  62. "exclusive": "{rate} % de taxe ajoutés en sus",
  63. "components": "{rate} % de taxe ({names})"
  64. },
  65. "warranty": {
  66. "title": "Garantie",
  67. "summary": "L'ordre de travail indique {job}. Le devis accepté par le client indique {quote}.",
  68. "keepJob": "Conserver la garantie de l'ordre de travail",
  69. "useQuote": "Utiliser la garantie du devis, telle que le client l'a acceptée",
  70. "none": "rien sur la garantie",
  71. "notIncluded": "pas de garantie atelier",
  72. "included": "garantie incluse",
  73. "includedWithTerms": "garantie incluse, {terms}",
  74. "months": "{count, plural, one {# mois} other {# mois}}",
  75. "mileage": "{count} {unit}"
  76. }
  77. },
  78. "convert": "Convertir",
  79. "convertToWorkOrder": "Convertir en ordre de travail",
  80. "cancel": "Annuler",
  81. "failedConvert": "Échec de la conversion",
  82. "changesRequested": "Modifications demandées",
  83. "quoteAccepted": "Devis accepté",
  84. "markResolved": "Marquer comme résolu",
  85. "responseResolved": "Réponse du client résolue",
  86. "entityLabel": "Devis",
  87. "tabs": {
  88. "details": "Détails",
  89. "images": "Images",
  90. "documents": "Documents"
  91. },
  92. "customFieldsInvalid": "Veuillez remplir tous les champs personnalisés obligatoires",
  93. "customFieldsSaveFailed": "Impossible d'enregistrer les champs personnalisés"
  94. },
  95. "form": {
  96. "newQuote": "Nouveau devis",
  97. "editQuote": "Modifier le devis",
  98. "cancel": "Annuler",
  99. "createQuote": "Créer le devis",
  100. "updateQuote": "Mettre à jour le devis",
  101. "created": "Devis créé",
  102. "updated": "Devis mis à jour",
  103. "failedCreate": "Échec de la création du devis",
  104. "failedUpdate": "Échec de la mise à jour du devis"
  105. },
  106. "parts": {
  107. "title": "Pièces",
  108. "addPart": "Ajouter une pièce",
  109. "partNumber": "N° de pièce",
  110. "category": "Catégorie",
  111. "name": "Nom",
  112. "namePlaceholder": "Nom *",
  113. "qty": "Qté",
  114. "unitPrice": "Prix unitaire",
  115. "total": "Total",
  116. "subtotal": "Sous-total pièces : {amount}",
  117. "deleteRow": "Supprimer la ligne",
  118. "excludeFromTotal": "Exclure du total",
  119. "addFromInventory": "Du stock",
  120. "unitCost": "Coût",
  121. "markupPercent": "Marge %",
  122. "nameMissingHint": "Les lignes sans nom de pièce ne sont pas enregistrées."
  123. },
  124. "labor": {
  125. "title": "Main-d'œuvre",
  126. "addLabor": "Ajouter de la main-d'œuvre",
  127. "fromPresets": "Depuis modèles",
  128. "description": "Description",
  129. "descriptionPlaceholder": "Description *",
  130. "hours": "Heures",
  131. "rate": "Tarif ({currency}/h)",
  132. "total": "Total",
  133. "subtotal": "Sous-total main-d'œuvre : {amount}",
  134. "addService": "Ajouter une prestation",
  135. "qty": "Qté",
  136. "qtyOrHours": "Unité / Heures",
  137. "hourlyTag": "H",
  138. "serviceTag": "SERV",
  139. "hourlyHint": "À l'heure : facturé selon les heures travaillées (heures × taux/h). Cliquez pour changer.",
  140. "serviceHint": "Forfait : facturé au prix fixe par unité. Cliquez pour changer.",
  141. "deleteRow": "Supprimer la ligne",
  142. "excludeFromTotal": "Exclure du total"
  143. },
  144. "notes": {
  145. "title": "Notes",
  146. "public": "Publique",
  147. "internal": "Interne",
  148. "publicPlaceholder": "Description du devis affichée au client...",
  149. "internalPlaceholder": "Notes internes (non visibles par le client)...",
  150. "publicHelper": "Affiché sur le document du devis",
  151. "internalHelper": "Visible uniquement par votre équipe"
  152. },
  153. "sidebar": {
  154. "sharedLink": {
  155. "title": "Lien partagé",
  156. "sharedOn": "Partagé le {date}",
  157. "notViewed": "Pas encore consulté",
  158. "viewedTimes": "Consulté {count, plural, one {# fois} other {# fois}}",
  159. "lastViewed": "Dernier {date}",
  160. "copyLink": "Copier le lien",
  161. "linkCopied": "Lien copié"
  162. }
  163. },
  164. "details": {
  165. "title": "Détails du devis",
  166. "titleLabel": "Titre *",
  167. "titlePlaceholder": "Estimation de réparation de véhicule",
  168. "status": "Statut",
  169. "statusDraft": "Brouillon",
  170. "statusSent": "Envoyé",
  171. "statusAccepted": "Accepté",
  172. "statusRejected": "Rejeté",
  173. "validUntil": "Valide jusqu'au",
  174. "viewInspection": "Voir l'inspection liée",
  175. "vehicle": "Véhicule",
  176. "customer": "Client",
  177. "selectVehicle": "Sélectionner un véhicule...",
  178. "selectCustomer": "Sélectionner un client...",
  179. "none": "Aucun",
  180. "clearVehicle": "Retirer le véhicule",
  181. "clearCustomer": "Retirer le client"
  182. },
  183. "totals": {
  184. "title": "Totaux",
  185. "parts": "Pièces",
  186. "labor": "Main-d'œuvre",
  187. "subtotal": "Sous-total",
  188. "subtotalInclTax": "Sous-total (TTC)",
  189. "discount": "Remise",
  190. "discountNone": "Aucune",
  191. "discountPercentage": "Pourcentage",
  192. "discountFixed": "Fixe",
  193. "tax": "Taxe",
  194. "taxIncluded": "Taxe (incl.)",
  195. "taxableAmount": "Montant taxable",
  196. "total": "Total",
  197. "inclusiveModeHint": "Les prix de ligne sont saisis taxe incluse. Les totaux affichent la répartition net + taxe."
  198. },
  199. "shareDialog": {
  200. "title": "Partager le devis",
  201. "description": "Générez un lien public permettant à quiconque de consulter et télécharger ce devis sans se connecter.",
  202. "notifyTitle": "Notifier {name}",
  203. "email": "E-mail",
  204. "noEmail": "(aucun e-mail enregistré)",
  205. "sms": "SMS",
  206. "noPhone": "(aucun téléphone enregistré)",
  207. "sendNotification": "Envoyer la notification",
  208. "revokeLink": "Révoquer le lien",
  209. "generateLink": "Générer un lien public",
  210. "emailSent": "E-mail envoyé",
  211. "failedEmail": "Échec de l'envoi de l'e-mail",
  212. "smsSent": "SMS envoyé",
  213. "failedSms": "Échec de l'envoi du SMS",
  214. "copyLink": "Copier le lien"
  215. },
  216. "images": {
  217. "title": "Images du devis",
  218. "dropzone": "Déposez les images ici ou cliquez pour parcourir",
  219. "uploading": "Téléversement...",
  220. "formats": "JPG, PNG, WebP — 10 Mo max. chacune",
  221. "uploadingImages": "Téléversement des images...",
  222. "limitReached": "Limite d'images atteinte ({count}/{max})",
  223. "upgradePrompt": "Mettez à niveau votre plan pour téléverser plus d'images.",
  224. "onlyAllowed": "Seules les images JPG, PNG et WebP sont autorisées. {names} ignorées.",
  225. "onlyUploading": "Seules {count} image(s) seront téléversées pour respecter la limite.",
  226. "uploadingCount": "Téléversement de {count} image(s)...",
  227. "uploadedCount": "{count} image(s) téléversée(s)",
  228. "uploadFailed": "Échec du téléversement",
  229. "failedUploadFile": "Échec du téléversement de {name}",
  230. "failedSaveFile": "Échec de l'enregistrement de {name}",
  231. "deleted": "Image supprimée",
  232. "failedDelete": "Échec de la suppression de l'image",
  233. "failedUpdate": "Échec de la mise à jour",
  234. "description": "Description...",
  235. "pdf": "PDF"
  236. },
  237. "documents": {
  238. "title": "Documents",
  239. "dropzone": "Déposez les fichiers ici ou cliquez pour parcourir",
  240. "uploading": "Téléversement...",
  241. "formats": "PDF, CSV, TXT — 10 Mo max. chacun",
  242. "uploadingDocuments": "Téléversement des documents...",
  243. "limitReached": "Limite de documents atteinte ({count}/{max})",
  244. "upgradePrompt": "Mettez à niveau votre plan pour téléverser davantage.",
  245. "onlyUploading": "Seuls {count} fichier(s) seront téléversés pour respecter la limite.",
  246. "uploadingCount": "Téléversement de {count} fichier(s)...",
  247. "uploadedCount": "{count} fichier(s) téléversé(s)",
  248. "uploadFailed": "Échec du téléversement",
  249. "failedUploadFile": "Échec du téléversement de {name}",
  250. "failedSaveFile": "Échec de l'enregistrement de {name}",
  251. "deleted": "Fichier supprimé",
  252. "failedDelete": "Échec de la suppression du fichier",
  253. "failedUpdate": "Échec de la mise à jour",
  254. "pdf": "PDF"
  255. },
  256. "statusLabels": {
  257. "draft": "Brouillon",
  258. "sent": "Envoyé",
  259. "accepted": "Accepté",
  260. "rejected": "Rejeté",
  261. "expired": "Expiré",
  262. "converted": "Converti",
  263. "changes_requested": "Modifications demandées"
  264. }
  265. }