service.json 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752
  1. {
  2. "page": {
  3. "notFound": "Запись обслуживания не найдена",
  4. "updated": "Запись обслуживания обновлена",
  5. "failedUpdate": "Не удалось обновить запись обслуживания",
  6. "deleteTitle": "Удалить запись обслуживания",
  7. "deleteDescription": "Это безвозвратно удалит запись обслуживания и все связанные данные. Это действие необратимо.",
  8. "deleted": "Запись обслуживания удалена",
  9. "failedDelete": "Не удалось удалить",
  10. "datesExpiredTitle": "Даты счёта истекли",
  11. "datesExpiredDescription": "Дата счёта или срок оплаты истёк. Хотите обновить даты перед продолжением?",
  12. "datesExpiredUpdate": "Обновить даты и продолжить",
  13. "datesExpiredProceed": "Продолжить без изменений",
  14. "datesExpiredUseToday": "Обновить до сегодняшней даты",
  15. "datesExpiredCustomize": "Выбрать даты вручную",
  16. "datesExpiredBack": "Назад",
  17. "datesExpiredSetToday": "Установить на сегодня",
  18. "customFieldsInvalid": "Заполните все обязательные пользовательские поля",
  19. "customFieldsSaveFailed": "Не удалось сохранить пользовательские поля",
  20. "problems": {
  21. "title": "Заказу нужно название, прежде чем его можно сохранить.",
  22. "negative": "Количество, часы, цены и затраты не могут быть отрицательными.",
  23. "partName": "У каждой детали с ценой должно быть название.",
  24. "laborDescription": "У каждой строки работ с часами или ставкой должно быть описание.",
  25. "concernCondition": "Если у пункта указаны причина, устранение или проверка, заполните и симптом."
  26. }
  27. },
  28. "header": {
  29. "tabs": {
  30. "details": "Детали",
  31. "images": "Изображения",
  32. "video": "Видео",
  33. "documents": "Документы",
  34. "statusReports": "Отчёты о состоянии"
  35. },
  36. "save": "Сохранить",
  37. "pdf": "PDF",
  38. "email": "Эл. почта",
  39. "share": "Поделиться",
  40. "notify": "Уведомить",
  41. "delete": "Удалить",
  42. "unpaid": "Не оплачено",
  43. "unsavedChanges": "Несохранённые изменения",
  44. "saved": "Сохранено",
  45. "joinCall": "Присоединиться к видеозвонку",
  46. "moreActions": "Другие действия",
  47. "designMenu": "Дизайн счёта",
  48. "designMenuLoading": "Проверяем, с каким дизайном печатается этот счёт...",
  49. "designMenuExplain": "Ушёл клиенту {date}, поэтому печатается с тем дизайном, с которым был отправлен. Выбор другого меняет только внешний вид. То, что написано в счёте, останется как при отправке, а прежний вид не сохраняется.",
  50. "designSentWith": "Дизайн на момент отправки",
  51. "designFollow": "Как текущий по умолчанию",
  52. "designFollowNamed": "Как текущий по умолчанию ({name})",
  53. "designDefaultName": "текущий дизайн по умолчанию",
  54. "designPickConfirmTitle": "Перевести этот счёт на {name}?",
  55. "designPickConfirmBody": "Меняется только внешний вид. Данные сервиса, клиент, условия оплаты и суммы останутся ровно такими, какими были отправлены. Нынешний дизайн не сохраняется, поэтому отменить это не получится.",
  56. "designPickConfirm": "Изменить дизайн",
  57. "designPickDone": "Счёт теперь печатается с дизайном {name}",
  58. "designPickFailed": "Не удалось изменить дизайн",
  59. "designRefresh": "Обновить до текущих данных",
  60. "designRefreshConfirmTitle": "Обновить этот счёт до текущих данных?",
  61. "designRefreshConfirmBody": "Данные мастерской, клиент, автомобиль, условия оплаты и дизайн считываются заново такими, какие они сегодня, и счёт закрепляется за ними. Его строки и итоги принадлежат самому счёту и не меняются. Уже скачанные или отправленные по почте копии остаются прежними; ссылка для общего доступа и портал показывают обновлённый счёт. Это действие нельзя отменить.",
  62. "designRefreshConfirm": "Обновить счёт",
  63. "designRefreshDone": "Этот счёт теперь печатается с текущими данными",
  64. "designRefreshFailed": "Не удалось обновить счёт",
  65. "printWorkOrder": "Печать заказ-наряда"
  66. },
  67. "basicInfo": {
  68. "title": "Основная информация",
  69. "invoiceDetails": "Детали счёта",
  70. "customerInfo": "Клиент и транспорт",
  71. "paid": "Оплачено",
  72. "markPaid": "Отметить как оплачено",
  73. "markUnpaid": "Отметить как неоплачено",
  74. "vehicle": "Транспортное средство",
  75. "open": "Открыть",
  76. "customer": "Клиент",
  77. "titleLabel": "Название *",
  78. "titlePlaceholder": "Замена масла",
  79. "date": "Дата",
  80. "type": "Тип",
  81. "mileage": "Пробег",
  82. "mileageMarine": "Моточасы",
  83. "status": "Статус",
  84. "technician": "Механик",
  85. "invoiceNumber": "Номер счёта",
  86. "invoiceDate": "Дата счёта",
  87. "invoiceDueDate": "Срок оплаты",
  88. "typeOptions": {
  89. "maintenance": "Техобслуживание",
  90. "repair": "Ремонт",
  91. "upgrade": "Модернизация",
  92. "inspection": "Осмотр"
  93. },
  94. "statusOptions": {
  95. "pending": "Ожидает",
  96. "in_progress": "В работе",
  97. "waiting_parts": "Ожидание запчастей",
  98. "completed": "Завершено"
  99. },
  100. "searchVehicles": "Поиск транспортных средств...",
  101. "noVehicleFound": "Транспортное средство не найдено.",
  102. "techPicker": {
  103. "placeholder": "Выберите или введите имя...",
  104. "searchPlaceholder": "Поиск или ввод имени...",
  105. "useCustom": "Использовать \"{search}\"",
  106. "typePrompt": "Введите имя...",
  107. "boardTechnicians": "Механики доски",
  108. "teamMembers": "Участники команды"
  109. },
  110. "design": "Дизайн счёта",
  111. "designDefault": "По умолчанию для мастерской",
  112. "designFollowing": "По умолчанию ({name})",
  113. "designSaved": "Дизайн счёта обновлён",
  114. "designFollowingRule": "По умолчанию ({name}, {rule})",
  115. "designRule": {
  116. "parts_sale": "Продажа только запчастей"
  117. },
  118. "designSaveFailed": "Не удалось изменить дизайн счёта"
  119. },
  120. "parts": {
  121. "title": "Запчасти",
  122. "fromInventory": "Со склада",
  123. "addPart": "Добавить запчасть",
  124. "partNumber": "Арт. №",
  125. "name": "Название",
  126. "qty": "Кол-во",
  127. "unitCost": "Себестоимость",
  128. "unitCostHint": "Закупочная цена (внутренняя — клиенту не показывается)",
  129. "markupPercent": "Наценка %",
  130. "markupPercentHint": "Наценка к себестоимости (внутренняя — клиенту не показывается)",
  131. "applyMarkup": "Применить {percent}%",
  132. "applyMarkupHint": "Повторно применить наценку {percent}% к себестоимости в каждой строке",
  133. "unitPrice": "Цена за ед.",
  134. "total": "Итого",
  135. "namePlaceholder": "Название *",
  136. "subtotal": "Подитог запчастей: {amount}",
  137. "inventoryTitle": "Выбор запчасти со склада",
  138. "searchInventory": "Поиск на складе...",
  139. "inStock": "{quantity} в наличии",
  140. "noInventory": "Запчасти на складе не найдены.",
  141. "scanBarcode": "Сканировать",
  142. "scanTitle": "Сканировать штрихкод",
  143. "partFound": "\"{name}\" добавлено из склада",
  144. "partNotFound": "Деталь для штрихкода \"{barcode}\" не найдена",
  145. "deleteRow": "Удалить строку",
  146. "outOfStock": "Нет в наличии",
  147. "onBackorder": "Под заказ ({count})",
  148. "nameMissingHint": "Строки без названия детали не сохраняются."
  149. },
  150. "labor": {
  151. "title": "Работа",
  152. "addLabor": "Добавить работу",
  153. "fromPresets": "Из шаблонов",
  154. "description": "Описание",
  155. "hours": "Часы",
  156. "rate": "Ставка ({currency}/ч)",
  157. "total": "Итого",
  158. "descriptionPlaceholder": "Описание *",
  159. "subtotal": "Подитог работ: {amount}",
  160. "addService": "Добавить услугу",
  161. "addFinding": "Наблюдение",
  162. "newObservation": "Новое наблюдение",
  163. "addExisting": "Показать существующие ({count})",
  164. "qty": "Кол-во",
  165. "qtyOrHours": "Услуга / Часы",
  166. "hourlyTag": "н/ч",
  167. "serviceTag": "усл.",
  168. "hourlyHint": "Почасовая: оценка по нормо-часам (часы × ставка/час). Нажмите для изменения.",
  169. "serviceHint": "Услуга: фиксированная цена за единицу. Нажмите для изменения.",
  170. "deleteRow": "Удалить строку",
  171. "descriptionMissingHint": "Строки без описания не сохраняются.",
  172. "shopFeeTag": "Сбор",
  173. "shopFeeHintFlat": "Сбор мастерской из настроек, фиксированной суммой. Измените цену для этой работы или удалите строку, чтобы убрать его.",
  174. "shopFeeHintPercentLabor": "Сбор мастерской из настроек: {percent} % от работ по этому заказу. Удалите строку, чтобы убрать его.",
  175. "shopFeeHintPercentAll": "Сбор мастерской из настроек: {percent} % от работ и запчастей по этому заказу. Удалите строку, чтобы убрать его."
  176. },
  177. "liveLabor": {
  178. "title": "{count, plural, one {Механик добавил # строку работ в этот заказ} few {Механик добавил # строки работ в этот заказ} many {Механик добавил # строк работ в этот заказ} other {Механик добавил # строк работ в этот заказ}}",
  179. "body": "Пока вы редактируете, она не попадает в список. При следующем сохранении она сохранится в любом случае.",
  180. "show": "Показать"
  181. },
  182. "totals": {
  183. "title": "Итоги",
  184. "parts": "Запчасти",
  185. "labor": "Работа",
  186. "subtotal": "Подитог",
  187. "subtotalInclTax": "Подитог (с НДС)",
  188. "discount": "Скидка",
  189. "discountNone": "Нет",
  190. "discountPercentage": "Процент",
  191. "discountFixed": "Фиксированная",
  192. "tax": "Налог",
  193. "taxIncluded": "Налог (вкл.)",
  194. "total": "Итого",
  195. "inclusiveModeHint": "Цены позиций вводятся с НДС. Итоги показывают разбивку: без НДС + НДС.",
  196. "partsCost": "Себестоимость запчастей (внутр.)"
  197. },
  198. "notes": {
  199. "title": "Заметки",
  200. "public": "Публичные",
  201. "internal": "Внутренние",
  202. "publicPlaceholder": "Заметки, видимые на счёте...",
  203. "internalPlaceholder": "Внутренние заметки (не показываются на счёте)...",
  204. "publicHelper": "Отображаются на счёте и в общих документах",
  205. "internalHelper": "Видно только вашей команде",
  206. "aiWrite": "ИИ-генерация",
  207. "aiGenerated": "ИИ-заметки успешно сгенерированы",
  208. "aiGenerateFailed": "Не удалось сгенерировать ИИ-заметки",
  209. "aiDialogTitle": "ИИ-генерация",
  210. "aiDialogDescription": "ИИ проанализирует запчасти и работы в этой записи обслуживания и создаст профессиональное описание. Результат будет записан в текущий выбранный тип заметки.",
  211. "aiGenerate": "Сгенерировать",
  212. "aiOverwriteDescription": "Текущая заметка уже содержит текст. Вы можете заменить его или добавить сгенерированный ИИ текст ниже.",
  213. "aiOverwriteReplace": "Заменить",
  214. "aiOverwriteAppend": "Добавить",
  215. "aiOverwriteCancel": "Отмена",
  216. "aiDontShowAgain": "Больше не показывать",
  217. "internalTitle": "Внутренние заметки",
  218. "publicTitle": "Заметки для клиента"
  219. },
  220. "invoice": {
  221. "title": "Итоги по счёту",
  222. "parts": "Запчасти",
  223. "labor": "Работа",
  224. "subtotal": "Подитог",
  225. "subtotalInclTax": "Подитог (с НДС)",
  226. "discount": "Скидка",
  227. "tax": "Налог ({rate}%)",
  228. "taxIncluded": "Налог (вкл., {rate}%)",
  229. "total": "Итого",
  230. "paid": "Оплачено",
  231. "balanceDue": "К оплате",
  232. "paidBadge": "ОПЛАЧЕНО",
  233. "entityLabel": "Счёт",
  234. "emailSubject": "Подтверждение оплаты",
  235. "statusEmailSubject": "Обновление статуса обслуживания",
  236. "markCompletedTitle": "Отметить этот счёт как завершённый?",
  237. "markCompletedDescription": "Он уже отправлен клиенту, но всё ещё помечен как незавершённый, поэтому останется на доске работ.",
  238. "markCompletedConfirm": "Отметить завершённым",
  239. "lockedFieldsetLabel": "Счёт заблокирован, редактирование отключено"
  240. },
  241. "payments": {
  242. "title": "Платежи",
  243. "markUnpaid": "Отметить как неоплаченный",
  244. "markPaid": "Отметить как оплаченный",
  245. "recordPayment": "Записать платёж",
  246. "totalPaid": "Всего оплачено",
  247. "amount": "Сумма",
  248. "date": "Дата",
  249. "method": "Способ",
  250. "note": "Примечание",
  251. "notePlaceholder": "Необязательное примечание",
  252. "savePayment": "Сохранить платёж",
  253. "methodOptions": {
  254. "cash": "Наличные",
  255. "card": "Карта",
  256. "transfer": "Перевод",
  257. "other": "Другое"
  258. },
  259. "recorded": "Платёж записан",
  260. "markedPaid": "Отмечено как оплаченный",
  261. "markedUnpaid": "Отмечено как неоплаченный",
  262. "deleted": "Платёж удалён",
  263. "failedRecord": "Не удалось записать платёж",
  264. "failedStatus": "Не удалось обновить статус оплаты",
  265. "failedDelete": "Не удалось удалить платёж",
  266. "deleteTitle": "Удалить платёж",
  267. "deleteDescription": "Эта запись платежа будет удалена.",
  268. "failedPdf": "Не удалось сгенерировать PDF-счёт",
  269. "received": "Полученные платежи",
  270. "noneYet": "Оплат пока нет.",
  271. "balanceDue": "К оплате"
  272. },
  273. "attachments": {
  274. "deleteTitle": "Удалить вложение",
  275. "deleteDescription": "Это вложение будет безвозвратно удалено. Это действие необратимо.",
  276. "deleted": "Вложение удалено",
  277. "failedDelete": "Не удалось удалить",
  278. "images": "Изображения ({count})",
  279. "videos": "Видео ({count})",
  280. "diagnostics": "Диагностические отчёты ({count})",
  281. "documents": "Документы ({count})",
  282. "download": "Скачать",
  283. "close": "Закрыть"
  284. },
  285. "share": {
  286. "title": "Поделиться счётом",
  287. "description": "Создайте публичную ссылку, по которой любой сможет просмотреть и скачать этот счёт без входа в систему.",
  288. "notifyTitle": "Уведомить {name}",
  289. "email": "Эл. почта",
  290. "noEmail": "(эл. почта не указана)",
  291. "sms": "SMS",
  292. "noPhone": "(телефон не указан)",
  293. "sendNotification": "Отправить уведомление",
  294. "revokeLink": "Отозвать ссылку",
  295. "generateLink": "Создать публичную ссылку",
  296. "emailSent": "Письмо отправлено",
  297. "failedEmail": "Не удалось отправить письмо",
  298. "smsSent": "SMS отправлено",
  299. "failedSms": "Не удалось отправить SMS",
  300. "copyLink": "Копировать ссылку"
  301. },
  302. "sidebar": {
  303. "vehicle": "Транспортное средство",
  304. "customer": "Клиент",
  305. "vin": "VIN: {vin}",
  306. "mileageAtService": "Пробег при обслуживании: {mileage} {unit}",
  307. "engineHoursAtService": "Моточасы при обслуживании: {mileage} {unit}",
  308. "sharedLink": {
  309. "title": "Общая ссылка",
  310. "sharedOn": "Опубликовано {date}",
  311. "notViewed": "Ещё не просмотрено",
  312. "viewedTimes": "Просмотрено {count, plural, one {# раз} few {# раза} other {# раз}}",
  313. "lastViewed": "Последний раз {date}",
  314. "copyLink": "Копировать ссылку",
  315. "linkCopied": "Ссылка скопирована"
  316. }
  317. },
  318. "images": {
  319. "title": "Фотографии обслуживания",
  320. "dropzone": "Перетащите изображения сюда или нажмите для выбора",
  321. "uploading": "Загрузка...",
  322. "formats": "JPG, PNG, WebP — макс. 10МБ каждое",
  323. "uploadingImages": "Загрузка изображений...",
  324. "limitReached": "Лимит изображений достигнут ({count}/{max})",
  325. "upgradePrompt": "Обновите тариф для загрузки дополнительных изображений.",
  326. "onlyAllowed": "Допускаются только изображения JPG, PNG и WebP. {names} пропущены.",
  327. "onlyUploading": "Загружается только {count} изображений для соблюдения лимита.",
  328. "uploadingCount": "Загрузка изображений: {count}...",
  329. "uploadedCount": "Загружено изображений: {count}",
  330. "uploadFailed": "Загрузка не удалась",
  331. "deleted": "Изображение удалено",
  332. "failedDelete": "Не удалось удалить изображение",
  333. "failedUpdate": "Не удалось обновить",
  334. "description": "Описание...",
  335. "invoice": "Счёт"
  336. },
  337. "videos": {
  338. "title": "Видео обслуживания",
  339. "dropzone": "Перетащите видео сюда или нажмите для выбора",
  340. "uploading": "Загрузка...",
  341. "formats": "MP4, WebM, MOV — макс. 10МБ каждое",
  342. "uploadingVideos": "Загрузка видео...",
  343. "uploadingCount": "Загрузка видео: {count}...",
  344. "uploadedCount": "Загружено видео: {count}",
  345. "uploadFailed": "Загрузка не удалась",
  346. "deleted": "Видео удалено",
  347. "failedDelete": "Не удалось удалить видео",
  348. "failedUpdate": "Не удалось обновить",
  349. "invoice": "Счёт"
  350. },
  351. "documents": {
  352. "diagnosticTitle": "Диагностические отчёты",
  353. "documentsTitle": "Документы",
  354. "dropzone": "Перетащите файлы сюда или нажмите для выбора",
  355. "uploading": "Загрузка...",
  356. "diagnosticFormats": "PDF, CSV, TXT — макс. 10МБ каждый",
  357. "documentFormats": "PDF, DOCX, XLSX, CSV, TXT — макс. 10МБ каждый",
  358. "uploadingReports": "Загрузка отчётов...",
  359. "uploadingDocuments": "Загрузка документов...",
  360. "diagnosticLimitReached": "Лимит диагностических отчётов достигнут ({count}/{max})",
  361. "documentLimitReached": "Лимит документов достигнут ({count}/{max})",
  362. "upgradePrompt": "Обновите тариф для загрузки дополнительных файлов.",
  363. "diagnosticLabel": "Диагностический отчёт",
  364. "documentLabel": "Документ",
  365. "limitReachedToast": "Лимит {label} достигнут ({count}/{max}). Обновите тариф для увеличения.",
  366. "onlyUploading": "Загружается только {count} файлов для соблюдения лимита.",
  367. "uploadingCount": "Загрузка файлов: {count}...",
  368. "uploadedCount": "Загружено файлов: {count}",
  369. "uploadFailed": "Загрузка не удалась",
  370. "deleted": "Файл удалён",
  371. "failedDelete": "Не удалось удалить файл",
  372. "failedUpdate": "Не удалось обновить",
  373. "invoice": "Счёт"
  374. },
  375. "schedule": {
  376. "title": "Расписание",
  377. "date": "Дата",
  378. "startTime": "Время начала",
  379. "endTime": "Время окончания",
  380. "durationPresets": "Длительность",
  381. "technician": "Механик",
  382. "selectTechnician": "Выберите механика...",
  383. "searchOrCreate": "Поиск или создание механика...",
  384. "createTechnician": "Создать \"{name}\"",
  385. "creating": "Создание...",
  386. "failedCreate": "Не удалось создать механика",
  387. "addNew": "+ Добавить нового",
  388. "add": "Добавить",
  389. "newTechPlaceholder": "Имя механика...",
  390. "assign": "Назначить на доску",
  391. "assigned": "Назначено на доску работ",
  392. "failedAssign": "Не удалось назначить",
  393. "assignNotAllowed": "У вас нет разрешения назначать техников. Попросите владельца или администратора разрешить вашей роли изменять рабочую доску.",
  394. "endBeforeStart": "Время окончания должно быть позже времени начала",
  395. "failedUpdate": "Не удалось обновить время в расписании",
  396. "splitCreated": "Работа занимает несколько дней — создано продолжение на следующий день",
  397. "customTechnicians": "Свои",
  398. "readMore": "Подробнее",
  399. "setDefaults": "Настройки по умолчанию",
  400. "workBay": "Пост",
  401. "selectWorkBay": "Выберите пост…",
  402. "noWorkBay": "Без поста",
  403. "noTechnician": "Без механика",
  404. "technicians": "Механики",
  405. "otherTeamMembers": "Другие участники",
  406. "makeTechnician": "Сделает механиком",
  407. "addSomeoneNew": "Добавить человека",
  408. "notOnBoard": "Ещё не на доске",
  409. "putOnBoard": "Добавить на доску",
  410. "slotTaken": "{count, plural, one {Это время уже занято} other {На это время приходится # пересечений}}",
  411. "anotherJob": "другая работа",
  412. "clashTechnician": "техник занят",
  413. "clashBay": "пост занят",
  414. "clashBoth": "заняты оба",
  415. "bookedAnyway": "Всё равно сохранено. Измените время или выберите ближайшее свободное.",
  416. "pickNextAvailable": "Выбрать ближайшее свободное время",
  417. "findingSlot": "Поиск времени…",
  418. "slotPicked": "Назначено на ближайшее свободное время",
  419. "noSlotFound": "В ближайшие недели свободного времени не найдено",
  420. "assignedTitle": "Назначенный механик",
  421. "boardLink": "Доска работ",
  422. "someoneElse": "Кто-то другой",
  423. "loadOf": "{booked} / {capacity} ч",
  424. "loadFree": "Свободно {hours} ч",
  425. "loadFull": "Всё занято",
  426. "loadOn": "Занятые часы на {date}",
  427. "promisedAt": "Обещано клиенту",
  428. "promisedPlaceholder": "Срок ещё не обещан",
  429. "promisedClear": "Очистить"
  430. },
  431. "notifications": {
  432. "title": "Уведомления клиента",
  433. "viaSms": "через SMS",
  434. "viaEmail": "по эл. почте",
  435. "justNow": "Только что",
  436. "minutesAgo": "{count}м назад",
  437. "hoursAgo": "{count}ч назад",
  438. "daysAgo": "{count}д назад"
  439. },
  440. "table": {
  441. "warranty": "Гарантия"
  442. },
  443. "warranty": {
  444. "title": "Гарантия",
  445. "months": "Срок (месяцев)",
  446. "notes": "Условия гарантии",
  447. "notesPlaceholder": "напр. 12-месячная гарантия на все запчасти и работу...",
  448. "expiresAt": "Истекает",
  449. "presets": {
  450. "3months": "3 мес",
  451. "6months": "6 мес",
  452. "12months": "12 мес",
  453. "24months": "24 мес"
  454. },
  455. "status": {
  456. "active": "Активна",
  457. "expiring": "Истекает",
  458. "expired": "Истекла",
  459. "none": "Нет"
  460. },
  461. "statementLabel": "Что клиенту сообщается о гарантии",
  462. "statement": {
  463. "none": "Не указано",
  464. "included": "Предоставляется",
  465. "not_included": "Не предоставляется"
  466. },
  467. "noneHint": "В этом документе о гарантии ничего не печатается.",
  468. "mileageWithUnit": "Лимит пробега ({unit})",
  469. "notIncludedNotes": "Заявление для клиента",
  470. "notIncludedPlaceholder": "напр. Мастерская не даёт гарантию на запчасти, предоставленные клиентом.",
  471. "printedHint": "Печатается под гарантией в документе.",
  472. "notIncludedHint": "Оставьте пустым, и в документе будет указано, что законные права не затрагиваются.",
  473. "summaryMonths": "{count} мес."
  474. },
  475. "concerns": {
  476. "title": "Обращения клиента",
  477. "hint": "Почему клиент обратился, своими словами. Отдельная строка для каждого названного пункта.",
  478. "add": "Добавить ещё",
  479. "placeholder": "При торможении сзади слышен шум",
  480. "remove": "Удалить этот пункт",
  481. "notAnswered": "По этому пункту пока ничего не найдено",
  482. "answered": "Найдено по этому пункту: {count}",
  483. "storyTitle": "Описание работ",
  484. "storyHint": "Симптом, причина, устранение, проверка. Нажмите на шаг, чтобы открыть его; по одной строке на каждый пункт, названный клиентом или замеченный вами.",
  485. "steps": {
  486. "condition": "Симптом",
  487. "cause": "Причина",
  488. "correction": "Устранение",
  489. "confirm": "Проверка"
  490. },
  491. "conditionPlaceholder": "Что сообщил клиент или что заметили вы",
  492. "causePlaceholder": "Что показала диагностика: в чём первопричина",
  493. "correctionPlaceholder": "Что сделано для устранения",
  494. "confirmPlaceholder": "Как проверен ремонт: тест-драйв, повторное сканирование, симптом исчез",
  495. "markConfirmed": "Проверено",
  496. "confirmedBy": "Проверено: {name}, {date}",
  497. "confirmedAt": "Проверено {date}",
  498. "confirmedOnSave": "При сохранении будет отмечено вашим именем",
  499. "confirmedCount": "Проверено {confirmed} из {total}",
  500. "findingsCount": "{count, plural, one {# наблюдение} few {# наблюдения} many {# наблюдений} other {# наблюдения}}",
  501. "addFinding": "Добавить наблюдение",
  502. "unconfirmedTitle": "Завершить с непроверенными пунктами?",
  503. "unconfirmedBody": "{count, plural, =1 {Один пункт не проверен после ремонта:} one {# пункт не проверен после ремонта:} few {# пункта не проверены после ремонта:} many {# пунктов не проверены после ремонта:} other {# пункта не проверены после ремонта:}}",
  504. "unconfirmedProceed": "Всё равно завершить",
  505. "addMedia": "Добавить медиа",
  506. "mediaUploading": "Загрузка…",
  507. "mediaAdded": "{count, plural, one {Добавлен # файл} few {Добавлено # файла} many {Добавлено # файлов} other {Добавлено # файла}}",
  508. "mediaFailed": "Не удалось загрузить {name}",
  509. "mediaTypes": "Выберите фото (JPG, PNG, WebP) или видео.",
  510. "dictate": {
  511. "start": "Диктовать",
  512. "listening": "Слушаю",
  513. "startHint": "Говорите, и текст появится здесь. Ничего не записывается.",
  514. "stopHint": "Перестать слушать",
  515. "notAllowed": "Браузеру не разрешён доступ к микрофону. Разрешите его для этого сайта и попробуйте снова.",
  516. "noMicrophone": "Микрофон не найден.",
  517. "failed": "Диктовка остановлена. Попробуйте снова.",
  518. "startHintServer": "Говорите, и текст пишется по ходу речи. Звук уходит в вашу речевую модель на расшифровку и не сохраняется.",
  519. "transcribing": "Завершение…",
  520. "language": "Язык речи",
  521. "auto": "Авто",
  522. "nothingHeard": "Ничего не было слышно.",
  523. "fellBack": "Пока используется встроенная диктовка браузера.",
  524. "autoLong": "Авто (определить язык)",
  525. "engine": "Кто записывает",
  526. "engineAi": "Речевая модель (точнее)",
  527. "engineBrowser": "Браузер (пишет по ходу речи)",
  528. "liveFellBack": "Текст появляется частями раз в несколько секунд, а не по словам."
  529. },
  530. "stepEmpty": "Ещё не заполнено",
  531. "removeTitle": "Удалить этот пункт?",
  532. "removeBody": "Его симптом, причина, устранение и проверка удалятся вместе с ним при сохранении заказ-наряда.",
  533. "removeAttached": "Его наблюдения и медиа останутся в заказ-наряде, но уже не будут привязаны к пункту.",
  534. "removeConfirm": "Удалить пункт",
  535. "saveFirst": "Сначала сохраните заказ-наряд"
  536. },
  537. "videoCall": {
  538. "title": "Видеозвонок",
  539. "none": "У этого заказ-наряда нет видеозвонка.",
  540. "needsSchedule": "Сначала укажите время начала. Встреча следует расписанию.",
  541. "add": "Добавить встречу {provider}",
  542. "addedHere": "добавлен из этого заказ-наряда",
  543. "fromCalendar": "из события календаря",
  544. "join": "Присоединиться",
  545. "copy": "Копировать ссылку",
  546. "copied": "Ссылка скопирована",
  547. "remove": "Удалить",
  548. "removeTitle": "Удалить видеозвонок?",
  549. "removeDescription": "Встреча удаляется у провайдера. Те, у кого уже есть ссылка, больше не смогут присоединиться.",
  550. "created": "Встреча создана. Ссылка на заказ-наряде.",
  551. "removed": "Встреча удалена",
  552. "failed": "Что-то пошло не так",
  553. "shareHint": "Клиент получает эту ссылку, только когда вы её отправите.",
  554. "shareHintNoChannel": "Клиент получает эту ссылку, только когда вы её отправите. Канал сообщений не настроен, поэтому скопируйте её в сообщение сами.",
  555. "send": {
  556. "button": "Отправить клиенту",
  557. "title": "Отправить ссылку на видеозвонок",
  558. "description": "Отправить ссылку для подключения клиенту {name}.",
  559. "messageLabel": "Примечание (необязательно)",
  560. "messagePlaceholder": "Что клиенту стоит знать до звонка...",
  561. "linkAlwaysIncluded": "Ссылка для подключения всегда добавляется под вашим примечанием.",
  562. "sms": "SMS",
  563. "email": "Эл. почта",
  564. "telegram": "Telegram",
  565. "noPhone": "(нет телефона)",
  566. "noEmail": "(нет эл. почты)",
  567. "noTelegram": "(чат не привязан)",
  568. "notAvailable": "(не настроено)",
  569. "cancel": "Отмена",
  570. "send": "Отправить",
  571. "sent": "Ссылка на видеозвонок отправлена",
  572. "partlySent": "Отправлено через {sent}; не отправлено через {failed}",
  573. "failed": "Не удалось отправить ссылку"
  574. },
  575. "notify": {
  576. "invitation": "Здравствуйте, {name}! Видеозвонок по поводу {vehicle} состоится {when}. Подключайтесь здесь: {url}",
  577. "invitationNoTime": "Здравствуйте, {name}! Вот ссылка на видеозвонок по поводу {vehicle}: {url}",
  578. "joinLine": "Подключиться к видеозвонку: {url}",
  579. "emailSubject": "Видеозвонок по поводу вашего {vehicle}"
  580. }
  581. },
  582. "modern": {
  583. "statusLabel": "Статус заказ-наряда",
  584. "back": "Назад",
  585. "backToClassic": "Вернуться к классическому виду",
  586. "openCustomer": "Открыть клиента",
  587. "serviceHistory": "История обслуживания",
  588. "changeVehicle": "Сменить транспортное средство",
  589. "vehicleChangesOnSave": "При сохранении заказ-наряд перейдёт на это транспортное средство.",
  590. "phone": "Телефон",
  591. "email": "Эл. почта",
  592. "notSet": "Не указано",
  593. "noCustomer": "В этом заказ-наряде нет клиента.",
  594. "invoiceTitle": "Счёт и оплата",
  595. "filesTitle": "Файлы и медиа",
  596. "activity": {
  597. "title": "Активность",
  598. "messageSent": "Клиенту отправлено сообщение",
  599. "linkShared": "Отправлена ссылка на счёт",
  600. "linkViewed": "{count, plural, =1 {Клиент открыл ссылку} one {Клиент открыл ссылку # раз} few {Клиент открыл ссылку # раза} many {Клиент открыл ссылку # раз} other {Клиент открыл ссылку # раза}}",
  601. "paymentTaken": "Записан платёж {amount}",
  602. "statusSet": "Статус изменён на {status}"
  603. },
  604. "invite": {
  605. "title": "Страница заказ-наряда обновлена.",
  606. "body": "Более понятная компоновка с теми же полями. Вернуться можно в любой момент.",
  607. "try": "Попробовать",
  608. "dismiss": "Не сейчас",
  609. "menu": "Попробовать новый вид"
  610. },
  611. "promised": "Обещано {date}",
  612. "promisedOverdue": "Обещано {date}, просрочено",
  613. "opened": "Открыт {date}",
  614. "openedBy": "Открыт {date}, автор: {name}",
  615. "editTitle": "Изменить название",
  616. "titleField": "Название",
  617. "media": {
  618. "tabs": {
  619. "photos": "Фото",
  620. "diagnostics": "Диагностика",
  621. "dropoff": "Приёмка"
  622. },
  623. "summary": "{count, plural, one {# файл} few {# файла} many {# файлов} other {# файла}} · клиент видит только отмеченные",
  624. "customerCanSee": "Видно клиенту",
  625. "showToCustomer": "Показать клиенту",
  626. "hideFromCustomer": "Скрыть от клиента",
  627. "add": {
  628. "image": "Добавить фото",
  629. "document": "Добавить документы",
  630. "diagnostic": "Добавить диагностический отчёт",
  631. "video": "Добавить видео",
  632. "dropoff": "Добавить фото приёмки"
  633. },
  634. "dropHint": "Перетащите файлы или нажмите, чтобы выбрать",
  635. "added": "{count, plural, one {Добавлен # файл} few {Добавлено # файла} many {Добавлено # файлов} other {Добавлено # файла}}",
  636. "failed": "Не удалось загрузить {name}",
  637. "wrongType": "Эти файлы не подходят для этой вкладки: {names}",
  638. "limit": "Достигнут лимит ({count}/{max})",
  639. "dropoffHint": "Автомобиль в том виде, в каком он прибыл, со временем каждого снимка. Хранится для мастерской и не показывается клиенту, если вы не решите иначе.",
  640. "onInvoice": "Включить состояние автомобиля в этот счёт",
  641. "onInvoiceHint": "Выключено, пока вы не отметите здесь. Чтобы печатать на каждом счёте, включите «Состояние автомобиля» в конструкторе счетов.",
  642. "onInvoiceByDesign": "Включено в конструкторе счетов для всех счетов. Снимите отметку, чтобы не печатать на этом.",
  643. "onInvoiceFailed": "Не удалось сохранить выбор"
  644. },
  645. "moneyBar": {
  646. "total": "Итого",
  647. "paid": "Оплачено",
  648. "balance": "К оплате",
  649. "settled": "Оплачено полностью",
  650. "takePayment": "Принять оплату",
  651. "preview": "Просмотр счёта",
  652. "previewShort": "Просмотр",
  653. "send": "Отправить клиенту",
  654. "sendShort": "Отправить"
  655. },
  656. "vehicleInfo": {
  657. "more": "Подробнее",
  658. "less": "Свернуть",
  659. "copy": "Копировать: {label}",
  660. "copied": "Скопировано",
  661. "lastInspection": "Последний техосмотр",
  662. "purchaseDate": "Дата покупки",
  663. "purchasePrice": "Цена покупки",
  664. "overdue": "просрочен",
  665. "customerSince": "Клиент с"
  666. },
  667. "moreStatuses": "Другие статусы",
  668. "fromInspection": "Из осмотра {name}, {date}",
  669. "startInspection": "Начать осмотр"
  670. },
  671. "photoHandoff": {
  672. "button": "Добавить с телефона",
  673. "dialogTitle": "Добавить фото и документы с телефона",
  674. "dialogBody": "Снимайте или выбирайте фото или отправьте PDF с любого телефона. Всё сразу попадает в этот заказ-наряд.",
  675. "expires": "Код действует до {time}.",
  676. "waiting": "Ожидание фото и документов…",
  677. "received": "{count, plural, one {Получен # файл} few {Получено # файла} many {Получено # файлов} other {Получено # файла}}",
  678. "copyLink": "Копировать ссылку",
  679. "linkCopied": "Ссылка скопирована",
  680. "failed": "Не удалось создать код. Попробуйте ещё раз.",
  681. "done": "Готово",
  682. "pageTitle": "Добавить фото и документы",
  683. "forJob": "Заказ-наряд {number}",
  684. "takePhoto": "Сделать фото",
  685. "choosePhotos": "Выбрать фото",
  686. "hint": "Всё сразу попадает в заказ-наряд. Снимайте столько фото, сколько нужно.",
  687. "uploading": "Загрузка…",
  688. "added": "Добавлено",
  689. "notAdded": "Не добавлено",
  690. "retry": "Повторить",
  691. "addedCount": "{count, plural, one {Добавлен # файл} few {Добавлено # файла} many {Добавлено # файлов} other {Добавлено # файла}}",
  692. "expiredTitle": "Срок действия кода истёк",
  693. "invalidTitle": "Эта ссылка не работает",
  694. "errors": {
  695. "expired": "Попросите новый код на стойке. Каждый код действует 30 минут.",
  696. "invalid": "Отсканируйте код в заказ-наряде ещё раз.",
  697. "limit": "В этом заказ-наряде уже столько фото, сколько он может вместить.",
  698. "type": "Здесь можно добавлять только фото и документы PDF.",
  699. "tooLarge": "Файл слишком большой.",
  700. "failed": "Фото не добавлено. Проверьте подключение и попробуйте ещё раз.",
  701. "codeLimit": "С этим кодом уже добавлено столько фото, сколько допускает один код. Отсканируйте новый код на стойке."
  702. },
  703. "concernHeading": "Фото будут привязаны к этому пункту",
  704. "howTitle": "Как это работает",
  705. "step1": "Наведите камеру телефона на код и откройте ссылку.",
  706. "step2": "Сделайте фото или выберите фото или документы PDF, которые уже есть на телефоне.",
  707. "step3": "Они появляются в этом заказ-наряде по мере поступления.",
  708. "noSignIn": "Входить в систему на телефоне не нужно.",
  709. "customerToo": "Пользоваться могут сотрудники, и клиент тоже: дайте ему отсканировать код или отправьте ссылку.",
  710. "scope": "Ссылка только добавляет фото и документы в этот заказ-наряд и перестаёт работать через 30 минут.",
  711. "scanHint": "Отсканируйте камерой телефона",
  712. "chooseDocument": "Загрузить документ",
  713. "privacy": "То, что вы добавляете здесь, видит только сервис.",
  714. "dropoff": {
  715. "button": "Фото при приёмке",
  716. "dialogTitle": "Сфотографируйте автомобиль при приёмке",
  717. "dialogBody": "Обход автомобиля до начала работ: четыре стороны, одометр и уже имеющиеся повреждения. Это ваше подтверждение, если царапину когда-нибудь оспорят.",
  718. "step2": "Следуйте списку на телефоне: по одному фото каждой стороны, одометр и повреждения.",
  719. "scope": "Ссылка только добавляет фото приёмки к этому заказ-наряду и перестаёт работать через 30 минут.",
  720. "pageTitle": "Автомобиль при приёмке",
  721. "pageBody": "Делайте снимки по порядку. Добавьте крупный план уже имеющихся повреждений.",
  722. "retake": "Переснять",
  723. "slots": {
  724. "front": "Спереди",
  725. "right": "Правая сторона",
  726. "rear": "Сзади",
  727. "left": "Левая сторона",
  728. "odometer": "Одометр",
  729. "other": "Повреждение или другое"
  730. }
  731. }
  732. },
  733. "payCode": {
  734. "button": "Код для оплаты",
  735. "title": "Оплата по коду",
  736. "body": "Клиент сканирует код камерой телефона, открывается счёт, и он оплачивает его там.",
  737. "sharesInvoice": "Показ кода открывает счёт клиенту, так же как отправка. С этого момента счёт сохраняет данные, которые в нём есть сейчас.",
  738. "show": "Показать код",
  739. "failed": "Не удалось создать код. Попробуйте ещё раз.",
  740. "toPay": "К оплате",
  741. "scanHint": "Сканируйте камерой телефона",
  742. "copyLink": "Копировать ссылку",
  743. "linkCopied": "Ссылка скопирована",
  744. "waiting": "Ожидаем оплату. Обновляется автоматически.",
  745. "paid": "Оплата получена",
  746. "paidBody": "Оплата отражена в заказ-наряде.",
  747. "done": "Готово"
  748. },
  749. "customStatus": {
  750. "defaultMessage": "Здравствуйте, {customer_name}! Новости о вашем {vehicle}: {status}. {company_name}"
  751. }
  752. }