reminders.json 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. {
  2. "error": "Не удалось загрузить напоминания",
  3. "showing": "Показано {count} из {total}",
  4. "deleted": "Напоминание удалено",
  5. "deleteError": "Не удалось удалить напоминание",
  6. "vehicle": "Транспортное средство",
  7. "selectVehicle": "Выберите транспортное средство...",
  8. "searchVehicle": "Поиск транспортных средств...",
  9. "noVehicle": "Транспортные средства не найдены.",
  10. "pickDate": "Выберите дату",
  11. "openMenu": "Открыть меню",
  12. "relatesTo": "Относится к (необязательно)",
  13. "selectCustomer": "Клиент (необязательно)",
  14. "noneOption": "Нет",
  15. "workshopHint": "Клиент или автомобиль не выбраны: это общее напоминание для мастерской.",
  16. "workshopReminder": "Мастерская",
  17. "import": {
  18. "button": "Импорт",
  19. "title": "Импорт напоминаний",
  20. "description": "Загрузите файл CSV или Excel, по одному напоминанию в строке. Вы увидите каждую строку до того, как что-либо будет сохранено.",
  21. "drop": "Перетащите сюда файл CSV или Excel",
  22. "formats": "CSV или Excel (.xlsx), до {rows} строк",
  23. "browse": "Выбрать файл",
  24. "reading": "Чтение файла...",
  25. "templateHint": "Начните с шаблона, чтобы столбцы были правильными.",
  26. "templateXlsx": "Шаблон Excel",
  27. "templateCsv": "Шаблон CSV",
  28. "columnsTitle": "Столбцы в файле",
  29. "required": {
  30. "yes": "Обязательно",
  31. "dateOrMileage": "Дата или пробег",
  32. "no": "Необязательно"
  33. },
  34. "columns": {
  35. "title": "Что нужно сделать, например «Замена масла».",
  36. "dueDate": "День, когда наступает срок. 2026-10-15 подходит всегда, а форматы вроде 15.10.2026 или 10/15/2026 распознаются.",
  37. "dueTime": "Время, например 14:30, в часовом поясе мастерской. Оставьте пустым, если подходит любое время этого дня.",
  38. "dueMileage": "Показание одометра, при котором наступает срок, в {unit}.",
  39. "description": "Любые дополнительные сведения.",
  40. "licensePlate": "Привязывает напоминание к транспортному средству. Пробелы и дефисы игнорируются.",
  41. "vin": "Привязывает напоминание к транспортному средству. Удобно, если нет госномера.",
  42. "customer": "Эл. почта, номер клиента или точное имя. Используется, только если в строке нет транспортного средства.",
  43. "emailNotification": "Да или нет. Отправляет письмо, когда наступает срок напоминания. Уведомления в приложении включены всегда."
  44. },
  45. "targetRule": "Строка без транспортного средства и без клиента становится напоминанием мастерской. Строки, совпадающие с открытым напоминанием, пропускаются, поэтому повторная загрузка того же файла ничего не добавит.",
  46. "summary": {
  47. "ready": "Готово: {count}",
  48. "duplicates": "Уже есть: {count}",
  49. "errors": "Нужно исправить: {count}"
  50. },
  51. "ignoredColumns": "Не прочитаны столбцы: {columns}",
  52. "rowLabel": "Строка {line}",
  53. "untitled": "(без названия)",
  54. "issues": {
  55. "missingTitle": "Название не заполнено.",
  56. "missingDue": "Нужна дата срока или пробег до срока.",
  57. "badDate": "Не удалось прочитать дату «{value}».",
  58. "badTime": "Не удалось прочитать время «{value}».",
  59. "timeWithoutDate": "Для времени нужна дата срока.",
  60. "badMileage": "Не удалось прочитать пробег «{value}».",
  61. "badEmailNotification": "Уведомление по эл. почте должно быть «да» или «нет», а не «{value}».",
  62. "vehicleNotFound": "Нет транспортного средства, соответствующего «{value}».",
  63. "vehicleAmbiguous": "«{value}» соответствует более чем одному транспортному средству.",
  64. "vehicleMismatch": "Госномер и VIN относятся к разным транспортным средствам ({value}).",
  65. "customerNotFound": "Нет клиента, соответствующего «{value}».",
  66. "customerAmbiguous": "«{value}» соответствует более чем одному клиенту. Укажите эл. почту или номер клиента.",
  67. "duplicateExisting": "Пропущено: такое напоминание уже есть.",
  68. "duplicateInFile": "Пропущено: повторяет одну из предыдущих строк файла."
  69. },
  70. "fileErrors": {
  71. "demo": "В демоверсии импорт отключён.",
  72. "noFile": "Выберите файл для загрузки.",
  73. "tooLarge": "Файл больше 900 KB. Разделите его и импортируйте по частям.",
  74. "unsupported": "Загрузите файл .csv или .xlsx.",
  75. "legacyXls": "Старые файлы Excel .xls прочитать нельзя. Сохраните файл в формате .xlsx или .csv и повторите попытку.",
  76. "empty": "В файле нет строк.",
  77. "unreadable": "Не удалось прочитать файл.",
  78. "tooManyRows": "В файле больше {limit} строк. Разделите его и импортируйте по частям.",
  79. "noTitleColumn": "В файле нет столбца «Title». Скачайте шаблон, чтобы увидеть ожидаемые заголовки."
  80. },
  81. "chooseAnother": "Выбрать другой файл",
  82. "downloadSkipped": "Скачать пропущенные строки",
  83. "problemColumn": "Проблема",
  84. "submit": "Импортировать {count, plural, one {# напоминание} few {# напоминания} many {# напоминаний} other {# напоминания}}",
  85. "nothingToImport": "Нечего импортировать",
  86. "done": "Импортировано {count, plural, one {# напоминание} few {# напоминания} many {# напоминаний} other {# напоминания}}",
  87. "doneSkipped": "{count, plural, one {Пропущена # строка} few {Пропущено # строки} many {Пропущено # строк} other {Пропущено # строки}}",
  88. "close": "Закрыть"
  89. }
  90. }