mirror of
https://github.com/yeongpin/cursor-free-vip.git
synced 2025-08-03 04:57:36 +08:00
Merge pull request #614 from wang93wei/main
refactor: 优化语言逻辑 + 升级 Linux arm64 Docker Python 版本至 3.10
This commit is contained in:
commit
5dad4f35a6
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@ -153,7 +153,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Build in ARM64 Docker container
|
- name: Build in ARM64 Docker container
|
||||||
run: |
|
run: |
|
||||||
docker run --rm --platform linux/arm64 -v ${{ github.workspace }}:/app -w /app arm64v8/python:3.9-slim bash -c "
|
docker run --rm --platform linux/arm64 -v ${{ github.workspace }}:/app -w /app arm64v8/python:3.10-slim bash -c "
|
||||||
apt-get update && apt-get install -y build-essential
|
apt-get update && apt-get install -y build-essential
|
||||||
pip install --upgrade pip
|
pip install --upgrade pip
|
||||||
pip install pyinstaller
|
pip install pyinstaller
|
||||||
|
118
main.py
118
main.py
@ -110,18 +110,24 @@ class Translator:
|
|||||||
threadid = user32.GetWindowThreadProcessId(hwnd, 0)
|
threadid = user32.GetWindowThreadProcessId(hwnd, 0)
|
||||||
layout_id = user32.GetKeyboardLayout(threadid) & 0xFFFF
|
layout_id = user32.GetKeyboardLayout(threadid) & 0xFFFF
|
||||||
|
|
||||||
# Map language ID to our language codes
|
# Map language ID to our language codes using match-case
|
||||||
language_map = {
|
match layout_id:
|
||||||
0x0409: 'en', # English
|
case 0x0409:
|
||||||
0x0404: 'zh_tw', # Traditional Chinese
|
return 'en' # English
|
||||||
0x0804: 'zh_cn', # Simplified Chinese
|
case 0x0404:
|
||||||
0x0422: 'vi', # Vietnamese
|
return 'zh_tw' # Traditional Chinese
|
||||||
0x0419: 'ru', # Russian
|
case 0x0804:
|
||||||
0x0415: 'tr', # Turkish
|
return 'zh_cn' # Simplified Chinese
|
||||||
0x0402: 'bg', # Bulgarian
|
case 0x0422:
|
||||||
}
|
return 'vi' # Vietnamese
|
||||||
|
case 0x0419:
|
||||||
return language_map.get(layout_id, 'en')
|
return 'ru' # Russian
|
||||||
|
case 0x0415:
|
||||||
|
return 'tr' # Turkish
|
||||||
|
case 0x0402:
|
||||||
|
return 'bg' # Bulgarian
|
||||||
|
case _:
|
||||||
|
return 'en' # Default to English
|
||||||
except:
|
except:
|
||||||
return self._detect_unix_language()
|
return self._detect_unix_language()
|
||||||
|
|
||||||
@ -136,52 +142,55 @@ class Translator:
|
|||||||
|
|
||||||
system_locale = system_locale.lower()
|
system_locale = system_locale.lower()
|
||||||
|
|
||||||
# Map locale to our language codes
|
# Map locale to our language codes using match-case
|
||||||
if system_locale.startswith('zh_tw') or system_locale.startswith('zh_hk'):
|
match system_locale:
|
||||||
|
case s if s.startswith('zh_tw') or s.startswith('zh_hk'):
|
||||||
return 'zh_tw'
|
return 'zh_tw'
|
||||||
elif system_locale.startswith('zh_cn'):
|
case s if s.startswith('zh_cn'):
|
||||||
return 'zh_cn'
|
return 'zh_cn'
|
||||||
elif system_locale.startswith('en'):
|
case s if s.startswith('en'):
|
||||||
return 'en'
|
return 'en'
|
||||||
elif system_locale.startswith('vi'):
|
case s if s.startswith('vi'):
|
||||||
return 'vi'
|
return 'vi'
|
||||||
elif system_locale.startswith('nl'):
|
case s if s.startswith('nl'):
|
||||||
return 'nl'
|
return 'nl'
|
||||||
elif system_locale.startswith('de'):
|
case s if s.startswith('de'):
|
||||||
return 'de'
|
return 'de'
|
||||||
elif system_locale.startswith('fr'):
|
case s if s.startswith('fr'):
|
||||||
return 'fr'
|
return 'fr'
|
||||||
elif system_locale.startswith('pt'):
|
case s if s.startswith('pt'):
|
||||||
return 'pt'
|
return 'pt'
|
||||||
elif system_locale.startswith('ru'):
|
case s if s.startswith('ru'):
|
||||||
return 'ru'
|
return 'ru'
|
||||||
elif system_locale.startswith('tr'):
|
case s if s.startswith('tr'):
|
||||||
return 'tr'
|
return 'tr'
|
||||||
elif system_locale.startswith('bg'):
|
case s if s.startswith('bg'):
|
||||||
return 'bg'
|
return 'bg'
|
||||||
|
case _:
|
||||||
# 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:
|
match env_lang:
|
||||||
|
case s if 'tw' in s or 'hk' in s:
|
||||||
return 'zh_tw'
|
return 'zh_tw'
|
||||||
elif 'cn' in env_lang:
|
case s if 'cn' in s:
|
||||||
return 'zh_cn'
|
return 'zh_cn'
|
||||||
elif 'vi' in env_lang:
|
case s if 'vi' in s:
|
||||||
return 'vi'
|
return 'vi'
|
||||||
elif 'nl' in env_lang:
|
case s if 'nl' in s:
|
||||||
return 'nl'
|
return 'nl'
|
||||||
elif 'de' in env_lang:
|
case s if 'de' in s:
|
||||||
return 'de'
|
return 'de'
|
||||||
elif 'fr' in env_lang:
|
case s if 'fr' in s:
|
||||||
return 'fr'
|
return 'fr'
|
||||||
elif 'pt' in env_lang:
|
case s if 'pt' in s:
|
||||||
return 'pt'
|
return 'pt'
|
||||||
elif 'ru' in env_lang:
|
case s if 'ru' in s:
|
||||||
return 'ru'
|
return 'ru'
|
||||||
elif 'tr' in env_lang:
|
case s if 'tr' in s:
|
||||||
return 'tr'
|
return 'tr'
|
||||||
elif 'bg' in env_lang:
|
case s if 'bg' in s:
|
||||||
return 'bg'
|
return 'bg'
|
||||||
|
case _:
|
||||||
return 'en'
|
return 'en'
|
||||||
except:
|
except:
|
||||||
return 'en'
|
return 'en'
|
||||||
@ -566,82 +575,83 @@ def main():
|
|||||||
choice_num = 17
|
choice_num = 17
|
||||||
choice = input(f"\n{EMOJI['ARROW']} {Fore.CYAN}{translator.get('menu.input_choice', choices=f'0-{choice_num}')}: {Style.RESET_ALL}")
|
choice = input(f"\n{EMOJI['ARROW']} {Fore.CYAN}{translator.get('menu.input_choice', choices=f'0-{choice_num}')}: {Style.RESET_ALL}")
|
||||||
|
|
||||||
if choice == "0":
|
match choice:
|
||||||
|
case "0":
|
||||||
print(f"\n{Fore.YELLOW}{EMOJI['INFO']} {translator.get('menu.exit')}...{Style.RESET_ALL}")
|
print(f"\n{Fore.YELLOW}{EMOJI['INFO']} {translator.get('menu.exit')}...{Style.RESET_ALL}")
|
||||||
print(f"{Fore.CYAN}{'═' * 50}{Style.RESET_ALL}")
|
print(f"{Fore.CYAN}{'═' * 50}{Style.RESET_ALL}")
|
||||||
return
|
return
|
||||||
elif choice == "1":
|
case "1":
|
||||||
import reset_machine_manual
|
import reset_machine_manual
|
||||||
reset_machine_manual.run(translator)
|
reset_machine_manual.run(translator)
|
||||||
print_menu()
|
print_menu()
|
||||||
elif choice == "2":
|
case "2":
|
||||||
import cursor_register
|
import cursor_register
|
||||||
cursor_register.main(translator)
|
cursor_register.main(translator)
|
||||||
print_menu()
|
print_menu()
|
||||||
elif choice == "3":
|
case "3":
|
||||||
import cursor_register_google
|
import cursor_register_google
|
||||||
cursor_register_google.main(translator)
|
cursor_register_google.main(translator)
|
||||||
print_menu()
|
print_menu()
|
||||||
elif choice == "4":
|
case "4":
|
||||||
import cursor_register_github
|
import cursor_register_github
|
||||||
cursor_register_github.main(translator)
|
cursor_register_github.main(translator)
|
||||||
print_menu()
|
print_menu()
|
||||||
elif choice == "5":
|
case "5":
|
||||||
import cursor_register_manual
|
import cursor_register_manual
|
||||||
cursor_register_manual.main(translator)
|
cursor_register_manual.main(translator)
|
||||||
print_menu()
|
print_menu()
|
||||||
elif choice == "6":
|
case "6":
|
||||||
import github_cursor_register
|
import github_cursor_register
|
||||||
print(f"{Fore.YELLOW}{EMOJI['INFO']} {translator.get('menu.coming_soon')}{Style.RESET_ALL}")
|
print(f"{Fore.YELLOW}{EMOJI['INFO']} {translator.get('menu.coming_soon')}{Style.RESET_ALL}")
|
||||||
# github_cursor_register.main(translator)
|
# github_cursor_register.main(translator)
|
||||||
print_menu()
|
print_menu()
|
||||||
elif choice == "7":
|
case "7":
|
||||||
import quit_cursor
|
import quit_cursor
|
||||||
quit_cursor.quit_cursor(translator)
|
quit_cursor.quit_cursor(translator)
|
||||||
print_menu()
|
print_menu()
|
||||||
elif choice == "8":
|
case "8":
|
||||||
if select_language():
|
if select_language():
|
||||||
print_menu()
|
print_menu()
|
||||||
continue
|
continue
|
||||||
elif choice == "9":
|
case "9":
|
||||||
import disable_auto_update
|
import disable_auto_update
|
||||||
disable_auto_update.run(translator)
|
disable_auto_update.run(translator)
|
||||||
print_menu()
|
print_menu()
|
||||||
elif choice == "10":
|
case "10":
|
||||||
import totally_reset_cursor
|
import totally_reset_cursor
|
||||||
totally_reset_cursor.run(translator)
|
totally_reset_cursor.run(translator)
|
||||||
# print(f"{Fore.YELLOW}{EMOJI['INFO']} {translator.get('menu.fixed_soon')}{Style.RESET_ALL}")
|
# print(f"{Fore.YELLOW}{EMOJI['INFO']} {translator.get('menu.fixed_soon')}{Style.RESET_ALL}")
|
||||||
print_menu()
|
print_menu()
|
||||||
elif choice == "11":
|
case "11":
|
||||||
import logo
|
import logo
|
||||||
print(logo.CURSOR_CONTRIBUTORS)
|
print(logo.CURSOR_CONTRIBUTORS)
|
||||||
print_menu()
|
print_menu()
|
||||||
elif choice == "12":
|
case "12":
|
||||||
from config import print_config
|
from config import print_config
|
||||||
print_config(get_config(), translator)
|
print_config(get_config(), translator)
|
||||||
print_menu()
|
print_menu()
|
||||||
elif choice == "13":
|
case "13":
|
||||||
from oauth_auth import OAuthHandler
|
from oauth_auth import OAuthHandler
|
||||||
oauth = OAuthHandler(translator)
|
oauth = OAuthHandler(translator)
|
||||||
oauth._select_profile()
|
oauth._select_profile()
|
||||||
print_menu()
|
print_menu()
|
||||||
elif choice == "14":
|
case "14":
|
||||||
import delete_cursor_google
|
import delete_cursor_google
|
||||||
delete_cursor_google.main(translator)
|
delete_cursor_google.main(translator)
|
||||||
print_menu()
|
print_menu()
|
||||||
elif choice == "15":
|
case "15":
|
||||||
import bypass_version
|
import bypass_version
|
||||||
bypass_version.main(translator)
|
bypass_version.main(translator)
|
||||||
print_menu()
|
print_menu()
|
||||||
elif choice == "16":
|
case "16":
|
||||||
import check_user_authorized
|
import check_user_authorized
|
||||||
check_user_authorized.main(translator)
|
check_user_authorized.main(translator)
|
||||||
print_menu()
|
print_menu()
|
||||||
elif choice == "17":
|
case "17":
|
||||||
import bypass_token_limit
|
import bypass_token_limit
|
||||||
bypass_token_limit.run(translator)
|
bypass_token_limit.run(translator)
|
||||||
print_menu()
|
print_menu()
|
||||||
else:
|
case _:
|
||||||
print(f"{Fore.RED}{EMOJI['ERROR']} {translator.get('menu.invalid_choice')}{Style.RESET_ALL}")
|
print(f"{Fore.RED}{EMOJI['ERROR']} {translator.get('menu.invalid_choice')}{Style.RESET_ALL}")
|
||||||
print_menu()
|
print_menu()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user