{
"catalog": {
"title": "Интеграции",
"description": "Подключите сервисы, которыми ваша мастерская уже пользуется. Каждая интеграция настраивается один раз и работает в фоновом режиме.",
"all": "Все",
"empty": "В этой категории пока нет интеграций.",
"notConnected": "Не подключено",
"connect": "Подключить",
"manage": "Управлять",
"connectedTitle": "Подключено",
"connectedDescription": "Сервисы, настроенные в этой мастерской. Откройте сервис, чтобы проверить статус, изменить настройки или отключить его.",
"noneConnected": "Пока ничего не подключено. Выберите сервис ниже, чтобы начать.",
"availableTitle": "Доступно",
"availableDescription": "Сервисы, которые можно добавить. Каждый настраивается один раз и работает в фоне.",
"allConnected": "Все доступные сервисы подключены.",
"searchPlaceholder": "Поиск интеграций",
"noMatches": "Ничего не найдено по запросу «{query}».",
"readMore": "Подробнее",
"suggestTitle": "Не хватает сервиса, которым вы пользуетесь?",
"suggestDescription": "Расскажите, какая интеграция помогла бы вашему автосервису, и мы её рассмотрим.",
"suggest": "Предложить интеграцию",
"suggestSubject": "Предложение интеграции"
},
"categories": {
"calendar": "Календарь",
"conferencing": "Видеозвонки",
"accounting": "Бухгалтерия",
"messaging": "Сообщения",
"payments": "Платежи",
"automation": "Автоматизация",
"storage": "Файлы",
"registry": "Реестр транспортных средств",
"repair": "Данные для ремонта",
"other": "Другое",
"ai": "ИИ"
},
"capabilities": {
"calendar": {
"push": "Заказ-наряды в календарь",
"pull": "Занятое время из календаря",
"conference": "Ссылки на видеозвонки"
},
"sms": {
"send": "Исходящие SMS",
"receive": "Входящие ответы"
},
"whatsapp": {
"send": "Исходящие сообщения WhatsApp",
"receive": "Входящие ответы"
},
"telegram": {
"send": "Исходящие сообщения Telegram",
"receive": "Входящие ответы"
},
"email": {
"send": "Исходящая почта"
},
"vehicle": {
"lookup": "Поиск по номеру и VIN",
"inspection": "Сроки техосмотра",
"safety": "Отзывные кампании и жалобы владельцев"
},
"ai": {
"chat": "Тексты и сводки",
"transcribe": "Диктовка"
},
"payments": {
"checkout": "Оплата по ссылке на счёт"
},
"accounting": {
"invoices": "Счета в бухгалтерию",
"customers": "Клиенты в бухгалтерию",
"payments": "Платежи в обе стороны"
},
"backup": {
"target": "Место назначения резервных копий"
},
"repair": {
"labor": "Нормы времени в заказ-нарядах и сметах",
"fluids": "Типы и объёмы жидкостей"
}
},
"statuses": {
"active": "Подключено",
"error": "Требует внимания",
"pending": "Идёт настройка",
"disconnected": "Отключено",
"needsSetup": "Настройка не завершена"
},
"connection": {
"back": "Все интеграции",
"account": "Подключённый аккаунт",
"lastHealth": "Последняя проверка",
"lastSync": "Последняя синхронизация",
"lastError": "Последний запуск завершился ошибкой",
"setupMissingTitle": "Настройка не завершена",
"setupMissing": "Выберите {fields} в настройках ниже. До тех пор ничего не синхронизируется.",
"connected": "{name} подключено.",
"connectedShort": "Подключено",
"connectWith": "Подключить {name}",
"connect": "Подключить",
"reconnect": "Переподключить",
"disconnect": "Отключить",
"disconnectTitle": "Отключить {name}?",
"disconnectDescription": "Torqvoice забывает аккаунт и перестаёт им пользоваться. Всё, что уже отправлено в {name} или хранится там, не затрагивается.",
"disconnectDescriptionCalendar": "Torqvoice забывает аккаунт и перестаёт синхронизировать. Заказ-наряды, уже добавленные в {name}, остаются там. Занятое время, показанное из этого календаря, удаляется из календаря Torqvoice.",
"disconnectDescriptionConferencing": "Torqvoice забывает аккаунт и перестаёт создавать встречи. Уже созданные встречи остаются в {name}, а ссылки в заказ-нарядах сохраняются.",
"disconnectDescriptionAccounting": "Torqvoice забывает аккаунт и перестаёт отправлять и читать. Счета, клиенты и платежи, уже находящиеся в {name}, остаются там.",
"removeSetup": "Удалить",
"removeSetupTitle": "Удалить {name}?",
"removeSetupDescription": "Пока ничего не подключено. Torqvoice забудет введённые данные, и {name} вернётся в список доступных сервисов.",
"removeSetupDone": "{name} удалён",
"removeSetupHint": "Не будете продолжать? Удалите, и сервис вернётся в список ниже.",
"disconnected": "Отключено",
"test": "Проверить подключение",
"testPassed": "Подключение работает",
"syncNow": "Синхронизировать сейчас",
"syncQueued": "Синхронизация поставлена в очередь и запустится в течение минуты",
"pullNow": "Получить платежи сейчас",
"pullQueued": "Получение платежей поставлено в очередь и запустится в течение минуты",
"backfill": "Отправить запланированные заказ-наряды",
"backfillQueued": "Запланированные заказ-наряды за последнюю неделю и позже поставлены в очередь",
"backfillInvoices": "Отправить выставленные счета",
"backfillInvoicesQueuedCount": "В очередь поставлено {count, plural, one {# выставленный счёт} few {# выставленных счёта} many {# выставленных счетов} other {# выставленного счёта}}",
"backfillInvoicesNone": "Нет выставленных счетов для отправки. Передаются только отправленные, опубликованные или оплаченные счета, начиная с даты начала, если она задана.",
"retryQueued": "Задача снова поставлена в очередь",
"settingsTitle": "Настройки",
"settingsDescription": "Что синхронизировать и куда. Изменения применяются при следующей синхронизации.",
"settingsSaved": "Настройки сохранены",
"save": "Сохранить",
"loading": "Загрузка...",
"choose": "Выберите...",
"search": "Поиск...",
"noMatch": "Ничего не найдено",
"leaveEmpty": "Оставить пустым",
"noLimit": "Без ограничения",
"planLocked": "Интеграции не входят в ваш тариф.",
"lockedIntegrations": "Подключите календари, видеозвонки и другие сервисы к вашей мастерской.",
"lockedPayments": "Позвольте клиентам оплачивать счета онлайн, и каждый платёж будет отражён в счёте.",
"lockedAi": "Подключите провайдера ИИ, чтобы использовать функции ИИ в вашей мастерской.",
"ownAppTitle": "Эта установка использует ваше собственное приложение у провайдера",
"redirectUri": "URI перенаправления для регистрации у провайдера:",
"sendTestEmail": "Отправить тестовое письмо",
"testEmailSent": "Тестовое письмо отправлено на {email}",
"testEmailHint": "Тестовое письмо уходит на ваш собственный адрес через этого провайдера и подтверждает адрес отправителя и правила отправки, чего не может проверка ключа.",
"inboundUrl": "URL входящего вебхука",
"inboundHintSecret": "Вставьте этот URL в настройки входящих сообщений у провайдера. В нём содержится секрет, по которому опознаётся ваша мастерская, поэтому никому его не показывайте.",
"inboundHintMeta": "Укажите этот URL как callback-URL в вашем приложении Meta вместе с токеном проверки, введённым выше, и подпишитесь на messages.",
"inboundHintStripe": "Добавьте этот URL в панели Stripe: откройте Workbench, затем Webhooks, выберите Create an event destination и подпишите его на checkout.session.completed. После этого Stripe покажет секрет подписи для этой конечной точки; вставьте его здесь в поле секрета подписи, чтобы каждое уведомление проверялось по подписи. До тех пор Torqvoice подтверждает каждое уведомление, запрашивая у Stripe сам платёж.",
"inboundHintVipps": "Укажите этот URL как callback-URL в портале Vipps MobilePay. Vipps также требует опубликованных условий продажи, они задаются в разделе Настройки, Оплата.",
"inboundHintPaypal": "Добавьте этот URL в панели разработчика PayPal в разделе Webhooks с подпиской на PAYMENT.CAPTURE.COMPLETED.",
"copy": "Копировать",
"copied": "Скопировано",
"updateKeys": "Обновить ключи",
"updateKeysHint": "Последняя проверка не прошла. Введите ключи ещё раз, чтобы попробовать снова.",
"awaitingKeys": "Подключено, но ещё не хватает: {keys}.",
"awaitingKeysHint": "Вебхук уже отвечает поставщику, поэтому зарегистрируйте его сейчас. Введите эти значения здесь, как только поставщик их выдаст.",
"saveKeys": "Сохранить ключи",
"keysSaved": "Ключи сохранены",
"inspectionSync": {
"title": "Синхронизация техосмотров",
"vehicles": "{count} автомобилей с номером в этой мастерской",
"dueNow": "{count} будут проверены при следующем запуске",
"withDate": "{count} уже имеют дату техосмотра",
"lastPass": "Последний полный проход {date}",
"never": "Полного прохода ещё не было",
"inProgress": "Проход выполняется",
"off": "Включите настройку и сохраните; до этого проход ничего не проверяет.",
"syncNowHelp": "«Синхронизировать сейчас» запускает проход немедленно, не дожидаясь ежечасного. Он проверяет по 25 автомобилей и продолжает сам, пока не обработает все ожидающие. Первый проход проверяет каждый автомобиль с номером.",
"confirmTitle": "Проверить автомобили сейчас?",
"confirmDescription": "Сейчас {count} из {total} автомобилей с номером будут запрошены в {name}, по 25 за раз, и сохранятся сроки их техосмотра. Недавно проверенные автомобили пропускаются. Если {name} берёт плату за запрос, каждый найденный автомобиль оплачивается с вашего аккаунта.",
"confirmLabel": "Проверить автомобилей: {count}",
"nothingDue": "Все автомобили с номером недавно проверялись, проверять пока нечего."
},
"supersedes": "Подключение {next} отключит {current}. Одновременно работает только один, поэтому {current} перестанет использоваться, как только заработает {next}.",
"platformHandlesBackupsTitle": "Резервное копирование уже включено",
"platformHandlesBackups": "Torqvoice уже каждый час создаёт резервную копию этой мастерской и хранит точки восстановления 30 дней. Подключите бакет, если вам нужна ещё и собственная копия, которую можно прочитать без Torqvoice.",
"platformHandlesBackupsLink": "Посмотреть точки восстановления",
"batchRetried": "{count, plural, =0 {Нечего повторять} one {# задача снова в очереди} few {# задачи снова в очереди} many {# задач снова в очереди} other {# задачи снова в очереди}}",
"advanced": "Дополнительно",
"generate": "Сгенерировать",
"show": "Показать",
"hide": "Скрыть",
"generatedPasswordWarning": "Сохраните копию этого пароля в надёжном месте, не на этом сервере. Без него никто не сможет открыть эти резервные копии, даже Torqvoice.",
"backup": {
"title": "Резервные копии",
"description": "Когда в это место назначения в последний раз попала успешная резервная копия, когда запустится следующая, и последние запуски.",
"lastGood": "Последняя успешная копия",
"added": "Добавлено {size}",
"never": "Пока нет",
"nextRun": "Следующий запуск",
"notScheduled": "Не запланировано",
"repositorySize": "Хранится в месте назначения",
"runNow": "Создать копию сейчас",
"running": "Создаётся копия",
"runningHint": "Идёт резервное копирование. Страница обновляется сама, пока оно не завершится.",
"started": "Резервное копирование запущено",
"recentTitle": "Последние запуски",
"noRuns": "Резервные копии ещё не создавались.",
"addedNote": "Первый запуск загружает всё. Каждый следующий добавляет только изменившиеся с тех пор фрагменты, поэтому он небольшой. Каждая копия при этом полна и может быть восстановлена или просмотрена отдельно.",
"notStarted": "Не запущено",
"filesNewCount": "{count, plural, one {# новый файл} few {# новых файла} many {# новых файлов} other {# нового файла}}",
"columns": {
"status": "Статус",
"started": "Начало",
"trigger": "Кто запустил",
"duration": "Длительность",
"filesNew": "Новые файлы",
"bytesAdded": "Добавлено"
},
"trigger": {
"scheduled": "По расписанию",
"manual": "Вручную",
"restore": "Восстановление"
},
"status": {
"queued": "В очереди",
"running": "Выполняется",
"done": "Готово",
"failed": "Ошибка",
"skipped": "Пропущено"
},
"restoring": "Идёт восстановление",
"restoringHint": "Идёт восстановление: данные мастерской заменяются резервной копией. Страница обновляется сама, пока оно не завершится. До тех пор не работайте в мастерской.",
"explore": "Просмотреть",
"restore": {
"showAll": "Показать все резервные копии",
"refresh": "Обновить",
"loading": "Чтение резервных копий в месте назначения",
"loadFailed": "Не удалось получить список резервных копий",
"empty": "В этом месте назначения пока нет резервных копий.",
"needsOwner": "Восстановить резервную копию здесь может только владелец мастерской.",
"needsAdmin": "Восстановить резервную копию может только владелец или администратор.",
"filesIncluded": "Фото и файлы включены",
"filesNotIncluded": "Фото и файлы не включены",
"earlierInstall": "Прежняя установка",
"action": "Восстановить",
"dialogTitle": "Восстановить резервную копию от {time}?",
"warning": "Восстановление заменяет всё, что сейчас есть в этой мастерской: клиентов, автомобили, заказ-наряды, счета, настройки и, если они есть в резервной копии, фото и файлы. Всё, что добавлено после создания резервной копии, пропадёт. Это действие нельзя отменить.",
"secretsNote": "Секретные ключи, не включённые в резервную копию, сохраняют значения, которые сейчас есть в этой установке. Учётные записи пользователей и пароли не затрагиваются.",
"confirmPrompt": "Для подтверждения введите название мастерской, {name}.",
"whileRunning": "Восстановление идёт в фоне и занимает несколько минут, если фотографий много. Страница обновляется сама, пока оно не завершится.",
"cancel": "Отмена",
"confirm": "Восстановить эту резервную копию",
"started": "Восстановление запущено"
}
},
"lockedBackups": "Зашифрованные резервные копии вашей мастерской по расписанию в ваше собственное хранилище.",
"searchOrType": "Найдите или введите имя",
"useTyped": "Использовать «{value}»",
"listNeedsKeys": "Введите ключи выше, чтобы увидеть список",
"listEmpty": "Список пуст. Введите имя вручную.",
"testing": "Проверка подключения",
"testOk": "Подключение работает: тестовый объект был записан и снова удалён.",
"testFailed": "Проверка не прошла",
"testSteps": {
"settings": "Проверьте настройки поставщика",
"list": "Ключ не может просматривать список объектов в бакете",
"write": "Ключ не может записывать в бакет",
"delete": "Ключ не может удалять из бакета",
"folder": "Не удаётся создать или открыть папку"
},
"testHint": "Заполните ключи и бакет, чтобы проверить их до подключения. Проверка записывает один небольшой объект и удаляет его."
},
"activity": {
"title": "Активность",
"description": "Последние задачи и записи журнала для этого подключения.",
"retry": "Повторить",
"jobStatus": {
"queued": "В очереди",
"running": "Выполняется",
"done": "Готово",
"failed": "Ошибка",
"dead": "Прекращено"
},
"jobs": "{count, plural, one {# задача} few {# задачи} many {# задач} other {# задачи}}",
"counts": {
"queued": "{count} в очереди",
"running": "{count} выполняется",
"done": "{count} готово",
"failed": "{count} с ошибкой",
"dead": "{count} прекращено"
},
"noFailures": "Ошибок нет.",
"retryFailed": "Повторить неудавшиеся",
"details": "Показать подробности",
"loadingMore": "Загрузка более ранних задач",
"loadFailed": "Не удалось загрузить более ранние задачи.",
"cleared": "Завершённые задачи удаляются через 7 дней."
},
"errors": {
"generic": "Что-то пошло не так",
"demo": "В демо-режиме интеграции подключить нельзя.",
"forbidden": "Подключать интеграции может только администратор.",
"unknown": "Неизвестная интеграция.",
"plan": "Эта интеграция не входит в ваш тариф.",
"no-client": "Для этого провайдера не настроены данные приложения.",
"denied": "Вы отменили вход у провайдера.",
"vendor": "Провайдер вернул ошибку. Попробуйте ещё раз.",
"invalid": "Ответ провайдера был неполным. Попробуйте ещё раз.",
"state": "Срок этого входа истёк, или он относится к другой сессии. Начните заново.",
"exchange": "Провайдер отклонил вход. Проверьте данные приложения и попробуйте ещё раз.",
"identify": "Подключено, но не удалось прочитать данные аккаунта. Попробуйте переподключиться.",
"backupRunning": "Резервное копирование уже выполняется.",
"restoreOwnerOnly": "В Torqvoice Cloud восстановить резервную копию может только владелец мастерской.",
"restoreBusy": "На этом сервере уже выполняется резервное копирование или восстановление. Попробуйте ещё раз, когда оно завершится."
},
"meeting": {
"join": "Присоединиться к видеозвонку",
"google-meet": "Google Meet",
"teams": "Microsoft Teams",
"zoom": "Zoom"
},
"calendar": {
"external": "Из подключённых календарей",
"busy": "Занято"
},
"connectors": {
"google-calendar": {
"description": "Добавляйте запланированные заказ-наряды в Google Calendar, прикрепляйте ссылку Google Meet и видите занятое время календаря в Torqvoice.",
"tenantHelp": "Создайте OAuth-клиент в Google Cloud Console (APIs & Services → Credentials), включите Google Calendar API, добавьте указанный ниже URI перенаправления и вставьте сюда идентификатор клиента и секрет.",
"fields": {
"clientId": "Идентификатор клиента",
"clientSecret": "Секрет клиента"
},
"settings": {
"calendarId": "Календарь",
"pushEnabled": "Добавлять запланированные заказ-наряды в этот календарь",
"includeCustomer": "Включать имя и телефон клиента в событие",
"addConference": "Добавлять встречу Google Meet к каждому запланированному заказу",
"addConferenceHelp": "Вкл.: каждый заказ, отправленный в календарь, получает встречу Google Meet, а ссылка показывается в заказе. Выкл.: добавьте встречу Google Meet к отдельному заказу с его страницы. В любом случае клиент получает ссылку только когда вы её отправите.",
"pullEnabled": "Показывать занятое время этого календаря в календаре Torqvoice",
"pullEnabledHelp": "Только чтение. Обновляется каждые 15 минут: неделя назад и два месяца вперёд."
}
},
"microsoft-365": {
"name": "Календарь Microsoft 365",
"description": "Добавляйте запланированные заказ-наряды в календарь Outlook, прикрепляйте ссылку Microsoft Teams и видите занятое время календаря в Torqvoice.",
"tenantHelp": "Зарегистрируйте приложение в Microsoft Entra (App registrations), разрешите личные и рабочие аккаунты, добавьте указанный ниже URI перенаправления как платформу Web, создайте секрет клиента и вставьте сюда оба значения.",
"fields": {
"clientId": "Идентификатор приложения (клиента)",
"clientSecret": "Секрет клиента"
},
"settings": {
"calendarId": "Календарь",
"pushEnabled": "Добавлять запланированные заказ-наряды в этот календарь",
"includeCustomer": "Включать имя и телефон клиента в событие",
"addConference": "Добавлять встречу Microsoft Teams к каждому запланированному заказу",
"addConferenceHelp": "Вкл.: каждый заказ, отправленный в календарь, получает встречу Microsoft Teams, а ссылка показывается в заказе. Выкл.: добавьте встречу Microsoft Teams к отдельному заказу с его страницы. В любом случае клиент получает ссылку только когда вы её отправите.",
"pullEnabled": "Показывать занятое время этого календаря в календаре Torqvoice",
"pullEnabledHelp": "Только чтение. Обновляется каждые 15 минут: неделя назад и два месяца вперёд."
}
},
"zoom": {
"description": "Добавьте встречу Zoom к запланированному заказ-наряду и держите ссылку на нём: для удалённой диагностики или разбора результатов с клиентом.",
"tenantHelp": "В Zoom App Marketplace создайте приложение General (user-managed), добавьте указанный ниже redirect URI, добавьте scope meeting:write:meeting, meeting:update:meeting, meeting:delete:meeting, meeting:read:meeting и user:read:user, затем вставьте сюда client ID и секрет.",
"fields": {
"clientId": "Client ID",
"clientSecret": "Секрет клиента"
},
"settings": {
"autoCreate": "Автоматически создавать встречу Zoom для каждого запланированного заказ-наряда",
"autoCreateHelp": "Выкл.: вы сами добавляете видеозвонок к заказ-наряду на его странице. Вкл.: каждый заказ-наряд с временем начала получает встречу, которая переносится при изменении расписания и удаляется при отмене. В любом случае клиент получает ссылку, только когда вы её отправите.",
"includeCustomer": "Указывать имя клиента в теме встречи",
"joinBeforeHost": "Разрешить клиенту входить раньше вас",
"waitingRoom": "Использовать зал ожидания"
}
},
"twilio-sms": {
"description": "Отправляйте и получайте SMS через номер Twilio: напоминания, сообщения о готовности автомобиля и ответы клиентов.",
"fields": {
"accountSid": "Account SID",
"authToken": "Токен авторизации"
},
"settings": {
"phoneNumber": "Отправлять с этого номера"
}
},
"vonage-sms": {
"description": "Отправляйте и получайте SMS через номер Vonage.",
"fields": {
"apiKey": "API-ключ",
"apiSecret": "API-секрет",
"signatureSecret": "Секрет подписи",
"signatureSecretHelp": "В панели Vonage, в разделе API settings. Если он задан, входящие сообщения принимаются, только когда они подписаны Vonage. Без него проверяется только секрет в URL вебхука."
},
"settings": {
"phoneNumber": "Отправлять с этого номера"
}
},
"telnyx-sms": {
"description": "Отправляйте и получайте SMS через номер Telnyx.",
"fields": {
"apiKey": "API-ключ",
"webhookPublicKey": "Открытый ключ вебхука",
"webhookPublicKeyHelp": "На портале Telnyx, в разделе Account settings, Keys and credentials, Public key. Если он задан, входящие сообщения принимаются, только когда они подписаны Telnyx. Без него проверяется только секрет в URL вебхука."
},
"settings": {
"phoneNumber": "Отправлять с этого номера"
}
},
"whatsapp-meta": {
"description": "Пишите клиентам в WhatsApp напрямую через Meta: фото того, что вы нашли, и последующая переписка.",
"fields": {
"phoneNumberId": "ID номера телефона",
"accessToken": "Токен доступа",
"verifyToken": "Токен проверки вебхука",
"appSecret": "Секрет приложения",
"apiVersion": "Версия Graph API",
"appSecretHelp": "Meta подписывает им каждую доставку. Пока он не введён, сообщения, отправленные на вебхук, отклоняются, иначе любой, кто узнает URL, смог бы писать от имени ваших клиентов.",
"phoneNumberIdHelp": "Из WhatsApp Manager, у номера, с которого вы отправляете; это не сам номер телефона. Meta выдаёт его только после проверки вебхука, поэтому оставьте поле пустым, подключитесь, зарегистрируйте вебхук и затем вернитесь, чтобы добавить его.",
"accessTokenHelp": "Постоянный токен системного пользователя. Тот, что Meta показывает при настройке, истекает через 24 часа. Добавьте его вместе с идентификатором номера телефона после проверки вебхука.",
"verifyTokenHelp": "Любая фраза на ваш выбор. Вставьте ту же самую в Meta при регистрации вебхука."
},
"settings": {
"enabled": "Отправлять сообщения по этому каналу",
"phoneNumber": "Отправлять с этого номера",
"templateName": "Шаблон для возобновления беседы",
"templateLanguage": "Язык шаблона",
"templateVariables": "Значения шаблона по порядку",
"mediaTemplateName": "Шаблон для сообщения с фото",
"mediaTemplateLanguage": "Язык шаблона с фото",
"mediaTemplateVariables": "Значения шаблона с фото по порядку"
}
},
"whatsapp-twilio": {
"description": "Пишите клиентам в WhatsApp через номер Twilio, если номер вам продал Twilio.",
"fields": {
"accountSid": "Account SID",
"authToken": "Токен авторизации",
"messagingServiceSid": "Messaging service SID"
},
"settings": {
"enabled": "Отправлять сообщения по этому каналу",
"phoneNumber": "Отправлять с этого номера",
"templateName": "Шаблон для возобновления беседы",
"templateLanguage": "Язык шаблона",
"templateVariables": "Значения шаблона по порядку",
"mediaTemplateName": "Шаблон для сообщения с фото",
"mediaTemplateLanguage": "Язык шаблона с фото",
"mediaTemplateVariables": "Значения шаблона с фото по порядку"
}
},
"telegram": {
"description": "Бот Telegram, который связывается с клиентами, пользующимися им, и приносит их ответы во входящие.",
"fields": {
"botToken": "Токен бота"
},
"settings": {
"enabled": "Отправлять сообщения по этому каналу",
"botUsername": "Имя пользователя бота"
}
},
"smtp": {
"description": "Отправляйте счета и напоминания через собственный почтовый сервер, а не через почту платформы.",
"fields": {
"host": "Сервер",
"port": "Порт",
"user": "Имя пользователя",
"pass": "Пароль"
},
"settings": {
"fromEmail": "Отправлять с этого адреса",
"fromName": "Имя отправителя",
"secure": "Подключаться по TLS с самого начала",
"requireTls": "Требовать перехода сервера на TLS",
"rejectUnauthorized": "Отклонять сертификат, который не прошёл проверку"
}
},
"resend": {
"description": "Отправляйте счета и напоминания через Resend.",
"fields": {
"apiKey": "API-ключ"
},
"settings": {
"fromEmail": "Отправлять с этого адреса",
"fromName": "Имя отправителя"
}
},
"postmark": {
"description": "Отправляйте счета и напоминания через Postmark.",
"fields": {
"apiKey": "Серверный токен"
},
"settings": {
"fromEmail": "Отправлять с этого адреса",
"fromName": "Имя отправителя"
}
},
"mailgun": {
"description": "Отправляйте счета и напоминания через Mailgun.",
"fields": {
"apiKey": "API-ключ",
"domain": "Домен отправки"
},
"settings": {
"fromEmail": "Отправлять с этого адреса",
"fromName": "Имя отправителя",
"region": "Регион домена"
}
},
"sendgrid": {
"description": "Отправляйте счета и напоминания через SendGrid.",
"fields": {
"apiKey": "API-ключ"
},
"settings": {
"fromEmail": "Отправлять с этого адреса",
"fromName": "Имя отправителя"
}
},
"amazon-ses": {
"description": "Отправляйте счета и напоминания через Amazon SES.",
"fields": {
"accessKeyId": "ID ключа доступа",
"secretAccessKey": "Секретный ключ доступа",
"region": "Регион"
},
"settings": {
"fromEmail": "Отправлять с этого адреса",
"fromName": "Имя отправителя"
}
},
"vegvesen": {
"description": "Заполните данные автомобиля по норвежскому номеру или VIN: марка, модель, год, топливо, коробка передач, двигатель, цвет, размеры шин и дата следующего EU-kontroll, напрямую из реестра Statens vegvesen. Данные о владельце не передаются.",
"fields": {
"apiKey": "API-ключ",
"apiKeyHelp": "Бесплатно. Закажите ключ на vegvesen.no в разделе «API for tekniske kjøretøyopplysninger»: войдите через BankID, представьте мастерскую, и ключ будет выдан сразу. Он допускает 50 000 запросов в день."
},
"settings": {
"syncInspections": "Обновлять сроки техосмотра для всех автомобилей этой мастерской",
"syncInspectionsHelp": "Раз в час автомобили, которым пора проверка, ищутся по номеру, и сохраняется дата следующего EU-kontroll; как часто автомобиль проверяется повторно, задаётся ниже. Отправляются только автомобили, сохранённые в этой мастерской.",
"inspectionRecheck": "Повторно проверять автомобили, у которых уже есть дата",
"inspectionRecheckHelp": "Дата меняется только после пройденного осмотра. Ежемесячно быстрее всего замечает досрочный осмотр; только перед сроком стоит дешевле всего. Перед сроком каждый автомобиль проверяется еженедельно независимо от этого выбора.",
"recheckMonthly": "Каждый месяц",
"recheckQuarterly": "Каждые три месяца",
"recheckNearDeadline": "Только перед сроком",
"inspectionSoonDays": "Перед сроком означает в пределах",
"inspectionSoonDaysHelp": "В этом окне автомобиль проверяется еженедельно, поэтому пройденный осмотр убирает его из списка напоминаний за несколько дней. Более короткое окно означает меньше запросов.",
"soon30": "30 дней",
"soon60": "60 дней",
"soon90": "90 дней",
"inspectionOnlyWithCustomer": "Только автомобили с клиентом",
"inspectionOnlyWithCustomerHelp": "Пропускать автомобили без записанного клиента. Напомнить о них некому, так что запрос обходится впустую."
}
},
"openapi-automotive": {
"description": "Заполните данные автомобиля по французскому, итальянскому, испанскому, португальскому или британскому номеру: марка, модель, год, VIN, топливо, объём двигателя и другое из регистрационных данных страны через Openapi.com. Каждый запрос списывается со счёта Openapi самой мастерской. Данные о владельце не передаются.",
"fields": {
"token": "API-токен",
"tokenHelp": "Создайте аккаунт на console.openapi.com, пополните кошелёк и в разделе Automotive создайте токен для производственной среды. Каждый успешный запрос стоит несколько десятков центов; запрос без результата бесплатен."
},
"settings": {
"country": "Страна",
"countryHelp": "Реестр, в котором искать. Французские и итальянские номера выглядят одинаково, поэтому страну нельзя определить по номеру.",
"cars": "Искать автомобили",
"carsHelp": "Запрашивает реестр автомобилей. Отключите, если работаете только с мотоциклами: поиск пропустит автомобили и ответит быстрее.",
"bikes": "Искать мотоциклы",
"bikesHelp": "Запрашивает реестр мотоциклов. Если автомобили тоже включены, он запрашивается только когда автомобиль не найден, а запрос по автомобилю без результата бесплатен. Недоступно для Португалии."
}
},
"checkcardetails": {
"description": "Заполняйте данные автомобиля по британскому номеру или VIN: марка, модель, год, цвет, топливо, объём двигателя и срок следующего MOT, из данных DVLA через Check Car Details. Автомобили и мотоциклы берутся из одного реестра. Если для вашего аккаунта включена UK Vehicle Data, приходят также VIN, коробка передач и массы. Каждый запрос оплачивается с собственного аккаунта Check Car Details мастерской. Данные владельца не возвращаются.",
"fields": {
"apiKey": "API-ключ",
"apiKeyHelp": "Создайте аккаунт на api.checkcardetails.co.uk и скопируйте рабочий ключ в разделе API Keys. Vehicle Registration входит в каждый аккаунт. Чтобы получать и VIN, нажмите Request Access рядом с UK Vehicle Data в разделе Your Data Points; запросы начнут его использовать, как только он будет включён. Тестовый ключ находит только номера, в которых есть буква A."
},
"settings": {
"syncInspections": "Поддерживать сроки MOT актуальными для всех автомобилей этой мастерской",
"syncInspectionsHelp": "Когда это включено, каждый автомобиль с номером ищется один раз, и сохраняется дата его MOT. Затем автомобили проверяются повторно так, как задано ниже. Каждый найденный автомобиль оплачивается как один запрос Vehicle Registration; номера, неизвестные реестру, бесплатны. Отправляются только автомобили, сохранённые в этой мастерской.",
"inspectionRecheck": "Повторно проверять автомобили, у которых уже есть дата",
"inspectionRecheckHelp": "Дата меняется только после пройденного осмотра. Ежемесячно быстрее всего замечает досрочный осмотр; только перед сроком стоит дешевле всего. Перед сроком каждый автомобиль проверяется еженедельно независимо от этого выбора.",
"recheckMonthly": "Каждый месяц",
"recheckQuarterly": "Каждые три месяца",
"recheckNearDeadline": "Только перед сроком",
"inspectionSoonDays": "Перед сроком означает в пределах",
"inspectionSoonDaysHelp": "В этом окне автомобиль проверяется еженедельно, поэтому пройденный осмотр убирает его из списка напоминаний за несколько дней. Более короткое окно означает меньше запросов.",
"soon30": "30 дней",
"soon60": "60 дней",
"soon90": "90 дней",
"inspectionOnlyWithCustomer": "Только автомобили с клиентом",
"inspectionOnlyWithCustomerHelp": "Пропускать автомобили без записанного клиента. Напомнить о них некому, так что запрос обходится впустую."
}
},
"rdw": {
"description": "Заполните данные автомобиля по нидерландскому номеру: марка, модель, год, топливо, объём двигателя, цвет, массы и дата следующего APK, напрямую из открытого реестра транспортных средств RDW. Бесплатно, ключ не нужен. Данные о владельце и VIN не публикуются.",
"fields": {
"appToken": "Токен приложения (необязательно)",
"appTokenHelp": "Открытые данные RDW работают без ключа, но анонимные запросы делят ограниченную квоту. Для синхронизации техосмотров создайте бесплатный аккаунт на opendata.rdw.nl, откройте настройки разработчика в профиле и создайте токен приложения."
},
"settings": {
"syncInspections": "Обновлять даты APK для всех автомобилей этой мастерской",
"syncInspectionsHelp": "Раз в час автомобили, которым пора проверка, ищутся по номеру, и сохраняется дата следующего APK; как часто автомобиль проверяется повторно, задаётся ниже. Отправляются только автомобили, сохранённые в этой мастерской.",
"inspectionRecheck": "Повторно проверять автомобили, у которых уже есть дата",
"inspectionRecheckHelp": "Дата меняется только после пройденного осмотра. Ежемесячно быстрее всего замечает досрочный осмотр; только перед сроком стоит дешевле всего. Перед сроком каждый автомобиль проверяется еженедельно независимо от этого выбора.",
"recheckMonthly": "Каждый месяц",
"recheckQuarterly": "Каждые три месяца",
"recheckNearDeadline": "Только перед сроком",
"inspectionSoonDays": "Перед сроком означает в пределах",
"inspectionSoonDaysHelp": "В этом окне автомобиль проверяется еженедельно, поэтому пройденный осмотр убирает его из списка напоминаний за несколько дней. Более короткое окно означает меньше запросов.",
"soon30": "30 дней",
"soon60": "60 дней",
"soon90": "90 дней",
"inspectionOnlyWithCustomer": "Только автомобили с клиентом",
"inspectionOnlyWithCustomerHelp": "Пропускать автомобили без записанного клиента. Напомнить о них некому, так что запрос обходится впустую."
}
},
"regcheck": {
"description": "Заполните данные автомобиля по номеру в Австралии, Новой Зеландии, США, Ирландии, Норвегии, Швеции, Дании, Финляндии, Эстонии, Чехии, Словакии, Венгрии или Хорватии: марка, модель, год, VIN, топливо и объём двигателя, если страна их публикует, через RegCheck. Каждый успешный запрос списывает один кредит со счёта RegCheck самой мастерской. Данные о владельце не передаются.",
"fields": {
"username": "Имя пользователя RegCheck",
"usernameHelp": "Зарегистрируйтесь на regcheck.org.uk; аккаунт включает 10 бесплатных запросов, остальные покупаются блоками по 100 в панели. Здесь нужно только имя пользователя, никогда пароль. Ненайденный номер ничего не стоит."
},
"settings": {
"country": "Страна",
"countryHelp": "Реестр, в котором искать. У каждой страны своя служба, поэтому подключение ищет в одной.",
"auState": "Штат или территория",
"auStateHelp": "Австралия регистрирует автомобили по штатам, и реестру нужно указать, в каком искать. Выберите тот, где зарегистрировано большинство автомобилей ваших клиентов.",
"usState": "Штат",
"usStateHelp": "Двухбуквенный код штата, в котором зарегистрированы автомобили, например CA или TX. Американские реестры запрашиваются по штатам."
}
},
"openai": {
"description": "Описания работ, сводки по истории, распознавание документов и ассистент — отвечает ваш собственный аккаунт OpenAI. Каждый запрос оплачивается с этого аккаунта, модель выбираете вы.",
"fields": {
"apiKey": "API-ключ",
"apiKeyHelp": "Создайте его на platform.openai.com в разделе API keys. На аккаунте нужен баланс; OpenAI списывает плату за каждый запрос."
},
"settings": {
"model": "Модель",
"modelHelp": "Какая модель отвечает. Список берётся из вашего аккаунта, новые сверху. Модели поменьше дешевле за запрос и справляются с большинством текстов мастерской."
}
},
"anthropic": {
"description": "Описания работ, сводки по истории, распознавание документов и ассистент — отвечает Claude в вашем собственном аккаунте Anthropic. Каждый запрос оплачивается с этого аккаунта, модель выбираете вы.",
"fields": {
"apiKey": "API-ключ",
"apiKeyHelp": "Создайте его на console.anthropic.com в разделе API keys. На аккаунте нужен баланс; Anthropic списывает плату за каждый запрос."
},
"settings": {
"model": "Модель",
"modelHelp": "Какая модель отвечает. Список берётся из вашего аккаунта, новые сверху. Модели поменьше дешевле за запрос и справляются с большинством текстов мастерской."
}
},
"openai-compatible": {
"name": "Совместимый с OpenAI",
"description": "Описания работ, сводки истории, распознавание документов и ассистент, которые отвечает любой сервер с chat API OpenAI: Ollama, Open WebUI, LocalAI, vLLM, LM Studio, LiteLLM и подобные. Ваши данные остаются на вашем оборудовании.",
"fields": {
"baseUrl": "Базовый URL",
"baseUrlHelp": "Где начинается OpenAI-совместимый API сервера, включая путь: /v1 для Ollama, vLLM, LocalAI и LM Studio, /api для Open WebUI. Torqvoice добавляет к нему /models и /chat/completions.",
"apiKey": "API-ключ",
"apiKeyHelp": "Только если сервер его требует. Ollama и vLLM обычно работают без ключа; Open WebUI выдаёт его в разделе Настройки, Аккаунт."
},
"settings": {
"model": "Модель",
"modelHelp": "Какая модель отвечает. В списке всё, что сообщает сервер, по названию. Для чтения фотографий выберите модель с поддержкой изображений."
}
},
"stripe": {
"description": "Оплата картой по ссылке на счёт на ваш собственный аккаунт Stripe. Клиент платит, Stripe сообщает Torqvoice, и счёт сам отмечается оплаченным.",
"fields": {
"secretKey": "Секретный ключ",
"secretKeyHelp": "Из панели Stripe в разделе Developers, API keys. Тестовые ключи ничего реального не проводят, поэтому сначала попробуйте платёж на них, а затем переключитесь на боевые ключи.",
"publishableKey": "Публикуемый ключ",
"webhookSecret": "Секрет подписи вебхука",
"webhookSecretHelp": "Необязательно, можно добавить и после подключения. Stripe показывает его под Reveal secret, когда URL уведомлений с этой страницы добавлен как конечная точка. С ним каждое уведомление проверяется по подписи; без него Torqvoice запрашивает у Stripe платёж, прежде чем его записать."
},
"settings": {
"enabled": "Предлагать в ссылках на счета",
"enabledHelp": "Выключите, чтобы на время убрать кнопку оплаты с общих счетов, не отключая интеграцию. Уже начатые платежи всё равно записываются."
}
},
"vipps": {
"description": "Vipps MobilePay по ссылке на счёт. Клиент платит в приложении, которое у него уже есть, и счёт сам отмечается оплаченным.",
"fields": {
"clientId": "Client ID",
"clientSecret": "Секрет клиента",
"subscriptionKey": "Ключ подписки",
"subscriptionKeyHelp": "Ocp-Apim-Subscription-Key из портала Vipps MobilePay, в API-ключах торговой единицы.",
"merchantSerialNumber": "Серийный номер продавца"
},
"settings": {
"enabled": "Предлагать в ссылках на счета",
"enabledHelp": "Выключите, чтобы на время убрать кнопку оплаты с общих счетов, не отключая интеграцию. Уже начатые платежи всё равно записываются.",
"testMode": "Тестовый режим",
"testModeHelp": "Использовать тестовую среду Vipps с тестовыми ключами. Оставьте включённым, пока не пройдёт полный платёж, затем выключите и введите боевые ключи."
}
},
"paypal": {
"description": "Оплата через PayPal по ссылке на счёт через ваше собственное приложение PayPal. Клиент платит аккаунтом PayPal или картой, и счёт сам отмечается оплаченным.",
"fields": {
"clientId": "Client ID",
"clientSecret": "Секрет клиента"
},
"settings": {
"enabled": "Предлагать в ссылках на счета",
"enabledHelp": "Выключите, чтобы на время убрать кнопку оплаты с общих счетов, не отключая интеграцию. Уже начатые платежи всё равно записываются.",
"sandbox": "Режим песочницы",
"sandboxHelp": "Использовать песочницу PayPal с ключами приложения песочницы. Оставьте включённым, пока не пройдёт полный платёж, затем выключите и введите ключи боевого приложения."
}
},
"quickbooks": {
"description": "Отправляйте выставленные счета, их клиентов и платежи в QuickBooks Online и получайте обратно платежи, записанные там.",
"tenantHelp": "Создайте приложение на портале Intuit Developer. Скопируйте client id и secret из Keys and credentials, а URI перенаправления ниже введите в Settings, Redirect URIs. Ключи разработки работают с sandbox-компаниями, production-ключи с настоящими.",
"fields": {
"clientId": "Идентификатор клиента",
"clientSecret": "Секрет клиента"
},
"settings": {
"pushInvoices": "Отправлять выставленные счета в QuickBooks",
"pushOnComplete": "Также отправлять счета, когда заказ отмечен как выполненный",
"pushOnCompleteHelp": "Без этого счёт уходит, когда он отправлен, передан по ссылке или оплачен. С этим выполненный заказ уходит сразу и обновляется при изменениях.",
"startDate": "Только счета с датой не раньше",
"startDateHelp": "Оставьте пустым, чтобы отправлять все выставленные счета. Укажите дату перехода бухгалтерии на QuickBooks, чтобы старые счета не вводились дважды.",
"includeVehicle": "Указывать автомобиль в счёте",
"includeVehicleHelp": "Текстовая строка над позициями с годом, маркой, моделью, номером и пробегом, чтобы бухгалтерия знала, о какой машине речь.",
"laborItemId": "Товар для строк работ",
"laborItemIdHelp": "Оставьте пустым, и в первый раз под вашим счётом доходов будет создан товар с именем Labour.",
"partsItemId": "Товар для строк запчастей",
"partsItemIdHelp": "Оставьте пустым, и в первый раз под вашим счётом доходов будет создан товар с именем Parts.",
"taxAmounts": "Суммы налога",
"taxAmountsHelp": "Как в счёте передаёт налог ровно таким, каким он указан в счёте клиента, поэтому обе системы сходятся до копейки. Рассчитывает QuickBooks позволяет QuickBooks применить ставку налогового кода, а в США адрес клиента; журнал сообщает о расхождении итогов.",
"taxAmountsBilled": "Как в счёте Torqvoice",
"taxAmountsQuickbooks": "Рассчитывает QuickBooks",
"taxCodeId": "Налоговый код для облагаемых счетов",
"taxCodeIdHelp": "QuickBooks учитывает налог по налоговому коду. Torqvoice подбирает код со ставкой каждого счёта; этот используется, когда подходящего нет. Компания в США использует TAX, если не выбрать другой код.",
"zeroTaxCodeId": "Налоговый код для счетов без налога",
"zeroTaxCodeIdHelp": "Используется, когда в счёте нет налога или клиент освобождён от него. Компания в США использует NON, если не выбрать другой код.",
"pushPayments": "Записывать платежи в QuickBooks",
"depositAccountId": "Зачислять платежи на",
"depositAccountIdHelp": "Оставьте пустым, чтобы использовать Undeposited Funds.",
"manualPaidAsPayment": "Записывать платёж, когда счёт отмечен оплаченным вручную",
"manualPaidAsPaymentHelp": "Счёт, отмеченный в Torqvoice как оплаченный без записи платежа, получает в QuickBooks один платёж на сумму, которая там ещё числится к оплате. Выключено: он остаётся там открытым, пока не будет записан платёж.",
"pullPayments": "Забирать платежи, записанные в QuickBooks",
"pullPaymentsHelp": "Каждые 30 минут. Платёж, полученный в QuickBooks по счёту из Torqvoice, записывается здесь на счёт."
}
},
"fiken": {
"description": "Отправляйте выставленные счета, их клиентов и платежи в Fiken и получайте обратно платежи, записанные там.",
"tenantHelp": "Создайте приложение в Fiken в разделе Rediger konto, API для своих компаний. Укажите в приложении URI перенаправления ниже и скопируйте сюда его идентификатор клиента и секрет клиента. Компании нужен модуль API Fiken.",
"fields": {
"clientId": "Идентификатор клиента",
"clientSecret": "Секрет клиента"
},
"settings": {
"companySlug": "Компания в Fiken",
"companySlugHelp": "Компания, в учёт которой попадают счета. У вашего пользователя Fiken может быть доступ к нескольким.",
"pushInvoices": "Отправлять выставленные счета в Fiken",
"pushOnComplete": "Также отправлять счета, когда заказ отмечен как выполненный",
"pushOnCompleteHelp": "Без этого счёт уходит, когда он отправлен, передан по ссылке или оплачен. С этим выполненный заказ уходит сразу и обновляется при изменениях.",
"startDate": "Только счета с датой не раньше",
"startDateHelp": "Оставьте пустым, чтобы отправлять все выставленные счета. Укажите дату перехода бухгалтерии на Fiken, чтобы старые счета не вводились дважды.",
"attachPdf": "Прикреплять PDF счёта",
"attachPdfHelp": "Счёт попадает в Fiken как продажа (Annet salg) под своим номером из Torqvoice. Если включено, PDF, который получил клиент, сохраняется при продаже как первичный документ.",
"laborAccount": "Счёт доходов для работ",
"laborAccountHelp": "Оставьте пустым, чтобы использовать 3000.",
"partsAccount": "Счёт доходов для запчастей",
"partsAccountHelp": "Оставьте пустым, чтобы использовать 3000.",
"zeroVatType": "Тип НДС для счетов без НДС",
"zeroVatTypeHelp": "Как Fiken проводит продажу без НДС. Компании, не зарегистрированной как плательщик НДС, здесь ничего выбирать не нужно. Зарегистрированная должна выбрать до отправки такого счёта; уточните у бухгалтера, какой тип применяется.",
"vatNone": "Нет (без учёта НДС)",
"vatExempt": "Освобождено (fritatt)",
"vatOutside": "Вне сферы НДС (utenfor)",
"vatExport": "Освобождено, экспорт",
"vatReverse": "Освобождено, обратное начисление",
"zeroAccount": "Счёт доходов для счетов без НДС",
"zeroAccountHelp": "Оставьте пустым, чтобы использовать счета для работ и запчастей выше. Если Fiken отклонит счёт с этим типом НДС, причина будет в журнале активности.",
"pushPayments": "Записывать платежи в Fiken",
"paymentAccount": "Зачислять платежи на",
"paymentAccountHelp": "Оставьте пустым, чтобы использовать первый банковский счёт компании.",
"manualPaidAsPayment": "Записывать платёж, когда счёт отмечен оплаченным вручную",
"manualPaidAsPaymentHelp": "Счёт, отмеченный в Torqvoice как оплаченный без записи платежа, получает в Fiken один платёж на сумму, которая там ещё числится к оплате. Выключено: он остаётся там открытым, пока не будет записан платёж.",
"pullPayments": "Забирать платежи, записанные в Fiken",
"pullPaymentsHelp": "Каждые 30 минут. Платёж, полученный в Fiken по счёту из Torqvoice, записывается здесь на счёт."
}
},
"nhtsa": {
"description": "Заполните автомобиль по VIN и смотрите отзывные кампании, жалобы владельцев и рейтинги краш-тестов для каждого модельного года от американского ведомства безопасности. Бесплатно, без ключа.",
"fields": {},
"settings": {
"refreshFleet": "Поддерживать актуальные данные об отзывах и жалобах для каждого автомобиля этой мастерской",
"refreshFleetHelp": "Раз в день модели, не обновлявшиеся за последнюю неделю, запрашиваются заново, чтобы страница автомобиля никогда не ждала, а новая отзывная кампания появлялась в течение недели. Отправляются только марка, модель и год."
}
},
"openlaborproject": {
"description": "Находите нормы времени и объёмы жидкостей для автомобиля из заказ-наряда или сметы и добавляйте часы работы строкой работ одним щелчком. Большая часть данных относится к автомобилям американского рынка, а справочник показывает, к какому рынку относится каждый запрос. Для каждого значения указано, насколько Open Labor Project в нём уверен, и многие из них оценки ИИ, поэтому проверьте их, прежде чем называть клиенту цену. Запросы используют собственный API-ключ мастерской. На платном тарифе Open Labor Project найденный однажды автомобиль хранится, пока действует тариф, поэтому повторный поиск не расходует запрос.",
"fields": {
"apiKey": "API-ключ",
"apiKeyHelp": "Запросите ключ на openlaborproject.com в разделе Developers; он придёт по электронной почте. Бесплатный ключ даёт 10 запросов в день и показывает часы по одной работе. Тариф Builder и выше повышает лимит и показывает часы всех работ сразу.",
"apiKeyServerHelp": "Оставьте поле пустым, чтобы использовать ключ этого сервера, или вставьте свой ключ с openlaborproject.com, чтобы использовать собственный тариф."
},
"settings": {
"minConfidence": "Показывать нормы начиная с",
"minConfidenceHelp": "Скрывает нормы, в которых источник менее уверен. Многие нормы для европейских марок оценки ИИ, поэтому строгий выбор может оставить мало работ.",
"confidenceAll": "Любой уровень надёжности",
"confidenceMedium": "Средняя и выше",
"confidenceHigh": "Проверено и выше",
"confidenceOem": "Только OEM",
"hoursFrom": "Добавляемые часы",
"hoursFromHelp": "Какое значение попадает в заказ-наряд: норма времени или верхняя граница диапазона, который даёт Open Labor Project (например, 1,6 ч вместо 1,2 ч). Верхняя граница оставляет запас для работ, которые затягиваются.",
"hoursBook": "Норма времени",
"hoursHigh": "Верхняя граница диапазона",
"adjustPercent": "Изменить нормы на (%)",
"adjustPercentHelp": "Процент, который прибавляется к каждой норме перед добавлением в заказ-наряд: 10 превращает 1,2 ч в 1,32 ч, -10 в 1,08 ч. От -50 до 200.",
"rounding": "Округлять часы вверх до",
"roundingHelp": "Округляет часы каждой работы вверх после изменения: при шаге 0,25 из 1,32 ч получается 1,5 ч. Время, которое уже попадает на шаг, остаётся прежним.",
"roundNone": "Не округлять",
"roundTenth": "0,1 часа",
"roundQuarter": "0,25 часа",
"roundHalf": "0,5 часа",
"fluids": "Показывать данные о жидкостях",
"fluidsHelp": "Добавляет вкладку «Жидкости» с объёмами, спецификациями и интервалами замены. Её открытие расходует отдельный запрос.",
"units": "Единицы для жидкостей",
"unitsHelp": "Единицы, в которых показаны объёмы и интервалы замены.",
"unitsBoth": "Обе",
"unitsMetric": "Метрические (L, km)",
"unitsUs": "США (qt, mi)"
}
},
"speech-to-text": {
"name": "Речь в текст",
"description": "Диктовка в заказ-наряде, которую записывает речевая модель, а не браузер: гораздо точнее, на любом языке и со словами мастерской. Работает отдельно от вашего провайдера ИИ, так что его можно оставить как есть. Использует ваш собственный ключ OpenAI или ваш собственный сервер с API распознавания речи в стиле OpenAI. Запись отправляется на расшифровку и не сохраняется.",
"fields": {
"apiKey": "API-ключ",
"apiKeyHelp": "Ключ OpenAI с platform.openai.com из раздела API keys; OpenAI берёт плату за использование поминутно. Для собственного сервера нужен, только если сервер его требует.",
"baseUrl": "Адрес сервера",
"baseUrlHelp": "Оставьте пустым, чтобы использовать OpenAI. Для собственного сервера (локальный Whisper, LocalAI, Groq) укажите, где начинается его API в стиле OpenAI, включая путь, например /v1. Torqvoice добавляет к нему /audio/transcriptions."
},
"settings": {
"model": "Модель",
"modelHelp": "Какую речевую модель запрашивать. gpt-4o-mini-transcribe точная и недорогая; gpt-4o-transcribe крупнее. Собственный сервер обычно отвечает на whisper-1.",
"mode": "Кто выбирает, как записывается диктовка",
"modeHelp": "Браузер пишет по ходу речи, но хуже, особенно на небольших языках. Речевая модель пишет, когда вы замолчите.",
"modeAi": "Всегда речевая модель",
"modeChoice": "Каждый выбирает сам: речевая модель или браузер"
}
},
"s3": {
"name": "Облачный бакет",
"description": "Зашифрованные резервные копии этой мастерской в ваш собственный бакет в Amazon S3, Cloudflare R2, Backblaze B2, Wasabi, Hetzner Object Storage или любом другом S3-совместимом хранилище по выбранному вами расписанию. После первого запуска загружаются только изменения, поэтому ежечасные копии остаются дешёвыми.",
"fields": {
"accessKeyId": "Идентификатор ключа доступа",
"accessKeyIdHelp": "Ключ вашего поставщика хранилища с правом просматривать список, читать, записывать и удалять объекты в бакете. Создайте отдельный ключ только для Torqvoice, чтобы его можно было отозвать независимо.",
"secretAccessKey": "Секретный ключ доступа",
"password": "Пароль резервных копий",
"passwordHelp": "Каждая резервная копия шифруется этим паролем. Придумайте его или нажмите «Сгенерировать» и сохраните копию не на этом сервере: без него никто не сможет открыть эти резервные копии, даже Torqvoice. Чтобы снова подключить хранилище, в котором уже есть резервные копии Torqvoice, введите пароль, с которым они были созданы.",
"endpoint": "Свой адрес (endpoint)",
"endpointHelp": "Только для варианта «Другое S3-совместимое хранилище»: S3-адрес вашего собственного хранилища, например сервера MinIO, в виде имени хоста, при необходимости с портом."
},
"settings": {
"provider": "Поставщик",
"providerAws": "Amazon S3",
"providerR2": "Cloudflare R2",
"providerB2": "Backblaze B2",
"providerWasabi": "Wasabi",
"providerHetzner": "Hetzner Object Storage",
"providerOther": "Другое S3-совместимое хранилище",
"region": "Регион",
"regionHelp": "Где находится бакет. Выберите его из списка поставщика; для другого хранилища введите значение, которое оно ожидает, если оно его требует. Cloudflare R2 его не использует.",
"accountId": "Идентификатор аккаунта Cloudflare",
"accountIdHelp": "32-символьный идентификатор на странице обзора R2 в панели управления Cloudflare.",
"bucket": "Бакет",
"bucketHelp": "Список бакетов появляется, как только введён ключ. Если ключу разрешено работать с одним бакетом, но не получать их список, введите его имя.",
"prefix": "Папка в бакете",
"prefixHelp": "Резервные копии хранятся в этой папке. Для каждой мастерской, которая использует тот же бакет, укажите отдельную папку.",
"frequency": "Как часто",
"frequencyHourly": "Каждый час",
"frequencyEvery4h": "Каждые 4 часа",
"frequencyDaily": "Каждый день",
"frequencyWeekly": "Каждую неделю",
"frequencyMonthly": "Каждый месяц",
"time": "Время",
"timeHelp": "По часам мастерской, в формате HH:MM. Используется для ежедневных, еженедельных и ежемесячных копий.",
"weekday": "День недели",
"sunday": "Воскресенье",
"monday": "Понедельник",
"tuesday": "Вторник",
"wednesday": "Среда",
"thursday": "Четверг",
"friday": "Пятница",
"saturday": "Суббота",
"monthDay": "День месяца",
"monthDayLast": "Последний день",
"contents": "Содержимое",
"contentsHelp": "К секретным ключам относятся ключи, которые эта мастерская ввела в Torqvoice: ключи платежей, ИИ и вебхуков. В любом случае каждая резервная копия шифруется паролем резервных копий. Резервная копия содержит записи мастерской и, если выбрано, её файлы. Учётных записей пользователей и паролей в ней нет: на новом сервере вы входите, приглашаете команду и восстанавливаете данные в эту мастерскую.",
"contentsData": "Только данные",
"contentsDataAndSecrets": "Данные и секретные ключи",
"includeFiles": "Включить фото и файлы",
"includeFilesHelp": "Каждый файл загружается один раз и повторно используется последующими копиями, поэтому после первого запуска это стоит недорого.",
"keepHourly": "Хранить ежечасные копии",
"keepHourlyHelp": "Сколько последних ежечасных копий хранить. Имеет значение только для расписаний «каждый час» и «каждые 4 часа».",
"keepDaily": "Хранить ежедневные копии",
"keepWeekly": "Хранить еженедельные копии",
"keepMonthly": "Хранить ежемесячные копии",
"keepMonthlyHelp": "После каждого запуска старые копии удаляются, а самые новые копии каждого вида остаются. Укажите 0, чтобы не хранить копии этого вида."
}
},
"local-folder": {
"name": "Локальная папка",
"description": "Зашифрованные резервные копии этой мастерской в папку на этом сервере: том для резервных копий из файла compose или подключённый туда сетевой диск. Копия на том же диске, что и база данных, сама по себе не защищена; используйте её вместе с хранилищем в другом месте.",
"fields": {
"password": "Пароль резервных копий",
"passwordHelp": "Каждая резервная копия шифруется этим паролем. Придумайте его или нажмите «Сгенерировать» и сохраните копию не на этом сервере: без него никто не сможет открыть эти резервные копии, даже Torqvoice. Чтобы снова подключить хранилище, в котором уже есть резервные копии Torqvoice, введите пароль, с которым они были созданы."
},
"settings": {
"folder": "Папка",
"folderHelp": "Папка в корневом каталоге резервных копий сервера, где хранятся резервные копии этой мастерской. Оставьте пустым, чтобы использовать папку с именем этой мастерской. На новом сервере введите имя папки, которую использовала прежняя установка, чтобы вернуть её резервные копии.",
"frequency": "Как часто",
"frequencyHourly": "Каждый час",
"frequencyEvery4h": "Каждые 4 часа",
"frequencyDaily": "Каждый день",
"frequencyWeekly": "Каждую неделю",
"frequencyMonthly": "Каждый месяц",
"time": "Время",
"timeHelp": "По часам мастерской, в формате HH:MM. Используется для ежедневных, еженедельных и ежемесячных копий.",
"weekday": "День недели",
"sunday": "Воскресенье",
"monday": "Понедельник",
"tuesday": "Вторник",
"wednesday": "Среда",
"thursday": "Четверг",
"friday": "Пятница",
"saturday": "Суббота",
"monthDay": "День месяца",
"monthDayLast": "Последний день",
"contents": "Содержимое",
"contentsHelp": "К секретным ключам относятся ключи, которые эта мастерская ввела в Torqvoice: ключи платежей, ИИ и вебхуков. В любом случае каждая резервная копия шифруется паролем резервных копий. Резервная копия содержит записи мастерской и, если выбрано, её файлы. Учётных записей пользователей и паролей в ней нет: на новом сервере вы входите, приглашаете команду и восстанавливаете данные в эту мастерскую.",
"contentsData": "Только данные",
"contentsDataAndSecrets": "Данные и секретные ключи",
"includeFiles": "Включить фото и файлы",
"includeFilesHelp": "Каждый файл загружается один раз и повторно используется последующими копиями, поэтому после первого запуска это стоит недорого.",
"keepHourly": "Хранить ежечасные копии",
"keepHourlyHelp": "Сколько последних ежечасных копий хранить. Имеет значение только для расписаний «каждый час» и «каждые 4 часа».",
"keepDaily": "Хранить ежедневные копии",
"keepWeekly": "Хранить еженедельные копии",
"keepMonthly": "Хранить ежемесячные копии",
"keepMonthlyHelp": "После каждого запуска старые копии удаляются, а самые новые копии каждого вида остаются. Укажите 0, чтобы не хранить копии этого вида."
}
}
},
"jobKinds": {
"calendar": {
"push": "Заказы в календарь",
"pull": "Занятое время из календаря"
},
"conference": {
"sync": "Ссылки на видеозвонки"
},
"inspection": {
"refresh": "Обновление сроков техосмотра"
},
"accounting": {
"invoice": "Счёт в бухгалтерию",
"payment": "Платёж в бухгалтерию",
"customer": "Клиент в бухгалтерию",
"pull": "Платежи из бухгалтерии"
},
"safety": {
"refresh": "Обновление данных об отзывных кампаниях",
"vehicle": "Проверка отзывных кампаний для нового автомобиля"
},
"repair": {
"checkPlan": "Проверка, можно ли хранить сохранённые запросы"
}
},
"backupAlerts": {
"destination": "место назначения резервных копий",
"failedTitle": "Резервное копирование не удалось",
"failedMessage": "Резервное копирование в {name} не завершилось: {reason}",
"failedSubject": "Резервное копирование в {name} не удалось",
"failedEmailIntro": "Плановое резервное копирование вашей мастерской в {name} не завершилось.",
"openToRetry": "Откройте Настройки, Интеграции, {name}, чтобы посмотреть запуск и попробовать снова.",
"overdueTitle": "Резервное копирование просрочено",
"overdueSince": "С {time} ни одно резервное копирование в {name} не завершилось.",
"overdueNever": "Ни одно резервное копирование в {name} ещё не завершилось.",
"overdueSubject": "Резервное копирование в {name} просрочено",
"openToSee": "Откройте Настройки, Интеграции, {name}, чтобы узнать, что пошло не так.",
"platformName": "Резервные копии от Torqvoice",
"restoredTitle": "Мастерская восстановлена",
"restoredSubject": "Ваша мастерская восстановлена из резервной копии",
"restoredIntro": "{name}: {time} мастерская была возвращена к точке восстановления {snapshot}. Всего, что было внесено после этой точки, в мастерской больше нет.",
"restoredByMember": "Это восстановление запросил участник вашей мастерской.",
"restoredBySupport": "Служба поддержки Torqvoice сделала это по вашей просьбе. Указанная причина: {reason}",
"noReason": "не указана",
"restoredUndo": "Перед этим была создана страховочная копия мастерской в том виде, в каком она была непосредственно перед восстановлением; она хранится 90 дней. Чтобы вернуться к ней, обратитесь в службу поддержки."
}
}