Merge pull request #614 from wang93wei/main

refactor: 优化语言逻辑 + 升级 Linux arm64 Docker Python 版本至 3.10
This commit is contained in:
Pin Studios 2025-04-14 16:20:32 +08:00 committed by GitHub
commit 5dad4f35a6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 148 additions and 138 deletions

View File

@ -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
View File

@ -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()