|
|
@@ -0,0 +1,451 @@
|
|
|
+/* AppBrand.name ("Meetings") намеренно опущено — имя приложения остается неизменным в коде. */
|
|
|
+"AI Companion for Meet" = "ИИ-помощник для Мит";
|
|
|
+
|
|
|
+/* MARK: - Общее */
|
|
|
+"OK" = "ОК";
|
|
|
+"Cancel" = "Отмена";
|
|
|
+"Continue" = "Продолжить";
|
|
|
+"Apply" = "Применить";
|
|
|
+"Reset" = "Сбросить";
|
|
|
+"Save" = "Сохранить";
|
|
|
+"Copy" = "Копировать";
|
|
|
+"Copied" = "Скопировано";
|
|
|
+"Close" = "Закрыть";
|
|
|
+"Join" = "Присоединиться";
|
|
|
+"None" = "Нет";
|
|
|
+"Link" = "Ссылка";
|
|
|
+"Stop" = "Остановить";
|
|
|
+"Address" = "Адрес";
|
|
|
+"Title" = "Название";
|
|
|
+"Notes" = "Заметки";
|
|
|
+"Start" = "Начать";
|
|
|
+"Premium" = "Премиум";
|
|
|
+"Popular" = "Популярное";
|
|
|
+"Browser" = "Браузер";
|
|
|
+"Meeting" = "Встреча";
|
|
|
+"Error" = "Ошибка";
|
|
|
+"Success" = "Успех";
|
|
|
+
|
|
|
+/* MARK: - Строка состояния */
|
|
|
+"Meetings status menu" = "Меню статуса встреч";
|
|
|
+"Open App" = "Открыть приложение";
|
|
|
+"Join Meetings" = "Присоединиться к встречам";
|
|
|
+"Schedule" = "Расписание";
|
|
|
+"Calendar" = "Календарь";
|
|
|
+"Widgets" = "Виджеты";
|
|
|
+"AI Companion" = "ИИ-помощник";
|
|
|
+"Settings" = "Настройки";
|
|
|
+"Top meetings" = "Закрепленные встречи";
|
|
|
+"No upcoming meetings" = "Нет предстоящих встреч";
|
|
|
+"Sign Out" = "Выйти";
|
|
|
+"Sign In" = "Войти";
|
|
|
+"Quit" = "Закрыть";
|
|
|
+
|
|
|
+/* MARK: - Экран запуска */
|
|
|
+"Preparing your meetings workspace" = "Подготовка рабочего пространства для встреч";
|
|
|
+"CONNECTING SERVICES" = "ПОДКЛЮЧЕНИЕ СЕРВИСОВ";
|
|
|
+"READY" = "ГОТОВО";
|
|
|
+"Plan smart, achieve more" = "Планируйте с умом, достигайте большего";
|
|
|
+
|
|
|
+/* MARK: - Виджеты */
|
|
|
+"Add Widget to Desktop" = "Добавить виджет на рабочий стол";
|
|
|
+"Choose a size and add your Google Meet widget." = "Выберите размер и добавьте виджет «Мит» от Гугл.";
|
|
|
+"Tip: Right-click a desktop widget to remove it." = "Совет: щелкните правой кнопкой мыши виджет на рабочем столе, чтобы удалить его.";
|
|
|
+"Removed %@ widget from desktop." = "Виджет %@ удален с рабочего стола.";
|
|
|
+"Added %@ widget from desktop." = "Виджет %@ добавлен с рабочего стола.";
|
|
|
+"Widgets are Premium only. Upgrade to add widgets." = "Виджеты доступны только в Премиум версии. Обновитесь, чтобы добавить виджеты.";
|
|
|
+"Remove Widget" = "Удалить виджет";
|
|
|
+"Small" = "Маленький";
|
|
|
+"Medium" = "Средний";
|
|
|
+"Quick actions" = "Быстрые действия";
|
|
|
+"Open Meet" = "Открыть Мит";
|
|
|
+"Upcoming meetings" = "Предстоящие встречи";
|
|
|
+"Sign in to see upcoming meetings" = "Войдите, чтобы увидеть предстоящие встречи";
|
|
|
+"Sign in with Google" = "Войти через Гугл";
|
|
|
+"Google Meet" = "«Мит» от Гугл";
|
|
|
+"Open and join quickly" = "Быстро открыть и присоединиться";
|
|
|
+"Refresh" = "Обновить";
|
|
|
+
|
|
|
+/* MARK: - Боковая панель и навигация */
|
|
|
+"Planning" = "Планирование";
|
|
|
+"Additional" = "Дополнительно";
|
|
|
+"Get Premium" = "Получить Премиум";
|
|
|
+"Manage Subscription" = "Управление подпиской";
|
|
|
+"App for Google Meet" = "Приложение для «Мит» от Гугл";
|
|
|
+
|
|
|
+/* MARK: - Присоединение к встрече */
|
|
|
+"New Instant Meet" = "Новый мгновенный Мит";
|
|
|
+"Start instant Meet in more section with\nGoogle Meet meet." = "Начните мгновенный Мит в разделе «Еще»\nс помощью «Мит» от Гугл.";
|
|
|
+"Join with Link" = "Присоединиться по ссылке";
|
|
|
+"Code or meet.google.com/…" = "Код или meet.google.com/…";
|
|
|
+"Join with ID" = "Присоединиться по ID";
|
|
|
+"Join with URL" = "Присоединиться по URL";
|
|
|
+"Meeting URL" = "URL встречи";
|
|
|
+"Enter meeting URL..." = "Введите URL встречи...";
|
|
|
+"Quick Join Meeting" = "Быстрое присоединение к встрече";
|
|
|
+"Invalid Meet link" = "Неверная ссылка «Мит»";
|
|
|
+"Enter a valid Google Meet link or meeting code (for example nkd-grps-duv, meet.google.com/nkd-grps-duv, or https://meet.google.com/nkd-grps-duv)." = "Введите действительную ссылку «Мит» от Гугл или код встречи (например, nkd-grps-duv, meet.google.com/nkd-grps-duv или https://meet.google.com/nkd-grps-duv).";
|
|
|
+"Instant Meeting" = "Мгновенная встреча";
|
|
|
+"Connect Google to start Instant Meeting" = "Подключите Гугл, чтобы начать мгновенную встречу";
|
|
|
+"To auto-stop recording when the meeting ends, connect your Google account first." = "Чтобы автоматически останавливать запись по окончании встречи, сначала подключите свою учетную запись Гугл.";
|
|
|
+"Could not create Instant Meeting" = "Не удалось создать мгновенную встречу";
|
|
|
+"Free trial used. Upgrade to continue." = "Бесплатный пробный период использован. Обновитесь, чтобы продолжить.";
|
|
|
+
|
|
|
+/* MARK: - Веб-серфинг */
|
|
|
+"Browse the web" = "Серфинг в интернете";
|
|
|
+"Enter a web address (for example meet.google.com)." = "Введите веб-адрес (например, meet.google.com).";
|
|
|
+"Invalid address" = "Неверный адрес";
|
|
|
+"Enter a valid http or https URL." = "Введите действительный http или https URL.";
|
|
|
+"Browse" = "Обзор";
|
|
|
+"Quick links" = "Быстрые ссылки";
|
|
|
+"Zoom help" = "Справка Zoom";
|
|
|
+"https://example.com or example.com" = "https://example.com или example.com";
|
|
|
+"Enter a valid web address, for example https://example.com" = "Введите действительный веб-адрес, например https://example.com";
|
|
|
+"Address not allowed" = "Адрес не разрешен";
|
|
|
+"This URL is not permitted with the current in-app browser policy (whitelist)." = "Этот URL не разрешен текущей политикой встроенного браузера (белый список).";
|
|
|
+"Unable to load page" = "Не удалось загрузить страницу";
|
|
|
+"Could not load this page in the in-app browser.\n\n%@" = "Не удалось загрузить эту страницу во встроенном браузере.\n\n%@";
|
|
|
+"Page stopped loading" = "Загрузка страницы остановлена";
|
|
|
+"Unable to open browser" = "Не удалось открыть браузер";
|
|
|
+"Unable to Open Safari" = "Не удалось открыть Safari";
|
|
|
+
|
|
|
+/* MARK: - Расписание и календарь */
|
|
|
+"All" = "Все";
|
|
|
+"Today" = "Сегодня";
|
|
|
+"This week" = "На этой неделе";
|
|
|
+"This month" = "В этом месяце";
|
|
|
+"Previous week" = "Предыдущая неделя";
|
|
|
+"Previous month" = "Предыдущий месяц";
|
|
|
+"Custom range" = "Пользовательский диапазон";
|
|
|
+"No meetings match the selected filters." = "Ни одна встреча не соответствует выбранным фильтрам.";
|
|
|
+"Adjust the date range and tap Apply." = "Настройте диапазон дат и нажмите «Применить».";
|
|
|
+"Premium required. Get Premium now to unlock Calendar." = "Требуется Премиум. Получите Премиум сейчас, чтобы разблокировать Календарь.";
|
|
|
+"Premium required. Click to open paywall." = "Требуется Премиум. Нажмите, чтобы открыть платежный экран.";
|
|
|
+"Get Premium to see events" = "Получите Премиум, чтобы видеть события";
|
|
|
+"Connect Google" = "Подключить Гугл";
|
|
|
+"Sign in with Google first to schedule a meeting from Calendar." = "Сначала войдите через Гугл, чтобы запланировать встречу из Календаря.";
|
|
|
+"Select date" = "Выберите дату";
|
|
|
+"Choose a date to schedule your meeting." = "Выберите дату для планирования встречи.";
|
|
|
+"Google schedule" = "Расписание Гугл";
|
|
|
+"To show scheduled meetings, connect your Google account. You’ll need a Google OAuth client ID (Desktop) and a redirect URI matching the app’s callback scheme." = "Чтобы показывать запланированные встречи, подключите свою учетную запись Гугл. Вам понадобится идентификатор клиента OAuth Гугл (Desktop) и URI перенаправления, соответствующий схеме обратного вызова приложения.";
|
|
|
+"Actions" = "Действия";
|
|
|
+"Schedule meeting" = "Запланировать встречу";
|
|
|
+"Team sync" = "Синхронизация команды";
|
|
|
+"Duration (min)" = "Длительность (мин)";
|
|
|
+"Refresh saved meetings" = "Обновить сохраненные встречи";
|
|
|
+
|
|
|
+/* MARK: - Настройки */
|
|
|
+"Manage appearance, account, and app options." = "Управляйте внешним видом, учетной записью и настройками приложения.";
|
|
|
+"Appearance" = "Внешний вид";
|
|
|
+"Account" = "Аккаунт";
|
|
|
+"App" = "Приложение";
|
|
|
+"Notifications" = "Уведомления";
|
|
|
+"Help & Legal" = "Справка и юридическая информация";
|
|
|
+"Dark Mode" = "Темный режим";
|
|
|
+"Language" = "Язык";
|
|
|
+"System Language" = "Системный язык";
|
|
|
+"Rate Us" = "Оцените нас";
|
|
|
+"Share App" = "Поделиться приложением";
|
|
|
+"Upgrade" = "Обновить";
|
|
|
+"Privacy Policy" = "Политика конфиденциальности";
|
|
|
+"Support" = "Поддержка";
|
|
|
+"Terms of Services" = "Условия использования";
|
|
|
+"AI Language 1" = "Язык ИИ 1";
|
|
|
+"AI Language 2" = "Язык ИИ 2";
|
|
|
+"Google account connected" = "Учетная запись Гугл подключена";
|
|
|
+"Google account not connected" = "Учетная запись Гугл не подключена";
|
|
|
+"Signed in" = "Выполнен вход";
|
|
|
+"Sign in to sync your meetings and calendar." = "Войдите, чтобы синхронизировать встречи и календарь.";
|
|
|
+"Log out" = "Выйти";
|
|
|
+"Check out %@ for managing and joining meetings." = "Попробуйте %@ для управления встречами и присоединения к ним.";
|
|
|
+"Meetings App" = "Приложение для встреч";
|
|
|
+
|
|
|
+/* MARK: - Согласие на запись */
|
|
|
+"Record this meeting locally?" = "Записать эту встречу локально?";
|
|
|
+"With your consent, the app will record meeting audio on this Mac and show it in AI Companion after the meeting." = "С вашего согласия приложение запишет аудио встречи на этом Mac и покажет его в ИИ-помощнике после встречи.";
|
|
|
+"Allow and Continue" = "Разрешить и продолжить";
|
|
|
+"Continue Without Recording" = "Продолжить без записи";
|
|
|
+"Transcription Languages" = "Языки расшифровки";
|
|
|
+"Preferred Language 1" = "Предпочтительный язык 1";
|
|
|
+"Preferred Language 2" = "Предпочтительный язык 2";
|
|
|
+"Microphone permission denied" = "Доступ к микрофону запрещен";
|
|
|
+"Microphone permission required" = "Требуется доступ к микрофону";
|
|
|
+"Enable microphone access in System Settings to record meetings locally." = "Включите доступ к микрофону в Системных настройках, чтобы записывать встречи локально.";
|
|
|
+"Could not start recording" = "Не удалось начать запись";
|
|
|
+"Recording will start when the meeting starts" = "Запись начнется, когда начнется встреча";
|
|
|
+"Meeting recording started (meeting + microphone)" = "Запись встречи начата (встреча + микрофон)";
|
|
|
+"System audio unavailable. Recording microphone only." = "Системное аудио недоступно. Записывается только микрофон.";
|
|
|
+"Meeting recording started (microphone only)" = "Запись встречи начата (только микрофон)";
|
|
|
+"Meeting recording saved" = "Запись встречи сохранена";
|
|
|
+
|
|
|
+/* MARK: - ИИ-помощник */
|
|
|
+"Get notes from your previous meetings" = "Получите заметки из предыдущих встреч";
|
|
|
+"Connect your Google account to see your AI Companion meeting history." = "Подключите свою учетную запись Гугл, чтобы видеть историю встреч ИИ-помощника.";
|
|
|
+"No previous meetings yet for %@. End a meeting to save it here and generate notes." = "Пока нет предыдущих встреч для %@. Завершите встречу, чтобы сохранить ее здесь и создать заметки.";
|
|
|
+"this account" = "эта учетная запись";
|
|
|
+"Previous meetings" = "Предыдущие встречи";
|
|
|
+"Recording in progress: %@" = "Идет запись: %@";
|
|
|
+"Started: %@" = "Начата: %@";
|
|
|
+"Stop Recording" = "Остановить запись";
|
|
|
+"Date: %@" = "Дата: %@";
|
|
|
+"Saved time: %@" = "Сохранено: %@";
|
|
|
+"Get Notes" = "Получить заметки";
|
|
|
+"Premium required. Click to unlock AI Companion notes." = "Требуется Премиум. Нажмите, чтобы разблокировать заметки ИИ-помощника.";
|
|
|
+"Play Audio" = "Воспроизвести аудио";
|
|
|
+"Pause Audio" = "Приостановить аудио";
|
|
|
+"Stopped" = "Остановлено";
|
|
|
+"Speaking..." = "Говорит...";
|
|
|
+"Paused" = "На паузе";
|
|
|
+"Playing..." = "Воспроизведение...";
|
|
|
+"Not playing" = "Не воспроизводится";
|
|
|
+"Checking audio..." = "Проверка аудио...";
|
|
|
+"Audio file missing" = "Аудиофайл отсутствует";
|
|
|
+"Could not play recording" = "Не удалось воспроизвести запись";
|
|
|
+"Failed: %@" = "Ошибка: %@";
|
|
|
+"Failed to play audio" = "Не удалось воспроизвести аудио";
|
|
|
+"decode error" = "ошибка декодирования";
|
|
|
+"Loading..." = "Загрузка...";
|
|
|
+"Buffering..." = "Буферизация...";
|
|
|
+"Finished" = "Завершено";
|
|
|
+"Transcript not requested" = "Расшифровка не запрошена";
|
|
|
+"Transcript processing..." = "Обработка расшифровки...";
|
|
|
+"Transcript ready" = "Расшифровка готова";
|
|
|
+"Transcript unavailable (tap to retry)" = "Расшифровка недоступна (нажмите, чтобы повторить)";
|
|
|
+"Notes not requested" = "Заметки не запрошены";
|
|
|
+"Preparing notes, please wait..." = "Подготовка заметок, подождите...";
|
|
|
+"Notes ready" = "Заметки готовы";
|
|
|
+"Notes unavailable (tap to retry)" = "Заметки недоступны (нажмите, чтобы повторить)";
|
|
|
+"Transcript unavailable" = "Расшифровка недоступна";
|
|
|
+"Notes unavailable" = "Заметки недоступны";
|
|
|
+"Could not find recording details for this meeting." = "Не удалось найти детали записи для этой встречи.";
|
|
|
+"Transcript - %@" = "Расшифровка - %@";
|
|
|
+"Notes - %@" = "Заметки - %@";
|
|
|
+"Meeting Notes" = "Заметки о встрече";
|
|
|
+
|
|
|
+/* MARK: - Платежный экран и StoreKit */
|
|
|
+"Meetings Pro" = "Встречи Pro";
|
|
|
+"PREMIUM EXPERIENCE" = "ПРЕМИУМ ВПЕЧАТЛЕНИЕ";
|
|
|
+"Elevate your meetings workflow" = "Улучшите свой рабочий процесс со встречами";
|
|
|
+"Unlock automation, premium meeting tools, and priority support for every session." = "Разблокируйте автоматизацию, премиум-инструменты для встреч и приоритетную поддержку для каждой сессии.";
|
|
|
+"Manage meetings" = "Управление встречами";
|
|
|
+"Smart scheduling" = "Умное планирование";
|
|
|
+"Faster workflow" = "Более быстрый рабочий процесс";
|
|
|
+"Reminder notifications" = "Уведомления-напоминания";
|
|
|
+"Monthly" = "Ежемесячно";
|
|
|
+"Bi Yearly" = "Раз в полгода";
|
|
|
+"Yearly" = "Ежегодно";
|
|
|
+"Most Popular" = "Самое популярное";
|
|
|
+"%@ • Most Popular" = "%@ • Самое популярное";
|
|
|
+"3 days free trial" = "3 дня бесплатного пробного периода";
|
|
|
+"Cancel anytime" = "Отмена в любое время";
|
|
|
+"No lock-in" = "Без обязательств";
|
|
|
+"Instant access" = "Мгновенный доступ";
|
|
|
+"Unlock all tools" = "Разблокируйте все инструменты";
|
|
|
+"Secure billing" = "Безопасная оплата";
|
|
|
+"Handled by Apple" = "Обрабатывается Эппл";
|
|
|
+"Secured by Apple. Cancel anytime." = "Защищено Эппл. Отмена в любое время.";
|
|
|
+"Restore Purchase" = "Восстановить покупку";
|
|
|
+"Continue with free plan" = "Продолжить с бесплатным планом";
|
|
|
+"Already Premium" = "Уже Премиум";
|
|
|
+"You are already premium. Do you want to continue with this purchase?" = "У вас уже есть Премиум. Хотите продолжить эту покупку?";
|
|
|
+"Current plan: %@. Choose a different package to switch." = "Текущий план: %@. Выберите другой пакет для переключения.";
|
|
|
+"Premium is active on this Apple ID." = "Премиум активен для этого идентификатора Apple.";
|
|
|
+"Free for %@, then %@" = "Бесплатно в течение %@, затем %@";
|
|
|
+"Billed via App Store" = "Оплата через App Store";
|
|
|
+"%@ • %@" = "%@ • %@";
|
|
|
+"Save 0%" = "Экономия 0%";
|
|
|
+"Save %@%%" = "Экономия %@%%";
|
|
|
+"month" = "месяц";
|
|
|
+"year" = "год";
|
|
|
+"%@ free trial" = "%@ бесплатного пробного периода";
|
|
|
+"Processing..." = "Обработка...";
|
|
|
+"Premium Active" = "Премиум активен";
|
|
|
+"Continue with 3 day trail" = "Продолжить с 3-дневным пробным периодом";
|
|
|
+"Please Wait" = "Подождите";
|
|
|
+"A purchase is already being processed." = "Покупка уже обрабатывается.";
|
|
|
+"This Apple ID already has premium access." = "Этот идентификатор Apple уже имеет доступ к Премиум.";
|
|
|
+"Purchase Complete" = "Покупка завершена";
|
|
|
+"Premium has been unlocked successfully." = "Премиум успешно разблокирован.";
|
|
|
+"Purchase Pending" = "Покупка на рассмотрении";
|
|
|
+"Your purchase is pending approval. You can continue once it completes." = "Ваша покупка ожидает одобрения. Вы можете продолжить после ее завершения.";
|
|
|
+"Product Not Available" = "Товар недоступен";
|
|
|
+"Unable to load this product. Check your StoreKit configuration and product IDs." = "Не удалось загрузить этот товар. Проверьте конфигурацию StoreKit и идентификаторы товаров.";
|
|
|
+"Already Purchased" = "Уже куплено";
|
|
|
+"This plan is already active on your Apple ID." = "Этот план уже активен для вашего идентификатора Apple.";
|
|
|
+"Purchase Failed" = "Ошибка покупки";
|
|
|
+"Restore Purchases" = "Восстановить покупки";
|
|
|
+"Purchases restored successfully." = "Покупки успешно восстановлены.";
|
|
|
+"No previous premium purchase was found for this Apple ID." = "Для этого идентификатора Apple не найдено предыдущих покупок Премиум.";
|
|
|
+"Restore failed: %@" = "Ошибка восстановления: %@";
|
|
|
+"Unable to Open Subscriptions" = "Не удалось открыть подписки";
|
|
|
+"The subscriptions URL is invalid." = "URL подписок недействителен.";
|
|
|
+"%@ tapped." = "Нажато %@.";
|
|
|
+
|
|
|
+/* MARK: - Аутентификация */
|
|
|
+"Google Sign-In" = "Вход через Гугл";
|
|
|
+
|
|
|
+/* MARK: - Ошибки распознавания речи/расшифровки */
|
|
|
+"Speech recognition permission denied. Enable it in System Settings and try again." = "Разрешение на распознавание речи отклонено. Включите его в Системных настройках и попробуйте снова.";
|
|
|
+"Speech recognition is restricted on this Mac." = "Распознавание речи ограничено на этом Mac.";
|
|
|
+"Speech recognition authorization is unavailable." = "Авторизация распознавания речи недоступна.";
|
|
|
+"Speech recognizer is unavailable for the current locale." = "Распознаватель речи недоступен для текущей локали.";
|
|
|
+"Speech recognizer is unavailable for %@." = "Распознаватель речи недоступен для %@.";
|
|
|
+"No audio was available to transcribe." = "Нет аудио для расшифровки.";
|
|
|
+
|
|
|
+/* MARK: - Ошибки транзакций StoreKit */
|
|
|
+"Unable to load products: %@" = "Не удалось загрузить товары: %@";
|
|
|
+"Product ID not found in StoreKit response. Requested: %@. Loaded IDs: %@" = "Идентификатор товара не найден в ответе StoreKit. Запрошено: %@. Загруженные ID: %@";
|
|
|
+"Purchase verification failed." = "Ошибка проверки покупки.";
|
|
|
+"Unknown purchase state." = "Неизвестное состояние покупки.";
|
|
|
+"none" = "нет";
|
|
|
+
|
|
|
+/* MARK: - Тексты цен на платежном экране */
|
|
|
+"%@ one-time purchase" = "%@ разовая покупка";
|
|
|
+"%@/month" = "%@/месяц";
|
|
|
+"%@/6 months" = "%@/6 месяцев";
|
|
|
+"%@/year (3 days free trial)" = "%@/год (3 дня бесплатного пробного периода)";
|
|
|
+"day" = "день";
|
|
|
+"week" = "неделя";
|
|
|
+"period" = "период";
|
|
|
+"1 %@" = "1 %@";
|
|
|
+"%d %@s" = "%d %@";
|
|
|
+
|
|
|
+/* MARK: - Уведомления и быстрая обратная связь */
|
|
|
+"Meeting added successfully." = "Встреча успешно добавлена.";
|
|
|
+"An issue occurred. Please try again." = "Возникла проблема. Пожалуйста, попробуйте снова.";
|
|
|
+"Failed to load transcript." = "Не удалось загрузить расшифровку.";
|
|
|
+"Failed to generate notes." = "Не удалось создать заметки.";
|
|
|
+
|
|
|
+/* MARK: - Предупреждения браузера */
|
|
|
+"Try Again" = "Повторить";
|
|
|
+"The in-app browser closed this page unexpectedly. You can try loading it again in this same window." = "Встроенный браузер неожиданно закрыл эту страницу. Вы можете попробовать загрузить ее снова в этом же окне.";
|
|
|
+
|
|
|
+/* MARK: - Ошибки расписания и календаря */
|
|
|
+"Couldn't load schedule." = "Не удалось загрузить расписание.";
|
|
|
+"Couldn't refresh schedule." = "Не удалось обновить расписание.";
|
|
|
+"Couldn't connect Google account." = "Не удалось подключить учетную запись Гугл.";
|
|
|
+"Couldn't logout Google account." = "Не удалось выйти из учетной записи Гугл.";
|
|
|
+"Couldn't load schedule" = "Не удалось загрузить расписание";
|
|
|
+"Couldn't determine Meet meeting code from URL." = "Не удалось определить код встречи «Мит» из URL.";
|
|
|
+"Refreshing…" = "Обновление…";
|
|
|
+"Connect Google to see meetings" = "Подключите Гугл, чтобы видеть встречи";
|
|
|
+"Connect to load schedule" = "Подключитесь, чтобы загрузить расписание";
|
|
|
+"Loading…" = "Загрузка…";
|
|
|
+"Loading schedule…" = "Загрузка расписания…";
|
|
|
+"Start date must be on or before end date." = "Дата начала должна быть раньше или равна дате окончания.";
|
|
|
+"Invalid custom date range" = "Неверный пользовательский диапазон дат";
|
|
|
+"No meetings" = "Нет встреч";
|
|
|
+"No meetings for selected filters" = "Нет встреч для выбранных фильтров";
|
|
|
+"No meetings on %@" = "Нет встреч %@";
|
|
|
+"1 meeting on %@" = "1 встреча %@";
|
|
|
+"%d meetings on %@" = "%d встреч %@";
|
|
|
+"All day" = "Весь день";
|
|
|
+"Duration: all day" = "Длительность: весь день";
|
|
|
+"Duration: %dh %dm" = "Длительность: %dh %dm";
|
|
|
+"Duration: %dh" = "Длительность: %dh";
|
|
|
+"Duration: %dm" = "Длительность: %dm";
|
|
|
+"%@ - %@" = "%@ - %@";
|
|
|
+"Scheduled Meeting" = "Запланированная встреча";
|
|
|
+
|
|
|
+/* MARK: - Всплывающее окно создания встречи */
|
|
|
+"Please enter a title." = "Пожалуйста, введите название.";
|
|
|
+"Duration must be a positive number of minutes." = "Длительность должна быть положительным числом минут.";
|
|
|
+"Invalid start time." = "Неверное время начала.";
|
|
|
+
|
|
|
+/* MARK: - Напоминания и уведомления */
|
|
|
+"Reminders" = "Напоминания";
|
|
|
+"1 Day Before" = "За 1 день";
|
|
|
+"12 Hours Before" = "За 12 часов";
|
|
|
+"1 Hour Before" = "За 1 час";
|
|
|
+"Starts in 1 day" = "Начинается через 1 день";
|
|
|
+"Starts in 12 hours" = "Начинается через 12 часов";
|
|
|
+"Starts in 1 hour" = "Начинается через 1 час";
|
|
|
+
|
|
|
+/* MARK: - Ошибки OAuth Google */
|
|
|
+"Missing Google OAuth Client ID." = "Отсутствует идентификатор клиента OAuth Гугл.";
|
|
|
+"Missing Google OAuth Client Secret." = "Отсутствует секрет клиента OAuth Гугл.";
|
|
|
+"Invalid OAuth callback URL." = "Неверный URL обратного вызова OAuth.";
|
|
|
+"Google did not return an authorization code." = "Гугл не вернул код авторизации.";
|
|
|
+"Token exchange failed: %@" = "Ошибка обмена токена: %@";
|
|
|
+"Could not open browser for Google sign-in." = "Не удалось открыть браузер для входа в Гугл.";
|
|
|
+"Google sign-in timed out." = "Время входа в Гугл истекло.";
|
|
|
+"No stored Google tokens found." = "Не найдено сохраненных токенов Гугл.";
|
|
|
+
|
|
|
+/* MARK: - Ошибки ИИ-помощника/расшифровки */
|
|
|
+"Recording not found." = "Запись не найдена.";
|
|
|
+"Local meeting audio is missing." = "Отсутствует локальное аудио встречи.";
|
|
|
+"Generated transcript was empty." = "Сгенерированная расшифровка пуста.";
|
|
|
+"(No transcript entries found.)" = "(Записи расшифровки не найдены.)";
|
|
|
+"No conference record found for this meeting." = "Не найдена запись конференции для этой встречи.";
|
|
|
+"No transcript found for this meeting." = "Не найдена расшифровка для этой встречи.";
|
|
|
+"Unable to create audio composition tracks." = "Не удалось создать дорожки аудиокомпозиции.";
|
|
|
+"Unable to create audio export session." = "Не удалось создать сеанс экспорта аудио.";
|
|
|
+"Audio mix export failed." = "Ошибка экспорта аудиомикса.";
|
|
|
+"No display available for system audio capture." = "Нет доступного дисплея для захвата системного аудио.";
|
|
|
+"Cannot add audio writer input." = "Не удается добавить вход аудиописателя.";
|
|
|
+
|
|
|
+/* MARK: - Ошибки API Google */
|
|
|
+"Google Meet returned an invalid response." = "«Мит» от Гугл вернул неверный ответ.";
|
|
|
+"Google Meet API error (%d): %@" = "Ошибка API «Мит» от Гугл (%d): %@";
|
|
|
+"Failed to parse Google Meet response: %@" = "Не удалось разобрать ответ «Мит» от Гугл: %@";
|
|
|
+"Google Calendar returned an invalid response." = "Календарь Гугл вернул неверный ответ.";
|
|
|
+"Google Calendar API error (%d): %@" = "Ошибка API Календаря Гугл (%d): %@";
|
|
|
+"Failed to parse Google Calendar events: %@" = "Не удалось разобрать события Календаря Гугл: %@";
|
|
|
+
|
|
|
+/* MARK: - Ошибки OpenAI */
|
|
|
+"OpenAI API key is missing. Set OPENAI_API_KEY in the environment or app key vault." = "Отсутствует ключ API OpenAI. Установите OPENAI_API_KEY в окружении или хранилище ключей приложения.";
|
|
|
+"Notes generation returned an invalid response." = "Генерация заметок вернула неверный ответ.";
|
|
|
+"Notes generation failed (%d): %@" = "Ошибка генерации заметок (%d): %@";
|
|
|
+"Notes generation returned empty text." = "Генерация заметок вернула пустой текст.";
|
|
|
+"OpenAI transcription returned an invalid response." = "Расшифровка OpenAI вернула неверный ответ.";
|
|
|
+"OpenAI transcription failed (%d): %@" = "Ошибка расшифровки OpenAI (%d): %@";
|
|
|
+"OpenAI transcription returned no text." = "Расшифровка OpenAI не вернула текст.";
|
|
|
+
|
|
|
+/* MARK: - Навигация и встроенный браузер */
|
|
|
+"Open sites in the in-app browser (back, forward, reload, address bar). OAuth and “Continue in browser” flows stay inside the app." = "Открывайте сайты во встроенном браузере (назад, вперед, перезагрузить, адресная строка). Потоки OAuth и «Продолжить в браузере» остаются внутри приложения.";
|
|
|
+"Open in app browser" = "Открыть в браузере приложения";
|
|
|
+"Meet help" = "Справка «Мит»";
|
|
|
+"Go" = "Перейти";
|
|
|
+"Back" = "Назад";
|
|
|
+"Forward" = "Вперед";
|
|
|
+"Reload" = "Перезагрузить";
|
|
|
+
|
|
|
+/* MARK: - Метки расписания и календаря */
|
|
|
+"Google Calendar" = "Календарь Гугл";
|
|
|
+"Untitled meeting" = "Встреча без названия";
|
|
|
+"Created event missing start/end." = "В созданном событии отсутствует начало/конец.";
|
|
|
+"Created event missing Meet/HTML link." = "В созданном событии отсутствует ссылка Мит/HTML.";
|
|
|
+
|
|
|
+/* MARK: - Учетная запись Google */
|
|
|
+"Google account" = "Учетная запись Гугл";
|
|
|
+"%@, Google account" = "%@, учетная запись Гугл";
|
|
|
+"Google User" = "Пользователь Гугл";
|
|
|
+
|
|
|
+/* MARK: - Присоединение к Zoom (неиспользуемые части) */
|
|
|
+"Meeting ID" = "ID встречи";
|
|
|
+"Enter meeting ID..." = "Введите ID встречи...";
|
|
|
+"Meeting Passcode" = "Код доступа к встрече";
|
|
|
+"Enter meeting passcode..." = "Введите код доступа к встрече...";
|
|
|
+
|
|
|
+/* MARK: - Платежный экран (альтернативные преимущества) */
|
|
|
+"Virtual backgrounds" = "Виртуальные фоны";
|
|
|
+"Tools for productivity" = "Инструменты для продуктивности";
|
|
|
+"24/7 support" = "Круглосуточная поддержка";
|
|
|
+
|
|
|
+/* MARK: - Говорящие в расшифровке */
|
|
|
+"You" = "Вы";
|
|
|
+
|
|
|
+/* MARK: - Ошибки связки ключей */
|
|
|
+"Failed to read OAuth tokens from Keychain." = "Не удалось прочитать токены OAuth из связки ключей.";
|
|
|
+"Keychain returned an invalid token payload." = "Связка ключей вернула неверную полезную нагрузку токена.";
|
|
|
+"Failed to update OAuth tokens in Keychain." = "Не удалось обновить токены OAuth в связке ключей.";
|
|
|
+"Failed to save OAuth tokens to Keychain." = "Не удалось сохранить токены OAuth в связку ключей.";
|
|
|
+"Failed to delete OAuth tokens from Keychain." = "Не удалось удалить токены OAuth из связки ключей.";
|
|
|
+"Unable to allocate audio buffer." = "Не удалось выделить аудиобуфер.";
|
|
|
+"Invalid revoke response." = "Неверный ответ отзыва.";
|
|
|
+"Token revoke failed with status %d." = "Ошибка отзыва токена со статусом %d.";
|
|
|
+
|
|
|
+/* MARK: - Диагностика ошибок */
|
|
|
+"Keychain: %d (%@)" = "Связка ключей: %d (%@)";
|
|
|
+"OSStatus: %d" = "OSStatus: %d";
|
|
|
+"Item: service=%@, account=%@" = "Элемент: служба=%@, аккаунт=%@";
|