| """系统相关工具函数""" |
|
|
| import locale |
| import os |
| import platform |
| from typing import Literal |
|
|
| __all__ = ('get_system_language', 'get_system_info', 'is_apple_silicon') |
|
|
|
|
| def get_system_language() -> Literal['zh', 'en']: |
| """ |
| 获取系统当前语言设置 |
| |
| Returns: |
| str: 返回 'zh' 或 'en',默认为 'zh' |
| """ |
| try: |
| |
| lang = os.environ.get('LANG', '') |
| if not lang: |
| lang = os.environ.get('LANGUAGE', '') |
| if not lang: |
| lang = os.environ.get('LC_ALL', '') |
| if not lang: |
| lang = os.environ.get('LC_MESSAGES', '') |
|
|
| |
| if not lang: |
| try: |
| lang, _ = locale.getdefaultlocale() |
| if not lang: |
| lang = locale.getlocale()[0] |
| except (ValueError, AttributeError): |
| lang = None |
|
|
| |
| if lang: |
| lang = lang.lower() |
| if 'zh' in lang or 'chinese' in lang: |
| return 'zh' |
| elif 'en' in lang or 'english' in lang: |
| return 'en' |
|
|
| except Exception: |
| pass |
| |
|
|
| |
| return 'zh' |
|
|
|
|
| def is_apple_silicon() -> bool: |
| """ |
| 检查当前系统是否为Apple Silicon |
| |
| Returns: |
| bool: 如果是Apple Silicon返回True,否则返回False |
| """ |
| return (platform.system() == 'Darwin' and |
| platform.machine() in ('arm64', 'arm64e')) |
|
|
|
|
| def get_system_info() -> dict: |
| """ |
| 获取系统信息 |
| |
| Returns: |
| dict: 包含系统信息的字典 |
| """ |
| info = { |
| 'platform': platform.system(), |
| 'platform_version': platform.version(), |
| 'architecture': platform.architecture()[0], |
| 'machine': platform.machine(), |
| 'processor': platform.processor(), |
| 'language': get_system_language(), |
| 'python_version': platform.python_version(), |
| 'is_apple_silicon': is_apple_silicon(), |
| } |
|
|
| return info |
|
|