settings.json 133 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767
  1. {
  2. "title": "Settings",
  3. "subtitle": "Manage your workshop, invoices, and preferences",
  4. "nav": {
  5. "categories": {
  6. "general": "General",
  7. "billing": "Billing & Documents",
  8. "communications": "Communications",
  9. "workshop": "Workshop",
  10. "integrations": "Apps & API",
  11. "system": "System"
  12. },
  13. "items": {
  14. "company": {
  15. "title": "Company",
  16. "description": "Business details & branding"
  17. },
  18. "subscription": {
  19. "title": "Subscription",
  20. "description": "Plan & billing"
  21. },
  22. "account": {
  23. "title": "Account",
  24. "description": "Name, email & password"
  25. },
  26. "team": {
  27. "title": "Team",
  28. "description": "Members & roles"
  29. },
  30. "invoice": {
  31. "title": "Invoice & Quotes",
  32. "description": "Invoice settings, layout & custom fields"
  33. },
  34. "templates": {
  35. "title": "Templates",
  36. "description": "Visual style, colors & fonts"
  37. },
  38. "payment": {
  39. "title": "Payment",
  40. "description": "Payment terms & accounts"
  41. },
  42. "tax": {
  43. "title": "Tax",
  44. "description": "Tax rate & defaults"
  45. },
  46. "warranty": {
  47. "title": "Warranty",
  48. "description": "Default warranty on quotes & invoices"
  49. },
  50. "currency": {
  51. "title": "Currency",
  52. "description": "Currency & tax defaults"
  53. },
  54. "localization": {
  55. "title": "Localization",
  56. "description": "Language, currency, date & time"
  57. },
  58. "customFields": {
  59. "title": "Custom Fields",
  60. "description": "Define custom data fields"
  61. },
  62. "email": {
  63. "title": "Email",
  64. "description": "Email provider & sending"
  65. },
  66. "sms": {
  67. "title": "SMS",
  68. "description": "SMS provider & messaging"
  69. },
  70. "telegram": {
  71. "title": "Telegram",
  72. "description": "Telegram bot & messaging"
  73. },
  74. "customerPortal": {
  75. "title": "Customer Portal",
  76. "description": "Customer self-service portal"
  77. },
  78. "workshop": {
  79. "title": "Workshop",
  80. "description": "Technician & labor defaults"
  81. },
  82. "laborPresets": {
  83. "title": "Labor Presets",
  84. "description": "Predefined labor packages"
  85. },
  86. "maintenance": {
  87. "title": "Maintenance",
  88. "description": "Predicted service intervals"
  89. },
  90. "ai": {
  91. "title": "AI",
  92. "description": "AI provider & features"
  93. },
  94. "reportSchedule": {
  95. "title": "Report Schedule",
  96. "description": "Automated report delivery"
  97. },
  98. "integrations": {
  99. "title": "Integrations",
  100. "description": "Calendars, video calls and connected services"
  101. },
  102. "webhooks": {
  103. "title": "Webhooks",
  104. "description": "Real-time event notifications"
  105. },
  106. "appearance": {
  107. "title": "Appearance",
  108. "description": "Theme & display"
  109. },
  110. "data": {
  111. "title": "Data",
  112. "description": "Export & import backup"
  113. },
  114. "install": {
  115. "title": "Install app",
  116. "description": "Add Torqvoice to this device"
  117. },
  118. "license": {
  119. "title": "License",
  120. "description": "White-label license"
  121. },
  122. "about": {
  123. "title": "About",
  124. "description": "Version & info"
  125. },
  126. "alerts": {
  127. "title": "Alerts",
  128. "description": "Get told when parts need reordering"
  129. },
  130. "support": {
  131. "title": "Support",
  132. "description": "Contact support and manage the support button"
  133. },
  134. "tireHotel": {
  135. "title": "Tire hotel",
  136. "description": "Seasonal tire storage"
  137. },
  138. "inspectionReminders": {
  139. "title": "Inspection reminders",
  140. "description": "Booking link, duration and lead time"
  141. },
  142. "emailTemplates": {
  143. "title": "Email templates",
  144. "description": "What your invoice, quote and report emails say"
  145. },
  146. "workOrderStatuses": {
  147. "title": "Work order statuses",
  148. "description": "Your own steps, and who gets told"
  149. }
  150. },
  151. "pro": "PRO",
  152. "new": "New"
  153. },
  154. "readOnly": {
  155. "banner": "You have view-only access to settings. Contact an admin to make changes."
  156. },
  157. "featureLocked": {
  158. "requiresPro": "Subscription required",
  159. "upgradePlan": "View plans",
  160. "activateLicense": "Activate License",
  161. "requiresLicense": "White-label licence required",
  162. "previewHint": "You are looking at a preview. Everything on this page unlocks with a subscription."
  163. },
  164. "company": {
  165. "logoTitle": "Company Logo",
  166. "logoAlt": "Company logo",
  167. "upload": "Upload",
  168. "remove": "Remove",
  169. "logoHint": "JPG, PNG, WebP, SVG — max 2MB",
  170. "uploadingLogo": "Uploading logo...",
  171. "logoUpdated": "Logo updated",
  172. "failedUploadLogo": "Failed to upload logo",
  173. "detailsTitle": "Company Details",
  174. "shopName": "Company / Shop Name",
  175. "shopNamePlaceholder": "Joe's Auto Repair",
  176. "orgNumber": "Organization Number",
  177. "orgNumberPlaceholder": "123 456 789",
  178. "orgNumberLabel": "Label for Organization number",
  179. "orgNumberLabelPlaceholder": "Org. Number",
  180. "orgNumberLabelHint": "Printed next to the number on invoices and quotes. Leave empty for the default in your language, or write what it is called where you are, such as ABN, VAT no. or CVR.",
  181. "phone": "Phone",
  182. "phonePlaceholder": "(555) 123-4567",
  183. "email": "Email",
  184. "emailPlaceholder": "service@example.com",
  185. "address": "Address",
  186. "slogan": "Slogan",
  187. "sloganPlaceholder": "Independent service and repair, every make",
  188. "sloganHint": "One line under your name on invoices and quotes.",
  189. "addressPlaceholder": "123 Main Street\nSuite 100\nCity, State 12345",
  190. "saveCompany": "Save Company Details",
  191. "addNewCompany": "Add New Company",
  192. "companyName": "Company Name",
  193. "companyNamePlaceholder": "e.g. Joe's Auto Repair",
  194. "cancel": "Cancel",
  195. "createCompany": "Create Company",
  196. "settingsSaved": "Company settings saved",
  197. "failedSave": "Failed to save settings",
  198. "companyCreated": "Company created successfully",
  199. "serviceType": "Service Type",
  200. "serviceTypeDescription": "Select the type of service your workshop provides. This changes field labels throughout the application.",
  201. "automotive": "Automotive",
  202. "automotiveDescription": "Cars, trucks, and other road vehicles",
  203. "marineService": "Marine",
  204. "marineServiceDescription": "Boats, yachts, and marine vessels"
  205. },
  206. "account": {
  207. "devicesTitle": "Signed-in devices",
  208. "devicesDescription": "Every browser and phone with an open session on your account.",
  209. "thisDevice": "This device",
  210. "signedInAt": "Signed in {date}",
  211. "lastActiveAt": "Last active {date}",
  212. "signOutDevice": "Sign out",
  213. "signOutOthers": "Sign out other devices",
  214. "deviceSignedOut": "Device signed out",
  215. "othersSignedOut": "Other devices signed out",
  216. "failedSignOutDevice": "Could not sign out that device",
  217. "profileTitle": "Profile",
  218. "profileDescription": "Update your display name and email address.",
  219. "emailVerified": "Verified",
  220. "emailNotVerified": "Not verified",
  221. "sendVerificationEmail": "Send verification email",
  222. "verificationEmailSent": "Verification email sent. Check your inbox.",
  223. "verificationEmailFailed": "Failed to send verification email",
  224. "resendCooldown": "Resend in {seconds}s",
  225. "emailChangeSent": "A confirmation link has been sent to your new email address. Your email will be updated once you click the link.",
  226. "name": "Name",
  227. "namePlaceholder": "Your name",
  228. "emailLabel": "Email",
  229. "emailPlaceholder": "Your email",
  230. "saveProfile": "Save Profile",
  231. "profileUpdated": "Profile updated",
  232. "failedUpdateProfile": "Failed to update profile",
  233. "failedUpdateEmail": "Failed to update email",
  234. "changePasswordTitle": "Change Password",
  235. "changePasswordDescription": "Enter your current password and choose a new one.",
  236. "currentPassword": "Current Password",
  237. "newPassword": "New Password",
  238. "confirmNewPassword": "Confirm New Password",
  239. "changePassword": "Change Password",
  240. "passwordChanged": "Password changed",
  241. "passwordsNoMatch": "Passwords do not match",
  242. "passwordMinLength": "Password must be at least 8 characters",
  243. "failedChangePassword": "Failed to change password",
  244. "twoFactorTitle": "Two-Factor Authentication",
  245. "twoFactorEnabled": "Two-factor authentication is enabled",
  246. "twoFactorDisablePrompt": "Enter your password to disable two-factor authentication.",
  247. "twoFactorEnablePrompt": "Add an extra layer of security to your account by enabling two-factor authentication with an authenticator app.",
  248. "password": "Password",
  249. "enterPassword": "Enter your password",
  250. "disable2FA": "Disable 2FA",
  251. "enable2FA": "Enable 2FA",
  252. "twoFactorDisabled": "Two-factor authentication disabled",
  253. "failedEnable2FA": "Failed to enable 2FA",
  254. "failedDisable2FA": "Failed to disable 2FA",
  255. "enterPasswordError": "Please enter your password",
  256. "setupDialogTitle": "Enable Two-Factor Authentication",
  257. "setupDialogDescription": "Enter your password to begin setting up 2FA with an authenticator app.",
  258. "continue": "Continue",
  259. "scanQRTitle": "Scan QR Code",
  260. "scanQRDescription": "Scan this QR code with your authenticator app (Google Authenticator, Authy, etc.)",
  261. "verifyCodeTitle": "Verify Code",
  262. "verifyCodeDescription": "Enter the 6-digit code from your authenticator app to verify it's set up correctly.",
  263. "authCode": "Authentication Code",
  264. "authCodePlaceholder": "000000",
  265. "back": "Back",
  266. "verify": "Verify",
  267. "enterCodeError": "Please enter the code from your authenticator app",
  268. "invalidCode": "Invalid code. Please try again.",
  269. "verificationFailed": "Verification failed",
  270. "backupCodesTitle": "Save Backup Codes",
  271. "backupCodesDescription": "Save these codes in a safe place. You can use them to sign in if you lose access to your authenticator app. Each code can only be used once.",
  272. "copyCodes": "Copy Codes",
  273. "copied": "Copied",
  274. "backupCodesCopied": "Backup codes copied to clipboard",
  275. "savedBackupCodes": "I've saved my backup codes",
  276. "twoFactorEnabledSuccess": "Two-factor authentication enabled",
  277. "dangerZone": "Danger Zone",
  278. "deleteContentTitle": "Delete Content",
  279. "deleteContentDescription": "Selectively delete organization data such as vehicles, customers, quotes, or inventory. Your account and settings will remain intact.",
  280. "deleteContentButton": "Delete Content",
  281. "deleteAccountTitle": "Delete Account",
  282. "deleteAccountDescription": "Permanently delete your account and all associated data including vehicles, service records, work orders, invoices, customers, files, and payments. This action cannot be undone.",
  283. "deleteAccountButton": "Delete Account",
  284. "deleteAccountDialogTitle": "Delete Account",
  285. "deleteAccountDialogDescription": "This will permanently delete your account and all data associated with it. This action is irreversible. All your vehicles, service records, work orders, quotes, customers, files, and payment history will be permanently removed.",
  286. "deleteAccountConfirmPhrase": "delete me",
  287. "deleteAccountConfirmPrompt": "Type <bold>delete me</bold> to confirm",
  288. "permanentlyDelete": "Permanently Delete",
  289. "deleting": "Deleting...",
  290. "failedDeleteAccount": "Failed to delete account",
  291. "deleteContentDialogTitle": "Delete Content",
  292. "deleteContentDialogDescription": "Select the content you want to permanently delete. This action cannot be undone.",
  293. "contentVehicles": "Vehicles",
  294. "contentVehiclesDescription": "All vehicles and their service records, notes, reminders, fuel logs, and recurring invoices",
  295. "contentCustomers": "Customers",
  296. "contentCustomersDescription": "All customer records. Vehicles linked to deleted customers will be unlinked.",
  297. "contentQuotes": "Quotes",
  298. "contentQuotesDescription": "All quotes and their line items",
  299. "contentInventory": "Inventory",
  300. "contentInventoryDescription": "All inventory parts and their images",
  301. "contentInspections": "Inspections",
  302. "contentInspectionsDescription": "All vehicle inspections and their results",
  303. "contentTechnicians": "Technicians",
  304. "contentTechniciansDescription": "All technician profiles. Linked records will be unlinked.",
  305. "contentInspectionTemplates": "Inspection checklists",
  306. "contentInspectionTemplatesDescription": "All inspection checklists and their sections. Delete inspections first.",
  307. "contentNotifications": "Notifications",
  308. "contentNotificationsDescription": "All system notifications",
  309. "contentSmsMessages": "SMS Messages",
  310. "contentSmsMessagesDescription": "All sent and received SMS messages",
  311. "contentCustomFields": "Custom Fields",
  312. "contentCustomFieldsDescription": "All custom field definitions and their values",
  313. "deleteContentConfirmPhrase": "delete my data",
  314. "deleteContentConfirmPrompt": "Type <bold>delete my data</bold> to confirm",
  315. "deleteSelected": "Delete {count} selected",
  316. "contentDeleted": "Selected content has been permanently deleted",
  317. "failedDeleteContent": "Failed to delete content",
  318. "passkey": {
  319. "title": "Passkeys",
  320. "description": "Sign in with biometrics or a security key instead of a password.",
  321. "noPasskeys": "No passkeys registered yet.",
  322. "unnamed": "Unnamed passkey",
  323. "singleDevice": "This device only",
  324. "multiDevice": "Synced across devices",
  325. "register": "Register Passkey",
  326. "registering": "Registering...",
  327. "registerSuccess": "Passkey registered successfully",
  328. "registerFailed": "Failed to register passkey",
  329. "delete": "Delete",
  330. "deleteSuccess": "Passkey deleted",
  331. "deleteFailed": "Failed to delete passkey",
  332. "rename": "Rename Passkey",
  333. "renameFailed": "Failed to rename passkey",
  334. "nameLabel": "Name",
  335. "namePlaceholder": "e.g. MacBook Pro, iPhone",
  336. "cancel": "Cancel",
  337. "save": "Save",
  338. "confirmDeleteTitle": "Delete Passkey",
  339. "confirmDelete": "Are you sure you want to delete this passkey? You won't be able to sign in with it anymore."
  340. },
  341. "cancel": "Cancel",
  342. "deleteWorkshopTitle": "Delete Workshop",
  343. "deleteWorkshopDescription": "Permanently delete this workshop and all of its data: customers, vehicles, work orders, invoices, inventory and uploaded files. Team members lose access. This cannot be undone.",
  344. "deleteWorkshopButton": "Delete Workshop",
  345. "deleteWorkshopDialogTitle": "Delete this workshop?",
  346. "deleteWorkshopDialogDescription": "This permanently deletes the workshop and everything in it. This action cannot be undone.",
  347. "deleteWorkshopConfirmPrompt": "Type <bold>{name}</bold> to confirm.",
  348. "deleteWorkshopSuccess": "Workshop deleted",
  349. "deleteWorkshopFailed": "Failed to delete the workshop",
  350. "deleteAccountMoved": "Want to delete your account?",
  351. "deleteAccountMovedLink": "You can do that in Data settings.",
  352. "signatureTitle": "Signature",
  353. "signatureDescription": "Printed on the invoices, quotes and certificates you issue for this workshop.",
  354. "signatureDraw": "Draw",
  355. "signatureUpload": "Upload",
  356. "signatureDrawHint": "Sign here",
  357. "signatureUploadHint": "Choose a photo or scan of your signature",
  358. "signatureDrawTip": "Use a finger, a stylus or the mouse.",
  359. "signatureUploadTip": "Sign on white paper and take a photo. The paper is removed and only the ink is kept.",
  360. "signatureChooseFile": "Choose image",
  361. "signatureClear": "Clear",
  362. "signatureSave": "Save signature",
  363. "signatureCancel": "Cancel",
  364. "signatureReplace": "Replace",
  365. "signatureRemove": "Remove",
  366. "signatureSaved": "Signature saved",
  367. "signatureRemoved": "Signature removed. Documents already issued keep theirs.",
  368. "signatureSaveFailed": "Could not save the signature",
  369. "signatureEmpty": "Draw or upload a signature first",
  370. "signatureNotImage": "That file is not an image",
  371. "signatureNoInk": "No signature found in that image. Try a darker pen on white paper.",
  372. "signatureCanvasLabel": "Signature pad",
  373. "signatureDesignerHint": "It appears where a design has the Signature section switched on. Turn it on in the <link>document designer</link>."
  374. },
  375. "team": {
  376. "title": "Team",
  377. "noOrgDescription": "Create a team to share data with other users.",
  378. "orgDescription": "Manage your organization members and their roles.",
  379. "createOrg": "Create Organization",
  380. "createOrgDescription": "Create an organization to invite team members. You will be the owner.",
  381. "orgName": "Organization Name",
  382. "orgNamePlaceholder": "My Workshop",
  383. "create": "Create",
  384. "orgCreated": "Organization created",
  385. "failedCreateOrg": "Failed to create organization",
  386. "memberCount": "{count} member",
  387. "memberCountPlural": "{count} members",
  388. "admin": "Admin",
  389. "member": "Member",
  390. "inviteByEmail": "Invite by Email",
  391. "inviteEmailPlaceholder": "user@example.com",
  392. "invite": "Invite",
  393. "invited": "Member invited successfully.",
  394. "userNotFoundTitle": "User Not Found",
  395. "userNotFoundDescription": "No account found for \"{email}\". Send them an invitation email to sign up and join your team?",
  396. "sendInvitation": "Send Invitation",
  397. "invitationSentTitle": "Invitation Sent",
  398. "invitationSentDescription": "An invitation email has been sent to {email}.",
  399. "failedInvite": "Failed to invite member",
  400. "failedSendInvitation": "Failed to send invitation",
  401. "pendingInvitations": "Pending Invitations",
  402. "invitedAs": "Invited as {role}",
  403. "resendInvitation": "Send the invitation again",
  404. "invitationResent": "Invitation sent again to {email}",
  405. "failedResendInvitation": "Could not send the invitation again",
  406. "expires": "Expires {date}",
  407. "pending": "Pending",
  408. "cancelInvitation": "Cancel Invitation",
  409. "cancelInvitationDescription": "Cancel the invitation to {email}? They will no longer be able to use this link to join.",
  410. "invitationCancelled": "Invitation cancelled",
  411. "failedCancelInvitation": "Failed to cancel invitation",
  412. "customRoles": "Custom Roles",
  413. "newRole": "New Role",
  414. "roleName": "Role Name",
  415. "roleNamePlaceholder": "e.g. Technician",
  416. "fullAdminAccess": "Full admin access (bypasses all permission checks)",
  417. "permissions": "Permissions",
  418. "createRole": "Create Role",
  419. "updateRole": "Update Role",
  420. "roleCreated": "Role created",
  421. "roleUpdated": "Role updated",
  422. "failedSaveRole": "Failed to save role",
  423. "deleteRole": "Delete Role",
  424. "deleteRoleDescription": "Delete the \"{name}\" role? Members with this role will lose their custom permissions.",
  425. "roleDeleted": "Role deleted",
  426. "failedDeleteRole": "Failed to delete role",
  427. "fullAccess": "Full access",
  428. "permissionCount": "{count} permission",
  429. "permissionCountPlural": "{count} permissions",
  430. "noCustomRoles": "No custom roles yet. Create one to define granular permissions for team members.",
  431. "presetAll": "All",
  432. "presetViewOnly": "View Only",
  433. "presetWriteAll": "Read & Write",
  434. "presetNone": "None",
  435. "builtInRoles": "Built-in Roles",
  436. "ownerLabel": "Owner",
  437. "ownerDescription": "Full access. Can manage members, change roles, and delete the organization.",
  438. "adminLabel": "Admin",
  439. "adminDescription": "Can invite/remove members and manage shared data.",
  440. "memberLabel": "Member",
  441. "memberDescription": "Permissions are set by the assigned role. Without a role, this member cannot do anything.",
  442. "roleAssigned": "Role updated",
  443. "failedAssignRole": "Failed to update role",
  444. "removeMemberTitle": "Remove Member",
  445. "removeMemberDescription": "Remove {name} from the team? They will lose access to shared data.",
  446. "removeButton": "Remove",
  447. "memberRemoved": "Member removed",
  448. "failedRemoveMember": "Failed to remove member",
  449. "memberRoleUpdated": "Member role updated",
  450. "failedUpdateRole": "Failed to update role",
  451. "removeMember": "Remove member",
  452. "cancelInvite": "Cancel invitation",
  453. "editRole": "Edit role",
  454. "technician": "Technician",
  455. "technicianHint": "Can be assigned jobs and use the technician app",
  456. "technicianFailed": "Could not change that",
  457. "setupApp": "Set up app",
  458. "setupAppTitle": "Set up the technician app",
  459. "setupAppInstruction": "Ask {name} to do this on their phone:",
  460. "setupAppOrType": "Or read them this code:",
  461. "setupAppExpiry": "Works once, and expires in {time}.",
  462. "setupAppExpired": "This code has expired. Close and start again.",
  463. "setupAppDone": "Done",
  464. "setupAppFailed": "Could not create a setup code",
  465. "setupPageTitle": "Set up the technician app",
  466. "setupPageBody": "Open Torqvoice Tech on this phone, tap Scan setup code, and point it at the same code again.",
  467. "setupPageCode": "Or type this code in the app",
  468. "setupPageOpenApp": "Open Torqvoice Tech",
  469. "setupPageExpiry": "This code works once and expires ten minutes after your workshop created it.",
  470. "setupAppStep1": "Install Torqvoice Tech",
  471. "setupAppStep2": "Open it and tap “Scan setup code”",
  472. "setupAppStep3": "Point the phone at this code",
  473. "setupAppNotCamera": "The phone's own camera app will not work. It has to be scanned from inside Torqvoice Tech.",
  474. "addTechnician": "Add a technician",
  475. "addTechnicianHint": "For a mechanic standing at the counter. No email, no waiting.",
  476. "technicianName": "Name",
  477. "technicianNamePlaceholder": "Their full name",
  478. "technicianPhone": "Mobile number",
  479. "technicianPhonePlaceholder": "The phone in their pocket",
  480. "addTechnicianSubmit": "Create",
  481. "addTechnicianNote": "They sign in with that number from then on. No password to remember, and nothing to type on the app’s first screen.",
  482. "addTechnicianDone": "{name} is set up. Show them the code.",
  483. "addTechnicianFailed": "Could not create that technician",
  484. "setupAppCopyLink": "Copy link to send them",
  485. "setupAppCopied": "Copied",
  486. "revokeTechnicianTitle": "Sign them out of the app?",
  487. "revokeTechnicianBody": "{name} loses access on their phone straight away, and any code they have stops working. Their finished work and hours stay exactly as they are.",
  488. "revokeTechnicianConfirm": "Sign them out",
  489. "addPerson": "Add",
  490. "addPersonTitle": "Add someone to the workshop",
  491. "addPersonWho": "These two are set up in different ways, so start by telling us which one this is.",
  492. "choiceTechnician": "A mechanic",
  493. "choiceTechnicianHint": "Works on the cars and uses Torqvoice on their phone. Easiest to do while they are standing here with you, and it takes about a minute.",
  494. "choiceMember": "Someone in the office",
  495. "choiceMemberHint": "Books cars in, orders parts and sends invoices, on a computer. You send them an email and they pick their own password.",
  496. "stepLabelWho": "Who",
  497. "stepLabelDetails": "Details",
  498. "stepLabelPhone": "Their phone",
  499. "techDetailsTitle": "Their name and mobile number",
  500. "techDetailsBlurb": "The mobile number is how they sign in from now on, so use the phone they actually carry. There is no password for them to remember or forget.",
  501. "techHandoffTitle": "Now get it onto their phone",
  502. "techHandoffBlurb": "This code joins their phone to your workshop. It works once, and only for the next ten minutes, so do it while they are here.",
  503. "memberDetailsTitle": "Their email address",
  504. "memberDetailsBlurb": "They get an email with a link. When they open it they choose their own password, and then they appear in the list above.",
  505. "roleHint": "Admins can change settings and add people. Everyone else does the day-to-day work.",
  506. "stepBack": "Back",
  507. "stepHandoffDone": "They have scanned it",
  508. "stepDoneTitle": "{name} is ready",
  509. "stepDoneBody": "They can open the app and see their jobs. Next time they sign in it is just their mobile number, no code needed.",
  510. "stepInvitedTitle": "Invitation sent to {email}",
  511. "stepInvitedBody": "They will show up in the list once they have opened the email and accepted. The link works for seven days.",
  512. "stepDoneAnother": "Add someone else",
  513. "clashTitle": "{name} already has that number",
  514. "clashBlurb": "Two people cannot share a mobile number, because it is what they sign in with. Which of these is it?",
  515. "clashSamePerson": "This is {name}",
  516. "clashSamePersonHint": "The same person coming back, or a name spelled differently. Their jobs and hours stay with them, and the name you just typed replaces the old one.",
  517. "clashTakeover": "No, this is {name}",
  518. "clashTakeoverHint": "A different person who now has that number. {name} keeps everything they did here but can no longer sign in, and you can give them a new number later.",
  519. "clashDifferentNumber": "Neither, let me change the number",
  520. "workshopCountry": "Which country is your workshop in?",
  521. "workshopCountryPlaceholder": "Choose a country",
  522. "workshopCountryHint": "Asked once. After this, mobile numbers can be typed the short way. You can change it later in <link>Localisation settings</link>.",
  523. "phonePreview": "Saved as",
  524. "stepScannedTitle": "{name} is in",
  525. "countrySearch": "Search countries",
  526. "countryNoMatch": "No country matches that",
  527. "choiceStandalone": "A name for the board only",
  528. "choiceStandaloneHint": "An apprentice, a contractor, anyone you schedule but who never signs in. No phone, no email, no account. You can give them one later.",
  529. "standaloneDetailsTitle": "Their name, and a colour",
  530. "standaloneDetailsBlurb": "This is all they get, and all they need. They appear on the work board and on jobs, and there is nothing for them to sign into.",
  531. "boardColour": "Colour on the board",
  532. "stepStandaloneTitle": "{name} is on the board",
  533. "stepStandaloneBody": "You can schedule them and put them on jobs straight away. If they ever need the app, add a mobile number to them from this list.",
  534. "boardOnly": "On the board only",
  535. "boardOnlyHint": "Scheduled and put on jobs, but they never sign in. Give them a mobile number when they need the app.",
  536. "boardOnlyNoAccount": "No account",
  537. "giveApp": "Give them the app",
  538. "giveAppTitle": "Give {name} the app",
  539. "giveAppBlurb": "A mobile number is all that is missing. They sign in with it from then on.",
  540. "giveAppKeepsHistory": "Everything already recorded against them stays where it is.",
  541. "giveAppSubmit": "Create their account",
  542. "role": "Role",
  543. "inviteMemberHint": "They get an email and choose their own password.",
  544. "removeBoardOnlyTitle": "Take {name} off the board?",
  545. "removeBoardOnlyBody": "{name} stops appearing on the work board and can no longer be put on jobs. Work already recorded against them, and the hours they clocked, stay exactly as they are.",
  546. "removeBoardOnlyDone": "{name} is off the board",
  547. "noRole": "No role",
  548. "worksOnJobs": "Works on jobs",
  549. "createDefaultRoles": "Create the standard roles",
  550. "defaultRolesCreated": "Standard roles created",
  551. "noRolesYet": "This workshop has no roles yet, so there is nothing to give them beyond Admin. Create the standard ones and narrow the permissions later.",
  552. "noRoleDescription": "No permissions at all. They can sign in and every screen will refuse them until you give them a role below.",
  553. "cannotUseApp": "Their role cannot work on jobs. Give them Technician, or a role with the same permissions, first.",
  554. "revokeTechnicianDone": "{name} has been signed out of the app",
  555. "noAccessTitle": "No access yet",
  556. "noAccessBody": "Your account is part of {workshop}, but it has not been given a role, so there is nothing here you can open yet. Ask an owner or an admin at your workshop to give you one.",
  557. "setupPageInstall": "Get it on Google Play"
  558. },
  559. "invoice": {
  560. "title": "Invoice & Quotes",
  561. "description": "Configure invoice settings, layout and custom fields.",
  562. "numberingTitle": "Numbering and dates",
  563. "numberingDescription": "How invoices and quotes are numbered, when invoices fall due and how long quotes stay valid.",
  564. "documentsTitle": "Documents",
  565. "documentsDescription": "What every invoice and quote carries with it.",
  566. "tabs": {
  567. "general": "General",
  568. "layout": "Layout",
  569. "customFields": "Custom Fields"
  570. },
  571. "invoiceNumberFormat": "Invoice Number Format",
  572. "invoiceNumberFormatHint": "Use <code>{year}</code> for the current year. Preview: <bold>{preview}</bold>",
  573. "quoteNumberFormat": "Quote Number Format",
  574. "quoteNumberFormatHint": "Use <code>{year}</code> for the current year. Preview: <bold>{preview}</bold>",
  575. "quoteValidDays": "Quote Validity (Days)",
  576. "quoteValidDaysHint": "New quotes get a valid until date this many days ahead. Set 0 to disable.",
  577. "sectionInvoices": "Invoices",
  578. "sectionQuotes": "Quotes",
  579. "nextInvoiceNumber": "Next Invoice Number",
  580. "nextInvoiceNumberPlaceholder": "e.g. 94",
  581. "nextInvoiceNumberHint": "Next invoice will use this number (e.g. {example})",
  582. "dueDays": "Due Days",
  583. "dueDaysHint": "Number of days until invoice is due",
  584. "visibilityTitle": "Visibility on Invoice",
  585. "companyLogo": "Company Logo",
  586. "companyLogoHint": "Display company logo in invoice header",
  587. "companyName": "Company Name",
  588. "companyNameHint": "Display company name text in invoice header",
  589. "bankAccount": "Bank Account",
  590. "bankAccountHint": "Show bank account / IBAN on invoice",
  591. "organizationNumber": "Organization Number",
  592. "organizationNumberHint": "Show org number on invoice header",
  593. "customFooter": "Custom Invoice Footer",
  594. "footerPlaceholder": "Thank you for your business!",
  595. "footerHint": "This text appears at the bottom of every invoice",
  596. "saveInvoice": "Save Invoice Settings",
  597. "saved": "Invoice settings saved",
  598. "layoutDescription": "Customize the order and visibility of sections in your invoices and quotes.",
  599. "layoutSaved": "Layout saved successfully",
  600. "preview": "Preview",
  601. "layoutDocInvoice": "Invoice",
  602. "layoutDocQuote": "Quote",
  603. "saveLayout": "Save Layout",
  604. "resetLayout": "Reset to Default",
  605. "layoutColorsHint": "Colors, fonts and the header style live in Templates.",
  606. "goToTemplates": "Open Templates",
  607. "lockTitle": "Locking finished documents",
  608. "lockDescription": "Stop an invoice or quote being changed once it is settled.",
  609. "lockWhatItDoes": "What it freezes: parts, labour, quantities, prices, discount, tax, the document number and its date. Deleting the document is blocked too.",
  610. "lockWhatItAllows": "What still works: recording payments, online card payments, status changes, sending and re-sending, attachments and internal notes. A locked invoice can always still be paid.",
  611. "lockUnlockNote": "Owners and admins can unlock a single document from its own page when something genuinely needs correcting. Every unlock is recorded in the audit log.",
  612. "lockDetailsShow": "What locking does",
  613. "lockDetailsHide": "Hide",
  614. "lockInvoicesLabel": "Lock invoices",
  615. "lockTriggerSent": "Once the invoice is sent",
  616. "lockTriggerPaid": "Once the invoice is paid in full",
  617. "lockTriggerSentHint": "Locks as soon as the invoice is emailed or a share link is created. Invoices sent before you turned this on are not affected.",
  618. "lockTriggerPaidHint": "Locks once the full amount is settled, or the invoice is marked paid by hand. A part-paid invoice stays editable.",
  619. "lockQuotesLabel": "Lock quotes",
  620. "quoteLockTriggerSent": "Once the quote is sent",
  621. "quoteLockTriggerAccepted": "Once the quote is accepted",
  622. "quoteLockTriggerSentHint": "Locks as soon as the quote goes to the customer. Choose this only if you never revise a quote during negotiation.",
  623. "quoteLockTriggerAcceptedHint": "Locks once the customer has accepted the quote, or it has been converted to a job. Sent quotes stay editable.",
  624. "freezeTitle": "Invoices from before locking",
  625. "freezeBody": "{count, plural, one {# invoice} other {# invoices}} reached a customer before this version could lock what an invoice prints. They still print from your current details, logo and design, so a change you make today reaches them too. Locking them keeps each one as it prints right now.",
  626. "freezeNone": "Every invoice that reached a customer is locked as it was sent.",
  627. "freezeButton": "Lock them with the current design",
  628. "freezeConfirmTitle": "Lock {count, plural, one {# invoice} other {# invoices}}?",
  629. "freezeConfirmBody": "Each one keeps the design, logo, workshop details, customer, vehicle and findings it prints with right now. This cannot be undone, and the invoices stay editable or locked for editing exactly as they are today.",
  630. "freezeProgress": "Locked {done} of {total}",
  631. "freezeDone": "{count, plural, one {# invoice} other {# invoices}} locked",
  632. "freezeFailed": "Could not lock the invoices",
  633. "reapplyTitle": "Design on invoices already sent",
  634. "reapplyDescription": "Put the design you use today on invoices that were locked to an older one.",
  635. "reapplyBody": "{count, plural, one {# invoice is} other {# invoices are}} locked to the design each was sent with, so a new design reaches only invoices sent from now on. Re-applying puts the design in use today on all of them. Only the look changes: the workshop details, customer, payment terms and totals each invoice was sent with stay as they are.",
  636. "reapplyWarning": "This cannot be undone. The design each invoice used before is not kept.",
  637. "reapplyButton": "Re-apply the current design",
  638. "reapplyConfirmTitle": "Re-apply the design to {count, plural, one {# invoice} other {# invoices}}?",
  639. "reapplyConfirmBody": "Every invoice that has already gone to a customer switches to the design in use now. Only the look changes: the details, terms and totals each invoice was sent with stay as they are. This cannot be undone, and the design each invoice used before cannot be restored.",
  640. "reapplyProgress": "Re-applied {done} of {total}",
  641. "reapplyDone": "{count, plural, one {# invoice} other {# invoices}} now use the current design",
  642. "reapplyFailed": "Could not re-apply the design",
  643. "sectionSending": "Sending",
  644. "attachPdfLabel": "Attach the PDF to emails",
  645. "attachPdfHint": "The default for every invoice, quote and inspection you send by email. On, the customer gets the PDF attached. Off, they get a link to the document instead, and the view counter tells you when they opened it, so you can chase the ones nobody has looked at. You can change it for a single send in the share dialog.",
  646. "shopFee": {
  647. "title": "Shop fee",
  648. "description": "A charge for shop supplies, such as rags, cleaners, lubricants and disposal, added to every new work order and quote as its own line.",
  649. "enabled": "Charge a shop fee",
  650. "enabledHint": "New work orders and quotes get the fee as a line. It can be removed from a single job. Existing jobs are not changed.",
  651. "defaultLabel": "Shop supplies",
  652. "label": "Name on the invoice",
  653. "appliesTo": "Applies to",
  654. "appliesToBoth": "Work orders and quotes",
  655. "appliesToWorkOrders": "Work orders only",
  656. "appliesToQuotes": "Quotes only",
  657. "mode": "How it is charged",
  658. "modeFlat": "Flat amount",
  659. "modePercent": "Percentage",
  660. "amount": "Amount",
  661. "amountHint": "The same amount on every job. It can be changed on a single job.",
  662. "percent": "Percentage (%)",
  663. "base": "Percentage of",
  664. "baseLabor": "Labor",
  665. "baseLaborParts": "Labor and parts",
  666. "cap": "Maximum fee",
  667. "capHint": "The fee never comes to more than this. Leave empty for no maximum.",
  668. "capPlaceholder": "No maximum"
  669. }
  670. },
  671. "layoutEditor": {
  672. "helpText": "Drag to reorder. Use the width toggle to place sections side-by-side. Consecutive half-width sections (L/R) will render in two columns.",
  673. "addField": "Add field",
  674. "custom": "custom",
  675. "full": "Full",
  676. "boxed": "Box",
  677. "plain": "Plain",
  678. "boxedHint": "Prints inside a panel",
  679. "plainHint": "Prints without a panel",
  680. "L": "L",
  681. "R": "R",
  682. "left": "left",
  683. "right": "right",
  684. "halfWidthHint": "Half width ({column}) — click to make full width",
  685. "fullWidthHint": "Full width — click to make half width (left)",
  686. "sections": {
  687. "header": "Header",
  688. "slogan": "Slogan",
  689. "customer": "Customer",
  690. "vehicle": "Vehicle",
  691. "service": "Service",
  692. "document_title": "Document Title",
  693. "items_table": "Items Table",
  694. "parts_table": "Parts Table",
  695. "labor_table": "Labor Table",
  696. "totals": "Totals",
  697. "notes": "Notes",
  698. "attached_documents": "Attached Documents",
  699. "diagnostic_notes": "Diagnostic Notes",
  700. "findings": "Observations",
  701. "warranty": "Warranty",
  702. "bank_account": "Bank Account",
  703. "footer": "Footer",
  704. "general": "General",
  705. "telegram_qr": "Telegram QR",
  706. "result": "Result",
  707. "test_details": "Test details",
  708. "defects": "Defects",
  709. "results_table": "All results",
  710. "inspection_photos": "Photos",
  711. "signature": "Signature",
  712. "job_details": "Job Details",
  713. "job_qr": "Open on Phone",
  714. "concerns": "Customer Concerns",
  715. "job_description": "Work Requested",
  716. "work_checklist": "Work Checklist",
  717. "condition_map": "Vehicle Condition"
  718. },
  719. "fields": {
  720. "customer_name": "Customer Name",
  721. "customer_company": "Customer Company",
  722. "customer_address": "Customer Address",
  723. "customer_email": "Customer Email",
  724. "customer_phone": "Customer Phone",
  725. "customer_tax_id": "Customer Tax ID",
  726. "vehicle_name": "Vehicle",
  727. "vin": "VIN",
  728. "license_plate": "License Plate",
  729. "mileage": "Mileage",
  730. "hsn_tsn": "HSN/TSN",
  731. "service_title": "Service Title",
  732. "service_type": "Service Type",
  733. "tech_name": "Technician",
  734. "logo": "Logo",
  735. "company_name": "Company Name",
  736. "company_slogan": "Slogan",
  737. "company_address": "Address",
  738. "company_phone": "Phone",
  739. "company_email": "Email",
  740. "company_org_number": "Organization Number",
  741. "bank_account": "Bank Account",
  742. "footer_note": "Footer Note",
  743. "org_number": "Organization Number",
  744. "payment_terms": "Payment Terms",
  745. "due_date": "Due Date",
  746. "title": "Title",
  747. "invoice_number": "Invoice No.",
  748. "customer_number": "Customer No.",
  749. "date": "Date",
  750. "portal_link": "Portal Link",
  751. "test_date": "Date of test",
  752. "test_location": "Place of test",
  753. "inspector": "Inspector",
  754. "certificate_number": "Certificate number",
  755. "vehicle_category": "Vehicle category",
  756. "odometer": "Odometer",
  757. "next_test_due": "Next test due",
  758. "defect_notes": "Notes",
  759. "defect_photos": "Photos",
  760. "passed_checks": "Passed checks",
  761. "not_applicable_checks": "Not applicable checks",
  762. "check_notes": "Notes column",
  763. "result_detail": "Explanation",
  764. "result_summary": "Counts per grade",
  765. "combined_table": "One table for all sections",
  766. "inspector_line": "Signature line",
  767. "inspector_name": "Signer's name",
  768. "date_line": "Date line",
  769. "signature_image": "Signature",
  770. "status": "Status",
  771. "technician": "Technician",
  772. "scheduled": "Scheduled",
  773. "promised": "Promised",
  774. "work_bay": "Work Bay",
  775. "customer_line": "Customer signature line",
  776. "legend": "Legend",
  777. "previous_marks": "Earlier marks",
  778. "blank_sheet": "Blank sheet to fill in by hand"
  779. },
  780. "presetsTitle": "Start from an arrangement",
  781. "presetsHint": "Replaces the arrangement below. Nothing is saved until you save.",
  782. "presets": {
  783. "classic": {
  784. "name": "Classic",
  785. "description": "Parts and labor in separate tables, details stacked on the left"
  786. },
  787. "letterhead": {
  788. "name": "Letterhead",
  789. "description": "Contact details along the bottom, title below the addresses"
  790. },
  791. "compact": {
  792. "name": "Compact",
  793. "description": "No panels, only the essentials"
  794. },
  795. "minimal": {
  796. "name": "Minimal",
  797. "description": "Bare type on white: no boxes, no bands, just rules and whitespace"
  798. },
  799. "itemized": {
  800. "name": "Itemized",
  801. "description": "One numbered item list with a unit column"
  802. },
  803. "detailed": {
  804. "name": "Detailed",
  805. "description": "Title up top, vehicle on its own, both tables and every optional block"
  806. },
  807. "certificate-regulator": {
  808. "name": "Regulatory",
  809. "description": "Plain and unbanded, in a serif: every check with its grade and note, the photos, a line to sign"
  810. },
  811. "certificate-standard": {
  812. "name": "Standard",
  813. "description": "The verdict under the title, the car and the test side by side, each defect with its note and photo, then the failed checks by section"
  814. },
  815. "certificate-customer": {
  816. "name": "Customer report",
  817. "description": "A banded sheet with the verdict centred and large, defects with photos, the walk-round photos, and a short table of the failed checks"
  818. },
  819. "certificate-compact": {
  820. "name": "Compact",
  821. "description": "One page for a fleet: small type, the verdict beside the title, the full results without notes, the photos, a line to sign"
  822. },
  823. "work-order-standard": {
  824. "name": "Standard",
  825. "description": "The fuller counter copy in your colour: the whole customer and vehicle, the service, the findings and the warranty beside the work and the prices"
  826. },
  827. "work-order-job-sheet": {
  828. "name": "Job sheet",
  829. "description": "For the board: the plate large, the facts of the job, the work as boxes to tick, a code to open it on a phone, and no prices"
  830. },
  831. "work-order-compact": {
  832. "name": "Compact",
  833. "description": "Black on white, one page: the customer's name and phone, the car, the job, the work with prices and both signatures. What every work order prints until you save a design"
  834. }
  835. },
  836. "style": {
  837. "documentTitle": "Whole sheet",
  838. "documentHint": "size, spacing, accent, banding",
  839. "textColor": "Text",
  840. "labelColor": "Heading",
  841. "backgroundColor": "Fill",
  842. "borderColor": "Border",
  843. "fontSize": "Size",
  844. "rowPadding": "Row height",
  845. "margin": "Margin",
  846. "accentColor": "Accent",
  847. "stripeColor": "Band",
  848. "stripes": "Banding",
  849. "fontFamily": "Font",
  850. "fontInherit": "Inherit"
  851. }
  852. },
  853. "templates": {
  854. "title": "Templates",
  855. "invoiceDescription": "Customize the appearance of your PDF invoices and quotes.",
  856. "inspectionsDescription": "The checklists your technicians work through during an inspection.",
  857. "smsDescription": "Customize the SMS messages sent to customers.",
  858. "tabs": {
  859. "invoice": "Invoice",
  860. "quotation": "Quotation",
  861. "workOrders": "Work order",
  862. "certificates": "Inspection certificate",
  863. "layout": "Layout",
  864. "conditionMap": "Condition map",
  865. "inspections": "Checklists"
  866. },
  867. "sections": {
  868. "documents": "Documents",
  869. "checklists": "Checklists",
  870. "messages": "Messages"
  871. },
  872. "presets": "Template Presets",
  873. "primaryColor": "Primary Color",
  874. "colors": "Colors",
  875. "textColor": "Text",
  876. "textColorHint": "The color of headings and body text",
  877. "companyTextColor": "Company name",
  878. "companyTextColorHint": "The color of the name on the letterhead",
  879. "frameBorderColor": "Frame line",
  880. "frameBorderColorHint": "The line where the frame meets the paper",
  881. "frameShadow": "Frame shadow",
  882. "frameShadowOn": "Shadow",
  883. "frameShadowOff": "Flat",
  884. "backgroundColor": "Background",
  885. "backgroundColorClear": "Clear",
  886. "backgroundColorHint": "Leave empty for white paper. A light tint prints as a tinted sheet.",
  887. "fontAndLayout": "Font & Layout",
  888. "fontFamily": "Font Family",
  889. "helveticaDefault": "Helvetica (Default)",
  890. "timesRoman": "Times Roman",
  891. "courier": "Courier",
  892. "headerStyle": "Header Style",
  893. "logoSize": "Logo Size",
  894. "standard": "Standard",
  895. "compact": "Compact",
  896. "modern": "Modern",
  897. "framed": "Framed",
  898. "letterheadMark": "Letterhead mark",
  899. "letterheadLogo": "Logo",
  900. "letterheadCompanyName": "Company name",
  901. "preview": "{name} Preview",
  902. "billTo": "Bill To",
  903. "preparedFor": "Prepared For",
  904. "vehicle": "Vehicle",
  905. "part": "Part",
  906. "qty": "Qty",
  907. "price": "Price",
  908. "total": "Total",
  909. "labor": "Labor",
  910. "hours": "Hours",
  911. "rate": "Rate",
  912. "subtotal": "Subtotal",
  913. "tax": "Tax ({rate}%)",
  914. "previewService": "Service",
  915. "previewNotes": "Notes",
  916. "previewDiagnosticNotes": "Diagnostic Notes",
  917. "previewDue": "Due: {date}",
  918. "previewAdditionalInfo": "Additional Information",
  919. "previewThankYou": "Thank you for your business",
  920. "saveInvoiceTemplate": "Save Invoice Template",
  921. "saveQuotationTemplate": "Save Quotation Template",
  922. "invoiceTemplateSaved": "Invoice template settings saved",
  923. "quotationTemplateSaved": "Quotation template settings saved",
  924. "failedSave": "Failed to save settings",
  925. "smsTemplates": "SMS Message Templates",
  926. "smsTemplatesDescription": "Customize the text messages sent to customers. Use variables like <code>'{companyName}'</code> to insert dynamic values.",
  927. "reset": "Reset",
  928. "invoiceReady": "Invoice Ready",
  929. "invoiceReadyDescription": "Sent when sharing an invoice with a customer.",
  930. "quoteReady": "Quote Ready",
  931. "quoteReadyDescription": "Sent when sharing a quote with a customer.",
  932. "inspectionReady": "Inspection Ready",
  933. "inspectionReadyDescription": "Sent when sharing an inspection report with a customer.",
  934. "statusInProgress": "Status: In Progress",
  935. "statusInProgressDescription": "Sent when a work order status changes to In Progress.",
  936. "statusWaitingParts": "Status: Waiting for Parts",
  937. "statusWaitingPartsDescription": "Sent when a work order status changes to Waiting for Parts.",
  938. "statusReady": "Status: Ready for Pickup",
  939. "statusReadyDescription": "Sent when a work order status changes to Ready.",
  940. "statusCompleted": "Status: Completed",
  941. "statusCompletedDescription": "Sent when a work order status changes to Completed.",
  942. "paymentReceived": "Payment Received",
  943. "paymentReceivedDescription": "Sent when a payment is recorded for an invoice.",
  944. "saveSmsTemplates": "Save SMS Templates",
  945. "smsTemplateSaved": "SMS template settings saved",
  946. "layoutTitle": "Invoice Layout",
  947. "layoutDescription": "Customize the order and visibility of sections in your invoices and quotes.",
  948. "layoutSaved": "Layout saved successfully",
  949. "layoutDocInvoice": "Invoice",
  950. "layoutDocQuote": "Quote",
  951. "smsDefaults": {
  952. "invoiceReady": "Your invoice is ready. View it here: {share_link}",
  953. "quoteReady": "Your quote is ready for review. View it here: {share_link}",
  954. "inspectionReady": "Your vehicle inspection report is ready. View it here: {share_link}",
  955. "statusInProgress": "Work has started on your vehicle. We'll keep you updated.",
  956. "statusWaitingParts": "Your vehicle is waiting for parts. We'll notify you when work resumes.",
  957. "statusReady": "Your vehicle is ready for pickup!",
  958. "statusCompleted": "Your service is complete. Thank you for your business!",
  959. "paymentReceived": "Payment of {amount} received for invoice {invoice_number}. Thank you!"
  960. },
  961. "colorPresets": {
  962. "amber": "Amber",
  963. "blue": "Blue",
  964. "emerald": "Emerald",
  965. "red": "Red",
  966. "purple": "Purple",
  967. "slate": "Slate",
  968. "rose": "Rose",
  969. "indigo": "Indigo"
  970. },
  971. "goToLayout": "Layout and sections",
  972. "openDesigner": "Open Template Designer",
  973. "designerIntro": "Pick a starting point, then open the designer to change anything.",
  974. "designerHint": "Colors, fonts, spacing and every section live in the designer.",
  975. "certificatesDescription": "Design the certificate a completed inspection prints and shares.",
  976. "workOrdersDescription": "Design the sheet a work order prints: what the customer signs and what the technician takes off the board.",
  977. "conditionMapDescription": "The kinds of mark your technicians draw on the condition map: their names, shapes and colours."
  978. },
  979. "payment": {
  980. "readMore": "Read More",
  981. "detailsTitle": "Payment Details",
  982. "detailsDescription": "Bank account and payment terms shown on invoices.",
  983. "bankAccount": "Bank Account (IBAN)",
  984. "bankAccountPlaceholder": "NO93 8601 1117 947",
  985. "bankAccountHint": "Your bank account number or IBAN for receiving payments",
  986. "paymentTerms": "Payment Terms",
  987. "paymentTermsPlaceholder": "Net 14 days",
  988. "paymentTermsHint": "Payment terms text displayed on invoices (e.g. \"Net 14 days\", \"Due on receipt\")",
  989. "onlinePayments": "Online Payments",
  990. "onlinePaymentsDescription": "Let customers pay invoices from the link you send them. Stripe, Vipps and PayPal are connected under Integrations, and can run side by side.",
  991. "onlinePaymentsHint": "When a customer pays, the vendor notifies Torqvoice and the invoice marks itself paid. Each vendor's page shows the notification URL it needs.",
  992. "offered": "On invoice links",
  993. "paused": "Connected, not offered",
  994. "termsOfSale": "Terms of sale",
  995. "termsOfSaleDescription": "What a customer agrees to when paying online. Vipps requires published terms; the invoice links to them either way.",
  996. "termsOfSaleText": "Terms text",
  997. "externalTermsUrl": "External Terms URL (optional)",
  998. "externalTermsUrlHint": "Link to an external page with your terms. If set, the invoice will link here instead of the built-in terms page.",
  999. "publicTermsUrl": "Public Terms URL",
  1000. "publicTermsUrlHint": "Share this URL with Vipps or link it from your website.",
  1001. "savePayment": "Save Payment Settings",
  1002. "saved": "Payment settings saved"
  1003. },
  1004. "tax": {
  1005. "title": "Tax",
  1006. "description": "Configure the tax rate applied to invoices, quotes, and work orders.",
  1007. "modeLabel": "Tax mode",
  1008. "modeHint": "Choose whether prices on line items are entered with tax already included (inclusive) or before tax (exclusive). Existing records keep the mode they were created with.",
  1009. "modeExclusive": "Exclusive",
  1010. "modeInclusive": "Inclusive",
  1011. "modeExclusiveExample": "Example: $100 + {rate}% tax = $100 + tax on top.",
  1012. "modeInclusiveExample": "Example: $100 entered already includes {rate}% tax — the tax portion is reverse-calculated.",
  1013. "lineItemsInclTaxLabel": "Show line prices including tax on invoices and quotes",
  1014. "lineItemsInclTaxHint": "Only changes what is printed on invoices and quotes, including their PDFs and the copies customers open from a link. On, each part and labour line and the subtotal are shown with tax included, and the tax row says how much of it is tax. Off shows prices before tax and adds the tax at the bottom. Work orders and the prices you enter are not affected.",
  1015. "labelLabel": "Tax label",
  1016. "labelHint": "Custom name shown on invoices and quotes (e.g. VAT, GST, MVA, MwSt.). Leave blank to use the localized default.",
  1017. "labelPlaceholder": "VAT",
  1018. "splitLabel": "Split the tax into several rates",
  1019. "splitHint": "For places that charge more than one tax on the same invoice, such as GST and QST in Québec or CGST and SGST in India. Each tax prints as its own line with its own registration number, and the tax report keeps them apart.",
  1020. "splitIncomplete": "Give every tax a name and a rate before saving.",
  1021. "presetLabel": "Start from a preset",
  1022. "presetPlaceholder": "Choose a region",
  1023. "presets": {
  1024. "caQc": "Québec, Canada (GST + QST)",
  1025. "caBc": "British Columbia, Canada (GST + PST)",
  1026. "caSk": "Saskatchewan, Canada (GST + PST)",
  1027. "caMb": "Manitoba, Canada (GST + RST)",
  1028. "inIntra": "India, same state (CGST + SGST at 18%)"
  1029. },
  1030. "componentName": "Name",
  1031. "componentNamePlaceholder": "GST",
  1032. "componentRate": "Rate",
  1033. "componentRegistration": "Registration number",
  1034. "componentRegistrationPlaceholder": "123456789 RT0001",
  1035. "componentRemove": "Remove this tax",
  1036. "registrationHint": "Printed on invoices under your business details. Leave it blank for a tax you are not registered for.",
  1037. "addComponent": "Add a tax",
  1038. "combinedRate": "Combined rate",
  1039. "combinedRateHint": "New work orders and quotes are taxed at the rates above added together.",
  1040. "convertInclusiveLabel": "Convert existing records to inclusive mode",
  1041. "convertInclusiveHint": "Scales every line item price upward by the tax rate so prices include tax. Customer-facing totals stay the same. Eligible: {serviceRecords} work orders, {quotes} quotes.",
  1042. "convertInclusiveButton": "Convert to inclusive",
  1043. "convertInclusiveConfirmTitle": "Convert existing records to inclusive mode?",
  1044. "convertInclusiveConfirmDescription": "This will rewrite line item prices on {serviceRecords} work orders and {quotes} quotes so they include tax. Customer-facing totals will not change, but the printed prices on past invoices will appear higher. This cannot be undone.",
  1045. "convertInclusiveConfirmLabel": "Convert records",
  1046. "convertInclusiveSuccess": "Converted {serviceRecords} work orders and {quotes} quotes to inclusive mode.",
  1047. "convertInclusiveFailed": "Failed to convert records to inclusive mode",
  1048. "convertInclusiveNoRecords": "No exclusive-mode records to convert.",
  1049. "convertExclusiveLabel": "Convert existing records to exclusive mode",
  1050. "convertExclusiveHint": "Scales every line item price downward by the tax rate so prices show pre-tax amounts. Customer-facing totals stay the same. Eligible: {serviceRecords} work orders, {quotes} quotes.",
  1051. "convertExclusiveButton": "Convert to exclusive",
  1052. "convertExclusiveConfirmTitle": "Convert existing records to exclusive mode?",
  1053. "convertExclusiveConfirmDescription": "This will rewrite line item prices on {serviceRecords} work orders and {quotes} quotes so they show pre-tax amounts. Customer-facing totals will not change, but the printed prices on past invoices will appear lower. This cannot be undone.",
  1054. "convertExclusiveConfirmLabel": "Convert records",
  1055. "convertExclusiveSuccess": "Converted {serviceRecords} work orders and {quotes} quotes to exclusive mode.",
  1056. "convertExclusiveFailed": "Failed to convert records to exclusive mode",
  1057. "convertExclusiveNoRecords": "No inclusive-mode records to convert."
  1058. },
  1059. "currency": {
  1060. "title": "Currency & Tax",
  1061. "description": "Default currency and tax rate used across invoices and service records.",
  1062. "currencyLabel": "Currency",
  1063. "searchCurrency": "Search currency...",
  1064. "noCurrencyFound": "No currency found.",
  1065. "previewLabel": "Preview: {value}",
  1066. "enableTax": "Enable Tax",
  1067. "enableTaxHint": "Show tax calculation on invoices and service records",
  1068. "defaultTaxRate": "Default Tax Rate (%)",
  1069. "defaultTaxRateHint": "Auto-populated when creating new service records",
  1070. "applyTaxToExistingLabel": "Apply tax to existing records",
  1071. "applyTaxToExistingHint": "Applies the default tax rate to existing work orders and quotes that don't have a tax rate set. Eligible: {serviceRecords} work orders, {quotes} quotes.",
  1072. "applyTaxToExistingButton": "Apply tax to existing records",
  1073. "applyTaxConfirmTitle": "Apply tax to existing records?",
  1074. "applyTaxConfirmDescription": "This will set the tax rate to {rate}% on {serviceRecords} work orders and {quotes} quotes that currently have no tax rate, and recalculate their totals. Records with a custom tax rate will not be changed. This cannot be undone.",
  1075. "applyTaxConfirmLabel": "Apply tax",
  1076. "applyTaxSuccess": "Updated {serviceRecords} work orders and {quotes} quotes.",
  1077. "applyTaxFailed": "Failed to apply tax to existing records",
  1078. "applyTaxNoRecords": "No records need the default tax rate applied.",
  1079. "saveSettings": "Save Settings",
  1080. "saved": "Settings saved",
  1081. "currencies": {
  1082. "USD": "US Dollar",
  1083. "EUR": "Euro",
  1084. "GBP": "British Pound",
  1085. "NOK": "Norwegian Krone",
  1086. "SEK": "Swedish Krona",
  1087. "DKK": "Danish Krone",
  1088. "CHF": "Swiss Franc",
  1089. "CAD": "Canadian Dollar",
  1090. "AUD": "Australian Dollar",
  1091. "NZD": "New Zealand Dollar",
  1092. "JPY": "Japanese Yen",
  1093. "CNY": "Chinese Yuan",
  1094. "INR": "Indian Rupee",
  1095. "BRL": "Brazilian Real",
  1096. "MXN": "Mexican Peso",
  1097. "PLN": "Polish Zloty",
  1098. "CZK": "Czech Koruna",
  1099. "HUF": "Hungarian Forint",
  1100. "TRY": "Turkish Lira",
  1101. "ZAR": "South African Rand",
  1102. "KRW": "South Korean Won",
  1103. "SGD": "Singapore Dollar",
  1104. "HKD": "Hong Kong Dollar",
  1105. "THB": "Thai Baht",
  1106. "ISK": "Icelandic Krona",
  1107. "RON": "Romanian Leu",
  1108. "ILS": "Israeli Shekel",
  1109. "PHP": "Philippine Peso",
  1110. "IDR": "Indonesian Rupiah",
  1111. "MYR": "Malaysian Ringgit",
  1112. "LKR": "Sri Lankan Rupee",
  1113. "AED": "UAE Dirham",
  1114. "SAR": "Saudi Riyal",
  1115. "RUB": "Russian Ruble",
  1116. "TWD": "Taiwan Dollar",
  1117. "VND": "Vietnamese Dong",
  1118. "PKR": "Pakistani Rupee",
  1119. "BDT": "Bangladeshi Taka",
  1120. "NPR": "Nepalese Rupee",
  1121. "BGN": "Bulgarian Lev",
  1122. "UAH": "Ukrainian Hryvnia",
  1123. "CLP": "Chilean Peso",
  1124. "COP": "Colombian Peso",
  1125. "ARS": "Argentine Peso",
  1126. "PEN": "Peruvian Sol",
  1127. "EGP": "Egyptian Pound",
  1128. "NGN": "Nigerian Naira",
  1129. "KES": "Kenyan Shilling",
  1130. "MAD": "Moroccan Dirham",
  1131. "DZD": "Algerian Dinar",
  1132. "GHS": "Ghanaian Cedi",
  1133. "QAR": "Qatari Riyal",
  1134. "KWD": "Kuwaiti Dinar",
  1135. "BHD": "Bahraini Dinar",
  1136. "OMR": "Omani Rial",
  1137. "JOD": "Jordanian Dinar"
  1138. },
  1139. "formatTitle": "Currency Format",
  1140. "formatSymbolName": "Symbol",
  1141. "formatCodeName": "Code",
  1142. "formatSymbolLabel": "Symbol: {value}",
  1143. "formatCodeLabel": "Code: {value}"
  1144. },
  1145. "localization": {
  1146. "languageTitle": "Language",
  1147. "languageDescription": "Choose the display language for the application.",
  1148. "language": "Language",
  1149. "forceCustomerLocale": "Force this language on customer-facing pages",
  1150. "forceCustomerLocaleHint": "When enabled, the customer portal and shared invoices, quotes and inspections will appear in your workshop's language regardless of the visitor's browser settings. When disabled, customer-facing pages follow the visitor's browser language.",
  1151. "defaultCountryCode": "Default country code",
  1152. "defaultCountryCodeHint": "Used when customers sign in to the portal by SMS — applied to phone numbers that don't include a country code (yours or theirs). Format: + followed by digits, e.g. +47.",
  1153. "defaultCountryCodeInvalid": "Enter a valid country code, e.g. +47, 47, or 0047.",
  1154. "saved": "Localization settings saved",
  1155. "saveSettings": "Save Settings"
  1156. },
  1157. "customFields": {
  1158. "title": "Custom Fields",
  1159. "description": "Define custom fields that appear on service records and quotes.",
  1160. "addField": "Add Field",
  1161. "filterAll": "All",
  1162. "serviceRecord": "Service Record",
  1163. "quote": "Quote",
  1164. "emptyState": "No custom fields defined yet. Click \"Add Field\" to create one.",
  1165. "required": "Required",
  1166. "inactive": "Inactive",
  1167. "editField": "Edit Field",
  1168. "newField": "New Custom Field",
  1169. "label": "Label",
  1170. "labelPlaceholder": "e.g. Warranty Expiry",
  1171. "fieldName": "Field Name (ID)",
  1172. "fieldNamePlaceholder": "warranty_expiry",
  1173. "fieldNameHint": "Lowercase letters, numbers, and underscores only.",
  1174. "fieldType": "Field Type",
  1175. "entityType": "Entity Type",
  1176. "fieldTypes": {
  1177. "text": "Text",
  1178. "number": "Number",
  1179. "date": "Date",
  1180. "select": "Select (Dropdown)",
  1181. "checkbox": "Checkbox",
  1182. "textarea": "Text Area"
  1183. },
  1184. "optionsLabel": "Options (comma-separated)",
  1185. "optionsPlaceholder": "Option 1, Option 2, Option 3",
  1186. "active": "Active",
  1187. "cancel": "Cancel",
  1188. "update": "Update",
  1189. "create": "Create",
  1190. "deleteTitle": "Delete Custom Field",
  1191. "deleteDescription": "This will permanently delete \"{label}\" and all its saved values. This cannot be undone.",
  1192. "fieldCreated": "Custom field created",
  1193. "fieldUpdated": "Custom field updated",
  1194. "fieldDeleted": "Custom field deleted",
  1195. "failedSave": "Failed to save field",
  1196. "failedDelete": "Failed to delete",
  1197. "edit": "Edit",
  1198. "delete": "Delete",
  1199. "unassigned": "Unassigned",
  1200. "defaultValue": "Default value",
  1201. "defaultValueHint": "Pre-filled on new records and printed when no value has been entered.",
  1202. "defaultValueNone": "None",
  1203. "defaultValueCheckedHint": "Checked by default",
  1204. "placement": "Placement on document",
  1205. "placementHidden": "Not printed",
  1206. "placementHint": "Which section of the invoice or quote this field prints in. In the designer you can also switch it on in more sections.",
  1207. "failedSavePlacement": "Failed to save field placement"
  1208. },
  1209. "workshop": {
  1210. "title": "Workshop Defaults",
  1211. "description": "Default values used when creating new service records.",
  1212. "defaultTechnician": "Default Technician Name",
  1213. "technicianPlaceholder": "Search technician...",
  1214. "failedCreateTech": "Failed to create technician",
  1215. "creating": "Creating...",
  1216. "createTechnician": "Create \"{name}\"",
  1217. "newTechPlaceholder": "Technician name",
  1218. "addTech": "Add",
  1219. "addNewTech": "+ Add New",
  1220. "defaultLaborRate": "Default Labor Rate (per hour)",
  1221. "laborRatePlaceholder": "75.00",
  1222. "partsMarkupTitle": "Parts Markup",
  1223. "partsMarkupDescription": "Markup added to the vendor cost when parts go on a job. Internal only. The customer sees the final price, never the cost or the markup.",
  1224. "defaultMarkupPercent": "Default Markup %",
  1225. "defaultMarkupPercentHint": "New manually-added parts pre-fill with this markup. Leave at 0 to enter prices manually.",
  1226. "markupAppliesToInventory": "Apply markup to inventory parts",
  1227. "markupAppliesToInventoryHint": "When enabled, parts picked from inventory also use cost + default markup (overrides the inventory sell price).",
  1228. "typeKeyTitle": "German type key (HSN/TSN)",
  1229. "typeKeyEnabled": "Record HSN/TSN on vehicles",
  1230. "typeKeyHint": "Adds the manufacturer and type key from the German registration certificate (fields 2.1 and 2.2) to vehicles. It shows on the vehicle, the work order and every printed document, and vehicles can be found by it in search. Turning it off hides it again and keeps what was entered.",
  1231. "unitsTitle": "Units",
  1232. "unitsDescription": "Choose between metric (km, liters) and imperial (miles, gallons) units.",
  1233. "unitSystem": "Unit System",
  1234. "metric": "Metric (km, liters)",
  1235. "imperial": "Imperial (miles, gallons)",
  1236. "distanceLabel": "Distance",
  1237. "volumeLabel": "Volume",
  1238. "kilometers": "kilometers (km)",
  1239. "liters": "liters (L)",
  1240. "miles": "miles (mi)",
  1241. "gallons": "gallons (gal)",
  1242. "defaultStockUnit": "Default stock unit",
  1243. "defaultStockUnitHint": "Pre-filled on new inventory parts. Each part can still use its own unit.",
  1244. "saveWorkshop": "Save Workshop Settings",
  1245. "saved": "Workshop settings saved",
  1246. "assignDialogTitle": "Assign to existing work orders?",
  1247. "assignDialogDescription": "Would you like to assign {name} to all current work orders that don't have a technician assigned?",
  1248. "assignDialogConfirm": "Yes, assign",
  1249. "assignDialogSkip": "No, skip",
  1250. "assignedUnassigned": "{count, plural, =0 {No unassigned work orders found} one {Assigned 1 work order} other {Assigned # work orders}}",
  1251. "assignFailed": "Failed to assign work orders",
  1252. "noTechnician": "None",
  1253. "weekStartDay": "Week Start Day",
  1254. "workDayStart": "Work Day Start",
  1255. "workDayEnd": "Work Day End",
  1256. "titleTemplateTitle": "Work Order Title",
  1257. "titleTemplateDescription": "What a new work order is called before anybody types a title. Build it from the tags below; every job opens with them filled in, and the title can still be changed on the job.",
  1258. "titleTemplate": "Title template",
  1259. "titleTemplatePlaceholder": "Leave empty to start every job as \"New Service Record\"",
  1260. "titleTemplateHint": "Click a tag to add it. A tag with nothing behind it, such as a car without a plate, is left out together with its separator.",
  1261. "titleTemplatePreview": "Example: {title}",
  1262. "titleTemplateUnknown": "Unknown tags are left out: {tags}",
  1263. "titleTemplateTags": {
  1264. "order_number": "Order number",
  1265. "license_plate": "License plate",
  1266. "customer_name": "Customer name",
  1267. "vehicle": "Vehicle (year, make, model)",
  1268. "make": "Make",
  1269. "model": "Model",
  1270. "year": "Year",
  1271. "vin": "VIN",
  1272. "technician": "Technician",
  1273. "date": "Date"
  1274. },
  1275. "weekDays": {
  1276. "0": "Sunday",
  1277. "1": "Monday",
  1278. "2": "Tuesday",
  1279. "3": "Wednesday",
  1280. "4": "Thursday",
  1281. "5": "Friday",
  1282. "6": "Saturday"
  1283. }
  1284. },
  1285. "maintenance": {
  1286. "title": "Predicted Maintenance",
  1287. "description": "Predict each vehicle's current mileage from its service history and surface vehicles that are due or approaching their next service.",
  1288. "enablePredicted": "Enable predicted maintenance",
  1289. "enablePredictedHint": "Show predictions on vehicle details and dashboard",
  1290. "serviceInterval": "Service interval ({unit})",
  1291. "serviceIntervalHint": "Distance between recommended services",
  1292. "approachingThreshold": "Approaching threshold ({unit})",
  1293. "approachingThresholdHint": "Show warning when within this distance of next service",
  1294. "saveMaintenance": "Save Maintenance Settings",
  1295. "saved": "Maintenance settings saved"
  1296. },
  1297. "warranty": {
  1298. "title": "Warranty",
  1299. "description": "Set what your quotes and invoices say about warranty. Every new document starts from this, and you can still change it on each one.",
  1300. "designHint": "Printed in the Warranty section of your invoice and quote design. If you have hidden that section under Templates, switch it back on. The Compact design leaves it out.",
  1301. "defaultStatus": "New quotes and work orders say",
  1302. "status": {
  1303. "none": "Nothing",
  1304. "included": "Warranty included",
  1305. "not_included": "No warranty"
  1306. },
  1307. "statusHint": {
  1308. "none": "Warranty is not mentioned until somebody fills it in on the document.",
  1309. "included": "New documents start with the period and terms below.",
  1310. "not_included": "New documents tell the customer that no workshop warranty is included."
  1311. },
  1312. "includedTitle": "When a warranty is included",
  1313. "includedHint": "The period and terms a document gets when it offers a warranty.",
  1314. "months": "Duration (months)",
  1315. "mileage": "Distance limit ({unit})",
  1316. "mileageHint": "Leave empty for no distance limit.",
  1317. "terms": "Warranty terms",
  1318. "termsPlaceholder": "e.g. 12 months on parts and labour. Wear parts are not covered.",
  1319. "termsHint": "Printed under the warranty on quotes and invoices.",
  1320. "notIncludedTitle": "When no warranty is included",
  1321. "notIncludedHint": "What the customer reads when a document says no warranty is included.",
  1322. "notIncludedText": "Statement",
  1323. "notIncludedPlaceholder": "e.g. No workshop warranty is offered on customer-supplied parts. Your statutory rights are not affected.",
  1324. "legalHint": "This is about your own workshop warranty. In many countries, including the EU and the UK, customers also have legal guarantee rights that cannot be excluded. Leave this empty and the document says that statutory rights are not affected.",
  1325. "applyTitle": "Use these defaults on",
  1326. "applyToQuotes": "New quotes",
  1327. "applyToQuotesHint": "The customer sees the warranty before accepting.",
  1328. "applyToWorkOrders": "New work orders",
  1329. "applyToWorkOrdersHint": "Printed on the invoice. A work order made from a quote keeps what the quote said.",
  1330. "save": "Save warranty settings",
  1331. "saved": "Warranty settings saved",
  1332. "saveFailed": "Could not save the warranty settings"
  1333. },
  1334. "appearance": {
  1335. "title": "Appearance",
  1336. "description": "Customize how Torqvoice looks and feels.",
  1337. "themeLabel": "Theme",
  1338. "themeHint": "Choose the color scheme for the app. The choice is saved on this device.",
  1339. "themes": {
  1340. "light": "Light",
  1341. "dark": "Dark",
  1342. "graphite": "Graphite",
  1343. "ocean": "Ocean",
  1344. "forest": "Forest",
  1345. "midnight": "Midnight",
  1346. "carbon": "Carbon",
  1347. "system": "System"
  1348. },
  1349. "dateTimeTitle": "Date & Time",
  1350. "dateTimeDescription": "Configure how dates and times are displayed across the application.",
  1351. "dateFormat": "Date Format",
  1352. "timeFormat": "Time Format",
  1353. "time12h": "12-hour (2:30 PM)",
  1354. "time24h": "24-hour (14:30)",
  1355. "timezone": "Timezone",
  1356. "timezoneAuto": "Auto-detect (browser)",
  1357. "searchTimezone": "Search timezone...",
  1358. "noTimezoneFound": "No timezone found.",
  1359. "timezoneHint": "When set to auto-detect, each user sees dates in their browser's timezone.",
  1360. "previewLabel": "Preview",
  1361. "dateLabel": "Date",
  1362. "dateTimeLabel": "Date & Time",
  1363. "saveSettings": "Save Settings",
  1364. "saved": "Settings saved",
  1365. "fontLabel": "Font",
  1366. "fontHint": "Choose the typefaces the app is set in. The choice is saved on this device.",
  1367. "fontSampleHeading": "Work order",
  1368. "fontSampleText": "Replace ignition coil and spark plugs",
  1369. "fonts": {
  1370. "default": {
  1371. "name": "Default",
  1372. "description": "Geist, clean and neutral."
  1373. },
  1374. "workshop": {
  1375. "name": "Workshop",
  1376. "description": "IBM Plex with condensed capital headings, like a job card."
  1377. },
  1378. "precise": {
  1379. "name": "Precise",
  1380. "description": "Inter and JetBrains Mono. Built for screens full of tables and figures."
  1381. },
  1382. "legible": {
  1383. "name": "Legible",
  1384. "description": "Atkinson Hyperlegible. 0 and O, 1 and l never look alike; easy to read from across the workshop."
  1385. }
  1386. }
  1387. },
  1388. "data": {
  1389. "title": "Data Management",
  1390. "description": "Bring data in from your old system, download a backup of everything, or restore one.",
  1391. "exportTitle": "Export Data",
  1392. "exportDescription": "Download your data as a zip file. Select which categories to include in the backup.",
  1393. "includeInBackup": "Include in backup:",
  1394. "selectAll": "Select All",
  1395. "deselectAll": "Deselect All",
  1396. "optSettings": "Settings",
  1397. "optSettingsDesc": "Workshop info, invoice config, payment providers",
  1398. "optCustomers": "Customers",
  1399. "optCustomersDesc": "Customer records and contact info",
  1400. "optVehicles": "Vehicles & Service Records",
  1401. "optVehiclesDesc": "Vehicles, notes, fuel logs, reminders, service records",
  1402. "optQuotes": "Quotes",
  1403. "optQuotesDesc": "Quotes with parts and labor",
  1404. "optInventory": "Inventory",
  1405. "optInventoryDesc": "Inventory parts and stock levels",
  1406. "optTechnicians": "Technicians",
  1407. "optTechniciansDesc": "Technician profiles and workboard assignments",
  1408. "optInspections": "Inspections",
  1409. "optInspectionsDesc": "Inspection checklists, inspections, and results",
  1410. "optAuditLogs": "Audit Logs",
  1411. "optAuditLogsDesc": "Activity and change history",
  1412. "optSmsMessages": "Messages",
  1413. "optSmsMessagesDesc": "Sent and received SMS, WhatsApp and Telegram messages",
  1414. "optScheduledMessages": "Scheduled Messages",
  1415. "optScheduledMessagesDesc": "Queued and repeating messages waiting to go out",
  1416. "optNotifications": "Notifications",
  1417. "optNotificationsDesc": "System notifications",
  1418. "optCustomFields": "Custom Fields",
  1419. "optCustomFieldsDesc": "Custom field definitions and values",
  1420. "optFiles": "Uploaded Files",
  1421. "optFilesDesc": "Images, service attachments, logo",
  1422. "filesWarning": "Includes uploaded files — backup may be larger",
  1423. "downloadBackup": "Download Backup",
  1424. "exportComplete": "Export Complete",
  1425. "exportCompleteMessage": "Your backup file has been downloaded.",
  1426. "exportFailed": "Export Failed",
  1427. "exportFailedMessage": "Could not export your data. Please try again.",
  1428. "importTitle": "Import Data",
  1429. "importWarning": "Importing will <bold>replace all existing data</bold> with the contents of the backup file. This action cannot be undone.",
  1430. "importFileHint": "Supports both .zip (v2) and .json (v1) backup files.",
  1431. "uploadRestore": "Upload & Restore",
  1432. "importComplete": "Import Complete",
  1433. "importCompleteMessage": "All data has been restored from the backup file.",
  1434. "importFailed": "Import Failed",
  1435. "importFromOther": "Import from Other Services",
  1436. "importFromOtherDescription": "Migrate your data from another platform. Select a service to get started.",
  1437. "lubelogTitle": "Import from LubeLog",
  1438. "lubelogExportSteps": "How to export your LubeLog data:",
  1439. "lubelogStep1": "Open your LubeLog instance",
  1440. "lubelogStep2": "Go to <bold>Settings</bold>",
  1441. "lubelogStep3": "Click <bold>Make Backup</bold> to download a zip file",
  1442. "lubelogStep4": "Upload the downloaded zip file below",
  1443. "lubelogAddNote": "This will <bold>add data alongside</bold> your existing records — nothing will be deleted.",
  1444. "lubelogImported": "What will be imported:",
  1445. "lubelogVehicles": "Vehicles",
  1446. "lubelogServiceRecords": "Service records with attachments",
  1447. "lubelogNotes": "Notes",
  1448. "lubelogFileHint": "Files up to 200MB supported.",
  1449. "lubelogImportComplete": "LubeLog Import Complete",
  1450. "cancel": "Cancel",
  1451. "import": "Import",
  1452. "invoiceNinjaTitle": "Import from Invoice Ninja",
  1453. "invoiceNinjaExportSteps": "How to export your Invoice Ninja data:",
  1454. "invoiceNinjaStep1": "Open your Invoice Ninja instance",
  1455. "invoiceNinjaStep2": "Go to <bold>Settings > Import | Export</bold>",
  1456. "invoiceNinjaStep3": "Click <bold>Export</bold> to download a zip file",
  1457. "invoiceNinjaStep4": "Upload the downloaded zip file below",
  1458. "invoiceNinjaAddNote": "This will <bold>add data alongside</bold> your existing records — nothing will be deleted.",
  1459. "invoiceNinjaImported": "What will be imported:",
  1460. "invoiceNinjaCustomers": "Customers (clients)",
  1461. "invoiceNinjaProducts": "Products (inventory)",
  1462. "invoiceNinjaInvoices": "Invoices as service records (parts & labor)",
  1463. "invoiceNinjaDocuments": "Documents & attachments",
  1464. "invoiceNinjaPayments": "Payments",
  1465. "invoiceNinjaFileHint": "Upload an Invoice Ninja zip export file. Files up to 200MB supported.",
  1466. "invoiceNinjaImportComplete": "Invoice Ninja Import Complete",
  1467. "backupStatus": {
  1468. "title": "Data Protection",
  1469. "description": "We take your data seriously. All of your organization's data, including customers, vehicles, work orders, invoices and uploaded files, is automatically backed up every hour. Backups are protected with AES-256 encryption before they leave our infrastructure and are stored at a separate, secure location, so no outside party can read them.",
  1470. "lastBackup": "Last backup:",
  1471. "supportPrompt": "If you have any questions about how your data is protected,",
  1472. "supportAction": "contact our support team."
  1473. },
  1474. "optTireHotel": "Tire hotel",
  1475. "optTireHotelDesc": "Stored tire sets, shelves, prep work and storage agreements",
  1476. "optWorkshopConfig": "Workshop setup",
  1477. "optWorkshopConfigDesc": "Labour presets, roles, webhooks and scheduled reports",
  1478. "importHubDescription": "Pick where your data is today. Spreadsheet and app imports add to what you have and can be undone; restoring a backup replaces everything.",
  1479. "sourceSpreadsheet": "Spreadsheet or CSV",
  1480. "sourceSpreadsheetDesc": "Exports from any shop system, accounting tool, Google Contacts, Outlook or Excel. You confirm the column mapping and see a dry run before anything is written.",
  1481. "sourceLubelogDesc": "Vehicles, service records and notes from a LubeLog backup.",
  1482. "sourceInvoiceNinjaDesc": "Clients, products, invoices and payments from an Invoice Ninja export.",
  1483. "sourceBackup": "Torqvoice backup",
  1484. "sourceBackupDesc": "A .zip or .json file downloaded from this page. Restoring replaces everything in this workshop.",
  1485. "restore": "Restore",
  1486. "restoreTitle": "Restore a backup"
  1487. },
  1488. "license": {
  1489. "title": "White-Label License",
  1490. "description": "Activate a white-label license to remove Torqvoice branding from invoices and the application.",
  1491. "purchaseWhiteLabel": "Purchase White-Label",
  1492. "status": "Status:",
  1493. "active": "Active",
  1494. "inactive": "Inactive",
  1495. "lastChecked": "Last checked: {date}",
  1496. "enterLicenseKey": "Enter license key",
  1497. "validate": "Validate",
  1498. "validated": "License validated successfully",
  1499. "invalid": "Invalid license key",
  1500. "failedValidate": "Failed to validate license",
  1501. "keyHint": "Each license key is tied to this organization and cannot be shared across multiple organizations.",
  1502. "expired": "Expired",
  1503. "unverified": "Unverified",
  1504. "expiresOn": "Expires: {date}",
  1505. "unreachable": "torqvoice.com could not be reached. The licence stored on this server is unchanged.",
  1506. "unverifiedHint": "This server has not been able to confirm the licence with torqvoice.com for {days} days. Torqvoice branding returns after {max} days without a successful check.",
  1507. "rejected": "torqvoice.com did not accept this key: {reason}",
  1508. "signedHint": "Validation is signed by torqvoice.com and re-checked daily, so the server needs outbound access to torqvoice.com."
  1509. },
  1510. "about": {
  1511. "title": "About Torqvoice",
  1512. "description": "Torqvoice is your complete vehicle service management solution. Track service history, repairs and more.",
  1513. "version": "Version",
  1514. "website": "Website",
  1515. "documentation": "Documentation",
  1516. "changelog": "Changelog"
  1517. },
  1518. "portal": {
  1519. "title": "Customer Portal",
  1520. "description": "Allow your customers to log in and view their vehicles, invoices, quotes, and inspections. Customers can also submit service requests.",
  1521. "enablePortal": "Enable customer portal",
  1522. "enablePortalHint": "Customers with an email address can log in via magic link",
  1523. "enabled": "Customer portal enabled",
  1524. "disabled": "Customer portal disabled",
  1525. "failedUpdate": "Failed to update setting",
  1526. "customSlug": "Custom portal slug",
  1527. "save": "Save",
  1528. "slugSaved": "Portal slug saved",
  1529. "slugRemoved": "Portal slug removed",
  1530. "failedUpdateSlug": "Failed to update slug",
  1531. "slugHint": "Lowercase letters, numbers, hyphens, and underscores. 3-48 characters. Leave blank to use the default URL.",
  1532. "portalUrl": "Portal URL",
  1533. "urlCopied": "Portal URL copied",
  1534. "shareHint": "Share this link with your customers so they can log in to their portal.",
  1535. "serviceRequestAlertsHint": "Service requests from the portal always appear in your notification bell. You can also get them by email.",
  1536. "serviceRequestAlertsLink": "Alert settings →",
  1537. "descriptionLabel": "About your workshop",
  1538. "descriptionPlaceholder": "Tell customers a bit about your workshop, the services you offer, and what makes you unique.",
  1539. "descriptionHint": "Shown to visitors at the top of your portal landing page.",
  1540. "hoursLabel": "Opening hours",
  1541. "hoursPlaceholder": "Mon-Fri: 8:00-17:00\nSat: 9:00-13:00\nSun: Closed",
  1542. "hoursHint": "Free-form text. Use line breaks to list each day separately.",
  1543. "contentSaved": "Portal content saved",
  1544. "background": {
  1545. "title": "Portal background",
  1546. "description": "Choose how the customer portal landing page looks.",
  1547. "typeNone": "None",
  1548. "typeTemplate": "Template",
  1549. "typeImage": "Custom image",
  1550. "chooseTemplate": "Choose a template",
  1551. "uploadLabel": "Background image",
  1552. "upload": "Upload image",
  1553. "replace": "Replace image",
  1554. "remove": "Remove",
  1555. "uploadHint": "JPG, PNG or WebP. Max 8 MB. Recommended at least 1600×900.",
  1556. "uploading": "Uploading background…",
  1557. "uploaded": "Background updated",
  1558. "uploadFailed": "Failed to upload background",
  1559. "templateNames": {
  1560. "default": "Subtle",
  1561. "sunrise": "Sunrise",
  1562. "ocean": "Ocean",
  1563. "forest": "Forest",
  1564. "slate": "Slate",
  1565. "sand": "Sand"
  1566. }
  1567. },
  1568. "copyUrl": "Copy portal URL"
  1569. },
  1570. "email": {
  1571. "title": "Email Provider",
  1572. "description": "Configure your organization's email provider for sending invoices and quotes. If not configured, the platform's default email provider will be used.",
  1573. "useCustomLabel": "Use custom email provider",
  1574. "useCustomHint": "Enable to configure your own email provider instead of using the platform default",
  1575. "platformDefaultInfo": "Your organization is using the platform's default email provider. Invoices and quotes will be sent using the platform-configured email settings.",
  1576. "smtpHost": "SMTP Host",
  1577. "smtpHostPlaceholder": "smtp.example.com",
  1578. "smtpPort": "SMTP Port",
  1579. "smtpPortPlaceholder": "587",
  1580. "username": "Username",
  1581. "usernamePlaceholder": "user@example.com",
  1582. "password": "Password",
  1583. "fromEmail": "From Email",
  1584. "fromEmailPlaceholder": "noreply@example.com",
  1585. "fromEmailDomainPlaceholder": "noreply@yourdomain.com",
  1586. "fromName": "From Name",
  1587. "fromNamePlaceholder": "Your Workshop",
  1588. "tlsConnection": "TLS Connection (Port 465)",
  1589. "tlsConnectionHint": "Enable for implicit TLS. Disable for STARTTLS (port 587/25).",
  1590. "verifyTlsCerts": "Verify TLS Certificates",
  1591. "verifyTlsCertsHint": "Disable to allow self-signed certificates (not recommended for production)",
  1592. "requireTlsUpgrade": "Require TLS Upgrade",
  1593. "requireTlsUpgradeHint": "Force TLS upgrade on STARTTLS connections",
  1594. "apiKey": "API Key",
  1595. "apiKeyHintResend": "Get your API key from",
  1596. "serverToken": "Server Token",
  1597. "serverTokenHintPostmark": "Get your Server Token from",
  1598. "apiKeyHintMailgun": "Get your API key from",
  1599. "domain": "Domain",
  1600. "domainPlaceholder": "mg.yourdomain.com",
  1601. "region": "Region",
  1602. "apiKeyHintSendGrid": "Get your API key from",
  1603. "accessKeyId": "Access Key ID",
  1604. "secretAccessKey": "Secret Access Key",
  1605. "awsRegion": "AWS Region",
  1606. "awsRegionPlaceholder": "us-east-1",
  1607. "awsRegionHint": "The AWS region where SES is configured (e.g. us-east-1, eu-west-1)",
  1608. "sendTestEmail": "Send Test Email",
  1609. "testEmailHint": "Save settings first, then send a test email to your account",
  1610. "saveSettings": "Save Settings",
  1611. "savedDefault": "Email settings saved — using platform default",
  1612. "saved": "Email settings saved",
  1613. "failedSave": "Failed to save settings",
  1614. "testSentTo": "Test email sent to {email}",
  1615. "testFailed": "Email test failed"
  1616. },
  1617. "sms": {
  1618. "title": "SMS Provider",
  1619. "description": "Configure your SMS provider for two-way messaging with customers. Each organization uses their own SMS vendor and phone number.",
  1620. "enableLabel": "Enable SMS messaging",
  1621. "enableHint": "Send and receive SMS messages with customers",
  1622. "disabledInfo": "SMS messaging is disabled. Enable it to send and receive text messages with your customers.",
  1623. "phoneNumber": "Phone Number",
  1624. "phoneNumberPlaceholder": "+15551234567",
  1625. "phoneNumberHint": "Your SMS-enabled phone number in E.164 format (e.g. +15551234567)",
  1626. "accountSid": "Account SID",
  1627. "authToken": "Auth Token",
  1628. "apiKey": "API Key",
  1629. "apiSecret": "API Secret",
  1630. "webhookUrl": "Webhook URL",
  1631. "webhookUrlHint": "Configure this URL in your {provider} dashboard to receive inbound SMS messages.",
  1632. "webhookCopied": "Webhook URL copied",
  1633. "testPhoneNumber": "Test Phone Number",
  1634. "testPhonePlaceholder": "+15559876543",
  1635. "sendTestSms": "Send Test SMS",
  1636. "testSmsHint": "Save settings first, then enter a recipient number to send a test SMS",
  1637. "enterTestPhone": "Enter a phone number to send the test SMS to",
  1638. "saveSettings": "Save Settings",
  1639. "savedDisabled": "SMS settings saved — SMS disabled",
  1640. "saved": "SMS settings saved",
  1641. "failedSave": "Failed to save settings",
  1642. "testSentTo": "Test SMS sent to {phone}",
  1643. "testFailed": "SMS test failed",
  1644. "copyWebhookUrl": "Copy webhook URL"
  1645. },
  1646. "subscription": {
  1647. "title": "Subscription Plan",
  1648. "description": "Your organization's current Torqvoice subscription tier and available features.",
  1649. "currentPlan": "Current Plan",
  1650. "planFree": "Free",
  1651. "planPro": "Torq Pro",
  1652. "planEnterprise": "Enterprise",
  1653. "price": "{price}/{interval}",
  1654. "perYear": "yr",
  1655. "perMonth": "mo",
  1656. "statusActive": "Active",
  1657. "statusCanceling": "Canceling",
  1658. "statusPastDue": "Past Due",
  1659. "statusCanceled": "Canceled",
  1660. "billingPeriod": "Billing Period",
  1661. "billingPeriodDates": "{start} — {end}",
  1662. "nextRenewal": "Next Renewal",
  1663. "cancelingWarning": "Your subscription will cancel on {date}. After that, you'll be downgraded to Free.",
  1664. "pastDueWarning": "Your payment is past due. Please update your payment method to avoid service interruption.",
  1665. "featuresTitle": "Plan Features",
  1666. "featuresDescription": "What's included in your current plan.",
  1667. "featureCustomers": "Customers",
  1668. "featureTeamMembers": "Team Members",
  1669. "featureSmtp": "Custom Email (SMTP)",
  1670. "featureApi": "API Access",
  1671. "featurePayments": "Online Payments",
  1672. "featureCustomFields": "Custom Fields",
  1673. "featureSms": "SMS Messaging",
  1674. "featureCustomerPortal": "Customer Portal",
  1675. "featureCustomTemplates": "Custom Templates",
  1676. "featureBrandingRemoved": "Branding Removed",
  1677. "usageOf": "{used} / {limit}",
  1678. "usageUnlimited": "{used} / Unlimited",
  1679. "included": "Included",
  1680. "notIncluded": "Not Included",
  1681. "manageTitle": "Manage Subscription",
  1682. "manageBilling": "Manage Billing",
  1683. "manageBillingDescription": "Update payment method, view invoices, and manage billing details.",
  1684. "cancelSubscription": "Cancel Subscription",
  1685. "resumeSubscription": "Resume Subscription",
  1686. "cancelDialogTitle": "Cancel Subscription",
  1687. "cancelDialogDescription": "Your subscription will remain active until {date}. After that, you'll be downgraded to Free.",
  1688. "cancelDialogConfirm": "Yes, Cancel",
  1689. "cancelDialogCancel": "Keep Subscription",
  1690. "cancelSuccess": "Subscription will cancel at end of billing period",
  1691. "cancelError": "Failed to cancel subscription",
  1692. "resumeSuccess": "Subscription resumed successfully",
  1693. "resumeError": "Failed to resume subscription",
  1694. "billingPortalError": "Failed to open billing portal",
  1695. "checkoutError": "Failed to start checkout",
  1696. "upgradeTitle": "Upgrade Plan",
  1697. "upgradeDescription": "Unlock more features by upgrading your plan.",
  1698. "upgradeToProDescription": "Upgrade to unlock unlimited customers, team members, reports, SMTP, API access, and more.",
  1699. "upgradeToEnterpriseDescription": "Need more than 5 team members? Upgrade to Enterprise for up to 50 users.",
  1700. "upgradeToPro": "Upgrade to Pro — $99/yr",
  1701. "upgradeToEnterprise": "Enterprise — $140/yr",
  1702. "upgradeDialogTitle": "Upgrade to Enterprise",
  1703. "upgradeDialogDescription": "Your current Pro plan will be upgraded to Enterprise. You will only be charged the prorated difference for the remaining billing period.",
  1704. "upgradeConfirm": "Confirm Upgrade",
  1705. "upgradeCalculating": "Calculating prorated amount…",
  1706. "upgradeAmountDue": "Amount due now",
  1707. "upgradeSuccess": "Successfully upgraded to Enterprise!",
  1708. "upgradeError": "Failed to upgrade subscription",
  1709. "demoBadge": "Demo",
  1710. "demoExpiresIn": "Expires in {days, plural, =0 {less than a day} one {# day} other {# days}} ({date})",
  1711. "checkoutOnTorqvoice": "You will be taken to torqvoice.com to complete the purchase. Invoices and receipts are available there under your account.",
  1712. "purchaseSuccess": "Thank you! Your plan is now active.",
  1713. "purchaseActivating": "Payment received. Your plan is being activated, this page refreshes in a moment.",
  1714. "accountOnTorqvoice": "Invoices and receipts are on torqvoice.com, where you are signed in with this account.",
  1715. "openTorqvoiceAccount": "Open your account on torqvoice.com"
  1716. },
  1717. "ai": {
  1718. "title": "AI Assistant",
  1719. "readMore": "Read More",
  1720. "description": "Configure AI to auto-generate service notes and summarize vehicle history.",
  1721. "enableLabel": "Enable AI",
  1722. "enableHint": "Use AI-powered features throughout the application",
  1723. "disabledInfo": "Enable AI to use features like auto-generated service descriptions and vehicle history summaries.",
  1724. "provider": "AI Provider",
  1725. "apiKey": "API Key",
  1726. "apiKeyHint": "Your {provider} API key. Stored securely and never shared.",
  1727. "model": "Model",
  1728. "testConnection": "Test Connection",
  1729. "testSuccess": "AI connection successful!",
  1730. "testFailed": "Connection failed. Check your API key and model.",
  1731. "saved": "AI settings saved",
  1732. "failedSave": "Failed to save AI settings",
  1733. "saveSettings": "Save Settings",
  1734. "featuresTitle": "AI-powered features included:",
  1735. "featureServiceNotes": "Auto-generate professional service descriptions from parts and labor",
  1736. "featureHistorySummary": "One-click vehicle service history summary",
  1737. "cost": {
  1738. "high": "High Cost",
  1739. "medium": "Medium",
  1740. "low": "Low Cost"
  1741. }
  1742. },
  1743. "reportSchedule": {
  1744. "title": "Report Schedule",
  1745. "description": "Automatically generate and email report PDFs on a recurring schedule.",
  1746. "schedule": "Schedule",
  1747. "name": "Schedule Name",
  1748. "namePlaceholder": "e.g. Weekly Business Report",
  1749. "frequency": "Frequency",
  1750. "daily": "Daily",
  1751. "weekly": "Weekly",
  1752. "biweekly": "Every 2 Weeks",
  1753. "monthly": "Monthly",
  1754. "bimonthly": "Every 2 Months",
  1755. "quarterly": "Every 3 Months",
  1756. "semiannually": "Every 6 Months",
  1757. "yearly": "Yearly",
  1758. "dateRangeLabel": "Date Range",
  1759. "dateRanges": {
  1760. "last1d": "Last Day",
  1761. "last7d": "Last 7 Days",
  1762. "last14d": "Last 14 Days",
  1763. "last30d": "Last 30 Days",
  1764. "last60d": "Last 60 Days",
  1765. "last90d": "Last 90 Days",
  1766. "last6m": "Last 6 Months",
  1767. "last12m": "Last 12 Months",
  1768. "ytd": "Year to Date",
  1769. "allTime": "All Time"
  1770. },
  1771. "sections": "Report Sections",
  1772. "sectionsDescription": "Select which sections to include in the scheduled report.",
  1773. "sectionsIncluded": "Sections included",
  1774. "selectAll": "Select all",
  1775. "clearAll": "Clear all",
  1776. "recipients": "Recipients",
  1777. "recipientsDescription": "Select team members who will receive the report via email.",
  1778. "recipientsCount": "Recipients",
  1779. "endDate": "End Date",
  1780. "endDateDescription": "Optionally stop the schedule after this date.",
  1781. "enabled": "Enabled",
  1782. "disabled": "Disabled",
  1783. "nextRun": "Next run",
  1784. "lastRun": "Last run",
  1785. "runCount": "Reports sent",
  1786. "save": "Save Schedule",
  1787. "create": "Create Schedule",
  1788. "delete": "Delete Schedule",
  1789. "created": "Report schedule created",
  1790. "updated": "Report schedule updated",
  1791. "deleted": "Report schedule deleted",
  1792. "toggledOn": "Report schedule enabled",
  1793. "toggledOff": "Report schedule disabled",
  1794. "failedSave": "Failed to save",
  1795. "failedSend": "Failed to send",
  1796. "failedToggle": "Failed to toggle",
  1797. "failedDelete": "Failed to delete",
  1798. "noMembers": "No team members found",
  1799. "addRecipient": "Add recipient...",
  1800. "searchMembers": "Search members...",
  1801. "newSchedule": "New Schedule",
  1802. "editSchedule": "Edit Schedule",
  1803. "edit": "Edit",
  1804. "cancel": "Cancel",
  1805. "sent": "sent",
  1806. "sendNow": "Send Now",
  1807. "sentNow": "Report sent successfully",
  1808. "emptyTitle": "No scheduled reports",
  1809. "emptyDescription": "Create a schedule to automatically generate and email reports to your team.",
  1810. "sectionLabels": {
  1811. "revenue": "Revenue",
  1812. "tax": "Tax",
  1813. "pastDue": "Past Due Invoices",
  1814. "services": "Services",
  1815. "customers": "Customers",
  1816. "technicians": "Technicians",
  1817. "parts": "Parts Usage",
  1818. "jobAnalytics": "Job Analytics",
  1819. "retention": "Customer Retention",
  1820. "inventory": "Inventory"
  1821. }
  1822. },
  1823. "webhooks": {
  1824. "title": "Webhooks",
  1825. "subtitle": "Send real-time event notifications to your own systems via HTTPS. Each event is signed with HMAC-SHA256 so you can verify authenticity.",
  1826. "create": "Add webhook",
  1827. "createTitle": "Add webhook",
  1828. "editTitle": "Edit webhook",
  1829. "createDescription": "Webhooks are POSTed as JSON. Failed deliveries are retried with exponential backoff up to 5 times.",
  1830. "name": "Name",
  1831. "namePlaceholder": "e.g. Accounting sync",
  1832. "url": "Endpoint URL",
  1833. "urlHint": "Must start with http:// or https://. We strongly recommend HTTPS.",
  1834. "description": "Description (optional)",
  1835. "events": "Events",
  1836. "eventsHint": "Choose which events trigger this webhook.",
  1837. "subscribeToAll": "All events",
  1838. "selectAtLeastOneEvent": "Select at least one event",
  1839. "groups": {
  1840. "customers": "Customers",
  1841. "vehicles": "Vehicles",
  1842. "services": "Service Records",
  1843. "quotes": "Quotes",
  1844. "payments": "Payments",
  1845. "inspections": "Inspections",
  1846. "inventory": "Inventory",
  1847. "findings": "Findings"
  1848. },
  1849. "save": "Save",
  1850. "cancel": "Cancel",
  1851. "delete": "Delete",
  1852. "rotate": "Rotate",
  1853. "done": "Done",
  1854. "paused": "Paused",
  1855. "statusOk": "Healthy",
  1856. "statusFailing": "{count, plural, one {# recent failure} other {# recent failures}}",
  1857. "lastDelivery": "Last delivery {when}",
  1858. "totalDeliveries": "{count, plural, one {# delivery} other {# deliveries}}",
  1859. "toggleAria": "Enable or disable this webhook",
  1860. "deliveries": "Deliveries",
  1861. "sendTest": "Send test",
  1862. "testSent": "Test event sent",
  1863. "testFailed": "Failed to send test event",
  1864. "rotateSecret": "Rotate signing secret",
  1865. "confirmRotateTitle": "Rotate signing secret?",
  1866. "confirmRotateDescription": "The current secret will stop working immediately. Update your endpoint with the new secret.",
  1867. "secretRotated": "Secret rotated",
  1868. "secretRotatedDescription": "Save this secret now — it cannot be recovered later.",
  1869. "confirmDeleteTitle": "Delete webhook?",
  1870. "confirmDeleteDescription": "“{name}” will stop receiving events immediately. This cannot be undone.",
  1871. "secretShownOnceTitle": "Webhook “{name}” created",
  1872. "secretShownOnceDescription": "Copy this signing secret now. It will not be shown again.",
  1873. "secretCopyHint": "Use this secret to verify the X-Torqvoice-Signature header on each request.",
  1874. "deliveriesTitle": "Deliveries — {name}",
  1875. "deliveriesDescription": "Last 50 attempts. Failed events are retried automatically with exponential backoff.",
  1876. "deliveriesEmpty": "No deliveries yet. Send a test event to try it out.",
  1877. "attempt": "Attempt {n}/{max}",
  1878. "nextRetry": "Next retry {when}",
  1879. "retryQueued": "Retry queued",
  1880. "retryFailed": "Retry failed",
  1881. "saveFailed": "Save failed",
  1882. "deleteFailed": "Delete failed",
  1883. "toggleFailed": "Toggle failed",
  1884. "rotateFailed": "Rotate failed",
  1885. "created": "Webhook created",
  1886. "updated": "Webhook updated",
  1887. "deleted": "Webhook deleted",
  1888. "emptyTitle": "No webhooks yet",
  1889. "emptyDescription": "Add a webhook to push events to your own systems — accounting sync, custom dashboards, Zapier, anything that speaks HTTP.",
  1890. "helpTitle": "Verifying webhook signatures",
  1891. "helpIntro": "Each delivery includes an HMAC-SHA256 signature so you can confirm the request came from Torqvoice.",
  1892. "helpHeadersTitle": "Headers sent with every request",
  1893. "helpVerify": "Reconstruct the signed string as `[timestamp].[body]` and compare with timing-safe equality:",
  1894. "tabWebhooks": "Webhooks",
  1895. "tabReference": "Events Reference",
  1896. "autoDisabled": "Auto-paused",
  1897. "autoDisabledBanner": "This webhook was auto-paused after 20 consecutive failures. Re-enable to resume deliveries.",
  1898. "reEnable": "Re-enable",
  1899. "resumed": "Webhook resumed",
  1900. "copyUrl": "Copy URL",
  1901. "refresh": "Refresh",
  1902. "noMatches": "No deliveries match this filter.",
  1903. "retry": "Retry",
  1904. "viewPayload": "View payload",
  1905. "payloadCopied": "Payload copied",
  1906. "loadingPayload": "Loading payload…",
  1907. "requestPayload": "Request payload",
  1908. "response": "Response",
  1909. "close": "Close",
  1910. "samplePayload": "Sample envelope",
  1911. "referenceTitle": "Event reference",
  1912. "referenceIntro": "Every delivery follows this envelope shape. Click an event to see a sample payload your endpoint will receive.",
  1913. "filter": {
  1914. "all": "All",
  1915. "success": "Success",
  1916. "failed": "Failed",
  1917. "retrying": "Retrying",
  1918. "pending": "Pending"
  1919. }
  1920. },
  1921. "alerts": {
  1922. "title": "Alerts",
  1923. "description": "Choose which events you want to be told about, and how.",
  1924. "serviceRequest": {
  1925. "title": "Service request alerts",
  1926. "description": "Service requests submitted through the customer portal always show up in the notification bell. Turn this on to also get them by email.",
  1927. "email": "Email notification",
  1928. "emailHint": "Off by default. One email per request, sent as soon as a customer submits it.",
  1929. "recipients": "Send to",
  1930. "recipientsHint": "Leave empty to notify every owner and admin. Separate several addresses with commas.",
  1931. "invalidRecipients": "Not a valid address: {list}",
  1932. "emailSetupHint": "Alerts are sent with your configured mail provider.",
  1933. "emailSetupLink": "Email settings →",
  1934. "save": "Save alert settings",
  1935. "saved": "Service request alert settings saved"
  1936. },
  1937. "lowStock": {
  1938. "title": "Low stock alerts",
  1939. "description": "Alerts when a part reaches its reorder point. A part is low when its quantity drops to or below its \"Min Qty\", or the default below if it has none. Each part is reported once per dip and stays quiet until it is restocked.",
  1940. "enable": "Enable low stock alerts",
  1941. "enableHint": "Off by default. Only parts with a reorder point set are watched.",
  1942. "inApp": "In-app notification",
  1943. "inAppHint": "One grouped notification in the bell, not one per part.",
  1944. "email": "Email digest",
  1945. "emailHint": "A single email listing every part that just went low.",
  1946. "emailInterval": "Minimum hours between emails",
  1947. "emailIntervalHint": "At most one digest per this many hours. 0 disables the limit.",
  1948. "save": "Save alert settings",
  1949. "saved": "Low stock alert settings saved",
  1950. "defaultThreshold": "Default reorder point",
  1951. "defaultThresholdHint": "Used only for parts that have no reorder point of their own. A part's own \"Min Qty\" — set when you edit that part — always overrides this. Leave at 0 to watch only the parts you have configured individually.",
  1952. "checkNow": "Check now",
  1953. "checkDisabled": "Alerts are turned off.",
  1954. "checkNothingNew": "Nothing new — every low part has already been reported.",
  1955. "checkAlerted": "{count} newly low part(s) reported",
  1956. "checkFailed": "Check failed",
  1957. "configurePerPart": "Set a part's own Min Qty on the inventory page →",
  1958. "readMore": "Read More"
  1959. },
  1960. "technicianStatus": {
  1961. "title": "Torqvoice Technician App (Android/iOS)",
  1962. "description": "Told when a technician moves a job from their phone.",
  1963. "inApp": "Notify the desk",
  1964. "inAppHint": "A notification when a job is finished, parked for parts, or picked back up.",
  1965. "save": "Save",
  1966. "saved": "Alert settings saved",
  1967. "saveFailed": "Could not save the settings"
  1968. }
  1969. },
  1970. "support": {
  1971. "title": "Support",
  1972. "description": "Reach the Torqvoice support team without leaving the app. Your request includes your organisation and the page you were on.",
  1973. "showButton": "Show the support button",
  1974. "showButtonHint": "A draggable button on every page, on this device. When hidden, a small tab on the right edge brings it back.",
  1975. "contactTitle": "Contact support",
  1976. "contactHint": "Open the support form straight away.",
  1977. "contactAction": "Open form"
  1978. },
  1979. "install": {
  1980. "title": "Install Torqvoice",
  1981. "description": "Install Torqvoice on this device to open it from the home screen, full screen and without the browser bar. It stays the same app and the same data.",
  1982. "installed": "Torqvoice is installed on this device.",
  1983. "iosHint": "In Safari, tap the Share button, then \"Add to Home Screen\".",
  1984. "unavailable": "This browser has not offered an install prompt. Open the browser menu and look for \"Install app\" or \"Add to Home Screen\".",
  1985. "bannerHidden": "The install banner is hidden on this device.",
  1986. "showBanner": "Show banner again"
  1987. },
  1988. "tireHotel": {
  1989. "title": "Tire hotel",
  1990. "description": "Store your customers’ seasonal tires and keep track of where every set sits.",
  1991. "cardTitle": "Tire storage",
  1992. "enable": "Enable tire hotel",
  1993. "enableHint": "Adds tire storage to the sidebar. Turning it off later hides it again without deleting anything.",
  1994. "defaultCapacity": "Default tires per shelf",
  1995. "defaultCapacityHint": "Prefilled when you add new shelves. You can change it per shelf.",
  1996. "warnPercent": "Warn when full (%)",
  1997. "warnPercentHint": "Flags the storage overview once this share of total capacity is in use.",
  1998. "treadTitle": "Replacement thresholds",
  1999. "treadHint": "Legal minimums differ by country, so set the limits your market uses. Tread below the limit is flagged for replacement.",
  2000. "summerLimit": "Summer limit ({unit})",
  2001. "winterLimit": "Winter limit ({unit})",
  2002. "unitMm": "mm",
  2003. "unit32nds": "32nds",
  2004. "setupHint": "Next, set up your shelves.",
  2005. "setupLink": "Open storage layout",
  2006. "save": "Save tire hotel settings",
  2007. "saved": "Tire hotel settings saved",
  2008. "billingTitle": "Storage billing",
  2009. "billingHint": "Prefilled on the storage line when you bill a set. Editable on the bill.",
  2010. "seasonalPrice": "Default storage price",
  2011. "prepTitle": "Prep pricing",
  2012. "prepHint": "What each kind of prep costs. Leave one blank and it is never billed, which is what a shop that includes washing in the storage fee wants. Priced ones are added to a quote or work order automatically.",
  2013. "prepNotCharged": "not charged"
  2014. },
  2015. "designer": {
  2016. "invoice": "Invoice",
  2017. "quote": "Quote",
  2018. "eyebrow": "Document designer",
  2019. "galleryTitle": "Start from a template",
  2020. "galleryHint": "Pick a starting point. You can change everything in the designer.",
  2021. "yourDesigns": "Your designs",
  2022. "autoRuleHint": "Sales made without a vehicle print with the design marked for them, unless the sale or its customer chose another.",
  2023. "useForPartsSale": "Use for parts-only sales",
  2024. "usedForPartsSale": "Used for parts-only sales",
  2025. "autoRule": {
  2026. "parts_sale": "Parts-Only Sale"
  2027. },
  2028. "autoRuleSaved": "Updated when \"{name}\" is used",
  2029. "couldNotSaveRule": "Could not update the rule",
  2030. "templates": "Templates",
  2031. "inUse": "In use",
  2032. "savedOn": "Saved {date}",
  2033. "deleteDesignTitle": "Delete design",
  2034. "deleteDesignBody": "Delete the design \"{name}\"? The invoice and quote keep whatever is applied; only the saved copy goes.",
  2035. "delete": "Delete",
  2036. "deleteDesign": "Delete this design",
  2037. "continueCurrent": "Continue with my current layout",
  2038. "backToSettings": "Back to settings",
  2039. "useInvoiceDesign": "Use invoice design",
  2040. "copiedToQuote": "Invoice design copied to the quote",
  2041. "rulers": "Rulers",
  2042. "saveDesign": "Save design",
  2043. "saveDesignHint": "Keep a named copy of this design, to come back to from the template gallery",
  2044. "reset": "Reset",
  2045. "save": "Save",
  2046. "saving": "Saving…",
  2047. "saved": "Saved",
  2048. "couldNotSave": "Could not save",
  2049. "couldNotSaveDesigns": "Could not save your designs",
  2050. "designUpdated": "Updated \"{name}\"",
  2051. "designSaved": "Saved as \"{name}\"",
  2052. "defaultDesignName": "My {doc} design",
  2053. "documentStyling": "Document styling",
  2054. "sections": "Sections",
  2055. "sectionEmpty": "empty",
  2056. "sectionEmptyHint": "Shown, but there is nothing to print in it with the current data.",
  2057. "sectionShownHint": "Shown on the sheet. Click to hide it.",
  2058. "sectionHiddenHint": "Hidden from the sheet. Click to show it.",
  2059. "railHint": "Drag a section on the page: drop it between blocks to reorder, onto a card to sit beside it, or anywhere else to place it freely. The page makes room around it.",
  2060. "returnToFlow": "Return {section} to the flow",
  2061. "saveDialogTitle": "Save this design",
  2062. "saveDialogBody": "Keeps a named copy of the current arrangement and look. Find it again under Your designs in the template gallery.",
  2063. "designNamePlaceholder": "Design name",
  2064. "nameExists": "A design with this name exists; saving updates it.",
  2065. "updateDesign": "Update design",
  2066. "cancel": "Cancel",
  2067. "insertHere": "Insert here",
  2068. "dropLeftColumn": "Left column",
  2069. "dropRightColumn": "Right column",
  2070. "freePosition": "Free position",
  2071. "sectionSettings": "Section settings",
  2072. "panelStyle": "Panel style",
  2073. "variant": {
  2074. "accent": "Accent",
  2075. "panel": "Panel",
  2076. "outline": "Outline",
  2077. "lines": "Lines",
  2078. "hint": "Accent tints the card with the primary color. Panel matches the other detail cards. Outline draws only a border, and Lines prints without a box.",
  2079. "classic": "Classic",
  2080. "box": "Boxed",
  2081. "totalsHint": "Classic prints bare lines with a rule above the total. Boxed frames them. Panel and Accent set them on a card."
  2082. },
  2083. "alignment": "Alignment",
  2084. "alignCenter": "Center",
  2085. "itemsTableHint": "One numbered list of every line on the job, labor first and parts after, in place of the separate parts and labor tables.",
  2086. "discardChanges": "Discard changes",
  2087. "tablesExclusiveHint": "The sheet prints one arrangement: a single numbered list, or separate parts and labor tables. Switching one on switches the other off.",
  2088. "innerPadding": "Inner spacing",
  2089. "totalsWidth": "Width",
  2090. "totalsWidthHint": "Empty spans the row. Set points to hang the box on the right; in a column it takes the column's width.",
  2091. "placement": "Placement",
  2092. "visible": "Visible",
  2093. "columnFull": "Full",
  2094. "columnLeft": "Left",
  2095. "columnRight": "Right",
  2096. "drawBox": "Draw a box",
  2097. "showHeading": "Show heading",
  2098. "spacing": "Spacing",
  2099. "placedByHand": "This section is placed by hand, so flow spacing does not move it.",
  2100. "placedByHandFramed": "The framed letterhead sits on the band; drag it to move it.",
  2101. "placedByHandDrag": "Drag it, or return it to the flow, to use spacing.",
  2102. "marginTop": "Top",
  2103. "marginBottom": "Bottom",
  2104. "marginLeft": "Left",
  2105. "marginRight": "Right",
  2106. "spacingHint": "Points of empty room the section keeps around itself in the flow.",
  2107. "logo": "Logo",
  2108. "size": "Size",
  2109. "logoHint": "Turn the logo off under Fields to print the company name instead.",
  2110. "fields": "Fields",
  2111. "removeField": "Remove from this section",
  2112. "yourCustomFields": "Your custom fields",
  2113. "appearance": "Appearance",
  2114. "details": "Details",
  2115. "text": "Text",
  2116. "companyName": "Company name",
  2117. "heading": "Heading",
  2118. "fill": "Fill",
  2119. "border": "Border",
  2120. "lineWidth": "Line width",
  2121. "borderWidth": "Border width",
  2122. "outerBorder": "Outer border",
  2123. "rowBanding": "Row banding",
  2124. "likeSheet": "Like sheet",
  2125. "on": "On",
  2126. "off": "Off",
  2127. "font": "Font",
  2128. "inherit": "Inherit",
  2129. "auto": "auto",
  2130. "sectionDragHint": "Drag this section in the list, or on the page, to move it. Once placed by hand, the arrow keys nudge it a point at a time, ten with Shift, and Escape cancels a drag.",
  2131. "document": "Document",
  2132. "documentSubtitle": "Applies to the whole sheet",
  2133. "headerStyleTitle": "Header style",
  2134. "headerStyle": {
  2135. "standard": {
  2136. "name": "Standard",
  2137. "desc": "Name and details on white, rule beneath"
  2138. },
  2139. "compact": {
  2140. "name": "Compact",
  2141. "desc": "Tight header, dense rows"
  2142. },
  2143. "modern": {
  2144. "name": "Modern",
  2145. "desc": "Full-width colored banner"
  2146. },
  2147. "framed": {
  2148. "name": "Framed",
  2149. "desc": "Band across the top, rail down the left"
  2150. }
  2151. },
  2152. "colors": "Colors",
  2153. "primary": "Primary",
  2154. "background": "Background",
  2155. "accent": "Accent",
  2156. "frame": "Frame",
  2157. "rail": "Rail",
  2158. "leftEdge": "Left edge",
  2159. "rightEdge": "Right edge",
  2160. "frameLine": "Frame line",
  2161. "cornerRadius": "Corner radius",
  2162. "shadow": "Shadow",
  2163. "shadowThin": "Thin",
  2164. "shadowNormal": "Normal",
  2165. "shadowWide": "Wide",
  2166. "typography": "Typography",
  2167. "baseSize": "Base size",
  2168. "page": "Page",
  2169. "margins": "Margins",
  2170. "rowHeight": "Row height",
  2171. "band": "Band",
  2172. "sample": {
  2173. "itemLabor": "Front brakes replaced",
  2174. "itemDisc": "Brake disc, front",
  2175. "itemPads": "Brake pad set, front axle",
  2176. "itemConsumables": "Consumables",
  2177. "unitPcs": "pcs",
  2178. "unitSet": "set",
  2179. "unitEach": "x",
  2180. "findingPads": "Rear pads at 15%",
  2181. "findingPadsNote": "Replace within 5,000 km",
  2182. "findingOilWeep": "Small oil weep at valve cover",
  2183. "notes": "Thank you for choosing our workshop. Contact us if you have any questions.",
  2184. "warranty": "12 months warranty on parts and labour.",
  2185. "serviceTitle": "Annual service and brakes",
  2186. "serviceType": "Repair",
  2187. "companyName": "Your Workshop",
  2188. "slogan": "Quality service you can trust",
  2189. "paymentTerms": "Due within 14 days",
  2190. "footerNote": "Thank you for your business",
  2191. "value": "Sample",
  2192. "testLocation": "12 Harbour Road, Springfield",
  2193. "certificateNotes": "Tyres are close to the legal limit; expect to replace them before the next test.",
  2194. "checkBrakeHoses": "Brake hoses",
  2195. "checkBrakeHosesNote": "Slight chafing on the left front hose, not yet through the outer layer.",
  2196. "sectionBrakes": "Braking equipment",
  2197. "checkBrakePedal": "Service brake pedal",
  2198. "checkBrakeFluid": "Brake fluid",
  2199. "sectionLighting": "Lighting equipment",
  2200. "checkHeadlamps": "Headlamp condition",
  2201. "checkFogLamp": "Rear fog lamp",
  2202. "photoFront": "Front",
  2203. "photoOdometer": "Odometer",
  2204. "concernNoise": "Grinding noise from the front when braking",
  2205. "concernNoiseDetail": "Front pads and discs worn; replaced",
  2206. "concernWarningLight": "Warning light on the dashboard since last week",
  2207. "workRequested": "Replace front brake pads and discs, reset the service indicator and road test.",
  2208. "checklistTestDrive": "Road test",
  2209. "markScratch": "Key scratch along the door, 20 cm",
  2210. "markDent": "Dent below the handle, paint intact",
  2211. "markChip": "Stone chips in the lower bumper",
  2212. "viewTop": "Top",
  2213. "viewLeft": "Left side",
  2214. "viewRight": "Right side",
  2215. "viewFront": "Front",
  2216. "viewRear": "Rear",
  2217. "panelLeftRearDoor": "Left rear door",
  2218. "panelLeftFrontDoor": "Left front door",
  2219. "panelFrontBumper": "Front bumper",
  2220. "kindScratch": "Scratch",
  2221. "kindDent": "Dent",
  2222. "kindChip": "Stone chip",
  2223. "severityMinor": "Minor",
  2224. "severityMajor": "Major",
  2225. "markPrevious": "recorded earlier"
  2226. },
  2227. "logoUpload": "Upload logo",
  2228. "logoReplace": "Replace logo",
  2229. "logoUploading": "Uploading…",
  2230. "logoFailed": "Could not upload that image",
  2231. "footerLogoHint": "Switch the logo on under Fields to print it at the foot of the page too.",
  2232. "logoReset": "Use the company logo",
  2233. "logoOwn": "Printed on this document only. The company logo is unchanged.",
  2234. "logoInherited": "Using the company logo. Upload one here to use a different mark on this document only.",
  2235. "slogan": "Slogan",
  2236. "sloganPlaceholderHint": "No slogan is set, so the sheet shows a stand-in that will not print.",
  2237. "sloganSetHint": "Your slogan comes from your company details.",
  2238. "sloganLink": "Company settings",
  2239. "paymentTerms": "Payment terms",
  2240. "paymentTermsPlaceholderHint": "No payment terms are set, so the sheet shows a stand-in that will not print.",
  2241. "paymentTermsSetHint": "Your payment terms come from your payment settings.",
  2242. "paymentTermsLink": "Payment settings",
  2243. "telegramQr": "Telegram code",
  2244. "telegramQrConnectedHint": "Prints a code that opens {link}, your connected Telegram bot. It only prints on invoices issued after the block was switched on.",
  2245. "telegramQrPlaceholderHint": "No Telegram bot is connected, so the sheet shows a sample code that will not print.",
  2246. "telegramQrLink": "Integrations",
  2247. "signatureWhose": "Whose signature",
  2248. "signatureOwnHint": "Each document prints the signature of whoever issued it: the person who opened the work order, wrote the quote or did the inspection. The canvas shows yours.",
  2249. "signaturePlaceholderHint": "Each document prints the signature of whoever issued it: the person who opened the work order, wrote the quote or did the inspection. You have not saved one, so the canvas shows a sample.",
  2250. "signatureLink": "Set your signature",
  2251. "titleText": "Title text",
  2252. "titleTextHint": "What this document calls itself. Left empty, it prints its own name in the reader's language.",
  2253. "orgNumberLabel": "Organization number label",
  2254. "orgNumberLabelHint": "Printed next to your organization number on invoices and quotes. Leave empty for the default in your language, or write what it is called where you are, such as ABN, VAT no. or CVR. Shared with company settings.",
  2255. "placeholder": "Placeholder",
  2256. "leaveTitle": "Leave without saving?",
  2257. "leaveBody": "Your changes to this design have not been saved. They will be lost.",
  2258. "leaveConfirm": "Leave",
  2259. "boldField": "Bold",
  2260. "deleteDesignDrafts": "{count, plural, one {# draft invoice} other {# draft invoices}} using it will go back to the default design.",
  2261. "deleteDesignCustomers": "{count, plural, one {# customer} other {# customers}} set to it will go back to the default design.",
  2262. "setDefault": "Set as default",
  2263. "defaultSet": "\"{name}\" is now in use",
  2264. "couldNotSetDefault": "Could not set the default design",
  2265. "fieldFixedSlot": "Always prints in the same place, so it cannot be moved.",
  2266. "certificate": "Inspection certificate",
  2267. "resultWidthHint": "Empty spans the row. Set points to make the band narrower; it then sits at the side the alignment picks, and in a column it takes the column's width.",
  2268. "work_order": "Work order",
  2269. "conditionMapDrawing": "Drawing",
  2270. "conditionMapViews": "Views",
  2271. "conditionMapViewsAll": "All five",
  2272. "conditionMapViewsTop": "Top only",
  2273. "conditionMapViewsSides": "Sides only",
  2274. "conditionMapWidthHint": "Empty spans the row. Set points to make the drawing smaller; it then sits where the alignment puts it, and the legend keeps the full width."
  2275. },
  2276. "preview": {
  2277. "title": "Brake Service & Oil Change",
  2278. "serviceType": "Maintenance",
  2279. "findingPads": "Rear brake pads worn to 15%",
  2280. "findingPadsNote": "Recommend replacement within 5,000 miles",
  2281. "findingOilLeak": "Minor oil leak at valve cover gasket",
  2282. "invoiceNotes": "Front brake pads replaced. Oil and filter changed with synthetic 5W-30. Next service recommended at 50,000 miles.",
  2283. "quoteNotes": "Front brake pads replacement recommended. Oil and filter change with synthetic 5W-30.",
  2284. "partBrakePads": "Brake Pads (Front)",
  2285. "partOilFilter": "Oil Filter",
  2286. "partSyntheticOil": "Synthetic Oil 5W-30",
  2287. "laborBrakeReplacement": "Brake Replacement",
  2288. "laborOilChange": "Oil Change"
  2289. },
  2290. "inspectionReminders": {
  2291. "title": "Inspection reminders and booking",
  2292. "description": "How the booking link in a reminder behaves. Set once; every campaign uses these.",
  2293. "duration": "Inspection duration (minutes)",
  2294. "durationHint": "How long a periodic inspection occupies a bay. The link books slots of this length.",
  2295. "leadDays": "Earliest booking (days ahead)",
  2296. "leadDaysHint": "1 means the first time offered is tomorrow, never today.",
  2297. "horizonWeeks": "How far ahead (weeks)",
  2298. "horizonHint": "Customers can pick any free time inside this many weeks.",
  2299. "reserve": "Keep free for walk-ins",
  2300. "reserveHint": "Bays or technicians the link never fills. 0 lets it use every free one.",
  2301. "linkValidDays": "Link stays open (days)",
  2302. "linkValidHint": "At least {min}. Links also stay open until a week after the deadline, whichever is later.",
  2303. "bookingMode": "What a booking creates",
  2304. "bookingModeDirect": "A scheduled work order on the board",
  2305. "bookingModeRequest": "A request the office confirms first",
  2306. "bookingModeHint": "Direct booking is what makes the link worth clicking. Choose the request if you want to approve every time.",
  2307. "phone": "Phone number in messages",
  2308. "phoneHint": "Shown as the alternative to the link. Defaults to the workshop phone number.",
  2309. "save": "Save",
  2310. "saved": "Settings saved",
  2311. "saveFailed": "Could not save",
  2312. "timeZoneDetected": "Timezone is on automatic under Localization, so the server uses {zone}, the zone last seen in a browser that saved settings. Choose the workshop's zone explicitly so booking times never depend on who saved last.",
  2313. "timeZoneExplicit": "Booking times and opening hours are read in {zone}.",
  2314. "timeZoneChange": "Change under Localization"
  2315. },
  2316. "emailTemplates": {
  2317. "title": "Email templates",
  2318. "description": "What the emails your workshop sends say and how they look. Each kind of email has a built-in template; design your own to change the wording, the colours and the blocks it is made of.",
  2319. "lockedDescription": "Design the emails your workshop sends: change the wording, add or remove blocks, and match the colours to your brand.",
  2320. "groups": {
  2321. "documents": "Documents",
  2322. "messages": "Messages",
  2323. "portal": "Customer portal",
  2324. "team": "Team"
  2325. },
  2326. "kinds": {
  2327. "invoice_sent": {
  2328. "name": "Invoice sent",
  2329. "description": "Sent when an invoice goes to a customer by email, with the PDF attached or a link to view it."
  2330. },
  2331. "quote_sent": {
  2332. "name": "Quote sent",
  2333. "description": "Sent when a quote goes to a customer by email."
  2334. },
  2335. "inspection_sent": {
  2336. "name": "Inspection report sent",
  2337. "description": "Sent when an inspection report goes to a customer by email."
  2338. },
  2339. "message": {
  2340. "name": "Customer message",
  2341. "description": "A message written to a customer: a notification from a work order, a status report, a video call invitation or a scheduled reminder."
  2342. },
  2343. "portal_signin": {
  2344. "name": "Portal sign-in",
  2345. "description": "The sign-in link a customer asks for on the customer portal."
  2346. },
  2347. "team_invitation": {
  2348. "name": "Team invitation",
  2349. "description": "Sent to a colleague you invite to join the workshop, with the link that creates their account."
  2350. }
  2351. },
  2352. "blocks": {
  2353. "header": "Header",
  2354. "heading": "Heading",
  2355. "paragraph": "Paragraph",
  2356. "callout": "Callout",
  2357. "button": "Button",
  2358. "document_summary": "Document summary",
  2359. "attachment_note": "Attachment note",
  2360. "image": "Image",
  2361. "divider": "Divider",
  2362. "spacer": "Spacer",
  2363. "contact_footer": "Contact footer"
  2364. },
  2365. "blockNotes": {
  2366. "header": "Your logo, or the workshop name when there is no logo or it is switched off. Upload and size the logo here; colours and fonts live under Subject and theme.",
  2367. "contact_footer": "Your workshop name, address, phone and email, taken from Company settings. Fill them in there to change what this prints.",
  2368. "divider": "A thin line between two blocks. It is left out when it would open or close the email.",
  2369. "callout": "A highlighted panel with a coloured edge. Good for the words that matter most, such as the message itself.",
  2370. "attachment_note": "Only printed when a PDF is attached to the email.",
  2371. "button": "The link is usually a tag such as the share link. A button whose link has no value is left out of the email.",
  2372. "document_summary": "A panel with the key figures of the document. Rows with nothing to show are left out.",
  2373. "image": "Pictures are compressed and resized for email when uploaded. Pictures no longer used are removed when the template is saved.",
  2374. "summaryUnused": "This kind of email has no document, so the summary prints nothing."
  2375. },
  2376. "tagGroups": {
  2377. "workshop": "Workshop",
  2378. "customer": "Customer",
  2379. "vehicle": "Vehicle",
  2380. "document": "Document",
  2381. "message": "Message",
  2382. "portal": "Portal",
  2383. "team": "Team"
  2384. },
  2385. "tags": {
  2386. "workshop_name": {
  2387. "label": "Workshop name",
  2388. "description": "The name of your workshop."
  2389. },
  2390. "workshop_phone": {
  2391. "label": "Workshop phone",
  2392. "description": "The phone number from Company settings."
  2393. },
  2394. "workshop_email": {
  2395. "label": "Workshop email",
  2396. "description": "The email address from Company settings."
  2397. },
  2398. "workshop_address": {
  2399. "label": "Workshop address",
  2400. "description": "The address from Company settings, on as many lines as it has."
  2401. },
  2402. "current_user": {
  2403. "label": "Sender name",
  2404. "description": "The name of the person sending the email."
  2405. },
  2406. "customer_name": {
  2407. "label": "Customer name",
  2408. "description": "The name of the customer the email goes to."
  2409. },
  2410. "vehicle": {
  2411. "label": "Vehicle",
  2412. "description": "Year, make and model of the vehicle."
  2413. },
  2414. "plate": {
  2415. "label": "Registration plate",
  2416. "description": "The registration number of the vehicle."
  2417. },
  2418. "mileage": {
  2419. "label": "Mileage",
  2420. "description": "The mileage recorded on the vehicle."
  2421. },
  2422. "document_number": {
  2423. "label": "Document number",
  2424. "description": "The number of the invoice or quote."
  2425. },
  2426. "document_title": {
  2427. "label": "Document title",
  2428. "description": "The title of the job or document."
  2429. },
  2430. "total": {
  2431. "label": "Total",
  2432. "description": "The total of the document, in its currency."
  2433. },
  2434. "balance_due": {
  2435. "label": "Balance due",
  2436. "description": "What is still owed on the document after payments."
  2437. },
  2438. "due_date": {
  2439. "label": "Due date",
  2440. "description": "The date the payment is due."
  2441. },
  2442. "share_link": {
  2443. "label": "Share link",
  2444. "description": "A link the customer can open to view the document online."
  2445. },
  2446. "message": {
  2447. "label": "Message",
  2448. "description": "The message written for this email, or the note added to the document."
  2449. },
  2450. "signin_link": {
  2451. "label": "Sign-in link",
  2452. "description": "The link that signs the customer in to the portal. It expires after a short while."
  2453. },
  2454. "portal_link": {
  2455. "label": "Portal link",
  2456. "description": "A link to the customer portal."
  2457. },
  2458. "invite_link": {
  2459. "label": "Invitation link",
  2460. "description": "The link that creates the account and joins the team. It stops working when the invitation expires."
  2461. },
  2462. "role": {
  2463. "label": "Role",
  2464. "description": "The role the person is invited as."
  2465. },
  2466. "invite_expires": {
  2467. "label": "Expiry date",
  2468. "description": "The last day the invitation link works."
  2469. }
  2470. },
  2471. "headerRule": "Rule under the header",
  2472. "headerRuleHint": "A thin line between the logo or workshop name and the rest of the email.",
  2473. "optionalTag": "Not every email has a value for this tag. When it is blank, the words around it are tidied up.",
  2474. "summaryRows": {
  2475. "reference": "Reference",
  2476. "vehicle": "Vehicle",
  2477. "total": "Total",
  2478. "balance": "Balance due",
  2479. "due": "Due date"
  2480. },
  2481. "builtIn": "Built-in",
  2482. "inUse": "In use",
  2483. "useBuiltIn": "Use built-in",
  2484. "setDefault": "Set as default",
  2485. "defaultSet": "Now sending with \"{name}\"",
  2486. "couldNotSetDefault": "Could not change the template in use",
  2487. "updatedOn": "Updated {date}",
  2488. "delete": "Delete",
  2489. "deleteTitle": "Delete template",
  2490. "deleteConfirm": "Delete the template \"{name}\"? If it is in use, emails go back to the built-in template.",
  2491. "deleteTemplate": "Delete this template",
  2492. "deleted": "Deleted \"{name}\"",
  2493. "couldNotDelete": "Could not delete the template",
  2494. "backToSettings": "Back to settings",
  2495. "unsaved": "(unsaved)",
  2496. "save": "Save",
  2497. "saving": "Saving…",
  2498. "savedState": "Saved",
  2499. "saved": "Saved \"{name}\"",
  2500. "couldNotSave": "Could not save",
  2501. "saveAsNew": "Save as new",
  2502. "discard": "Discard changes",
  2503. "sendTest": "Send test",
  2504. "cancel": "Cancel",
  2505. "problems": "{count, plural, one {# problem} other {# problems}}",
  2506. "unknownTags": "These tags do not exist for this kind of email: {tags}",
  2507. "missingTags": "This email has to include {tags}",
  2508. "subjectRequired": "The subject cannot be empty",
  2509. "invalidTemplate": "Some text is too long or a field has an invalid value.",
  2510. "leaveTitle": "Leave without saving?",
  2511. "leaveBody": "Your changes to this template have not been saved. They will be lost.",
  2512. "leaveConfirm": "Leave",
  2513. "subjectAndTheme": "Subject and theme",
  2514. "settingsSubtitle": "Applies to the whole email",
  2515. "blocksTitle": "Blocks",
  2516. "addBlock": "Add block",
  2517. "removeBlock": "Remove block",
  2518. "removeBlockLast": "The last block cannot be removed",
  2519. "blockEmpty": "empty",
  2520. "blockEmptyHint": "Shown, but there is nothing in it to print yet.",
  2521. "blockShownHint": "Shown in the email. Click to hide it.",
  2522. "blockHiddenHint": "Hidden from the email. Click to show it.",
  2523. "railHint": "Drag a block by its handle to move it. The line shows where it will land. Click a block to edit its words on the right.",
  2524. "resizeHint": "Drag to resize the panel. Double-click to reset.",
  2525. "desktop": "Desktop",
  2526. "mobile": "Mobile",
  2527. "htmlView": "HTML",
  2528. "textView": "Plain text",
  2529. "desktopTooltip": "Preview at desktop width",
  2530. "mobileTooltip": "Preview at phone width",
  2531. "htmlViewTooltip": "Show the HTML email",
  2532. "previewWidth": "Preview width",
  2533. "previewView": "Preview view",
  2534. "textViewTooltip": "Show the plain-text version",
  2535. "inboxNow": "Now",
  2536. "inboxNoSender": "Your workshop",
  2537. "inboxNoSubject": "(no subject)",
  2538. "subject": "Subject",
  2539. "text": "Text",
  2540. "buttonLabel": "Button text",
  2541. "buttonHref": "Link",
  2542. "spacerHeight": "Height",
  2543. "tagsTitle": "Tags",
  2544. "tagsHint": "Click a tag to insert it where the cursor is in the field you last typed in.",
  2545. "theme": {
  2546. "colors": "Colours",
  2547. "primaryColor": "Primary",
  2548. "textColor": "Text",
  2549. "mutedColor": "Muted text",
  2550. "backgroundColor": "Background",
  2551. "panelColor": "Panels",
  2552. "invalidColor": "A colour is not a valid hex value",
  2553. "hexLabel": "{label} as hex",
  2554. "typography": "Typography",
  2555. "font": "Font",
  2556. "fontHint": "Only fonts every mail client already has. Web fonts are not loaded by most of them.",
  2557. "fonts": {
  2558. "system": "System",
  2559. "arial": "Arial",
  2560. "georgia": "Georgia",
  2561. "verdana": "Verdana",
  2562. "trebuchet": "Trebuchet MS",
  2563. "courier": "Courier New"
  2564. },
  2565. "lineSpacing": "Line spacing",
  2566. "lineSpacings": {
  2567. "compact": "Compact",
  2568. "normal": "Normal",
  2569. "relaxed": "Relaxed"
  2570. },
  2571. "paragraphSpacing": "Paragraph spacing",
  2572. "paragraphSpacings": {
  2573. "tight": "Tight",
  2574. "normal": "Normal",
  2575. "loose": "Loose"
  2576. },
  2577. "spacingHint": "Line spacing is the height of each line; paragraph spacing is the room between paragraphs and between text blocks. Enter starts a new paragraph, Shift+Enter a new line inside one.",
  2578. "shapes": "Shapes",
  2579. "buttonRadius": "Button corners",
  2580. "topBar": "Colour bar at the top",
  2581. "topBarHint": "A thin band in your primary colour along the top edge of the email.",
  2582. "showLogo": "Show logo",
  2583. "showLogoHint": "With the logo off, the header prints the workshop name instead."
  2584. },
  2585. "nameDialog": {
  2586. "title": "Save this template",
  2587. "body": "Give the template a name to find it by in the gallery. Saving also makes it the one this kind of email sends with.",
  2588. "placeholder": "Template name",
  2589. "nameExists": "A template with this name already exists. Choose another name.",
  2590. "save": "Save template",
  2591. "update": "Update template"
  2592. },
  2593. "testDialog": {
  2594. "title": "Send a test email",
  2595. "body": "The email is sent with sample data, so you can see it in a real mail client.",
  2596. "placeholder": "Email address",
  2597. "send": "Send",
  2598. "sending": "Sending…",
  2599. "sentTitle": "Test email sent",
  2600. "sentBody": "Check the inbox of {email}. It may take a minute to arrive.",
  2601. "failedTitle": "Could not send the test email",
  2602. "failedBody": "Check the email provider under Providers and try again."
  2603. },
  2604. "toolbar": {
  2605. "bold": "Bold",
  2606. "italic": "Italic",
  2607. "underline": "Underline",
  2608. "strike": "Strikethrough",
  2609. "link": "Link",
  2610. "linkUrl": "Link address",
  2611. "linkPlaceholder": "https://... or {share_link}",
  2612. "linkHint": "A web address, or a tag such as {share_link} that is filled in when the email is sent.",
  2613. "linkApply": "Apply",
  2614. "linkRemove": "Remove link",
  2615. "bulletList": "Bulleted list",
  2616. "orderedList": "Numbered list",
  2617. "align": {
  2618. "left": "Align left",
  2619. "center": "Align centre",
  2620. "right": "Align right"
  2621. },
  2622. "size": {
  2623. "label": "Text size",
  2624. "default": "Default size",
  2625. "small": "Small",
  2626. "normal": "Normal",
  2627. "large": "Large",
  2628. "extraLarge": "Extra large"
  2629. },
  2630. "color": {
  2631. "label": "Text colour",
  2632. "text": "Theme text colour",
  2633. "muted": "Theme muted colour",
  2634. "primary": "Theme primary colour",
  2635. "default": "Default",
  2636. "hex": "Hex colour",
  2637. "apply": "Apply"
  2638. },
  2639. "clear": "Clear formatting"
  2640. },
  2641. "logo": {
  2642. "title": "Logo",
  2643. "empty": "No logo uploaded. The header prints the workshop name.",
  2644. "upload": "Upload logo",
  2645. "replace": "Replace logo",
  2646. "remove": "Remove",
  2647. "uploading": "Uploading…",
  2648. "width": "Logo width",
  2649. "hint": "Separate from the company logo. It is trimmed and prepared for email when uploaded. PNG, JPEG or WebP up to 4 MB.",
  2650. "tooLarge": "The image must be under 4 MB",
  2651. "uploadFailed": "Could not upload the logo",
  2652. "position": "Position"
  2653. },
  2654. "image": {
  2655. "empty": "No picture uploaded. The block prints nothing until there is one.",
  2656. "upload": "Upload picture",
  2657. "replace": "Replace picture",
  2658. "remove": "Remove",
  2659. "uploading": "Uploading…",
  2660. "alt": "Description",
  2661. "altHint": "Read aloud to readers who cannot see the picture, and shown while it loads. PNG, JPEG or WebP up to 10 MB.",
  2662. "width": "Width",
  2663. "widthHint": "600 px is the full width of the email. Narrower pictures sit where Position says.",
  2664. "link": "Link",
  2665. "linkHint": "Optional. Opens when the picture is clicked; a tag such as the share link works here too.",
  2666. "tooLarge": "The image must be under 10 MB",
  2667. "uploadFailed": "Could not upload the picture"
  2668. },
  2669. "dragHandle": "Drag to reorder",
  2670. "dragHandleKeyboard": "Drag, or use the arrow keys, to move this block",
  2671. "tagDoesNotFit": "The tag does not fit in this field."
  2672. },
  2673. "workOrderStatuses": {
  2674. "title": "Work order statuses",
  2675. "description": "Your own names for the steps a job goes through. Each sits under one of the three stages and shows up in that stage's menu on every work order.",
  2676. "cardTitle": "Stages and statuses",
  2677. "suggestionsLabel": "Quick add",
  2678. "suggestions": {
  2679. "readyForPickup": {
  2680. "name": "Ready for pickup",
  2681. "message": "Hi {customer_name}, your {vehicle} is ready for pickup. {company_name}"
  2682. },
  2683. "waitingForCustomer": {
  2684. "name": "Waiting for customer"
  2685. },
  2686. "waitingForApproval": {
  2687. "name": "Waiting for approval",
  2688. "message": "Hi {customer_name}, we need your approval before we continue on your {vehicle}. Please get in touch. {company_name}"
  2689. }
  2690. },
  2691. "stageHints": {
  2692. "pending": "Before work starts. The job counts as open.",
  2693. "in-progress": "While the vehicle is being worked on. The job counts as open.",
  2694. "completed": "The work is done. The customer can see and pay the invoice, and the job leaves the technician's list."
  2695. },
  2696. "add": "Add status",
  2697. "builtIn": "Built in",
  2698. "asksToNotify": "Offers to notify",
  2699. "notifyHint": "When a job reaches this status, offer to send the customer a message. Nothing is sent until you confirm it.",
  2700. "moveUp": "Move up",
  2701. "moveDown": "Move down",
  2702. "edit": "Edit",
  2703. "remove": "Remove",
  2704. "empty": "No statuses of your own here yet.",
  2705. "removeTitle": "Remove {name}?",
  2706. "removeBody": "It leaves the menus. Jobs that carry it keep showing it.",
  2707. "addTitle": "New status",
  2708. "editTitle": "Edit status",
  2709. "dialogBody": "A status is a name with a colour. The stage it sits under decides how the job is treated.",
  2710. "name": "Name",
  2711. "namePlaceholder": "Ready for pickup",
  2712. "stage": "Stage",
  2713. "color": "Colour",
  2714. "notify": "Offer to notify the customer",
  2715. "message": "Message",
  2716. "tokens": "Insert:",
  2717. "cancel": "Cancel",
  2718. "save": "Save",
  2719. "saved": "Status saved",
  2720. "failed": "Could not save the status",
  2721. "messageEmptyHint": "Left empty, the text above is sent.",
  2722. "useSuggested": "Edit this text"
  2723. },
  2724. "markTypes": {
  2725. "title": "Kinds of mark",
  2726. "description": "Rename or recolour the built-in kinds, hide the ones you never use, and add your own. Each kind has a shape as well as a colour, so it reads on a black-and-white print too.",
  2727. "cardTitle": "Kinds",
  2728. "add": "Add kind",
  2729. "addTitle": "New kind of mark",
  2730. "editTitle": "Edit kind of mark",
  2731. "dialogBody": "A name in your own words, a shape and a colour. Filled means a major mark.",
  2732. "previewHint": "Minor and major",
  2733. "name": "Name",
  2734. "namePlaceholder": "e.g. Curb rash",
  2735. "shape": "Shape",
  2736. "color": "Colour",
  2737. "customColor": "Hex colour",
  2738. "colorInvalid": "Enter a colour as six hex digits, like #2563eb",
  2739. "hidden": "Hidden from the picker",
  2740. "hiddenHint": "Marks of this kind still show and print.",
  2741. "hiddenBadge": "Hidden",
  2742. "builtin": "Built in",
  2743. "show": "Show in the picker",
  2744. "hide": "Hide from the picker",
  2745. "edit": "Edit",
  2746. "moveUp": "Move up",
  2747. "moveDown": "Move down",
  2748. "restore": "Restore",
  2749. "restoreTitle": "Restore \"{name}\"?",
  2750. "restoreBody": "The kind goes back to the name, shape and colour the app ships with.",
  2751. "remove": "Remove",
  2752. "removeTitle": "Remove \"{name}\"?",
  2753. "removeBody": "Only a kind no mark uses can be removed. Hide it if marks of it exist.",
  2754. "save": "Save",
  2755. "cancel": "Cancel",
  2756. "saved": "Saved",
  2757. "failed": "Could not save",
  2758. "shapes": {
  2759. "circle": "Circle",
  2760. "diamond": "Diamond",
  2761. "triangle": "Triangle",
  2762. "square": "Square",
  2763. "cross": "Cross",
  2764. "hex": "Hexagon"
  2765. }
  2766. }
  2767. }