|
|
"""系统相关工具函数""" |
|
|
|
|
|
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 |
|
|
|