{ "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 дней. Чтобы вернуться к ней, обратитесь в службу поддержки." } }