mirror of
https://github.com/yeongpin/cursor-free-vip.git
synced 2025-08-03 04:57:36 +08:00
Added Russian Locale
Added a Russian locale and fixed my typo in readme
This commit is contained in:
parent
93f4f05ac4
commit
52348d565d
@ -168,7 +168,7 @@ max_timeout = 160
|
|||||||
| 如果遇到權限問題,請確保: | 此腳本以管理員身份運行 |
|
| 如果遇到權限問題,請確保: | 此腳本以管理員身份運行 |
|
||||||
|:--------------------------------------------------:|:------------------------------------------------:|
|
|:--------------------------------------------------:|:------------------------------------------------:|
|
||||||
| If you encounter permission issues, please ensure: | This script is run with administrator privileges |
|
| If you encounter permission issues, please ensure: | This script is run with administrator privileges |
|
||||||
| Error 'User is no authorized' | This means your account was banned for using temporary (disposal) mail. Ensure using a non-temporary mail service |
|
| Error 'User is not authorized' | This means your account was banned for using temporary (disposal) mail. Ensure using a non-temporary mail service |
|
||||||
## 🤩 Contribution | 貢獻
|
## 🤩 Contribution | 貢獻
|
||||||
|
|
||||||
歡迎提交 Issue 和 Pull Request!
|
歡迎提交 Issue 和 Pull Request!
|
||||||
|
@ -19,14 +19,15 @@
|
|||||||
"totally_reset": "Cursor Vollständig Zurücksetzen"
|
"totally_reset": "Cursor Vollständig Zurücksetzen"
|
||||||
},
|
},
|
||||||
"languages": {
|
"languages": {
|
||||||
"en": "English",
|
"en": "Englisch",
|
||||||
"zh_cn": "简体中文",
|
"zh_cn": "Vereinfachtes Chinesisch",
|
||||||
"zh_tw": "繁體中文",
|
"zh_tw": "Traditionelles Chinesisch",
|
||||||
"vi": "Tiếng Việt",
|
"vi": "Vietnamesisch",
|
||||||
"nl": "Nederlands",
|
"nl": "Niederländisch",
|
||||||
"de": "Deutsch",
|
"de": "Deutsch",
|
||||||
"fr": "Français",
|
"fr": "Französisch",
|
||||||
"pt": "Brazilian Portuguese"
|
"pt": "Brazilian Portuguese",
|
||||||
|
"ru": "Russisch"
|
||||||
},
|
},
|
||||||
"quit_cursor": {
|
"quit_cursor": {
|
||||||
"start": "Beginne Cursor zu Beenden",
|
"start": "Beginne Cursor zu Beenden",
|
||||||
|
@ -25,7 +25,9 @@
|
|||||||
"vi": "Vietnamese",
|
"vi": "Vietnamese",
|
||||||
"nl": "Dutch",
|
"nl": "Dutch",
|
||||||
"de": "German",
|
"de": "German",
|
||||||
"fr": "French"
|
"fr": "French",
|
||||||
|
"pt": "Portuguese",
|
||||||
|
"ru": "Russian"
|
||||||
},
|
},
|
||||||
"quit_cursor": {
|
"quit_cursor": {
|
||||||
"start": "Start Quitting Cursor",
|
"start": "Start Quitting Cursor",
|
||||||
|
@ -19,14 +19,15 @@
|
|||||||
"totally_reset": "Réinitialisation Complète de Cursor"
|
"totally_reset": "Réinitialisation Complète de Cursor"
|
||||||
},
|
},
|
||||||
"languages": {
|
"languages": {
|
||||||
"en": "English",
|
"en": "Anglais",
|
||||||
"zh_cn": "简体中文",
|
"zh_cn": "简体中文",
|
||||||
"zh_tw": "繁體中文",
|
"zh_tw": "繁體中文",
|
||||||
"vi": "Tiếng Việt",
|
"vi": "Vietnamien",
|
||||||
"nl": "Nederlands",
|
"nl": "Néerlandais",
|
||||||
"de": "Deutsch",
|
"de": "Allemand",
|
||||||
"fr": "Français",
|
"fr": "Français",
|
||||||
"pt": "Brazilian Portuguese"
|
"pt": "Brazilian Portuguese",
|
||||||
|
"ru": "Russe"
|
||||||
},
|
},
|
||||||
"quit_cursor": {
|
"quit_cursor": {
|
||||||
"start": "Début de la Fermeture de Cursor",
|
"start": "Début de la Fermeture de Cursor",
|
||||||
|
@ -19,14 +19,15 @@
|
|||||||
"totally_reset": "Cursor volledig resetten"
|
"totally_reset": "Cursor volledig resetten"
|
||||||
},
|
},
|
||||||
"languages": {
|
"languages": {
|
||||||
"en": "English",
|
"en": "Engels",
|
||||||
"zh_cn": "简体中文",
|
"zh_cn": "简体中文",
|
||||||
"zh_tw": "繁體中文",
|
"zh_tw": "繁體中文",
|
||||||
"vi": "Tiếng Việt",
|
"vi": "Vietnamees",
|
||||||
"nl": "Nederlands",
|
"nl": "Nederlands",
|
||||||
"de": "Deutsch",
|
"de": "Duits",
|
||||||
"fr": "Français",
|
"fr": "Frans",
|
||||||
"pt": "Brazilian Portuguese"
|
"pt": "Brazilian Portuguese",
|
||||||
|
"ru": "Russisch"
|
||||||
},
|
},
|
||||||
"quit_cursor": {
|
"quit_cursor": {
|
||||||
"start": "Start met afsluiten van Cursor",
|
"start": "Start met afsluiten van Cursor",
|
||||||
|
@ -20,13 +20,14 @@
|
|||||||
},
|
},
|
||||||
"languages": {
|
"languages": {
|
||||||
"en": "Inglês",
|
"en": "Inglês",
|
||||||
"zh_cn": "Chinês Simplificado",
|
"zh_cn": "简体中文",
|
||||||
"zh_tw": "Chinês Tradicional",
|
"zh_tw": "繁體中文",
|
||||||
"vi": "Vietnamita",
|
"vi": "Vietnamita",
|
||||||
"nl": "Holandês",
|
"nl": "Holandês",
|
||||||
"de": "Alemão",
|
"de": "Alemão",
|
||||||
"fr": "Francês",
|
"fr": "Francês",
|
||||||
"pt": "Português do Brasil"
|
"pt": "Português do Brasil",
|
||||||
|
"ru": "Russo"
|
||||||
},
|
},
|
||||||
"quit_cursor": {
|
"quit_cursor": {
|
||||||
"start": "Iniciando fechamento do Cursor",
|
"start": "Iniciando fechamento do Cursor",
|
||||||
|
383
locales/ru.json
Normal file
383
locales/ru.json
Normal file
@ -0,0 +1,383 @@
|
|||||||
|
{
|
||||||
|
"menu": {
|
||||||
|
"title": "Доступные опции",
|
||||||
|
"exit": "Выйти из программы",
|
||||||
|
"reset": "Сбросить ID машины",
|
||||||
|
"register": "Зарегистрировать новый аккаунт Cursor",
|
||||||
|
"register_google": "Зарегистрироваться через Google",
|
||||||
|
"register_github": "Зарегистрироваться через GitHub",
|
||||||
|
"register_manual": "Зарегистрировать Cursor используя свою почту",
|
||||||
|
"quit": "Закрыть приложение Cursor",
|
||||||
|
"select_language": "Выбрать язык",
|
||||||
|
"input_choice": "Пожалуйста, введите ваш выбор ({choices})",
|
||||||
|
"invalid_choice": "Неверный выбор. Пожалуйста, введите число из {choices}",
|
||||||
|
"program_terminated": "Программа была завершена пользователем",
|
||||||
|
"error_occurred": "Произошла ошибка: {error}. Пожалуйста, попробуйте снова",
|
||||||
|
"press_enter": "Нажмите Enter для выхода",
|
||||||
|
"disable_auto_update": "Отключить автоматическое обновление Cursor",
|
||||||
|
"lifetime_access_enabled": "ВКЛЮЧЕН ПОЖИЗНЕННЫЙ ДОСТУП",
|
||||||
|
"totally_reset": "Полностью сбросить Cursor"
|
||||||
|
},
|
||||||
|
"languages": {
|
||||||
|
"en": "Английский",
|
||||||
|
"zh_cn": "Упрощенный китайский",
|
||||||
|
"zh_tw": "Традиционный китайский",
|
||||||
|
"vi": "Вьетнамский",
|
||||||
|
"nl": "Нидерландский",
|
||||||
|
"de": "Немецкий",
|
||||||
|
"fr": "Французский",
|
||||||
|
"pt": "Бразильский португальский",
|
||||||
|
"ru": "Русский"
|
||||||
|
},
|
||||||
|
"quit_cursor": {
|
||||||
|
"start": "Начало закрытия Cursor",
|
||||||
|
"no_process": "Нет запущенных процессов Cursor",
|
||||||
|
"terminating": "Завершение процесса {pid}",
|
||||||
|
"waiting": "Ожидание завершения процесса",
|
||||||
|
"success": "Все процессы Cursor закрыты",
|
||||||
|
"timeout": "Таймаут процесса: {pids}",
|
||||||
|
"error": "Произошла ошибка: {error}"
|
||||||
|
},
|
||||||
|
"reset": {
|
||||||
|
"title": "Инструмент сброса ID машины Cursor",
|
||||||
|
"checking": "Проверка конфигурационного файла",
|
||||||
|
"not_found": "Конфигурационный файл не найден",
|
||||||
|
"no_permission": "Невозможно прочитать или записать конфигурационный файл, проверьте права доступа",
|
||||||
|
"reading": "Чтение текущей конфигурации",
|
||||||
|
"creating_backup": "Создание резервной копии конфигурации",
|
||||||
|
"backup_exists": "Резервный файл уже существует, пропускаем шаг резервного копирования",
|
||||||
|
"generating": "Генерация нового ID машины",
|
||||||
|
"saving_json": "Сохранение новой конфигурации в JSON",
|
||||||
|
"success": "ID машины успешно сброшен",
|
||||||
|
"new_id": "Новый ID машины",
|
||||||
|
"permission_error": "Ошибка прав доступа: {error}",
|
||||||
|
"run_as_admin": "Пожалуйста, запустите программу от имени администратора",
|
||||||
|
"process_error": "Ошибка процесса сброса: {error}",
|
||||||
|
"updating_sqlite": "Обновление базы данных SQLite",
|
||||||
|
"updating_pair": "Обновление пары ключ-значение",
|
||||||
|
"sqlite_success": "База данных SQLite успешно обновлена",
|
||||||
|
"sqlite_error": "Ошибка обновления базы данных SQLite: {error}",
|
||||||
|
"press_enter": "Нажмите Enter для выхода",
|
||||||
|
"unsupported_os": "Неподдерживаемая ОС: {os}",
|
||||||
|
"linux_path_not_found": "Путь Linux не найден",
|
||||||
|
"updating_system_ids": "Обновление системных ID",
|
||||||
|
"system_ids_updated": "Системные ID успешно обновлены",
|
||||||
|
"system_ids_update_failed": "Ошибка обновления системных ID: {error}",
|
||||||
|
"windows_guid_updated": "Windows GUID успешно обновлен",
|
||||||
|
"windows_permission_denied": "Отказано в доступе Windows",
|
||||||
|
"windows_guid_update_failed": "Ошибка обновления Windows GUID",
|
||||||
|
"macos_uuid_updated": "macOS UUID успешно обновлен",
|
||||||
|
"plutil_command_failed": "Ошибка команды plutil",
|
||||||
|
"start_patching": "Начало патчинга getMachineId",
|
||||||
|
"macos_uuid_update_failed": "Ошибка обновления macOS UUID",
|
||||||
|
"current_version": "Текущая версия Cursor: {version}",
|
||||||
|
"patch_completed": "Патчинг getMachineId завершен",
|
||||||
|
"patch_failed": "Ошибка патчинга getMachineId: {error}",
|
||||||
|
"version_check_passed": "Проверка версии Cursor пройдена",
|
||||||
|
"file_modified": "Файл изменен",
|
||||||
|
"version_less_than_0_45": "Версия Cursor < 0.45.0, пропускаем патчинг getMachineId",
|
||||||
|
"detecting_version": "Определение версии Cursor",
|
||||||
|
"patching_getmachineid": "Патчинг getMachineId",
|
||||||
|
"version_greater_than_0_45": "Версия Cursor >= 0.45.0, патчинг getMachineId",
|
||||||
|
"permission_denied": "Отказано в доступе: {error}",
|
||||||
|
"backup_created": "Резервная копия создана",
|
||||||
|
"update_success": "Обновление успешно",
|
||||||
|
"update_failed": "Ошибка обновления: {error}",
|
||||||
|
"windows_machine_guid_updated": "Windows Machine GUID успешно обновлен",
|
||||||
|
"reading_package_json": "Чтение package.json {path}",
|
||||||
|
"invalid_json_object": "Неверный JSON объект",
|
||||||
|
"no_version_field": "Поле версии не найдено в package.json",
|
||||||
|
"version_field_empty": "Поле версии пусто",
|
||||||
|
"invalid_version_format": "Неверный формат версии: {version}",
|
||||||
|
"found_version": "Найдена версия: {version}",
|
||||||
|
"version_parse_error": "Ошибка разбора версии: {error}",
|
||||||
|
"package_not_found": "Package.json не найден: {path}",
|
||||||
|
"check_version_failed": "Ошибка проверки версии: {error}",
|
||||||
|
"stack_trace": "Трассировка стека",
|
||||||
|
"version_too_low": "Версия Cursor слишком низкая: {version} < 0.45.0"
|
||||||
|
},
|
||||||
|
"register": {
|
||||||
|
"title": "Инструмент регистрации Cursor",
|
||||||
|
"start": "Запуск процесса регистрации...",
|
||||||
|
"handling_turnstile": "Обработка проверки безопасности...",
|
||||||
|
"retry_verification": "Повторная попытка проверки...",
|
||||||
|
"detect_turnstile": "Проверка безопасности...",
|
||||||
|
"verification_success": "Проверка безопасности успешна",
|
||||||
|
"starting_browser": "Открытие браузера...",
|
||||||
|
"form_success": "Форма успешно отправлена",
|
||||||
|
"browser_started": "Браузер успешно открыт",
|
||||||
|
"waiting_for_second_verification": "Ожидание проверки email...",
|
||||||
|
"waiting_for_verification_code": "Ожидание кода подтверждения...",
|
||||||
|
"password_success": "Пароль успешно установлен",
|
||||||
|
"password_error": "Не удалось установить пароль: {error}. Пожалуйста, попробуйте снова",
|
||||||
|
"waiting_for_page_load": "Загрузка страницы...",
|
||||||
|
"first_verification_passed": "Первичная проверка успешна",
|
||||||
|
"mailbox": "Успешный доступ к почтовому ящику",
|
||||||
|
"register_start": "Начать регистрацию",
|
||||||
|
"form_submitted": "Форма отправлена, начало проверки...",
|
||||||
|
"filling_form": "Заполнение формы",
|
||||||
|
"visiting_url": "Переход по URL",
|
||||||
|
"basic_info": "Основная информация отправлена",
|
||||||
|
"handle_turnstile": "Обработка Turnstile",
|
||||||
|
"no_turnstile": "Turnstile не обнаружен",
|
||||||
|
"turnstile_passed": "Turnstile пройден",
|
||||||
|
"verification_start": "Начало получения кода подтверждения",
|
||||||
|
"verification_timeout": "Таймаут получения кода подтверждения",
|
||||||
|
"verification_not_found": "Код подтверждения не найден",
|
||||||
|
"try_get_code": "Попытка | {attempt} Получение кода подтверждения | Осталось времени: {time}с",
|
||||||
|
"get_account": "Получение информации об аккаунте",
|
||||||
|
"get_token": "Получение токена сессии Cursor",
|
||||||
|
"token_success": "Токен успешно получен",
|
||||||
|
"token_attempt": "Попытка | {attempt} раз получить токен | Повторная попытка через {time}с",
|
||||||
|
"token_max_attempts": "Достигнуто максимальное количество попыток ({max}) | Не удалось получить токен",
|
||||||
|
"token_failed": "Ошибка получения токена: {error}",
|
||||||
|
"account_error": "Ошибка получения информации об аккаунте: {error}",
|
||||||
|
"press_enter": "Нажмите Enter для выхода",
|
||||||
|
"browser_start": "Запуск браузера",
|
||||||
|
"open_mailbox": "Открытие страницы почтового ящика",
|
||||||
|
"email_error": "Не удалось получить email адрес",
|
||||||
|
"setup_error": "Ошибка настройки email: {error}",
|
||||||
|
"start_getting_verification_code": "Начало получения кода подтверждения, попытка через 60с",
|
||||||
|
"get_verification_code_timeout": "Таймаут получения кода подтверждения",
|
||||||
|
"get_verification_code_success": "Код подтверждения успешно получен",
|
||||||
|
"try_get_verification_code": "Попытка | {attempt} Получение кода подтверждения | Осталось времени: {remaining_time}с",
|
||||||
|
"verification_code_filled": "Код подтверждения введен",
|
||||||
|
"login_success_and_jump_to_settings_page": "Успешный вход и переход на страницу настроек",
|
||||||
|
"detect_login_page": "Обнаружена страница входа, начало входа...",
|
||||||
|
"cursor_registration_completed": "Регистрация Cursor завершена!",
|
||||||
|
"set_password": "Установка пароля",
|
||||||
|
"basic_info_submitted": "Основная информация отправлена",
|
||||||
|
"cursor_auth_info_updated": "Информация авторизации Cursor обновлена",
|
||||||
|
"cursor_auth_info_update_failed": "Ошибка обновления информации авторизации Cursor",
|
||||||
|
"reset_machine_id": "Сброс ID машины",
|
||||||
|
"account_info_saved": "Информация об аккаунте сохранена",
|
||||||
|
"save_account_info_failed": "Ошибка сохранения информации об аккаунте",
|
||||||
|
"get_email_address": "Получение email адреса",
|
||||||
|
"update_cursor_auth_info": "Обновление информации авторизации Cursor",
|
||||||
|
"register_process_error": "Ошибка процесса регистрации: {error}",
|
||||||
|
"setting_password": "Установка пароля",
|
||||||
|
"manual_code_input": "Ручной ввод кода",
|
||||||
|
"manual_email_input": "Ручной ввод email",
|
||||||
|
"password": "Пароль",
|
||||||
|
"first_name": "Имя",
|
||||||
|
"last_name": "Фамилия",
|
||||||
|
"exit_signal": "Сигнал выхода",
|
||||||
|
"email_address": "Email адрес",
|
||||||
|
"config_created": "Конфигурация создана",
|
||||||
|
"verification_failed": "Проверка не пройдена",
|
||||||
|
"verification_error": "Ошибка проверки: {error}",
|
||||||
|
"config_option_added": "Опция конфигурации добавлена: {option}",
|
||||||
|
"config_updated": "Конфигурация обновлена",
|
||||||
|
"password_submitted": "Пароль отправлен",
|
||||||
|
"total_usage": "Общее использование: {usage}",
|
||||||
|
"setting_on_password": "Установка пароля",
|
||||||
|
"getting_code": "Получение кода подтверждения, попытка через 60с"
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"title": "Менеджер авторизации Cursor",
|
||||||
|
"checking_auth": "Проверка файла авторизации",
|
||||||
|
"auth_not_found": "Файл авторизации не найден",
|
||||||
|
"auth_file_error": "Ошибка файла авторизации: {error}",
|
||||||
|
"reading_auth": "Чтение файла авторизации",
|
||||||
|
"updating_auth": "Обновление информации авторизации",
|
||||||
|
"auth_updated": "Информация авторизации успешно обновлена",
|
||||||
|
"auth_update_failed": "Ошибка обновления информации авторизации: {error}",
|
||||||
|
"auth_file_created": "Файл авторизации создан",
|
||||||
|
"auth_file_create_failed": "Ошибка создания файла авторизации: {error}",
|
||||||
|
"press_enter": "Нажмите Enter для выхода",
|
||||||
|
"reset_machine_id": "Сброс ID машины",
|
||||||
|
"database_connection_closed": "Соединение с базой данных закрыто",
|
||||||
|
"database_updated_successfully": "База данных успешно обновлена",
|
||||||
|
"connected_to_database": "Подключено к базе данных",
|
||||||
|
"updating_pair": "Обновление пары ключ-значение",
|
||||||
|
"db_not_found": "Файл базы данных не найден по пути: {path}",
|
||||||
|
"db_permission_error": "Невозможно получить доступ к файлу базы данных. Проверьте права доступа",
|
||||||
|
"db_connection_error": "Ошибка подключения к базе данных: {error}"
|
||||||
|
},
|
||||||
|
"control": {
|
||||||
|
"generate_email": "Генерация нового email",
|
||||||
|
"blocked_domain": "Заблокированный домен",
|
||||||
|
"select_domain": "Выбор случайного домена",
|
||||||
|
"copy_email": "Копирование email адреса",
|
||||||
|
"enter_mailbox": "Вход в почтовый ящик",
|
||||||
|
"refresh_mailbox": "Обновление почтового ящика",
|
||||||
|
"check_verification": "Проверка кода подтверждения",
|
||||||
|
"verification_found": "Код подтверждения найден",
|
||||||
|
"verification_not_found": "Код подтверждения не найден",
|
||||||
|
"browser_error": "Ошибка управления браузером: {error}",
|
||||||
|
"navigation_error": "Ошибка навигации: {error}",
|
||||||
|
"email_copy_error": "Ошибка копирования email: {error}",
|
||||||
|
"mailbox_error": "Ошибка почтового ящика: {error}",
|
||||||
|
"token_saved_to_file": "Токен сохранен в cursor_tokens.txt",
|
||||||
|
"navigate_to": "Переход на {url}",
|
||||||
|
"generate_email_success": "Email успешно сгенерирован",
|
||||||
|
"select_email_domain": "Выбор домена email",
|
||||||
|
"select_email_domain_success": "Домен email успешно выбран",
|
||||||
|
"get_email_name": "Получение имени email",
|
||||||
|
"get_email_name_success": "Имя email успешно получено",
|
||||||
|
"get_email_address": "Получение email адреса",
|
||||||
|
"get_email_address_success": "Email адрес успешно получен",
|
||||||
|
"enter_mailbox_success": "Успешный вход в почтовый ящик",
|
||||||
|
"found_verification_code": "Найден код подтверждения",
|
||||||
|
"get_cursor_session_token": "Получение токена сессии Cursor",
|
||||||
|
"get_cursor_session_token_success": "Токен сессии Cursor успешно получен",
|
||||||
|
"get_cursor_session_token_failed": "Ошибка получения токена сессии Cursor",
|
||||||
|
"save_token_failed": "Ошибка сохранения токена",
|
||||||
|
"database_updated_successfully": "База данных успешно обновлена",
|
||||||
|
"database_connection_closed": "Соединение с базой данных закрыто",
|
||||||
|
"no_valid_verification_code": "Нет действительного кода подтверждения"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"starting_browser": "Запуск браузера",
|
||||||
|
"visiting_site": "Переход на сайты почтовых доменов",
|
||||||
|
"create_success": "Email успешно создан",
|
||||||
|
"create_failed": "Не удалось создать email",
|
||||||
|
"create_error": "Ошибка создания email: {error}",
|
||||||
|
"refreshing": "Обновление email",
|
||||||
|
"refresh_success": "Email успешно обновлен",
|
||||||
|
"refresh_error": "Ошибка обновления email: {error}",
|
||||||
|
"refresh_button_not_found": "Кнопка обновления не найдена",
|
||||||
|
"verification_found": "Проверка найдена",
|
||||||
|
"verification_not_found": "Проверка не найдена",
|
||||||
|
"verification_error": "Ошибка проверки: {error}",
|
||||||
|
"verification_code_found": "Код подтверждения найден",
|
||||||
|
"verification_code_not_found": "Код подтверждения не найден",
|
||||||
|
"verification_code_error": "Ошибка кода подтверждения: {error}",
|
||||||
|
"address": "Email адрес",
|
||||||
|
"all_domains_blocked": "Все домены заблокированы, переключение сервиса",
|
||||||
|
"no_available_domains_after_filtering": "Нет доступных доменов после фильтрации",
|
||||||
|
"switching_service": "Переключение на сервис {service}",
|
||||||
|
"domains_list_error": "Не удалось получить список доменов: {error}",
|
||||||
|
"failed_to_get_available_domains": "Не удалось получить доступные домены",
|
||||||
|
"domains_excluded": "Исключенные домены: {domains}",
|
||||||
|
"failed_to_create_account": "Не удалось создать аккаунт",
|
||||||
|
"account_creation_error": "Ошибка создания аккаунта: {error}",
|
||||||
|
"blocked_domains": "Заблокированные домены: {domains}",
|
||||||
|
"blocked_domains_loaded": "Загружены заблокированные домены: {count}",
|
||||||
|
"blocked_domains_loaded_error": "Ошибка загрузки заблокированных доменов: {error}",
|
||||||
|
"blocked_domains_loaded_success": "Заблокированные домены успешно загружены",
|
||||||
|
"blocked_domains_loaded_timeout": "Таймаут загрузки заблокированных доменов: {timeout}с",
|
||||||
|
"blocked_domains_loaded_timeout_error": "Ошибка таймаута загрузки заблокированных доменов: {error}",
|
||||||
|
"available_domains_loaded": "Загружены доступные домены: {count}",
|
||||||
|
"domains_filtered": "Отфильтрованы домены: {count}",
|
||||||
|
"trying_to_create_email": "Попытка создания email: {email}",
|
||||||
|
"domain_blocked": "Домен заблокирован: {domain}"
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"title": "Отключение автоматического обновления Cursor",
|
||||||
|
"disable_success": "Автоматическое обновление успешно отключено",
|
||||||
|
"disable_failed": "Ошибка отключения автоматического обновления: {error}",
|
||||||
|
"press_enter": "Нажмите Enter для выхода",
|
||||||
|
"start_disable": "Начало отключения автоматического обновления",
|
||||||
|
"killing_processes": "Завершение процессов",
|
||||||
|
"processes_killed": "Процессы завершены",
|
||||||
|
"removing_directory": "Удаление директории",
|
||||||
|
"directory_removed": "Директория удалена",
|
||||||
|
"creating_block_file": "Создание файла блокировки",
|
||||||
|
"block_file_created": "Файл блокировки создан"
|
||||||
|
},
|
||||||
|
"updater": {
|
||||||
|
"checking": "Проверка обновлений...",
|
||||||
|
"new_version_available": "Доступна новая версия! (Текущая: {current}, Последняя: {latest})",
|
||||||
|
"updating": "Обновление до последней версии. Программа перезапустится автоматически.",
|
||||||
|
"up_to_date": "У вас установлена последняя версия.",
|
||||||
|
"check_failed": "Не удалось проверить обновления: {error}",
|
||||||
|
"continue_anyway": "Продолжение работы с текущей версией...",
|
||||||
|
"update_confirm": "Хотите обновить до последней версии? (Y/n)",
|
||||||
|
"update_skipped": "Обновление пропущено.",
|
||||||
|
"invalid_choice": "Неверный выбор. Пожалуйста, введите 'Y' или 'n'.",
|
||||||
|
"development_version": "Версия разработки {current} > {latest}",
|
||||||
|
"changelog_title": "Журнал изменений"
|
||||||
|
},
|
||||||
|
"totally_reset": {
|
||||||
|
"title": "Полный сброс Cursor",
|
||||||
|
"checking_config": "Проверка конфигурационного файла",
|
||||||
|
"config_not_found": "Конфигурационный файл не найден",
|
||||||
|
"no_permission": "Невозможно прочитать или записать конфигурационный файл, проверьте права доступа",
|
||||||
|
"reading_config": "Чтение текущей конфигурации",
|
||||||
|
"creating_backup": "Создание резервной копии конфигурации",
|
||||||
|
"backup_exists": "Резервный файл уже существует, пропускаем шаг резервного копирования",
|
||||||
|
"generating_new_machine_id": "Генерация нового ID машины",
|
||||||
|
"saving_new_config": "Сохранение новой конфигурации в JSON",
|
||||||
|
"success": "Cursor успешно сброшен",
|
||||||
|
"error": "Ошибка сброса Cursor: {error}",
|
||||||
|
"press_enter": "Нажмите Enter для выхода",
|
||||||
|
"reset_machine_id": "Сброс ID машины",
|
||||||
|
"database_connection_closed": "Соединение с базой данных закрыто",
|
||||||
|
"database_updated_successfully": "База данных успешно обновлена",
|
||||||
|
"connected_to_database": "Подключено к базе данных",
|
||||||
|
"updating_pair": "Обновление пары ключ-значение",
|
||||||
|
"db_not_found": "Файл базы данных не найден по пути: {path}",
|
||||||
|
"db_permission_error": "Невозможно получить доступ к файлу базы данных. Проверьте права доступа",
|
||||||
|
"db_connection_error": "Ошибка подключения к базе данных: {error}",
|
||||||
|
"feature_title": "ФУНКЦИИ",
|
||||||
|
"feature_1": "Полное удаление настроек и конфигураций Cursor AI",
|
||||||
|
"feature_2": "Очистка всех кэшированных данных, включая историю AI и промпты",
|
||||||
|
"feature_3": "Сброс ID машины для обхода обнаружения пробной версии",
|
||||||
|
"feature_4": "Создание новых случайных идентификаторов машины",
|
||||||
|
"feature_5": "Удаление пользовательских расширений и настроек",
|
||||||
|
"feature_6": "Сброс информации о пробной версии и данных активации",
|
||||||
|
"feature_7": "Глубокий поиск скрытых файлов лицензии и пробной версии",
|
||||||
|
"feature_8": "Безопасное сохранение файлов и приложений, не относящихся к Cursor",
|
||||||
|
"feature_9": "Совместимость с Windows, macOS и Linux",
|
||||||
|
"disclaimer_title": "ПРЕДУПРЕЖДЕНИЕ",
|
||||||
|
"disclaimer_1": "Этот инструмент навсегда удалит все настройки Cursor AI,",
|
||||||
|
"disclaimer_2": "конфигурации и кэшированные данные. Это действие нельзя отменить.",
|
||||||
|
"disclaimer_3": "Ваши файлы кода НЕ будут затронуты, и инструмент разработан",
|
||||||
|
"disclaimer_4": "только для файлов редактора Cursor AI и механизмов обнаружения пробной версии.",
|
||||||
|
"disclaimer_5": "Другие приложения на вашей системе не будут затронуты.",
|
||||||
|
"disclaimer_6": "После запуска этого инструмента вам нужно будет настроить Cursor AI заново.",
|
||||||
|
"disclaimer_7": "Используйте на свой страх и риск",
|
||||||
|
"confirm_title": "Вы уверены, что хотите продолжить?",
|
||||||
|
"confirm_1": "Это действие удалит все настройки Cursor AI,",
|
||||||
|
"confirm_2": "конфигурации и кэшированные данные. Это действие нельзя отменить.",
|
||||||
|
"confirm_3": "Ваши файлы кода НЕ будут затронуты, и инструмент разработан",
|
||||||
|
"confirm_4": "только для файлов редактора Cursor AI и механизмов обнаружения пробной версии.",
|
||||||
|
"confirm_5": "Другие приложения на вашей системе не будут затронуты.",
|
||||||
|
"confirm_6": "После запуска этого инструмента вам нужно будет настроить Cursor AI заново.",
|
||||||
|
"confirm_7": "Используйте на свой страх и риск",
|
||||||
|
"invalid_choice": "Пожалуйста, введите 'Y' или 'n'",
|
||||||
|
"skipped_for_safety": "Пропущено для безопасности (не относится к Cursor): {path}",
|
||||||
|
"deleted": "Удалено: {path}",
|
||||||
|
"error_deleting": "Ошибка удаления {path}: {error}",
|
||||||
|
"not_found": "Файл не найден: {path}",
|
||||||
|
"resetting_machine_id": "Сброс идентификаторов машины для обхода обнаружения пробной версии...",
|
||||||
|
"created_machine_id": "Создан новый ID машины: {path}",
|
||||||
|
"error_creating_machine_id": "Ошибка создания файла ID машины {path}: {error}",
|
||||||
|
"error_searching": "Ошибка поиска файлов в {path}: {error}",
|
||||||
|
"created_extended_trial_info": "Создана новая расширенная информация о пробной версии: {path}",
|
||||||
|
"error_creating_trial_info": "Ошибка создания файла информации о пробной версии {path}: {error}",
|
||||||
|
"resetting_cursor_ai_editor": "Сброс редактора Cursor AI... Пожалуйста, подождите.",
|
||||||
|
"reset_cancelled": "Сброс отменен. Выход без внесения изменений.",
|
||||||
|
"windows_machine_id_modification_skipped": "Изменение ID машины Windows пропущено: {error}",
|
||||||
|
"linux_machine_id_modification_skipped": "Изменение machine-id Linux пропущено: {error}",
|
||||||
|
"note_complete_machine_id_reset_may_require_running_as_administrator": "Примечание: полный сброс ID машины может потребовать запуска от имени администратора",
|
||||||
|
"note_complete_system_machine_id_reset_may_require_sudo_privileges": "Примечание: полный сброс системного machine-id может потребовать прав sudo",
|
||||||
|
"windows_registry_instructions": "📝 ПРИМЕЧАНИЕ: Для полного сброса в Windows может потребоваться очистка записей реестра.",
|
||||||
|
"windows_registry_instructions_2": " Запустите 'regedit' и найдите ключи, содержащие 'Cursor' или 'CursorAI' в HKEY_CURRENT_USER\\Software\\ и удалите их.\n",
|
||||||
|
"reset_log_1": "Cursor AI полностью сброшен и обнаружение пробной версии обойдено!",
|
||||||
|
"reset_log_2": "Пожалуйста, перезагрузите систему для применения изменений.",
|
||||||
|
"reset_log_3": "Вам нужно будет переустановить Cursor AI, и теперь у вас должен быть новый пробный период.",
|
||||||
|
"reset_log_4": "Для лучших результатов рекомендуется также:",
|
||||||
|
"reset_log_5": "Использовать другой email адрес при регистрации нового пробного периода",
|
||||||
|
"reset_log_6": "Если возможно, использовать VPN для изменения IP адреса",
|
||||||
|
"reset_log_7": "Очистить куки и кэш браузера перед посещением сайта Cursor AI",
|
||||||
|
"reset_log_8": "Если проблемы сохраняются, попробуйте установить Cursor AI в другое место",
|
||||||
|
"reset_log_9": "Если вы столкнулись с проблемами, перейдите на Github Issue Tracker и создайте issue на https://github.com/yeongpin/cursor-free-vip/issues",
|
||||||
|
"unexpected_error": "Произошла непредвиденная ошибка: {error}",
|
||||||
|
"report_issue": "Пожалуйста, сообщите об этой проблеме на Github Issue Tracker на https://github.com/yeongpin/cursor-free-vip/issues",
|
||||||
|
"keyboard_interrupt": "Процесс прерван пользователем. Выход...",
|
||||||
|
"return_to_main_menu": "Возврат в главное меню...",
|
||||||
|
"process_interrupted": "Процесс прерван. Выход...",
|
||||||
|
"press_enter_to_return_to_main_menu": "Нажмите Enter для возврата в главное меню...",
|
||||||
|
"removing_known": "Удаление известных файлов лицензии/пробной версии",
|
||||||
|
"performing_deep_scan": "Выполнение глубокого поиска дополнительных файлов лицензии/пробной версии",
|
||||||
|
"found_additional_potential_license_trial_files": "Найдено {count} дополнительных потенциальных файлов лицензии/пробной версии",
|
||||||
|
"checking_for_electron_localstorage_files": "Проверка файлов localStorage Electron",
|
||||||
|
"no_additional_license_trial_files_found_in_deep_scan": "Дополнительные файлы лицензии/пробной версии не найдены при глубоком поиске",
|
||||||
|
"removing_electron_localstorage_files": "Удаление файлов localStorage Electron",
|
||||||
|
"electron_localstorage_files_removed": "Файлы localStorage Electron удалены",
|
||||||
|
"electron_localstorage_files_removal_error": "Ошибка удаления файлов localStorage Electron: {error}",
|
||||||
|
"removing_electron_localstorage_files_completed": "Удаление файлов localStorage Electron завершено"
|
||||||
|
}
|
||||||
|
}
|
@ -20,11 +20,12 @@
|
|||||||
"en": "English",
|
"en": "English",
|
||||||
"zh_cn": "简体中文",
|
"zh_cn": "简体中文",
|
||||||
"zh_tw": "繁體中文",
|
"zh_tw": "繁體中文",
|
||||||
"vi": "Tiếng Việt",
|
"vi": "Vietnamese",
|
||||||
"nl": "Dutch",
|
"nl": "Dutch",
|
||||||
"de": "Germa",
|
"de": "German",
|
||||||
"fr": "French",
|
"fr": "French",
|
||||||
"pt": "Brazilian Portuguese"
|
"pt": "Brazilian Portuguese",
|
||||||
|
"ru": "Russian"
|
||||||
},
|
},
|
||||||
"quit_cursor": {
|
"quit_cursor": {
|
||||||
"start": "Bắt Đầu Thoát Cursor",
|
"start": "Bắt Đầu Thoát Cursor",
|
||||||
|
@ -26,7 +26,8 @@
|
|||||||
"nl": "Dutch",
|
"nl": "Dutch",
|
||||||
"de": "German",
|
"de": "German",
|
||||||
"fr": "French",
|
"fr": "French",
|
||||||
"pt": "Brazilian Portuguese"
|
"pt": "Portuguese",
|
||||||
|
"ru": "Russian"
|
||||||
},
|
},
|
||||||
"quit_cursor": {
|
"quit_cursor": {
|
||||||
"start": "开始退出 Cursor",
|
"start": "开始退出 Cursor",
|
||||||
|
@ -24,7 +24,8 @@
|
|||||||
"nl": "Dutch",
|
"nl": "Dutch",
|
||||||
"de": "German",
|
"de": "German",
|
||||||
"fr": "French",
|
"fr": "French",
|
||||||
"pt": "Brazilian Portuguese"
|
"pt": "Portuguese",
|
||||||
|
"ru": "Russian"
|
||||||
},
|
},
|
||||||
"quit_cursor": {
|
"quit_cursor": {
|
||||||
"start": "開始退出 Cursor",
|
"start": "開始退出 Cursor",
|
||||||
|
7
main.py
7
main.py
@ -108,6 +108,7 @@ class Translator:
|
|||||||
0x0404: 'zh_tw', # Traditional Chinese
|
0x0404: 'zh_tw', # Traditional Chinese
|
||||||
0x0804: 'zh_cn', # Simplified Chinese
|
0x0804: 'zh_cn', # Simplified Chinese
|
||||||
0x0422: 'vi', # Vietnamese
|
0x0422: 'vi', # Vietnamese
|
||||||
|
0x0419: 'ru', # Russian
|
||||||
}
|
}
|
||||||
|
|
||||||
return language_map.get(layout_id, 'en')
|
return language_map.get(layout_id, 'en')
|
||||||
@ -141,9 +142,9 @@ class Translator:
|
|||||||
return 'fr'
|
return 'fr'
|
||||||
elif system_locale.startswith('pt'):
|
elif system_locale.startswith('pt'):
|
||||||
return 'pt'
|
return 'pt'
|
||||||
|
elif system_locale.startswith('ru'):
|
||||||
|
return 'ru'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Try to get language from LANG environment variable as fallback
|
# Try to get language from LANG environment variable as fallback
|
||||||
env_lang = os.getenv('LANG', '').lower()
|
env_lang = os.getenv('LANG', '').lower()
|
||||||
if 'tw' in env_lang or 'hk' in env_lang:
|
if 'tw' in env_lang or 'hk' in env_lang:
|
||||||
@ -160,6 +161,8 @@ class Translator:
|
|||||||
return 'fr'
|
return 'fr'
|
||||||
elif 'pt' in env_lang:
|
elif 'pt' in env_lang:
|
||||||
return 'pt'
|
return 'pt'
|
||||||
|
elif 'ru' in env_lang:
|
||||||
|
return 'ru'
|
||||||
|
|
||||||
return 'en'
|
return 'en'
|
||||||
except:
|
except:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user