diff --git a/fill_missing_translations.py b/fill_missing_translations.py new file mode 100644 index 0000000..3e2795a --- /dev/null +++ b/fill_missing_translations.py @@ -0,0 +1,361 @@ +""" +Compares two JSON translation files in /locales (e.g., en.json and ar.json). +Finds keys missing in the target file, translates their values using Google Translate API (googletrans 4.0.2), +and inserts the translations. Runs in parallel for speed and creates a backup of the target file. +""" +import json +import sys +import os +from pathlib import Path +import re +from concurrent.futures import ThreadPoolExecutor, as_completed +from colorama import init, Fore, Style +import time +import shutil +import asyncio + +# Import googletrans with error handling +try: + from googletrans import Translator as GoogleTranslator + GOOGLETRANS_AVAILABLE = True + print(f"{Fore.GREEN}Using googletrans for translation.{Style.RESET_ALL}") +except ImportError: + GOOGLETRANS_AVAILABLE = False + print(f"{Fore.YELLOW}googletrans library not found. Will use web scraping fallback method.{Style.RESET_ALL}") + print(f"{Fore.YELLOW}To install googletrans: pip install googletrans==4.0.2{Style.RESET_ALL}") + import requests + +init(autoreset=True) + +# Language code mapping to Google Translate language codes +LANGUAGE_MAPPING = { + "zh_cn": "zh-CN", # Simplified Chinese + "zh_tw": "zh-TW", # Traditional Chinese + "ar": "ar", # Arabic + "bg": "bg", # Bulgarian + "de": "de", # German + "en": "en", # English + "es": "es", # Spanish + "fr": "fr", # French + "it": "it", # Italian + "ja": "ja", # Japanese + "ko": "ko", # Korean + "nl": "nl", # Dutch + "pt": "pt", # Portuguese + "ru": "ru", # Russian + "tr": "tr", # Turkish + "vi": "vi", # Vietnamese + # Add more mappings as needed +} + +# Recursively get all keys in the JSON as dot-separated paths +def get_keys(d, prefix=''): + keys = set() + for k, v in d.items(): + full_key = f"{prefix}.{k}" if prefix else k + if isinstance(v, dict): + keys |= get_keys(v, full_key) + else: + keys.add(full_key) + return keys + +# Get value from nested dict by dot-separated path +def get_by_path(d, path): + for p in path.split('.'): + d = d[p] + return d + +# Set value in nested dict by dot-separated path +def set_by_path(d, path, value): + parts = path.split('.') + for p in parts[:-1]: + if p not in d: + d[p] = {} + d = d[p] + d[parts[-1]] = value + +# Get Google Translate language code from file name +def get_google_lang_code(file_lang): + # Remove .json extension if present + if file_lang.endswith('.json'): + file_lang = file_lang[:-5] + + # Return mapped language code or the original if not in mapping + return LANGUAGE_MAPPING.get(file_lang, file_lang) + +# Translate text using Google Translate API if available, otherwise fallback to web scraping +def translate(text, source, target): + # Map language codes to Google Translate format + source_lang = get_google_lang_code(source) + target_lang = get_google_lang_code(target) + + print(f"{Fore.CYAN}Translating from {source_lang} to {target_lang}{Style.RESET_ALL}") + + if GOOGLETRANS_AVAILABLE: + try: + # Use synchronous web scraping instead of async googletrans + return translate_web_scraping(text, source_lang, target_lang) + except Exception as e: + print(Fore.YELLOW + f"Translation error: {e}. Trying alternative method.") + return translate_web_scraping(text, source_lang, target_lang) + else: + return translate_web_scraping(text, source_lang, target_lang) + +# Fallback translation method using web scraping +def translate_web_scraping(text, source, target): + try: + import requests + # 使用更可靠的 Google 翻译 API URL + url = f"https://translate.googleapis.com/translate_a/single?client=gtx&sl={source}&tl={target}&dt=t&q={requests.utils.quote(text)}" + headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"} + + response = requests.get(url, headers=headers, timeout=10) + if response.status_code == 200: + # 解析 JSON 响应 + result = response.json() + # 提取翻译结果 + translated_text = '' + for sentence in result[0]: + if len(sentence) > 0: + translated_text += sentence[0] + + if translated_text: + return translated_text + else: + print(Fore.RED + f"Translation not found for: {text}") + return text + else: + print(Fore.RED + f"Request failed with status code {response.status_code} for: {text}") + return text + except Exception as e: + print(Fore.RED + f"Web scraping translation error: {e}") + return text + +# Process a single language file +def process_language(en_filename, other_filename, create_backup=None): + # Always use the /locales directory + en_path = Path("locales") / en_filename + other_path = Path("locales") / other_filename + # Infer language code from filename (before .json) + en_lang = Path(en_filename).stem + other_lang = Path(other_filename).stem + + print(f"\n{Fore.CYAN}{'='*50}{Style.RESET_ALL}") + print(f"{Fore.CYAN}Processing: {other_filename} (Translating to {get_google_lang_code(other_lang)}){Style.RESET_ALL}") + print(f"{Fore.CYAN}{'='*50}{Style.RESET_ALL}") + + print(f"{Fore.CYAN}Reading source file: {en_path}{Style.RESET_ALL}") + with open(en_path, encoding='utf-8') as f: + en = json.load(f) + + print(f"{Fore.CYAN}Reading target file: {other_path}{Style.RESET_ALL}") + try: + with open(other_path, encoding='utf-8') as f: + other = json.load(f) + except FileNotFoundError: + # If target file doesn't exist, create an empty one + print(f"{Fore.YELLOW}Target file not found. Creating a new file.{Style.RESET_ALL}") + other = {} + except json.JSONDecodeError: + # If target file is invalid JSON, create an empty one + print(f"{Fore.YELLOW}Target file contains invalid JSON. Creating a new file.{Style.RESET_ALL}") + other = {} + + en_keys = get_keys(en) + other_keys = get_keys(other) + + missing = en_keys - other_keys + print(f"{Fore.YELLOW}Found {len(missing)} missing keys{Style.RESET_ALL}") + + if not missing: + print(f"{Fore.GREEN}No missing keys found. Translation is complete!{Style.RESET_ALL}") + return True + + # Parallel translation using ThreadPoolExecutor + with ThreadPoolExecutor(max_workers=3) as executor: # Further reduced workers for googletrans 4.0.2 + future_to_key = { + executor.submit(translate, get_by_path(en, key), en_lang, other_lang): key + for key in missing + } + + completed = 0 + total = len(missing) + + for future in as_completed(future_to_key): + key = future_to_key[future] + value = get_by_path(en, key) + try: + translated = future.result() + completed += 1 + print(f"{Fore.CYAN}[{completed}/{total}] Translated [{key}]: '{value}' -> " + Fore.MAGENTA + f"'{translated}'") + except Exception as exc: + print(f"{Fore.RED}Error translating {key}: {exc}") + translated = value + set_by_path(other, key, translated) + + # Ask about backup if not specified + if create_backup is None and os.path.exists(other_path): + while True: + backup_choice = input(f"{Fore.CYAN}Create backup file? (y/N): {Style.RESET_ALL}").lower() + if backup_choice in ['y', 'yes']: + create_backup = True + break + elif backup_choice in ['', 'n', 'no']: + create_backup = False + break + else: + print(f"{Fore.RED}Invalid choice. Please enter 'y' or 'n'.{Style.RESET_ALL}") + + # Create backup if requested and file exists + if create_backup and os.path.exists(other_path): + backup_path = other_path.with_suffix('.bak.json') + shutil.copy2(other_path, backup_path) + print(f"{Fore.GREEN}Backup created at {backup_path}{Style.RESET_ALL}") + + # Save the updated file + with open(other_path, 'w', encoding='utf-8') as f: + json.dump(other, f, ensure_ascii=False, indent=4) + print(f"{Fore.GREEN}File updated: {other_path}{Style.RESET_ALL}") + return True + +# Main function with interactive menu +def main(): + # Check if locales directory exists + locales_dir = Path("locales") + if not locales_dir.exists(): + print(f"{Fore.YELLOW}Creating 'locales' directory...{Style.RESET_ALL}") + locales_dir.mkdir(parents=True) + + # Get all JSON files in locales directory (excluding backup files) + json_files = [f for f in os.listdir(locales_dir) if f.endswith('.json') and not f.endswith('.bak.json')] + + # Check if en.json exists (source file) + if 'en.json' not in json_files: + print(f"{Fore.RED}Error: 'en.json' not found in locales directory. This file is required as the source for translations.{Style.RESET_ALL}") + return False + + # Get all target language files (excluding en.json) + target_files = [f for f in json_files if f != 'en.json'] + + # Add option to create a new language file + available_languages = list(LANGUAGE_MAPPING.keys()) + if 'en' in available_languages: + available_languages.remove('en') # Remove English as it's the source + + # Filter out languages that already have files + existing_lang_codes = [f.split('.')[0] for f in target_files] + available_languages = [lang for lang in available_languages if lang not in existing_lang_codes] + + # Display menu + print(f"\n{Fore.CYAN}{'='*50}{Style.RESET_ALL}") + print(f"{Fore.CYAN}Translation Tool - Select target language to update{Style.RESET_ALL}") + print(f"{Fore.CYAN}{'='*50}{Style.RESET_ALL}") + + print(f"{Fore.GREEN}0{Style.RESET_ALL}. Translate all existing language files") + + # List existing language files + for i, file in enumerate(target_files, 1): + lang_code = file.split('.')[0] + google_lang = get_google_lang_code(lang_code) + print(f"{Fore.GREEN}{i}{Style.RESET_ALL}. {lang_code} ({google_lang})") + + # Option to create a new language file (only if there are available languages) + next_option = len(target_files) + 1 + + if available_languages: + print(f"\n{Fore.CYAN}Create new language file:{Style.RESET_ALL}") + print(f"{Fore.GREEN}{next_option}{Style.RESET_ALL}. Create a new language file") + max_choice = next_option + else: + max_choice = len(target_files) + + # Get user choice + while True: + try: + choice = input(f"\n{Fore.CYAN}Enter your choice (0-{max_choice}): {Style.RESET_ALL}") + + if choice.strip() == '': + print(f"{Fore.RED}Please enter a number.{Style.RESET_ALL}") + continue + + choice = int(choice) + + if choice < 0 or choice > max_choice: + print(f"{Fore.RED}Invalid choice. Please enter a number between 0 and {max_choice}.{Style.RESET_ALL}") + continue + + break + except ValueError: + print(f"{Fore.RED}Invalid input. Please enter a number.{Style.RESET_ALL}") + + # Ask about backup for all files + create_backup = None + if choice == 0: + while True: + backup_choice = input(f"{Fore.CYAN}Create backup files? (y/N): {Style.RESET_ALL}").lower() + if backup_choice in ['y', 'yes']: + create_backup = True + break + elif backup_choice in ['', 'n', 'no']: + create_backup = False + break + else: + print(f"{Fore.RED}Invalid choice. Please enter 'y' or 'n'.{Style.RESET_ALL}") + + # Process selected language(s) + if choice == 0: + print(f"{Fore.CYAN}Translating all existing languages...{Style.RESET_ALL}") + success_count = 0 + + for target_file in target_files: + try: + if process_language('en.json', target_file, create_backup): + success_count += 1 + except Exception as e: + print(f"{Fore.RED}Error processing {target_file}: {str(e)}{Style.RESET_ALL}") + + print(f"\n{Fore.GREEN}Translation completed for {success_count} out of {len(target_files)} languages.{Style.RESET_ALL}") + elif available_languages and choice == next_option: + # Create a new language file + print(f"\n{Fore.CYAN}Available languages:{Style.RESET_ALL}") + for i, lang in enumerate(available_languages): + google_lang = get_google_lang_code(lang) + print(f"{Fore.GREEN}{i+1}{Style.RESET_ALL}. {lang} ({google_lang})") + + while True: + try: + lang_choice = input(f"\n{Fore.CYAN}Select language (1-{len(available_languages)}): {Style.RESET_ALL}") + lang_choice = int(lang_choice) + + if lang_choice < 1 or lang_choice > len(available_languages): + print(f"{Fore.RED}Invalid choice. Please enter a number between 1 and {len(available_languages)}.{Style.RESET_ALL}") + continue + + selected_lang = available_languages[lang_choice-1] + new_file = f"{selected_lang}.json" + + if new_file in json_files: + print(f"{Fore.YELLOW}Warning: {new_file} already exists. It will be updated with missing translations.{Style.RESET_ALL}") + + process_language('en.json', new_file) + print(f"\n{Fore.GREEN}Created and translated {new_file}.{Style.RESET_ALL}") + break + except ValueError: + print(f"{Fore.RED}Invalid input. Please enter a number.{Style.RESET_ALL}") + else: + target_file = target_files[choice - 1] + try: + process_language('en.json', target_file) + print(f"\n{Fore.GREEN}Translation completed for {target_file}.{Style.RESET_ALL}") + except Exception as e: + print(f"{Fore.RED}Error processing {target_file}: {str(e)}{Style.RESET_ALL}") + + return True + +if __name__ == "__main__": + # If arguments are provided, use the old method + if len(sys.argv) == 3: + process_language(sys.argv[1], sys.argv[2]) + else: + # Otherwise, show the interactive menu + main() \ No newline at end of file diff --git a/locales/ar.json b/locales/ar.json index e0b02b4..b5b2190 100644 --- a/locales/ar.json +++ b/locales/ar.json @@ -32,7 +32,10 @@ "exiting": "جاري الخروج ……", "bypass_version_check": "تجاوز فحص إصدار Cursor", "check_user_authorized": "فحص صلاحية المستخدم", - "bypass_token_limit": "تجاوز حد الرمز المميز (Token)" + "bypass_token_limit": "تجاوز حد الرمز المميز (Token)", + "restore_machine_id": "استعادة معرف الجهاز من النسخ الاحتياطي", + "lang_invalid_choice": "اختيار غير صالح. الرجاء إدخال أحد الخيارات التالية: ({lang_choices})", + "language_config_saved": "تم حفظ تكوين اللغة بنجاح" }, "languages": { "en": "الإنجليزية", @@ -765,5 +768,48 @@ "connection_error": "خطأ في الاتصال بخادم التحديث", "unexpected_error": "خطأ غير متوقع أثناء تحديث الرمز: {error}", "extraction_error": "خطأ في استخراج الرمز: {error}" + }, + "restore": { + "update_failed": "Failed to update storage file: {error}", + "read_backup_failed": "Failed to read backup file: {error}", + "please_enter_number": "Please enter a valid number", + "no_backups_found": "No backup files found", + "title": "Restore Machine ID from Backup", + "sqlite_updated": "SQLite database updated successfully", + "permission_denied": "Permission denied. Please try running as administrator", + "sqlite_not_found": "SQLite database not found", + "backup_creation_failed": "فشل في إنشاء نسخة احتياطية: {error}", + "windows_machine_guid_updated": "تم تحديث GUID Machine Windows بنجاح", + "select_backup": "حدد النسخ الاحتياطي لاستعادة", + "sqm_client_key_not_found": "لم يتم العثور على مفتاح تسجيل SQMClient", + "machine_id_backup_created": "تم إنشاء نسخة احتياطية من ملف الجهاز", + "system_ids_update_failed": "فشل في تحديث معرفات النظام: {error}", + "current_backup_created": "تم إنشاء نسخة احتياطية من ملف التخزين الحالي", + "update_windows_machine_guid_failed": "فشل في تحديث GUID MAVEN", + "updating_pair": "تحديث زوج القيمة الرئيسية", + "press_enter": "اضغط على Enter للمتابعة", + "missing_id": "معرف مفقود: {id}", + "current_file_not_found": "لم يتم العثور على ملف التخزين الحالي", + "sqlite_update_failed": "فشل في تحديث قاعدة بيانات SQLite: {error}", + "success": "تم استعادة معرف الجهاز بنجاح", + "process_error": "استعادة خطأ العملية: {error}", + "update_macos_system_ids_failed": "فشل في تحديث معرفات نظام MacOS: {error}", + "machine_id_update_failed": "فشل في تحديث ملف الماكينة: {error}", + "available_backups": "ملفات النسخ الاحتياطي المتاحة", + "windows_machine_id_updated": "معرف جهاز Windows تم تحديثه بنجاح", + "updating_sqlite": "تحديث قاعدة بيانات SQLite", + "invalid_selection": "اختيار غير صالح", + "update_windows_system_ids_failed": "فشل في تحديث معرفات نظام Windows: {error}", + "macos_platform_uuid_updated": "تم تحديث منصة MacOS UUID بنجاح", + "ids_to_restore": "معرفات الماكينة لاستعادة", + "operation_cancelled": "تم إلغاء العملية", + "machine_id_updated": "تم تحديث ملف الجهاز بنجاح", + "update_windows_machine_id_failed": "فشل في تحديث معرف جهاز Windows: {error}", + "storage_updated": "تم تحديث ملف التخزين بنجاح", + "failed_to_execute_plutil_command": "فشل تنفيذ أمر بلوتيل", + "updating_system_ids": "تحديث معرفات النظام", + "starting": "بدء عملية استعادة معرف الجهاز", + "confirm": "هل أنت متأكد من أنك تريد استعادة هذه المعرفات؟", + "to_cancel": "للإلغاء" } } \ No newline at end of file diff --git a/locales/bg.json b/locales/bg.json index 56f775a..52a81f9 100644 --- a/locales/bg.json +++ b/locales/bg.json @@ -32,7 +32,11 @@ "check_user_authorized": "Провери оторизацията на потребителя", "select_chrome_profile": "Избери Chrome профил", "bypass_token_limit": "Заобикаляне на ограничението на токените", - "restore_machine_id": "Възстановяване на машинен идентификатор от резервно копие" + "restore_machine_id": "Възстановяване на машинен идентификатор от резервно копие", + "lang_invalid_choice": "Невалиден избор. Моля, въведете една от следните опции: ({lang_choices})", + "admin_required": "Изпълнявайки се като изпълними, администраторските привилегии са необходими.", + "language_config_saved": "Езиковата конфигурация се запази успешно", + "admin_required_continue": "Продължаване без привилегии на администратор." }, "languages": { "ar": "Арабски", @@ -114,7 +118,14 @@ "package_not_found": "Package.json не беше намерен: {path}", "check_version_failed": "Грешка при проверка на версията: {error}", "stack_trace": "Проследяване на стека", - "version_too_low": "Версията на Курсор е твърде ниска: {version} < 0.45.0" + "version_too_low": "Версията на Курсор е твърде ниска: {version} < 0.45.0", + "windows_machine_id_updated": "Успешно актуализиран ID на машината на Windows актуализиран", + "modify_file_failed": "Променете файла не е успешен: {Грешка}", + "file_not_found": "Файлът не е намерен: {path}", + "update_windows_machine_guid_failed": "Актуализирайте Windows Machine Guid неуспешно: {Грешка}", + "update_windows_machine_id_failed": "Актуализиране на ID на Windows Machine не успя: {грешка}", + "path_not_found": "Пътят не е намерен: {path}", + "no_write_permission": "Без разрешение за запис: {path}" }, "register": { "title": "Инструмент за регистрация в Курсор", @@ -193,7 +204,15 @@ "setting_on_password": "Задаване на парола", "getting_code": "Получаване на код за потвърждение, ще бъде опит след 60 секунди", "human_verify_error": "Не може да се потвърди, че потребителят е човек. Опитва се отново...", - "max_retries_reached": "Достигнат максимален брой опити. Регистрацията беше неуспешна." + "max_retries_reached": "Достигнат максимален брой опити. Регистрацията беше неуспешна.", + "using_browser": "Използване на браузър} браузър: {path}", + "tracking_processes": "Проследяване {count} {браузър} процеси", + "using_browser_profile": "Използване на {браузър} профил от: {user_data_dir}", + "could_not_track_processes": "Не можах да проследяваме {браузър} процеси: {грешка}", + "browser_path_invalid": "{браузър} Пътят е невалиден, използвайки пътя по подразбиране", + "try_install_browser": "Опитайте да инсталирате браузъра с вашия мениджър на пакети", + "no_new_processes_detected": "Няма нови {браузър} процеси, открити за проследяване", + "make_sure_browser_is_properly_installed": "Уверете се, че {браузърът} е инсталиран правилно" }, "auth": { "title": "Управление на удостоверяването на Курсор", @@ -283,7 +302,13 @@ "available_domains_loaded": "Налични домейни са заредени: {count}", "domains_filtered": "Филтрирани домейни: {count}", "trying_to_create_email": "Опит за създаване на имейл: {email}", - "domain_blocked": "Домейнът е блокиран: {domain}" + "domain_blocked": "Домейнът е блокиран: {domain}", + "no_display_found": "Не е намерен дисплей. Уверете се, че X сървърът работи.", + "try_install_chromium": "Опитайте: Sudo Apt Инсталирайте хром-браузър", + "extension_load_error": "Грешка в натоварването на удължаване: {Грешка}", + "try_export_display": "Опитайте: Експортиране на дисплея =: 0", + "make_sure_chrome_chromium_is_properly_installed": "Уверете се, че хромът/хромът е правилно инсталиран", + "using_chrome_profile": "Използване на Chrome профил от: {user_data_dir}" }, "update": { "title": "Деактивиране на автоматичните актуализации на Курсор", @@ -296,7 +321,23 @@ "removing_directory": "Премахване на директория", "directory_removed": "Директорията беше премахната", "creating_block_file": "Създаване на блокиращ файл", - "block_file_created": "Блокиращият файл беше създаден" + "block_file_created": "Блокиращият файл беше създаден", + "block_file_locked_error": "Заключена грешка в блок файл: {Грешка}", + "clear_update_yml_failed": "Неуспешно изчистване на Update.yml файл: {грешка}", + "yml_already_locked_error": "Update.yml файл вече заключена грешка: {грешка}", + "yml_locked": "Update.yml файл е заключен", + "yml_locked_error": "Update.yml Заключена файл Грешка: {Грешка}", + "block_file_already_locked": "Блок файлът вече е заключен", + "directory_locked": "Директорията е заключена: {path}", + "create_block_file_failed": "Неуспешно създаване на блок файл: {грешка}", + "block_file_locked": "блок файл е заключен", + "update_yml_not_found": "Update.yml файл не е намерен", + "remove_directory_failed": "Неуспешно премахване на директорията: {грешка}", + "block_file_already_locked_error": "Блок файл вече заключена грешка: {грешка}", + "update_yml_cleared": "Update.yml файл, изчистен", + "yml_already_locked": "Update.yml файл вече е заключен", + "unsupported_os": "Неподдържана ОС: {Система}", + "clearing_update_yml": "Изчистване на актуализация.yml файл" }, "updater": { "checking": "Проверка за актуализации...", @@ -309,7 +350,8 @@ "update_skipped": "Актуализацията беше пропусната.", "invalid_choice": "Невалиден избор. Моля, въведете 'Y' или 'n'.", "development_version": "Версия за разработка {current} > {latest}", - "changelog_title": "Списък с промени" + "changelog_title": "Списък с промени", + "rate_limit_exceeded": "Превишена граница на скоростта на API на GitHub. Проверка на актуализацията на пропускане." }, "totally_reset": { "title": "Пълно нулиране на Курсор", @@ -400,7 +442,45 @@ "removing_electron_localstorage_files": "Премахване на Electron localStorage файлове", "electron_localstorage_files_removed": "Electron localStorage файлове бяха премахнати", "electron_localstorage_files_removal_error": "Грешка при премахване на Electron localStorage файлове: {error}", - "removing_electron_localstorage_files_completed": "Премахването на Electron localStorage файлове беше завършено" + "removing_electron_localstorage_files_completed": "Премахването на Electron localStorage файлове беше завършено", + "failed_to_reset_machine_guid": "Неуспешно нулиране на машината GUID", + "delete_input_retry": "Изтриването на входа не е намерено, опит {опит}/{max_attempts}", + "warning_6": "Ще трябва да настроите курсора AI отново, след като стартирате този инструмент.", + "warning_5": "Други приложения във вашата система няма да бъдат засегнати.", + "warning_4": "За да се насочите само към файловете на редактора на курсора и механизмите за откриване на проби.", + "completed_in": "Завършено за {време} секунди", + "removed": "Премахнато: {path}", + "cursor_reset_completed": "Редакторът на Cursor AI е напълно нулиран и пробният откриване на проби!", + "warning_1": "Това действие ще изтрие всички настройки на курсора AI,", + "delete_input_error": "Грешка за намиране на вход за изтриване: {Грешка}", + "warning_2": "конфигурации и кеширани данни. Това действие не може да бъде отменено.", + "advanced_tab_retry": "Разширен раздел не е намерен, опит {опит}/{max_attempts}", + "failed_to_delete_file": "Неуспешно изтриване на файл: {path}", + "warning_3": "Вашите кодови файлове няма да бъдат засегнати и инструментът е проектиран", + "delete_button_retry": "Бутонът за изтриване не е намерен, опит {опит}/{max_attempts}", + "cursor_reset_cancelled": "Cursor AI Editor Reset отменено. Излизане, без да прави никакви промени.", + "deep_scanning": "Извършване на дълбоко сканиране за допълнителни пробни/лицензионни файлове", + "failed_to_delete_file_or_directory": "Неуспешно изтриване на файл или директория: {path}", + "delete_button_not_found": "Бутонът за изтриване на акаунта не е намерен след множество опити", + "delete_button_error": "Грешка за намиране на бутон за изтриване: {Грешка}", + "already_on_settings": "Вече на страницата Настройки", + "failed_to_delete_directory": "Неуспешно изтриване на директория: {path}", + "found_danger_zone": "Намерено сечение на опасната зона", + "cursor_reset_failed": "Ревелиране на Cursor AI Editor Неуспешно: {Грешка}", + "navigating_to_settings": "Навигация до страницата на настройките ...", + "warning_title": "Предупреждение", + "resetting_cursor": "Нулиране на курсора AI редактор ... Моля, почакайте.", + "login_redirect_failed": "Пренасочването на вход не успя, опитвайки се директна навигация ...", + "advanced_tab_not_found": "Разширен раздел не е намерен след множество опити", + "direct_advanced_navigation": "Опитване на директна навигация към раздел Advanced", + "delete_button_clicked": "Щракнете върху бутона за изтриване на акаунта", + "advanced_tab_error": "Грешка за намиране на разширен раздел: {Грешка}", + "delete_input_not_found": "Изтриване на входа за потвърждение не е намерен след множество опити", + "operation_cancelled": "Операция отменена. Излизане, без да прави никакви промени.", + "failed_to_remove": "Неуспешно премахване: {path}", + "warning_7": "Използвайте на свой риск", + "delete_input_not_found_continuing": "Изтриването на входа за потвърждение не е намерено, опитвайки се да продължите така или иначе", + "advanced_tab_clicked": "Щракна върху раздела Advanced" }, "chrome_profile": { "title": "Избор на Chrome Профил", @@ -456,5 +536,293 @@ "success": "Машинният идентификатор е успешно възстановен", "process_error": "Грешка при процеса на възстановяване: {error}", "press_enter": "Натиснете Enter, за да продължите" + }, + "config": { + "configuration": "Конфигурация", + "config_not_available": "Конфигурацията не е налична", + "config_directory": "Конфигурационна директория", + "disabled": "Деактивиран", + "using_temp_dir": "Използване на временна директория поради грешка: {path} (Грешка: {Грешка})", + "file_permissions": "Разрешения за файлове: {разрешения}", + "config_option_added": "Опция за конфигурация Добавена е: {опция}", + "config_setup_error": "Грешка Настройване на конфигурация: {Грешка}", + "config_dir_created": "Създадена директория Config: {path}", + "config_force_update_disabled": "Конфигуриране на актуализацията на силата на файлове Деактивиране, пропускане на принудителна актуализация", + "backup_created": "Създадено архивиране: {path}", + "also_checked": "Също така проверен {path}", + "force_update_failed": "Конфигурация за актуализация на силата не успя: {грешка}", + "file_group": "Файлова група: {Group}", + "config_created": "Config създаден: {config_file}", + "config_force_update_enabled": "Конфигуриране на актуализацията на силата на файла, изпълняваща принудителна актуализация", + "error_getting_file_stats": "Грешка Получаване на статистика на файловете: {Грешка}", + "file_owner": "Собственик на файлове: {собственик}", + "and": "И", + "enabled": "Активиран", + "error_checking_linux_paths": "Проверка на грешки в Linux пътища: {Грешка}", + "the_file_might_be_corrupted_please_reinstall_cursor": "Файлът може да бъде покварен, моля, инсталирайте отново курсор", + "please_make_sure_cursor_is_installed_and_has_been_run_at_least_once": "Моля, уверете се, че курсорът е инсталиран и е бил стартиран поне веднъж", + "storage_file_is_valid_and_contains_data": "Файлът за съхранение е валиден и съдържа данни", + "documents_path_not_found": "Документът не е намерен, използвайки текущата директория", + "file_size": "Размер на файла: {размер} байта", + "try_running": "Опитайте да стартирате: {команда}", + "backup_failed": "Неуспешно архивиране на конфигурация: {грешка}", + "neither_cursor_nor_cursor_directory_found": "Нито курсор, нито директория на курсора, намерени в {config_base}", + "storage_file_is_empty": "Файлът за съхранение е празен: {Storage_path}", + "storage_directory_not_found": "Директорията за съхранение не е намерена: {Storage_dir}", + "storage_file_not_found": "Файлът за съхранение не е намерен: {Storage_path}", + "error_reading_storage_file": "Грешка за четене на файл за съхранение: {Грешка}", + "config_updated": "Config актуализирана", + "config_removed": "Конфигурационният файл е премахнат за принудителна актуализация", + "storage_file_found": "Намерен файл за съхранение: {Storage_path}", + "permission_denied": "Разрешение е отказано: {storage_path}" + }, + "account_info": { + "config_not_found": "Конфигурацията не е намерена.", + "days_remaining": "Остават дни", + "inactive": "Неактивен", + "failed_to_get_subscription": "Не успя да получи информация за абонамента", + "usage_not_found": "Използването не е намерено", + "title": "Информация за акаунта", + "days": "дни", + "email": "Имейл", + "premium": "Премия", + "trial_remaining": "Останал професионален опит", + "basic_usage": "Основно използване", + "failed_to_get_token": "Не успя да получи знак", + "pro": "Про", + "email_not_found": "Имейл не е намерен", + "lifetime_access_enabled": "Достъп до целия живот е активиран", + "active": "Активен", + "failed_to_get_account": "Не успя да получи информация за акаунта", + "pro_trial": "Pro Trial", + "subscription_type": "Тип абонамент", + "token": "Токен", + "usage": "Употреба", + "token_not_found": "Токена не е намерен", + "failed_to_get_email": "Не успя да получи имейл адрес", + "enterprise": "Предприятие", + "premium_usage": "Използване на премиум", + "free": "Безплатно", + "remaining_trial": "Останал опит", + "failed_to_get_usage": "Не успя да получи информация за използване", + "subscription_not_found": "Информацията за абонамента не е намерена", + "subscription": "Абонамент", + "team": "Екип", + "failed_to_get_account_info": "Не успя да получи информация за акаунта" + }, + "account_delete": { + "select_google_account": "Моля, изберете вашия акаунт в Google ...", + "advanced_tab_retry": "Разширен раздел не е намерен, опит {опит}/{max_attempts}", + "advanced_tab_clicked": "Щракна върху раздела Advanced", + "login_redirect_failed": "Пренасочването на вход не успя, опитвайки се директна навигация ...", + "navigating_to_settings": "Навигация до страницата на настройките ...", + "unexpected_error": "Неочаквана грешка: {грешка}", + "starting_process": "Начален процес на изтриване на акаунта ...", + "unexpected_page": "Неочаквана страница след влизане: {url}", + "cancelled": "Изтриване на акаунт Анулира.", + "success": "Вашият Cursor акаунт е успешно изтрит!", + "warning": "Предупреждение: Това ще изтрие постоянно вашия акаунт на курсор. Това действие не може да бъде отменено.", + "delete_input_retry": "Изтриването на входа не е намерено, опит {опит}/{max_attempts}", + "confirm_button_error": "Грешка за намиране на бутон за потвърждение: {Грешка}", + "confirm_prompt": "Сигурни ли сте, че искате да продължите? (Y/N):", + "trying_settings": "Опитвам се да се ориентирате към страницата за настройки ...", + "advanced_tab_error": "Грешка за намиране на разширен раздел: {Грешка}", + "found_danger_zone": "Намерено сечение на опасната зона", + "waiting_for_auth": "В очакване на удостоверяване на Google ...", + "logging_in": "Влезте в Google ...", + "title": "Инструмент за изтриване на акаунта на Cursor Google", + "login_successful": "Вход е успешен", + "already_on_settings": "Вече на страницата Настройки", + "direct_advanced_navigation": "Опитване на директна навигация към раздел Advanced", + "account_deleted": "Сметката се изтрива успешно!", + "advanced_tab_not_found": "Разширен раздел не е намерен след множество опити", + "confirm_button_retry": "Бутон за потвърждение не е намерен, опит {опит}/{max_attempts}", + "delete_button_clicked": "Щракнете върху бутона за изтриване на акаунта", + "delete_input_not_found": "Изтриване на входа за потвърждение не е намерен след множество опити", + "email_not_found": "Имейл не е намерен: {Грешка}", + "found_email": "Намерен имейл: {имейл}", + "failed": "Процесът на изтриване на акаунта не е успешен или е анулиран.", + "delete_button_not_found": "Бутонът за изтриване на акаунта не е намерен след множество опити", + "error": "Грешка по време на изтриване на акаунта: {Грешка}", + "delete_button_error": "Грешка за намиране на бутон за изтриване: {Грешка}", + "delete_button_retry": "Бутонът за изтриване не е намерен, опит {опит}/{max_attempts}", + "auth_timeout": "Тайм -аут за удостоверяване, продължаващо така или иначе ...", + "google_button_not_found": "Бутонът за влизане в Google не е намерен", + "delete_input_error": "Грешка за намиране на вход за изтриване: {Грешка}", + "interrupted": "Процесът на изтриване на акаунта, прекъснат от потребителя.", + "confirm_button_not_found": "Бутон за потвърждение не е намерен след множество опити", + "delete_input_not_found_continuing": "Изтриването на входа за потвърждение не е намерено, опитвайки се да продължите така или иначе", + "typed_delete": "Въведено \"Изтриване\" в полето за потвърждение" + }, + "github_register": { + "invalid_choice": "Невалиден избор. Моля, въведете „Да“ или „Не“", + "warning2": "Изисква достъп до интернет и административни привилегии.", + "check_browser_windows_for_manual_intervention_or_try_again_later": "Проверете прозорците на браузъра за ръчна намеса или опитайте отново по -късно.", + "title": "GitHub + Cursor AI регистрация автоматизация", + "warning1": "Този скрипт автоматизира създаването на акаунти, което може да наруши условията за обслужване на GitHub/Cursor.", + "completed_successfully": "Регистрацията на GitHub + Cursor приключи успешно!", + "credentials_saved": "Тези идентификационни данни са запазени в github_cursor_accounts.txt", + "confirm": "Сигурни ли сте, че искате да продължите?", + "email_address": "Имейл адрес", + "github_password": "Парола за github", + "cancelled": "Операция отменена", + "warnings_header": "Предупреждения", + "github_username": "Потребителско име на GitHub", + "starting_automation": "Стартиране на автоматизация ...", + "feature1": "Генерира временен имейл с помощта на 1SecMail.", + "feature3": "Проверява автоматично имейла на GitHub.", + "feature2": "Регистрира нов акаунт в GitHub със случайни идентификационни данни.", + "program_terminated": "Програма, прекратена от потребителя", + "features_header": "Характеристики", + "registration_encountered_issues": "Регистрацията на GitHub + курсор срещна проблеми.", + "feature5": "Възстановява идентификатора на машината, за да заобиколи пробното откриване.", + "warning3": "Captcha или допълнителна проверка може да прекъсне автоматизацията.", + "feature6": "Запазва всички идентификационни данни във файл.", + "feature4": "Влиза в курсора AI, използвайки автентификация на GitHub.", + "warning4": "Използвайте отговорно и на свой риск." + }, + "oauth": { + "could_not_check_usage_count": "Не можах да проверя броя на употребата: {Грешка}", + "try_running_without_sudo_admin": "Опитайте да стартирате без привилегии за SUDO/администратор", + "browser_setup_completed": "Настройката на браузъра приключи успешно", + "status_check_error": "Грешка в проверката на състоянието: {Грешка}", + "warning_could_not_kill_existing_browser_processes": "Предупреждение: Не можа да убие съществуващите процеси на браузъра: {Грешка}", + "failed_to_extract_auth_info": "Неуспешно извличане на Auth Info: {Грешка}", + "browser_setup_failed": "Настройката на браузъра не бе успешна: {грешка}", + "detected_platform": "Открита платформа: {платформа}", + "auth_update_success": "AUTH актуализиране на успеха", + "account_is_still_valid": "Акаунт все още е валиден (Използване: {usage})", + "running_as_root_warning": "Изпълнението като root не се препоръчва за автоматизация на браузъра", + "using_browser_profile": "Използване на профил на браузъра: {профил}", + "warning_browser_close": "ПРЕДУПРЕЖДЕНИЕ: Това ще затвори всички работещи {браузър} процеси", + "google_start": "Google Start", + "failed_to_delete_account": "Неуспешно изтриване на акаунт: {Грешка}", + "initializing_browser_setup": "Инициализиране на настройка на браузъра ...", + "consider_running_without_sudo": "Помислете за стартиране на скрипта без sudo", + "found_browser_user_data_dir": "Намерено {браузър} директория на потребителски данни: {path}", + "using_first_available_chrome_profile": "Използване на първи наличен хромиран профил: {профил}", + "invalid_authentication_type": "Невалиден тип удостоверяване", + "could_not_find_email": "Не можах да намеря имейл: {грешка}", + "found_default_chrome_profile": "Намерен хромиран профил по подразбиране", + "user_data_dir_not_found": "{Браузър} Директория за потребителски данни не е намерена в {path}, вместо това ще опитате Chrome", + "using_configured_browser_path": "Използване на конфигуриран {браузър} път: {path}", + "could_not_find_usage_count": "Не можах да намеря броя на употребата: {грешка}", + "waiting_for_authentication": "В очакване на удостоверяване ...", + "browser_not_found_trying_chrome": "Не можах да намеря {браузър}, да опитаме хром вместо това", + "found_cookies": "Намерени {count} бисквитки", + "no_chrome_profiles_found": "Не са намерени хромирани профили, използвайки по подразбиране", + "authentication_button_not_found": "Бутонът за удостоверяване не е намерен", + "starting_google_authentication": "Започване на автентификация на Google ...", + "starting_re_authentication_process": "Стартиране на процес на повторна устойчивост ...", + "authentication_successful": "Успехът на удостоверяването - имейл: {имейл}", + "failed_to_delete_expired_account": "Неуспешно изтриване на изтекъл акаунт", + "authentication_failed": "Удостоверяването не бе успешно: {Грешка}", + "error_getting_user_data_directory": "Грешка Получаване на директория за потребителски данни: {Грешка}", + "found_email": "Намерен имейл: {имейл}", + "token_extraction_error": "Грешка в извличането на токени: {Грешка}", + "account_has_reached_maximum_usage": "Акаунт е достигнал максимално използване, {изтриване}", + "found_chrome_at": "Намерен хром на: {path}", + "starting_new_authentication_process": "Стартиране на нов процес на удостоверяване ...", + "github_start": "Github start", + "error_finding_chrome_profile": "Грешка за намиране на хромиран профил, използвайки по подразбиране: {грешка}", + "navigating_to_authentication_page": "Навигация към страницата за удостоверяване ...", + "failed_to_delete_account_or_re_authenticate": "Неуспешно изтриване на акаунт или повторно автентика: {Грешка}", + "starting_browser": "Стартиращ браузър на: {path}", + "no_compatible_browser_found": "Не е намерен съвместим браузър. Моля, инсталирайте Google Chrome или Chromium.", + "killing_browser_processes": "Убиване {браузър} процеси ...", + "browser_failed": "Браузърът не успя да започне: {грешка}", + "browser_closed": "Браузърът е затворен", + "starting_new_google_authentication": "Стартиране на ново удостоверяване на Google ...", + "usage_count": "Брой на употребата: {Използване}", + "authentication_timeout": "Време за изчакване на удостоверяване", + "found_browser_data_directory": "Намерена директория за данни на браузъра: {path}", + "already_on_settings_page": "Вече на страницата Настройки!", + "supported_browsers": "Поддържани браузъри за {платформа}", + "page_changed_checking_auth": "Страницата се промени, проверка на Auth ...", + "browser_failed_to_start": "Браузърът не успя да започне: {грешка}", + "starting_github_authentication": "Стартиране на автентификация на GitHub ...", + "auth_update_failed": "Auth Update не успя", + "missing_authentication_data": "Липсващи данни за удостоверяване: {data}", + "please_select_your_google_account_to_continue": "Моля, изберете вашия акаунт в Google, за да продължите ...", + "authentication_successful_getting_account_info": "Удостоверяване е успешно, получаване на информация за акаунта ...", + "redirecting_to_authenticator_cursor_sh": "Пренасочване към Authenticator.Cursor.sh ...", + "profile_selection_error": "Грешка по време на избор на профил: {Грешка}", + "browser_failed_to_start_fallback": "Браузърът не успя да започне: {грешка}" + }, + "auth_check": { + "connection_error": "Грешка в връзката", + "operation_cancelled": "Операция, анулирана от потребителя", + "error_generating_checksum": "Грешка Генериране на контролна сума: {Грешка}", + "user_unauthorized": "Потребителят е неоторизиран", + "authorization_failed": "Упълномощаването не успя!", + "error_getting_token_from_db": "Грешка Получаване на знака от база данни: {Грешка}", + "checking_usage_information": "Проверка на информацията за използването ...", + "token_found_in_db": "Токен, намерен в базата данни", + "unexpected_status_code": "Неочакван код на състоянието: {код}", + "token_source": "Вземете знак от база данни или въведете ръчно? (D/M, по подразбиране: D)", + "usage_response_status": "Състояние на отговора на употребата: {Отговор}", + "enter_token": "Въведете вашия токен на курсора:", + "getting_token_from_db": "Получаване на знака от база данни ...", + "invalid_token": "Невалиден маркер", + "token_length": "Дължина на токена: {дължина} символи", + "authorization_successful": "Разрешение успешно!", + "unexpected_error": "Неочаквана грешка: {грешка}", + "user_authorized": "Потребителят е упълномощен", + "cursor_acc_info_not_found": "cursor_acc_info.py не е намерен", + "check_error": "Разрешение за проверка на грешки: {Грешка}", + "usage_response": "Отговор на употреба: {Отговор}", + "check_usage_response": "Проверете отговора на употребата: {Отговор}", + "checking_authorization": "Проверка на разрешението ...", + "request_timeout": "Заявка изтече", + "jwt_token_warning": "Изглежда, че Token е във формат JWT, но API Check върна неочакван код на състоянието. Маркерът може да е валиден, но достъпът до API е ограничен.", + "token_not_found_in_db": "Токена не е намерен в базата данни" + }, + "token": { + "unexpected_error": "Неочаквана грешка по време на опресняване на маркера: {грешка}", + "request_timeout": "Заявка за опресняване на сървъра се изчерпа", + "no_access_token": "Няма маркер за достъп в отговор", + "extraction_error": "Грешка при извличане на токен: {Грешка}", + "refresh_failed": "Опресняване на токена не успя: {грешка}", + "refreshing": "Освежаващ жетон ...", + "refresh_success": "Токенът се освежи! Валидно за {дни} дни (изтича: {изтича})", + "invalid_response": "Невалиден json отговор от опреснен сървър", + "server_error": "Опреснителна грешка в сървъра: http {status}", + "connection_error": "Грешка в връзката за опресняване на сървъра" + }, + "bypass": { + "menu_option": "Проверка на версията на байпас курсор", + "backup_created": "Създадено архивиране: {path}", + "write_failed": "Неуспешно напишете product.json: {грешка}", + "description": "Този инструмент променя продукта на Cursor.json, за да заобиколи ограниченията на версията", + "found_product_json": "Намерен product.json: {path}", + "current_version": "Текуща версия: {версия}", + "version_updated": "Версията се актуализира от {old} до {new}", + "title": "Байпасен инструмент за версия на курсора", + "file_not_found": "Файлът не е намерен: {path}", + "no_write_permission": "Без разрешение за запис за файл: {path}", + "stack_trace": "Сметка на стек", + "product_json_not_found": "product.json не е намерен в обикновените Linux пътеки", + "no_update_needed": "Не е необходима актуализация. Текущата версия {версия} вече е> = 0,46.0", + "starting": "Стартиране на байпас на версията на курсора ...", + "unsupported_os": "Неподдържана операционна система: {Система}", + "read_failed": "Неуспешно четене на product.json: {грешка}", + "localappdata_not_found": "LocalAppData Environment Променлива не е намерена", + "bypass_failed": "Байпас на версията не бе успешен: {Грешка}" + }, + "bypass_token_limit": { + "title": "Байпасен инструмент за ограничаване на маркера", + "press_enter": "Натиснете Enter, за да продължите ...", + "description": "Този инструмент променя файла workbench.desktop.main.js, за да заобиколи ограничението на маркера" + }, + "browser_profile": { + "profile": "Профил {номер}", + "no_profiles": "Не {браузър} профили, намерени", + "error_loading": "Грешка за зареждане {браузър} профили: {грешка}", + "profile_list": "Налични {браузър} профили:", + "invalid_selection": "Невалидна селекция. Моля, опитайте отново.", + "profile_selected": "Избран профил: {профил}", + "select_profile": "Изберете {Browser} профил, който да използвате:", + "title": "Избор на профил на браузъра", + "default_profile": "Профил по подразбиране" } } \ No newline at end of file diff --git a/locales/ja.json b/locales/ja.json index c37f7d9..ee478fc 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -53,5 +53,765 @@ "es": "スペイン語", "ja": "日本語", "it": "イタリア語" + }, + "register": { + "waiting_for_second_verification": "電子メールの確認を待っています...", + "browser_started": "ブラウザは正常にオープンしました", + "config_updated": "config updated", + "manual_email_input": "手動の電子メール入力", + "verification_start": "確認コードの取得を開始します", + "last_name": "苗字", + "press_enter": "Enterを押して終了します", + "get_verification_code_timeout": "検証コードタイムアウトを取得します", + "detect_turnstile": "セキュリティ検証の確認...", + "start_getting_verification_code": "確認コードの取得を開始し、60年代に試してみます", + "human_verify_error": "ユーザーが人間であることを確認できません。再試行...", + "token_failed": "トークンに失敗する:{エラー}", + "verification_not_found": "検証コードは見つかりません", + "getting_code": "検証コードを取得すると、60年代に試してみます", + "turnstile_passed": "ターンスタイルが通過しました", + "email_address": "電子メールアドレス", + "setting_on_password": "パスワードの設定", + "login_success_and_jump_to_settings_page": "成功をログインし、[設定]ページにジャンプします", + "register_start": "登録を開始します", + "verification_failed": "検証に失敗しました", + "title": "カーソル登録ツール", + "visiting_url": "訪問URL", + "try_get_code": "試してみてください| {pirch}検証コードを取得|残りの時間:{時間} s", + "try_get_verification_code": "試してみてください| {pirch}検証コードを取得|残りの時間:{resight_time} s", + "open_mailbox": "メールボックスページを開く", + "filling_form": "フォームに記入します", + "no_turnstile": "ターンスタイルを検出しないでください", + "set_password": "パスワードを設定します", + "waiting_for_page_load": "ページの読み込み...", + "browser_path_invalid": "{ブラウザー}パスは、デフォルトパスを使用して無効です", + "account_error": "アカウント情報が失敗します:{エラー}", + "detect_login_page": "ログインページを検出し、ログインを開始します...", + "manual_code_input": "手動コード入力", + "using_browser_profile": "{browser}プロファイルを使用:{user_data_dir}", + "verification_code_filled": "検証コードが記入されています", + "password_error": "パスワードを設定できませんでした:{エラー}。もう一度やり直してください", + "reset_machine_id": "マシンIDをリセットします", + "cursor_auth_info_updated": "カーソル認証情報が更新されました", + "form_submitted": "フォーム送信、検証を開始...", + "handling_turnstile": "セキュリティ検証の処理...", + "handle_turnstile": "ターンスタイルを処理します", + "password_submitted": "提出されたパスワード", + "email_error": "メールアドレスを取得できませんでした", + "cursor_auth_info_update_failed": "カーソル認証情報の更新は失敗しました", + "total_usage": "合計使用量:{使用}", + "exit_signal": "終了信号", + "make_sure_browser_is_properly_installed": "{ブラウザー}が適切にインストールされていることを確認してください", + "verification_error": "検証エラー:{エラー}", + "get_verification_code_success": "検証コードの成功を取得します", + "starting_browser": "オープニングブラウザ...", + "get_token": "カーソルセッショントークンを取得します", + "config_created": "作成された構成", + "register_process_error": "登録プロセスエラー:{エラー}", + "using_browser": "{browser}ブラウザの使用:{path}", + "tracking_processes": "追跡{count} {browser}プロセス", + "max_retries_reached": "最大再試行に達しました。登録に失敗しました。", + "browser_start": "起動ブラウザ", + "first_verification_passed": "最初の検証が成功しました", + "setting_password": "パスワードの設定", + "account_info_saved": "アカウント情報が保存されています", + "form_success": "フォームが正常に送信されました", + "get_account": "アカウント情報を取得します", + "get_email_address": "メールアドレスを取得します", + "verification_timeout": "検証コードタイムアウトを取得します", + "basic_info_submitted": "提出された基本情報", + "first_name": "ファーストネーム", + "setup_error": "電子メールのセットアップエラー:{エラー}", + "waiting_for_verification_code": "確認コードを待っています...", + "cursor_registration_completed": "カーソル登録が完了しました!", + "token_max_attempts": "到達最大試み({max})|トークンを取得できませんでした", + "save_account_info_failed": "アカウント情報の保存失敗", + "could_not_track_processes": "{browser}プロセスを追跡できませんでした:{エラー}", + "start": "登録プロセスの開始...", + "password_success": "パスワードを正常に設定します", + "password": "パスワード", + "no_new_processes_detected": "追跡するために検出された新しい{ブラウザー}プロセスはありません", + "basic_info": "提出された基本情報", + "verification_success": "セキュリティ検証は成功しました", + "config_option_added": "configオプション追加:{オプション}", + "mailbox": "電子メールの受信トレイに正常にアクセスしました", + "token_attempt": "試してみてください| {Tirem} Times Token | {time}で再試行します", + "try_install_browser": "パッケージマネージャーと一緒にブラウザをインストールしてみてください", + "retry_verification": "検証を再試行...", + "update_cursor_auth_info": "カーソル認証情報を更新します", + "token_success": "トークンの成功を取得します" + }, + "config": { + "backup_failed": "configにバックアップに失敗しました:{error}", + "enabled": "有効になっています", + "try_running": "実行してみてください:{コマンド}", + "permission_denied": "許可拒否:{Storage_Path}", + "neither_cursor_nor_cursor_directory_found": "{config_base}で見つかったカーソルもカーソルディレクトリもありません", + "storage_file_found": "見つかったストレージファイル:{Storage_Path}", + "please_make_sure_cursor_is_installed_and_has_been_run_at_least_once": "カーソルがインストールされており、少なくとも1回は実行されていることを確認してください", + "file_group": "ファイルグループ:{グループ}", + "the_file_might_be_corrupted_please_reinstall_cursor": "ファイルが破損している可能性があります。カーソルを再インストールしてください", + "using_temp_dir": "エラーによる一時的なディレクトリの使用:{path}(エラー:{エラー})", + "documents_path_not_found": "現在のディレクトリを使用して、パスが見つかりません", + "and": "そして", + "storage_file_is_empty": "ストレージファイルは空です:{Storage_Path}", + "storage_directory_not_found": "ストレージディレクトリが見つかりません:{Storage_dir}", + "config_created": "構成作成:{config_file}", + "config_not_available": "構成は使用できません", + "file_size": "ファイルサイズ:{サイズ}バイト", + "also_checked": "{パス}もチェックしました", + "config_removed": "強制更新のために削除された構成ファイル", + "error_getting_file_stats": "エラーファイル統計の取得:{エラー}", + "force_update_failed": "フォースアップデート構成が失敗しました:{エラー}", + "disabled": "無効", + "config_force_update_enabled": "Config File Force Updateが有効になり、強制更新が実行されます", + "error_checking_linux_paths": "Linuxパスのエラーチェック:{エラー}", + "backup_created": "作成されたバックアップ:{パス}", + "config_setup_error": "設定のエラー:{エラー}", + "config_directory": "構成ディレクトリ", + "file_owner": "ファイル所有者:{所有者}", + "config_force_update_disabled": "Config File Force Updateは無効になり、強制更新をスキップします", + "config_option_added": "configオプション追加:{オプション}", + "config_updated": "config updated", + "config_dir_created": "作成された構成ディレクトリ:{path}", + "storage_file_is_valid_and_contains_data": "ストレージファイルは有効で、データが含まれています", + "error_reading_storage_file": "エラーストレージファイルの読み取り:{エラー}", + "storage_file_not_found": "Storageファイルが見つかりません:{Storage_Path}", + "file_permissions": "ファイル許可:{permissions}", + "configuration": "構成" + }, + "restore": { + "update_macos_system_ids_failed": "MacOSシステムIDの更新に失敗しました:{エラー}", + "current_backup_created": "現在のストレージファイルのバックアップを作成しました", + "current_file_not_found": "現在のストレージファイルが見つかりません", + "windows_machine_guid_updated": "Windows Machine GUIDは正常に更新されました", + "please_enter_number": "有効な番号を入力してください", + "title": "バックアップからマシンIDを復元します", + "machine_id_updated": "MachineIDファイルは正常に更新されました", + "update_failed": "ストレージファイルの更新に失敗しました:{エラー}", + "sqlite_updated": "SQLiteデータベースは正常に更新されました", + "starting": "開始マシンID復元プロセス", + "select_backup": "バックアップを選択して復元します", + "sqm_client_key_not_found": "sqmclientレジストリキーが見つかりません", + "update_windows_system_ids_failed": "WindowsシステムIDの更新に失敗しました:{エラー}", + "missing_id": "IDがありません:{id}", + "sqlite_not_found": "SQLiteデータベースが見つかりません", + "updating_pair": "キー価値ペアの更新", + "to_cancel": "キャンセルします", + "storage_updated": "ストレージファイルが正常に更新されました", + "read_backup_failed": "バックアップファイルの読み取りに失敗しました:{エラー}", + "success": "マシンIDは正常に復元されました", + "permission_denied": "許可が拒否されました。管理者として実行してみてください", + "update_windows_machine_guid_failed": "WindowsマシンGUIDの更新に失敗しました:{エラー}", + "operation_cancelled": "操作はキャンセルされました", + "updating_sqlite": "SQLiteデータベースの更新", + "sqlite_update_failed": "sqliteデータベースの更新に失敗しました:{エラー}", + "failed_to_execute_plutil_command": "Plutilコマンドの実行に失敗しました", + "update_windows_machine_id_failed": "WindowsマシンIDの更新に失敗しました:{エラー}", + "confirm": "これらのIDを復元したいですか?", + "updating_system_ids": "システムIDの更新", + "system_ids_update_failed": "システムIDの更新に失敗しました:{エラー}", + "machine_id_backup_created": "MachineIDファイルのバックアップを作成しました", + "machine_id_update_failed": "MachineIDファイルの更新に失敗しました:{エラー}", + "invalid_selection": "無効な選択", + "ids_to_restore": "復元するマシンID", + "backup_creation_failed": "バックアップの作成に失敗しました:{エラー}", + "no_backups_found": "バックアップファイルは見つかりません", + "available_backups": "利用可能なバックアップファイル", + "macos_platform_uuid_updated": "MacOSプラットフォームUUIDは正常に更新されました", + "press_enter": "Enterを押して続行します", + "process_error": "プロセスエラーの復元:{エラー}", + "windows_machine_id_updated": "Windows Machine IDは正常に更新されました" + }, + "totally_reset": { + "delete_button_error": "エラー検索削除ボタン:{エラー}", + "login_redirect_failed": "ログインリダイレクトが失敗し、直接ナビゲーションを試みます...", + "reset_log_3": "カーソルAIを再インストールする必要があり、これで新鮮な試用期間が必要です。", + "note_complete_machine_id_reset_may_require_running_as_administrator": "注:完全なマシンIDリセットは、管理者として実行する必要がある場合があります", + "feature_2": "AIの履歴やプロンプトを含むすべてのキャッシュデータをクリアします", + "reset_log_7": "カーソルAIのウェブサイトにアクセスする前に、ブラウザのクッキーとキャッシュをクリアします", + "reset_log_9": "問題が発生した場合は、GitHub Issue Trackerにアクセスして、https://github.com/yeongpin/cursor-free-vip/issuesで問題を作成します", + "warning_4": "ターゲットカーソルAIエディターファイルと試行検出メカニズムのみをターゲットにします。", + "windows_registry_instructions_2": "「regedit」を実行し、hkey_current_user \\ software \\の下で「カーソル」または「cursorai」を含むキーを検索して削除します。", + "error": "カーソルリセットに失敗しました:{エラー}", + "navigating_to_settings": "[設定]ページへのナビゲート...", + "success": "カーソルリセットに正常にリセットされます", + "feature_9": "Windows、MacOS、Linuxと互換性があります", + "press_enter": "Enterを押して終了します", + "advanced_tab_not_found": "複数の試行後には高度なタブが見つかりません", + "deep_scanning": "追加のトライアル/ライセンスファイルのディープスキャンを実行します", + "warning_5": "システム上の他のアプリケーションは影響を受けません。", + "failed_to_delete_file_or_directory": "ファイルまたはディレクトリの削除に失敗しました:{path}", + "cursor_reset_failed": "カーソルAIエディターリセットに失敗しました:{エラー}", + "feature_title": "特徴", + "reset_log_6": "利用可能な場合は、VPNを使用してIPアドレスを変更します", + "delete_input_error": "ERRORの検索入力の削除:{エラー}", + "feature_3": "マシンIDをリセットして試験検出をバイパスします", + "db_connection_error": "データベースへの接続に失敗しました:{エラー}", + "error_creating_machine_id": "マシンIDファイルの作成エラー{PATH}:{エラー}", + "process_interrupted": "中断されたプロセス。終了...", + "reset_log_5": "新しいトライアルに登録するときに別のメールアドレスを使用する", + "resetting_cursor": "カーソルAIエディターのリセット...待ってください。", + "reset_log_2": "変更を有効にするためにシステムを再起動してください。", + "title": "完全にカーソルをリセットします", + "cursor_reset_cancelled": "カーソルAIエディターリセットキャンセル。変更せずに終了します。", + "advanced_tab_clicked": "[詳細]タブをクリックしました", + "completed_in": "{時間}秒で完了します", + "confirm_6": "このツールを実行した後、再びカーソルAIをセットアップする必要があります。", + "connected_to_database": "データベースに接続されています", + "resetting_machine_id": "試行検出をバイパスするためにマシン識別子をリセット...", + "checking_for_electron_localstorage_files": "電子ローカルストレージファイルの確認", + "already_on_settings": "すでに設定ページにあります", + "delete_button_not_found": "複数の試行後にアカウントボタンを削除しません", + "disclaimer_title": "免責事項", + "linux_machine_id_modification_skipped": "Linux Machine-IDの変更スキップ:{エラー}", + "keyboard_interrupt": "ユーザーが中断したプロセス。終了...", + "failed_to_reset_machine_guid": "マシンGUIDのリセットに失敗しました", + "confirm_4": "ターゲットカーソルAIエディターファイルと試行検出メカニズムのみをターゲットにします。", + "confirm_title": "先に進みたいですか?", + "warning_2": "構成、およびキャッシュデータ。このアクションを元に戻すことはできません。", + "reading_config": "現在の構成を読み取ります", + "updating_pair": "キー価値ペアの更新", + "found_additional_potential_license_trial_files": "{count}追加の潜在的なライセンス/トライアルファイルが見つかりました", + "failed_to_delete_file": "ファイルの削除に失敗しました:{path}", + "disclaimer_7": "あなた自身の責任で使用してください", + "performing_deep_scan": "追加のトライアル/ライセンスファイルのディープスキャンを実行します", + "database_connection_closed": "データベース接続が閉じられました", + "deleted": "削除:{パス}", + "feature_8": "非装飾用ファイルとアプリケーションを安全に保存します", + "unexpected_error": "予期しないエラーが発生しました:{エラー}", + "warning_7": "あなた自身の責任で使用してください", + "warning_3": "コードファイルは影響を受けず、ツールは設計されています", + "confirm_7": "あなた自身の責任で使用してください", + "delete_button_retry": "削除ボタンが見つかりません、{pirte}/{max_attempts}を削除します}", + "feature_4": "新しいランダム化されたマシン識別子を作成します", + "delete_input_not_found_continuing": "とにかく続行しようとしている確認の入力を削除します", + "not_found": "ファイルが見つかりません:{path}", + "advanced_tab_error": "ERRORINSING ADVANCED TAB:{エラー}", + "reset_log_8": "問題が発生した場合は、別の場所にカーソルAIをインストールしてみてください", + "windows_machine_id_modification_skipped": "Windows Machine IDの変更スキップ:{エラー}", + "press_enter_to_return_to_main_menu": "Enterを押してメインメニューに戻ります...", + "db_permission_error": "データベースファイルにアクセスできません。許可を確認してください", + "removing_electron_localstorage_files_completed": "Electron LocalStorageファイルの削除が完了しました", + "delete_input_retry": "入力が見つかっていない削除、{pirte}/{max_attempts}", + "confirm_2": "構成、およびキャッシュデータ。このアクションを元に戻すことはできません。", + "reset_log_4": "最良の結果については、考えてみてください。", + "saving_new_config": "JSONに新しい構成を保存します", + "invalid_choice": "「Y」または「n」を入力してください", + "note_complete_system_machine_id_reset_may_require_sudo_privileges": "注:System Machine-IDリセットが必要になる場合は、SUDO特権が必要になる場合があります", + "electron_localstorage_files_removed": "Electron LocalStorageファイルが削除されました", + "config_not_found": "構成ファイルが見つかりません", + "no_permission": "構成ファイルの読み取りまたは書き込みはできません。ファイル許可を確認してください", + "confirm_1": "このアクションは、すべてのカーソルAI設定を削除します。", + "no_additional_license_trial_files_found_in_deep_scan": "ディープスキャンに追加のライセンス/試用ファイルは見つかりません", + "disclaimer_2": "構成、およびキャッシュデータ。このアクションを元に戻すことはできません。", + "checking_config": "構成ファイルの確認", + "disclaimer_4": "ターゲットカーソルAIエディターファイルと試行検出メカニズムのみをターゲットにします。", + "feature_7": "非表示ライセンスおよび試用関連ファイルのディープスキャン", + "warning_title": "警告", + "skipped_for_safety": "安全のためにスキップ(カーソル関連ではない):{パス}", + "disclaimer_3": "コードファイルは影響を受けず、ツールは設計されています", + "disclaimer_1": "このツールは、すべてのカーソルAI設定を永続的に削除します。", + "removed": "削除:{パス}", + "report_issue": "この問題をhttps://github.com/yeongpin/cursor-free-vip/issues(", + "found_danger_zone": "Danger Zoneセクションが見つかりました", + "creating_backup": "構成バックアップの作成", + "cursor_reset_completed": "カーソルAIエディターは完全にリセットされ、試行検出がバイパスされました!", + "operation_cancelled": "操作はキャンセルされました。変更せずに終了します。", + "direct_advanced_navigation": "[Advanced Tab]に直接ナビゲーションを試します", + "removing_electron_localstorage_files": "電子ローカルストレージファイルの削除", + "disclaimer_5": "システム上の他のアプリケーションは影響を受けません。", + "feature_6": "試行情報とアクティベーションデータをリセットします", + "created_extended_trial_info": "新しい拡張トライアル情報を作成した:{Path}", + "failed_to_remove": "削除に失敗しました:{path}", + "db_not_found": "データベースファイルが見つかりません:{path}", + "backup_exists": "バックアップファイルはすでに存在し、バックアップステップをスキップします", + "error_searching": "{path}でファイルを検索するエラー:{エラー}", + "feature_1": "カーソルAIの設定と構成の完全な削除", + "error_deleting": "エラー削除{path}:{エラー}", + "error_creating_trial_info": "トライアル情報ファイルの作成エラー{path}:{error}", + "delete_button_clicked": "[アカウントの削除]ボタンをクリックしました", + "reset_machine_id": "マシンIDをリセットします", + "generating_new_machine_id": "新しいマシンIDの生成", + "warning_1": "このアクションは、すべてのカーソルAI設定を削除します。", + "failed_to_delete_directory": "ディレクトリの削除に失敗しました:{path}", + "resetting_cursor_ai_editor": "カーソルAIエディターのリセット...待ってください。", + "windows_registry_instructions": "📝注:Windowsで完全にリセットするには、レジストリエントリをクリーンする必要がある場合もあります。", + "feature_5": "カスタム拡張機能と設定を削除します", + "removing_known": "既知のトライアル/ライセンスファイルの削除", + "created_machine_id": "新しいマシンIDを作成しました:{パス}", + "disclaimer_6": "このツールを実行した後、再びカーソルAIをセットアップする必要があります。", + "database_updated_successfully": "データベースは正常に更新されました", + "advanced_tab_retry": "高度なタブが見つかりません、試み{pirter}/{max_attempts}", + "return_to_main_menu": "メインメニューに戻る...", + "electron_localstorage_files_removal_error": "エラー電子localStorageファイルの削除エラー:{エラー}", + "reset_log_1": "カーソルAIは完全にリセットされ、試行検出がバイパスされました!", + "warning_6": "このツールを実行した後、再びカーソルAIをセットアップする必要があります。", + "confirm_5": "システム上の他のアプリケーションは影響を受けません。", + "confirm_3": "コードファイルは影響を受けず、ツールは設計されています", + "delete_input_not_found": "複数の試行後に確認されていない確認入力を削除します", + "reset_cancelled": "リセットキャンセル。変更せずに終了します。" + }, + "updater": { + "up_to_date": "最新バージョンを使用しています。", + "update_skipped": "更新をスキップします。", + "new_version_available": "利用可能な新しいバージョン! (現在:{現在}、最新:{最新})", + "changelog_title": "Changelog", + "updating": "最新バージョンへの更新。プログラムは自動的に再起動します。", + "rate_limit_exceeded": "Github APIレート制限は超えました。更新チェックをスキップします。", + "invalid_choice": "無効な選択。 「Y」または「n」を入力してください。", + "development_version": "開発バージョン{current}> {最新}", + "update_confirm": "最新バージョンに更新しますか? (y/n)", + "check_failed": "更新の確認に失敗しました:{エラー}", + "continue_anyway": "現在のバージョンを続けています...", + "checking": "更新のチェック..." + }, + "oauth": { + "no_chrome_profiles_found": "デフォルトを使用して、Chromeプロファイルは見つかりませんでした", + "found_browser_data_directory": "ブラウザデータディレクトリを見つけました:{path}", + "github_start": "githubスタート", + "using_browser_profile": "ブラウザプロファイルの使用:{プロファイル}", + "waiting_for_authentication": "認証を待っています...", + "error_finding_chrome_profile": "エラーChromeプロファイルの検索、デフォルトを使用:{エラー}", + "browser_failed_to_start": "ブラウザが起動に失敗しました:{エラー}", + "starting_browser": "ブラウザの起動:{パス}", + "browser_setup_failed": "ブラウザのセットアップが失敗しました:{エラー}", + "page_changed_checking_auth": "ページが変更され、認証を確認してください...", + "user_data_dir_not_found": "{browser}ユーザーデータディレクトリ{path}で見つかりません、代わりにChromeを試してみます", + "warning_browser_close": "警告:これにより、すべての実行中の{ブラウザー}プロセスが閉じられます", + "initializing_browser_setup": "ブラウザのセットアップを初期化...", + "redirecting_to_authenticator_cursor_sh": "Authenticator.cursor.shへのリダイレクト...", + "missing_authentication_data": "認証データの欠落:{データ}", + "browser_closed": "ブラウザは閉じました", + "profile_selection_error": "プロフィール選択中のエラー:{エラー}", + "found_cookies": "{count}クッキーが見つかりました", + "authentication_failed": "認証が失敗した:{エラー}", + "using_first_available_chrome_profile": "最初に利用可能なChromeプロファイルを使用する:{プロファイル}", + "auth_update_failed": "AUTHアップデートは失敗しました", + "failed_to_extract_auth_info": "認証情報の抽出に失敗しました:{エラー}", + "status_check_error": "ステータスチェックエラー:{エラー}", + "starting_new_google_authentication": "新しいGoogle認証を開始します...", + "starting_re_authentication_process": "再認証プロセスを開始...", + "could_not_find_usage_count": "使用量が見つかりませんでした:{エラー}", + "running_as_root_warning": "ルートとして実行することは、ブラウザの自動化には推奨されません", + "killing_browser_processes": "Killing {browser}プロセス...", + "could_not_check_usage_count": "使用量カウントを確認できませんでした:{エラー}", + "found_default_chrome_profile": "デフォルトのChromeプロファイルが見つかりました", + "auth_update_success": "AUTHアップデートの成功", + "authentication_successful": "認証成功 - 電子メール:{電子メール}", + "browser_not_found_trying_chrome": "代わりにChromeを試して、{ブラウザー}を見つけることができませんでした", + "starting_github_authentication": "GitHub認証を開始...", + "please_select_your_google_account_to_continue": "Googleアカウントを選択して続行してください...", + "warning_could_not_kill_existing_browser_processes": "警告:既存のブラウザプロセスを殺すことができませんでした:{エラー}", + "browser_failed": "ブラウザが起動に失敗しました:{エラー}", + "browser_failed_to_start_fallback": "ブラウザが起動に失敗しました:{エラー}", + "authentication_timeout": "認証タイムアウト", + "error_getting_user_data_directory": "ユーザーデータディレクトリの取得エラー:{エラー}", + "using_configured_browser_path": "configured {browser}パスを使用:{path}", + "could_not_find_email": "電子メールが見つかりませんでした:{エラー}", + "starting_google_authentication": "Google認証を開始...", + "google_start": "Google Start", + "browser_setup_completed": "ブラウザのセットアップが正常に完了しました", + "navigating_to_authentication_page": "認証ページへのナビゲート...", + "invalid_authentication_type": "無効な認証タイプ", + "try_running_without_sudo_admin": "Sudo/管理者の特権なしで実行してみてください", + "authentication_successful_getting_account_info": "認証は成功し、アカウント情報を取得します...", + "usage_count": "使用法数:{使用}", + "failed_to_delete_account": "アカウントの削除に失敗しました:{エラー}", + "already_on_settings_page": "すでに設定ページにあります!", + "authentication_button_not_found": "認証ボタンが見つかりません", + "consider_running_without_sudo": "Sudoなしでスクリプトを実行することを検討してください", + "detected_platform": "検出されたプラットフォーム:{プラットフォーム}", + "account_has_reached_maximum_usage": "アカウントは最大使用に達しました、{削除}", + "found_email": "メールを見つけた:{電子メール}", + "found_browser_user_data_dir": "見つかった{ブラウザー}ユーザーデータディレクトリ:{path}", + "failed_to_delete_account_or_re_authenticate": "アカウントを削除したり、再認証したりできませんでした:{エラー}", + "failed_to_delete_expired_account": "期限切れのアカウントを削除できませんでした", + "token_extraction_error": "トークン抽出エラー:{エラー}", + "supported_browsers": "{プラットフォーム}のサポートブラウザ", + "found_chrome_at": "クロムを見つけました:{path}", + "starting_new_authentication_process": "新しい認証プロセスを開始...", + "no_compatible_browser_found": "互換性のあるブラウザは見つかりません。 Google ChromeまたはChromiumをインストールしてください。", + "account_is_still_valid": "アカウントはまだ有効です(使用法:{使用})" + }, + "github_register": { + "invalid_choice": "無効な選択。 「はい」または「いいえ」を入力してください", + "feature6": "すべての資格情報をファイルに保存します。", + "warning3": "Captchaまたは追加の検証は、自動化を中断する可能性があります。", + "starting_automation": "開始自動化...", + "feature1": "1セックスを使用して一時的な電子メールを生成します。", + "credentials_saved": "これらの資格情報は、github_cursor_accounts.txtに保存されています", + "warning1": "このスクリプトは、GitHub/Cursorのサービス条件に違反する可能性があるアカウント作成を自動化します。", + "completed_successfully": "GitHub +カーソル登録は正常に完了しました!", + "program_terminated": "ユーザーによって終了したプログラム", + "title": "Github + Cursor AI登録自動化", + "email_address": "電子メールアドレス", + "feature3": "GitHubメールを自動的に検証します。", + "feature2": "ランダムな資格情報を使用して、新しいGitHubアカウントを登録します。", + "features_header": "特徴", + "warning4": "責任を持って自分の責任で使用してください。", + "github_username": "githubユーザー名", + "feature5": "トライアル検出をバイパスするために、マシンIDをリセットします。", + "check_browser_windows_for_manual_intervention_or_try_again_later": "手動介入についてはブラウザのウィンドウを確認するか、後でもう一度やり直してください。", + "github_password": "githubパスワード", + "warning2": "インターネットアクセスと管理特権が必要です。", + "confirm": "先に進みたいですか?", + "registration_encountered_issues": "Github +カーソル登録に問題が発生しました。", + "cancelled": "操作はキャンセルされました", + "feature4": "GitHub認証を使用して、カーソルAIにログインします。", + "warnings_header": "警告" + }, + "account_delete": { + "confirm_button_not_found": "複数の試行後に見つかっていない確認ボタンを確認してください", + "typed_delete": "確認ボックスに「削除」と入力されました", + "error": "アカウントの削除中のエラー:{エラー}", + "delete_input_retry": "入力が見つかっていない削除、{pirte}/{max_attempts}", + "starting_process": "アカウントの削除プロセスを開始...", + "advanced_tab_error": "ERRORINSING ADVANCED TAB:{エラー}", + "delete_button_clicked": "[アカウントの削除]ボタンをクリックしました", + "auth_timeout": "認証タイムアウト、とにかく続行...", + "logging_in": "Googleでログインしています...", + "login_redirect_failed": "ログインリダイレクトが失敗し、直接ナビゲーションを試みます...", + "already_on_settings": "すでに設定ページにあります", + "delete_button_not_found": "複数の試行後にアカウントボタンを削除しません", + "delete_button_retry": "削除ボタンが見つかりません、{pirte}/{max_attempts}を削除します}", + "trying_settings": "[設定]ページに移動しようとしています...", + "delete_input_not_found_continuing": "とにかく続行しようとしている確認の入力を削除します", + "interrupted": "ユーザーが中断したアカウント削除プロセス。", + "email_not_found": "電子メールが見つかりません:{エラー}", + "delete_input_not_found": "複数の試行後に確認されていない確認入力を削除します", + "title": "カーソルGoogleアカウント削除ツール", + "waiting_for_auth": "Google認証を待っています...", + "google_button_not_found": "Googleログインボタンが見つかりません", + "navigating_to_settings": "[設定]ページへのナビゲート...", + "advanced_tab_clicked": "[詳細]タブをクリックしました", + "advanced_tab_not_found": "複数の試行後には高度なタブが見つかりません", + "cancelled": "アカウントの削除がキャンセルされました。", + "account_deleted": "アカウントが正常に削除されました!", + "warning": "警告:これにより、カーソルアカウントが永久に削除されます。このアクションを元に戻すことはできません。", + "delete_button_error": "エラー検索削除ボタン:{エラー}", + "delete_input_error": "ERRORの検索入力の削除:{エラー}", + "found_danger_zone": "Danger Zoneセクションが見つかりました", + "confirm_button_error": "エラー検索確認ボタン:{エラー}", + "unexpected_error": "予期しないエラー:{エラー}", + "unexpected_page": "ログイン後の予期しないページ:{url}", + "confirm_prompt": "先に進みたいですか? (y/n):", + "found_email": "メールを見つけた:{電子メール}", + "login_successful": "ログインが成功します", + "direct_advanced_navigation": "[Advanced Tab]に直接ナビゲーションを試します", + "advanced_tab_retry": "高度なタブが見つかりません、試み{pirter}/{max_attempts}", + "select_google_account": "Googleアカウントを選択してください...", + "confirm_button_retry": "確認ボタンが見つかりません、{pirte}/{max_attempts}を確認します", + "failed": "アカウントの削除プロセスが失敗するか、キャンセルされました。", + "success": "カーソルアカウントが正常に削除されました!" + }, + "browser_profile": { + "default_profile": "デフォルトのプロファイル", + "profile_selected": "選択したプロファイル:{プロフィール}", + "title": "ブラウザプロファイルの選択", + "invalid_selection": "無効な選択。もう一度やり直してください。", + "profile_list": "利用可能{ブラウザー}プロファイル:", + "error_loading": "エラーロード{ブラウザー}プロファイル:{エラー}", + "profile": "プロフィール{番号}", + "select_profile": "使用する{browser}プロファイルを選択します。", + "no_profiles": "{ブラウザー}プロファイルは見つかりません" + }, + "account_info": { + "active": "アクティブ", + "team": "チーム", + "premium": "プレミアム", + "inactive": "非アクティブ", + "failed_to_get_account": "アカウント情報を取得できませんでした", + "lifetime_access_enabled": "Lifetimeアクセスが有効になっています", + "subscription_not_found": "サブスクリプション情報が見つかりません", + "usage": "使用法", + "failed_to_get_account_info": "アカウント情報を取得できませんでした", + "failed_to_get_token": "トークンを取得できませんでした", + "basic_usage": "基本的な使用法", + "failed_to_get_usage": "使用情報を取得できませんでした", + "subscription_type": "サブスクリプションタイプ", + "subscription": "サブスクリプション", + "trial_remaining": "残りのプロトライアル", + "token_not_found": "トークンが見つかりません", + "free": "無料", + "pro": "プロ", + "token": "トークン", + "days_remaining": "残りの日", + "usage_not_found": "使用は見つかりません", + "failed_to_get_subscription": "サブスクリプション情報を取得できませんでした", + "email": "メール", + "enterprise": "企業", + "failed_to_get_email": "メールアドレスを取得できませんでした", + "pro_trial": "プロトライアル", + "days": "日", + "remaining_trial": "残りの試験", + "title": "アカウント情報", + "email_not_found": "電子メールが見つかりません", + "config_not_found": "構成が見つかりません。", + "premium_usage": "プレミアム使用" + }, + "reset": { + "version_check_passed": "カーソルバージョンチェックが合格しました", + "reading_package_json": "Package.jsonを読む{パス}", + "no_write_permission": "書き込み許可なし:{パス}", + "invalid_json_object": "無効なJSONオブジェクト", + "update_success": "成功を更新します", + "creating_backup": "構成バックアップの作成", + "updating_pair": "キー価値ペアの更新", + "system_ids_updated": "システムIDは正常に更新されました", + "version_field_empty": "バージョンフィールドは空です", + "sqlite_error": "sqliteデータベースの更新に失敗した:{エラー}", + "update_windows_machine_guid_failed": "Windows Machine Guidの更新失敗:{エラー}", + "update_windows_machine_id_failed": "WindowsマシンIDの更新失敗:{エラー}", + "windows_permission_denied": "Windowsの許可は拒否されました", + "start_patching": "GetMachineIDのパッチを開始します", + "run_as_admin": "このプログラムを管理者として実行してみてください", + "permission_denied": "許可拒否:{エラー}", + "system_ids_update_failed": "システムIDの更新が失敗しました:{エラー}", + "invalid_version_format": "無効なバージョン形式:{バージョン}", + "backup_exists": "バックアップファイルはすでに存在し、バックアップステップをスキップします", + "title": "カーソルマシンIDリセットツール", + "file_modified": "ファイルが変更されました", + "reading": "現在の構成を読み取ります", + "macos_uuid_update_failed": "MacOS UUIDアップデートは失敗しました", + "windows_guid_update_failed": "Windows GUIDの更新に失敗しました", + "update_failed": "更新が失敗しました:{エラー}", + "no_permission": "構成ファイルの読み取りまたは書き込みはできません。ファイル許可を確認してください", + "patch_completed": "GetMachineIDが完了しました", + "detecting_version": "カーソルバージョンの検出", + "generating": "新しいマシンIDの生成", + "version_greater_than_0_45": "カーソルバージョン> = 0.45.0、getMachineIDのパッチング", + "path_not_found": "パスが見つかりません:{パス}", + "process_error": "プロセスエラーのリセット:{エラー}", + "version_too_low": "カーソルバージョンが低すぎる:{バージョン} <0.45.0", + "patching_getmachineid": "getMachineidのパッチング", + "sqlite_success": "SQLiteデータベースは正常に更新されました", + "stack_trace": "スタックトレース", + "patch_failed": "getMachineIDが失敗したパッチング:{エラー}", + "permission_error": "許可エラー:{エラー}", + "updating_system_ids": "システムIDの更新", + "press_enter": "Enterを押して終了します", + "updating_sqlite": "SQLiteデータベースの更新", + "windows_machine_guid_updated": "Windows Machine GUIDは正常に更新されました", + "windows_machine_id_updated": "Windows Machine IDは正常に更新されました", + "backup_created": "作成されたバックアップ", + "current_version": "現在のカーソルバージョン:{バージョン}", + "unsupported_os": "サポートされていないOS:{os}", + "success": "マシンIDが正常にリセットされます", + "package_not_found": "package.jsonが見つかりません:{path}", + "plutil_command_failed": "Plutilコマンドが失敗しました", + "not_found": "構成ファイルが見つかりません", + "found_version": "見つかったバージョン:{バージョン}", + "linux_path_not_found": "Linuxパスが見つかりません", + "version_parse_error": "バージョン解析エラー:{エラー}", + "macos_uuid_updated": "MacOS UUIDは正常に更新されました", + "new_id": "新しいマシンID", + "checking": "構成ファイルの確認", + "no_version_field": "package.jsonにあるバージョンフィールドはありません", + "check_version_failed": "バージョンに失敗したチェック:{エラー}", + "file_not_found": "ファイルが見つかりません:{path}", + "modify_file_failed": "ファイルに失敗した変更:{エラー}", + "saving_json": "JSONに新しい構成を保存します", + "windows_guid_updated": "Windows GUIDは正常に更新されました", + "version_less_than_0_45": "カーソルバージョン<0.45.0、getMachineidのパッチをスキップします" + }, + "auth_check": { + "user_unauthorized": "ユーザーは不正です", + "jwt_token_warning": "トークンはJWT形式のように見えますが、APIチェックは予期しないステータスコードを返しました。トークンは有効かもしれませんが、APIアクセスは制限されています。", + "error_generating_checksum": "エラーチェックサムの生成:{エラー}", + "operation_cancelled": "操作はユーザーによってキャンセルされました", + "token_source": "データベースからトークンを取得するか、手動で入力しますか? (D/M、デフォルト:D)", + "user_authorized": "ユーザーは承認されています", + "checking_authorization": "認可を確認...", + "token_length": "トークンの長さ:{長さ}文字", + "connection_error": "接続エラー", + "token_found_in_db": "データベースにあるトークン", + "check_error": "エラーチェック承認:{エラー}", + "usage_response_status": "使用率応答ステータス:{応答}", + "check_usage_response": "使用状況の応答を確認する:{応答}", + "request_timeout": "リクエストがタイムアウトします", + "unexpected_error": "予期しないエラー:{エラー}", + "enter_token": "カーソルトークンを入力してください:", + "invalid_token": "無効なトークン", + "cursor_acc_info_not_found": "cursor_acc_info.pyが見つかりません", + "authorization_failed": "承認は失敗しました!", + "usage_response": "使用率:{応答}", + "getting_token_from_db": "データベースからトークンを取得します...", + "unexpected_status_code": "予期しないステータスコード:{code}", + "checking_usage_information": "使用情報の確認...", + "authorization_successful": "承認は成功しました!", + "error_getting_token_from_db": "データベースからトークンの取得エラー:{エラー}", + "token_not_found_in_db": "データベースにはありません" + }, + "update": { + "disable_failed": "自動更新の無効化失敗:{エラー}", + "block_file_locked_error": "ブロックファイルロックされたエラー:{エラー}", + "yml_locked_error": "update.ymlファイルロックされたエラー:{エラー}", + "press_enter": "Enterを押して終了します", + "block_file_locked": "ブロックファイルがロックされています", + "removing_directory": "ディレクトリの削除", + "update_yml_not_found": "update.ymlファイルが見つかりません", + "directory_locked": "ディレクトリがロックされています:{path}", + "yml_already_locked_error": "update.ymlファイル既にロックされたエラー:{エラー}", + "remove_directory_failed": "ディレクトリの削除に失敗しました:{エラー}", + "unsupported_os": "サポートされていないOS:{システム}", + "block_file_already_locked_error": "ブロックファイル既にロックされたエラー:{エラー}", + "yml_locked": "update.ymlファイルがロックされています", + "yml_already_locked": "update.ymlファイルはすでにロックされています", + "start_disable": "自動更新の無効化を開始します", + "block_file_created": "作成されたブロックファイル", + "create_block_file_failed": "ブロックファイルの作成に失敗しました:{エラー}", + "directory_removed": "ディレクトリが削除されました", + "clearing_update_yml": "update.ymlファイルのクリア", + "title": "Cursor Auto Updateを無効にします", + "processes_killed": "殺されたプロセス", + "creating_block_file": "ブロックファイルの作成", + "killing_processes": "殺害プロセス", + "disable_success": "自動更新は無効になっています", + "block_file_already_locked": "ブロックファイルはすでにロックされています", + "update_yml_cleared": "update.ymlファイルがクリアされました", + "clear_update_yml_failed": "update.ymlファイルをクリアできなかった:{エラー}" + }, + "token": { + "refresh_success": "トークンは正常にリフレッシュしました! {Days} Days(期限切れ:{期限切れ})に有効", + "extraction_error": "トークンの抽出エラー:{エラー}", + "server_error": "サーバーエラーの更新:http {status}", + "unexpected_error": "トークン更新中の予期しないエラー:{エラー}", + "connection_error": "サーバーを更新するための接続エラー", + "refreshing": "リフレッシュトークン...", + "no_access_token": "それに応じてアクセストークンはありません", + "invalid_response": "更新サーバーからの無効なJSON応答", + "refresh_failed": "トークンの更新失敗:{エラー}", + "request_timeout": "タイミングでサーバーを更新するリクエスト" + }, + "email": { + "try_export_display": "試してください:display =:0をエクスポートします", + "create_failed": "メールの作成に失敗しました", + "domains_list_error": "ドメインリストの取得に失敗しました:{エラー}", + "domains_excluded": "ドメインを除外する:{ドメイン}", + "blocked_domains_loaded_success": "ブロックされたドメインが正常にロードされました", + "no_available_domains_after_filtering": "フィルタリング後の利用可能なドメインはありません", + "make_sure_chrome_chromium_is_properly_installed": "Chrome/Chromiumが適切に取り付けられていることを確認してください", + "visiting_site": "メールドメインにアクセスします", + "create_success": "電子メールが正常に作成されました", + "trying_to_create_email": "電子メールを作成しようとしています:{電子メール}", + "starting_browser": "起動ブラウザ", + "refresh_error": "電子メールの更新エラー:{エラー}", + "refresh_button_not_found": "更新ボタンが見つかりません", + "blocked_domains_loaded_timeout_error": "ブロックされたドメインロードされたタイムアウトエラー:{エラー}", + "verification_error": "検証エラー:{エラー}", + "verification_found": "検証が見つかりました", + "refreshing": "更新されたメール", + "verification_code_found": "検証コードが見つかりました", + "extension_load_error": "拡張ロードエラー:{エラー}", + "domains_filtered": "フィルタリングされたドメイン:{count}", + "blocked_domains_loaded_timeout": "ブロックされたドメインがロードされたタイムアウト:{タイムアウト} s", + "address": "電子メールアドレス", + "all_domains_blocked": "すべてのドメインがブロックされ、スイッチングサービス", + "blocked_domains_loaded": "ロードされたブロックドメイン:{count}", + "account_creation_error": "アカウント作成エラー:{エラー}", + "create_error": "電子メールの作成エラー:{エラー}", + "verification_code_error": "検証コードエラー:{エラー}", + "switching_service": "{Service}サービスに切り替えます", + "failed_to_create_account": "アカウントの作成に失敗しました", + "blocked_domains_loaded_error": "ブロックされたドメインロードエラー:{エラー}", + "no_display_found": "ディスプレイは見つかりません。 Xサーバーが実行されていることを確認してください。", + "verification_code_not_found": "検証コードが見つかりません", + "refresh_success": "電子メールが正常に更新されました", + "using_chrome_profile": "クロムプロファイルの使用:{user_data_dir}", + "failed_to_get_available_domains": "利用可能なドメインを取得できませんでした", + "blocked_domains": "ブロックされたドメイン:{ドメイン}", + "verification_not_found": "検証が見つかりません", + "available_domains_loaded": "使用可能なドメインロード:{count}", + "try_install_chromium": "試してください:sudo apt install chrom-browser", + "domain_blocked": "ブロックされたドメイン:{ドメイン}" + }, + "control": { + "verification_not_found": "検証コードは見つかりません", + "found_verification_code": "検証コードが見つかりました", + "email_copy_error": "電子メールコピーエラー:{エラー}", + "generate_email_success": "電子メールの成功を生成します", + "copy_email": "メールアドレスのコピー", + "database_connection_closed": "データベース接続が閉じられました", + "navigate_to": "{url}に移動する", + "enter_mailbox_success": "メールボックスの成功を入力します", + "check_verification": "確認コードの確認", + "get_cursor_session_token_success": "カーソルセッショントークンの成功を取得します", + "navigation_error": "ナビゲーションエラー:{エラー}", + "database_updated_successfully": "データベースは正常に更新されました", + "token_saved_to_file": "cursor_tokens.txtに保存されたトークン", + "mailbox_error": "メールボックスエラー:{エラー}", + "no_valid_verification_code": "有効な検証コードはありません", + "save_token_failed": "保存トークンが失敗しました", + "get_cursor_session_token": "カーソルセッショントークンを取得します", + "enter_mailbox": "メールボックスを入力します", + "get_email_address_success": "メールアドレスの成功を取得します", + "get_email_name": "メール名を取得します", + "blocked_domain": "ブロックドメイン", + "get_email_address": "メールアドレスを取得します", + "refresh_mailbox": "更新されたメールボックス", + "get_cursor_session_token_failed": "カーソルセッショントークンを取得しました", + "browser_error": "ブラウザ制御エラー:{エラー}", + "select_domain": "ランダムドメインの選択", + "select_email_domain": "電子メールドメインを選択します", + "select_email_domain_success": "電子メールドメインの成功を選択します", + "verification_found": "検証コードが見つかりました", + "get_email_name_success": "電子メール名の成功を取得します", + "generate_email": "新しい電子メールの生成" + }, + "bypass": { + "current_version": "現在のバージョン:{バージョン}", + "title": "カーソルバージョンバイパスツール", + "no_write_permission": "ファイルの書き込み許可はありません:{path}", + "write_failed": "Product.jsonの書き込みに失敗しました:{エラー}", + "menu_option": "バイパスカーソルバージョンチェック", + "bypass_failed": "バージョンバイパスが失敗しました:{エラー}", + "starting": "カーソルバージョンバイパスを開始...", + "read_failed": "crods.jsonの読みに失敗しました:{エラー}", + "unsupported_os": "サポートされていないオペレーティングシステム:{システム}", + "description": "このツールは、cursorのcrods.jsonをバージョンの制限をバイパスするように変更します", + "product_json_not_found": "Product.jsonは、一般的なLinuxパスにはありません", + "version_updated": "{old}から{new}に更新されたバージョン", + "no_update_needed": "更新は必要ありません。現在のバージョン{バージョン}はすでに> = 0.46.0です", + "file_not_found": "ファイルが見つかりません:{path}", + "backup_created": "作成されたバックアップ:{パス}", + "found_product_json": "FOUND PRODUCT.JSON:{PATH}", + "stack_trace": "スタックトレース", + "localappdata_not_found": "LocalAppData環境変数が見つかりません" + }, + "quit_cursor": { + "start": "カーソルの終了を開始します", + "terminating": "終了プロセス{pid}", + "error": "エラーが発生しました:{エラー}", + "waiting": "プロセスが終了するのを待っています", + "no_process": "実行中のカーソルプロセスはありません", + "timeout": "プロセスタイムアウト:{pids}", + "success": "すべてのカーソルプロセスは閉じられました" + }, + "auth": { + "press_enter": "Enterを押して終了します", + "auth_file_create_failed": "AUTHファイルの作成失敗:{エラー}", + "database_updated_successfully": "データベースは正常に更新されました", + "db_connection_error": "データベースへの接続に失敗しました:{エラー}", + "updating_auth": "認証情報の更新", + "auth_update_failed": "認証情報の更新失敗:{エラー}", + "connected_to_database": "データベースに接続されています", + "title": "カーソル認証マネージャー", + "updating_pair": "キー価値ペアの更新", + "database_connection_closed": "データベース接続が閉じられました", + "reading_auth": "認証ファイルを読み取ります", + "db_not_found": "データベースファイルが見つかりません:{path}", + "auth_updated": "AUTH情報は正常に更新されました", + "auth_not_found": "認証ファイルが見つかりません", + "checking_auth": "認証ファイルの確認", + "auth_file_error": "AUTHファイルエラー:{エラー}", + "db_permission_error": "データベースファイルにアクセスできません。許可を確認してください", + "auth_file_created": "作成されたAUTHファイル", + "reset_machine_id": "マシンIDをリセットします" + }, + "bypass_token_limit": { + "title": "バイパストークン制限ツール", + "press_enter": "Enterを押して続行します...", + "description": "このツールは、workbench.desktop.main.jsファイルを変更して、トークン制限をバイパスします" } -} \ No newline at end of file +} \ No newline at end of file diff --git a/locales/zh_cn.json b/locales/zh_cn.json index 5851b4c..4221f5e 100644 --- a/locales/zh_cn.json +++ b/locales/zh_cn.json @@ -242,7 +242,8 @@ "updating_pair": "更新键值对", "db_not_found": "未找到数据库文件:{path}", "db_permission_error": "无法访问数据库文件,请检查权限", - "db_connection_error": "连接数据库失败:{error}" + "db_connection_error": "连接数据库失败:{error}", + "reset_machine_id": "重置机ID" }, "control": { "generate_email": "生成新邮箱", @@ -273,7 +274,9 @@ "get_cursor_session_token_success": "获取Cursor Session Token成功", "get_cursor_session_token_failed": "获取Cursor Session Token失败", "save_token_failed": "保存Token失败", - "no_valid_verification_code": "没有有效的验证码" + "no_valid_verification_code": "没有有效的验证码", + "database_updated_successfully": "数据库成功更新", + "database_connection_closed": "数据库连接关闭" }, "email": { "starting_browser": "启动浏览器", @@ -470,7 +473,24 @@ "cursor_reset_completed": "Cursor AI 编辑器已完全重置且绕过试用检测!", "cursor_reset_failed": "Cursor AI 编辑器重置失败:{error}", "cursor_reset_cancelled": "Cursor AI 编辑器重置已取消,未进行任何更改。", - "operation_cancelled": "操作已取消,未进行任何更改。" + "operation_cancelled": "操作已取消,未进行任何更改。", + "advanced_tab_error": "错误查找高级选项卡:{错误}", + "already_on_settings": "已经在设置页面上", + "advanced_tab_retry": "找不到高级选项卡,尝试{尝试}/{max_attempts}", + "navigating_to_settings": "导航到设置页面...", + "advanced_tab_not_found": "多次尝试后找不到高级标签", + "login_redirect_failed": "登录重定向失败,尝试直接导航...", + "delete_input_error": "错误查找删除输入:{error}", + "delete_button_clicked": "单击删除帐户按钮", + "direct_advanced_navigation": "尝试直接导航到高级选项卡", + "delete_input_retry": "删除未找到输入,尝试{尝试}/{max_attempts}", + "delete_input_not_found_continuing": "找不到删除确认输入,试图继续继续", + "delete_button_retry": "找不到删除按钮,尝试{尝试}/{max_attempts}", + "advanced_tab_clicked": "单击高级选项卡", + "found_danger_zone": "发现的危险区域部分", + "delete_input_not_found": "多次尝试后找不到删除确认输入", + "delete_button_not_found": "多次尝试后找不到帐户按钮", + "delete_button_error": "错误查找删除按钮:{错误}" }, "github_register": { "title": "GitHub + Cursor AI 注册自动化", diff --git a/locales/zh_tw.json b/locales/zh_tw.json index 967e124..ecd8fa4 100644 --- a/locales/zh_tw.json +++ b/locales/zh_tw.json @@ -199,6 +199,19 @@ "total_usage": "總使用量: {usage}", "setting_on_password": "設置密碼", "getting_code": "正在獲取驗證碼,將在60秒內嘗試...", + "using_browser": "使用{瀏覽器}瀏覽器:{path}", + "press_enter": "按Enter退出", + "try_install_browser": "嘗試使用您的軟件包管理器安裝瀏覽器", + "open_mailbox": "打開郵箱頁面", + "browser_path_invalid": "{瀏覽器}路徑無效,使用默認路徑", + "make_sure_browser_is_properly_installed": "確保正確安裝{瀏覽器}", + "using_browser_profile": "使用{browser} profile來自:{user_data_dir}", + "no_new_processes_detected": "未檢測到跟踪的新{瀏覽器}進程", + "browser_start": "啟動瀏覽器", + "max_retries_reached": "達到了最大的重試嘗試。註冊失敗。", + "could_not_track_processes": "無法跟踪{瀏覽器}進程:{error}", + "human_verify_error": "無法驗證用戶是人類。重試...", + "tracking_processes": "跟踪{count} {瀏覽器}進程" "using_tempmail_plus": "使用TempMailPlus進行郵箱驗證", "tempmail_plus_enabled": "TempMailPlus已啟用", "tempmail_plus_disabled": "TempMailPlus已禁用", @@ -229,7 +242,8 @@ "updating_pair": "更新鍵值對", "db_not_found": "未找到數據庫文件:{path}", "db_permission_error": "無法訪問數據庫文件,請檢查權限", - "db_connection_error": "連接數據庫失敗:{error}" + "db_connection_error": "連接數據庫失敗:{error}", + "reset_machine_id": "重置機ID" }, "control": { "generate_email": "生成新郵箱", @@ -260,7 +274,9 @@ "get_cursor_session_token_failed": "獲取Cursor Session Token失敗", "save_token_failed": "保存Token失敗", "blocked_domain": "被屏蔽的域名", - "no_valid_verification_code": "沒有有效的驗證碼" + "no_valid_verification_code": "沒有有效的驗證碼", + "database_updated_successfully": "數據庫成功更新", + "database_connection_closed": "數據庫連接關閉" }, "email": { "starting_browser": "啟動瀏覽器", @@ -457,7 +473,24 @@ "cursor_reset_completed": "Cursor AI 編輯器已完全重置且繞過試用偵測!", "cursor_reset_failed": "Cursor AI 編輯器重置失敗:{error}", "cursor_reset_cancelled": "Cursor AI 編輯器重置已取消,未進行任何更改。", - "operation_cancelled": "操作已取消,未進行任何更改。" + "operation_cancelled": "操作已取消,未進行任何更改。", + "delete_button_clicked": "單擊刪除帳戶按鈕", + "advanced_tab_clicked": "單擊高級選項卡", + "found_danger_zone": "發現的危險區域部分", + "advanced_tab_not_found": "多次嘗試後找不到高級標籤", + "delete_input_not_found": "多次嘗試後找不到刪除確認輸入", + "navigating_to_settings": "導航到設置頁面...", + "advanced_tab_error": "錯誤查找高級選項卡:{錯誤}", + "delete_input_retry": "刪除未找到輸入,嘗試{嘗試}/{max_attempts}", + "direct_advanced_navigation": "嘗試直接導航到高級選項卡", + "advanced_tab_retry": "找不到高級選項卡,嘗試{嘗試}/{max_attempts}", + "already_on_settings": "已經在設置頁面上", + "delete_input_error": "錯誤查找刪除輸入:{error}", + "delete_button_retry": "找不到刪除按鈕,嘗試{嘗試}/{max_attempts}", + "delete_button_not_found": "多次嘗試後找不到帳戶按鈕", + "delete_button_error": "錯誤查找刪除按鈕:{錯誤}", + "delete_input_not_found_continuing": "找不到刪除確認輸入,試圖繼續繼續", + "login_redirect_failed": "登錄重定向失敗,嘗試直接導航..." }, "github_register": { "title": "GitHub + Cursor AI 注册自动化", @@ -554,7 +587,10 @@ "backup_failed": "備份失敗: {error}", "force_update_failed": "強制更新配置失敗: {error}", "config_force_update_disabled": "配置文件強制更新已禁用,跳過強制更新", - "config_force_update_enabled": "配置文件強制更新已啟用,正在執行強制更新" + "config_force_update_enabled": "配置文件強制更新已啟用,正在執行強制更新", + "documents_path_not_found": "使用當前目錄找不到文檔路徑", + "config_dir_created": "配置目錄創建:{path}", + "using_temp_dir": "由於錯誤而使用臨時目錄:{path}(錯誤:{error})" }, "oauth": { "authentication_button_not_found": "未找到認證按鈕", @@ -623,7 +659,12 @@ "no_profiles": "未找到 {browser} 配置文件", "error_loading": "載入 {browser} 配置文件時出錯:{error}", "profile_selected": "已選擇配置文件:{profile}", - "invalid_selection": "選擇無效。請重試" + "invalid_selection": "選擇無效。請重試", + "starting_google_authentication": "開始Google身份驗證...", + "found_chrome_at": "在:{path}中找到鉻", + "browser_not_found_trying_chrome": "找不到{瀏覽器},而是嘗試chrome", + "error_getting_user_data_directory": "錯誤獲取用戶數據目錄:{error}", + "user_data_dir_not_found": "{瀏覽器}用戶數據目錄在{path}上找不到,而是嘗試Chrome" }, "chrome_profile": { "title": "Chrome配置檔案選擇", @@ -777,5 +818,28 @@ "success": "機器ID已成功恢復", "process_error": "恢復過程錯誤: {error}", "press_enter": "按Enter鍵繼續" + }, + "browser_profile": { + "invalid_selection": "無效的選擇。請重試。", + "profile_list": "可用{瀏覽器}配置文件:", + "profile_selected": "選定的個人資料:{配置文件}", + "error_loading": "錯誤加載{瀏覽器} profiles:{error}", + "default_profile": "默認配置文件", + "no_profiles": "找不到{瀏覽器}配置文件", + "select_profile": "選擇要使用的{瀏覽器}配置文件:", + "profile": "個人資料{數字}", + "title": "瀏覽器配置文件選擇" + }, + "token": { + "refresh_failed": "令牌刷新失敗:{error}", + "refreshing": "刷新的代幣...", + "connection_error": "連接錯誤刷新服務器", + "refresh_success": "令牌成功刷新了!有效{天}天(到期:{expire})", + "extraction_error": "錯誤提取令牌:{error}", + "request_timeout": "要求刷新服務器的要求", + "unexpected_error": "令牌刷新期間的意外錯誤:{error}", + "server_error": "刷新服務器錯誤:http {status}", + "no_access_token": "沒有訪問令牌", + "invalid_response": "刷新服務器的JSON響應無效" } } \ No newline at end of file