service.json 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774
  1. {
  2. "page": {
  3. "notFound": "Registo de serviço não encontrado",
  4. "updated": "Registo de serviço atualizado",
  5. "failedUpdate": "Não foi possível atualizar o registo de serviço",
  6. "deleteTitle": "Eliminar registo de serviço",
  7. "deleteDescription": "Isto elimina permanentemente este registo de serviço e todos os dados associados. Não é possível anular.",
  8. "deleted": "Registo de serviço eliminado",
  9. "failedDelete": "Não foi possível eliminar",
  10. "datesExpiredTitle": "Datas da fatura expiradas",
  11. "datesExpiredDescription": "A data da fatura ou a data de vencimento já passou. Pretende atualizar as datas antes de continuar?",
  12. "datesExpiredUpdate": "Atualizar datas e continuar",
  13. "datesExpiredProceed": "Continuar sem alterações",
  14. "datesExpiredUseToday": "Atualizar para a data de hoje",
  15. "datesExpiredCustomize": "Escolher datas manualmente",
  16. "datesExpiredBack": "Voltar",
  17. "datesExpiredSetToday": "Definir para hoje",
  18. "customFieldsInvalid": "Preencha todos os campos personalizados obrigatórios",
  19. "customFieldsSaveFailed": "Não foi possível guardar os campos personalizados",
  20. "problems": {
  21. "title": "A ordem de serviço precisa de um título antes de ser guardada.",
  22. "negative": "Quantidades, horas, preços e custos não podem ser negativos.",
  23. "partName": "Todas as peças com preço precisam de um nome.",
  24. "laborDescription": "Todas as linhas de mão de obra com horas ou taxa precisam de uma descrição.",
  25. "concernCondition": "Uma queixa com causa, correção ou confirmação tem de ter a condição preenchida."
  26. }
  27. },
  28. "header": {
  29. "tabs": {
  30. "details": "Detalhes",
  31. "images": "Imagens",
  32. "video": "Vídeo",
  33. "documents": "Documentos",
  34. "statusReports": "Relatórios de estado"
  35. },
  36. "save": "Guardar",
  37. "pdf": "PDF",
  38. "email": "E-mail",
  39. "share": "Partilhar",
  40. "notify": "Notificar",
  41. "delete": "Eliminar",
  42. "unpaid": "Por pagar",
  43. "unsavedChanges": "Alterações por guardar",
  44. "saved": "Guardado",
  45. "joinCall": "Entrar na videochamada",
  46. "moreActions": "Mais ações",
  47. "designMenu": "Design da fatura",
  48. "designMenuLoading": "A verificar com que design esta fatura é impressa...",
  49. "designMenuExplain": "Foi enviada ao cliente em {date}, por isso continua a ser impressa com o design com que foi enviada. Escolher outro muda apenas o aspeto. O conteúdo da fatura mantém-se tal como foi enviado, e o aspeto anterior não é guardado.",
  50. "designSentWith": "O design com que foi enviada",
  51. "designFollow": "Seguir o design predefinido",
  52. "designFollowNamed": "Seguir o design predefinido ({name})",
  53. "designDefaultName": "o design predefinido",
  54. "designPickConfirmTitle": "Mudar esta fatura para {name}?",
  55. "designPickConfirmBody": "Só muda o aspeto. Os dados da oficina, o cliente, as condições de pagamento e os valores mantêm-se exatamente como foram enviados. O design atual não é guardado, por isso não é possível anular.",
  56. "designPickConfirm": "Mudar o design",
  57. "designPickDone": "A fatura passa a ser impressa com {name}",
  58. "designPickFailed": "Não foi possível alterar o design",
  59. "designRefresh": "Atualizar para os dados atuais",
  60. "designRefreshConfirmTitle": "Atualizar esta fatura para os dados atuais?",
  61. "designRefreshConfirmBody": "Os dados da oficina, o cliente, o veículo, as condições de pagamento e o design são lidos de novo tal como estão hoje, e a fatura fica bloqueada a eles. As linhas e os totais pertencem à própria fatura e não mudam. As cópias já transferidas ou enviadas por e-mail ficam como estavam; a ligação de partilha e o portal mostram a fatura atualizada. Isto não pode ser anulado.",
  62. "designRefreshConfirm": "Atualizar a fatura",
  63. "designRefreshDone": "Esta fatura passa a ser impressa com os dados atuais",
  64. "designRefreshFailed": "Não foi possível atualizar a fatura",
  65. "printWorkOrder": "Imprimir ordem de trabalho"
  66. },
  67. "basicInfo": {
  68. "title": "Informações básicas",
  69. "invoiceDetails": "Detalhes da fatura",
  70. "customerInfo": "Cliente e viatura",
  71. "paid": "Pago",
  72. "markPaid": "Marcar como pago",
  73. "markUnpaid": "Marcar como por pagar",
  74. "vehicle": "Viatura",
  75. "open": "Abrir",
  76. "customer": "Cliente",
  77. "titleLabel": "Título *",
  78. "titlePlaceholder": "Mudança de óleo",
  79. "date": "Data",
  80. "type": "Tipo",
  81. "mileage": "Quilometragem",
  82. "mileageMarine": "Horas de motor",
  83. "status": "Estado",
  84. "technician": "Técnico",
  85. "invoiceNumber": "Número da fatura",
  86. "invoiceDate": "Data da fatura",
  87. "invoiceDueDate": "Data de vencimento",
  88. "typeOptions": {
  89. "maintenance": "Manutenção",
  90. "repair": "Reparação",
  91. "upgrade": "Melhoria",
  92. "inspection": "Inspeção"
  93. },
  94. "statusOptions": {
  95. "pending": "Pendente",
  96. "in_progress": "Em curso",
  97. "waiting_parts": "A aguardar peças",
  98. "completed": "Concluído"
  99. },
  100. "searchVehicles": "Pesquisar viaturas...",
  101. "noVehicleFound": "Nenhuma viatura encontrada.",
  102. "techPicker": {
  103. "placeholder": "Selecione ou escreva um nome...",
  104. "searchPlaceholder": "Pesquise ou escreva um nome...",
  105. "useCustom": "Usar \"{search}\"",
  106. "typePrompt": "Escreva um nome...",
  107. "boardTechnicians": "Técnicos do quadro",
  108. "teamMembers": "Membros da equipa"
  109. },
  110. "design": "Design da fatura",
  111. "designDefault": "Predefinido da oficina",
  112. "designFollowing": "Predefinido ({name})",
  113. "designSaved": "Design da fatura atualizado",
  114. "designFollowingRule": "Predefinido ({name}, {rule})",
  115. "designRule": {
  116. "parts_sale": "Venda só de peças"
  117. },
  118. "designSaveFailed": "Não foi possível alterar o design da fatura"
  119. },
  120. "parts": {
  121. "title": "Peças",
  122. "fromInventory": "Do stock",
  123. "addPart": "Adicionar peça",
  124. "partNumber": "Ref. peça",
  125. "category": "Categoria",
  126. "name": "Nome",
  127. "qty": "Qtd.",
  128. "unitCost": "Custo",
  129. "unitCostHint": "Custo do fornecedor (interno, não é mostrado ao cliente)",
  130. "markupPercent": "Margem %",
  131. "markupPercentHint": "Margem aplicada ao custo (interna, não é mostrada ao cliente)",
  132. "applyMarkup": "Aplicar {percent}%",
  133. "applyMarkupHint": "Reaplicar a margem de {percent}% ao custo em todas as linhas",
  134. "unitPrice": "Preço unitário",
  135. "total": "Total",
  136. "namePlaceholder": "Nome *",
  137. "subtotal": "Subtotal de peças: {amount}",
  138. "inventoryTitle": "Selecionar peça do stock",
  139. "searchInventory": "Pesquisar no stock...",
  140. "inStock": "{quantity} em stock",
  141. "noInventory": "Nenhuma peça encontrada no stock.",
  142. "scanBarcode": "Ler código",
  143. "scanTitle": "Ler código de barras",
  144. "partFound": "\"{name}\" adicionado a partir do stock",
  145. "partNotFound": "Nenhuma peça encontrada para o código de barras \"{barcode}\"",
  146. "deleteRow": "Eliminar linha",
  147. "outOfStock": "Sem stock",
  148. "onBackorder": "Em encomenda ({count})",
  149. "nameMissingHint": "As linhas sem nome da peça não são guardadas."
  150. },
  151. "labor": {
  152. "title": "Mão de obra e serviços",
  153. "addLabor": "Adicionar mão de obra",
  154. "fromPresets": "De modelos",
  155. "description": "Descrição",
  156. "hours": "Horas",
  157. "rate": "Taxa ({currency}/h)",
  158. "total": "Total",
  159. "descriptionPlaceholder": "Descrição *",
  160. "subtotal": "Subtotal de mão de obra: {amount}",
  161. "addService": "Adicionar serviço",
  162. "addFinding": "Observação",
  163. "newObservation": "Nova observação",
  164. "addExisting": "Ver existentes ({count})",
  165. "qty": "Qtd.",
  166. "qtyOrHours": "Unidade / Horas",
  167. "hourlyTag": "H",
  168. "serviceTag": "SERV",
  169. "hourlyHint": "À hora: calculado pelas horas trabalhadas (horas × taxa/h). Clique para alterar.",
  170. "serviceHint": "Serviço: cobrado como valor fixo por unidade. Clique para alterar.",
  171. "deleteRow": "Eliminar linha",
  172. "descriptionMissingHint": "As linhas sem descrição não são guardadas.",
  173. "shopFeeTag": "Taxa",
  174. "shopFeeHintFlat": "A taxa de oficina das Definições, como valor fixo. Altere o preço para este trabalho ou elimine a linha para a retirar.",
  175. "shopFeeHintPercentLabor": "A taxa de oficina das Definições: {percent} % da mão de obra deste trabalho. Elimine a linha para a retirar.",
  176. "shopFeeHintPercentAll": "A taxa de oficina das Definições: {percent} % da mão de obra e das peças deste trabalho. Elimine a linha para a retirar."
  177. },
  178. "liveLabor": {
  179. "title": "{count, plural, one {Um técnico adicionou mão de obra a esta folha de obra} other {Um técnico adicionou # linhas de mão de obra a esta folha de obra}}",
  180. "body": "Fica fora da lista enquanto edita. A próxima gravação inclui-a de qualquer forma.",
  181. "show": "Mostrar"
  182. },
  183. "totals": {
  184. "title": "Totais",
  185. "parts": "Peças",
  186. "labor": "Mão de obra",
  187. "subtotal": "Subtotal",
  188. "subtotalInclTax": "Subtotal (com IVA)",
  189. "discount": "Desconto",
  190. "discountNone": "Nenhum",
  191. "discountOff": "Não",
  192. "discountPercentage": "Percentagem",
  193. "discountFixed": "Fixo",
  194. "tax": "IVA",
  195. "taxIncluded": "IVA (incl.)",
  196. "taxableAmount": "Valor tributável",
  197. "total": "Total",
  198. "inclusiveModeHint": "Os preços das linhas são introduzidos com IVA incluído. Os totais mostram a divisão entre valor líquido e IVA.",
  199. "partsCost": "Custo das peças (interno)"
  200. },
  201. "lineTax": {
  202. "label": "Imposto nesta linha",
  203. "taxedTag": "IMP.",
  204. "untaxedTag": "SEM IMP.",
  205. "taxedHint": "Esta linha tem imposto. Clique para a deixar fora do imposto.",
  206. "untaxedHint": "Esta linha não tem imposto. Clique para o aplicar."
  207. },
  208. "taxOffer": {
  209. "noTax": "Isto foi criado sem imposto. A oficina cobra agora {rate}%.",
  210. "otherRate": "Isto está a {current}%. A oficina cobra agora {rate}%.",
  211. "apply": "Aplicar {rate}% de imposto",
  212. "failed": "Não foi possível atualizar o imposto",
  213. "saveFirst": "Guarde primeiro as alterações e depois aplique o imposto."
  214. },
  215. "notes": {
  216. "title": "Notas",
  217. "public": "Públicas",
  218. "internal": "Internas",
  219. "publicPlaceholder": "Notas visíveis na fatura...",
  220. "internalPlaceholder": "Notas internas (não aparecem na fatura)...",
  221. "publicHelper": "Aparecem na fatura e nos documentos partilhados",
  222. "internalHelper": "Visíveis apenas para a sua equipa",
  223. "aiWrite": "Escrever com IA",
  224. "aiGenerated": "Notas geradas com IA",
  225. "aiGenerateFailed": "Não foi possível gerar as notas com IA",
  226. "aiDialogTitle": "Escrever com IA",
  227. "aiDialogDescription": "A IA analisa as peças e a mão de obra deste registo de serviço e gera uma descrição profissional. O resultado é escrito no tipo de nota selecionado.",
  228. "aiGenerate": "Gerar",
  229. "aiOverwriteDescription": "Esta nota já tem conteúdo. Pode substituí-lo ou acrescentar o texto gerado pela IA por baixo.",
  230. "aiOverwriteReplace": "Substituir",
  231. "aiOverwriteAppend": "Acrescentar",
  232. "aiOverwriteCancel": "Cancelar",
  233. "aiDontShowAgain": "Não mostrar novamente",
  234. "internalTitle": "Notas internas",
  235. "publicTitle": "Notas para o cliente"
  236. },
  237. "invoice": {
  238. "title": "Resumo da fatura",
  239. "parts": "Peças",
  240. "labor": "Mão de obra",
  241. "subtotal": "Subtotal",
  242. "subtotalInclTax": "Subtotal (com IVA)",
  243. "discount": "Desconto",
  244. "tax": "IVA ({rate}%)",
  245. "taxIncluded": "IVA (incl., {rate}%)",
  246. "taxableAmount": "Valor tributável",
  247. "total": "Total",
  248. "paid": "Pago",
  249. "balanceDue": "Valor em dívida",
  250. "paidBadge": "PAGO",
  251. "entityLabel": "Fatura",
  252. "emailSubject": "Confirmação de pagamento",
  253. "statusEmailSubject": "Atualização do estado do serviço",
  254. "markCompletedTitle": "Marcar esta fatura como concluída?",
  255. "markCompletedDescription": "Já foi enviada ao cliente, mas continua marcada como não terminada, por isso vai continuar a aparecer no quadro.",
  256. "markCompletedConfirm": "Marcar como concluída",
  257. "lockedFieldsetLabel": "Fatura bloqueada, edição desativada"
  258. },
  259. "payments": {
  260. "title": "Pagamentos",
  261. "markUnpaid": "Marcar como por pagar",
  262. "markPaid": "Marcar como pago",
  263. "recordPayment": "Registar pagamento",
  264. "totalPaid": "Total pago",
  265. "amount": "Valor",
  266. "date": "Data",
  267. "method": "Método",
  268. "note": "Nota",
  269. "notePlaceholder": "Nota opcional",
  270. "savePayment": "Guardar pagamento",
  271. "methodOptions": {
  272. "cash": "Numerário",
  273. "card": "Cartão",
  274. "transfer": "Transferência",
  275. "other": "Outro"
  276. },
  277. "recorded": "Pagamento registado",
  278. "markedPaid": "Marcado como pago",
  279. "markedUnpaid": "Marcado como por pagar",
  280. "deleted": "Pagamento eliminado",
  281. "failedRecord": "Não foi possível registar o pagamento",
  282. "failedStatus": "Não foi possível atualizar o estado do pagamento",
  283. "failedDelete": "Não foi possível eliminar o pagamento",
  284. "deleteTitle": "Eliminar pagamento",
  285. "deleteDescription": "Isto remove o registo deste pagamento.",
  286. "failedPdf": "Não foi possível gerar o PDF da fatura",
  287. "received": "Pagamentos recebidos",
  288. "noneYet": "Ainda nada pago.",
  289. "balanceDue": "Valor em dívida"
  290. },
  291. "attachments": {
  292. "deleteTitle": "Eliminar anexo",
  293. "deleteDescription": "Isto elimina permanentemente este anexo. Não é possível anular.",
  294. "deleted": "Anexo eliminado",
  295. "failedDelete": "Não foi possível eliminar",
  296. "images": "Imagens ({count})",
  297. "videos": "Vídeos ({count})",
  298. "diagnostics": "Relatórios de diagnóstico ({count})",
  299. "documents": "Documentos ({count})",
  300. "download": "Transferir",
  301. "close": "Fechar"
  302. },
  303. "share": {
  304. "title": "Partilhar fatura",
  305. "description": "Gere um link público que permite a qualquer pessoa ver e transferir esta fatura sem iniciar sessão.",
  306. "notifyTitle": "Notificar {name}",
  307. "email": "E-mail",
  308. "noEmail": "(sem e-mail registado)",
  309. "sms": "SMS",
  310. "noPhone": "(sem telefone registado)",
  311. "sendNotification": "Enviar notificação",
  312. "revokeLink": "Revogar link",
  313. "generateLink": "Gerar link público",
  314. "emailSent": "E-mail enviado",
  315. "failedEmail": "Não foi possível enviar o e-mail",
  316. "smsSent": "SMS enviado",
  317. "failedSms": "Não foi possível enviar o SMS",
  318. "copyLink": "Copiar link"
  319. },
  320. "sidebar": {
  321. "vehicle": "Viatura",
  322. "customer": "Cliente",
  323. "vin": "VIN: {vin}",
  324. "mileageAtService": "Quilometragem no serviço: {mileage} {unit}",
  325. "engineHoursAtService": "Horas de motor no serviço: {mileage} {unit}",
  326. "sharedLink": {
  327. "title": "Link partilhado",
  328. "sharedOn": "Partilhado em {date}",
  329. "notViewed": "Ainda não visto",
  330. "viewedTimes": "Visto {count, plural, one {# vez} other {# vezes}}",
  331. "lastViewed": "Última vez {date}",
  332. "copyLink": "Copiar link",
  333. "linkCopied": "Link copiado"
  334. }
  335. },
  336. "images": {
  337. "title": "Imagens do serviço",
  338. "dropzone": "Arraste imagens para aqui ou clique para procurar",
  339. "uploading": "A carregar...",
  340. "formats": "JPG, PNG, WebP, máx. 10 MB cada",
  341. "uploadingImages": "A carregar imagens...",
  342. "limitReached": "Limite de imagens atingido ({count}/{max})",
  343. "upgradePrompt": "Atualize o seu plano para carregar mais imagens.",
  344. "onlyAllowed": "Só são permitidas imagens JPG, PNG e WebP. {names} ignorado(s).",
  345. "onlyUploading": "A carregar apenas {count} imagem(ns) para não exceder o limite.",
  346. "uploadingCount": "A carregar {count} imagem(ns)...",
  347. "uploadedCount": "{count} imagem(ns) carregada(s)",
  348. "uploadFailed": "Falha no carregamento",
  349. "deleted": "Imagem eliminada",
  350. "failedDelete": "Não foi possível eliminar a imagem",
  351. "failedUpdate": "Não foi possível atualizar",
  352. "description": "Descrição...",
  353. "invoice": "Fatura"
  354. },
  355. "videos": {
  356. "title": "Vídeos do serviço",
  357. "dropzone": "Arraste vídeos para aqui ou clique para procurar",
  358. "uploading": "A carregar...",
  359. "formats": "MP4, WebM, MOV, máx. 10 MB cada",
  360. "uploadingVideos": "A carregar vídeos...",
  361. "uploadingCount": "A carregar {count} vídeo(s)...",
  362. "uploadedCount": "{count} vídeo(s) carregado(s)",
  363. "uploadFailed": "Falha no carregamento",
  364. "deleted": "Vídeo eliminado",
  365. "failedDelete": "Não foi possível eliminar o vídeo",
  366. "failedUpdate": "Não foi possível atualizar",
  367. "invoice": "Fatura"
  368. },
  369. "documents": {
  370. "diagnosticTitle": "Relatórios de diagnóstico",
  371. "documentsTitle": "Documentos",
  372. "dropzone": "Arraste ficheiros para aqui ou clique para procurar",
  373. "uploading": "A carregar...",
  374. "diagnosticFormats": "PDF, CSV, TXT, máx. 10 MB cada",
  375. "documentFormats": "PDF, DOCX, XLSX, CSV, TXT, máx. 10 MB cada",
  376. "uploadingReports": "A carregar relatórios...",
  377. "uploadingDocuments": "A carregar documentos...",
  378. "diagnosticLimitReached": "Limite de relatórios de diagnóstico atingido ({count}/{max})",
  379. "documentLimitReached": "Limite de documentos atingido ({count}/{max})",
  380. "upgradePrompt": "Atualize o seu plano para carregar mais.",
  381. "diagnosticLabel": "Relatório de diagnóstico",
  382. "documentLabel": "Documento",
  383. "limitReachedToast": "Limite de {label} atingido ({count}/{max}). Atualize o seu plano para ter mais.",
  384. "onlyUploading": "A carregar apenas {count} ficheiro(s) para não exceder o limite.",
  385. "uploadingCount": "A carregar {count} ficheiro(s)...",
  386. "uploadedCount": "{count} ficheiro(s) carregado(s)",
  387. "uploadFailed": "Falha no carregamento",
  388. "deleted": "Ficheiro eliminado",
  389. "failedDelete": "Não foi possível eliminar o ficheiro",
  390. "failedUpdate": "Não foi possível atualizar",
  391. "invoice": "Fatura"
  392. },
  393. "schedule": {
  394. "title": "Marcação",
  395. "date": "Data",
  396. "startTime": "Hora de início",
  397. "endTime": "Hora de fim",
  398. "durationPresets": "Duração",
  399. "technician": "Técnico",
  400. "selectTechnician": "Selecionar técnico...",
  401. "searchOrCreate": "Pesquisar ou criar técnico...",
  402. "createTechnician": "Criar \"{name}\"",
  403. "creating": "A criar...",
  404. "failedCreate": "Não foi possível criar o técnico",
  405. "addNew": "+ Adicionar novo",
  406. "add": "Adicionar",
  407. "newTechPlaceholder": "Nome do técnico...",
  408. "assign": "Atribuir ao quadro",
  409. "assigned": "Atribuído ao quadro de trabalho",
  410. "failedAssign": "Não foi possível atribuir",
  411. "assignNotAllowed": "Não tem permissão para atribuir técnicos. Peça a um proprietário ou administrador que permita à sua função alterar o quadro de trabalho.",
  412. "endBeforeStart": "A hora de fim tem de ser posterior à hora de início",
  413. "failedUpdate": "Não foi possível atualizar a marcação",
  414. "splitCreated": "O trabalho ocupa vários dias, por isso foi criada uma continuação para o dia seguinte",
  415. "customTechnicians": "Personalizados",
  416. "readMore": "Saber mais",
  417. "setDefaults": "Valores predefinidos",
  418. "workBay": "Posto de trabalho",
  419. "selectWorkBay": "Selecionar posto de trabalho…",
  420. "noWorkBay": "Sem posto de trabalho",
  421. "noTechnician": "Sem técnico",
  422. "technicians": "Técnicos",
  423. "otherTeamMembers": "Outros membros da equipa",
  424. "makeTechnician": "Torna esta pessoa técnico",
  425. "addSomeoneNew": "Adicionar alguém novo",
  426. "notOnBoard": "Ainda não está no quadro",
  427. "putOnBoard": "Colocar no quadro",
  428. "slotTaken": "{count, plural, one {Este horário já está reservado} other {Este horário tem # conflitos}}",
  429. "anotherJob": "outro serviço",
  430. "clashTechnician": "o técnico está ocupado",
  431. "clashBay": "o posto de trabalho está ocupado",
  432. "clashBoth": "ambos estão ocupados",
  433. "bookedAnyway": "Guardado mesmo assim. Altere a hora ou escolha o próximo horário livre.",
  434. "pickNextAvailable": "Escolher o próximo horário livre",
  435. "findingSlot": "A procurar um horário…",
  436. "slotPicked": "Marcado no próximo horário livre",
  437. "noSlotFound": "Nenhum horário livre encontrado nas próximas semanas",
  438. "assignedTitle": "Técnico atribuído",
  439. "boardLink": "Quadro de trabalho",
  440. "someoneElse": "Outra pessoa",
  441. "loadOf": "{booked} / {capacity} h",
  442. "loadFree": "{hours} h livres",
  443. "loadFull": "Sem horas livres",
  444. "loadOn": "Horas marcadas a {date}",
  445. "promisedAt": "Prometido ao cliente",
  446. "promisedPlaceholder": "Ainda não prometido",
  447. "promisedClear": "Limpar"
  448. },
  449. "notifications": {
  450. "title": "Notificações ao cliente",
  451. "viaSms": "por SMS",
  452. "viaEmail": "por e-mail",
  453. "justNow": "Agora mesmo",
  454. "minutesAgo": "há {count} min",
  455. "hoursAgo": "há {count} h",
  456. "daysAgo": "há {count} d"
  457. },
  458. "table": {
  459. "warranty": "Garantia"
  460. },
  461. "warranty": {
  462. "title": "Garantia",
  463. "months": "Duração (meses)",
  464. "notes": "Condições da garantia",
  465. "notesPlaceholder": "ex.: Garantia de 12 meses em todas as peças e mão de obra...",
  466. "expiresAt": "Expira",
  467. "presets": {
  468. "3months": "3 m",
  469. "6months": "6 m",
  470. "12months": "12 m",
  471. "24months": "24 m"
  472. },
  473. "status": {
  474. "active": "Ativa",
  475. "expiring": "A expirar",
  476. "expired": "Expirada",
  477. "none": "N/A"
  478. },
  479. "statementLabel": "O que é dito ao cliente sobre a garantia",
  480. "statement": {
  481. "none": "Não indicada",
  482. "included": "Incluída",
  483. "not_included": "Não incluída"
  484. },
  485. "noneHint": "Nada sobre a garantia é impresso neste documento.",
  486. "mileageWithUnit": "Limite de distância ({unit})",
  487. "notIncludedNotes": "Declaração ao cliente",
  488. "notIncludedPlaceholder": "ex.: A oficina não dá garantia sobre peças fornecidas pelo cliente.",
  489. "printedHint": "Impresso por baixo da garantia no documento.",
  490. "notIncludedHint": "Deixe em branco e o documento indica que os direitos legais não são afetados.",
  491. "summaryMonths": "{count} m"
  492. },
  493. "concerns": {
  494. "title": "Queixas do cliente",
  495. "hint": "O motivo da visita do cliente, pelas suas próprias palavras. Uma linha por cada coisa mencionada.",
  496. "add": "Adicionar outra",
  497. "placeholder": "Faz um barulho atrás quando travo",
  498. "remove": "Remover esta queixa",
  499. "notAnswered": "Ainda nada encontrado sobre isto",
  500. "answered": "{count} observação(ões) sobre isto",
  501. "storyTitle": "Descrição do trabalho",
  502. "storyHint": "Condição, causa, correção, confirmação. Clique num passo para o abrir; uma linha por cada coisa que o cliente referiu ou que observou.",
  503. "steps": {
  504. "condition": "Condição",
  505. "cause": "Causa",
  506. "correction": "Correção",
  507. "confirm": "Confirmação"
  508. },
  509. "conditionPlaceholder": "O que o cliente referiu ou o que observou",
  510. "causePlaceholder": "O que os testes mostraram ser a causa de origem",
  511. "correctionPlaceholder": "O que foi feito para o resolver",
  512. "confirmPlaceholder": "Como a reparação foi verificada: ensaio em estrada, nova leitura de diagnóstico, sintoma desaparecido",
  513. "markConfirmed": "Confirmada",
  514. "confirmedBy": "Confirmada por {name}, {date}",
  515. "confirmedAt": "Confirmada a {date}",
  516. "confirmedOnSave": "Fica com o seu nome quando guardar",
  517. "confirmedCount": "{confirmed} de {total} confirmadas",
  518. "findingsCount": "{count, plural, one {# observação} other {# observações}}",
  519. "addFinding": "Adicionar observação",
  520. "unconfirmedTitle": "Concluir com queixas por confirmar?",
  521. "unconfirmedBody": "{count, plural, one {Há uma queixa que ainda não foi confirmada como resolvida:} other {Há # queixas que ainda não foram confirmadas como resolvidas:}}",
  522. "unconfirmedProceed": "Concluir na mesma",
  523. "addMedia": "Adicionar multimédia",
  524. "mediaUploading": "A carregar…",
  525. "mediaAdded": "{count, plural, one {# ficheiro adicionado} other {# ficheiros adicionados}}",
  526. "mediaFailed": "Não foi possível carregar {name}",
  527. "mediaTypes": "Escolha uma fotografia (JPG, PNG, WebP) ou um vídeo.",
  528. "dictate": {
  529. "start": "Ditar",
  530. "listening": "A ouvir",
  531. "startHint": "Fale e o texto aparece aqui. Nada é gravado.",
  532. "stopHint": "Parar de ouvir",
  533. "notAllowed": "O navegador não teve autorização para usar o microfone. Autorize-o para este site e tente novamente.",
  534. "noMicrophone": "Não foi encontrado nenhum microfone.",
  535. "failed": "O ditado parou. Tente novamente.",
  536. "startHintServer": "Fale e o texto vai aparecendo enquanto fala. O áudio é enviado para o seu modelo de voz para ser transcrito e não é guardado.",
  537. "transcribing": "A concluir…",
  538. "language": "Idioma falado",
  539. "auto": "Automático",
  540. "nothingHeard": "Não se ouviu nada.",
  541. "fellBack": "Por agora, a usar o ditado do próprio navegador.",
  542. "autoLong": "Automático (detetar o idioma)",
  543. "engine": "Transcrito por",
  544. "engineAi": "Modelo de voz (mais preciso)",
  545. "engineBrowser": "Navegador (escreve enquanto fala)",
  546. "liveFellBack": "A escrever em blocos de alguns segundos em vez de palavra a palavra."
  547. },
  548. "stepEmpty": "Ainda por preencher",
  549. "removeTitle": "Remover esta queixa?",
  550. "removeBody": "A condição, a causa, a correção e a confirmação são removidas com ela quando guardar a ordem de serviço.",
  551. "removeAttached": "As observações e os ficheiros multimédia ficam no trabalho, mas deixam de estar associados a uma queixa.",
  552. "removeConfirm": "Remover queixa",
  553. "saveFirst": "Guarde primeiro a ordem de serviço"
  554. },
  555. "videoCall": {
  556. "title": "Videochamada",
  557. "none": "Nenhuma videochamada nesta ordem de serviço.",
  558. "needsSchedule": "Defina primeiro uma hora de início. A reunião segue a marcação.",
  559. "add": "Adicionar reunião do {provider}",
  560. "addedHere": "adicionada a partir desta ordem de serviço",
  561. "fromCalendar": "do evento do calendário",
  562. "join": "Entrar",
  563. "copy": "Copiar link",
  564. "copied": "Link copiado",
  565. "remove": "Remover",
  566. "removeTitle": "Remover a videochamada?",
  567. "removeDescription": "A reunião é eliminada no fornecedor. Quem já tem o link deixa de poder entrar.",
  568. "created": "Reunião criada. O link está na ordem de serviço.",
  569. "removed": "Reunião removida",
  570. "failed": "Algo correu mal",
  571. "shareHint": "O cliente só recebe este link quando o enviar.",
  572. "shareHintNoChannel": "O cliente só recebe este link quando o enviar. Não há nenhum canal de mensagens configurado, por isso copie-o para uma mensagem.",
  573. "send": {
  574. "button": "Enviar ao cliente",
  575. "title": "Enviar o link da videochamada",
  576. "description": "Enviar o link de acesso a {name}.",
  577. "messageLabel": "Nota (opcional)",
  578. "messagePlaceholder": "O que o cliente deve saber antes da chamada...",
  579. "linkAlwaysIncluded": "O link de acesso é sempre acrescentado por baixo da sua nota.",
  580. "sms": "SMS",
  581. "email": "E-mail",
  582. "telegram": "Telegram",
  583. "noPhone": "(sem telefone)",
  584. "noEmail": "(sem e-mail)",
  585. "noTelegram": "(sem chat associado)",
  586. "notAvailable": "(não configurado)",
  587. "cancel": "Cancelar",
  588. "send": "Enviar",
  589. "sent": "Link da videochamada enviado",
  590. "partlySent": "Enviado por {sent}; não por {failed}",
  591. "failed": "Não foi possível enviar o link"
  592. },
  593. "notify": {
  594. "invitation": "Olá {name}, a sua videochamada sobre a viatura {vehicle} está marcada para {when}. Entre aqui: {url}",
  595. "invitationNoTime": "Olá {name}, aqui está o link da videochamada sobre a viatura {vehicle}: {url}",
  596. "joinLine": "Entre na videochamada aqui: {url}",
  597. "emailSubject": "Videochamada sobre a sua viatura {vehicle}"
  598. }
  599. },
  600. "modern": {
  601. "statusLabel": "Estado da ordem de serviço",
  602. "back": "Voltar",
  603. "backToClassic": "Voltar ao layout clássico",
  604. "openCustomer": "Abrir cliente",
  605. "serviceHistory": "Histórico de serviços",
  606. "changeVehicle": "Mudar de viatura",
  607. "vehicleChangesOnSave": "A ordem de serviço passa para esta viatura quando guardar.",
  608. "phone": "Telefone",
  609. "email": "E-mail",
  610. "notSet": "Não definido",
  611. "noCustomer": "Nenhum cliente nesta ordem de serviço.",
  612. "invoiceTitle": "Fatura e pagamento",
  613. "filesTitle": "Ficheiros e multimédia",
  614. "activity": {
  615. "title": "Atividade",
  616. "messageSent": "Mensagem enviada ao cliente",
  617. "linkShared": "Link da fatura partilhado",
  618. "linkViewed": "{count, plural, one {O cliente abriu o link} other {O cliente abriu o link # vezes}}",
  619. "paymentTaken": "Pagamento de {amount} registado",
  620. "statusSet": "Estado alterado para {status}"
  621. },
  622. "invite": {
  623. "title": "A página da ordem de serviço foi renovada.",
  624. "body": "Um layout mais claro com os mesmos campos. Pode voltar ao anterior a qualquer momento.",
  625. "try": "Experimentar agora",
  626. "dismiss": "Agora não",
  627. "menu": "Experimentar o novo layout"
  628. },
  629. "promised": "Prometida para {date}",
  630. "promisedOverdue": "Prometida para {date}, em atraso",
  631. "opened": "Aberta a {date}",
  632. "openedBy": "Aberta a {date} por {name}",
  633. "editTitle": "Editar título",
  634. "titleField": "Título",
  635. "media": {
  636. "tabs": {
  637. "all": "Tudo",
  638. "photos": "Fotografias",
  639. "diagnostics": "Diagnóstico",
  640. "dropoff": "Receção"
  641. },
  642. "summary": "{count, plural, one {# ficheiro} other {# ficheiros}} · o cliente só vê o que estiver marcado",
  643. "customerCanSee": "Visível para o cliente",
  644. "showToCustomer": "Mostrar ao cliente",
  645. "hideFromCustomer": "Ocultar do cliente",
  646. "add": {
  647. "all": "Adicionar ficheiros",
  648. "image": "Adicionar fotografias",
  649. "document": "Adicionar documentos",
  650. "diagnostic": "Adicionar relatório de diagnóstico",
  651. "video": "Adicionar vídeo",
  652. "dropoff": "Adicionar fotos de receção"
  653. },
  654. "dropHint": "Largue ficheiros aqui ou clique para procurar",
  655. "added": "{count, plural, one {# ficheiro adicionado} other {# ficheiros adicionados}}",
  656. "failed": "Não foi possível carregar {name}",
  657. "wrongType": "Tipo de ficheiro errado para este separador: {names}",
  658. "limit": "Limite atingido ({count}/{max})",
  659. "dropoffHint": "A viatura como chegou, com a hora de cada foto. Fica para a oficina e não é mostrada ao cliente, salvo se o escolher.",
  660. "onInvoice": "Incluir o estado da viatura nesta fatura",
  661. "onInvoiceHint": "Desligado a menos que o assinale aqui. Para imprimir em todas as faturas, ative Estado da viatura no designer de faturas.",
  662. "onInvoiceByDesign": "Ativado no designer de faturas para todas as faturas. Desmarque para omitir nesta.",
  663. "onInvoiceFailed": "Não foi possível guardar a escolha"
  664. },
  665. "moneyBar": {
  666. "total": "Total",
  667. "paid": "Pago",
  668. "balance": "Valor em dívida",
  669. "settled": "Pago na totalidade",
  670. "takePayment": "Receber pagamento",
  671. "preview": "Pré-visualizar fatura",
  672. "previewShort": "Pré-visualizar",
  673. "send": "Enviar ao cliente",
  674. "sendShort": "Enviar"
  675. },
  676. "vehicleInfo": {
  677. "more": "Mais informações",
  678. "less": "Menos informações",
  679. "copy": "Copiar {label}",
  680. "copied": "Copiado",
  681. "lastInspection": "Última inspeção periódica",
  682. "purchaseDate": "Data de compra",
  683. "purchasePrice": "Preço de compra",
  684. "overdue": "em atraso",
  685. "customerSince": "Cliente desde"
  686. },
  687. "moreStatuses": "Mais estados",
  688. "addStatus": "Adicionar estado",
  689. "fromInspection": "Da inspeção {name}, {date}",
  690. "fromQuote": "Do orçamento {ref}",
  691. "startInspection": "Iniciar inspeção"
  692. },
  693. "photoHandoff": {
  694. "button": "Adicionar pelo telemóvel",
  695. "dialogTitle": "Adicionar fotografias e documentos a partir de um telemóvel",
  696. "dialogBody": "Tire ou escolha fotografias, ou partilhe um PDF, em qualquer telemóvel. Tudo vai diretamente para esta ordem de trabalho.",
  697. "expires": "O código é válido até às {time}.",
  698. "waiting": "À espera de fotografias e documentos…",
  699. "received": "{count, plural, one {# ficheiro recebido} other {# ficheiros recebidos}}",
  700. "copyLink": "Copiar link",
  701. "linkCopied": "Link copiado",
  702. "failed": "Não foi possível criar o código. Tente novamente.",
  703. "done": "Concluído",
  704. "pageTitle": "Adicionar fotografias e documentos",
  705. "forJob": "Ordem de serviço {number}",
  706. "takePhoto": "Tirar fotografia",
  707. "choosePhotos": "Escolher fotografias",
  708. "hint": "Tudo vai diretamente para a ordem de trabalho. Tire as fotografias de que precisar.",
  709. "uploading": "A carregar…",
  710. "added": "Adicionada",
  711. "notAdded": "Não adicionada",
  712. "retry": "Tentar novamente",
  713. "addedCount": "{count, plural, one {# ficheiro adicionado} other {# ficheiros adicionados}}",
  714. "expiredTitle": "Este código expirou",
  715. "invalidTitle": "Este link não funciona",
  716. "errors": {
  717. "expired": "Peça um novo código ao balcão. Cada código é válido durante 30 minutos.",
  718. "invalid": "Leia novamente o código na ordem de serviço.",
  719. "limit": "Esta ordem de trabalho já tem todas as fotografias que comporta.",
  720. "type": "Aqui só é possível adicionar fotografias e documentos PDF.",
  721. "tooLarge": "Esse ficheiro é demasiado grande.",
  722. "failed": "A fotografia não foi adicionada. Verifique a ligação e tente novamente.",
  723. "codeLimit": "Este código já adicionou todas as fotografias que um código permite. Leia um novo código no balcão."
  724. },
  725. "concernHeading": "As fotografias ficam associadas a esta queixa",
  726. "howTitle": "Como funciona",
  727. "step1": "Aponte a câmara do telemóvel para o código e abra a ligação.",
  728. "step2": "Tire fotografias, ou escolha fotografias ou documentos PDF que já estão no telemóvel.",
  729. "step3": "Aparecem nesta ordem de trabalho à medida que chegam.",
  730. "noSignIn": "Não é preciso iniciar sessão no telemóvel.",
  731. "customerToo": "A equipa pode utilizá-lo, e o cliente também: deixe-o ler o código ou envie-lhe a ligação.",
  732. "scope": "A ligação só adiciona fotografias e documentos a esta ordem de trabalho e deixa de funcionar ao fim de 30 minutos.",
  733. "scanHint": "Leia com a câmara do telemóvel",
  734. "chooseDocument": "Carregar um documento",
  735. "privacy": "Só a oficina vê o que adiciona aqui.",
  736. "dropoff": {
  737. "button": "Fotos de receção",
  738. "dialogTitle": "Fotografe a viatura à chegada",
  739. "dialogBody": "Uma volta à viatura antes de começar: os quatro lados, o conta-quilómetros e os danos já existentes. É a sua prova se um risco for contestado.",
  740. "step2": "Siga a lista no telemóvel: uma foto de cada lado, o conta-quilómetros e os danos.",
  741. "scope": "A ligação só adiciona fotos de receção a esta ordem de reparação e deixa de funcionar ao fim de 30 minutos.",
  742. "pageTitle": "A viatura à chegada",
  743. "pageBody": "Tire cada foto por ordem. Adicione um grande plano dos danos já existentes.",
  744. "retake": "Repetir",
  745. "slots": {
  746. "front": "Frente",
  747. "right": "Lado direito",
  748. "rear": "Traseira",
  749. "left": "Lado esquerdo",
  750. "odometer": "Conta-quilómetros",
  751. "other": "Dano ou outro"
  752. }
  753. }
  754. },
  755. "payCode": {
  756. "button": "Código de pagamento",
  757. "title": "Pagar com leitura do código",
  758. "body": "O cliente lê o código com a câmara do telemóvel, a fatura abre e paga aí.",
  759. "sharesInvoice": "Mostrar o código partilha a fatura com o cliente, tal como enviá-la. A partir daí a fatura mantém os dados que tem agora.",
  760. "show": "Mostrar o código",
  761. "failed": "Não foi possível criar o código. Tente novamente.",
  762. "toPay": "A pagar",
  763. "scanHint": "Leia com a câmara do telemóvel",
  764. "copyLink": "Copiar ligação",
  765. "linkCopied": "Ligação copiada",
  766. "waiting": "A aguardar o pagamento. Atualiza sozinho.",
  767. "paid": "Pagamento recebido",
  768. "paidBody": "O pagamento está na ordem de reparação.",
  769. "done": "Concluir"
  770. },
  771. "customStatus": {
  772. "defaultMessage": "Olá {customer_name}, uma atualização sobre a sua {vehicle}: {status}. {company_name}"
  773. }
  774. }