settings.json 98 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020
  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. "currency": {
  47. "title": "Currency",
  48. "description": "Currency & tax defaults"
  49. },
  50. "localization": {
  51. "title": "Localization",
  52. "description": "Language, currency, date & time"
  53. },
  54. "customFields": {
  55. "title": "Custom Fields",
  56. "description": "Define custom data fields"
  57. },
  58. "email": {
  59. "title": "Email",
  60. "description": "Email provider & sending"
  61. },
  62. "sms": {
  63. "title": "SMS",
  64. "description": "SMS provider & messaging"
  65. },
  66. "telegram": {
  67. "title": "Telegram",
  68. "description": "Telegram bot & messaging"
  69. },
  70. "customerPortal": {
  71. "title": "Customer Portal",
  72. "description": "Customer self-service portal"
  73. },
  74. "workshop": {
  75. "title": "Workshop",
  76. "description": "Technician & labor defaults"
  77. },
  78. "laborPresets": {
  79. "title": "Labor Presets",
  80. "description": "Predefined labor packages"
  81. },
  82. "maintenance": {
  83. "title": "Maintenance",
  84. "description": "Predicted service intervals"
  85. },
  86. "ai": {
  87. "title": "AI",
  88. "description": "AI provider & features"
  89. },
  90. "reportSchedule": {
  91. "title": "Report Schedule",
  92. "description": "Automated report delivery"
  93. },
  94. "integrations": {
  95. "title": "Integrations",
  96. "description": "Calendars, video calls and connected services"
  97. },
  98. "webhooks": {
  99. "title": "Webhooks",
  100. "description": "Real-time event notifications"
  101. },
  102. "appearance": {
  103. "title": "Appearance",
  104. "description": "Theme & display"
  105. },
  106. "data": {
  107. "title": "Data",
  108. "description": "Export & import backup"
  109. },
  110. "install": {
  111. "title": "Install app",
  112. "description": "Add Torqvoice to this device"
  113. },
  114. "license": {
  115. "title": "License",
  116. "description": "White-label license"
  117. },
  118. "about": {
  119. "title": "About",
  120. "description": "Version & info"
  121. },
  122. "alerts": {
  123. "title": "Alerts",
  124. "description": "Get told when parts need reordering"
  125. },
  126. "support": {
  127. "title": "Support",
  128. "description": "Contact support and manage the support button"
  129. },
  130. "tireHotel": {
  131. "title": "Tire hotel",
  132. "description": "Seasonal tire storage"
  133. },
  134. "providers": {
  135. "title": "Providers",
  136. "description": "Email, SMS, WhatsApp & Telegram"
  137. },
  138. "inspectionReminders": {
  139. "title": "Inspection reminders",
  140. "description": "Booking link, duration and lead time"
  141. }
  142. },
  143. "pro": "PRO"
  144. },
  145. "readOnly": {
  146. "banner": "You have view-only access to settings. Contact an admin to make changes."
  147. },
  148. "featureLocked": {
  149. "requiresPro": "Requires a Pro license",
  150. "upgradePlan": "Upgrade Plan",
  151. "activateLicense": "Activate License"
  152. },
  153. "company": {
  154. "logoTitle": "Company Logo",
  155. "logoAlt": "Company logo",
  156. "upload": "Upload",
  157. "remove": "Remove",
  158. "logoHint": "JPG, PNG, WebP, SVG — max 2MB",
  159. "uploadingLogo": "Uploading logo...",
  160. "logoUpdated": "Logo updated",
  161. "failedUploadLogo": "Failed to upload logo",
  162. "detailsTitle": "Company Details",
  163. "shopName": "Company / Shop Name",
  164. "shopNamePlaceholder": "Joe's Auto Repair",
  165. "orgNumber": "Organization Number",
  166. "orgNumberPlaceholder": "123 456 789",
  167. "phone": "Phone",
  168. "phonePlaceholder": "(555) 123-4567",
  169. "email": "Email",
  170. "emailPlaceholder": "service@example.com",
  171. "address": "Address",
  172. "slogan": "Slogan",
  173. "sloganPlaceholder": "Independent service and repair, every make",
  174. "sloganHint": "One line under your name on invoices and quotes.",
  175. "addressPlaceholder": "123 Main Street\nSuite 100\nCity, State 12345",
  176. "saveCompany": "Save Company Details",
  177. "addNewCompany": "Add New Company",
  178. "companyName": "Company Name",
  179. "companyNamePlaceholder": "e.g. Joe's Auto Repair",
  180. "cancel": "Cancel",
  181. "createCompany": "Create Company",
  182. "settingsSaved": "Company settings saved",
  183. "failedSave": "Failed to save settings",
  184. "companyCreated": "Company created successfully",
  185. "serviceType": "Service Type",
  186. "serviceTypeDescription": "Select the type of service your workshop provides. This changes field labels throughout the application.",
  187. "automotive": "Automotive",
  188. "automotiveDescription": "Cars, trucks, and other road vehicles",
  189. "marineService": "Marine",
  190. "marineServiceDescription": "Boats, yachts, and marine vessels"
  191. },
  192. "account": {
  193. "profileTitle": "Profile",
  194. "profileDescription": "Update your display name and email address.",
  195. "emailVerified": "Verified",
  196. "emailNotVerified": "Not verified",
  197. "sendVerificationEmail": "Send verification email",
  198. "verificationEmailSent": "Verification email sent. Check your inbox.",
  199. "verificationEmailFailed": "Failed to send verification email",
  200. "resendCooldown": "Resend in {seconds}s",
  201. "emailChangeSent": "A confirmation link has been sent to your new email address. Your email will be updated once you click the link.",
  202. "name": "Name",
  203. "namePlaceholder": "Your name",
  204. "emailLabel": "Email",
  205. "emailPlaceholder": "Your email",
  206. "saveProfile": "Save Profile",
  207. "profileUpdated": "Profile updated",
  208. "failedUpdateProfile": "Failed to update profile",
  209. "failedUpdateEmail": "Failed to update email",
  210. "changePasswordTitle": "Change Password",
  211. "changePasswordDescription": "Enter your current password and choose a new one.",
  212. "currentPassword": "Current Password",
  213. "newPassword": "New Password",
  214. "confirmNewPassword": "Confirm New Password",
  215. "changePassword": "Change Password",
  216. "passwordChanged": "Password changed",
  217. "passwordsNoMatch": "Passwords do not match",
  218. "passwordMinLength": "Password must be at least 8 characters",
  219. "failedChangePassword": "Failed to change password",
  220. "twoFactorTitle": "Two-Factor Authentication",
  221. "twoFactorEnabled": "Two-factor authentication is enabled",
  222. "twoFactorDisablePrompt": "Enter your password to disable two-factor authentication.",
  223. "twoFactorEnablePrompt": "Add an extra layer of security to your account by enabling two-factor authentication with an authenticator app.",
  224. "password": "Password",
  225. "enterPassword": "Enter your password",
  226. "disable2FA": "Disable 2FA",
  227. "enable2FA": "Enable 2FA",
  228. "twoFactorDisabled": "Two-factor authentication disabled",
  229. "failedEnable2FA": "Failed to enable 2FA",
  230. "failedDisable2FA": "Failed to disable 2FA",
  231. "enterPasswordError": "Please enter your password",
  232. "setupDialogTitle": "Enable Two-Factor Authentication",
  233. "setupDialogDescription": "Enter your password to begin setting up 2FA with an authenticator app.",
  234. "continue": "Continue",
  235. "scanQRTitle": "Scan QR Code",
  236. "scanQRDescription": "Scan this QR code with your authenticator app (Google Authenticator, Authy, etc.)",
  237. "verifyCodeTitle": "Verify Code",
  238. "verifyCodeDescription": "Enter the 6-digit code from your authenticator app to verify it's set up correctly.",
  239. "authCode": "Authentication Code",
  240. "authCodePlaceholder": "000000",
  241. "back": "Back",
  242. "verify": "Verify",
  243. "enterCodeError": "Please enter the code from your authenticator app",
  244. "invalidCode": "Invalid code. Please try again.",
  245. "verificationFailed": "Verification failed",
  246. "backupCodesTitle": "Save Backup Codes",
  247. "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.",
  248. "copyCodes": "Copy Codes",
  249. "copied": "Copied",
  250. "backupCodesCopied": "Backup codes copied to clipboard",
  251. "savedBackupCodes": "I've saved my backup codes",
  252. "twoFactorEnabledSuccess": "Two-factor authentication enabled",
  253. "dangerZone": "Danger Zone",
  254. "deleteContentTitle": "Delete Content",
  255. "deleteContentDescription": "Selectively delete organization data such as vehicles, customers, quotes, or inventory. Your account and settings will remain intact.",
  256. "deleteContentButton": "Delete Content",
  257. "deleteAccountTitle": "Delete Account",
  258. "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.",
  259. "deleteAccountButton": "Delete Account",
  260. "deleteAccountDialogTitle": "Delete Account",
  261. "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.",
  262. "deleteAccountConfirmPhrase": "delete me",
  263. "deleteAccountConfirmPrompt": "Type <bold>delete me</bold> to confirm",
  264. "permanentlyDelete": "Permanently Delete",
  265. "deleting": "Deleting...",
  266. "failedDeleteAccount": "Failed to delete account",
  267. "deleteContentDialogTitle": "Delete Content",
  268. "deleteContentDialogDescription": "Select the content you want to permanently delete. This action cannot be undone.",
  269. "contentVehicles": "Vehicles",
  270. "contentVehiclesDescription": "All vehicles and their service records, notes, reminders, fuel logs, and recurring invoices",
  271. "contentCustomers": "Customers",
  272. "contentCustomersDescription": "All customer records. Vehicles linked to deleted customers will be unlinked.",
  273. "contentQuotes": "Quotes",
  274. "contentQuotesDescription": "All quotes and their line items",
  275. "contentInventory": "Inventory",
  276. "contentInventoryDescription": "All inventory parts and their images",
  277. "contentInspections": "Inspections",
  278. "contentInspectionsDescription": "All vehicle inspections and their results",
  279. "contentTechnicians": "Technicians",
  280. "contentTechniciansDescription": "All technician profiles. Linked records will be unlinked.",
  281. "contentInspectionTemplates": "Inspection Templates",
  282. "contentInspectionTemplatesDescription": "All inspection templates and their sections. Delete inspections first.",
  283. "contentNotifications": "Notifications",
  284. "contentNotificationsDescription": "All system notifications",
  285. "contentSmsMessages": "SMS Messages",
  286. "contentSmsMessagesDescription": "All sent and received SMS messages",
  287. "contentCustomFields": "Custom Fields",
  288. "contentCustomFieldsDescription": "All custom field definitions and their values",
  289. "deleteContentConfirmPhrase": "delete my data",
  290. "deleteContentConfirmPrompt": "Type <bold>delete my data</bold> to confirm",
  291. "deleteSelected": "Delete {count} selected",
  292. "contentDeleted": "Selected content has been permanently deleted",
  293. "failedDeleteContent": "Failed to delete content",
  294. "passkey": {
  295. "title": "Passkeys",
  296. "description": "Sign in with biometrics or a security key instead of a password.",
  297. "noPasskeys": "No passkeys registered yet.",
  298. "unnamed": "Unnamed passkey",
  299. "singleDevice": "This device only",
  300. "multiDevice": "Synced across devices",
  301. "register": "Register Passkey",
  302. "registering": "Registering...",
  303. "registerSuccess": "Passkey registered successfully",
  304. "registerFailed": "Failed to register passkey",
  305. "delete": "Delete",
  306. "deleteSuccess": "Passkey deleted",
  307. "deleteFailed": "Failed to delete passkey",
  308. "rename": "Rename Passkey",
  309. "renameFailed": "Failed to rename passkey",
  310. "nameLabel": "Name",
  311. "namePlaceholder": "e.g. MacBook Pro, iPhone",
  312. "cancel": "Cancel",
  313. "save": "Save",
  314. "confirmDeleteTitle": "Delete Passkey",
  315. "confirmDelete": "Are you sure you want to delete this passkey? You won't be able to sign in with it anymore."
  316. },
  317. "cancel": "Cancel",
  318. "deleteWorkshopTitle": "Delete Workshop",
  319. "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.",
  320. "deleteWorkshopButton": "Delete Workshop",
  321. "deleteWorkshopDialogTitle": "Delete this workshop?",
  322. "deleteWorkshopDialogDescription": "This permanently deletes the workshop and everything in it. This action cannot be undone.",
  323. "deleteWorkshopConfirmPrompt": "Type <bold>{name}</bold> to confirm.",
  324. "deleteWorkshopSuccess": "Workshop deleted",
  325. "deleteWorkshopFailed": "Failed to delete the workshop",
  326. "deleteAccountMoved": "Want to delete your account?",
  327. "deleteAccountMovedLink": "You can do that in Data settings."
  328. },
  329. "team": {
  330. "title": "Team",
  331. "noOrgDescription": "Create a team to share data with other users.",
  332. "orgDescription": "Manage your organization members and their roles.",
  333. "createOrg": "Create Organization",
  334. "createOrgDescription": "Create an organization to invite team members. You will be the owner.",
  335. "orgName": "Organization Name",
  336. "orgNamePlaceholder": "My Workshop",
  337. "create": "Create",
  338. "orgCreated": "Organization created",
  339. "failedCreateOrg": "Failed to create organization",
  340. "memberCount": "{count} member",
  341. "memberCountPlural": "{count} members",
  342. "admin": "Admin",
  343. "member": "Member",
  344. "inviteByEmail": "Invite by Email",
  345. "inviteEmailPlaceholder": "user@example.com",
  346. "invite": "Invite",
  347. "invited": "Member invited successfully.",
  348. "userNotFoundTitle": "User Not Found",
  349. "userNotFoundDescription": "No account found for \"{email}\". Send them an invitation email to sign up and join your team?",
  350. "sendInvitation": "Send Invitation",
  351. "invitationSentTitle": "Invitation Sent",
  352. "invitationSentDescription": "An invitation email has been sent to {email}.",
  353. "failedInvite": "Failed to invite member",
  354. "failedSendInvitation": "Failed to send invitation",
  355. "pendingInvitations": "Pending Invitations",
  356. "invitedAs": "Invited as {role}",
  357. "expires": "Expires {date}",
  358. "pending": "Pending",
  359. "copyInviteLink": "Copy invite link",
  360. "inviteLinkCopied": "Invite link copied to clipboard",
  361. "cancelInvitation": "Cancel Invitation",
  362. "cancelInvitationDescription": "Cancel the invitation to {email}? They will no longer be able to use this link to join.",
  363. "invitationCancelled": "Invitation cancelled",
  364. "failedCancelInvitation": "Failed to cancel invitation",
  365. "customRoles": "Custom Roles",
  366. "newRole": "New Role",
  367. "roleName": "Role Name",
  368. "roleNamePlaceholder": "e.g. Technician",
  369. "fullAdminAccess": "Full admin access (bypasses all permission checks)",
  370. "permissions": "Permissions",
  371. "createRole": "Create Role",
  372. "updateRole": "Update Role",
  373. "roleCreated": "Role created",
  374. "roleUpdated": "Role updated",
  375. "failedSaveRole": "Failed to save role",
  376. "deleteRole": "Delete Role",
  377. "deleteRoleDescription": "Delete the \"{name}\" role? Members with this role will lose their custom permissions.",
  378. "roleDeleted": "Role deleted",
  379. "failedDeleteRole": "Failed to delete role",
  380. "fullAccess": "Full access",
  381. "permissionCount": "{count} permission",
  382. "permissionCountPlural": "{count} permissions",
  383. "noCustomRoles": "No custom roles yet. Create one to define granular permissions for team members.",
  384. "presetAll": "All",
  385. "presetViewOnly": "View Only",
  386. "presetWriteAll": "Read & Write",
  387. "presetNone": "None",
  388. "builtInRoles": "Built-in Roles",
  389. "ownerLabel": "Owner",
  390. "ownerDescription": "Full access. Can manage members, change roles, and delete the organization.",
  391. "adminLabel": "Admin",
  392. "adminDescription": "Can invite/remove members and manage shared data.",
  393. "memberLabel": "Member",
  394. "memberDescription": "Permissions are set by the assigned role. Without a role, this member cannot do anything.",
  395. "roleAssigned": "Role updated",
  396. "failedAssignRole": "Failed to update role",
  397. "removeMemberTitle": "Remove Member",
  398. "removeMemberDescription": "Remove {name} from the team? They will lose access to shared data.",
  399. "removeButton": "Remove",
  400. "memberRemoved": "Member removed",
  401. "failedRemoveMember": "Failed to remove member",
  402. "memberRoleUpdated": "Member role updated",
  403. "failedUpdateRole": "Failed to update role",
  404. "removeMember": "Remove member",
  405. "cancelInvite": "Cancel invitation",
  406. "editRole": "Edit role",
  407. "technician": "Technician",
  408. "technicianHint": "Can be assigned jobs and use the technician app",
  409. "technicianFailed": "Could not change that",
  410. "setupApp": "Set up app",
  411. "setupAppTitle": "Set up the technician app",
  412. "setupAppInstruction": "Ask {name} to do this on their phone:",
  413. "setupAppOrType": "Or read them this code:",
  414. "setupAppExpiry": "Works once, and expires in {time}.",
  415. "setupAppExpired": "This code has expired. Close and start again.",
  416. "setupAppDone": "Done",
  417. "setupAppFailed": "Could not create a setup code",
  418. "setupPageTitle": "Set up the technician app",
  419. "setupPageBody": "Open Torqvoice Tech on this phone, tap Scan setup code, and point it at the same code again.",
  420. "setupPageCode": "Or type this code in the app",
  421. "setupPageOpenApp": "Open Torqvoice Tech",
  422. "setupPageExpiry": "This code works once and expires ten minutes after your workshop created it.",
  423. "setupAppStep1": "Install Torqvoice Tech",
  424. "setupAppStep2": "Open it and tap “Scan setup code”",
  425. "setupAppStep3": "Point the phone at this code",
  426. "setupAppNotCamera": "The phone's own camera app will not work. It has to be scanned from inside Torqvoice Tech.",
  427. "addTechnician": "Add a technician",
  428. "addTechnicianHint": "For a mechanic standing at the counter. No email, no waiting.",
  429. "technicianName": "Name",
  430. "technicianNamePlaceholder": "Their full name",
  431. "technicianPhone": "Mobile number",
  432. "technicianPhonePlaceholder": "The phone in their pocket",
  433. "addTechnicianSubmit": "Create",
  434. "addTechnicianNote": "They sign in with that number from then on. No password to remember, and nothing to type on the app’s first screen.",
  435. "addTechnicianDone": "{name} is set up. Show them the code.",
  436. "addTechnicianFailed": "Could not create that technician",
  437. "setupAppCopyLink": "Copy link to send them",
  438. "setupAppCopied": "Copied",
  439. "revokeTechnicianTitle": "Sign them out of the app?",
  440. "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.",
  441. "revokeTechnicianConfirm": "Sign them out",
  442. "addPerson": "Add",
  443. "addPersonTitle": "Add someone to the workshop",
  444. "addPersonWho": "These two are set up in different ways, so start by telling us which one this is.",
  445. "choiceTechnician": "A mechanic",
  446. "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.",
  447. "choiceMember": "Someone in the office",
  448. "choiceMemberHint": "Books cars in, orders parts and sends invoices, on a computer. You send them an email and they pick their own password.",
  449. "stepLabelWho": "Who",
  450. "stepLabelDetails": "Details",
  451. "stepLabelPhone": "Their phone",
  452. "techDetailsTitle": "Their name and mobile number",
  453. "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.",
  454. "techHandoffTitle": "Now get it onto their phone",
  455. "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.",
  456. "memberDetailsTitle": "Their email address",
  457. "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.",
  458. "roleHint": "Admins can change settings and add people. Everyone else does the day-to-day work.",
  459. "stepBack": "Back",
  460. "stepHandoffDone": "They have scanned it",
  461. "stepDoneTitle": "{name} is ready",
  462. "stepDoneBody": "They can open the app and see their jobs. Next time they sign in it is just their mobile number, no code needed.",
  463. "stepInvitedTitle": "Invitation sent to {email}",
  464. "stepInvitedBody": "They will show up in the list once they have opened the email and accepted. The link works for seven days.",
  465. "stepDoneAnother": "Add someone else",
  466. "clashTitle": "{name} already has that number",
  467. "clashBlurb": "Two people cannot share a mobile number, because it is what they sign in with. Which of these is it?",
  468. "clashSamePerson": "This is {name}",
  469. "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.",
  470. "clashTakeover": "No, this is {name}",
  471. "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.",
  472. "clashDifferentNumber": "Neither, let me change the number",
  473. "workshopCountry": "Which country is your workshop in?",
  474. "workshopCountryPlaceholder": "Choose a country",
  475. "workshopCountryHint": "Asked once. After this, mobile numbers can be typed the short way. You can change it later in <link>Localisation settings</link>.",
  476. "phonePreview": "Saved as",
  477. "stepScannedTitle": "{name} is in",
  478. "countrySearch": "Search countries",
  479. "countryNoMatch": "No country matches that",
  480. "choiceStandalone": "A name for the board only",
  481. "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.",
  482. "standaloneDetailsTitle": "Their name, and a colour",
  483. "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.",
  484. "boardColour": "Colour on the board",
  485. "stepStandaloneTitle": "{name} is on the board",
  486. "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.",
  487. "boardOnly": "On the board only",
  488. "boardOnlyHint": "Scheduled and put on jobs, but they never sign in. Give them a mobile number when they need the app.",
  489. "boardOnlyNoAccount": "No account",
  490. "giveApp": "Give them the app",
  491. "giveAppTitle": "Give {name} the app",
  492. "giveAppBlurb": "A mobile number is all that is missing. They sign in with it from then on.",
  493. "giveAppKeepsHistory": "Everything already recorded against them stays where it is.",
  494. "giveAppSubmit": "Create their account",
  495. "role": "Role",
  496. "inviteMemberHint": "They get an email and choose their own password.",
  497. "removeBoardOnlyTitle": "Take {name} off the board?",
  498. "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.",
  499. "removeBoardOnlyDone": "{name} is off the board",
  500. "noRole": "No role",
  501. "worksOnJobs": "Works on jobs",
  502. "createDefaultRoles": "Create the standard roles",
  503. "defaultRolesCreated": "Standard roles created",
  504. "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.",
  505. "noRoleDescription": "No permissions at all. They can sign in and every screen will refuse them until you give them a role below.",
  506. "cannotUseApp": "Their role cannot work on jobs. Give them Technician, or a role with the same permissions, first.",
  507. "revokeTechnicianDone": "{name} has been signed out of the app",
  508. "noAccessTitle": "No access yet",
  509. "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.",
  510. "setupPageInstall": "Get it on Google Play"
  511. },
  512. "invoice": {
  513. "title": "Invoice & Quotes",
  514. "description": "Configure invoice settings, layout and custom fields.",
  515. "tabs": {
  516. "general": "General",
  517. "layout": "Layout",
  518. "customFields": "Custom Fields"
  519. },
  520. "invoiceNumberFormat": "Invoice Number Format",
  521. "invoiceNumberFormatHint": "Use <code>{year}</code> for the current year. Preview: <bold>{preview}</bold>",
  522. "quoteNumberFormat": "Quote Number Format",
  523. "quoteNumberFormatHint": "Use <code>{year}</code> for the current year. Preview: <bold>{preview}</bold>",
  524. "quoteValidDays": "Quote Validity (Days)",
  525. "quoteValidDaysHint": "New quotes get a valid until date this many days ahead. Set 0 to disable.",
  526. "sectionInvoices": "Invoices",
  527. "sectionQuotes": "Quotes",
  528. "nextInvoiceNumber": "Next Invoice Number",
  529. "nextInvoiceNumberPlaceholder": "e.g. 94",
  530. "nextInvoiceNumberHint": "Next invoice will use this number (e.g. {example})",
  531. "dueDays": "Due Days",
  532. "dueDaysHint": "Number of days until invoice is due",
  533. "visibilityTitle": "Visibility on Invoice",
  534. "companyLogo": "Company Logo",
  535. "companyLogoHint": "Display company logo in invoice header",
  536. "companyName": "Company Name",
  537. "companyNameHint": "Display company name text in invoice header",
  538. "bankAccount": "Bank Account",
  539. "bankAccountHint": "Show bank account / IBAN on invoice",
  540. "organizationNumber": "Organization Number",
  541. "organizationNumberHint": "Show org number on invoice header",
  542. "customFooter": "Custom Invoice Footer",
  543. "footerPlaceholder": "Thank you for your business!",
  544. "footerHint": "This text appears at the bottom of every invoice",
  545. "partsMarkupTitle": "Parts Markup",
  546. "partsMarkupDescription": "Markup applied to vendor cost when adding parts. Internal only — the customer never sees the cost or markup, only the final price.",
  547. "defaultMarkupPercent": "Default Markup %",
  548. "defaultMarkupPercentHint": "New manually-added parts pre-fill with this markup. Leave at 0 to enter prices manually.",
  549. "markupAppliesToInventory": "Apply markup to inventory parts",
  550. "markupAppliesToInventoryHint": "When enabled, parts picked from inventory also use cost + default markup (overrides the inventory sell price).",
  551. "saveInvoice": "Save Invoice Settings",
  552. "saved": "Invoice settings saved",
  553. "layoutDescription": "Customize the order and visibility of sections in your invoices and quotes.",
  554. "layoutSaved": "Layout saved successfully",
  555. "preview": "Preview",
  556. "layoutDocInvoice": "Invoice",
  557. "layoutDocQuote": "Quote",
  558. "saveLayout": "Save Layout",
  559. "resetLayout": "Reset to Default",
  560. "sectionCustomers": "Customers",
  561. "assignCustomerNumbers": "Assign customer numbers",
  562. "assignCustomerNumbersHint": "{count} customers have no number yet. Assign sequential numbers to them (existing numbers are kept).",
  563. "customerNumbersAssigned": "Assigned numbers to {count} customers",
  564. "allCustomersNumbered": "All customers have a number.",
  565. "assignCustomerNumbersConfirmTitle": "Assign customer numbers?",
  566. "assignCustomerNumbersConfirmDescription": "This will give sequential numbers to the {count} customers that have no number yet, in the order they were created, continuing after your highest existing number. Customers that already have a number are not changed. Numbers can be edited afterwards.",
  567. "layoutColorsHint": "Colors, fonts and the header style live in Templates.",
  568. "goToTemplates": "Open Templates",
  569. "lockTitle": "Locking finished documents",
  570. "lockDescription": "Stop an invoice or quote being changed once it is settled.",
  571. "lockWhatItDoes": "What it freezes: parts, labour, quantities, prices, discount, tax, the document number and its date. Deleting the document is blocked too.",
  572. "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.",
  573. "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.",
  574. "lockInvoicesLabel": "Lock invoices",
  575. "lockTriggerSent": "Once the invoice is sent",
  576. "lockTriggerPaid": "Once the invoice is paid in full",
  577. "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.",
  578. "lockTriggerPaidHint": "Locks once the full amount is settled, or the invoice is marked paid by hand. A part-paid invoice stays editable.",
  579. "lockQuotesLabel": "Lock quotes",
  580. "quoteLockTriggerSent": "Once the quote is sent",
  581. "quoteLockTriggerAccepted": "Once the quote is accepted",
  582. "quoteLockTriggerSentHint": "Locks as soon as the quote goes to the customer. Choose this only if you never revise a quote during negotiation.",
  583. "quoteLockTriggerAcceptedHint": "Locks once the customer has accepted the quote, or it has been converted to a job. Sent quotes stay editable.",
  584. "freezeTitle": "Invoices from before locking",
  585. "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.",
  586. "freezeNone": "Every invoice that reached a customer is locked as it was sent.",
  587. "freezeButton": "Lock them with the current design",
  588. "freezeConfirmTitle": "Lock {count, plural, one {# invoice} other {# invoices}}?",
  589. "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.",
  590. "freezeProgress": "Locked {done} of {total}",
  591. "freezeDone": "{count, plural, one {# invoice} other {# invoices}} locked",
  592. "freezeFailed": "Could not lock the invoices"
  593. },
  594. "layoutEditor": {
  595. "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.",
  596. "addField": "Add field",
  597. "custom": "custom",
  598. "full": "Full",
  599. "boxed": "Box",
  600. "plain": "Plain",
  601. "boxedHint": "Prints inside a panel",
  602. "plainHint": "Prints without a panel",
  603. "L": "L",
  604. "R": "R",
  605. "left": "left",
  606. "right": "right",
  607. "halfWidthHint": "Half width ({column}) — click to make full width",
  608. "fullWidthHint": "Full width — click to make half width (left)",
  609. "sections": {
  610. "header": "Header",
  611. "slogan": "Slogan",
  612. "customer": "Customer",
  613. "vehicle": "Vehicle",
  614. "service": "Service",
  615. "document_title": "Document Title",
  616. "items_table": "Items Table",
  617. "parts_table": "Parts Table",
  618. "labor_table": "Labor Table",
  619. "totals": "Totals",
  620. "notes": "Notes",
  621. "attached_documents": "Attached Documents",
  622. "diagnostic_notes": "Diagnostic Notes",
  623. "findings": "Observations",
  624. "warranty": "Warranty",
  625. "bank_account": "Bank Account",
  626. "footer": "Footer",
  627. "general": "General",
  628. "telegram_qr": "Telegram QR"
  629. },
  630. "fields": {
  631. "customer_name": "Customer Name",
  632. "customer_company": "Customer Company",
  633. "customer_address": "Customer Address",
  634. "customer_email": "Customer Email",
  635. "customer_phone": "Customer Phone",
  636. "customer_tax_id": "Customer Tax ID",
  637. "vehicle_name": "Vehicle",
  638. "vin": "VIN",
  639. "license_plate": "License Plate",
  640. "mileage": "Mileage",
  641. "service_title": "Service Title",
  642. "service_type": "Service Type",
  643. "tech_name": "Technician",
  644. "logo": "Logo",
  645. "company_name": "Company Name",
  646. "company_slogan": "Slogan",
  647. "company_address": "Address",
  648. "company_phone": "Phone",
  649. "company_email": "Email",
  650. "company_org_number": "Organization Number",
  651. "bank_account": "Bank Account",
  652. "footer_note": "Footer Note",
  653. "org_number": "Organization Number",
  654. "payment_terms": "Payment Terms",
  655. "due_date": "Due Date",
  656. "title": "Title",
  657. "invoice_number": "Invoice No.",
  658. "customer_number": "Customer No.",
  659. "date": "Date",
  660. "portal_link": "Portal Link"
  661. },
  662. "presetsTitle": "Start from an arrangement",
  663. "presetsHint": "Replaces the arrangement below. Nothing is saved until you save.",
  664. "presets": {
  665. "classic": {
  666. "name": "Classic",
  667. "description": "Parts and labor in separate tables, details stacked on the left"
  668. },
  669. "letterhead": {
  670. "name": "Letterhead",
  671. "description": "Contact details along the bottom, title below the addresses"
  672. },
  673. "compact": {
  674. "name": "Compact",
  675. "description": "No panels, only the essentials"
  676. },
  677. "minimal": {
  678. "name": "Minimal",
  679. "description": "Bare type on white: no boxes, no bands, just rules and whitespace"
  680. },
  681. "itemized": {
  682. "name": "Itemized",
  683. "description": "One numbered item list with a unit column"
  684. },
  685. "detailed": {
  686. "name": "Detailed",
  687. "description": "Title up top, vehicle on its own, both tables and every optional block"
  688. }
  689. },
  690. "style": {
  691. "documentTitle": "Whole sheet",
  692. "documentHint": "size, spacing, accent, banding",
  693. "textColor": "Text",
  694. "labelColor": "Heading",
  695. "backgroundColor": "Fill",
  696. "borderColor": "Border",
  697. "fontSize": "Size",
  698. "rowPadding": "Row height",
  699. "margin": "Margin",
  700. "accentColor": "Accent",
  701. "stripeColor": "Band",
  702. "stripes": "Banding",
  703. "fontFamily": "Font",
  704. "fontInherit": "Inherit"
  705. }
  706. },
  707. "templates": {
  708. "title": "Templates",
  709. "invoiceDescription": "Customize the appearance of your PDF invoices and quotes.",
  710. "inspectionsDescription": "Manage inspection checklists and multi-point templates.",
  711. "smsDescription": "Customize the SMS messages sent to customers.",
  712. "tabs": {
  713. "invoice": "Invoice",
  714. "quotation": "Quotation",
  715. "inspections": "Inspections",
  716. "sms": "SMS",
  717. "layout": "Layout"
  718. },
  719. "presets": "Template Presets",
  720. "primaryColor": "Primary Color",
  721. "colors": "Colors",
  722. "textColor": "Text",
  723. "textColorHint": "The color of headings and body text",
  724. "companyTextColor": "Company name",
  725. "companyTextColorHint": "The color of the name on the letterhead",
  726. "frameBorderColor": "Frame line",
  727. "frameBorderColorHint": "The line where the frame meets the paper",
  728. "frameShadow": "Frame shadow",
  729. "frameShadowOn": "Shadow",
  730. "frameShadowOff": "Flat",
  731. "backgroundColor": "Background",
  732. "backgroundColorClear": "Clear",
  733. "backgroundColorHint": "Leave empty for white paper. A light tint prints as a tinted sheet.",
  734. "fontAndLayout": "Font & Layout",
  735. "fontFamily": "Font Family",
  736. "helveticaDefault": "Helvetica (Default)",
  737. "timesRoman": "Times Roman",
  738. "courier": "Courier",
  739. "headerStyle": "Header Style",
  740. "logoSize": "Logo Size",
  741. "standard": "Standard",
  742. "compact": "Compact",
  743. "modern": "Modern",
  744. "framed": "Framed",
  745. "letterheadMark": "Letterhead mark",
  746. "letterheadLogo": "Logo",
  747. "letterheadCompanyName": "Company name",
  748. "preview": "{name} Preview",
  749. "billTo": "Bill To",
  750. "preparedFor": "Prepared For",
  751. "vehicle": "Vehicle",
  752. "part": "Part",
  753. "qty": "Qty",
  754. "price": "Price",
  755. "total": "Total",
  756. "labor": "Labor",
  757. "hours": "Hours",
  758. "rate": "Rate",
  759. "subtotal": "Subtotal",
  760. "tax": "Tax ({rate}%)",
  761. "previewService": "Service",
  762. "previewNotes": "Notes",
  763. "previewDiagnosticNotes": "Diagnostic Notes",
  764. "previewDue": "Due: {date}",
  765. "previewAdditionalInfo": "Additional Information",
  766. "previewThankYou": "Thank you for your business",
  767. "saveInvoiceTemplate": "Save Invoice Template",
  768. "saveQuotationTemplate": "Save Quotation Template",
  769. "invoiceTemplateSaved": "Invoice template settings saved",
  770. "quotationTemplateSaved": "Quotation template settings saved",
  771. "failedSave": "Failed to save settings",
  772. "smsTemplates": "SMS Message Templates",
  773. "smsTemplatesDescription": "Customize the text messages sent to customers. Use variables like <code>'{companyName}'</code> to insert dynamic values.",
  774. "reset": "Reset",
  775. "invoiceReady": "Invoice Ready",
  776. "invoiceReadyDescription": "Sent when sharing an invoice with a customer.",
  777. "quoteReady": "Quote Ready",
  778. "quoteReadyDescription": "Sent when sharing a quote with a customer.",
  779. "inspectionReady": "Inspection Ready",
  780. "inspectionReadyDescription": "Sent when sharing an inspection report with a customer.",
  781. "statusInProgress": "Status: In Progress",
  782. "statusInProgressDescription": "Sent when a work order status changes to In Progress.",
  783. "statusWaitingParts": "Status: Waiting for Parts",
  784. "statusWaitingPartsDescription": "Sent when a work order status changes to Waiting for Parts.",
  785. "statusReady": "Status: Ready for Pickup",
  786. "statusReadyDescription": "Sent when a work order status changes to Ready.",
  787. "statusCompleted": "Status: Completed",
  788. "statusCompletedDescription": "Sent when a work order status changes to Completed.",
  789. "paymentReceived": "Payment Received",
  790. "paymentReceivedDescription": "Sent when a payment is recorded for an invoice.",
  791. "saveSmsTemplates": "Save SMS Templates",
  792. "smsTemplateSaved": "SMS template settings saved",
  793. "layoutTitle": "Invoice Layout",
  794. "layoutDescription": "Customize the order and visibility of sections in your invoices and quotes.",
  795. "layoutSaved": "Layout saved successfully",
  796. "layoutDocInvoice": "Invoice",
  797. "layoutDocQuote": "Quote",
  798. "smsDefaults": {
  799. "invoiceReady": "Your invoice is ready. View it here: {share_link}",
  800. "quoteReady": "Your quote is ready for review. View it here: {share_link}",
  801. "inspectionReady": "Your vehicle inspection report is ready. View it here: {share_link}",
  802. "statusInProgress": "Work has started on your vehicle. We'll keep you updated.",
  803. "statusWaitingParts": "Your vehicle is waiting for parts. We'll notify you when work resumes.",
  804. "statusReady": "Your vehicle is ready for pickup!",
  805. "statusCompleted": "Your service is complete. Thank you for your business!",
  806. "paymentReceived": "Payment of {amount} received for invoice {invoice_number}. Thank you!"
  807. },
  808. "colorPresets": {
  809. "amber": "Amber",
  810. "blue": "Blue",
  811. "emerald": "Emerald",
  812. "red": "Red",
  813. "purple": "Purple",
  814. "slate": "Slate",
  815. "rose": "Rose",
  816. "indigo": "Indigo"
  817. },
  818. "goToLayout": "Layout and sections",
  819. "openDesigner": "Open Template Designer",
  820. "designerIntro": "Pick a starting point, then open the designer to change anything.",
  821. "designerHint": "Colors, fonts, spacing and every section live in the designer."
  822. },
  823. "payment": {
  824. "readMore": "Read More",
  825. "detailsTitle": "Payment Details",
  826. "detailsDescription": "Bank account and payment terms shown on invoices.",
  827. "bankAccount": "Bank Account (IBAN)",
  828. "bankAccountPlaceholder": "NO93 8601 1117 947",
  829. "bankAccountHint": "Your bank account number or IBAN for receiving payments",
  830. "paymentTerms": "Payment Terms",
  831. "paymentTermsPlaceholder": "Net 14 days",
  832. "paymentTermsHint": "Payment terms text displayed on invoices (e.g. \"Net 14 days\", \"Due on receipt\")",
  833. "onlinePayments": "Online Payments",
  834. "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.",
  835. "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.",
  836. "offered": "On invoice links",
  837. "paused": "Connected, not offered",
  838. "termsOfSale": "Terms of sale",
  839. "termsOfSaleDescription": "What a customer agrees to when paying online. Vipps requires published terms; the invoice links to them either way.",
  840. "termsOfSaleText": "Terms text",
  841. "externalTermsUrl": "External Terms URL (optional)",
  842. "externalTermsUrlHint": "Link to an external page with your terms. If set, the invoice will link here instead of the built-in terms page.",
  843. "publicTermsUrl": "Public Terms URL",
  844. "publicTermsUrlHint": "Share this URL with Vipps or link it from your website.",
  845. "savePayment": "Save Payment Settings",
  846. "saved": "Payment settings saved"
  847. },
  848. "tax": {
  849. "title": "Tax",
  850. "description": "Configure the tax rate applied to invoices, quotes, and work orders.",
  851. "modeLabel": "Tax mode",
  852. "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.",
  853. "modeExclusive": "Exclusive",
  854. "modeInclusive": "Inclusive",
  855. "modeExclusiveExample": "Example: $100 + {rate}% tax = $100 + tax on top.",
  856. "modeInclusiveExample": "Example: $100 entered already includes {rate}% tax — the tax portion is reverse-calculated.",
  857. "labelLabel": "Tax label",
  858. "labelHint": "Custom name shown on invoices and quotes (e.g. VAT, GST, MVA, MwSt.). Leave blank to use the localized default.",
  859. "labelPlaceholder": "VAT",
  860. "convertInclusiveLabel": "Convert existing records to inclusive mode",
  861. "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.",
  862. "convertInclusiveButton": "Convert to inclusive",
  863. "convertInclusiveConfirmTitle": "Convert existing records to inclusive mode?",
  864. "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.",
  865. "convertInclusiveConfirmLabel": "Convert records",
  866. "convertInclusiveSuccess": "Converted {serviceRecords} work orders and {quotes} quotes to inclusive mode.",
  867. "convertInclusiveFailed": "Failed to convert records to inclusive mode",
  868. "convertInclusiveNoRecords": "No exclusive-mode records to convert.",
  869. "convertExclusiveLabel": "Convert existing records to exclusive mode",
  870. "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.",
  871. "convertExclusiveButton": "Convert to exclusive",
  872. "convertExclusiveConfirmTitle": "Convert existing records to exclusive mode?",
  873. "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.",
  874. "convertExclusiveConfirmLabel": "Convert records",
  875. "convertExclusiveSuccess": "Converted {serviceRecords} work orders and {quotes} quotes to exclusive mode.",
  876. "convertExclusiveFailed": "Failed to convert records to exclusive mode",
  877. "convertExclusiveNoRecords": "No inclusive-mode records to convert."
  878. },
  879. "currency": {
  880. "title": "Currency & Tax",
  881. "description": "Default currency and tax rate used across invoices and service records.",
  882. "currencyLabel": "Currency",
  883. "searchCurrency": "Search currency...",
  884. "noCurrencyFound": "No currency found.",
  885. "previewLabel": "Preview: {value}",
  886. "enableTax": "Enable Tax",
  887. "enableTaxHint": "Show tax calculation on invoices and service records",
  888. "defaultTaxRate": "Default Tax Rate (%)",
  889. "defaultTaxRateHint": "Auto-populated when creating new service records",
  890. "applyTaxToExistingLabel": "Apply tax to existing records",
  891. "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.",
  892. "applyTaxToExistingButton": "Apply tax to existing records",
  893. "applyTaxConfirmTitle": "Apply tax to existing records?",
  894. "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.",
  895. "applyTaxConfirmLabel": "Apply tax",
  896. "applyTaxSuccess": "Updated {serviceRecords} work orders and {quotes} quotes.",
  897. "applyTaxFailed": "Failed to apply tax to existing records",
  898. "applyTaxNoRecords": "No records need the default tax rate applied.",
  899. "saveSettings": "Save Settings",
  900. "saved": "Settings saved",
  901. "currencies": {
  902. "USD": "US Dollar",
  903. "EUR": "Euro",
  904. "GBP": "British Pound",
  905. "NOK": "Norwegian Krone",
  906. "SEK": "Swedish Krona",
  907. "DKK": "Danish Krone",
  908. "CHF": "Swiss Franc",
  909. "CAD": "Canadian Dollar",
  910. "AUD": "Australian Dollar",
  911. "NZD": "New Zealand Dollar",
  912. "JPY": "Japanese Yen",
  913. "CNY": "Chinese Yuan",
  914. "INR": "Indian Rupee",
  915. "BRL": "Brazilian Real",
  916. "MXN": "Mexican Peso",
  917. "PLN": "Polish Zloty",
  918. "CZK": "Czech Koruna",
  919. "HUF": "Hungarian Forint",
  920. "TRY": "Turkish Lira",
  921. "ZAR": "South African Rand",
  922. "KRW": "South Korean Won",
  923. "SGD": "Singapore Dollar",
  924. "HKD": "Hong Kong Dollar",
  925. "THB": "Thai Baht",
  926. "ISK": "Icelandic Krona",
  927. "RON": "Romanian Leu",
  928. "ILS": "Israeli Shekel",
  929. "PHP": "Philippine Peso",
  930. "IDR": "Indonesian Rupiah",
  931. "MYR": "Malaysian Ringgit",
  932. "LKR": "Sri Lankan Rupee",
  933. "AED": "UAE Dirham",
  934. "SAR": "Saudi Riyal",
  935. "RUB": "Russian Ruble",
  936. "TWD": "Taiwan Dollar",
  937. "VND": "Vietnamese Dong",
  938. "PKR": "Pakistani Rupee",
  939. "BDT": "Bangladeshi Taka",
  940. "NPR": "Nepalese Rupee",
  941. "BGN": "Bulgarian Lev",
  942. "UAH": "Ukrainian Hryvnia",
  943. "CLP": "Chilean Peso",
  944. "COP": "Colombian Peso",
  945. "ARS": "Argentine Peso",
  946. "PEN": "Peruvian Sol",
  947. "EGP": "Egyptian Pound",
  948. "NGN": "Nigerian Naira",
  949. "KES": "Kenyan Shilling",
  950. "MAD": "Moroccan Dirham",
  951. "DZD": "Algerian Dinar",
  952. "GHS": "Ghanaian Cedi",
  953. "QAR": "Qatari Riyal",
  954. "KWD": "Kuwaiti Dinar",
  955. "BHD": "Bahraini Dinar",
  956. "OMR": "Omani Rial",
  957. "JOD": "Jordanian Dinar"
  958. },
  959. "formatTitle": "Currency Format",
  960. "formatSymbolName": "Symbol",
  961. "formatCodeName": "Code",
  962. "formatSymbolLabel": "Symbol: {value}",
  963. "formatCodeLabel": "Code: {value}"
  964. },
  965. "localization": {
  966. "languageTitle": "Language",
  967. "languageDescription": "Choose the display language for the application.",
  968. "language": "Language",
  969. "forceCustomerLocale": "Force this language on customer-facing pages",
  970. "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.",
  971. "defaultCountryCode": "Default country code",
  972. "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.",
  973. "defaultCountryCodeInvalid": "Enter a valid country code, e.g. +47, 47, or 0047.",
  974. "saved": "Localization settings saved",
  975. "saveSettings": "Save Settings"
  976. },
  977. "customFields": {
  978. "title": "Custom Fields",
  979. "description": "Define custom fields that appear on service records and quotes.",
  980. "addField": "Add Field",
  981. "filterAll": "All",
  982. "serviceRecord": "Service Record",
  983. "quote": "Quote",
  984. "emptyState": "No custom fields defined yet. Click \"Add Field\" to create one.",
  985. "required": "Required",
  986. "inactive": "Inactive",
  987. "editField": "Edit Field",
  988. "newField": "New Custom Field",
  989. "label": "Label",
  990. "labelPlaceholder": "e.g. Warranty Expiry",
  991. "fieldName": "Field Name (ID)",
  992. "fieldNamePlaceholder": "warranty_expiry",
  993. "fieldNameHint": "Lowercase letters, numbers, and underscores only.",
  994. "fieldType": "Field Type",
  995. "entityType": "Entity Type",
  996. "fieldTypes": {
  997. "text": "Text",
  998. "number": "Number",
  999. "date": "Date",
  1000. "select": "Select (Dropdown)",
  1001. "checkbox": "Checkbox",
  1002. "textarea": "Text Area"
  1003. },
  1004. "optionsLabel": "Options (comma-separated)",
  1005. "optionsPlaceholder": "Option 1, Option 2, Option 3",
  1006. "active": "Active",
  1007. "cancel": "Cancel",
  1008. "update": "Update",
  1009. "create": "Create",
  1010. "deleteTitle": "Delete Custom Field",
  1011. "deleteDescription": "This will permanently delete \"{label}\" and all its saved values. This cannot be undone.",
  1012. "fieldCreated": "Custom field created",
  1013. "fieldUpdated": "Custom field updated",
  1014. "fieldDeleted": "Custom field deleted",
  1015. "failedSave": "Failed to save field",
  1016. "failedDelete": "Failed to delete",
  1017. "edit": "Edit",
  1018. "delete": "Delete",
  1019. "unassigned": "Unassigned",
  1020. "defaultValue": "Default value",
  1021. "defaultValueHint": "Pre-filled on new records and printed when no value has been entered.",
  1022. "defaultValueNone": "None",
  1023. "defaultValueCheckedHint": "Checked by default",
  1024. "placement": "Placement on document",
  1025. "placementHidden": "Not printed",
  1026. "placementHint": "Which section of the invoice or quote this field prints in. In the designer you can also switch it on in more sections.",
  1027. "failedSavePlacement": "Failed to save field placement"
  1028. },
  1029. "workshop": {
  1030. "title": "Workshop Defaults",
  1031. "description": "Default values used when creating new service records.",
  1032. "defaultTechnician": "Default Technician Name",
  1033. "technicianPlaceholder": "Search technician...",
  1034. "failedCreateTech": "Failed to create technician",
  1035. "creating": "Creating...",
  1036. "createTechnician": "Create \"{name}\"",
  1037. "newTechPlaceholder": "Technician name",
  1038. "addTech": "Add",
  1039. "addNewTech": "+ Add New",
  1040. "defaultLaborRate": "Default Labor Rate (per hour)",
  1041. "laborRatePlaceholder": "75.00",
  1042. "unitsTitle": "Units",
  1043. "unitsDescription": "Choose between metric (km, liters) and imperial (miles, gallons) units.",
  1044. "unitSystem": "Unit System",
  1045. "metric": "Metric (km, liters)",
  1046. "imperial": "Imperial (miles, gallons)",
  1047. "distanceLabel": "Distance",
  1048. "volumeLabel": "Volume",
  1049. "kilometers": "kilometers (km)",
  1050. "liters": "liters (L)",
  1051. "miles": "miles (mi)",
  1052. "gallons": "gallons (gal)",
  1053. "defaultStockUnit": "Default stock unit",
  1054. "defaultStockUnitHint": "Pre-filled on new inventory parts. Each part can still use its own unit.",
  1055. "saveWorkshop": "Save Workshop Settings",
  1056. "saved": "Workshop settings saved",
  1057. "assignDialogTitle": "Assign to existing work orders?",
  1058. "assignDialogDescription": "Would you like to assign {name} to all current work orders that don't have a technician assigned?",
  1059. "assignDialogConfirm": "Yes, assign",
  1060. "assignDialogSkip": "No, skip",
  1061. "assignedUnassigned": "{count, plural, =0 {No unassigned work orders found} one {Assigned 1 work order} other {Assigned # work orders}}",
  1062. "assignFailed": "Failed to assign work orders",
  1063. "noTechnician": "None",
  1064. "weekStartDay": "Week Start Day",
  1065. "workDayStart": "Work Day Start",
  1066. "workDayEnd": "Work Day End",
  1067. "weekDays": {
  1068. "0": "Sunday",
  1069. "1": "Monday",
  1070. "2": "Tuesday",
  1071. "3": "Wednesday",
  1072. "4": "Thursday",
  1073. "5": "Friday",
  1074. "6": "Saturday"
  1075. }
  1076. },
  1077. "maintenance": {
  1078. "title": "Predicted Maintenance",
  1079. "description": "Predict each vehicle's current mileage from its service history and surface vehicles that are due or approaching their next service.",
  1080. "enablePredicted": "Enable predicted maintenance",
  1081. "enablePredictedHint": "Show predictions on vehicle details and dashboard",
  1082. "serviceInterval": "Service interval ({unit})",
  1083. "serviceIntervalHint": "Distance between recommended services",
  1084. "approachingThreshold": "Approaching threshold ({unit})",
  1085. "approachingThresholdHint": "Show warning when within this distance of next service",
  1086. "saveMaintenance": "Save Maintenance Settings",
  1087. "saved": "Maintenance settings saved"
  1088. },
  1089. "appearance": {
  1090. "title": "Appearance",
  1091. "description": "Customize how Torqvoice looks and feels.",
  1092. "themeLabel": "Theme",
  1093. "themeHint": "Choose the color scheme for the app. The choice is saved on this device.",
  1094. "themes": {
  1095. "light": "Light",
  1096. "dark": "Dark",
  1097. "graphite": "Graphite",
  1098. "ocean": "Ocean",
  1099. "forest": "Forest",
  1100. "midnight": "Midnight",
  1101. "carbon": "Carbon",
  1102. "system": "System"
  1103. },
  1104. "dateTimeTitle": "Date & Time",
  1105. "dateTimeDescription": "Configure how dates and times are displayed across the application.",
  1106. "dateFormat": "Date Format",
  1107. "timeFormat": "Time Format",
  1108. "time12h": "12-hour (2:30 PM)",
  1109. "time24h": "24-hour (14:30)",
  1110. "timezone": "Timezone",
  1111. "timezoneAuto": "Auto-detect (browser)",
  1112. "searchTimezone": "Search timezone...",
  1113. "noTimezoneFound": "No timezone found.",
  1114. "timezoneHint": "When set to auto-detect, each user sees dates in their browser's timezone.",
  1115. "previewLabel": "Preview",
  1116. "dateLabel": "Date",
  1117. "dateTimeLabel": "Date & Time",
  1118. "saveSettings": "Save Settings",
  1119. "saved": "Settings saved"
  1120. },
  1121. "data": {
  1122. "title": "Data Management",
  1123. "description": "Bring data in from your old system, download a backup of everything, or restore one.",
  1124. "exportTitle": "Export Data",
  1125. "exportDescription": "Download your data as a zip file. Select which categories to include in the backup.",
  1126. "includeInBackup": "Include in backup:",
  1127. "selectAll": "Select All",
  1128. "deselectAll": "Deselect All",
  1129. "optSettings": "Settings",
  1130. "optSettingsDesc": "Workshop info, invoice config, payment providers",
  1131. "optCustomers": "Customers",
  1132. "optCustomersDesc": "Customer records and contact info",
  1133. "optVehicles": "Vehicles & Service Records",
  1134. "optVehiclesDesc": "Vehicles, notes, fuel logs, reminders, service records",
  1135. "optQuotes": "Quotes",
  1136. "optQuotesDesc": "Quotes with parts and labor",
  1137. "optInventory": "Inventory",
  1138. "optInventoryDesc": "Inventory parts and stock levels",
  1139. "optTechnicians": "Technicians",
  1140. "optTechniciansDesc": "Technician profiles and workboard assignments",
  1141. "optInspections": "Inspections",
  1142. "optInspectionsDesc": "Inspection templates, inspections, and results",
  1143. "optAuditLogs": "Audit Logs",
  1144. "optAuditLogsDesc": "Activity and change history",
  1145. "optSmsMessages": "Messages",
  1146. "optSmsMessagesDesc": "Sent and received SMS, WhatsApp and Telegram messages",
  1147. "optScheduledMessages": "Scheduled Messages",
  1148. "optScheduledMessagesDesc": "Queued and repeating messages waiting to go out",
  1149. "optNotifications": "Notifications",
  1150. "optNotificationsDesc": "System notifications",
  1151. "optCustomFields": "Custom Fields",
  1152. "optCustomFieldsDesc": "Custom field definitions and values",
  1153. "optFiles": "Uploaded Files",
  1154. "optFilesDesc": "Images, service attachments, logo",
  1155. "filesWarning": "Includes uploaded files — backup may be larger",
  1156. "downloadBackup": "Download Backup",
  1157. "exportComplete": "Export Complete",
  1158. "exportCompleteMessage": "Your backup file has been downloaded.",
  1159. "exportFailed": "Export Failed",
  1160. "exportFailedMessage": "Could not export your data. Please try again.",
  1161. "importTitle": "Import Data",
  1162. "importWarning": "Importing will <bold>replace all existing data</bold> with the contents of the backup file. This action cannot be undone.",
  1163. "importFileHint": "Supports both .zip (v2) and .json (v1) backup files.",
  1164. "uploadRestore": "Upload & Restore",
  1165. "importComplete": "Import Complete",
  1166. "importCompleteMessage": "All data has been restored from the backup file.",
  1167. "importFailed": "Import Failed",
  1168. "importFromOther": "Import from Other Services",
  1169. "importFromOtherDescription": "Migrate your data from another platform. Select a service to get started.",
  1170. "lubelogTitle": "Import from LubeLog",
  1171. "lubelogExportSteps": "How to export your LubeLog data:",
  1172. "lubelogStep1": "Open your LubeLog instance",
  1173. "lubelogStep2": "Go to <bold>Settings</bold>",
  1174. "lubelogStep3": "Click <bold>Make Backup</bold> to download a zip file",
  1175. "lubelogStep4": "Upload the downloaded zip file below",
  1176. "lubelogAddNote": "This will <bold>add data alongside</bold> your existing records — nothing will be deleted.",
  1177. "lubelogImported": "What will be imported:",
  1178. "lubelogVehicles": "Vehicles",
  1179. "lubelogServiceRecords": "Service records with attachments",
  1180. "lubelogNotes": "Notes",
  1181. "lubelogFileHint": "Files up to 200MB supported.",
  1182. "lubelogImportComplete": "LubeLog Import Complete",
  1183. "cancel": "Cancel",
  1184. "import": "Import",
  1185. "invoiceNinjaTitle": "Import from Invoice Ninja",
  1186. "invoiceNinjaExportSteps": "How to export your Invoice Ninja data:",
  1187. "invoiceNinjaStep1": "Open your Invoice Ninja instance",
  1188. "invoiceNinjaStep2": "Go to <bold>Settings > Import | Export</bold>",
  1189. "invoiceNinjaStep3": "Click <bold>Export</bold> to download a zip file",
  1190. "invoiceNinjaStep4": "Upload the downloaded zip file below",
  1191. "invoiceNinjaAddNote": "This will <bold>add data alongside</bold> your existing records — nothing will be deleted.",
  1192. "invoiceNinjaImported": "What will be imported:",
  1193. "invoiceNinjaCustomers": "Customers (clients)",
  1194. "invoiceNinjaProducts": "Products (inventory)",
  1195. "invoiceNinjaInvoices": "Invoices as service records (parts & labor)",
  1196. "invoiceNinjaDocuments": "Documents & attachments",
  1197. "invoiceNinjaPayments": "Payments",
  1198. "invoiceNinjaFileHint": "Upload an Invoice Ninja zip export file. Files up to 200MB supported.",
  1199. "invoiceNinjaImportComplete": "Invoice Ninja Import Complete",
  1200. "backupStatus": {
  1201. "title": "Data Protection",
  1202. "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.",
  1203. "lastBackup": "Last backup:",
  1204. "supportPrompt": "If you have any questions about how your data is protected,",
  1205. "supportAction": "contact our support team."
  1206. },
  1207. "optTireHotel": "Tire hotel",
  1208. "optTireHotelDesc": "Stored tire sets, shelves, prep work and storage agreements",
  1209. "optWorkshopConfig": "Workshop setup",
  1210. "optWorkshopConfigDesc": "Labour presets, roles, webhooks and scheduled reports",
  1211. "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.",
  1212. "sourceSpreadsheet": "Spreadsheet or CSV",
  1213. "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.",
  1214. "sourceLubelogDesc": "Vehicles, service records and notes from a LubeLog backup.",
  1215. "sourceInvoiceNinjaDesc": "Clients, products, invoices and payments from an Invoice Ninja export.",
  1216. "sourceBackup": "Torqvoice backup",
  1217. "sourceBackupDesc": "A .zip or .json file downloaded from this page. Restoring replaces everything in this workshop.",
  1218. "restore": "Restore",
  1219. "restoreTitle": "Restore a backup"
  1220. },
  1221. "license": {
  1222. "title": "White-Label License",
  1223. "description": "Activate a white-label license to remove Torqvoice branding from invoices and the application.",
  1224. "purchaseWhiteLabel": "Purchase White-Label",
  1225. "status": "Status:",
  1226. "active": "Active",
  1227. "inactive": "Inactive",
  1228. "lastChecked": "Last checked: {date}",
  1229. "enterLicenseKey": "Enter license key",
  1230. "validate": "Validate",
  1231. "validated": "License validated successfully",
  1232. "invalid": "Invalid license key",
  1233. "failedValidate": "Failed to validate license",
  1234. "keyHint": "Each license key is tied to this organization and cannot be shared across multiple organizations."
  1235. },
  1236. "about": {
  1237. "title": "About Torqvoice",
  1238. "description": "Torqvoice is your complete vehicle service management solution. Track service history, repairs and more.",
  1239. "version": "Version",
  1240. "website": "Website",
  1241. "documentation": "Documentation",
  1242. "changelog": "Changelog"
  1243. },
  1244. "portal": {
  1245. "title": "Customer Portal",
  1246. "description": "Allow your customers to log in and view their vehicles, invoices, quotes, and inspections. Customers can also submit service requests.",
  1247. "enablePortal": "Enable customer portal",
  1248. "enablePortalHint": "Customers with an email address can log in via magic link",
  1249. "enabled": "Customer portal enabled",
  1250. "disabled": "Customer portal disabled",
  1251. "failedUpdate": "Failed to update setting",
  1252. "customSlug": "Custom portal slug",
  1253. "save": "Save",
  1254. "slugSaved": "Portal slug saved",
  1255. "slugRemoved": "Portal slug removed",
  1256. "failedUpdateSlug": "Failed to update slug",
  1257. "slugHint": "Lowercase letters, numbers, hyphens, and underscores. 3-48 characters. Leave blank to use the default URL.",
  1258. "portalUrl": "Portal URL",
  1259. "urlCopied": "Portal URL copied",
  1260. "shareHint": "Share this link with your customers so they can log in to their portal.",
  1261. "serviceRequestAlertsHint": "Service requests from the portal always appear in your notification bell. You can also get them by email.",
  1262. "serviceRequestAlertsLink": "Alert settings →",
  1263. "descriptionLabel": "About your workshop",
  1264. "descriptionPlaceholder": "Tell customers a bit about your workshop, the services you offer, and what makes you unique.",
  1265. "descriptionHint": "Shown to visitors at the top of your portal landing page.",
  1266. "hoursLabel": "Opening hours",
  1267. "hoursPlaceholder": "Mon-Fri: 8:00-17:00\nSat: 9:00-13:00\nSun: Closed",
  1268. "hoursHint": "Free-form text. Use line breaks to list each day separately.",
  1269. "contentSaved": "Portal content saved",
  1270. "background": {
  1271. "title": "Portal background",
  1272. "description": "Choose how the customer portal landing page looks.",
  1273. "typeNone": "None",
  1274. "typeTemplate": "Template",
  1275. "typeImage": "Custom image",
  1276. "chooseTemplate": "Choose a template",
  1277. "uploadLabel": "Background image",
  1278. "upload": "Upload image",
  1279. "replace": "Replace image",
  1280. "remove": "Remove",
  1281. "uploadHint": "JPG, PNG or WebP. Max 8 MB. Recommended at least 1600×900.",
  1282. "uploading": "Uploading background…",
  1283. "uploaded": "Background updated",
  1284. "uploadFailed": "Failed to upload background",
  1285. "templateNames": {
  1286. "default": "Subtle",
  1287. "sunrise": "Sunrise",
  1288. "ocean": "Ocean",
  1289. "forest": "Forest",
  1290. "slate": "Slate",
  1291. "sand": "Sand"
  1292. }
  1293. },
  1294. "copyUrl": "Copy portal URL"
  1295. },
  1296. "email": {
  1297. "title": "Email Provider",
  1298. "description": "Configure your organization's email provider for sending invoices and quotes. If not configured, the platform's default email provider will be used.",
  1299. "useCustomLabel": "Use custom email provider",
  1300. "useCustomHint": "Enable to configure your own email provider instead of using the platform default",
  1301. "platformDefaultInfo": "Your organization is using the platform's default email provider. Invoices and quotes will be sent using the platform-configured email settings.",
  1302. "smtpHost": "SMTP Host",
  1303. "smtpHostPlaceholder": "smtp.example.com",
  1304. "smtpPort": "SMTP Port",
  1305. "smtpPortPlaceholder": "587",
  1306. "username": "Username",
  1307. "usernamePlaceholder": "user@example.com",
  1308. "password": "Password",
  1309. "fromEmail": "From Email",
  1310. "fromEmailPlaceholder": "noreply@example.com",
  1311. "fromEmailDomainPlaceholder": "noreply@yourdomain.com",
  1312. "fromName": "From Name",
  1313. "fromNamePlaceholder": "Your Workshop",
  1314. "tlsConnection": "TLS Connection (Port 465)",
  1315. "tlsConnectionHint": "Enable for implicit TLS. Disable for STARTTLS (port 587/25).",
  1316. "verifyTlsCerts": "Verify TLS Certificates",
  1317. "verifyTlsCertsHint": "Disable to allow self-signed certificates (not recommended for production)",
  1318. "requireTlsUpgrade": "Require TLS Upgrade",
  1319. "requireTlsUpgradeHint": "Force TLS upgrade on STARTTLS connections",
  1320. "apiKey": "API Key",
  1321. "apiKeyHintResend": "Get your API key from",
  1322. "serverToken": "Server Token",
  1323. "serverTokenHintPostmark": "Get your Server Token from",
  1324. "apiKeyHintMailgun": "Get your API key from",
  1325. "domain": "Domain",
  1326. "domainPlaceholder": "mg.yourdomain.com",
  1327. "region": "Region",
  1328. "apiKeyHintSendGrid": "Get your API key from",
  1329. "accessKeyId": "Access Key ID",
  1330. "secretAccessKey": "Secret Access Key",
  1331. "awsRegion": "AWS Region",
  1332. "awsRegionPlaceholder": "us-east-1",
  1333. "awsRegionHint": "The AWS region where SES is configured (e.g. us-east-1, eu-west-1)",
  1334. "sendTestEmail": "Send Test Email",
  1335. "testEmailHint": "Save settings first, then send a test email to your account",
  1336. "saveSettings": "Save Settings",
  1337. "savedDefault": "Email settings saved — using platform default",
  1338. "saved": "Email settings saved",
  1339. "failedSave": "Failed to save settings",
  1340. "testSentTo": "Test email sent to {email}",
  1341. "testFailed": "Email test failed"
  1342. },
  1343. "sms": {
  1344. "title": "SMS Provider",
  1345. "description": "Configure your SMS provider for two-way messaging with customers. Each organization uses their own SMS vendor and phone number.",
  1346. "enableLabel": "Enable SMS messaging",
  1347. "enableHint": "Send and receive SMS messages with customers",
  1348. "disabledInfo": "SMS messaging is disabled. Enable it to send and receive text messages with your customers.",
  1349. "phoneNumber": "Phone Number",
  1350. "phoneNumberPlaceholder": "+15551234567",
  1351. "phoneNumberHint": "Your SMS-enabled phone number in E.164 format (e.g. +15551234567)",
  1352. "accountSid": "Account SID",
  1353. "authToken": "Auth Token",
  1354. "apiKey": "API Key",
  1355. "apiSecret": "API Secret",
  1356. "webhookUrl": "Webhook URL",
  1357. "webhookUrlHint": "Configure this URL in your {provider} dashboard to receive inbound SMS messages.",
  1358. "webhookCopied": "Webhook URL copied",
  1359. "testPhoneNumber": "Test Phone Number",
  1360. "testPhonePlaceholder": "+15559876543",
  1361. "sendTestSms": "Send Test SMS",
  1362. "testSmsHint": "Save settings first, then enter a recipient number to send a test SMS",
  1363. "enterTestPhone": "Enter a phone number to send the test SMS to",
  1364. "saveSettings": "Save Settings",
  1365. "savedDisabled": "SMS settings saved — SMS disabled",
  1366. "saved": "SMS settings saved",
  1367. "failedSave": "Failed to save settings",
  1368. "testSentTo": "Test SMS sent to {phone}",
  1369. "testFailed": "SMS test failed",
  1370. "copyWebhookUrl": "Copy webhook URL"
  1371. },
  1372. "subscription": {
  1373. "title": "Subscription Plan",
  1374. "description": "Your organization's current Torqvoice subscription tier and available features.",
  1375. "currentPlan": "Current Plan",
  1376. "planFree": "Free",
  1377. "planPro": "Torq Pro",
  1378. "planEnterprise": "Enterprise",
  1379. "price": "{price}/{interval}",
  1380. "perYear": "yr",
  1381. "perMonth": "mo",
  1382. "statusActive": "Active",
  1383. "statusCanceling": "Canceling",
  1384. "statusPastDue": "Past Due",
  1385. "statusCanceled": "Canceled",
  1386. "billingPeriod": "Billing Period",
  1387. "billingPeriodDates": "{start} — {end}",
  1388. "nextRenewal": "Next Renewal",
  1389. "cancelingWarning": "Your subscription will cancel on {date}. After that, you'll be downgraded to Free.",
  1390. "pastDueWarning": "Your payment is past due. Please update your payment method to avoid service interruption.",
  1391. "featuresTitle": "Plan Features",
  1392. "featuresDescription": "What's included in your current plan.",
  1393. "featureCustomers": "Customers",
  1394. "featureTeamMembers": "Team Members",
  1395. "featureSmtp": "Custom Email (SMTP)",
  1396. "featureApi": "API Access",
  1397. "featurePayments": "Online Payments",
  1398. "featureCustomFields": "Custom Fields",
  1399. "featureSms": "SMS Messaging",
  1400. "featureCustomerPortal": "Customer Portal",
  1401. "featureCustomTemplates": "Custom Templates",
  1402. "featureBrandingRemoved": "Branding Removed",
  1403. "usageOf": "{used} / {limit}",
  1404. "usageUnlimited": "{used} / Unlimited",
  1405. "included": "Included",
  1406. "notIncluded": "Not Included",
  1407. "manageTitle": "Manage Subscription",
  1408. "manageBilling": "Manage Billing",
  1409. "manageBillingDescription": "Update payment method, view invoices, and manage billing details.",
  1410. "cancelSubscription": "Cancel Subscription",
  1411. "resumeSubscription": "Resume Subscription",
  1412. "cancelDialogTitle": "Cancel Subscription",
  1413. "cancelDialogDescription": "Your subscription will remain active until {date}. After that, you'll be downgraded to Free.",
  1414. "cancelDialogConfirm": "Yes, Cancel",
  1415. "cancelDialogCancel": "Keep Subscription",
  1416. "cancelSuccess": "Subscription will cancel at end of billing period",
  1417. "cancelError": "Failed to cancel subscription",
  1418. "resumeSuccess": "Subscription resumed successfully",
  1419. "resumeError": "Failed to resume subscription",
  1420. "billingPortalError": "Failed to open billing portal",
  1421. "checkoutError": "Failed to start checkout",
  1422. "upgradeTitle": "Upgrade Plan",
  1423. "upgradeDescription": "Unlock more features by upgrading your plan.",
  1424. "upgradeToProDescription": "Upgrade to unlock unlimited customers, team members, reports, SMTP, API access, and more.",
  1425. "upgradeToEnterpriseDescription": "Need more than 5 team members? Upgrade to Enterprise for up to 50 users.",
  1426. "upgradeToPro": "Upgrade to Pro — $99/yr",
  1427. "upgradeToEnterprise": "Enterprise — $140/yr",
  1428. "upgradeDialogTitle": "Upgrade to Enterprise",
  1429. "upgradeDialogDescription": "Your current Pro plan will be upgraded to Enterprise. You will only be charged the prorated difference for the remaining billing period.",
  1430. "upgradeConfirm": "Confirm Upgrade",
  1431. "upgradeCalculating": "Calculating prorated amount…",
  1432. "upgradeAmountDue": "Amount due now",
  1433. "upgradeSuccess": "Successfully upgraded to Enterprise!",
  1434. "upgradeError": "Failed to upgrade subscription",
  1435. "demoBadge": "Demo",
  1436. "demoExpiresIn": "Expires in {days, plural, =0 {less than a day} one {# day} other {# days}} ({date})"
  1437. },
  1438. "ai": {
  1439. "title": "AI Assistant",
  1440. "readMore": "Read More",
  1441. "description": "Configure AI to auto-generate service notes and summarize vehicle history.",
  1442. "enableLabel": "Enable AI",
  1443. "enableHint": "Use AI-powered features throughout the application",
  1444. "disabledInfo": "Enable AI to use features like auto-generated service descriptions and vehicle history summaries.",
  1445. "provider": "AI Provider",
  1446. "apiKey": "API Key",
  1447. "apiKeyHint": "Your {provider} API key. Stored securely and never shared.",
  1448. "model": "Model",
  1449. "testConnection": "Test Connection",
  1450. "testSuccess": "AI connection successful!",
  1451. "testFailed": "Connection failed. Check your API key and model.",
  1452. "saved": "AI settings saved",
  1453. "failedSave": "Failed to save AI settings",
  1454. "saveSettings": "Save Settings",
  1455. "featuresTitle": "AI-powered features included:",
  1456. "featureServiceNotes": "Auto-generate professional service descriptions from parts and labor",
  1457. "featureHistorySummary": "One-click vehicle service history summary",
  1458. "cost": {
  1459. "high": "High Cost",
  1460. "medium": "Medium",
  1461. "low": "Low Cost"
  1462. }
  1463. },
  1464. "reportSchedule": {
  1465. "title": "Report Schedule",
  1466. "description": "Automatically generate and email report PDFs on a recurring schedule.",
  1467. "schedule": "Schedule",
  1468. "name": "Schedule Name",
  1469. "namePlaceholder": "e.g. Weekly Business Report",
  1470. "frequency": "Frequency",
  1471. "daily": "Daily",
  1472. "weekly": "Weekly",
  1473. "biweekly": "Every 2 Weeks",
  1474. "monthly": "Monthly",
  1475. "bimonthly": "Every 2 Months",
  1476. "quarterly": "Every 4 Months",
  1477. "semiannually": "Every 6 Months",
  1478. "yearly": "Yearly",
  1479. "dateRangeLabel": "Date Range",
  1480. "dateRanges": {
  1481. "last1d": "Last Day",
  1482. "last7d": "Last 7 Days",
  1483. "last14d": "Last 14 Days",
  1484. "last30d": "Last 30 Days",
  1485. "last60d": "Last 60 Days",
  1486. "last90d": "Last 90 Days",
  1487. "last6m": "Last 6 Months",
  1488. "last12m": "Last 12 Months",
  1489. "ytd": "Year to Date",
  1490. "allTime": "All Time"
  1491. },
  1492. "sections": "Report Sections",
  1493. "sectionsDescription": "Select which sections to include in the scheduled report.",
  1494. "sectionsIncluded": "Sections included",
  1495. "selectAll": "Select all",
  1496. "clearAll": "Clear all",
  1497. "recipients": "Recipients",
  1498. "recipientsDescription": "Select team members who will receive the report via email.",
  1499. "recipientsCount": "Recipients",
  1500. "endDate": "End Date",
  1501. "endDateDescription": "Optionally stop the schedule after this date.",
  1502. "enabled": "Enabled",
  1503. "disabled": "Disabled",
  1504. "nextRun": "Next run",
  1505. "lastRun": "Last run",
  1506. "runCount": "Reports sent",
  1507. "save": "Save Schedule",
  1508. "create": "Create Schedule",
  1509. "delete": "Delete Schedule",
  1510. "created": "Report schedule created",
  1511. "updated": "Report schedule updated",
  1512. "deleted": "Report schedule deleted",
  1513. "toggledOn": "Report schedule enabled",
  1514. "toggledOff": "Report schedule disabled",
  1515. "failedSave": "Failed to save",
  1516. "failedSend": "Failed to send",
  1517. "failedToggle": "Failed to toggle",
  1518. "failedDelete": "Failed to delete",
  1519. "noMembers": "No team members found",
  1520. "addRecipient": "Add recipient...",
  1521. "searchMembers": "Search members...",
  1522. "newSchedule": "New Schedule",
  1523. "editSchedule": "Edit Schedule",
  1524. "edit": "Edit",
  1525. "cancel": "Cancel",
  1526. "sent": "sent",
  1527. "sendNow": "Send Now",
  1528. "sentNow": "Report sent successfully",
  1529. "emptyTitle": "No scheduled reports",
  1530. "emptyDescription": "Create a schedule to automatically generate and email reports to your team.",
  1531. "sectionLabels": {
  1532. "revenue": "Revenue",
  1533. "tax": "Tax",
  1534. "pastDue": "Past Due Invoices",
  1535. "services": "Services",
  1536. "customers": "Customers",
  1537. "technicians": "Technicians",
  1538. "parts": "Parts Usage",
  1539. "jobAnalytics": "Job Analytics",
  1540. "retention": "Customer Retention",
  1541. "inventory": "Inventory"
  1542. }
  1543. },
  1544. "webhooks": {
  1545. "title": "Webhooks",
  1546. "subtitle": "Send real-time event notifications to your own systems via HTTPS. Each event is signed with HMAC-SHA256 so you can verify authenticity.",
  1547. "create": "Add webhook",
  1548. "createTitle": "Add webhook",
  1549. "editTitle": "Edit webhook",
  1550. "createDescription": "Webhooks are POSTed as JSON. Failed deliveries are retried with exponential backoff up to 5 times.",
  1551. "name": "Name",
  1552. "namePlaceholder": "e.g. Accounting sync",
  1553. "url": "Endpoint URL",
  1554. "urlHint": "Must start with http:// or https://. We strongly recommend HTTPS.",
  1555. "description": "Description (optional)",
  1556. "events": "Events",
  1557. "eventsHint": "Choose which events trigger this webhook.",
  1558. "subscribeToAll": "All events",
  1559. "selectAtLeastOneEvent": "Select at least one event",
  1560. "groups": {
  1561. "customers": "Customers",
  1562. "vehicles": "Vehicles",
  1563. "services": "Service Records",
  1564. "quotes": "Quotes",
  1565. "payments": "Payments",
  1566. "inspections": "Inspections",
  1567. "inventory": "Inventory",
  1568. "findings": "Findings"
  1569. },
  1570. "save": "Save",
  1571. "cancel": "Cancel",
  1572. "delete": "Delete",
  1573. "rotate": "Rotate",
  1574. "done": "Done",
  1575. "paused": "Paused",
  1576. "statusOk": "Healthy",
  1577. "statusFailing": "{count, plural, one {# recent failure} other {# recent failures}}",
  1578. "lastDelivery": "Last delivery {when}",
  1579. "totalDeliveries": "{count, plural, one {# delivery} other {# deliveries}}",
  1580. "toggleAria": "Enable or disable this webhook",
  1581. "deliveries": "Deliveries",
  1582. "sendTest": "Send test",
  1583. "testSent": "Test event sent",
  1584. "testFailed": "Failed to send test event",
  1585. "rotateSecret": "Rotate signing secret",
  1586. "confirmRotateTitle": "Rotate signing secret?",
  1587. "confirmRotateDescription": "The current secret will stop working immediately. Update your endpoint with the new secret.",
  1588. "secretRotated": "Secret rotated",
  1589. "secretRotatedDescription": "Save this secret now — it cannot be recovered later.",
  1590. "confirmDeleteTitle": "Delete webhook?",
  1591. "confirmDeleteDescription": "“{name}” will stop receiving events immediately. This cannot be undone.",
  1592. "secretShownOnceTitle": "Webhook “{name}” created",
  1593. "secretShownOnceDescription": "Copy this signing secret now. It will not be shown again.",
  1594. "secretCopyHint": "Use this secret to verify the X-Torqvoice-Signature header on each request.",
  1595. "deliveriesTitle": "Deliveries — {name}",
  1596. "deliveriesDescription": "Last 50 attempts. Failed events are retried automatically with exponential backoff.",
  1597. "deliveriesEmpty": "No deliveries yet. Send a test event to try it out.",
  1598. "attempt": "Attempt {n}/{max}",
  1599. "nextRetry": "Next retry {when}",
  1600. "retryQueued": "Retry queued",
  1601. "retryFailed": "Retry failed",
  1602. "saveFailed": "Save failed",
  1603. "deleteFailed": "Delete failed",
  1604. "toggleFailed": "Toggle failed",
  1605. "rotateFailed": "Rotate failed",
  1606. "created": "Webhook created",
  1607. "updated": "Webhook updated",
  1608. "deleted": "Webhook deleted",
  1609. "emptyTitle": "No webhooks yet",
  1610. "emptyDescription": "Add a webhook to push events to your own systems — accounting sync, custom dashboards, Zapier, anything that speaks HTTP.",
  1611. "helpTitle": "Verifying webhook signatures",
  1612. "helpIntro": "Each delivery includes an HMAC-SHA256 signature so you can confirm the request came from Torqvoice.",
  1613. "helpHeadersTitle": "Headers sent with every request",
  1614. "helpVerify": "Reconstruct the signed string as `[timestamp].[body]` and compare with timing-safe equality:",
  1615. "tabWebhooks": "Webhooks",
  1616. "tabReference": "Events Reference",
  1617. "autoDisabled": "Auto-paused",
  1618. "autoDisabledBanner": "This webhook was auto-paused after 20 consecutive failures. Re-enable to resume deliveries.",
  1619. "reEnable": "Re-enable",
  1620. "resumed": "Webhook resumed",
  1621. "copyUrl": "Copy URL",
  1622. "refresh": "Refresh",
  1623. "noMatches": "No deliveries match this filter.",
  1624. "retry": "Retry",
  1625. "viewPayload": "View payload",
  1626. "payloadCopied": "Payload copied",
  1627. "loadingPayload": "Loading payload…",
  1628. "requestPayload": "Request payload",
  1629. "response": "Response",
  1630. "close": "Close",
  1631. "samplePayload": "Sample envelope",
  1632. "referenceTitle": "Event reference",
  1633. "referenceIntro": "Every delivery follows this envelope shape. Click an event to see a sample payload your endpoint will receive.",
  1634. "filter": {
  1635. "all": "All",
  1636. "success": "Success",
  1637. "failed": "Failed",
  1638. "retrying": "Retrying",
  1639. "pending": "Pending"
  1640. }
  1641. },
  1642. "alerts": {
  1643. "title": "Alerts",
  1644. "description": "Choose which events you want to be told about, and how.",
  1645. "serviceRequest": {
  1646. "title": "Service request alerts",
  1647. "description": "Service requests submitted through the customer portal always show up in the notification bell. Turn this on to also get them by email.",
  1648. "email": "Email notification",
  1649. "emailHint": "Off by default. One email per request, sent as soon as a customer submits it.",
  1650. "recipients": "Send to",
  1651. "recipientsHint": "Leave empty to notify every owner and admin. Separate several addresses with commas.",
  1652. "invalidRecipients": "Not a valid address: {list}",
  1653. "emailSetupHint": "Alerts are sent with your configured mail provider.",
  1654. "emailSetupLink": "Email settings →",
  1655. "save": "Save alert settings",
  1656. "saved": "Service request alert settings saved"
  1657. },
  1658. "lowStock": {
  1659. "title": "Low stock alerts",
  1660. "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.",
  1661. "enable": "Enable low stock alerts",
  1662. "enableHint": "Off by default. Only parts with a reorder point set are watched.",
  1663. "inApp": "In-app notification",
  1664. "inAppHint": "One grouped notification in the bell, not one per part.",
  1665. "email": "Email digest",
  1666. "emailHint": "A single email listing every part that just went low.",
  1667. "emailInterval": "Minimum hours between emails",
  1668. "emailIntervalHint": "At most one digest per this many hours. 0 disables the limit.",
  1669. "save": "Save alert settings",
  1670. "saved": "Low stock alert settings saved",
  1671. "defaultThreshold": "Default reorder point",
  1672. "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.",
  1673. "checkNow": "Check now",
  1674. "checkDisabled": "Alerts are turned off.",
  1675. "checkNothingNew": "Nothing new — every low part has already been reported.",
  1676. "checkAlerted": "{count} newly low part(s) reported",
  1677. "checkFailed": "Check failed",
  1678. "configurePerPart": "Set a part's own Min Qty on the inventory page →",
  1679. "readMore": "Read More"
  1680. },
  1681. "technicianStatus": {
  1682. "title": "Torqvoice Technician App (Android/iOS)",
  1683. "description": "Told when a technician moves a job from their phone.",
  1684. "inApp": "Notify the desk",
  1685. "inAppHint": "A notification when a job is finished, parked for parts, or picked back up.",
  1686. "save": "Save",
  1687. "saved": "Alert settings saved",
  1688. "saveFailed": "Could not save the settings"
  1689. }
  1690. },
  1691. "support": {
  1692. "title": "Support",
  1693. "description": "Reach the Torqvoice support team without leaving the app. Your request includes your organisation and the page you were on.",
  1694. "showButton": "Show the support button",
  1695. "showButtonHint": "A draggable button on every page, on this device. When hidden, a small tab on the right edge brings it back.",
  1696. "contactTitle": "Contact support",
  1697. "contactHint": "Open the support form straight away.",
  1698. "contactAction": "Open form"
  1699. },
  1700. "install": {
  1701. "title": "Install Torqvoice",
  1702. "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.",
  1703. "installed": "Torqvoice is installed on this device.",
  1704. "iosHint": "In Safari, tap the Share button, then \"Add to Home Screen\".",
  1705. "unavailable": "This browser has not offered an install prompt. Open the browser menu and look for \"Install app\" or \"Add to Home Screen\".",
  1706. "bannerHidden": "The install banner is hidden on this device.",
  1707. "showBanner": "Show banner again"
  1708. },
  1709. "tireHotel": {
  1710. "title": "Tire hotel",
  1711. "description": "Store your customers’ seasonal tires and keep track of where every set sits.",
  1712. "cardTitle": "Tire storage",
  1713. "enable": "Enable tire hotel",
  1714. "enableHint": "Adds tire storage to the sidebar. Turning it off later hides it again without deleting anything.",
  1715. "defaultCapacity": "Default tires per shelf",
  1716. "defaultCapacityHint": "Prefilled when you add new shelves. You can change it per shelf.",
  1717. "warnPercent": "Warn when full (%)",
  1718. "warnPercentHint": "Flags the storage overview once this share of total capacity is in use.",
  1719. "treadTitle": "Replacement thresholds",
  1720. "treadHint": "Legal minimums differ by country, so set the limits your market uses. Tread below the limit is flagged for replacement.",
  1721. "summerLimit": "Summer limit ({unit})",
  1722. "winterLimit": "Winter limit ({unit})",
  1723. "unitMm": "mm",
  1724. "unit32nds": "32nds",
  1725. "setupHint": "Next, set up your shelves.",
  1726. "setupLink": "Open storage layout",
  1727. "save": "Save tire hotel settings",
  1728. "saved": "Tire hotel settings saved",
  1729. "billingTitle": "Storage billing",
  1730. "billingHint": "Prefilled on the storage line when you bill a set. Editable on the bill.",
  1731. "seasonalPrice": "Default storage price",
  1732. "prepTitle": "Prep pricing",
  1733. "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.",
  1734. "prepNotCharged": "not charged"
  1735. },
  1736. "providers": {
  1737. "tabs": {
  1738. "email": "Email",
  1739. "sms": "SMS",
  1740. "whatsapp": "WhatsApp",
  1741. "telegram": "Telegram"
  1742. },
  1743. "locked": {
  1744. "email": {
  1745. "feature": "Email Settings",
  1746. "description": "Configure SMTP email sending to deliver invoices, quotes, and notifications directly from your workshop."
  1747. },
  1748. "sms": {
  1749. "feature": "SMS Messaging",
  1750. "description": "Send and receive SMS messages with your customers directly from Torqvoice."
  1751. },
  1752. "whatsapp": {
  1753. "feature": "WhatsApp Messaging",
  1754. "description": "Send and receive WhatsApp messages, including photos of parts, directly from Torqvoice."
  1755. },
  1756. "telegram": {
  1757. "feature": "Telegram Messaging",
  1758. "description": "Send and receive Telegram messages with your customers directly from Torqvoice."
  1759. }
  1760. },
  1761. "moved": {
  1762. "title": "These settings moved to Integrations",
  1763. "description": "Email, SMS, WhatsApp and Telegram are set up in Integrations now, alongside calendars and everything else you connect. What you had set up came with them, so there is nothing to enter again.",
  1764. "connectedTo": "Connected through {vendor}",
  1765. "notSetUp": "Not set up yet",
  1766. "manage": "Manage",
  1767. "notConnected": "Not connected",
  1768. "goToIntegrations": "Go to Integrations",
  1769. "platformMail": "Sending through the platform mail server. Connect your own to send from your address.",
  1770. "onByDefault": "On by default"
  1771. }
  1772. },
  1773. "designer": {
  1774. "invoice": "Invoice",
  1775. "quote": "Quote",
  1776. "eyebrow": "Document designer",
  1777. "galleryTitle": "Start from a template",
  1778. "galleryHint": "Pick a starting point. You can change everything in the designer.",
  1779. "yourDesigns": "Your designs",
  1780. "autoRuleHint": "Sales made without a vehicle print with the design marked for them, unless the sale or its customer chose another.",
  1781. "useForPartsSale": "Use for parts-only sales",
  1782. "usedForPartsSale": "Used for parts-only sales",
  1783. "autoRule": {
  1784. "parts_sale": "Parts-Only Sale"
  1785. },
  1786. "autoRuleSaved": "Updated when \"{name}\" is used",
  1787. "couldNotSaveRule": "Could not update the rule",
  1788. "templates": "Templates",
  1789. "inUse": "In use",
  1790. "savedOn": "Saved {date}",
  1791. "deleteDesignTitle": "Delete design",
  1792. "deleteDesignBody": "Delete the design \"{name}\"? The invoice and quote keep whatever is applied; only the saved copy goes.",
  1793. "delete": "Delete",
  1794. "deleteDesign": "Delete this design",
  1795. "continueCurrent": "Continue with my current layout",
  1796. "backToSettings": "Back to settings",
  1797. "useInvoiceDesign": "Use invoice design",
  1798. "copiedToQuote": "Invoice design copied to the quote",
  1799. "rulers": "Rulers",
  1800. "saveDesign": "Save design",
  1801. "saveDesignHint": "Keep a named copy of this design, to come back to from the template gallery",
  1802. "reset": "Reset",
  1803. "save": "Save",
  1804. "saving": "Saving…",
  1805. "saved": "Saved",
  1806. "couldNotSave": "Could not save",
  1807. "couldNotSaveDesigns": "Could not save your designs",
  1808. "designUpdated": "Updated \"{name}\"",
  1809. "designSaved": "Saved as \"{name}\"",
  1810. "defaultDesignName": "My {doc} design",
  1811. "documentStyling": "Document styling",
  1812. "sections": "Sections",
  1813. "sectionEmpty": "empty",
  1814. "sectionEmptyHint": "Shown, but there is nothing to print in it with the current data.",
  1815. "sectionShownHint": "Shown on the sheet. Click to hide it.",
  1816. "sectionHiddenHint": "Hidden from the sheet. Click to show it.",
  1817. "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.",
  1818. "returnToFlow": "Return {section} to the flow",
  1819. "saveDialogTitle": "Save this design",
  1820. "saveDialogBody": "Keeps a named copy of the current arrangement and look. Find it again under Your designs in the template gallery.",
  1821. "designNamePlaceholder": "Design name",
  1822. "nameExists": "A design with this name exists; saving updates it.",
  1823. "updateDesign": "Update design",
  1824. "cancel": "Cancel",
  1825. "insertHere": "Insert here",
  1826. "dropLeftColumn": "Left column",
  1827. "dropRightColumn": "Right column",
  1828. "freePosition": "Free position",
  1829. "sectionSettings": "Section settings",
  1830. "panelStyle": "Panel style",
  1831. "variant": {
  1832. "accent": "Accent",
  1833. "panel": "Panel",
  1834. "outline": "Outline",
  1835. "lines": "Lines",
  1836. "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.",
  1837. "classic": "Classic",
  1838. "box": "Boxed",
  1839. "totalsHint": "Classic prints bare lines with a rule above the total. Boxed frames them. Panel and Accent set them on a card."
  1840. },
  1841. "alignment": "Alignment",
  1842. "alignCenter": "Center",
  1843. "itemsTableHint": "One numbered list of every line on the job, labor first and parts after, in place of the separate parts and labor tables.",
  1844. "discardChanges": "Discard changes",
  1845. "tablesExclusiveHint": "The sheet prints one arrangement: a single numbered list, or separate parts and labor tables. Switching one on switches the other off.",
  1846. "innerPadding": "Inner spacing",
  1847. "totalsWidth": "Width",
  1848. "totalsWidthHint": "Empty spans the row. Set points to hang the box on the right; in a column it takes the column's width.",
  1849. "placement": "Placement",
  1850. "visible": "Visible",
  1851. "columnFull": "Full",
  1852. "columnLeft": "Left",
  1853. "columnRight": "Right",
  1854. "drawBox": "Draw a box",
  1855. "showHeading": "Show heading",
  1856. "spacing": "Spacing",
  1857. "placedByHand": "This section is placed by hand, so flow spacing does not move it.",
  1858. "placedByHandFramed": "The framed letterhead sits on the band; drag it to move it.",
  1859. "placedByHandDrag": "Drag it, or return it to the flow, to use spacing.",
  1860. "marginTop": "Top",
  1861. "marginBottom": "Bottom",
  1862. "marginLeft": "Left",
  1863. "marginRight": "Right",
  1864. "spacingHint": "Points of empty room the section keeps around itself in the flow.",
  1865. "logo": "Logo",
  1866. "size": "Size",
  1867. "logoHint": "Turn the logo off under Fields to print the company name instead.",
  1868. "fields": "Fields",
  1869. "removeField": "Remove from this section",
  1870. "yourCustomFields": "Your custom fields",
  1871. "appearance": "Appearance",
  1872. "details": "Details",
  1873. "text": "Text",
  1874. "companyName": "Company name",
  1875. "heading": "Heading",
  1876. "fill": "Fill",
  1877. "border": "Border",
  1878. "lineWidth": "Line width",
  1879. "borderWidth": "Border width",
  1880. "outerBorder": "Outer border",
  1881. "rowBanding": "Row banding",
  1882. "likeSheet": "Like sheet",
  1883. "on": "On",
  1884. "off": "Off",
  1885. "font": "Font",
  1886. "inherit": "Inherit",
  1887. "auto": "auto",
  1888. "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.",
  1889. "document": "Document",
  1890. "documentSubtitle": "Applies to the whole sheet",
  1891. "headerStyleTitle": "Header style",
  1892. "headerStyle": {
  1893. "standard": {
  1894. "name": "Standard",
  1895. "desc": "Name and details on white, rule beneath"
  1896. },
  1897. "compact": {
  1898. "name": "Compact",
  1899. "desc": "Tight header, dense rows"
  1900. },
  1901. "modern": {
  1902. "name": "Modern",
  1903. "desc": "Full-width colored banner"
  1904. },
  1905. "framed": {
  1906. "name": "Framed",
  1907. "desc": "Band across the top, rail down the left"
  1908. }
  1909. },
  1910. "colors": "Colors",
  1911. "primary": "Primary",
  1912. "background": "Background",
  1913. "accent": "Accent",
  1914. "frame": "Frame",
  1915. "rail": "Rail",
  1916. "leftEdge": "Left edge",
  1917. "rightEdge": "Right edge",
  1918. "frameLine": "Frame line",
  1919. "cornerRadius": "Corner radius",
  1920. "shadow": "Shadow",
  1921. "shadowThin": "Thin",
  1922. "shadowNormal": "Normal",
  1923. "shadowWide": "Wide",
  1924. "typography": "Typography",
  1925. "baseSize": "Base size",
  1926. "page": "Page",
  1927. "margins": "Margins",
  1928. "rowHeight": "Row height",
  1929. "band": "Band",
  1930. "sample": {
  1931. "itemLabor": "Front brakes replaced",
  1932. "itemDisc": "Brake disc, front",
  1933. "itemPads": "Brake pad set, front axle",
  1934. "itemConsumables": "Consumables",
  1935. "unitPcs": "pcs",
  1936. "unitSet": "set",
  1937. "unitEach": "x",
  1938. "findingPads": "Rear pads at 15%",
  1939. "findingPadsNote": "Replace within 5,000 km",
  1940. "findingOilWeep": "Small oil weep at valve cover",
  1941. "notes": "Thank you for choosing our workshop. Contact us if you have any questions.",
  1942. "warranty": "12 months warranty on parts and labour.",
  1943. "serviceTitle": "Annual service and brakes",
  1944. "serviceType": "Repair",
  1945. "companyName": "Your Workshop",
  1946. "slogan": "Quality service you can trust",
  1947. "paymentTerms": "Due within 14 days",
  1948. "footerNote": "Thank you for your business",
  1949. "value": "Sample"
  1950. },
  1951. "logoUpload": "Upload logo",
  1952. "logoReplace": "Replace logo",
  1953. "logoUploading": "Uploading…",
  1954. "logoFailed": "Could not upload that image",
  1955. "footerLogoHint": "Switch the logo on under Fields to print it at the foot of the page too.",
  1956. "logoReset": "Use the company logo",
  1957. "logoOwn": "Printed on this document only. The company logo is unchanged.",
  1958. "logoInherited": "Using the company logo. Upload one here to use a different mark on this document only.",
  1959. "slogan": "Slogan",
  1960. "sloganPlaceholderHint": "No slogan is set, so the sheet shows a stand-in that will not print.",
  1961. "sloganSetHint": "Your slogan comes from your company details.",
  1962. "sloganLink": "Company settings",
  1963. "paymentTerms": "Payment terms",
  1964. "paymentTermsPlaceholderHint": "No payment terms are set, so the sheet shows a stand-in that will not print.",
  1965. "paymentTermsSetHint": "Your payment terms come from your payment settings.",
  1966. "paymentTermsLink": "Payment settings",
  1967. "titleText": "Title text",
  1968. "titleTextHint": "What this document calls itself. Left empty, it prints its own name in the reader's language.",
  1969. "placeholder": "Placeholder",
  1970. "leaveTitle": "Leave without saving?",
  1971. "leaveBody": "Your changes to this design have not been saved. They will be lost.",
  1972. "leaveConfirm": "Leave",
  1973. "boldField": "Bold",
  1974. "deleteDesignDrafts": "{count, plural, one {# draft invoice} other {# draft invoices}} using it will go back to the default design.",
  1975. "deleteDesignCustomers": "{count, plural, one {# customer} other {# customers}} set to it will go back to the default design.",
  1976. "setDefault": "Set as default",
  1977. "defaultSet": "\"{name}\" is now in use",
  1978. "couldNotSetDefault": "Could not set the default design"
  1979. },
  1980. "preview": {
  1981. "title": "Brake Service & Oil Change",
  1982. "serviceType": "Maintenance",
  1983. "findingPads": "Rear brake pads worn to 15%",
  1984. "findingPadsNote": "Recommend replacement within 5,000 miles",
  1985. "findingOilLeak": "Minor oil leak at valve cover gasket",
  1986. "invoiceNotes": "Front brake pads replaced. Oil and filter changed with synthetic 5W-30. Next service recommended at 50,000 miles.",
  1987. "quoteNotes": "Front brake pads replacement recommended. Oil and filter change with synthetic 5W-30.",
  1988. "partBrakePads": "Brake Pads (Front)",
  1989. "partOilFilter": "Oil Filter",
  1990. "partSyntheticOil": "Synthetic Oil 5W-30",
  1991. "laborBrakeReplacement": "Brake Replacement",
  1992. "laborOilChange": "Oil Change"
  1993. },
  1994. "inspectionReminders": {
  1995. "title": "Inspection reminders and booking",
  1996. "description": "How the booking link in a reminder behaves. Set once; every campaign uses these.",
  1997. "duration": "Inspection duration (minutes)",
  1998. "durationHint": "How long a periodic inspection occupies a bay. The link books slots of this length.",
  1999. "leadDays": "Earliest booking (days ahead)",
  2000. "leadDaysHint": "1 means the first time offered is tomorrow, never today.",
  2001. "horizonWeeks": "How far ahead (weeks)",
  2002. "horizonHint": "Customers can pick any free time inside this many weeks.",
  2003. "reserve": "Keep free for walk-ins",
  2004. "reserveHint": "Bays or technicians the link never fills. 0 lets it use every free one.",
  2005. "linkValidDays": "Link stays open (days)",
  2006. "linkValidHint": "At least {min}. Links also stay open until a week after the deadline, whichever is later.",
  2007. "bookingMode": "What a booking creates",
  2008. "bookingModeDirect": "A scheduled work order on the board",
  2009. "bookingModeRequest": "A request the office confirms first",
  2010. "bookingModeHint": "Direct booking is what makes the link worth clicking. Choose the request if you want to approve every time.",
  2011. "phone": "Phone number in messages",
  2012. "phoneHint": "Shown as the alternative to the link. Defaults to the workshop phone number.",
  2013. "save": "Save",
  2014. "saved": "Settings saved",
  2015. "saveFailed": "Could not save",
  2016. "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.",
  2017. "timeZoneExplicit": "Booking times and opening hours are read in {zone}.",
  2018. "timeZoneChange": "Change under Localization"
  2019. }
  2020. }